Orz oz

 
为了读Concepts, Techniques, and Models of Computer Programming这本书,去下了Mozart,一个支持编程语言Oz的开发系统。照这书里的指点,运行Oz.exe,居然看到Emacs窗口弹出来。瀑布汗。。。这就是Mozart编程界面啊。怪不得只要8MB的安装空间。这时才注意到书里直接就用Emacs的黑话了,什么编辑器分成两个frames。我就纳闷,如果俺不用Emacs怎么办呢?为这么彪悍的编程系统,失意体前屈一把,也算说得过去吧?
 
刚看完书的前言,已经被撩拨得心痒难忍。这本书和诸如SICP, PAIP, TAOCP这类大部头一样,也有自己的简写,CTM。Lambda the Ultimate上的常客们热荐这本书。LtU是理论牛人(比如Erik Meijer)和理论叶公(比如俺)扎堆的地方,推荐的书多少都偏重理论、公式满篇。但从前言来看,CTM注重讨论对程序员重要的编程概念。摘几条有意思的片段:
  • 作者选取计算模型的主要标准是对编程实践有没有用
  • 什么时候向编程语言里加入新概念取决于“创造性扩展原则”:当程序出于技术原因变得过度复杂,但增加的复杂度和要解决的问题无关时,就可以引入新的概念了。引入的新概念应该简化程序。用逻辑编程方法解决和约束有关的问题可算一个例子。
  • 编程包含两坨基本部分:技术和科学基础。技术部分包括工具,实用技巧,和标准等。技术让我们能够实践编程。科学部分包括深广而有预测力的理论。这些理论让我们能够理解编程。技术和理论对编程缺一不可。没有技术,我们不过在搞纯数学。没有科学,我们不过在学习一门手艺,也就是说,我们不能深入理解编程。所以说嗫,教编程,既要教当前的工具(技术),也要教基础的概念(科学)。
  • 现在的编程教学分成不同的流派。面向对象,逻辑编程,函数编程。。。每个学派都有自己的理论。整合不同编程流派的单一领域已经失传了。
  • 每个编程流派各说各话好比修桥的各执己见。木桥门的认为用木头造桥是不二法门。铁桥门的坚持用钢铁造桥才是至理。偏偏没人想过同时用木头和铁造桥。书后用Java举了个例子:Java程序员觉得并发编程是本质困难,不可避免,但真正的原因是Java里解决并发问题的编程模型不够强大。
  • 把编程精简到逻辑算子的地步,比如lambda算子和π算子,只是简化了数学分析,但并不能帮助程序员建立直观概念。搞理论的老大好这一口,但程序员其实得不到多少好处。基础算子有助于研究计算的基础性质,但对分析理解通用的应用程序没有多大帮助。
  • 这本书强调综合应用各式编程模型。OO里高阶函数一样大有用处。可变状态在函数编程里也能派上用场。逻辑编程并非Prolog这类语言的禁脔。其实不同编程模型的差别也没那么大。申明式编程和命令式编程的共性大于个性。另外一方面,支持单一编程模型的语言反而会让编程变得困难。
 
俺提到过这本书的卖点之一是详尽讨论各式并发编程技术么?
 
P.S., 俺其实不相信世上有《九阴真经》这类得之称霸江湖,不得失意武林的秘籍。名动天下的高手们也是把键盘敲烂,把笔头写断,在激情的驱动下,一路磨练出来。我就算把这本书背下来,能写出云风写出的游戏么?显然不行嘛。This year head,每读一本书,也许就失去读另外10本精彩书籍的机会。所以呢,暂时找不到某本书的老大也不用痛苦,换本书读就行了。如果要找免费的经典读物,可以到这里这里,和这里。够读个十年二十年了吧。
P.P.S, 这本书有电子版。下载地址俺就不知道老。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章