`

几种计算机语言的评价(修订版)

阅读更多

转自:

http://www.ruanyifeng.com/blog/2010/03/programming_language_evaluations_revised.html

 

作者: 阮一峰

日期: 2010年3月20日

编程新手都有一个同样的问题:“我应该学习哪一种语言?”。

《Unix编程艺术》(Eric Raymond著)第十四章,对各种语言进行了评价,正好可以用来回答这个问题。下面是我的笔记,整理了六种主要计算机语言的优缺点。读完就会知道,对于不同的任务,应该选择哪一种语言了。

原文写于2003年。网上曾经有一个不完整的中译本,我也在这个网志中转贴过,所以今天贴的只能算修订版了。

====================

几种计算机语言的评价

作者:Eric Raymond

摘自《Unix编程艺术(第十四章)》

一、C

C语言的优点是,运行效率高和接近机器语言。它特别适用于以下几种程序:

  1. 对运行速度要求很高的程序。

  2. 与操作系统内核关系密切的程序。

  3. 必须在多个操作系统上移植的程序。

除此之外,学习C语言有一个最大的理由,那就是它能帮助我们学会,在硬件层次上考虑问题。如果你想以编程作为自己的人生事业,C是一定要学习的。

C的最大缺点是,在编程过程中,你不得不花很多时间,考虑与你要解决的问题完全无关、且非常复杂的硬件资源管理问题。

二、C++

C++在80年代中期推出,支持OO(面向对象编程),原意是作为C语言的取代者。

但是它没能做到做一点,原因有以下几个:

  1. 它也没有解决“内存管理”问题,虽然比C有所改善。

  2. 标准化不成功。各个编译器都只支持自己选择的一个子集,导致跨平台性不如C。

  3. 过分的精细和复杂了。C++的复杂度,超过了C和OO的复杂度之和。

  4. OO并没有带来多少优势,反而带来了一些副作用,比如厚重的胶合层和庞大的代码体积。

总的来说,C++的优势还是程序效率,以及面向对象编程能力,糟糕之处是它鼓励复杂的设计。

三、Shell

Shell程序写起来很容易,对于简单的任务,开发速度很快。

当程序变大时,它就不太适合了,很难维护,而且将变得非常专用(只能在你自己的机器上使用),因为 Shell必须调用各种外部程序,无法保证每一台机器都同样安装了这些程序。

最常见的Shell是bash,它的一些语法规则很混乱,会产生很难阅读的代码。另外,shell只能在Unix上使用,无法跨平台。

Shell的最佳用途如下:

  1. 执行简单的系统管理任务。

  2. 编写系统启动时的初始化脚本。

  3. 作为其他语言开发的程序的包装器。

四、Perl

Perl发布于1987年,基本上就是一个增强的Shell。

它的最大长处是强劲的文本处理能力,无以伦比的正则表达式支持,而且有全套Unix API的内部支持,显著减少了对C的需求。

Perl的主要缺点是某些部分设计得非常丑陋,且无法补救,某些部分也过于复杂。当程序规模增大时,必须严格遵守约定,才能保证模块化和设计的可控性,难于维护。

五、Python

Python发布于1991年,是一种与C语言紧密集成的脚本语言。

Python的优点是非常干净优雅,鼓励清晰易读的代码,易学易用;提供了面向对象编程的可能,但并不把这个选择强加于设计者;具有出色的模块化特性,同Java一样,适合用来做需要协同开发的大型复杂项目。在很多方面,它都比Java简单。此外,Python标准中包括了对许多网络协议的支持,因此也很适合网络管理任务。

Python的缺点主要是效率低下,速度缓慢。在执行速度上,它不仅无法与C/C++竞争,而且也不如其他主要的脚本语言。但是,这其实并不是一个严重的问题,有时网络或磁盘的延迟,会完全抵消Python本身消耗的时间。而且因为Python特别容易和C结合起来,因此性能关键的 Python模块,可以很方便地转化成C语言来提高速度。

总的来说,对于小型项目和大量依靠正则表达式的项目,Python不如Perl的表达能力强。至于更小的项目,Python则是大材小用,shell也许更适合。

六、Java

Java发布于1995年,设计目标有两个。

一个是“write once, run anywhere”(一次编写,到处运行),即不依赖于特定的平台;另一个是在网页中嵌入交互程序(applet),可以在任何一个浏览器中运行。由于它的所有者Sun公司的一系列失误,第一个目标并没有完全实现,第二个目标则是彻底失败。但是Java依然在系统编程和应用编程方面非常强大,足以挑战C和 C++。

Java的优点是比C++小巧简单,可以自动管理内存,支持类似C的语法和OO编程,与C程序的结合也很好。

Java的缺点是某些部分过于复杂,比如内部类和匿名类的运用会产生很混乱费解的代码;某些部分功能不完善,也无法利用操作系统提供的功能接口,比如在Java中读取和处理文本文件,并不像其他语言那样容易。此外,Java配置环境和版本的混乱,也让人很头疼。

总的来说,除了系统编程和某些对运行速度要求很高的编程之外,Java都是比C++更好的选择。如果和Python相比,Java可能在大型项目上有优势,但是也不是绝对的。

(完)

分享到:
评论

相关推荐

    深入理解计算机系统 修订版( 带目录高清晰版本)

    深入理解计算机系统 修订版( 带目录高清晰版本)

    JavaScript语言精粹 修订版 pdf

    JavaScript语言精粹修订版pdf是许多朋友都在寻找的一款学习资料,在这里能够为您详细的介绍JS这门计算机语言,作者从语法、对象、函数、继承、数组、正则表达式、方法、样式和优美的特性这9 个方面来呈现这门语言...

    计算机测试蓝本修订版i

    计算机测试蓝本修订版i是针对软件测试领域中一个重要的文档,它详尽地规划了测试活动,确保软件产品在各个阶段的质量控制。测试蓝本通常包括测试策略、测试计划、测试用例设计、测试执行和缺陷管理等多个关键部分。...

    JavaScript语言精粹修订版

    本书通过对JavaScript语言的分析,甄别出好的和坏的特性,从而提取出相对这门语言的整体而言具有更好的可靠性、可读性和可维护性的JavaScript的子集,以便你能用它创建真正可扩展的和高效的代码。 雅虎资深...

    JavaScript语言精粹(修订版)

    "JavaScript语言精粹(修订版)"是一本深入探讨JavaScript编程精髓的书籍,旨在帮助开发者掌握其核心概念、最佳实践以及常见陷阱。这本书对初学者和经验丰富的开发者都具有很高的价值,能够提升对JavaScript的理解和...

    全国安全文化建设示范企业评价标准(2020修订版).docx

    全国安全文化建设示范企业评价标准(2020修订版)是针对企业在安全生产和安全文化建设方面的规范性要求,旨在促进企业构建高效的安全管理体系,提高员工安全意识,预防和减少生产安全事故的发生。这一标准主要包括了...

    银行业金融机构消费者权益保护工作考核评价办法(修订版).pdf

    《银行业金融机构消费者权益保护工作考核评价办法(修订版)》是银监会为了评估和强化银行业金融机构在消费者权益保护方面的工作而制定的一项重要法规。该办法旨在确保金融机构依法合规经营,加强行业自律,落实国家对...

    计算机应用基础(2013年修订版).doc

    计算机应用基础(2013年修订版) 第一章计算机基础知识自测题 1.自计算机问世至今已经经历了四个时代,划分时代的主要依据是计算机的D.构成元 件 2.一般认为,世界上第一台电子数字计算机诞生于A.1946年 3.世界...

    JavaScript语言精粹_修订版.pdf

    JavaScript语言精粹_修订版.pdf

    SolidWorks PDM修订版的配置

    修订版号是用于唯一标识文件和条目版本的名称。 对于任何版本的文件或条目(在检入修改后的文件或条目时生成),都可以为其指派版本号;可在工作流程变换中自动指派,也可由拥有足够权限的用户手动指派。 使用修订版...

    JavaScript语言精粹 修订版

    JavaScript语言精粹 修订版

    JavaScript语言精粹.修订版 Javascript:The Good Parts 中英 pdf

    修订版",即《Javascript: The Good Parts》,是由知名的计算机科学家Douglas Crockford所著,这本书深入探讨了JavaScript的核心概念和最佳实践,为开发者提供了宝贵的洞察力。 书中的内容主要分为以下几个部分: ...

    JavaScript语言精粹 修订版 .pdf

    JavaScript语言精粹 修订版 .pdf

    统考计算机应用基础考试大纲及答案(2013年修订版).pdf

    统考计算机应用基础考试大纲及答案(2013年修订版).pdf

    奠基计算机网络修订版

    作者: 韩立刚 出版社: 清华大学出版社 出版年: 2014-7 页数: 363 定价: 49 装帧: 平装 ISBN: 9787302320432

    市级国土空间总体规划数据库规范(2022修订版)

    市级国土空间总体规划数据库规范(2022修订版)规定了市级国土空间总体规划数据库的内容,包括基础地理信息要素、分析评价信息要素和国土空间规划信息要素。 二、要素分类与编码 市级国土空间总体规划数据库规范...

    准女婿最终修订版 模板 准女婿最终修订版 模板

    准女婿最终修订版 模板准女婿最终修订版 模板准女婿最终修订版 模板准女婿最终修订版 模板准女婿最终修订版 模板准女婿最终修订版 模板准女婿最终修订版 模板准女婿最终修订版 模板准女婿最终修订版 模板准女婿最终...

    JavaScript语言精粹(修订版).epub

    JavaScript语言精粹(修订版).epubJavaScript语言精粹(修订版).epubJavaScript语言精粹(修订版).epubJavaScript语言精粹(修订版).epubJavaScript语言精粹(修订版).epubJavaScript语言精粹(修订版).epubJavaScript语言...

    计算机网络基础修订版ppt课件(完整版).pptx

    计算机网络基础修订版ppt课件(完整版).pptx

Global site tag (gtag.js) - Google Analytics