编程语言的宗教狂热和十字军东征

剃刀书评 专栏收录该内容
20 篇文章 0 订阅

编程语言的宗教狂热和十字军东征

(本文首发于《中华读书报》2003年8月20日号)
熊节

  业余程序员最喜欢做的一件事就是对不同的语言进行比较。Java是否比C++好?C#是否会成为终极语言?凡此种种。从专业程序员的角度看来,这是最低级无趣的游戏。其一,在项目诸元确定之后,通常并没有选择语言的余地;其二,语言的生存本身就是一个达尔文主义的问题:设若两种语言有明确的可比较性,其中较劣的那一种必定早已被淘汰出局,又何来比较的必要?所以,有“C++之父”美称的Bjarne Stroustrup博士常常声明自己不会拿C++与其他语言比较——偏偏每次接受采访时,必定有外行的记者或听众提出这一类最令他反感的问题,这是题外话,按下不表。

  丢开实用主义的观点,从美学(或者说,计算机科学)的角度来看,语言的比较似乎并不像它通常所表现的那么低级。毕竟,既然维特根斯坦反复强调“语言制订游戏的规则”、“凡不可言说者必保持沉默”,可见语言并非仅仅是可通约的思想的映射,语言本身就决定思想的方式。使这个问题显得那么低级而业余的,往往是业余程序员讨论它的方式:仅仅凭着自己对几种语言一知半解的认识、仅仅凭着使用一种语言的习惯、甚至仅仅凭着一种宗教狂热来展开讨论,这样的讨论自然是不值一哂的。

  我是不是已经提到了“宗教狂热”这个词?如果说对语言的喜爱(或者憎恶)可以成为一种宗教狂热,就有那么一些人可以凭着宗教袢瓤际志亩鳎琁an Joyner无疑属于这种人。1992年,在Unisys用C++开发UNIXX.500时,Joyner感到C++让他“不自在”,于是就写了一篇题为《C++批判》的报告,张贴在Unisys的内部新闻组上。到此为止,一切都没有什么不同。但Joyner与其他宗教狂热者的区别在于:他有着远为深厚的理论基础,以及锲而不舍的毅力。于是,《C++批判》有了第二版和在Internet上广为流传的第三版。到1998年,这篇典型的论坛文章终于变成了一本书,“批判”也彻底变成了语言之间的比较(参与比较的另外两种语言是Java和Eiffel),这就是我手上的《对象揭秘:Java、Eiffel和C++》(Object Unencapsulated:Java,Eiffeland C++,人民邮电出版社2003年7月)。

  尽管宣称自己反对“宗教战争”,但显然Ian Joyner是深谙宗教战争之道的。从批评的方式来说,他与其他人并无不同:首先立论(“Eiffel是最好的语言”),然后不断变换角度批评对手——时而是数学理论的完备性、时而是使用的便利和可靠、时而是命名的清晰……论据的选取完全只是为论点服务。也正因为此,这本《对象揭秘》足以让绝大多数的语言比较者感到羞赧,因为在同样的批评套路上,Joyner探索的深度和广度令他们望尘莫及。譬如说,任何一个负责的语言比较者都必然会提到“继承和类型系统”这一话题,但Joyner却把这个话题写成了长达63页的一章(第5章,“类型扩展:继承与虚拟”),并在后面的章节(第9章,“类型转换”)中继续讨论相关的问题。抛开篇幅不谈,单是Joyner习以为常的文法解读、Lamda演算法和签名变化理论,就足以使不够水准的批评者自惭形秽了。

  因此,在我看来,这本《对象揭秘》完全有理由成为所有语言比较者的必读书目——也许说“入门书目”会更准确一些?因为你能想到的任何一条批评,Ian Joyner很可能早已做了鞭辟入里的阐述。如果在细读《对象揭秘》之前妄自作评,结果很可能是贻笑大方。另一方面,在批评的方法上,Joyner为后来者作出了表率:简单的反对与谩骂毫无意义,用钱钟书的话来说,“反其道以行也是一种模仿”;只有拿出充足的论据,再拿出合理的解决方案,才称得上一个高明的批评者。当然,这样的“入门书目”也许让门槛显得太高了一点。但对于“Java和C++谁更好”这样一个通常只会令人感到莫名烦躁的话题,门槛总是不厌其高的。

  像我一样的Java人常常会抱怨“Java的经典书籍太少了”。C++的经典好书总是层出不穷,实在令人艳羡——当然真正拥有这些书的人也同时拥有不少的烦恼,我就有最深切的体会。在这本《对象揭秘》中,IanJoyner顺便也半开玩笑地揭开了这个秘密。也许,这句半开玩笑的话会成为Java人喜爱这本书的另一个理由:

  “……学习C++要花那么长时间……,要比Eiffel和Java都长得多。花那么长时间还未必掌握编程或者面向对象设计技术。这也是为什么关于C++的书籍那么多而Eiffel和Java不需要那么多书的原因。”

  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

