haskell菜鸟教程,haskell难吗

  haskell菜鸟教程,haskell难吗

  我为什么要研究Haskell?-杰瑞何-博客公园

  我为什么要研究Haskell?即使我的专业不是计算机,我也从来没有考虑过以后写代码养家糊口。但是,编程一直是我的执念。从第一次看到电脑到很多年后,终于可以自如的学习了。我渴望掌握它,驾驭它,渴望自己的思维跳上去。我的第一语言是C和C++。C是学校的必修课,但c++是我想掌握的。怎么写程序?对于每个第一次学编程的人来说,这个问题多少能让他们困惑一下。是否要将源代码的扩展名改为exe?初学编程的人,往往一开始都很辛苦,这种辛苦的感觉多年后依然会历历在目。我永远忘不了刚学c时写八皇后程序的艰难,现在看着当时那些冗长、繁琐、丑陋的代码,我会嘲笑当时的“坚持”。事实上,我认为编程是一件罕见的事情,当你没有跨过那道坎时,一旦你跨过了那道坎,你就会成为马平川。仅仅一个学期的课程往往不足以让普通学生跨过这道坎,所以大部分学生即使上了这门课也还是不知道该说什么。在清华流行的笑话里,一个女同学甩了前男友,找了另一个男生,因为这个男生帮她完成了C的大作业。哈哈,其实你看,会编程多有用啊。然后学了Java,C#,Fortran,Python。学习Java和Fortran完全是课程要求,从头到尾我都没有真正应用过。学习C#是在看到关于C#的宣传和书籍(。NET策略)是势不可挡的,而且碰巧我参与了一个需要使用。NET进行开发,于是我很自然的放弃了当时正准备认真学习的MFC,进入了C#的阵营。学习C#和使用C#已经快两年了,我觉得总共写了上万行代码。那时候C#是我最擅长的语言。在我心里,它是如此的强大和完美。后来开始接触一个新的3D渲染程序项目,C OpenGL MFC。一开始我雄心勃勃的想这个程序用C#能写多快~后来我终于知道自己的狭隘了。毫无疑问,C#在开发速度上远远优于C。但是一旦显著关注程序的性能,C的优势就出来了。于是,我又开始回去学C了。就这样,我和C#分手了。从那以后,我几乎没有再用过它,它的版本号也在不断升级,从2.0升级到4.0。现在想来,像C#这样的语言是可以了解它,掌握它,用它做项目的。然后如果说掌握它是我的核心竞争力,我总觉得有点紧张。当你知道一门语言是一个公司创造和维护的,局限于一个平台,为公司的发展服务的时候,你不知道这门语言的明天会是什么样子。c是我后来用的最重要的语言。一开始是项目需要,后来,变成了我的最爱。我喜欢。我觉得就像武林中的无上内功。虽然学起来很难,但是越深入,你的功力就会越深厚。因为它最大程度的开放底层细节,给程序员最大的可控性,语言本身的语法有很多细节,语法背后有很多东西,所以学习曲线很长。之前有人让我推荐一本学习C的书,我一般只说一本《C++ Primer》。如果这本书我能看懂90%以上,我觉得一般应用就够了。如果再深入一点,那么这个列表就是:《STL源码剖析》,《Effective C++》,《More Effective C++》,《Essential C++》,《Inside the C++ Object Model》,《Thinking in C++》,Boost,《Imperfect C++》,0755。想做界面,就得学Qt或者MFC。然后,其他方面还要跟上,《The Design and Evolution of C++》,正则表达式,XML,设计模式,《深入理解计算机系统》,UML,并行计算……真的太长了。我忘了我是什么时候看到埃里克的《如何成为一名黑客》的。当时我就开始想听从他的建议,学一门传统语言(静态、强类型、高效)、纯面向对象语言、脚本语言、函数语言(注:其实这不是他的原话,我稍微改动了一下:)。

  我想那是我开始好好学习Python的时候,有时间我想学一门函数式语言。Python也是我非常喜欢的一门语言。它简单、实用、强大且受欢迎(意思是当你有问题时,你总能在谷歌上找到答案)。写Python代码问题是一件乐事。即使理解了它的基本语法,我还是边解题边学Python。也许这就是为什么Eric推荐Python作为初学程序员的第一语言。但是我觉得如果你只学过Python,没有学过C或者C,你可能很难真正理解GC的那些东西。《算法导论》还有一本关于Python的高效词典,对理解Python也很有帮助。2011年5月,买了两本书,一本是《真实世界Haskell》,一本是《编程Erlang》(说是真的很爱奥雷利的书)。至于我为什么要学这两种语言,我也忘了。反正这是我研究的结果。买了这本书之后,因为其他更重要的事情,把它留了下来。直到12年结束,这一次我终于下定决心要学好Haskell。解释原因,最重要的是满足我学习函数式语言的愿望,完善我的编程框架。其实找不到事情做的时候才是最难的。无数次,我纠结于那些我无法理解的新概念和困难。我想,我已经花了这么多时间来学习这个可以用来做什么。好吧,我告诉自己,乔布斯2005年在斯坦福的演讲,跟着你的心去做你喜欢的事情,重要的是你要相信,所有这些东西有一天都可以串起来。我跟着书往下看的时候,学monad的时候卡住了。其实网上各种关于学Monad有多难的说法第一次吓到我了。这时,我开始用在线教程Learn You A Haskell重新开始我的学习。如果这种情况继续下去,似乎有一天,突然一切都会开放。当我用心去看的时候,我能知道它在说什么。正如在教程的介绍部分提到的,“在最终掌握Haskell之前,我失败了大约两次,因为它对我来说太怪异了,我没有理解它。但在ce上,它只是“点击”了一下,在克服了最初的障碍后,它变得非常平稳。我想我想说的是:Haskell很棒,如果你对编程感兴趣,你真的应该学习它,即使一开始看起来很奇怪。学习Haskell很像第一次学习编程——很有趣!它迫使你以不同的方式思考,这就把我们带到了下一节。哈斯克尔给我带了什么?我想说三件事。首先,它给了我一种前所未有的思考方式。对map、filter、fold fold等高阶函数的使用和熟悉,让我明白了这些函数对应的是对数据处理相同模式的广泛归纳,即使这种思想用其他语言编程,也能让我写出更简洁紧凑的代码。在学习Haskell之前,我一直不理解Python对函数式编程的支持。其次,它的惰性让我们可以写出其他语言很难做到的东西。比如求第I个质数。在Haskell中,我是这样写的,primat I=(filter is prime[2.])!(i-1)(注:这是一种相对低效的求素数序列的方法),其中isPrime是判断一个整数是否为素数的函数。由于Haskell的惰性,我们能够编写像[2]这样的无限数组.].第三,哈斯克尔对数学的支持。我用Haskell在欧拉上投射欧拉话题的时候,感觉很流畅,真的很棒。Haskell是由一群数学家创造出来的,毫无疑问,它非常照顾数学家。前阵子还有别的事情,学Haskell又停了,不过我想最后还是会学好Haskell的。阿门。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: