黑客与画家(13):书呆子的复仇

各种编程语言的编程能力是不同的.

Python语言模仿Lisp, 甚至把许多Lisp黑客认为属于设计错误的功能也一起模仿了.

Lisp语言是无意中从纯理论发展为编程语言的.直到今天, 最高级的主流语言也只是刚刚接近 Lisp 的水平,但还是没有 Lisp那样强大.

为什么 Lisp 语言很特别

Lisp 语言诞生时就包含了9种新思想, 按照大众的接受程度排列如下:

  • (1) 条件结构 if-then-else
  • (2) 函数也是一种数据类型. 在 Lisp 语言中, 函数与整数或者字符串一样, 也属于数据类型的一种. 它有自己的字面表示形式( literal representation), 能够存储在变量中, 也能当参数传递.一种数据类型应该有的功能, 它都有.
  • (3) 递归.Lisp是第一种支持递归函数的高级语言.
  • (4) 变量的动态类型.在 Lisp 语言中, 所有变量实际上都是指针, 所指向的值有类型之分, 而变量本身没有. 复制变量就相当于复制指针, 而不是复制它们指向的数据.
  • (5) 垃圾回收机制.
  • (6) 程序由表达式组成. Lisp程序是一些表达式树的集合, 每个表达式都返回一个值.
  • (7) 符号类型. 符号实际上是一种指针, 指向存储在散列表中的字符串. 所以, 比较两个符号是否相等, 只要看它们的指针是否一样就行了,不用逐个字符地比较.
  • (8) 代码使用符号和常量组成的树形表示法.
  • (9) 无论什么时候,整个语言都是可用的. Lisp 并不真正区分读取期, 编译期和运行期.你可以在读取期编译或运行代码, 也可以在编译期读取或运行代码, 还可以在运行期读取或者编译代码.

一般来说, 条件越苛刻的项目, 强大的编程语言就越能发挥作用.

ITA 的软件的核心是一个 20 万行的 Common Lisp程序, 其搜索能力比竞争对手高出许多个数量级, 该程序使用了大量的宏.

衡量编程语言的编程能力的最简单的方法可能就是看代码数量.所谓高级语言, 就是能够提供更强大抽象能力的语言.

如果你想在软件业获得成功, 就使用你知道的最强大的语言, 用它解决你知道的最难的问题, 并且等待竞争对手的经理做出自甘平庸的选择.

这章最后, 作者把 Python 语言黑的一塌糊涂.

comments powered by Disqus