Loading...

LISP的根源

Original

2001年5月

(我写这篇文章是为了帮助自己理解麦卡锡的发现。你不需要知道这些东西就可以编程Lisp,但对于任何想了解Lisp本质的人来说,这应该很有帮助 - 无论是从它的起源还是语义核心的角度。Lisp有这样一个核心是它的一个显著特征,也是为什么Lisp有各种方言的原因。)

1960年,约翰·麦卡锡发表了一篇非凡的论文,他为编程做了类似于欧几里德为几何学所做的事情。他展示了如何利用一些简单的运算符和函数符号来构建一种完整的编程语言。他将这种语言称为Lisp,意为"列表处理",因为他的一个关键思想是使用一种称为列表的简单数据结构来表示代码和数据。

了解麦卡锡的发现是很值得的,不仅是因为它在计算机历史上具有里程碑意义,而且还可以作为编程未来发展的一种模型。在我看来,到目前为止,只有两种真正干净、一致的编程模型:C模型和Lisp模型。这两种模型似乎是高地,中间是沼泽低地。随着计算机变得越来越强大,新开发的语言一直在稳步向Lisp模型靠拢。在过去20年里,新编程语言的一种流行配方就是采用C模型的计算,并逐步添加来自Lisp模型的部分,如运行时类型和垃圾回收。

在这篇文章中,我将尽可能简单地解释麦卡锡的发现。重点不仅是了解40年前某人发现的一个有趣的理论结果,而且要展示语言发展的方向。Lisp的不同之处 - 事实上,Lisp的定义特征 - 就是它可以用自己来编写。为了理解麦卡锡所说的这一点,我们将重复他的步骤,将他的数学符号转换为运行的Common Lisp代码。