Niklaus Wirth 是一名计算机科学家,研究和教授语言和编译器的设计。当他设计 Pascal 语言和编译器时,他的一些设计目标是让编译器变得小而快速高效,并划分任务以便编译器做编译器容易做的事情,程序员做容易做的事情程序员。
根据这些目标,他设计了一个 Single-Pass 编译器,只需阅读一次源代码,第一次就能理解所有内容。他还设计了一个带有非常简单的状态机的编译器:一切都是按顺序完成的,以正确的顺序,只有正确的顺序。
通过这样做,他能够轻松地获得一个非常小、快速、高效和正确的编译器,而 C 编译器是出了名的困难、错误和低效,而 FORTRAN 编译器又慢又大。
在程序开始时进行一次静态常量分配是这些设计决策之一,它允许您编写一个小型、快速、高效、正确的编译器。
几十年前,Borland 编写了一个小巧、快速、高效和正确的 Pascal 编译器,它再次成功地与其他公司(例如 MS)的更昂贵的产品竞争,这些产品允许乱序声明和其他通常有用和有用的选项使编译器变得更慢和更困难,但使编程更容易。
换句话说,MS 选择在编译器和用户之间划分任务的方式与 Borland/Wirth 不同。
MS Pascal 编译器在很久以前就被放弃了。但是 Borland 编译器继续作为 Delphi。
现在的计算机比以前快了很多,但是编写一个小型、快速、高效、正确的编译器的任务仍然相同。新功能不是免费的。增加编译的复杂性是有代价的。如果必须将它作为一个例外添加到整个编译器和语言从一开始就设计的方式中,那么即使是一个简单的特性也是混乱的。