`
kidneyball
  • 浏览: 327022 次
  • 性别: Icon_minigender_1
  • 来自: 南太平洋
社区版块
存档分类
最新评论

SICP读书笔记(3)——前言

阅读更多
第2版前言
作为编程导论教材,重点在前四章。

第1版前言
他们说,计算机程序对个别具体用途而言确实是好东西,但它们太缺乏弹性。事实上,如果你不会正确使用的话,对你来说就连小提琴或者打字机也会同样的缺乏弹性。  —— “为什么说程序设计很容易成为一种媒介,用于表述理解肤浅、草率而就的思想” by Marvin Minsky (MIT人工智能实验室创立者之一,1969年图灵奖得主)

原文在 http://danreetz.com/ongoing_oversight_and_observation/minsky_1967.pdf

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

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

……

“设计这门课程的基础是我们的一种信念,"计算机科学"并不是一种科学,而且其重要性也与计算机本身并无太大关系。计算机革命是有关我们如何去思考的方式,以及我们如何去表达自己思考的一个革命。在这个变化里最基本的东西,就是出现了一种可以称为"过程认识论"的现象——这就是如何从一种命令式的视角去研究知识的结构,这一视角是与经典数学领域中所采用的更具说明性的视角完全不同的。数学为精确处理"是什么"提供了一种框架,而计算则为精确处理"怎样做"的概念提供了一种框架。”


全书提纲挈领的一段话,这么精辟的一段话,早在20年前就写出来了。有趣的是直到今天,还有人在叫嚣计算机科学是关于0和1的,还会有写汇编的看不起用VB的,还会有搞算法的看不起写财务软件的……

“我们采用的是Lisp语言的一种方言。我们不会在课堂上对这一语言作形式化的讲解,因为并不必要。我们只是使用它,学生可以在几天之内就学会它。这也是类Lisp语言的重要优点:它们只有不多几种构造复合表达式的方式,几乎没有语法结构。所有的形式化性质都可以在一个小时里讲完,就像下象棋的规则。在很短时间之后,我们就可以不再理会语言的语法细节(因为根本没有),而进入真正的问题——弄清楚我们需要去计算什么,怎样将问题分解为一组可以管理的部分,并基于它们展开工作。”

这里再一次强调了,本书的重点不是Lisp。之所以选用Lisp,是因为其基本语言特性简单易学。正如Joel所说:“你可以先讲Scheme语言,这种教学语言简单到聪明学生大约只用10分钟,就能全部学会。然后,你将这个学期剩下的时间,都用来讲解不动点。”
3
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics