Vla*_*eev 40
D和Go可能会变得像Python和Ruby一样受欢迎.他们每个都填补了一席之地,尽管D应该是C++的完全替代品,但它可能永远不会获得足够的质量来推动C++.更不用说它们都不够稳定/成熟,并且不知道你是否会在10到20年内为当时的硬件和操作系统提供这些语言的支持.考虑到C/C++几乎是编译语言,并且在绝大多数操作系统和本机代码应用程序中使用,它在可预见的将来不太可能消失.
jal*_*alf 36
当涉及到本机/非托管/"低级"语言时,C和C++是一个非常无与伦比的组合.
不是因为它们是最好的语言,远非它,而是因为它们在那里,它们完成了工作,并且它们已经足够好了.毫无疑问,例如,D在大多数方面都优于C++.但它失败了最重要的一个:与所有现有C++代码的兼容性.如果没有这个要求,大多数代码今天都会用托管语言编写.今天这么多代码库使用C++的唯一原因是因为他们去年使用过C++,转换到别的东西真是太痛苦了.但是,如果和当他们交换,他们通常不会切换到D.他们切换到C#或Java或Python.
D和其他"即将来临"的语言竞争相同的利基的问题在于,虽然它们更好,但它们并不足以激励人们真正切换到它们.
所以C和C++就在这里.C不太可能进一步发展.它就是这样,它必须填补的一个优势是"简单,即使对于编译器编写者".没有其他语言可能在这个利基市场上击败它,即使他们再也没有修改过这个标准.
C++是更为显着不断变化的,用C++ 0x中越来越近了,他们已经有了一个巨大的,他们想要做的功能列表之后.C++在任何方面都不是死路一条.
两种语言都留在这里.也许在50年后,其他语言将取而代之,但这十年不会发生.
dsi*_*cha 24
我现在经常使用D. 我不建议人们编写生产代码,因为它太过于前沿.我侥幸成功,因为我的大部分代码都是生物信息学的研究原型.然而,语言开始趋于稳定.Andrei Alexandrescu将于明年3月发行一本名为"The D Programming Language"的书,现在正在努力为该书及时稳定该语言版本2的规范.
虽然D不是C的正式超集,但除了没有预处理器之外,它就是我所谓的惯用超集.换句话说,任何用C本身编写的代码(忽略预处理器)都可以简单地转换为D而无需重新设计,因为C指针和内联ASM之类的C概念在D中的工作方式和在C中的工作方式相同.D也支持直接链接到C代码和D标准库包括整个C标准库.
此外,尽管D缺乏图书馆,因为它仍然是一种前沿语言,但由于其元编程功能,它是图书馆作家的梦想.如果它起飞,它可能会有一些非常令人印象深刻的库.有关此内容的预览,请参阅D2标准库(Phobos)中的std.range或std.algorithm.作为另一个例子,我在D中实现了类似OpenMP的并行模型(并行foreach,并行映射,并行缩减,期货)作为纯库,没有任何特殊的编译器支持.(见http://cis.jhu.edu/~dsimcha/parallelFuture.html)
考虑到你最感兴趣的是长期,我会说D 6个月要稳定(考虑到Andrei的书和当前推动稳定语言,版本2应该稳定到那时)然后仔细看看它.
编辑:既然核心语言规范是相对稳定,重点已转向工具链和图书馆的发展,我会建议d为小型生产项目,除非你是在一个非常厌恶风险的环境.但绝对必须拥有良好工具链和库支持的大型项目仍应等待.
JRL*_*JRL 15
如果您相信精益制造原则,您应该努力"尽可能晚地做出决定".这一刻应该是最后一个负责任的时刻,这意味着未做出决定的那一刻消除了一个重要的选择.
我认为这个原则可以适用于你的情况.现在你应该保持你的选择,而不是现在使用一种语言(你甚至不知道将在10年左右).也许重构一些代码,因此它更通用一些,或者建立在更多抽象的基础上,因此当确实需要迁移时,过程将更容易.
Art*_*yom 14
C++ - 它相对年轻且更新......它拥有大量的编译器供应商,并且一直在不断改进.
C - 它将长期存在填补汇编程序和更高级语言之间的空白.它也非常简单易用,因此它仍然是各种"奇怪"架构的第一语言,如嵌入式或极其新的架构.
D 很有前途,但仍然是非常新的和不稳定的规范和库.
Go几个星期前出生...从不使用版本0的任何重要项目.还有一点很显著越限C++或D.
Dan*_*ani 10
C++将在未来10年保持不变......(如果没有,我将更正这个答案,当它不再相关时......)
公司今天与COBOL合作的原因是b/c他们已经编写了数百万的COBOL代码.如果可以扔掉它 - 他们会立刻做到这一点 - 另一方面 - 公司使用C/C++作为他们需求的一部分和使用这种语言的新项目b/c他们不能/不想使用java/c#任何其他基于框架的语言 - 所以COBOL不是这里的类比.
像dsimcha说D方式目前存在风险.然而,语言具有巨大的潜力,它是低级别的,并且我使用D(而不是C++)经历了显着更好的生产力.也许是人们对动态语言的感受.
Go是博客上市的,这对我来说似乎是一个笑话.调度接口方法并不简单,实际上比调度常规单继承方法慢.
如果您拥有庞大的代码库,那么决定当然会更加困难,我建议只切换新项目,而不是现有项目.
我不会专注于一种语言,而是更多地关注它周围的库.C++与boost库相结合是一个很好的选择.用C++开发的人往往对计算有了更好的理解,我自己从Java开始,通过隐藏很多基本的东西让我的生活更轻松,这很好,但是一旦我学会了C /我才真正开始理解编程C++(指针等).
我确实认识到C++可能很难(例如内存管理)所以我认为有一个"附加"语言是好的,其中性能不是必需的,可读性(==可维护性)得分很高:我推荐Python.