D2语言是否已准备好投入生产?

时间:2011-06-18 12:25:25

标签: d

最近几天我一直热切地学习D语言。作为数百万行C ++代码的支持者,对我来说,这似乎是一个梦想。我们支持高性能低延迟系统,显然C ++是过去十年中唯一的选择。现在,我看到D。

所以,我的问题非常明显。我可以开始考虑将商业软件产品迁移到D语言吗?是否有从头开始在D上编写此类迁移或现有大型商业软件产品的示例?

现在投资这种语言是否安全?我们有生产质量的编译器和调试器吗?我们可以假设他们会得到支持和发展吗?

如果您有从C ++到D的迁移经验,那么很高兴听到您的意见。

PS。 D我的意思是D2

谢谢

3 个答案:

答案 0 :(得分:13)

我不会认为D2已经准备就绪,但它已经接近了。语言定义相当稳定。此时应该发生很少的重大变化(尽管可能会出现一些旨在消除语言中关键问题的附加变化)。编译器的开发正在迅速发展,并且许多错误正在得到修复。但是在这一点上,如果你大量使用D2,你遇到编译器错误,特别是如果你使用更新的语言功能。并非所有这些功能都已完全实现(例如alias thisinout),因此虽然TDPL大部分都是正确的,但dmd仍然落后于它。

此外,尽管标准库Phobos总体上非常好,并且大部分都是稳定的,但它仍然是一项正在进行中的工作。我们试图通过将我们正在通过适当的弃用路径删除的东西(通常是按计划弃置6个月和在完全删除之前弃用6个月)来避免立即发生重大变更,但有时会立即发生重大变更 do 发生(有时编译器会在其工作时导致重大更改)。在某些情况下,整个模块将进行大修(例如std.xml和std.stream)。可能在这方面最大的烦恼是std.container,这是相当新的,还没有很多东西,并且可能有重大的重新设计,因为Andrei Alexandrescu排除了我们将如何处理内存管理它。因此,容器支持正在改善,但通常缺乏。总而言之,许多Phobos相当稳定,但它绝对不是一成不变的。

对于dmd和Phobos都有支持,因为如果你将内容发布到bugzilla或在the newsgroup上讨论它们,人们通常会非常有帮助,开发人员会及时尝试修复错误方式,但大多数人在空闲时间这样做,所以有时可能需要一段时间。切换到github确实改善了问题。我知道Digital Mars如果你支付费用就会为dmc提供额外的支持,但是我不知道他们是否也会为dmd做同样的事情。我希望他们有很好的机会(当然,如果他们现在不这样做,我希望他们将来这样做。)

至于编译器的质量,dmd使用Digital Mars的dmc作为其后端,而dmc是第一个用于本地编译代码的C ++编译器的最新版本(而不是首先将其转换为C),以及Walter Bright自创造以来,D的创造者一直在研究它。他是最好的编译器编写者之一,已经创建了许多优化,这些优化已成为C ++编译器的标准(例如Return Value Optimization),但是dmc没有很多人在编写它,并且有它落后的一些领域(例如浮点优化)和D是足够新的,在优化它时还有很多工作要做。由于错误已得到修复,我确信更多关注点最终将转向优化语言,并且在大多数情况下最终会与C ++相提并论(在某些情况下更好),但现在它实际上取决于您的代码。有时D是平等的;有时它不是。

有些人在生产代码中使用D2(特别是,我知道Adam D. Ruppe使用它与他合作的公司进行网页开发 - 他是D新闻组的常用海报),但我不认为它们中有很多,并且它们通常避免使用该语言的更新,更高级的功能(通常是最糟糕的错误)。它的稳定性实际上取决于你对语言的处理方式。

The wiki提供了有关尚待完成的工作的一些很好的信息,新闻组中的this recent thread也有一些很好的信息。

D肯定接近我认为它已准备就绪的程度,但此时肯定存在一些风险。对于业余爱好来说,这是伟大的,但如果你的生活依赖于它,我不知道风险是否值得。它越来越近了。它可能值得您花时间去研究它,试一试,试验它等等。但我不会深入研究您的生产代码并将其全部转换为D.它可能会很好,但它可能不会。我希望从现在开始一年,我可以说D2已经准备就绪了,但是我不知道要多早多少,我觉得这样做会很舒服。

答案 1 :(得分:11)

  

是否有此类迁移的示例   或现有的大型商业软件   从头开始写在D上的产品?

我不相信D有任何大规模的商业迁移,尽管there are a few companies using D1。我还不知道有任何公司使用D2。

  

投资于此如何安全   语言现在?

     

我们有生产质量编译器吗?   和调试器?

DMD编译器非常强大且不断改进,但在某些关键领域仍然缺乏。例如,它的浮点运算代码生成非常缺乏,64位支持是不稳定的(尽管有所改进)。还有GDC,我没有使用过,但我觉得它比DMD弱。

  

我们可以假设他们会   支持和发展?

我认为假设编译器将得到支持和开发是非常安全的。只需看看github page for D。活动强劲且不断增长。错误修复的数量正在迅速增加,我没有看到它放缓的迹象。

答案 2 :(得分:5)

嗯,对任何语言的一般建议是不重写现有的代码库。编写新代码或转换需要修复错误的部分可能是一个很好的策略。

快速和肮脏的重播:如果你不得不问,你不应该在生产中使用D.

有些人并不认为D是一种改进,而另一些人认为它将保留在“无关紧要的领域”。纵观其历史表明它具有生存所需的一切。

就个人而言,如果我提出使用D生产产品的想法,我可能会考虑:

  • 团队规模。在完成的早期阶段,有多少开发人员需要接受D教育。
  • 需要哪些库,我们是否有时间和人力来构建或包装库。
  • 我们是否能够处理使用的库中的修补错误。
  • 是否需要DMD不支持的架构

这些问题将成为任何讨论的一部分,特别是对于像D这样的年轻语言,它甚至与现有的图书馆失去了兼容性,使其只有4年左右(并且仍然存活下来)。我不使用其他编译器,因此没有得到DMD的支持会引起关注,其他编译器的历史并不是很好,而且知识可能会有另一个编译器可以依赖它。当然,如果你有一个可以维护编译器的工作人员......

我认为D可以在生产中使用,但应该是非常可控的。你现在想要一个熟悉D的团队用它制作一个生产产品。