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

Sta*_*tas 30 d

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

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

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

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

PS.DI意味着D2

谢谢

Jon*_*vis 13

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

此外,虽然标准库Phobos总体上非常好,并且大部分都是稳定的,但它仍然是一项正在进行中的工作.我们正在努力避免把我们正在通过适当的折旧路径(一般为6个月计划弃用和6个月彻底清除之前不建议使用)去除填充造成直接的重大的变动,但有时直接重大的变动发生(和有时编译器会导致破坏性更改(因为它已经工作).在某些情况下,整个模块将进行大修(例如std.xml和std.stream).可能在这方面最大的烦恼是std.container,它是相当新的,还没有很多,并且可能有重大的重新设计,因为Andrei Alexandrescu排除了我们将如何处理内存管理它.因此,容器支持正在改善,但通常缺乏.总而言之,许多Phobos相当稳定,但它绝对不是一成不变的.

dmd和Phobos肯定都有支持,因为如果你把东西发布到bugzilla或者在新闻组上讨论它们,人们通常会非常有帮助,开发人员会及时尝试修复bug,但大多数人都在努力在空闲时间这样做,所以有时可能需要一段时间.切换到github确实改善了问题.我知道如果你为它支付费用,Digital Mars会为dmc提供额外的支持,但我不知道他们是否也会为dmd做同样的事情.我希望他们有很好的机会(当然,如果他们现在没有,我希望他们将来这样做).

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

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

维基有一些关于尚未完成的工作的良好信息,新闻组最近的这个帖子也有一些很好的信息.

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

  • 希望你刷一下帖子.一年过去了.提前致谢. (2认同)

Pet*_*der 11

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

我不相信有任何大规模的商业迁移到D,尽管有一些公司使用D1.我还不知道有任何公司使用D2.

现在如何投资这种语言是否安全?

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

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

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

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


he_*_*eat 5

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

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

有些人不认为D是一种改进,而另一些人认为它将继续存在于"无关紧要的领域".纵观其历史表明它具有生存所需的一切.

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

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

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

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