(define (cuigang) (coding))

(define (coding) (coding))

推荐 SICP

我为什么推荐 SICP?

向大家推荐 SICP,不知道有多少人看了,也不知道有多少人明白了,更不知道有多少人惊叹了。或者你根本不屑一顾,或者你看见 Lisp 那层层括号心生畏惧,又或者你了了一瞥,觉得没什么精彩之处。那我真的很失望。

 
我为什么要推荐SICP,而且为什么如此执着?这本不算厚的书带给我的观念,是从未有过的,是关乎于软件本质的。曾几何时,我觉得我看到了计算机编程书中没有的哲学观,但这一次我的梦破灭了,那些已经被写进书里差不多快 30 年了。
 
对于 SICP,我真正算看完的,恐怕只有第一章。我现在就来谈谈我的心得,以再次向你展现这本书的魔力。
 
第一章作为基础,作者并没有象后续章节写太多的软件思想,主要还是介绍 Scheme 语言,所以草草看去,没什么精辟之处。不过在第一章中,作者用了大量的篇幅来探讨数学问题,因为他想向你揭示程序设计中的核心哲学:抽象。而数学无疑是最好的例子。
 
了解数学史的人,应该知道整个数学史,就是一个不断抽象的历史。古希腊人将字母引入计算,使数学不再只是算术,而且具有表达抽象规则的能力。近代数学对函数和微积分的探求中,用 f(x) 替代了多项式表达式,函数更一般了,然后 n 维空间、复分析、映射、泛函,抽象代数、群论,等等等等,直到集合论,摧毁了数学的基石,使数学界再次陷入沉思。
 
构造程序的方法也是抽象。从最简单的元素开始,基本元素(自演算表达式,包括数字,字符串和布尔值),然后定义基本过程(基本运算符,四则运算和布尔运算),进一步,自定义标识符(如同代数),再自定义过程(函数),再将过程作为值参与运算(高阶过程)。一步步的抽象,形成了整个程序的结构。而我们编程,无非就是从现实世界抽象出模型,再将模型不断的提炼抽象,属性、方法、类、继承、层次、框架。
 
编程就是一个不断抽象的过程。我再次把作者在第一章末写下的结论抄在这里,作为最后的注脚。
 
“作为编程者,我们应该对这类可能性保持高度敏感,设法从中设别出程序中的基本抽象,基于它们去进一步构造,并推广它们以创建威力更强大的抽象。当然,这并不是说总应该采用尽可能抽象的方式去写程序,程序设计专家们知道如何根据工作中的情况,去选择合适的抽象层次。但是,能基于这种抽象去思考确实是最重要的,只有这样才可能在新的上下文中去应用它们。高阶过程的重要性,就在于我们能显式地用程序设计语言的要素去描述这些抽象,使我们能像操作其他计算元素一样去操作它们。”

posted on 2008-03-18 21:57 cuigang 阅读(1425) 评论(10)  编辑 收藏 引用 所属分类: 杂谈Lisp/Scheme

评论

# re: 推荐 SICP 2008-03-19 09:19 kong

Alan perlis 的序写的很有味道。计算机从诞生出来就是靠抽象的,但显然这本书给我门的启发更多。习题答案在 ocaml.cn上有比较全的。  回复  更多评论   

# re: 推荐 SICP 2008-03-19 13:58 cuigang

@kong
谢谢 kong 提供了一个连接给我,我会去看的,我已经把它收藏到我的连接中去了,也谢谢你浏览我的blog  回复  更多评论   

# re: 推荐 SICP 2008-03-19 16:51 haskell

这本书不好买啊,我好不容易找到一本,准备n年后逼我的子孙学
哈哈
我觉得下面这本书更无敌
Concepts.Techniques.and.Models.of.Computer.Programming  回复  更多评论   

# re: 推荐 SICP 2008-03-19 18:10 dawn.soup

做它的习题很有挑战性啊.
当时看书的时候还不知道网上有网友的答案, 做的很头疼呢.  回复  更多评论   

# re: 推荐 SICP[未登录] 2008-03-19 21:39 cuigang

@haskell
下了个Concepts Techniques and Models of Computer Programming的电子版,翻了一下,太厚了,5年以后再看吧,实在是没时间呀。  回复  更多评论   

# re: 推荐 SICP[未登录] 2008-06-23 09:10 raof01

@cuigang
你强烈推荐的一定要试试!
不过不知道需要什么预备知识?我对于SICP没有概念。另外,这本书全名是什么?  回复  更多评论   

# re: 推荐 SICP 2008-06-23 22:44 cuigang

@raof01
除了数学,只是需要耐心。《计算机程序的构造和解释》、The Book、purple book。  回复  更多评论   

# re: 推荐 SICP[未登录] 2008-06-24 09:13 raof01

@cuigang
谢谢!可我数学不行怎么办?  回复  更多评论   

# re: 推荐 SICP[未登录] 2008-06-27 21:19 cuigang

@raof01
基本数学知识就行。  回复  更多评论   

# re: 推荐 SICP 2008-07-09 14:03 mj

第一章看了两节了..找DrScheme里的runtime方法找到你这的..

确实是好书..值得推荐  回复  更多评论   


标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航: