D是Java和C ++的可靠替代品吗?

D语言是否可以替代Java和C ++? 怎样才能成为一个可信的替代品? 我应该费心学习吗? 它应该传福音吗?

我所要问的主要原因是,几乎在这里新的C ++标准(C ++ 0x),对我来说很清楚,对于任何人来说,语言已经过去了,没有任何回报。 我知道C / C ++永远不会死,但是在某个时候我们需要继续前进。 即使COBOL有一天,Java在许多方面已经取消了C ++。 下一个是什么? D是否填满账单?

什么决定了编程语言在现实世界软件开发中的成功与普及,只是部分与语言本身的质量有关。 作为一个纯粹的语言,D可以说比C ++和Java有许多优点。 至less这是一个纯粹的语言可信的select,所有其他的事情是平等的。

然而,对于软件开发来说,其他的事情很重要 – 几乎超过了语言本身:可移植性(运行多less个平台),debugging器支持,IDE支持,标准库质量,dynamic库支持,通用API绑定,文档,开发人员社区,动力和商业支持,仅举几例。 在这些问题的每一个方面,D都绝望地落后于Java,C ++和C#。 实际上,我认为它甚至支持所谓的“脚本”语言,比如Python,Perl,PHP,Ruby,甚至是JavaScript。

直截了当地说,你不能用D构build一个大规模的跨平台的应用程序。由于不成熟的标准库, 在任何现代IDE (包括Visual Studio和Xamarin Studio / MonoDevelop的插件)中都不支持 ,dynamic/共享库支持,以及less数与其他语言的绑定,D今天根本不是一个选项。

如果你喜欢你所看到的D,尽pipe如此,学习它 – 如果你已经了解了Java和C ++,那么不需要很长的时间。 我不认为传福音会有帮助 – 在这一点上,如果D要成功,真正需要的是更多的人悄悄地使用它,并解决其标准库和IDE支持的主要缺点。

最后,对于C ++而言,尽pipe大多数人认为语言过于复杂,但成千上万的公司已经成功地将C ++用作语言健康组合的一部分,只允许使用更小的,明确定义的语言子集。 当需要原始性能和小内存使用时,仍然很难击败C ++。

只是要join我自己的经验:

大约一年前,我在一个小型的游戏项目(3个编码器)上工作了3个月,我们用D语言作为主要语言。 我们部分select它作为一个实验,部分原因是它已经绑定了SDL和我们正在使用的一些其他工具,而且大部分好处似乎都超过了C ++。

我们喜欢使用它。 学习起来很快,写起来很简单。 它的许多特性被certificate是非常宝贵的,我想念他们回到了C ++。

但是,以下几点使我们的生活更加艰难:

  1. 当时没有好的IDE,这是一个重大问题。 我们最终通过自定义Scite来制作自己的作品。 这工作正常,但并不理想。
  2. 当时没有debugging器。 我们成功地让WINDBG在一次碰运气的基础上工作,但这是不可靠的。 在没有debugging器的情况下debugging代码有时候会让人生气。
  3. 当时有2个标准库可供select(Tango和Phobos)。 我们从一开始,切换到另一个,真的需要从两个(Tangobos!)function的混合。 这导致头痛和一些代码重写。
  4. 绑定到其他工具不可用。 最后,我们不得不切换到DirectX(由于我不会进入的原因)。 没有可用的DirectX绑定,所以我们必须用C ++编写我们自己的程序,将其构build为.dll并绑定到该程序。 这是相当讨厌的工作,花了一些时间。

总的来说,我们喜欢写D,它实际上使代码编写简单,而且学起来很快。 我提到的问题回应了这个问题已被接受的答案 – 这是D中需要寻址的“额外”位,它的核心是稳定的。

我同意C ++正在成为一种死胡同的语言,在过去的17年中,C ++使用起来很困难。

我认为D是C ++的合法inheritance者。 从语言的angular度来看,它“做所有正确的事情”(即使我不同意每一分钟的决定)。 我认为随着C和C ++的下滑,没有其他的系统级语言能够真正做到他们所做的事情,而在现代语言的世界中保持自我 – 除了D! D不仅填补了这个angular色 – 它擅长于它! 看看D1.x应该足以说服你 – 但是当你看着D2.0时,它会把你吹走。 我认为今天没有别的语言可以和D2.0一起工作,弥合必要的和function性的编程范例 – 这在未来几年才会变得更加重要。

缺乏主stream接受甚至是知名度,以及大规模,成熟的图书馆,当然一个障碍。 不过,我不认为你可以把它写出来,因为这一点。 我相信,在未来几年内,D 成为最重要的语言之一 – 现在正在认真对待它的语言在这个时候将会处于领先地位。

我认为这个差异将在很大程度上归功于Andrei Alexandrescu的介入。 这不是以任何方式抹黑沃尔特·布莱特,谁做了一个重要的工作把D带到世界上。 但是Alexandrescu是C ++社区中一个重要且引人注目的人物,也是大多数潜在的D开关人员将来自的地方。 而且他也为D2.0支持函数式编程做出了重大而重要的贡献。