国外经典电子工程类名著。 Foundations of Electrical Engineering second Edition, American’s Author J.R.Cogdell 电子工程概论第二版 贾洪峰 译 清华大学出版社 北 京 国外经典教材 电气工程学概论 第二版 美 J.G. Cogdell 著 贾洪峰 译 清华大学出版社 北 京 内容简介 本书全面系统地介绍了电气工程学基础知识。全书分四部分,其十八章,内容丰富,涵括了电路、电子技术、系统电动机等方面知识。全书在讲述基本概念基本原理同时,又注重实际应用例子。每章均有大量例题、思考题习题,便于读者复习自学。 EISBN: 0-13-092701-5 Foundations of Electrical Engineering (Second Edition) J.R. Cogdell Copyright © 1996,1990 by Prentice Hall Inc. Original English language edition published by Prentice Hall Inc. All right reserved. For sale and distribution in the People’s Republic of China exclusively (except Taiwan, Hong Kong SAR and Macau SAR) 仅限于中华人民共国境内(不包括中国香港、澳门特别行政区中国台湾地区)销售发行。 本书封面贴有Pearson Education (培生教育出版集团) 激光防伪标签,无标签者不得销售。 北京市版权局著作权合同登记号:图字01-2002-5756号 图书在版编目(CIP)数据 电气工程学概率/(美)科格戴尔著;贾洪峰译——北京:清华大学出版社,2003 书名原文:Foundations of Electrical Engineering (Second Edition) ISBN 7-302-06394-X Ⅰ.电. . . Ⅱ.①科. . . ②贾. . . Ⅲ.电气工程——教材 Ⅳ.TM 中国版本图书馆CIP数据核字(2003)第017836号 出版者:清华大学出版社(北京清华大学学研大厦,邮编100084) http://www.tup.com.cn http://www.tup.tsinghuua.edu.cn 责任编辑:文开棋 王新亭 印刷者:北京鑫丰华彩印有限公司 发行者:新华书店总店北京发行所 开本:787×1092 1/16 印张:45.75 字数:1482千字 版次:2003年5月第1版 2003年5月第1次印刷 书号:ISBN 7-302-06394-X/TP•4821 印数:0001~4000 定价:88.00元 前 言 本书说明 十年前,我开始讲授电工学这门课,该课程面向是非电气专业学生。当时,我选用了一本较为普及教材,可很快发现这本教材给学生带来了很大麻烦。因为这本教材应像一本百科全书,涉及面很广,内容却缺乏深度。于是,我很希望能够出版这样一本教材:从一定深度上讲解电工学重要思想,涉及更多细节,便于学生日后进行深入研究以及专业实践。因此我写了这本《电气工程学概论》。选择“概论”一词作为教材名称,主要是为了表明——电工学整体构架是几个基本重要原理组成。 第2版第1版主要目是一样,有以下3个: 1. 深入地阐明电工学基本思想; 2. 围绕基本思想进行阐述,强调主题一致性; 3. 全面概述电路、电子、系统以及电力工程所涉及内容。 当然,我并没有忘记电力工程是电工学重点。可以预见,电力工程将是这个时代必备知识。对许多电子工程专业学生来说,新技术挑战、大量就业机会以及从事电子技术所获得成就感,都使得他们对电力工程逐渐失去了兴趣。大多数学生认为,电力之于电子,如同劣马之于纯种马。结果可想而知,有许多电子工程专业学生,基本不选修电力。可是在实际工作中,选择电机时,工程师不得不重新面对如何查找电机相关信息问题。比如,机械工程师需要选择适当电机来驱动一个泵等。而本书正是考虑到了这种工程师实际需求,深入地阐述了电力方面知识,特别是电机有关知识。 第2版改进 在第1版基础上,第2版做了许多改进。对全书重新进行了修订,新增了一章,并重新排版,使全书条理更清晰。通过大量图例多种讲解方式,大大提高了本书可读性。在重新修订期间,全书共做了3次修改、2次审稿,并在4所大学进行了教学试验。
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值