Loading...

LISP 的根源

Original

2001 年 5 月

(我写这篇文章是为了帮助自己准确理解麦卡锡的发现。你不需要知道这些东西就可以用 Lisp 编程,但它应该对任何想了解 Lisp 本质的人有所帮助——无论是从其起源还是语义核心的角度来看。它有这样的核心这一事实是 Lisp 的显着特征之一,也是为什么与其他语言不同,Lisp 有方言的原因。)

1960 年,约翰·麦卡锡发表了一篇引人注目的论文,他在论文中对编程所做的贡献与欧几里得对几何学所做的贡献类似。他展示了如何通过几个简单的运算符和函数符号来构建一门完整的编程语言。他将这种语言命名为 Lisp,即“列表处理”,因为他的一个关键思想是使用一种称为列表的简单数据结构来存储代码和数据。

麦卡锡的发现值得我们去理解,它不仅是计算机历史上的一个里程碑,而且也是我们这个时代编程趋势的典范。在我看来,到目前为止,编程有两种非常清晰、一致的模型:C 模型和 Lisp 模型。这两个模型似乎是高地,中间是沼泽低地。随着计算机功能越来越强大,正在开发的新语言一直在稳步向 Lisp 模型靠拢。过去 20 年,一种流行的新编程语言方法是采用 C 计算模型,并逐渐添加来自 Lisp 模型的部分,如运行时类型和垃圾收集。

在本文中,我将尝试用最简单的术语解释麦卡锡的发现。目的不仅仅是了解四十年前某人得出的有趣理论结果,还在于展示语言的发展方向。Lisp 的特别之处——事实上,Lisp 的决定性品质——是它可以用它自己编写。为了理解麦卡锡的意思,我们将追溯他的步骤,将他的数学符号翻译成可运行的 Common Lisp 代码。