可能还是会发现D注定是系统级语言的Betamax–但是我的钱在接下来的两年内就会出现转机。

我喜欢D是一个天才的工作,主要是一个脑子 – 沃尔特·布赖特,他的Zortech编译器在当时是非常棒的。

相比之下,C ++是太多的委员会devise,即使Bjarne是一个影响。 太多的附加function和奇怪的新语法。 这种差异体现在易于学习和易于日常使用,更less的错误。

越连贯的语言导致更好的生产力和程序员的喜悦 – 但这是主观的和可争论的! (我想我应该投我自己的答案)

D是一种很好的语言,很受欢迎 ,但是和所有语言一样,它只是另一种工具。 使用哪种工具取决于你是什么样的人,你如何思考,你正在工作的环境,语言的哪些限制适用于该程序,最重要的是程序本身。 如果你有时间,我肯定会推荐学习D.最糟糕的情况,你永远不会使用它。 更有可能的是,你将会了解到你最喜欢的方面,以及在什么样的条件下,它最shiny,并且在制作新节目的时候利用它。

我会build议看D比较图 ,看看这个语言的function是什么,看看它是否适合你。

D语言是现代的。 没有语言是完美的,这是毫无疑问的。 但语言天生就是为了让生活更轻松。 D语言与C ++相比有很多好的特性,就复杂性而言。 涉及许多其他的语言组合专业,这有助于编码人员更快地编码,其他语言引入了TOPfunction。 另请参阅: 有关D和其他语言的更多详细信息

  • D vs C ++是兼容性,涉及巨大的C ++语言,需要与D兼容。D允许与C完全兼容,这仍然是一个好的胜利。

  • D与C ++,C ++是我认为非常好的语言,但它很难编码,耗时,需要越来越多的经验才能获得成功,但是D允许以简单

  • D vs C ++,我不确定C ++是否可以,但是D允许使用“auto”的非types限制variables赋值,当需要时可以使用严格types

  • D vs C ++,如果你有其他的语言经验,你可以直接开始使用它,它有简单的学习路线图,并且由经验丰富的团队和公司的支持来devise

  • D和C ++,我发现D的非常好的东西是代码风格,它给人的感觉和C / C ++完全一样,而编码则提醒我正在做现代的C / C ++,它调用了D

D语言有很多很好的理由,没有理由低估任何语言,它总是用户的select。

这实际上取决于你的需求 – 用D写的大型商业应用程序确实存在于服务器端,对于D(通常使用Tango / Mango)是非常合适的,你很可能提供更多的请求比任何其他语言/平台。

对于协议和交互性方面的更多专业化解决scheme(很多方面),您将遇到更多的问题,find所需的库,缺less工具可能会对您产生更大的影响。

D是非常令人印象深刻的,Andrei关于它的书是写得很好的。 但正如其他人所说,你需要工具和平台的支持。 GDC可能会随着时间的推移而成为两者的答案。

你见过这个吗?

“GNUdebugging器添加D语言支持”: http : //www.linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support

另外,digitalmars网站还有一些页面讨论与C和C ++接口(对于那些你不能没有的图书馆)。 我想知道是否有任何工具,如果是C头文件,将会试图编写D原型。

就我个人而言,我不会推动在D中做一个大型项目,但是我用D作为内部工具,获得经验和介绍其他人。

原来的问题是D是否是Java和C ++的可靠替代品。 我不认为D和Java真的会在实践中竞争很多, D与C ++和现在的Go竞争。 其他问题解决了D和Go之间的差异,但Go通常被认为更易于使用。 所以我怀疑D的未来在很大程度上取决于它在现在的山丘之王C ++和Go这两者之间有多大的空间,Go是Google的后盾。

更新:我刚刚发现, 我最喜欢的一本关于并发的书Andrei的书是免费在线的。 绝对值得一读!

关于Go和D的相对优点/目标/方法,这里还有一些讨论 。

看起来问题已经回答了。 与C ++相比,D是更好的语言。

D实际上是否有更好的基础设施是次要的问题。

简而言之,如果他们都是没有任何支持的全新的语言,D是更好的语言,但它是更好的语言。

适合我自己的宠物项目。 我会把它用于雇主的项目,但不知道在我继续之后,他们有多么难以find某个人来接pipe资源。 至less在支持的平台上没有任何技术上的理由来避免它。 (敲木头)

一种方法是search您所在地区的工作。 find你想要做的工作,看看他们要求的技能。 如果他们要求C ++或Ruby或Oracle或D,那么这就是主要帮助你获得所需工作的技能。

作为一门语言,我总觉得D比C ++更接近C#。 不是在function和图书馆,而是在“感觉”。 它更清洁,更好…比C ++更有趣。 恕我直言,成为一个可信的替代品的最大障碍是工具,IDE和debugging器。 如果D克服了广泛使用/采用的一些障碍,则会显示更多的工具和库。 (如果将有可用的IDE和debugging器,我自己将返回到D。)

它看起来像一个devise得很好的语言; 比C-C ++好多了 – Objective C我可以在没有IDE或者debugging器的情况下生活一段时间,但是没有一个好的,logging在D 2.0中的库。

我会在6个月后