真是脸红,半年前就买到这本书了,第一章还没看完呢。昨天看到
JavaEye
上为这本书争的挺热闹,今天拿来读。希望自己能坚持读下去。
SICP
:
Structure and Interpretation of Computer Programs
《计算机程序的构造和解释》
且看这精彩的序:
“
最小的物理开关元件在量子力学里建模,而量子力学又由一组微分方程描述,微分方程的细节行为可以由数值去近似,这种数值又由计算机程序描述,计算机程序的组成
……
….
很难找到这样的二种语言,它们能如此清晰地代表着围绕这二种语言而聚集起来的两种差异巨大的文化,。
Pascal
是为了建造金字塔
—
壮丽辉煌,令人震撼,是由各就其位的承重巨石筑起的静态结构。而
Lisp
则是为了构造有机体
----
同样的壮丽辉煌并令人震撼,由各就其位但却永不静止的无数简单的有机体片段构成的动态结构。在二种语言里都采用了同样的组织原则
,除了其中特 别重要的一点不同之外:托付给
Lisp
程序员个人可用的自由支配权,要远远超过在
Pascal
社团里可找到的东西,
Lisp
程序大大抬高了函数库的地位,使其可用性超越了催生它们的那些具体应用。作为
Lisp
的内在数据结构,表对于这种可用性的提升起着最重要的作用,表的简单结构和自然可用性反应到函数里,就使它们具有了一种奇异的普适性。而在
Pascal
里,数据结构的过度声明导致函数的专用性,阻碍并惩罚临时性的合作。采用
100
个函数在一种数据结构上的操作,远远优于用
10
个函数在
10
个数据结构上的操作,作为这些情况的必然后果,金字塔矗立在那里千年不变,而有机体则必须演化,否则就会死亡。
….
正如由其目标可以预见到的,人工智能的研究产生出许多重要的程序设计问题。在其他程序设计文化中,问题的洪水孵化出一种又一种新的语言。确实,在任何非常大的程序设计工作中,一条有用的组织原则就是通过发明新语言,去控制和隔离作业模块之间的信息流动。这些语言变的越来越不基本,逐渐逼近系统的边界,逼近我们作为人最经常与之交互的地方,作为这一情况的结果,在这种系统里包含着大量重复的复杂的语言处理功能。Lisp有着如此简单的语法和语义,程序的语法分析可以看做一种很简单的工作,这样,语法分析工作对于Lisp程序几乎就没有价值,语言处理器的构造对于大型Lisp系统的成长和变化不会成为阻碍,最后,正是这种语法和语义的极端简单性,产生出了所有Lisp程序员的负担和自由,任何规模的Lisp程序,除了那种廖廖几行的程序外,都饱含着考虑周到的各种功能。发明并调整,调整恰当后再去发明!让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的Lisp程序员。”
本文转自 wenyan 51CTO博客,原文链接:http://blog.51cto.com/wenyan/10147