从“编码”(コーディング)到“编程”(プログラミング),这个名词的小小改变,其实凝结了人类的许多智慧和心血。而这其中最重要的大发明,就是程序语言。人类擅长的是用语言交流,所以发明了各种各样的语言,这么一来人类就可以用自己熟悉的语言来编写程序,而不必直接去编写只有机器才能识别和执行的代码了。
编程语言发展到今天,已经经历了好几代,从种类上看更是有数千之众。这些语言当然不可能都为着同样的目标而被设计出来,所以它们之间的差异还是非常大的。这些差异性体现在诸多方面,语法的差异非常显著,而相似的语法背后的语义差异则更是无形而且微妙。如果考虑到语言的运行环境、应用领域,还有语言之上建立的方法论,更是让人感觉:难道在程序语言这个完全由人类创造的领域,也要出现像自然语言一样的,把程序员分成无数宗派甚至族群的“巴别塔”了吗?
其实不然,程序语言毕竟是工程学产物,它的发展其实是有着统一的计算模型作为背景的,因而可以视为一种“约束下的发展成果”。计算模型落实为实际计算机的体系结构,种类并没有很多。因此,建构在其上的程序语言,由于最终还是要落实为在这些体系结构之上执行的代码,结构和实现上不会完全失控。但话说回来,要写作一本关于程序语言的通识读本,能够在一本书里讲清楚程序语言的共性,并能够指导具体语言的学习,这件事还是很困难的。很容易就会写成建立在编译原理基础之上的大部头,这么一来对读者的要求就非常高了。还容易写成各种语言混在一起的大杂烩,把读者搞得晕头转向。更何况,如果真拿具体的语言来讲,现在的语言版本更新迭代速度很快,写成的书很快就过时了。
但是本书就很不一样,它抓的点非常好,是一些通用但是不会过时的点。这些点从程序结构来说,包括了名字和作用域(哪种语言会没有名字和作用域呢?)、函数、类型、异常处理;在库的方面,讨论了字符串和容器;从运行环境来说,讨论了并行处理;从方法论的角度,讨论了至今仍然是主流的OOP和类继承。每个主题都是既深入浅出,不停留在概念层面,又点到即止,避免纠缠技术细节,显示了日本工业界务实而又认真的做事态度,以及不俗的技术实力和表达能力。
我尤其喜欢第一章提出的两种程序语言的学习思路:在比较中学习,在历史中学习。从每种语言的独特语法结构中,我们能够体会到这种语言针对的特定问题领域的难点和特色,这也引导着我们提出新的问题,或者在不同领域的问题之间建立关联。而从那些从属于不同时代语言的代际比较,我们更可以同时体会到早期语言的强大和不足之处,以及新生语言做了哪些取舍(一定有舍,不可能只有改进,因为结果是一样的)来向哪些方面做了妥协。其实在学习自然语言的时候,这两个办法也是非常管用的,只是学习多种程序语言的人比学习多种自然语言的人要多得多而已。一开篇就开宗明义地提出语言学习方法,这也决定了本书的高度。
总之,非常好的一部程序语言通识读本,向所有同行推荐。
非常好的程序语言通识读本
《代码之髓》热门书评
-
非常好的程序语言通识读本
12有用 3无用 高博 2014-08-27
从“编码”(コーディング)到“编程”(プログラミング),这个名词的小小改变,其实凝结了人类的许多智慧和心血。而这其中最重要的大发明,就是程序语言。人类擅长的是用语言交流,所以发明了各种各样的语言,这么一来人类就可以用自己熟悉的语言来编写程序,而不必直接去编写只有机器才能识别和执行的代码了。编程语言发...
-
为什么要有名字,为什么要有类型?
2有用 0无用 Architect 2015-05-02
为什么要取名:最初是“给3456号的数值加一”后来人们觉得应该给内容或者位置取一个容易理解的名字。相比于“取出ISBN编号是978-123-4857-293的书”,“取出《Python程序设计》这本书”更人性化一点。while语句是让反复执行的if的判断更加简洁。for语句的出现是让while语句变...
-
程序设计语言的明朝那些事儿
1有用 0无用 被吓坏的人 2016-02-23
花了一整天看完了。 就一个词:舒畅。 作者不假定读者有任何的计算机基础。按照各类语法的发...
-
干劲是宝贵的东西!
1有用 0无用 花卷 2016-02-25
FORTH on browserhttp://nhiro.org/learn_language/FORTH-on-browser.htmlLISP on browserhttp://nhiro.org/learn_language/LISP-on-browser.htmlEDSAC on brows...
-
挺精致的一本技术书
0有用 0无用 叶得飞 2015-03-30
这本书小巧精致,不像一般的计算机书那样的大块头,装帧和排版都很有美感,感觉像一本文艺书而不是技术书。闲暇时翻上几页,惬意而有所得。内容由日本专家所著,正文不多但引注很多,有时一页的内容引文说明要占一小半,足见作者所做研究是充分。书中涉及到了多个语言的一些特性,在互相对比中让人了解其共通点与独特性,开...