+ O8 o; e. P" q1 t从这一点看,和c同时发明的pascal,都是algol语言的继承者,在这一点上就设计的更好一些,抛弃了很多工程上的小聪明。如果不涉及系统编程,比如大量频繁的内存分配,两者的语法几乎是等价的,而pascal语言的程序相对而言清晰得多,更不容易产生错误。库的处理,中间代码P code的处理,都非常巧妙。如果不是c那样的超级通用语言(可以进行系统编程)的话,pascal本来可以成为一种更流行的语言,从而让现在的软件工程更正规一点。毕竟,个人电脑发明后,由于摩尔定律,内存的增加让c为节省的那点内存进行的操作完全成了多余而添麻烦的行为了。/ e+ Q& C* f1 U x
, H- U5 e0 u, |7 V具体说来,lisp的设计导向、学术导向是最严重的,尤其是scheme系列(common lisp也有很严重的工程师倾向)。pascal也是比较学术的,C就是完全工程师向的。但是在语言复杂程度和抽象程度而言,两者是差不多的,比早期的colbol和fortran高了一个级别。 ! J0 i0 m: B( e) x( H 6 t! J1 S- Y! w7 r/ J) b5 g$ O6 z H至于后来的c++,java,ml(ocaml,F#,haskell)等属于更高一个级别的设计。而perl,php则是纯工程导向、设计度比较低的产品。ruby,python,lua则是一开始就意识到了将来的发展,为未来扩展做了准备的脚本语言。8 K0 u7 x8 G. Z1 ^! _# p P
+ Z9 I* L6 R# v* {) X! m6 x% d脚本语言现在中间代码(加速运行)、属性表(动态类型)、类或者闭包(用于绑定数据和处理数据的程序)基本都是标配了。这使得程序比过去的脚本语言复杂多了。- j& @( j& V* ?0 i: X
' r. Z1 p3 ~+ S0 A2 i9 f