【问题标题】:in which area is c++ mostly used? [closed]c++主要用在哪个领域? [关闭]
【发布时间】:2010-12-05 17:15:57
【问题描述】:

我的后辈们多次向我询问 C++ 广泛使用的领域。我通常回答操作系统。是否还有其他广泛使用的领域?

【问题讨论】:

标签: c++


【解决方案1】:

可以在Bjarne Stroustrup's homepage 找到用 C++ 编写的相当大且可能相当明确的软件列表。

【讨论】:

    【解决方案2】:

    大多数防病毒软件都是用 C++ 编写的

    【讨论】:

      【解决方案3】:

      在遗留代码中...

      甚至 Stroustrup 也承认 C++ 有很多错误,大部分是从 C 继承而来的。 这就是开发 C++0x 的原因。

      【讨论】:

      • 虽然我不确定 C++,但 C 广泛用于 OSS 世界和 GNU/FSF 世界。即使在今天。所以调用 C 或 C++ 遗留代码是不太正确的。
      • 有很多新的 C++ 项目一直在启动。我从事运动控制工作,我们使用 C++ 比任何其他语言都多。 -1
      • 我喜欢遗留代码,它具有无与伦比的古色古香。
      • 通过上面的答案证明你错了。
      • 我自己用C++写的,不代表它的主要用途不是遗留代码,只是说明遗留代码太多了:-)
      【解决方案4】:

      任何基于Qt 的应用程序都将使用它,因为 Qt 是用 C++ 编写的。

      此外,由于KDE 基于 Qt,因此几乎整个桌面环境(包括设计用于在其中工作的应用程序)都是用 C++ 编写的。

      【讨论】:

      • 有 PyQt,它为 python 带来了 Qt。 (还有另一个完全开源的 Python 桥Qt 正在开发中,但我忘记了它的名字)
      【解决方案5】:

      我已经看到 C++ 在 GUI 中被大量使用,因为面向对象的特性对于“小部件”来说有点自然。

      我曾经看到它用于飞机的安全关键代码。这仍然让我做噩梦。

      【讨论】:

      • 我在一些地方看到过 C++ 代码也会让大多数人做噩梦 :-)
      【解决方案6】:

      C++ 和 C 在嵌入式系统中被大量使用,因为人们可以对内存和其他稀缺资源进行确定性控制。我认为大多数游戏(至少我玩的游戏)仍然是用 C++ 编写的,可能是因为存在用 C++ 编写的大型框架,这些框架已经过全面测试并且非常强大。

      【讨论】:

      • 因为游戏还需要对内存和系统资源进行确定性控制。它们对性能也很重要,因此即使是比 C++“只慢 10%”的语言也是不可接受的(除非您对屏幕上的内容少 10% 的游戏感到满意)。
      • 玩 Freecell 时屏幕上的内容减少 10% 糟透了 - 我会少 5.2 张卡片!
      【解决方案7】:

      考虑一下:从 MFC 的引入到 .NET 框架的引入,C++ 是 Windows 开发的首选语言。所以这应该告诉你一些事情。微软更喜欢它,也就是说,许多开发人员仍然更喜欢它而不是 .Net 语言。

      C++ 是一种能够进行系统级编程的语言,而且由于提供了广泛的库,它也用于应用程序编程。我猜你的台式机上运行的几乎所有应用程序都是用 C++ 编写的。

      如果您可以为任何东西获得一个库,那么您几乎肯定可以为 C++ 获得它。

      广泛应用于游戏行业,并在一定程度上应用于嵌入式系统领域。

      所以我会说 - '无处不在'。毕竟它是一种“通用”编程语言。

      【讨论】:

        【解决方案8】:

        操作系统中的 C++:据我所知,没有内核(真正完成所有令人讨厌的工作,如内存管理和驱动程序的核心部分)是用 C++ 编写的,只有 C。Linux 是用 C 编写的,Windows 也是如此。

        请看这里: What Languages are Windows, Mac OS X and Linux written in?

        如今的应用程序(构成操作系统的非内核部分)是用最适合这项工作的任何语言编写的。

        如果以下内容对您很重要,您会选择 C++:

        • 您想大量使用类和继承
        • 您只打算在一个操作系统上工作
        • 您需要合理的性能
        • 您的开发人员已经了解 C++
        • 您希望将类似组件的工作分配给不同的人或团队(您可以每次给一个类或接口来实现)

        您可以使用 C 完成以上所有操作,平台之间的可移植性仍然是一个问题(C++ 与大多数 C 一样特定于平台)在 C 中,您必须更加严格地利用静态和动态分析工具。在 C 中泄漏内存也比在 C++ 中更容易。

        【讨论】:

          【解决方案9】:

          C++ 也大量用于实时金融市场数据软件。这里的延迟非常重要。 C++ 是不错的选择,因为它几乎是最接近金属的。

          【讨论】:

            【解决方案10】:
            • 已经用 c++ 编写了几个主要的操作系统
            • 不妥协的低级效率对于 C++ 至关重要。这允许我们使用 C++ 编写设备驱动程序
            • 许多数值、科学和工程计算都是在 C++ 中完成的。
            • 图形和用户界面是大量使用 C++ 的领域。
            • C++ 广泛用于教学和研究
            • 游戏

            【讨论】:

            • 唯一用 C++ 编写的操作系统是 BeOS。其余的可能在少数地方使用 C++,但主要使用纯 C。
            【解决方案11】:

            数值计算:物理、图形游戏、金融、统计;

            比特摆弄:驱动程序、操作系统、网络、嵌入式设备;

            任何需要精确控制内存分配的地方。

            【讨论】:

            • 大错特错。我记得一些代码,我有点想知道为什么一个大的正整数 * 另一个大的正整数 == 一个小的负整数。去搞清楚。几乎任何数值计算都需要 C++ 中的专用库。
            • 所以您是说 C++ 不用于物理、图形游戏、金融和统计?那好吧!
            • 好名单。 “嵌入式设备”应该完成列表(尽管现在许多此类应用程序都尽可能使用 java,但确实发明了 java 是为了使此类嵌入式应用程序更可靠,因为这些应用程序通常不容易更新)
            • @Aviraldg 数值计算库在 C 中的事实似乎加强了 Kinopiko 列表的有效性,而不是让它变得如此“错误”......?
            • @Aviraldg - GNU MP BigNum 据称有一个非常好用的 C++ 包装器。 C++ 允许您将 C 的强大功能与一些细节(例如运算符重载)相结合,这将使使用 GMP 的代码比查找所有 mpz_do_crazy_stuff() 函数更容易使用和理解。
            【解决方案12】:

            目前它用于游戏开发和性能关键应用程序。但是,有很多用 C++ 编写的旧东西,大多是在引入 Java 和 .NET 之前编写的,这些代码仍然需要维护。

            【讨论】:

            • 不一定是在引入 Java/.NET 之前,而是在 Java/.NET 发展到可用效率之前。
            【解决方案13】:

            实际上我不会说操作系统。 Linux 和 Windows 内核主要是 C,只有用户态的东西是 C++(当然,驱动程序可以用任何东西编写)。我不确定 Mach (OS X),但如果它也主要是 C,我不会感到惊讶。

            C++ 填补了“面向对象,但对于 80 年代末和 90 年代初的小型计算机来说足够快”这一美妙的缺口。因此,在 90 年代编写的任何东西都很有可能用 C++ 编写。应用程序、驱动程序、游戏等等。

            今天,新的开发似乎主要使用托管 (JVM/.NET) 语言完成。并不是说没有任何新的 C++ 开发;尤其是游戏,在许多情况下,性能仍然有限,无法使用 C++。

            简而言之:

            1. 驱动程序
            2. 游戏
            3. 遗留代码

            【讨论】:

            • 虽然我不确定 C++,但 C 广泛用于 OSS 世界和 GNU/FSF 世界。即使在今天。所以调用 C 或 C++ 遗留代码是不太正确的。
            • Mac OS X 基于 FreeBSD,它是用 C 编写的。如果有的话,OS X 的家伙用 Objective-C 编写了他们需要的面向对象的东西。
            • C 无论如何都不是遗留的。另外,我所说的遗留代码是指任何已经写好的。它不需要是古老的,只是现存的。自然,对现有代码的添加将倾向于使用相同的语言;同样,我将此类开发归类为遗留系统。
            • @Kevin:除了 GNU 人对 C 的偏见之外,这表明了什么?鉴于 Linus Torwalds 对 C++ 的一些(令人尴尬的错误)批评,我为什么不奇怪呢?然而,最好的 C++ 编译器之一(甚至可能是最广泛使用的编译器)来自 GNU 人。
            • @sbi:我不确定你来自哪里。 C 是所有现代操作系统中用于开发的 语言,仅此一项就将其定义为现代。它也仍然是计算机科学的“通用语”之一。 C++ 在 20 年前是一个很好的工具,并且从那个时候开始一直在项目中使用。我认为更好的工具已经出现,取代了 C++。这与 Linus 或 gcc 有什么关系?
            【解决方案14】:

            它用在你发现它解决你的问题效率的地方。编译器,编写驱动程序...

            【讨论】:

            • 如果你真的想要效率,那么你会想要使用 C。与 ASM。
            • @Aviraldg - 我什至不是 C++ 用户,你错了。在 C++ 中有些东西实际上效率更高,随着编译器越来越好,C 和 C++ 之间的差异会缩小。游戏(一个需要高效率的领域)长期以来都是用 C++ 编写的。如果您知道自己在做什么,您可以(仅)在任何语言中获得效率。
            • 您不会选择 C++ 以获得最大效率。可能是最高效率和最低程度的可维护性。
            • @Aviraldg:在 C++ 中没有什么比 C 本身效率低的了,除了许多程序员对语言了解太少,不知道单个特性的成本以及何时以及如何将它们应用于某些问题.如果您需要多态性,在 C 中经常进行类型枚举的切换通常不如 C++ 的虚函数有效(并且使用函数指针 is 虚函数 - 只是没有编译器支持)。当你想做数值应用时,C++ 可以像 FORTRAN 一样高效——只有代码更具可读性。请参阅 >10 岁的 blitz++。
            • @Aviraldg Games 使用 C++ 是因为它速度很快,这不仅归功于 OOP,而且它确实发挥了作用。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-08-31
            • 2011-07-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多