写给CS人的泛函书

萨摩风G-virus 评论 计算机程序的构造和解释 4 2012-04-11 18:14:13
Liutos
Liutos (惨了惨了疏于锻炼代码技能了) 2012-04-14 17:23:44

我对收获的第一点持强烈赞同,同样也很震惊惰性计算的使用~~~

Wei Xue
Wei Xue (读书是我的避难所) 2012-06-11 23:59:41

说的很好啊。我也有这样的感觉。procedure的procedure就是函数的函数。计算理论的中的lambda演算也搞的是这个事情,可惜只有粗浅了解过。Knuth的Surreal numbers,把哥德堡,巴赫,埃舍尔搞在一起的GEB,这两本书也讲了类似的事情。

迷惑
迷惑 (此非天命乎) 2012-10-13 01:21:25

授课语言都换成Python了,lz有什么想说的

jiuren
jiuren 2013-02-14 23:05:37

我没学过范函,但是学过lamdba calculus还有type theory.
我不认为这本书等同于learning python或者the c programming language,这本书的核心是abstraction, 更确切的说是abstraction in functional way.
如果硬要对应,这本书更应该对应的是object oriented programming这类书吧。

不知道lz知不知道clojure, 稍微花点时间学一下,可以体会到functional programming language务实的一面。

jiuren
jiuren 2013-02-14 23:06:38

@哈希
python更适合入门,这本书对于没有编程经验的人而言还是略难了一点。

萨摩风G-virus
萨摩风G-virus (自然体,平常心) 2013-02-15 16:51:00

@就人 很同意这本书是讲如何抽象的。只不过我觉得一本标准意义上的语言书在讲解语言特性的同时,必然也灌输了这种语言式的抽象方法(就像你不会从 the c programming language 中看到oo一样),所以才将这本书和另外两本书等同起来——当然我不否认还有一个重要原因是希望这本书能够从神坛上走下来。

另外我也认为函数式的抽象方法是更自然,合理和高效的(就像我在文中写到的,这是更数学式的思维方式),之所以称之为务虚,只是因为觉得对于当时的计算机性能来说,这种语言的性能是不可接受的,另外相比于fortran所代表的数值计算,符号计算还有很多问题没有解决(比如本书第二章建立的多项式求导,你会发现不能很容易地推广到对任意函数求导。),所以我觉得在那个时代还是偏“务虚”的。(不过符号计算领域目前的进展我也不很了解,有错还望指出。至少Mathmatica已经能解很多函数的导数了)

jiuren
jiuren 2013-02-17 08:11:20

@萨摩风G-virus,

其实我的主要目的是来推销clojure的! Life changing!
http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey
这是一个关于clojure的computation model的视频。

恩,我同意你的说法。在我看来,lisp背后所蕴含的lambda calculus更能反映计算的本质,但是的确在那个时代适应不了计算机的性能。
imperative progamming language 完全就是走的另外一个路数,它们更多是希望计算更适合计算机,而不是让计算机更适合计算。

幸好随着硬件技术的进步,常数的复杂度差异变得越发不重要(当然对嵌入式这些特定领域并不适用),通过抽象控制复杂度变得越发关键。这本书一定为历久弥新的。

邻家のR君
邻家のR君 (Hello world) 2013-08-23 14:01:40

借楼推荐下[chicken scheme](http://www.call-cc.org/)。很好用的scheme解释器

longlong9
longlong9 2013-11-06 17:25:29

3楼 亮了

Dinosaur Sr.
Dinosaur Sr. (Duck and Cover) 2013-11-13 04:48:41

2.6开始没理解,后来看了church calculus的维基解释发现不就是泛函嘛 233

jiuren
jiuren 2013-11-14 22:39:13

历史倒退又不是第一次出现,王垠说mit的6.001换python是他们程序语言方面实力下降的一个标志。
我倒觉得没他说的那么危言耸听,这本书用来入门确实太难了一点,但这并不妨碍这本书成为传世的经典。

jiuren
jiuren 2013-11-14 22:42:05

在看一下python里面各种高级特性,什么generator,decorator 不都是在炒冷饭么。

Firo
Firo (欢迎关注我Twitter ID: firoyang) 2015-12-14 13:54:56

@Xue_Wei

还可以这么理解GEB啊, 有种一下子全都串联起来的感觉!.

龙
2018-02-20 20:32:53

我咋没看出来是泛函😂😂😂

萨摩风G-virus
萨摩风G-virus (自然体,平常心) 2018-02-21 11:47:47
我咋没看出来是泛函😂😂😂 我咋没看出来是泛函😂😂😂

重读了一遍,现在看来可能是有点标题党了,抱歉。不过结论倒是没太大问题,lisp 致力于表达数学,所以支持对于泛函(或者更精确地说是算子)的直接表达。lisp 的设计目标和使用场景不同于现代的大多数语言,这就导致这本"lisp 的教科书"和其他语言的教科书相比也显得非常特立独行。

melancholydays
melancholydays (doban is my truely home) 2018-05-08 15:52:30
授课语言都换成Python了,lz有什么想说的 授课语言都换成Python了,lz有什么想说的 迷惑

cs61a吗?哈哈哈

zzz雪人
zzz雪人 (招女友 要求170 两门外语) 2018-06-18 16:42:20

racket

zzz雪人
zzz雪人 (招女友 要求170 两门外语) 2018-06-18 16:47:34
我对收获的第一点持强烈赞同,同样也很震惊惰性计算的使用~~~ 我对收获的第一点持强烈赞同,同样也很震惊惰性计算的使用~~~ Liutos

惰性计算?

qg
qg 2018-07-22 17:05:45

有点启发.
我想问问,现在计算机和计算机科学需要解决的问题是什么?以前要解决的问题又是什么?

zzz雪人
zzz雪人 (招女友 要求170 两门外语) 2018-08-21 16:49:17

”虚实“能再说说么