前言
Lisp 简介
Lisp 是一种基于λ演算的函数式编程语言,现代编程语言的一些特性,如尾递归、匿名函数、动态改变代码的功能等等,不少是受到了Lisp的启发。
Lisp 拥有理论上最高的运算能力,也许 John K. Foderaro 的比喻和总结最能说明 Lisp 的价值:Lisp好比变色龙,高度适应环境的改变,因为它是一门“可以编程的编程语言”,也就是说,我们不仅可以用 Lisp 编程,还可以对 Lisp 编程。
这种可扩展性也是 Lisp 经久不衰而且方言繁多的主要原因之一,语言的主要现代版本包括 Common Lisp 和 Scheme ,如果你使用的编辑器是 Emacs ,那你可能还接触过作为编辑器扩展语言的 Elisp 。
也许有人要问下面这些个问题: 为什么要学习 Lisp ?
这个问题我真的不想解释太多,Eric Raymond 说过这样一句话:“即使你很少用Lisp写程序,学习Lisp会是意义深远的一个经历,能让你下辈子都成为一个更好的工程师。”
至于程序设计语言的两个极点(顶点?),请诸君自行脑补。
为什么要在 C++ 吧发这个贴子?
因为哥在这儿是脸熟权限狗,而且哥觉得如果不脑补下 Lisp ,你压根无法明白 C++ 是一个多么渣的语言,是的,渣,没错。
Lisp 有那么多方言,该学哪一个?
Scheme is enough.
PS: 这篇教程就是为 Scheme 而写的,因为它最“纯粹 ”,它的标准只有不到50页纸,大道至简,不过如此。 如果你要使用 Emacs Lisp 或者 Common Lisp ,本教程也有一定的参考意义。(毕竟以咱的水平只打算科普 IDE 安装,写个 Hello world 神马的。)
更多内容请参考
http://lisp.org.cn/