现在用C ++编写哪些应用程序

时间:2009-08-12 02:59:27

标签: c++

使用RoR,Java,C#,PHP等。人们最近使用C ++的是什么?

14 个答案:

答案 0 :(得分:12)

您将苹果与橙子进行比较。 PHP,Ruby和Python等语言是脚本语言。它们a)被解释,并且b)不提供C ++所做的那种低级内存访问,因此不适合需要直接与硬件对话的东西。 Java和C#都在特定平台之上的运行时环境中运行,出于同样的原因并不总是最佳选择。在所有这些情况下,诸如垃圾收集之类的事情可能会妨碍速度和性能。

语言只是工具;你选择最适合手头任务的工具。仅仅因为更高级别的语言使特定应用程序域的任务变得更容易,并不意味着较低级别的语言不具备自己的位置。

答案 1 :(得分:8)

当用户体验比重要时,C ++是首选语言 开发成本。

  • 表现。当用户的时间足够宝贵,可以花费一些额外的开发时间。
  • 稳定性。其他语言可能会快速提升下降质量。   但如果你想要它完美无缺,C ++是一个更好的选择。和c ++一样,它们都是   更容易让它完全错误,完全正确,取决于你的技能和时间。
  • 易于使用。您可以提供适用于任何地方的单个二进制文件没必要   对于没有经验的最终用户来说,安装运行时和安装   解释员,担心VM版本和GC调整。
  • 用户资源。仅仅因为用户有2GB的ram并不代表她   希望我们的程序能够全部使用它。
  • 可用性。如果您需要专门的非标准简化用户界面。

  • 答案 2 :(得分:5)

    到目前为止,似乎忽略了一些已经存在大量C或C ++代码库的项目。大多数编程工作都不会用于创建全新的程序。如果你真的很幸运能够完全创造 de novo ,那很好,但这不是常见的情况。

    当然,可以混合语言,因此您可以使用其他语言编写的其他代码来使用旧的C ++核心程序。但是,由于多种原因,这并不容易:

    1. 语言本身之间的阻抗不匹配。尝试将C ++ std :: multiset发送到Perl。它有点像一个关联数组,但不是真的。您最终使用最低公分母数据结构,避免任何仅针对两种语言之一的特定结构。然后,您会失去通过混合语言尝试获得的一些功能。

    2. 您必须花费大量精力在程序的两个部分之间定义某种API。大多数程序尚未构建为具有此类图层。重构和打包旧的核心功能以提供这一点并不容易,并且随着程序范围的扩大,它正在进行中。

    3. 您必须将其他语言的解释器集成到旧的C ++核心中,或者您必须将其作为单独的程序运行并安排这两个不同程序之间的协调。他们必须一起启动和关闭,他们必须维护他们的IPC频道等。

    4. 克服了以上所有困难,您经常会发现自己需要为程序的两半编写代码。当你的大脑在两种语言之间转换一种心理背景时,你总会有一些延迟。它永远不会下降到0延迟。这吸收了高级语言的一些优越的生产力。当在高级代码中处理需要向旧C ++核心添加内容的新功能时,这尤其糟糕,因此您不断在两者之间反弹。它可以做到,但这会拖累生产力,这是转换到其他语言的主要优势。

    答案 3 :(得分:4)

    我认为C ++最常见的两种用法是图形界面和视频游戏编程。

    答案 4 :(得分:4)

    几乎桌面上的所有内容(paint.net除外)

    服务器上RoR,php等运行的所有内容(任何无法编写自己编译器的语言都可能用C ++编写)

    嵌入小于iPhone的任何东西

    任何有大量计算的东西 - 这不是在Fortran中;-)是的,我知道C#性能有所提高,任何人都可以重写LAPACK,BLAS或NAG吗?

    编辑 -
    大多数评论都有徽章吗?

    这就是SO不适用于讨论的原因。请注意,评论的顺序在投票时会发生变化。如果你想要幼稚的争论,总会有reddit。

    答案 5 :(得分:3)

    任何表现都是高优先级的事情。垃圾收集,HTML渲染,动画,游戏,密集计算......

    答案 6 :(得分:2)

    从个人经验来看,计算机辅助设计(CAD)插件/插件也是C ++,特别是如果你想要定位多个CAD系统(例如Pro / Engineer,SoludWorks,CATIA,UG,AutoCAD等)。

    答案 7 :(得分:1)

    其他语言出现了。许多曾经使用过C ++的人不仅仅是用Java或C#来加入。 Linux本身就很好而且很好,但大多数计算机市场仍然属于邪恶帝国。 Java并不是那里的主要语言,无论重复的zelots声称它是多少。实际上在小型企业应用程序中,VB是王道。我想我看到一个数字为GUI前端提供了58%的内部开发。 C#正在增强势头,但我怀疑它主要来自年轻人群,他们在那里设置较少。你可以争论到你的蓝色面对一种新语言的美德与一直使用一种语言15年的人,他们只是不在乎。 “哦,那很整洁。”然后他们回过头来继续输入他们的C ++。

    编辑:

    OS开发,C可能是C ++。

    工具& Langauge开发,C可能是C ++。

    工业控制,C,C ++,某些案例的Labview,FPGA开发和非流行语言。

    嵌入了大量的C,一些C ++和一些程序集。

    (iPhone是一台通用掌上电脑,具有电话功能。不是特别的    专为单一目的而设计的专用计算机。)

    需要PS3 C,C ++和一些程序集。

    XBox360一些C#,主要是C ++和一些C,还需要一些程序集。

    GPU编程?对于DAMN来说,这不是PHP。

    Windows编程C ++,C#,甚至还有一些C仍然是VB。

    编辑:

    @Jeff L: 随着许多这些语言的崇拜,我觉得非理性和令人反感。我开始逐渐远离那些对任何语言都充满诗意的人,这只是精神上的。专业销售的应用程序不是用Java编写的,这不是一个观点,这是事实。对不起,但这是真的。也许在IT世界中它很有用,但不适用于收缩包装的Windows软件。我编写嵌入式软件,并且没有指针的“功能”意味着为了在那里或在操作系统和设备驱动程序上进行任何实际工作,需要违反其自身语言的黑客。在某些情况下,您必须“无网上飞行”,并且解释性语言的设计特别是不允许您这样做。

    不要过于争论,但遗产代码库是一个难以解决的问题。当我们用C和C ++编写新代码时,我甚至无法获得管理PAY来将用Fortran或Ada编写的旧代码升级到C或C ++,忘记需要全新编码标准的Java,并且需要更新对接程序和文档,这花费更多。除非您编写的唯一软件是GPL和免费软件,否则为此付费的是主要关注点。并且在许多情况下“如果它没有破坏不修复它”甚至不适用,“如果它破了,没有人婊子,我们不付钱修理”是管理层的选择。

    答案 8 :(得分:1)

    项目的后端。许多项目都是用多种语言编写的,其中所有后端操作都是用C ++编写的,其中提供了其他语言的API。

    我能想到的最好的项目是GNU Radio。基本上,GNU Radio的工作原理是所有DSP模块(调制器,滤波器等)都是用C ++编写的。但是,你使用python创建你的无线电,就是你在python中连接块。

    答案 9 :(得分:1)

    • 任何需要直接硬件访问的项目,如驱动程序,操作系统
    • 任何具有更好性能的竞赛优势的项目,如游戏,模拟
    • 任何需要占地面积小的项目,如嵌入式系统

    答案 10 :(得分:0)

    查看点击模块化路由器。完全用C ++编写(必要时带一些C)

    答案 11 :(得分:0)

    许多微型ISV(热情地)使用C ++几乎可以想到任何东西。

    不是定期维护,而是使用C ++ Builder编写的here is a list个应用程序。看到WinRAR和Partition Magic,我感到非常惊喜。

    答案 12 :(得分:0)

    我刚刚采访了一家拥有使用VS5.0的C ++程序的公司,因为他们一直在计划逐步淘汰C ++应用程序,因此不需要更新。 12年后你会发现他们只会升级他们的编译器。

    如果你想使用DirectX,你必须立即使用C ++,因为MS不再支持Managed DirectX API。

    如前所述,在嵌入式世界中,C ++或C是主要语言。

    如果您在一个无法崩溃的系统中工作,那么您可能会使用C或C ++而不使用new或malloc,但使用数组,这样您就不会有任何内存泄漏,这可能是一个长时间运行的过程可能会耗尽内存并崩溃。

    如果你要进行大量的内核级编程,那么C或C ++会更有意义,因为有一些函数需要调用,例如从C#调用是非常困难的。

    答案 13 :(得分:0)

    我们用c ++做这些项目:

    • 模拟
    • 游戏
    • GIS工具

    如果你需要性能,你应该使用c ++ ...