LISP 或 Haskell,我需要学习函数式编程,但我听说 lisp 很老了,这两种语言之间有什么建议吗?
5 回答
只是为了呼应其他人,我会同时学习 Scheme(一种更实用的 Lisp 方言)和 Haskell。Scheme / Lisp 有一些有用的技巧可以教你“代码就是数据/数据就是代码”和宏。Scheme 鼓励良好的函数式风格,我建议您阅读“The Little Schemer”系列书籍来帮助您入门。SICP 也是一本很棒的文本http://mitpress.mit.edu/sicp/full-text/book/book.html并且可能是有史以来最好的编程书籍之一。Scheme 作为第一种功能语言更易于使用。
一旦你掌握了 Scheme 的窍门,你可能会发现自己对缺乏库、缺乏并行性和小而优秀的社区感到沮丧。这就是我决定学习 Haskell 的地方。Haskell 非常成熟,非常有用且非常实用,一旦您脱离基础知识,学习起来将是一个相当大的挑战,因此拥有另一种功能语言的基础将有很大帮助。你不会后悔学习任何一个(或两者)。
为什么不兼得?LISP 非常容易学习(我会选择 Scheme 方言 - 请参阅http://racket-lang.org),所以我将从它开始。如果您喜欢它,请坚持使用它,但我也会尝试一下 Haskell,尽管(根据我的经验)要绕开你的脑袋要困难得多。
这些天计算的伟大之处在于,除了您的时间之外,您可以免费尝试所有这些语言。当我开始编程时,LISP 只能在大型机上使用,这让尝试学习它有点困难。
Haskell,因为一旦你学会了 Haskell,你就会爱上它。然后,您将能够学习 Common LISP。但是,如果你的编辑器是 Emacs,那么就从 Lisp 开始吧。
如果你想通过实现语言的编译器或解释器来学习函数式编程,那么 Lisp 或 ML 应该是更好的首选,因为它们比惰性语言更容易实现。否则你最好两个都学。
根据年龄进行选择是愚蠢的,Haskell 的历史比 C# 的历史要长得多,而且它的历史可以追溯到更远的地方。无论如何,我建议最终同时学习两者,对于学习函数式编程,Haskell 专门针对纯函数式编程(在多种意义上)。Scheme 是 lisp 的面向功能的后代。