C ++在哪里真正发光?

时间:2010-06-06 12:27:36

标签: c++

我知道C和Python,我正在转向另一种语言用于学习目的。我的问题是我喜欢用有事做的东西来学习(例如为一些项目做贡献或做一些令人惊奇的事情,而不是无聊的普通代数)。

我想听听有关C ++闪耀的领域以及我可以在哪里找到有趣的C ++编程的建议。 (对于字段,我的意思是网络/ GUI编程/算法/游戏......)

我确认我对开源项目/开发感兴趣。

9 个答案:

答案 0 :(得分:12)

在我看来,C ++真的很闪耀,只是我还没有找到一种能让我获得自由的语言。

  • C ++生成极其紧凑和快速的代码,因此适用于大多数任务,能够在一些汇编代码中无缝修补不够快的小部件。将C代码挂钩到Python中以获得性能并不是那么容易。
  • C ++允许我从多种编程范式中进行绘制:元编程,面向对象编程,函数编程;它们是可用的,我不需要尝试模拟它们中的任何一个来使算法起作用。
  • C ++允许我使用RAII(保证处置)和Pimpl(二进制兼容性,编译器防火墙)习语的优点来编写特别合理且可维护的代码。
  • C ++允许我选择何时支付某些费用以及何时不支付。
  • C ++允许我使用许多现有的库,并借鉴经验和工作。全世界成千上万的程序员它需要一些搜索,因为它们没有与编译器捆绑在一起,但是Boost使这些日子变得更容易,毕竟还有谷歌:)

当然存在一些缺点,你获得的自由越多,你就越有可能自己上吊(或者像流行的比喻一样射击自己的脚)。但是在这么自由之后,我发现自己难以用另一种语言编程。

到目前为止,C ++是我觉得受限制较少的语言,因此尽管存在许多缺陷,但我更喜欢编程的语言。

答案 1 :(得分:9)

我将分享我使用该语言的哪些字段以及为什么我使用该语言而不是其他语言。也许你可以决定我的理由是否有资格作为“闪耀”。

哪些字段:

设备驱动程序,文件系统驱动程序,GUI开发,算法模块,协议和通信,应用程序框架,数据操作,存储处理程序,系统仿真。

为什么:

  1. 我想编写可在广泛的规模架构中移植的代码。从小型16位嵌入式系统到大型企业平台。这是因为我不喜欢一遍又一遍地解决同样的问题。与其他任何OO语言相比,C ++编译器可用于我所针对的更多平台。我确实在非常小的(即8位)系统上失去了这种能力,但我不再花太多时间在那个空间。

  2. 可以编写系统代码(即设备驱动程序,FS驱动程序等),因为它们需要编译为本机代码的语言。通过仔细选择语言功能和使用的库,它几乎可以像C一样紧凑。

  3. 在编译语言中广泛使用,因此可以利用同行经验以及可用的库和源代码。

  4. 长期执行运行(数月到数年)的确定性和可预测行为,因为可以根据应用程序的需要仔细选择内存管理方案。

  5. 对我的客户的可接受性。他们确信这项工作是可维护的,因为市场上有大量的开发人员。

  6. 我希望这有点帮助。

答案 2 :(得分:5)

IMO,C ++的最大优势是能够在几乎任何抽象级别上工作。许多语言提供(或多或少)单一抽象级别。通常很难“下降”到较低的抽象层次(根本)。虽然您可以构建更高级别的抽象,但很少有语言提供了让这些部分与其他语言一起使用(或类似)的工具。这可以导致单独的精细和明智的“碎片”,但仍然难以组合成一个保持连贯的完整程序。

我能想到的唯一一种在这方面具有大致相似能力的其他语言是Ada 95.在某些方面,它的能力(理论上)更优越。例如,它支持更精确的规范,例如用于连接硬件设备的位布局。这些仍然主要是理论上的 - 虽然C ++(如C)缺乏关于编译器如何在结构中布置诸如位字段之类的东西的保证,个别编译器给出了完成工作所需的控制,并且像这样的代码很少是非常便携的无论如何。

答案 3 :(得分:3)

在OSS世界中(我假设您感兴趣),C ++在KDE project中用于GUI编程(参见Qt)。

但我的一般观察是C ++在商业应用程序(游戏,图形密集型应用程序)中使用得更多,而在开源项目中C更受欢迎(与Python等高级语言包装器结合使用)。 p>

答案 4 :(得分:1)

英特尔和诺基亚在名为MeeGo的智能设备操作系统背后团结一致。 它的主要GUI框架是Qt。 这是一个不错的C ++ API。

答案 5 :(得分:1)

从一点历史角度来看,阅读Stroustrup的 C ++的设计和演变

Stroustrup在他的研究生阶段正在进行模拟,并发现Simula 67是一个很好的语言,很容易写入。

然而,Simula完全不适合实际使用,因为它效率很低。 Stroustrup被迫重写BCPL中的东西,这是C的一个非常原始的前身,并且发现它非常痛苦。

之后,他决定提出一种与C一样有效的语言,但这种语言将支持Simula风格的编程。结果首先是C with Classes,然后是C ++。

然而,C ++并没有止步于此。它获得了其他功能,如模板。这允许标准模板库。它的创造者斯捷潘诺夫声称,他没有找到任何其他语言可以让他满意地实现它。 (他在Lisp论坛上再次回答这个问题似乎有点脾气暴躁。)

C ++很有效地应用了先进的和可能奇怪的编程技术。

答案 6 :(得分:0)

C ++用于任何具有高性能要求的领域,因为它具有非常快的语言的有效声誉。您将找到最新的技术,如DirectX和C ++中最快的算法。

答案 7 :(得分:0)

大多数游戏都是用C ++编写的,因为它们的级别相对较低,需要访问系统API,而且它们可以从面向对象的编程中获益很多。

答案 8 :(得分:0)

C ++ 意味着它只能执行 C 可以执行的操作,而其他可以执行其他操作。

如果您希望看到它闪亮的一面,您可以将其称为全能。当你认为它是一种无用的语言时,你可以在底部采用答案: - )