开源领袖Eric Raymond对主流编程语言的评价

标签: General | 发表时间:2014-12-17 06:00 | 作者:ajaxj
出处:http://www.geek521.com

【译注】:Eric Raymond是开源运动的领袖人物,对于UNIX开发有很深的造诣,主持开发了fetchmail。他的《大教堂与集市》被奉为开源运动的经典之作。下面对几大开发语言的评价非常中肯,是我近年来看到的比较出色的评论。特别是他评价中抱有的那种“简单就是好”的思想,很值得我们深思。我特别选译出一些段落,供大家阅读思考。

Raymond 此文不是在泛泛地去谈语言的优劣,而是要回答一个问题:在UNIX下开发开源项目,如何选择开发工具?我翻译的很零散,建议大家去看原文。

C 语言

虽说C语言在内存管理方面存在严重的缺陷,不过它还是在某些应用领域里称王称霸。对于那些要求最高的效率,良好的实时性,或者与操作系统内核紧密关联的程序来说,C仍然是很好的选择。

C良好的可移植性也为它加了分。不过现在很多其他的语言可移植性越来越好,C在这方面的优势可能会逐渐丧失。

现有的很多程序可以产生非常棒的C代码,比如语法分析器、GUI Builder等,这时候C语言也是有吸引力的,因为你所需要编写的代码只是整个程序的一小部分。

再有,我们当然应该认识道,C语言对于程序员来说具有无可替代的价值。就我这里讨论的每一种语言而论,只要你发掘的足够深,到最后你会看到它们的内核都是用纯正的、可移植的C写成的。

到了今天这个时候,我们最好把C看成是UNIX虚拟机上的高级汇编语言。

就算是其他的高级语言完全可以满足你的工作需要,抽出时间来学习C语言也仍然有益,它能帮助你在硬件体系的层次上思考问题。

即使到了今天,最好的C语言教程仍然是1988年出版的K&R第二版The C Programming Language.

总结:C最出色的地方在于其高效和贴近机器,最糟糕的地方在它的内存管理地狱。

C++

C++最初发布于1980年代中期,当时面向对象语言被认为是解决软件复杂性问题的银弹。C++的面向对象特性看相去使其全面超越了C,支持者认为C++将迅速把上一代语言挤到陈列馆里去。

但是历史并非如此。究其原因,至少有一部分归咎于C++本身。为了与C兼容,C++被迫作出了很多重大的设计妥协,结果导致语言过分华丽,过分复杂。为了与C兼容,C++并没有采用自动内存管理的策略,从而丧失了修正C最严重问题的机会。

另外一部分原因,恐怕要算到面向对象身上。看起来OO并没有很好的达成人们当年的预期。我就这个问题调研过,我发现使用OO方法导致组件之间出现很厚的粘合层,并且带来了严重的可维护性问题。今天让我们来看看开放源码社区,你会发现C++的应用还是集中在GUI,游戏和多媒体工具包这些方面,在其他地方很少用到。要知道,面向对象也只是在这些领域被证明非常成功,而开放源码社区的选择,很大程度上体现了程序员的自由意志,而不是公司管理层的胡乱指挥。

也许C++实现OO的方法有问题。有证据表明C++程序在整个生命周期的开销高于相应的C, Fortran和Ada程序。不过,究竟这是否应该归咎与C++的OO实现上,还不清楚。

最近几年,C++加入了很多非OO的思想,其异常思想类似Lisp,STL的出现是非常了不起的。

其实C++最根本的问题在于,它基本上只不过是另一种传统的语言。STL中的内存管理比先前的new/delete和C的方案要好的多,但是还是没有解决问题。对于很多应用程序而言,其OO特性并不明显,相比与C,除了增加复杂度之外没有获得很多好处。

总结:C++优点在于作为编译型语言,把效率与泛型和面向对象特性结合起来,其缺点在于过于华丽复杂,倾向于鼓励程过分复杂的设计。

Java

Java的设计很聪明,它采用了自动内存管理,这是最大的改进,支持OO设计带来的好处虽然不那么突出,不过也很值得赞赏,相比C++,其OO设计规模小而且简单 。

相对于Python而言,Java有一些明显的失误。有些地方设计的还是太复杂,甚至有缺陷。Java的类可见性和隐式scoping规则太复杂了。Interface机制是为了避免多继承带来的问题而设计的,但是要理解和使用它还是挺难。内部类和匿名类导致令人困惑的代码。缺乏有效的析构机制,使得除了内存之外的其他资源(比如互斥量和锁)管理起来很困难。Java的线程不可靠,其I/O机制很强大,但是读取一个文本文件却非常繁琐。

Java没有管理库版本的机制,从而形式上重蹈了了Windows DLL地狱的覆辙。在类似应用服务器这样的环境里,这引起了大量的问题。

总体而言,我们可以说除了系统编程和对效率要求极高的程序之外,Java在大部分领域优于C++。经验表明,Java程序员似乎不太容易象C++程序员那样构造过度的OO层,不过在Java中这仍然是个严重问题。

Java是否优于诸如Perl, Python这样的语言?我们还不是很清楚,很大程度上似乎跟程序规模有关。其擅长的领域基本上于Python相似,在效率上无法跟C/C++相提并论,在小规模的、大量使用模式匹配和编辑的项目里也无法匹敌Perl。在小项目里,Java显得过分强大了。我们猜测Python更适合小项目,而Java适合大项目,不过这一点并没有得到有力的证明。

Python

Python是一种脚本语言,可以与C紧密整合。它可以与动态加载的C库模块交换数据,也可以作为内嵌脚本语言而从C中调用。其语法类似C和模块化语言的杂合,不过有一个独一无二的特征,就是以缩进来确定语句块。

