CG@CPPBLOG

/*=========================================*/
随笔 - 76, 文章 - 39, 评论 - 137, 引用 - 0
数据加载中……

推荐 SICP

我为什么推荐 SICP?

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

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

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

评论

# re: 推荐 SICP  回复  更多评论   

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

# re: 推荐 SICP  回复  更多评论   

@kong
谢谢 kong 提供了一个连接给我,我会去看的,我已经把它收藏到我的连接中去了,也谢谢你浏览我的blog
2008-03-19 13:58 | cuigang

# re: 推荐 SICP  回复  更多评论   

这本书不好买啊,我好不容易找到一本,准备n年后逼我的子孙学
哈哈
我觉得下面这本书更无敌
Concepts.Techniques.and.Models.of.Computer.Programming
2008-03-19 16:51 | haskell

# re: 推荐 SICP  回复  更多评论   

做它的习题很有挑战性啊.
当时看书的时候还不知道网上有网友的答案, 做的很头疼呢.
2008-03-19 18:10 | dawn.soup

# re: 推荐 SICP[未登录]  回复  更多评论   

@haskell
下了个Concepts Techniques and Models of Computer Programming的电子版,翻了一下,太厚了,5年以后再看吧,实在是没时间呀。
2008-03-19 21:39 | cuigang

# re: 推荐 SICP[未登录]  回复  更多评论   

@cuigang
你强烈推荐的一定要试试!
不过不知道需要什么预备知识?我对于SICP没有概念。另外,这本书全名是什么?
2008-06-23 09:10 | raof01

# re: 推荐 SICP  回复  更多评论   

@raof01
除了数学,只是需要耐心。《计算机程序的构造和解释》、The Book、purple book。
2008-06-23 22:44 | cuigang

# re: 推荐 SICP[未登录]  回复  更多评论   

@cuigang
谢谢!可我数学不行怎么办?
2008-06-24 09:13 | raof01

# re: 推荐 SICP[未登录]  回复  更多评论   

@raof01
基本数学知识就行。
2008-06-27 21:19 | cuigang

# re: 推荐 SICP  回复  更多评论   

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

确实是好书..值得推荐
2008-07-09 14:03 | mj

# re: 推荐 SICP[未登录]  回复  更多评论   

就看了第一章别乱写
2008-09-24 14:24 | jeffrey

# re: 推荐 SICP[未登录]  回复  更多评论   

@jeffrey
请指教
2008-09-24 21:07 | cuigang

# re: 推荐 SICP  回复  更多评论   

@cuigang

re
2009-02-18 14:49 | 感受男

# re: 推荐 SICP  回复  更多评论   

国内只有洪峰大师在黑客道教学中采用Scheme,听了他的授课真的感觉很爽。
2012-01-22 09:43 | 杨小波

# re: 推荐 SICP  回复  更多评论   

最近马虎看过一遍,习题没做,比你差远了。正在用C++写解释器,纯粹玩具。要多来这里学习。
2012-04-20 17:03 | coreBugZJ

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理