我们最近经常会遇到并听到它们,我想在stackoverflow上对它们进行一些很好的比较.链接,参考和文章也没关系.
Jon*_*vis 12
C++ 0x肯定更像D而不是C++ 98或03,但它们仍然是绝对不同的语言.从刻板印象来看,D被认为是一个更好的C++,它更像是C++而不是任何其他语言,但它仍然是它自己的野兽.在这种情况下,我能想到的唯一一个C++具有D绝对缺乏的功能是多重继承,但考虑到多重继承的所有问题,几乎C++之后的所有语言都决定反对它.相反,D引入了许多其他功能,例如alias this和mixins,以允许实现继承(在具有C#和Java之类的接口之上),因此通常仍然可以获得多继承的好处,而不会有任何令人头疼的问题.可能还有一些其他的东西,C++没有D,但你可能不得不为它们搜索.
D通常可以做C++可以做的任何事情,但它可以做的比C++更多,并且它通常可以做得更好.D的弱点主要在于其相对年轻的编译器实现(这可能意味着编译器在处理更新的功能时存在错误)以及其标准库非常重要的事实(尽管其中很多内容很棒,并且它仍在继续改善和成长).但是,给定时间,这些问题显然会消失.如果有的话,我会说D比C++强大得多.在D中完成一系列编程之后,我不得不用C++编程,这让人感到很沮丧.当涉及到模板时(D的模板在功能和可用性方面将C++的模板从水中清除),这一点尤其令人沮丧.一般来说,D更简单,更容易出错.它确实存在的问题是实施问题,这些问题是完全暂时的,并且正在稳步修复.
现在,对于C++ 0x,它为C++添加了许多新功能,这些功能肯定会改进它.其中一些功能已经在D中.其中一些例子是lambdas,foreach循环,auto(我特别期待auto.我已经非常惊讶于它在D中的游戏规则有多大).因此,D在C++ 98/03上改进的一些东西将在C++ 0x中.但显然不是所有人都会这样,而且C++绝对是一种与D不同的语言.它不是D.它不能是D.它不应该是D.虽然它们在核心非常相似,但它们是绝对不同的语言.
如果你真的想了解更多有关D的知识,你应该看看Andrei Alexandrescu的The D Programming Language,这是关于D的权威书籍,也是我读过的最好的编程书籍之一.此外,作为另一种回答指出,有各种语言的一个相当不错的比较格在这里.当然,还有官方网站.
Meh*_*dad 11
我曾经是一名C#程序员(我也熟悉C++和Java),但在学习D之后,我会说它是有史以来最好的语言,只要它的编译器没有错误.看看这些页面:
D没有流行的主要原因有两个:
编译器没有错误(例如,前向引用错误非常烦人并且难以解决)(编辑:它已经改进了很多!).
没有可移植的方式与传统的C++代码交互几乎任何其他语言,包括D.因此,大多数人只是被迫继续使用C++来使用他们的旧代码.
虽然使用GC并非"必需",但标准库会广泛使用它,因此如果您使用的是Phobos,则非常不得不使用它.我认为有计划解决这个问题,但只要是这种情况,那些想要手动内存管理的人可能会避免D.
如果这些问题得到解决,我会说D很可能会很快流行起来.
Pup*_*ppy 10
我的经验主要是C++ 0x调整了C++的某些方面,但实际上,它是相同的语言,只是更清晰,更灵活.但是,C++ 0x中存在很多主要问题,比如#include,常规函数的自动类型推导代码在某种程度上还远远不够.我喜欢C++ 0x,这是一个很大的改进,但它朝着正确的方向迈出了一小步.
D,我发现是,好吧.我不知道.我不喜欢D.我觉得它没有解决需要在C++中修复的问题,并且几乎按照自己的方式进行.我的意思是,语言无论它想成为什么都没有错,但它并没有让我觉得D在C++上真正进化过,它只是一个C++/C#混合体,它只是C#的演变.例如,它具有相同的单根对象层次结构,强制GC等.我觉得D可能是C#,其中一些功能如泛型和RTCG只是转移到编译时而不是运行时.
C++ 0x远远不够,D在一边走进C#和Java已经存在的领域.作为C++的继任者,我肯定还在市场上寻找其他东西.
D是一种不同的语言,据说是为解决C++的许多问题而发明的.我从来没有尝试过,因为我没有被C++的"问题"困扰.
C++ 0x是C++的一个新标准,它增加了许多非常需要的功能(不幸的是,不幸的是我们不希望这些功能).要查看C++ 0x添加的内容,请查看其上的wiki条目:
http://en.wikipedia.org/wiki/C%2B%2B0x
| 归档时间: |
|
| 查看次数: |
3057 次 |
| 最近记录: |