Python语言非常干净,设计优雅,具有出色的模块化特性。它提供了面向对象能力,但不强迫用户进行面向对象设计。其类型系统提供了强大的表达能力,类似Perl,具有匿名lambda表达式,这点又让Lisp黑客们感到亲切。Python依靠Tk提供方便的GUI界面开发能力。

在所有的解释型语言里,Python和Java最适合多名程序员以渐进方式协同开发大型项目。在很多方面,Python比Java要简单,它非常适合与构造快速原型,这一点使得它对于Java有独特优势:对于那些既不很复杂,又不要求高效率的程序,Python十分合适。

Python的速度没法跟C/C++相比,不过在今天的高速CPU上,合理地使用混合语言编程策略使得Python的上述弱点被有效地弥补。事实上,Python几乎被认为是主流脚本语言中最慢的一个,因为它提供了动态多态性。在大量使用正则表达式的小型项目,它逊于Perl。对于微型项目而言,shell和Tcl可能更好,Python显得太过强大了。

总结:Python最出色的地方在于,它鼓励清晰易读的代码,特别适合以渐进开发的方式构造大项目。其缺陷在于效率不高,太慢,不但跟编译语言相比慢,就是跟其他脚本语言相比也显得慢。

相关 [开源 领袖 eric] 推荐:

开源领袖Eric Raymond对主流编程语言的评价

- - 极客521 | 极客521
【译注】:Eric Raymond是开源运动的领袖人物,对于UNIX开发有很深的造诣,主持开发了fetchmail. 他的《大教堂与集市》被奉为开源运动的经典之作. 下面对几大开发语言的评价非常中肯,是我近年来看到的比较出色的评论. 特别是他评价中抱有的那种“简单就是好”的思想,很值得我们深思. 我特别选译出一些段落,供大家阅读思考.

Eric Meyer又更新reset css了

- lostsnow - 走走停停看看
前几天Eric Meyer又思考了一下reset.css的问题,于是有所更新,具体为何要这样做,请看原文Reset Revisited.

我读过的最佳的的算法类书籍(Eric Wendelin)

- Shengbin - 译言-电脑/网络/数码科技
来源Best algorithms book I ever read.   当我为google的面试准备时,我花了大量的时间来查找数据结构和算法类的知识,同时.根据博学的Steve的建议,我决定入手Steven S. Skiena写的>这本书..   如果你不想仔细阅读我写在下面的关于这本书的废话,那所有的内容有一句话总结:去买这本书吧.如果你正在进行严肃的编程..

Eric Schmidt 确认 10月/11月 发布 Ice Cream Sandwich

- Panfeng - 谷安——谷奥Android专题站
上周在 San Francisco 的 Dreamforce 会议上,Eric Schmidt 在谈论中强调了一些要点,他谈到了未来的云计算以及 HTML5 等. 他也简要的提及了 Google 的移动平台,并证实了 Ice Cream Sandwich(Android 的下一个版本)将在 10 月或 11 月发布.

Larry Page 与 Eric Schmidt 出席 Google Zeitgeist 2011 大会

- mike - 谷奥——探寻谷歌的奥秘
尽管Larry Page已经上位CEO,但他跟其他CEO不同的是我们很难在公众场合见到他,他也很少公开表达自己的意见,除了在每季度一次的财报会议. 还好,Eric Schimidt携手Larry Page出现在一年一度的Google Zeitgeist大会上了,他们爷儿俩还回答了到场观众的问题. Page最开始谈到为什么做搜索引擎,因为在斯坦福的时候如果搜索“大学”,你得到的几乎是一个随机化的搜索结果,所以他们开始打造搜索引擎,并相信没人像他们那样专注于搜索.

Eric Schmidt 施大爷终于也到 Google+ 卖萌了

- Lamo - 谷奥——探寻谷歌的奥秘
就在大家揶揄说Google一多半高管都没去Google+玩儿之时,Eric Schmidt施大爷这个带头大哥做出了行动,入驻了Google+并发了一些信息流. 注意到施大爷用了青涩的20出头时期在SUN公司工作时的视频截图作为头像,成功卖萌. 但施大爷也像+Larry 和 +Sergey那样隐藏了自己的圈子,大家都在以私密形式玩Google+,难道这是三驾马车在暗示人们Google+的最佳玩法就是这样.

Google 前 CEO Eric Schmidt 与 Salesforce CEO Marc Benioff 谈企业软件的进化(视频)

- votis - 谷奥——探寻谷歌的奥秘
关于Google董事主席Eric Schmidt出席在Salesforce.com Dreamforce活动上跟Salesforce.com CEO Marc Benioff谈话内容我们已经挖掘了一些,包括:. 施大爷透露 Google Apps 已有四千万用户,日增五千. 施大爷改口,称 Google 买摩托罗拉移动不只为了专利.

CE-欧-买-尬:Eric Schmidt 说「我们的竞争对手靠法律战,而非创新在还击」

- 改变的勇气 - Engadget 中国版
Google 执行董事长 Eric Schimdt 在东京的 Google Mobile Revolution 会议现身的主要目的是谈该公司在亚洲的布局与计划,但丝毫不意外地,讨论的方向被引导到了最近的几桩重量级的法律案件,Schmidt 也很乐意地为我们提供了一两句看法. 虽然没有指名道姓(嗯哼~),Schmidt 说因为 Google 在 Android 上的成功,「我们的竞争对手靠法律战,而非创新在还击」,但表示他并不为此感到担心.

曼联史上十大传奇领袖

- 吞佛 - 译言-每日精品译文推荐
  曼联现任队长内马尼亚·维迪奇未来有可能成为曼联最伟大的队长之一,不过现在看起来还差点. Similarly, great characters from the past may have been as great in their way as some who are selected here, but it is hard to compare their relative merits other than on historic achievements..