卧槽,还可以这样?
贾维斯这简直开挂神器啊~
不过这一夜占顾悠悠便宜已经够多的了,章杉不忍心在这种小事情上投机取巧了。
当即大大方方地承认了自己不会这门语言。
仔细想想其实关于lisp,章杉也不是毫无所知。
记得章杉之前在阅读《Structure and Interpretation of Computer Programs》(中译版,即机械工业出版社《计算机程序的构造与解释》)
这本书全书使用Lisp进行教学。
按照书里面描述的lisp这是一门函数式编程语言。
从个人观点出发,章杉觉得函数式编程语言更适合在实验室里把玩,不适合开发大型工程。
所以之前他并没有太注意这门语言。
如果知道章杉是这样的想法,怕是不少大牛会蹦出来反驳章杉。
以前不少大牛在大学里有课程是讲述LISP语言~
在这些前辈眼中lisp仍是“一种比较新奇的语言”~
不过也不用太较真,说到底还是看问题的角度不一样罢了。
说到SCIP这是一本几乎和《深入理解计算机系统齐名的书》。
首先,SICP是一本教科书。
书里面的示例和习题都是经过精心设计的,几乎可以说都是有针对性地培养各种能力。
换句话说,如果太“功利”地阅读这本书,可能会觉得失望。
没法从中学到如何开发一个网站,开发一个记事本,如何绘图~
这本书完全是在锻炼程序员的基本能力,而不是“技术”。
有时候,我们可以把它当作一本数学书看,里面的题目也经常和数学有关。
不过甚至用不到大学水平,似乎高中数学水平应该足够了吧。
而且看一本书,不一定要从头到底全部看完。
章杉记得SICP全书共分五章,章杉建议可以认真阅读前三章——没时间的话就精读前两章“过程抽象”与“数据抽象”。
如果有时间的话,也可以把第四章看完。
至于第五章,有人说是SICP的精华所在,但是章杉认为啃下第五章的投入产出比相对前几章来说就相对较低了(第四和第五章使用Lisp实现一个解释器及一个简单的CPU逻辑实现,很难,不过这的确是Lisp最“美”最能体现出完备性的地方)。
如果,章杉是说如果,在阅读前两章时较为困难,也不妨先看一下《Simply Scheme: Introducing Computer Science》,可以把它看作是SICP的基础。
值得一提的是,SICP和SSICS都在互联网上公开——不得不敬佩他们对学术推广的态度。
在学习SICP这本书时,也可以选择配合相关的公开视频。
有两个选择,一是Berkeley的上课视频,二是MIT的公开课件。
前者的讲述较为轻松有趣,相对容易理解一些,章杉看了大半;而后者为SICP原书作者Hal Abelson 和Gerald Jay Sussman为Hewlett-Packard公司员工培训时的录像,章杉感觉更为体系、理论、也相对较为难懂——当然,这只是章杉看了Lecture 1的两段录像后的感觉。此外,北大也开设了《程序设计技术和方法》课程,使用SICP作为教材,相信也是不错的参考。
最后便是开发环境了。SICP使用Lisp语言,而在实验时,不妨使用Scheme,它是Lisp语言的两种常见方言之一(还有一种是Common Lisp)。可以使用GNU/MIT Scheme作为编译/解释器,不过章杉使用的是IronScheme,它基于DLR,也是.NET平台下的另一个编程语言实现。
不过话说回来,其实章杉在做SICP的习题时使用最多的还是F#,它是由微软研究院发明的又一种.NET语言,同时拥有强大的函数式编程和面向对象能力。此外,章杉现在对于Haskell也有相当兴趣,这个老牌的纯函数式编程语言也慢慢地回到人们视线中来。章杉使用的参考书是《Real World Haskell》,它获得了Jolt大奖最佳技术书籍,希望能从中获取更多灵感。