最容易被忽略的最重要的话(扉页)
“我认为,在计算机科学中保持计算中的趣味性是特别重要的事情。这一学科在起步时饱含着趣味性。当然,那些付钱的客户们时常会觉得被我们敷衍了。一段时间之后,我们开始信以为真。我们开始觉得,自己真的像是要负起成功地、无差错地、完美地使用这些机器的责任。我不以为然。我认为我们的责任是去拓展这一领域,将其发展到新的方向,并在私底下保持趣味性。我希望计算机科学领域绝不要丧失其趣味意识。最重要的是,我希望我们不要变成传道士,不要认为你是兜售圣经的人,世界上这种人已经太多了。你所知道的有关计算的东西,其他人也都能学到。绝不要认为成功计算的钥匙只掌握在你的手里。我认为并希望,你所掌握的是智慧:那种当你第一次站在这一机器面前时就能看到它的本质的能力,这样你才能将它推向前进。” ———— Alan J. Perlis (生于1922年4月1日,卒于1990年2月7日),第一位图灵奖(1966年)获得者,ALGOL语言的设计者之一。
引文参考了英文原文与中文版译文后,可能根据自己的理解重写。不保证与中文版内容一致,下同。
师傅常说的一句话:“我是在玩编程!”。当前市面上却有太多的编程传道士和编程工人。房价和通涨让我们难以成为职业玩家,问题是我们如何在“私底下”玩。
序 (还是Alan J. Perlis)
“本书中要讨论的各种问题都牵涉到三类需要关注的对象:人的大脑、计算机程序的集合以及计算机本身。每一个计算机程序都是现实中的或者精神中的某个过程的一个模型,通过人的头脑孵化出来。这些过程出现在人们的经验或者思维之中,数量上数不胜数,详情琐碎繁杂,任何时候人们都只能部分地理解它们。我们很少能通过自己的程序将这种过程模拟到永远令人满意的程度。正因为如此,即使我们写出的程序是一集经过仔细雕琢的离散符号,是交织在一起的一组函数,它们也需要不断的演化:当我们对于模型的认识更深入、更扩大、更广泛时,就需要去修改程序,直至这一模型最终达到了一种亚稳定状态。而在这时,程序中又会出现另一个需要我们去为之奋斗的模型。 计算机程序设计领域之令人兴奋的源泉,就在于它所引起连绵不绝的发现,在我们的头脑之中,在由程序所表达的计算机制之中,以及在由此所导致的认识爆炸之中。 如果说艺术解释了我们的梦想,那么计算机就是以程序的名义执行着它们。
...
“区分出上述三类需要关注的对象,并不仅仅是为了策略上的便利。即使有人说它不过是人头脑里的东西,这种逻辑区分加快了这些关注焦点之间的符号化的交流,它们在人们经验中的丰富性、活力和潜力,只能由现实生活本身的不断演化去超越。我们至多只能说,这些关注焦点之间的关系是基本稳定的。计算机永远都不够大也不够快。硬件技术的每一次突破都带来了更大规模的程序设计事业,新的组织原理,以及更加丰富的抽象模型。每个读者都应该反复问自己”到哪儿才是头儿,到哪儿才是头儿?”————但是不要问得过于频繁,以免忽略了程序设计的乐趣,使自己陷入一种喜忧参半的呆滞状态中。”
你现在,今天,还会因为计算机程序设计所引起的连绵不绝的发现而兴奋吗?不会?尽快转行。一个新技术,新框架出现,你是会一边关注,一边问“到哪里才是头儿”,还是“麻木,飘过”,还是只会不停地问“哪里才是头儿”直到陷入呆滞状态中……
“不幸的是,随着程序变得更大更复杂(实际上它们几乎总是如此),这种描述(用谓词演算描述程序功能)本身的适宜性、一致性和正确性也都变得非常值得怀疑了。因此,很少能够看到有关大程序正确性的完全形式化的论证。因为大的程序是从小东西成长起来的,开发出一个标准化的程序结构的武器库,并保证其中每种结构的正确性————我们称它们为“惯用法”(idiom),再学会如何利用一些已经证明很有价值的组织技术,将这些结构组合成更强大的结构,这些都是至关重要的。…… 理解这些技术,对于参与这种被称为程序设计的具有创造性的事业是最最本质的。特别值得提出的是,发现并掌握强有力的组织技术,将提升我们构造大型的重要程序的能力。反过来说,因为写大程序非常耗时费力,这也推动着我们去发明新方法,减轻由于大程序的功能和细节而引起的沉重负担。”
这就是各种类库、设计模式、框架的本质。
“很难找到这样的两种语言(Pascal和Lisp),它们能如此清晰地代表着围绕这两种语言而聚集起来的两种差异巨大的文化。Pascal是为了构造金字塔————壮丽而辉煌、令人震撼,是由各就其位的沉重巨石筑起的静态结构。而Lisp则是为了构造有机体————同样的壮丽辉煌并令人震撼,由各就其位但却永不静止的无数简单的有机体片段构成动态结构。在两种语言里都采用了同样的组织原则,除了其中特别重要的一点不同之外:托付给Lisp程序员个人可用的自由支配权,要远远超过那些使用Pascal的公司。Lisp程序大大抬高了函数库的地位,使其可用性超越了催生它们的那些具体应用。…… 而在Pascal里,数据结构的过度声明导致函数的专用性,阻碍并惩罚临时性的合作,(在Pascal中)采用100个函数在一种数据结构上操作,远远优于用10个函数在10种数据结构上操作。作为这些情况的必然后果,金字塔矗立在那里千年不变,而有机体则必须演化,否则就会死亡。”
关于动态语言与静态语言差异的精彩论述,可惜三年前我完全跳过了序言,不然这段话可以用在上次的PPT里。
分享到:
相关推荐
SICP.part2.rar SICP.part2.rar SICP.part2.rar
sicp in python 中文版 sicp in python 中文版 sicp in python 中文版 !!!download>>>https://github.com/wizardforcel/sicp-py-zh
SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版SICP中文第二版
2. **递归**:递归是SICP中的关键概念,用于解决各种问题。书中通过递归函数展示了如何表示和处理数据结构,如列表和树。 3. **抽象**:SICP提倡通过创建抽象层来提高代码的可读性和复用性。通过定义新类型和操作,...
《SICP笔记和练习》是一份详尽的资源,主要涵盖了由MIT教授们编写的经典计算机科学教材《Structure and Interpretation of Computer Programs》(简称SICP)的学习笔记和练习解答。这份资料以HTML格式呈现,便于在线...
《SICP 2.2.4 节:图形语言》是计算机科学经典教材《结构与解释程序》(Structure and Interpretation of Computer Programs)中的一个重要章节,它深入介绍了如何利用编程来创建图形,以及如何设计和理解复杂的计算...
sicp 2ed高清pdf,以及相对应的mit课程资料及习题答案打包,中文版的视频在这里http://i.youku.com/i/UNTcxODk3ODQw/videos?spm=a2hzp.8244740.0.0
《计算机程序构造和解释》(SICP,Structure and Interpretation of Computer Programs)是一本具有深远影响力的计算机科学教材,由Harold Abelson和Gerald Jay Sussman编写,MIT Press出版。这门课程由北京大学数学...
《计算机程序的构造与解释》(Structure and Interpretation of Computer Programs,简称SICP)是一本备受推崇的经典计算机科学教材,由Harold Abelson和Gerald Jay Sussman撰写,并由MIT出版社出版。这本书以其深入...
2. **Lisp语言**:SICP主要使用的编程语言是Lisp,一种极简且极具表达力的函数式语言。读者将学会如何读写Lisp代码,理解其语法和特性,如S-表达式、宏系统等。 3. **数据结构与抽象**:书中会涉及各种数据结构,如...
SICP-Python版本
SICP 使用的scheme解释器 以前叫DrScheme
### SICP——《计算机程序的结构与解释》 #### 一、概述 《计算机程序的结构与解释》(Structure and Interpretation of Computer Programs, 简称SICP)是一本由MIT电气工程与计算机科学系教授Harold Abelson和...
《计算机程序的构造和解释》(SICP)是一本极具影响力的计算机科学教材,由Harold Abelson和Gerald Jay Sussman所著,MIT出版社出版。这本书以其深入探讨编程概念、程序设计方法以及计算机系统的工作原理而闻名。1-3...
《SICP习题解答,主要第一章的内容习题答案》 SICP,全称《Structure and Interpretation of Computer Programs》(计算机程序的构造和解释),是计算机科学领域的一本经典教材,由MIT(麻省理工学院)的 Harold ...
笔记 如果你想在 gauch 中使用随机函数 (use math.mt-random) (define m (make <mersenne> :seed (sys-time))) (mt-random-integer m 1000) (define (random n) (mt-random-integer m n)) 使用。 另外,如果你想...
Python SICP epub版本,很适合学习抽象的思想,用Python版本比lisp更实用
2. **环境模型**:SICP详细阐述了程序执行的环境模型,解释了变量的绑定和查找是如何在内存中进行的,这对于理解函数调用和闭包等概念至关重要。 3. **元编程**:书中深入探讨了元编程的概念,即编写操作其他程序的...
本书名为《a_book_sicp_py》,是一本以Python语言为基础介绍设计模式和计算机科学基础的书籍。根据描述和部分内容,可以提炼出以下知识点: 1. 编程语言的重要性:在计算机科学的宽泛领域中,编程语言扮演着至关...