`
329937021
  • 浏览: 124291 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C,C++,java,python对比

阅读更多
以下是我在CSDN上看到的一篇文章:

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

分享到:
评论

相关推荐

    5、六种主流编程语言C++、PYTHON、JAVA对比.pdf

    C++、Python和Java是目前主流的编程语言,在软件开发领域中被广泛使用。它们各自有着不同的特点和适用场景。C++具有较强的性能和效率,适用于系统底层开发和游戏编程;Python则以其简洁性和强大的库支持著称,在数据...

    C++,C#,Java,Python实现简单的图形用户界面的区别和方法

    ### C++、C#、Java、Python 实现简单图形用户界面(GUI)的区别与方法 #### C++ 在C++中创建图形用户界面(GUI),主要依赖于Microsoft Foundation Classes(MFC)。MFC作为一套用于Windows应用程序开发的类库,...

    c,c++,java,python对比(最新可编辑文档).doc

    c,c++,java,python对比(最新可编辑文档)

    python 优缺点和java与python的jar

    5. **可扩展性**:如果需要一段运行速度快的关键代码,可以编写C或C++模块,然后在Python程序中调用。 6. **面向对象**:Python支持面向对象的编程方式,允许创建类和对象,实现封装、继承和多态。 **Python的缺点...

    文本对比工具

    总之,无论你是Java、C/C++还是Python开发者,掌握一款高效的文本对比工具都将极大地提升你的工作效率,帮助你找出隐藏的错误,实现代码的高质量维护。在日常编程工作中,别忘了善用这一强大的助手。

    golang、python、php、c++、c、java、Nodejs性能对比

    本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不得不用神奇的斐波那契算法。可能是比较常用或好玩吧。  好了,talk is cheap, show me your code! 打开Mac,点开...

    一个存储库算法在C C Python和Java.zip

    标题 "一个存储库算法在C C Python和Java.zip" 提示我们这个压缩包包含了一些关于在C、C++、Python和Java编程语言中实现的算法。这些算法可能涵盖排序、搜索、图论、数据结构等多个领域,是学习和比较不同语言处理...

    Python与Java对比学习笔记.pdf

    4. **可扩展性**:如果需要提高性能,Python可以与C或C++等编译型语言结合,编写关键模块,实现效率与灵活性的平衡。 5. **可嵌入性**:Python可以嵌入到其他C/C++程序中,作为脚本语言使用,提供动态扩展功能。 6...

    通过实例浅析Python对比C语言的编程思想差异

    我精通命令式语言,如 C 和 C++。对古老经典的语言如 Lisp 和 Prolog 能熟练使用。另外,我也用过 Java,Javascript 和 PHP 一段时间。(那么,学习) Python 对我来讲不是很简单吗?事实上,只是看起来容易,我给...

    zeroc ice教程 ice环境配置 Ice中文教程 C++ ICE java ICE ICE入门 ice基础教程 ice开发文档

    Zeroc ICE是一个开源的中间件平台,它支持C++、Java、Python、.NET等语言的分布式对象通信。ICE全称Internet Communications Engine,即互联网通信引擎,是一种用于开发分布式计算应用的强大工具。本文档主要围绕ICE...

    Python和Java的语法对比分析语法简洁上python的确完美胜出

    相比之下,Java 使用大括号 `{}` 来划分代码块,更符合传统编程语言的规范,对于习惯 C/C++ 风格的开发者可能更为友好。 Python 支持动态类型,变量声明时无需指定类型,而 Java 是静态类型的,变量必须先声明类型...

    Java和python两种语言哪个更好.docx

    - **历史背景**:Java源自C和C++的技术体系,于1995年由Sun Microsystems发布,主要面向专业的程序员,用于设计大型复杂的分布式应用程序。 - **应用特点**:Java以其跨平台特性(一次编写,到处运行)而闻名,适用...

    Python入门教程超详细1小时学会Python_犀牛基础教程详细版.docx

    这里通过对比不同编程语言(如Java、C/C++)来演示Python在解决这类问题时的优势。 - **Python的优势**: - **简洁性**:与Java相比,Python的语法更加简洁,减少了不必要的代码行数。例如,在执行ping命令时,...

    廖雪峰python教程(word版)

    对于移动应用开发,Python不是首选,Objective-C和Java更适合iOS和Android平台。在3D游戏开发中,C或C++更常见,因为它们更接近硬件,能够提供更高的性能。 【Python的哲学】 Python的设计哲学强调代码的可读性和...

    Python代码一键转Jar包及Java调用Python新姿势

    助推了python这门曾经以爬虫见长(python粉别生气)的编程语言在TIOBE编程语言排行榜上一路披荆斩棘,坐上前三甲的宝座,仅次于Java和C,将C++、JavaScript、PHP、C#等一众劲敌斩落马下。 当然,轩辕君向来是不...

    C++面经整理发布版.pdf

    本篇面经整理发布版涉及到C++语言的基础知识点,如指针与引用的区别、参数传递方式的选择、内存管理机制、C++与C的区别、C++中的构造与析构、以及C++与其他编程语言的对比等。下面详细阐述这些知识点。 首先,指针...

    python入门培训

    - Python不适合用来编写内核程序,而是可以通过C或C++对Python进行扩展。 - **Python与Java的对比:** - 两者都是动态编译语言。Java同样支持面向对象编程,但Python更加简单,适合构造快速原型。 - Python和...

Global site tag (gtag.js) - Google Analytics