Haskell 哈斯克尔的优点和缺点是什么?
我学过几种语言,但现在我想选一种。我最喜欢的语言是Haskell,它类似于解释语言,但却是编译语言Haskell 哈斯克尔的优点和缺点是什么?,haskell,Haskell,我学过几种语言,但现在我想选一种。我最喜欢的语言是Haskell,它类似于解释语言,但却是编译语言 哈斯克尔的优点和缺点是什么?目前我脑子里只有几个想法 专业人士 学习Haskell将改变您对编程的思考方式。(人们经常发现,一旦学会Haskell,就会用其他语言编写类似Haskell的代码。) 类型安全性比主流语言高得多(有空指针异常吗?) 类型推断意味着您不必担心类型,除非绝对必要 它产生高性能的可执行文件 对于par和pseq组合器,并行性几乎微不足道 交互式环境(hugs/ghci)允许
哈斯克尔的优点和缺点是什么?目前我脑子里只有几个想法 专业人士
- 学习Haskell将改变您对编程的思考方式。(人们经常发现,一旦学会Haskell,就会用其他语言编写类似Haskell的代码。)
- 类型安全性比主流语言高得多(有空指针异常吗?)
- 类型推断意味着您不必担心类型,除非绝对必要
- 它产生高性能的可执行文件
- 对于
和par
组合器,并行性几乎微不足道pseq
- 交互式环境(hugs/ghci)允许您快速创建想法原型
- 有一个很好的支持社区(IRC、邮件列表等)
- 非常有表现力和简洁的语法
- GHC正在积极开发和改进,包括支持GPU上的代码执行,以实现额外的高性能计算
- >单元测试
- 学习哈斯克尔会毁掉你所有其他的语言
- 这是一件很复杂的事情
- 非常容易编写无人理解的神秘程序,几天后你自己也不理解
但是,如果您没有受到这些问题的影响,那么Haskell可能是一种很好的语言。在某些项目中使用Haskell有缺点,但学习Haskell没有缺点。这需要时间,但值得。你会成为一名更好的程序员 但是现在我想选一个 然后我想知道这种功能强大的语言的优缺点(只是为了做出正确的选择) 如果你允许我概括一下,语言的选择实际上取决于你试图解决的问题。没有一个选择能对一切都有效,而且 总会有一些语言比你现在使用的语言看起来更好 但是,要不断学习新的语言,因为这些经验将提高你的能力,让你知道什么时候一种语言不适合一个项目。优点:
1) Haskell是最先进的编程语言。 我做了一些研究,haskell似乎是唯一真正最先进的编程语言。还有其他的像agda和coq,但这些都是实验性的,缺乏用于实际编程的功能(例如库支持)。最好投资于最先进的编程语言 (注意:我不争论为什么haskell是最先进的编程语言,而几乎任何其他编程语言都不是。这会花费太多时间。因此这只是我的主观观点。其他语句也是如此。) (注意:我后面提到的一些特性可能是GHC特有的,但我仍然只写haskell)
2) Haskell程序员通常非常聪明。这些库的代码质量非常高。此外,关于stackoverflow的技巧写得非常好,而且水平也很高(感谢像Don Stewart这样的人,仅举一个例子)。我认为改进编程的最好方法之一是学习其他人的代码。哈斯克尔在这方面做得很好 3) 大多数OOP语言中的命令式编程已经过时。通常的编程方式也会产生副作用。但是很少有没有副作用的声明式编程语言。例如Scala、F#、Ocaml和Erlang并不是没有副作用的。(然而,在OOP语言的学术领域也有工作,这显然不是过时的。想想Alan Kay过去的工作,或者说Simultalk领域的当前学术工作。) 4) Haskell支持使用抽象数学概念(如单子、函子、组合子、GADT等)编程。我认为这可以提高编程效率 5) Haskell类型系统非常灵活,支持类型推断。这大大减少了可能出现的错误。在编译时检查类型系统。类型系统作为文档提供帮助 6) 一些最先进的概念首先在haskell中实现(如QuickCheck库)。有很多有趣的扩展 7) haskell语法设计得非常好。没有不必要的括号。代码很紧凑,用于模式匹配和列表理解的synatax非常好。像Knuth这样的人提倡有文化的编程,haskell/GHC支持它 8) haskell支持惰性评估 缺点:
1) 这很难学,掌握哈斯克尔需要几个小时、几个月的时间。没有适当的计算机科学背景就更难了。单子和函子之类的东西很难理解,尤其是没有数学背景的情况下。因此,大多数程序员可能没有学习haskell的能力或意愿。哈斯克尔并不“简单”。然而,不可能有一种支持所有高级功能的简单语言 2) IDE选项不如其他编程语言的选项好。我使用leksah作为我的IDE,它非常好,但它不能与Eclipse for java Develop相比