这些新的可能性并不是来自于一个新的神奇元素。在这个方面,Lisp就像是一个架构。到底是哪块楔形的石头(拱石)来管控这个架构呢?这个问题本身就是错误的;它们都在做。像一个架构,Lisp是一个连锁特征的集合。我们可以列出其中的一些特征——动态存储分配和垃圾回收,运行时类型,作为对象的函数,产生列表的内置解析器,接受以列表表达的程序的编译器,一个交互式的环境,等等——但是Lisp的能力不能从它们中的任何一个看出。它们联合起来才使得Lisp真正成为Lisp。
在过去的20年中,人们编程的方式改变了。其中的很多改变——交互式环境,动态链接,甚至面向对象编程——曾经一点点地试图给其它编程语言Lisp的灵活性。这个架构的隐喻表明了它们有多成功。
人们都知道Lisp和Fortran是还在被使用的两种最古老的编程语言。可能其中更重要的是它们代表了在程序语言设计哲学中的另一个极端。Lisp被设计用来表达算法。诸如这样的不同目的产生了大量不同的编程语言。Fortran给写编译器的人们带来了很大便利;Lisp给程序员带来很大便利。大多数的编程语言迷失在这两者之间。Fortran和Lisp将它们向中心靠拢。Fortran现在看上去更像Algol,Lisp也放弃了早期的一些浪费的习惯。
原先的Fortran和Lisp定义了一种战争。战场的一边叫喊“效率!”,另外一边战场叫喊“抽象!”。类似于古希腊由远道而来的神来决定战争结果,这场战争的结果是由硬件来决定的。每年,形势向着利于Lisp的方向发展。对于Lisp的争议现在听上去更象是20世纪70年代汇编语言程序员争议高级语言的情况。现在的问题变成了,不是为什么使用Lisp?,而是什么时候?