在我看来,编程语言由两个方面定义:其编译器或解释器,通过法令定义了语言的语法和语义,以及其标准库,这在很大程度上定义了熟练用户在使用该语言编写代码时使用的惯用语和技术。
除了少数特殊情况(例如.NET家族的非C#成员),大多数语言的标准库都是用该语言编写的,有两个非常好的理由:因为它将共享相同的语法定义、函数调用约定和该语言的总体“外观和感觉”,以及因为编写编程语言的标准库的人很可能是其用户,特别是其设计者。所以这里没有什么独特之处;这是相当标准的。
再次强调,一个语言的编译器被自身编写并不是独特或不寻常的。C编译器是用C编写的。Pascal编译器是用Pascal编写的。Mono的C#编译器是用C#编写的。甚至一些脚本语言也有“用自身编写”的实现。
那么,Lisp被称为是用自身编写的不寻常在哪里呢?