使用C、C+的示例应用程序和好处+;还是Java

使用C、C+的示例应用程序和好处+;还是Java,java,c++,c,Java,C++,C,好的,我正在为即将到来的CS课程二年级考试复习,很可能会出现类似的情况。我的问题是,哪种理想的应用程序会特别受益于这三种语言的程序特性?我有一个模糊的想法,但得到第二个意见真的很有帮助 Java可移植性,简单-适用于GUI。 C++速度快,但可能需要进行重大更改才能从一个系统移动到另一个系统,有利于图像处理。 C我不确定这里是否有小型嵌入式应用程序? P.>对此,我们将非常感谢,再次感谢StAdvOpt4./P>< P>。我不太清楚java UI的优势,因为C++有QT。但除此之外,Java

好的,我正在为即将到来的CS课程二年级考试复习,很可能会出现类似的情况。我的问题是,哪种理想的应用程序会特别受益于这三种语言的程序特性?我有一个模糊的想法,但得到第二个意见真的很有帮助

  • Java

    可移植性,简单-适用于GUI。

  • C++

    速度快,但可能需要进行重大更改才能从一个系统移动到另一个系统,有利于图像处理。

  • C

    我不确定这里是否有小型嵌入式应用程序?


<> P.>对此,我们将非常感谢,再次感谢StAdvOpt4./P>< P>。我不太清楚java UI的优势,因为C++有QT。但除此之外,Java在可移植性方面非常好。现在使用JavaFX,Java对于RIA和专有系统也是一个很好的选择。而且,实际上,java比C++更容易。p>
我也认为C主要用于嵌入式系统,一般来说,在一些地方,你需要做一些关于硬件的事情。

Java真正的元素是web应用程序。由于JIT编译器的发展,现在它的速度通常与C++的速度相当。 我相信标准C++在跨平台上是相当便携的,麻烦是在你想要使用那些从来没有标准化的东西的时候出现的。我想到的最大的一个问题是线程

此外,要制作一个高效、快速、优雅的C/C++程序,您需要大量的技能和经验。缺少这些,您很容易生成效率低下、有缺陷和丑陋的C/C++程序。这并不是说你不能用java(或者任何编程语言)来实现这一点,但是在C++和C++中犯的错误比java要致命得多。 C用于靠近金属的地方,和/或性能和效率是最高要求的地方,包括操作系统内核和设备驱动程序。

  • Java——具有良好的可移植性。内置垃圾收集
  • C++--适用于CPU密集型应用程序,这将大大受益于OOP
  • C -对内核、驱动程序和嵌入式工作(包括C++也看到更多的动作)的低级工作很有帮助

至少在我的经验中,比较C++和java是很困难的,因为它们遵循的模式不同。以一种有意义的方式比较它们的几乎唯一方法是绘制代码复杂度与程序“大小”的关系图:

黑线= C++,红线= java。 特别是如果你主要着眼于一些小的项目,C++看起来几乎是不可能的——添加一些特征是一项很大的工作,并且给代码增加了很多的复杂性。这是(特别是)在一个阶段,你们所做的几乎每件事都意味着寻找、建造、学习等等,另一个图书馆通常是独立于其他图书馆的

对于这种规模的项目,Java通常更具吸引力——它附带了一个更大的标准库,它(大部分)遵循大致相似的风格,因此您对一个部分的了解可以很好地扩展到其他部分。您还可以得到垃圾收集之类的东西,因此您的内存管理往往相对简单

对于更大的项目,情况正好相反——操作符重载使一些库很难学习,一旦您知道如何使用,也会使它们更易于使用。类似地,这些模板确实很难让您理解,它可以让您在不使用新代码的情况下解决范围更广的问题。您将学习如何应用RAII来简化几乎所有资源的管理,而不是通过垃圾收集来简化内存管理

不幸的是,通常很难估计任何特定项目在水平轴上的位置。更糟糕的是,除非它真的接近交叉点,否则两者之间的差异通常不是10%或15%——更可能是2:1或3:1。在许多情况下,选择是巨大成功和可怕失败之间的区别

尽管如此,我认为你的大部分评估基本上是错误的

可移植性:几乎是全面的。不像大多数人认为的那样,用C或C++几乎不难,也不(很不幸)几乎和java一样容易。

GUI:Java使GUI变得简单——丑陋且无响应。Qt(举个例子)具有大致相同的可移植性,只需要稍微多做些工作,但效果要好得多

速度:很少有理由选择一个而不是另一个。是的,C++通常会获胜,但对于大多数应用程序来说,它不会有任何真正的区别。 就C而言,是的,它对较小的嵌入式系统很有用。它的主要优点是最小化了获得一个工作系统所需的环境框架。C++的使用量大了很多,Java也大为增加了(虽然这一点在现有环境中已经存在,比如java在java手机上)是无关紧要的。

UL>
  • C:设备驱动程序和其他低级的东西
  • C++:不需要的应用程序 想要通过不得不 安装运行时环境
  • C/C++:实时应用程序;或者 程序运行时不可用的情况 非常短(C/C++程序) 在启动jvm之前终止 完成);在内存不足的情况下 足迹必须很小
  • Java:在几乎所有其他情况下 (没有提供更合适的域 存在特定语言);可移动的 应用;网络(特别是在网络上) 服务器)
  • java的性能不再是一个问题。它至少与C++相媲美,在很多情况下它甚至优于C++。我们在java中重新实现了大量的压缩应用程序,它运行的速度比C++中实现的旧程序快了一个数量级。令人惊讶的嗯,我想主要的