这些最后几天我一直热切地学习D语言.作为数百万行C++代码的支持者,对我来说,这似乎是一个梦想.我们支持高性能低延迟系统,显然C++是过去十年中唯一的选择.现在,我看到D.
所以,我的问题非常明显.我可以开始考虑将商业软件产品迁移到D语言吗?是否有从头开始在D上编写此类迁移或现有大型商业软件产品的示例?
现在如何投资这种语言是否安全?我们有生产质量的编译器和调试器吗?我们可以假设他们会得到支持和发展吗?
如果您有从C++到D的迁移经验,那么很高兴听到您的意见.
PS.DI意味着D2
谢谢
Jon*_*vis 13
我不会认为D2已经准备就绪,但它已经接近了.语言定义相当稳定.此时应该发生很少的重大变化(尽管可能会出现一些旨在消除语言中关键问题的附加变化).编译器的开发正在迅速发展,并且许多错误正在得到修复.但是在这一点上,如果你大量使用D2,你将遇到编译器错误,特别是如果你使用更新的语言功能.并非所有这些功能都已完全实现(例如alias this
和inout
),所以虽然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已经准备就绪了,但是我不知道要多早多少,我会觉得这样做很舒服.
Pet*_*der 11
是否有从头开始在D上编写此类迁移或现有大型商业软件产品的示例?
我不相信有任何大规模的商业迁移到D,尽管有一些公司使用D1.我还不知道有任何公司使用D2.
现在如何投资这种语言是否安全?
我们有生产质量的编译器和调试器吗?
DMD编译器非常强大并且不断改进,但在某些关键领域仍然缺乏.例如,它的浮点运算代码生成非常缺乏,64位支持是不稳定的(尽管有所改进).还有GDC,我还没有用过,但我觉得它比DMD弱.
我们可以假设他们会得到支持和发展吗?
我认为假设编译器将得到支持和开发是非常安全的.只需看看D的github页面.活动强劲且不断增长.错误修复的数量正在迅速增加,我没有看到它放缓的迹象.
嗯,任何语言的一般建议是不重写现有的代码库.编写新代码或转换需要修复错误的部分可能是一个很好的策略.
快速和肮脏的重播:如果你不得不问,你不应该在生产中使用D.
有些人不认为D是一种改进,而另一些人认为它将继续存在于"无关紧要的领域".纵观其历史表明它具有生存所需的一切.
就个人而言,如果我提出使用D生产产品的想法,我可能会考虑:
这些问题将成为任何讨论的一部分,特别是对于像D这样的年轻语言,它甚至与现有的图书馆失去了兼容性,使其只有4年左右(并且仍然存活下来).我不使用其他编译器,因此没有得到DMD的支持会引起关注,其他编译器的历史并不是很好,而且知识可能会有另一个编译器可以依赖它.当然,如果你有一个可以维护编译器的工作人员......
我认为D可以用于生产,但应该是非常可控的.你现在想要一个熟悉D的团队用它制作一个生产产品的团队.