• C、C++、java的区别


    经常听到有人在抱怨这个语言哪里哪里 不好,那个语言又是如何的优秀。对于这样 的牢骚,我只是一笑而过。 就我而言,语言只是工具,没有好坏之 分。只要你采用相应的语言,完成对应的工 作,那你的目标就完成了。我们无需抱怨这 种语言的缺点,而是应该抱有接受的态度。 任何语言的存在都有它的合理性,如果不合 理是不会经受住时间的考验的。世间之物都 具有双面性,只是看利多还是弊大。如果一 个东西是十全十美的,那我毫不犹豫的告诉 你,一种情况是它不存在,另一种情况是你 还没发现它的缺点。 每种语言都有自己得天独厚的优势,当 然缺点同时伴存。

    C语言是计算机界的常青 藤。C语言执行效率高,用于写底层的驱动 那是再适合不过。指针是C语言的精华。而 C++是很强大的,只要你是个高手,你几乎 可以利用C++完成任何事情。当然虚函数是 C++的精华。Java取消了指针,这是应该喜 还是忧。喜的是,没有C或者C++那种对内 存繁琐的操作,而且也降低了很多致命性的 错误发生的概率。忧的是,效率大打折扣, 采用虚拟机的方式使得Java有跨平台的特 性,必然会使得效率降低。另外一个方面, 你借别人的东西使用(内存),是不是应该 还回去呢?从这一方面考虑,C或者C++的 设计思想更有意义。经常关注TIOBE世界编 程语言排行榜,Java已经有很久排名第 一,我觉得这样的排名只是看看而已,无需 过多的信奉。

    下面看看几种主要语言的优缺点。

    C语言

    C语言的优点:

    1.简洁紧凑、灵活方便

    2.运算符丰富

    3.数据结构丰富

    4. C是结构式语言

    5. C语法限制不太严格,程序设计自由度大

    6. C语言允许直接访问物理地址,可以直接 对硬件进行操作

    7. C语言程序生成代码质量高,程序执行效 率高

    8. C语言适用范围大,可移植性好

    9. C语言有一个突出的优点就是适合于多种 操作系统,如DOS、UNIX,也适用于多种机型

    10.有效地将一个较复杂的程序系统设计任 务分解成许多易于控制和处理的子任务,便 于开发和维护

    C语言的缺点:

    1. C语言的缺点主要是表现在数据的封装性 上,这一点使得C在数据的安全性上做的有 很大缺陷,这也是C和C++的一大区别。

    2. C语言的语法限制不太严格,对变量的类 型约束不严格,影响程序的安全性,对数组 下标越界不作检查等。从应用的角度,C语 言比其他高级语言较难掌握。

    3.可重用性差

    4.数据安全性差

    5.难以开发大型软件和图形界面的应用软件

    6.把数据和处理数据的过程分离为相互独立 的实体

    7.当数据结构改变时,所有相关的处理过程 都要进行相应的修改

    8.每一种相对于老问题的新方法都要带来额 外的开销

    9.图形用户界面的应用程序,很难用过程来 描述和实现,开发和维护也都很困难

    C++

    C++优点:

    1.可扩展性强

    2.高效 简洁 快速

    3.可移植性

    4.面向对象的特性

    5.强大而灵活的表达能力和不输于C的效率

    6.支持硬件开发

    7.程序模块间的关系更为简单,程序模块的 独立性、数据的安全性就有了良好的保障

    8.通过继承与多态性,可以大大提高程序的 可重用性,使得软件的开发和维护都更为方便

    C++缺点:

    1.比较底层,易用性不是很好

    2.多重继承和友元机制

    3.标准库涵盖范围不足

    4.开发周期长

    5.非并行

    6.掌握有难度

    7.粒度封装不够

    Java

    Java的优点:

    1.简单性

    2.面向对象性(面向对象的程度可以达到 95%)

    3.健壮性

    4.跨平台性

    5.高性能(自动垃圾回收机制)

    6.多线程

    7.动态性

    8.安全性

    Java的缺点:

    1.效率低(毋庸置疑)

    2.跨平台是它最大的优点也是最大的缺点

    3.复杂性(做一个项目需要很多的知识,涉 及面广)

    很多时候,一种语言的优点很可能是它 的缺点,缺点又可能是它的优点。这主要看 你是从哪方面去考虑。这就印证了那句话, 凡事没有必然。 不管是哪种语言,就像文章开头所言, 只要你采用他达到你想要的,那就成功了。 无需过多在意它的缺点,更无需赞扬它的优 点。所以网上那些关于哪种语言更好的口水 仗,我只能说这样的争斗毫无意义。 语言只是工具,没有好坏之分。

  • 相关阅读:
    一些关于"虚拟交易"的有趣文章
    Windows中的消息队列:Message Queuing (MSMQ)
    ATLStyle模板 不用虚函数实现多态
    AIX 下获取系统CPU及内存的使用情况方法
    关于HPUNIX C 兼容性
    Android进阶Acticivity的启动模式
    ViewState & UpdatePanle & ReadOnly属性
    由网站构架演变说起
    '操作必须使用一个可更新的查询'解决方法
    ScriptManager & ClientScriptManager
  • 原文地址:https://www.cnblogs.com/tswcypy/p/4500652.html
Copyright © 2020-2023  润新知