C,C++,java,python对比

 

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最精美之地方在,它鼓励清晰易读的代码,特别契合为稳中求进开发的艺术组织十分类型。其短在效率不愈,太慢,不但与编译语言相比慢,就是同其它脚本语言相比也显得慢。