对于C开发人员来说,学习LISP的最快和最痛苦的方法是什么?

时间:2010-08-20 06:40:42

标签: c functional-programming lisp

我一直在Linux平台上担任C开发人员。最近完成的K& R并做了一点关于在C中实现OOP的研究。除此之外我还研究过C ++和Java。所有这些都在Linux平台上。

现在我打算学习LISP。我已经经历了针对初学者的LISP讨论,特别是What’s the best way to learn LISP

我理解,从程序化到功能性编程范式的转变是一个重大举措。从新范式的角度思考将是真正的挑战。就像我第一次学习OOP时那样。

这是我真正担心的范例。当我开始OOP时,大部分时间用于学习如何根据OOP查看问题。语法并不那么难掌握。

现在,由于我一直在C工作,我目前在我工作场所的项目也在C中。我担心如何才能学会在功能编程方面查看问题。

  1. 为C开发人员转向LISP的最佳方法是什么?
  2. 在我搬到LISP之前,我应该学习一些其他的中间语言吗?
  3. 如果是,那么可能是哪种语言?
  4. 任何可以帮助我思考函数式编程的特定文本?
  5. 任何可以使这种转变更快更轻松的建议吗?
  6. 感谢您的时间。任何帮助和建议将不胜感激。

8 个答案:

答案 0 :(得分:10)

试试书籍:

Peter Siebel的实用Common Lisp(可在http://www.gigamonkeys.com/book/在线获得)。

保罗格雷厄姆的ANSI Common Lisp然后由同一作者尝试On Lisp。

人工智能编程范式:Peter Norvig的Common Lisp案例研究

其他寻求帮助的地方包括FreeNode和LispForum(http://www.lispforum.com/)上的#lisp频道。

这些PCL可能是最容易进入的,如果你试图学习Lisp作为学习函数式编程的一种方式你会感到失望,你可以使用Lisp来做FP但它不是严格来说是一种FP语言。

答案 1 :(得分:6)

Possible duplicate

你可能比MIT Course 6.001 "Structure and Interpretation of Computer Programs"做得更糟。该课程使用Abelson & Sussman's text;另请参阅the book's main site以获取更多信息。

该课程使用Scheme,一种LISP方言,它比Common LISP更清晰,更容易使用(是的,这是一个意见,处理它)。切换到通用LISP后来不会那么困难。 Paul Graham的On LISP是关于Common LISP编程的“不带囚犯”的文本。他的ANSI Common LISP是对这个主题的更温和的介绍。

现在是坏消息。在LISP中转向WORKING可能非常困难,因为那里有更多的C / C ++和Java工作。

我建议您直接学习LISP。这并不困难。

你需要一个LISP系统来玩。如果您使用Scheme,则很难超越MIT/GNU Scheme system。对于Common LISP,有几种选择:我可能从GCL - GNU Common LISP开始。适用于Linux和Windows的版本。

答案 2 :(得分:4)

我最初学习lisp的书是DP弗里德曼的The Little Schemer。真的让你的头脑成为一种功能性编程思维。

答案 3 :(得分:2)

阅读“Practical Common Lisp”。在我的公司,我们每天至少有70名程序员使用Common Lisp进行复杂,实用的程序(航空公司票价搜索,航空公司预订系统),当新程序员出现不熟悉Lisp时,我们只需交给他或她一个“Practical Common Lisp”的副本。我不能说这本书有多棒。

答案 4 :(得分:1)

我发现python基础(lambda函数等)对于掌握lisp非常有帮助。

有一段时间我决定学习使用lisp方言的emacs脚本,这非常有帮助,因为那时你知道你想做什么,而不是通过练习。

我认为你需要一个带有lisp支持和shell的优秀文本编辑器。然后只是尝试制作目标项目并实施它。

答案 5 :(得分:1)

我个人认为GNU Emacs Lisp Tutorial很高兴阅读。它会给你一般的想法。

答案 6 :(得分:1)

我建议首先阅读成功Lisp直至第3章,不要继续阅读第4章.3然而,掌握Lisp的思路。然后阅读Gentle,然后阅读Practical Common Lisp。从那里开始,一般的Common Lisp实验将从那里帮助你。

答案 7 :(得分:1)

我最近买了Land of Lisp,发现它非常有趣和有教育意义。我可以推荐它。