0
0

推荐一本好书:计算机程序的构造和解释(SICP)

Dreamer 发表于 2010年08月05日 22:28 | Hits: 2177
Tag: LISP | 编程 | Other | 技术

这几天想了解一下 LISP 语言,于是找了一大堆资料,其中就有这本《计算机程序的构造和解释》。刚开始的时候我并不知道这本书多么有名,但看了序言之后我立刻被这本书吸引住了,并断定这是一本好书。这本书如何经典大家可以自己去搜索一下,简介我就不放上来了,这里只摘抄一些序言中的一些段落,有兴趣的可以看一下。相信如果你对技术有追求、希望自己写的代码不仅能用而且有审美价值,那么你肯定会被这本书所吸引的。

(本书有在线视频讲座英文书也全部可以在线阅读)

带着崇敬和赞美,将本书献给活在计算机里的神灵。

“我认为,在计算机科学中保持计算中的趣味性是特别重要的事情。这一学科在起步时饱含着趣味性。当然,那些付钱的客户们市场觉得受了骗。一段时间之后,我们开始严肃地看待他们的抱怨。我们开始感觉到,自己真的像是要负起成功地、无差错地、完美地使用这些机器的责任。我不认为我们可以做到这些。我认为我们的责任是去拓展这一领域,将其发展到新的方向,并在自己的家里保持趣味性。我希望计算机科学的领域绝不要丧失其趣味意识 。最重要的是,我希望我们不要变成传道士,不要认为你是兜售圣经的人,世界上这种人已经太多了。你所知道的有关计算的东西,其他人也都能学到。绝不要认为似乎成功计算的钥匙就掌握在你的手里。你所掌握的,也是我认为并希望的,也就是智慧:那种看到这一机器比你第一次站在它面前时能做得更多的能力,这样你才能将它向前推进。”
———— Alan J. Perils (1922 年 4 月 1日 - 1990 年 1 月 7 日)

“本书要讨论的各种问题都牵涉到三类需要关注的对象:人的大脑、计算机程序的集合以及计算机本身。每一个计算机程序都是现实中的或者精神中的某个过程的一个模型,通过人的头脑孵化出来。这些过程出现在人们的经验或者思维之中,数量上数不胜数,详情琐碎繁杂,人和时候人们都只能部分地理解它们。我们很少能通过自己的程序将这种过程模拟到永远令人满意的程度。正因为如此,即使我们写出的程序是一集经过仔细雕琢的离散符号,是交织在一起的一组函数,它们也需要不断地演化;当我们对于模型的认识更深入、更扩大、更广泛时,就需要去修改程序,知道这一模型最终达到了一种亚稳定状态。而在这时,程序中又会出现另一个需要我们去为之奋斗的模型。计算机程序设计领域之令人兴奋的源泉,就在于它所引起连绵不绝的发现,在我们的头脑之中,在由程序表达的计算机制之中,以及在由此所导致的认识爆炸之中。如果说艺术解释了我们的梦想,那么计算机就是以程序的名义执行着它们。

“计算机永远都不够大也不够快。硬件技术的每一次突破都带来了更大规模的程序设计事业,新的组织原理,以及更加丰富的抽象模型。每个读者都应该反复地问自己‘到哪里才是头儿,到哪里才是头儿?’——但是不要问得过于频繁,以免忽略了程序设计的乐趣,使自己陷入一种喜忧参半的呆滞状态中。”

“Lips 有着如此简单的语法和语义,程序的语法分析可以看作一种很简单的工作。这样,语法分析技术对于 Lisp 程序几乎就没有价值,语言处理器的构造对于大型 Lisp 系统的成长和变化不会成为阻碍。最后,正是这种语法和语义的极端简单性,产生出了所有 Lisp 程序员的负担和自由。任何规模的 Lisp 程序,除了那种寥寥几行的程序之外,都饱含着考虑周到的各种功能。发明并调整,调整恰当后再去发明!让我们举起杯,祝福那些将他们的思想镶嵌在重重括号之间的 Lisp 程序员。

“一台计算机就像是一把小提琴。你可以想象一个新手试了一个音符并丢掉了它。后来他说,听起来真难听。我们已经从大众和我们的大部分计算机科学家那里反复听到这种说法。他们说,计算机程序对个别具体用途而言确实是好东西,但它们太缺乏弹性。一把小提琴或者一台打字机也同样缺乏弹性,那是你学会了如何去使用它们之前。”
—— Marvin Minsky, “为什么说程序设计很容易成为一种媒介,用于表述理解肤浅、草率而就的思想”

“我们所设计的这门计算机科学导引课程反应了两方面的主要考虑。首先,我们希望建立起一种看法:一个计算机语言并不仅仅是让计算机去执行操作的一种方式,更重要的,它是一种表述有关方法学的思想的新颖的形式化媒介。因此,程序必须写得能够供人们阅读,偶尔地去供计算机执行 。其次,我们相信,在这一层次的课程里,最基本的材料并不是特定程序设计语言的语法,不是有效计算某种功能的巧妙算法,也不是算法的数学分析或者计算的本质基础,而是一些能够用于控制大型软件系统的智力复杂性的技术。

我们的目标是,使完成了这一科目的学生能对程序设计的风格要素和审美观有一种很好的感觉。他们应该掌握了控制大型系统中的复杂性的主要技术。他们应该能够去读50页长的程序,只要该程序是以一种值得模仿的形式写出来的。他们应该知道在什么时候那些东西不需要去读,哪些东西不需要去理解。他们应该很有把握地去修改一个程序,同时又能保持原来作者的精神和风格。

P.S. “程序必须写得能够供人们阅读,偶尔地去供计算机执行”这句话流传很广,我想大部分人应该都和我一样,认为这句话是在强调代码的可维护性或者干净整洁。但从上下文来看,作者是在强调计算机语言“是一种表述有关方法学的思想的新颖的形式化媒介”,和代码的可维护性什么的没有关系。

相关日志

原文链接: http://www.zhuoqun.net/html/y2010/1518.html

0     0

我要给这篇文章打分:

可以不填写评论, 而只是打分. 如果发表评论, 你可以给的分值是-5到+5, 否则, 你只能评-1, +1两种分数. 你的评论可能需要审核.

评价列表(0)