【IT168 评论】面向对象之父Alan Kay对“Lisp是有史以来最牛的编程语言”进行了解答。原回答如下:
Alan Kay:首先对我以前的一些答案进行澄清。有些人要尝试着用Lisp做操作系统,这看上去好像很难。事实上,我曾经做过最好的操作系统之一就是利用的“The Lisp Machines”,它是以“Parc Machines”和Smalltalk为首的硬件和软件——而我们也受到了编程以及实现Lisp模型的影响(这些操作系统在Smalltalk和Lisp中都比今天的标准版本要更容易编写)。
另一个有趣的答案是:“时间的考验”在某种程度上是宇宙的优化。但是正如每个科学家知道的一样,达尔文进化论发现了环境适应的重要性,一旦环境缺失,那么适应性也会随着缺失。同样,如果大多数计算机科学家缺乏必要的理解和知识,那么他们的选择也可能会是错误的。如今也有大量的证据表明这个结论是正确的。
但是这两个答案都不足以表达我对Lisp的赞美(另外我在“ Smalltalk的早期历史 ”这个问题中更详细的解释了我的意思)。
我们很容易联想到历史上最伟大的天才——牛顿。他在很多领域都能流利的应用微积分。而在牛顿之后的科学家在质量研究方面比以前有更大的突破。所以我认为“观点价值80分”——一个知识贫乏的人很有可能减去80 IQ值,而一些更强的人会完成以前人们认为的很困难的创新。
人类众多的思想问题之一是“认知负担”:事件的数量会立即引起我们的注意,一般来讲为7±2,但对于许多事情来讲这还是少的。我们通过解决这些琐碎的问题来使自己成长。
这就是数学家们喜欢符号的原因之一——而缺点是科学家需要额外学习抽象层和符号所隐藏的含义——实际上这正是小提琴演奏的实践部分。但你一旦做到这一点,你头脑中立即思维就会被放大。以原始形式存在的20个麦克斯韦方程(以偏微分和卡迪尔坐标表示),今天我们可以一眼就想到四个方程式,主要是由于这些方程式被Heaviside重新设计、强调了重点(有可能这个重点是存在问题的,例如电场和磁场在运动方面应该对称等问题)。
现代科学是基于体验现象和设计模型关系的,这些关系可以进行必要的“negotiated”,因为在我们脑海中的系统与“外界是什么”无必然联系。
从这个角度我们可以联想到“桥梁科学”和“桥梁科学家”——工程师建立桥梁,为科学家提供可用的桥梁模型。同样,从“桥梁科学”可以衍生出来“计算机科学”和“计算机科学家”,开发人员构建硬件和软件为科学家提供可用的计算机模型。实际上这是60年代初期“计算机科学”的主导思想,但只是一个期望而已并没有完全实现。
Lisp背后的故事很有趣(你可以在第一编程语言史中查阅John McCarthy的文章)。它被构造的目的之一是建造“数学物理”,也就是“数学的计算机理论”。另一个原因是John McCarthy在50年代后期考虑过使用一种最普通的编程语言来构造一个用户界面的AI(称为“警告”)。
Lisp可以进行编程,大多数的程序都是机器代码;Fortran表处理语言存在,语言也有链表。
John开发的Lisp可以编译任何编程语言都能做到的程序,而且相对简单,这也体现了它的本质。(这让我们联想到数学部分或现代麦克斯韦方程式),而这样的方式也会比图灵机器更简洁。
我们知道从最简单的机器结构到最高级语言的发展斜率都是最陡峭的——这就意味着可识别的硬件到宇宙表达式会呈现火箭式飞跃的趋势。
通常情况下,特别是在工程中,一个伟大的科学模型往往都优于现有的模型,这就会导致棒的工作。史蒂夫·拉塞尔(程序员,也是“太空站的”的发明者)看了约翰所做的工作后说:“这个程序如果我来编码,我们现在已经有一个可运行的版本”。正如约翰所说的:“他做到了,我们也做到了!”
而最终的结果就是“unlimited programming in an eyeful”(在Lisp 1.5手册中第13页的下半部分)。其实问题的关键并不在于“Lisp”而是在于这些代表性方法是否对多种编程语言方案开放。
这件事情一旦完成可以立即考虑比Lisp更优秀的编程语言,你也会立即想出比John更好的方法来编写meta描述。这就是所谓的“POV = 80 IQ points”的部分。但这听起来就像是一旦看到牛顿就会电动力学相对论一样。所以说科学上最大的壮举还是牛顿!
这就是为什么Lisp是最棒的原因。