【问题标题】:Is D2 language ready for production? [closed]D2 语言准备好投入生产了吗? [关闭]
【发布时间】:2011-09-17 18:24:56
【问题描述】:

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

所以,我的问题很明显。我可以开始考虑将商业软件产品迁移到 D 语言吗?有没有这种迁移的例子或现有的从头开始写在 D 上的大型商业软件产品?

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

如果您有任何从 C++ 迁移到 D 的经验,很高兴收到您的来信。

PS。 D是指D2

谢谢

【问题讨论】:

  • 请注意,D 使用了一个 stop-the-world 垃圾收集器,这可能与您开发低延迟系统的目标不兼容。
  • @Cyber​​Shadow: GC can be deactivated
  • +1 但应该在Software Engineering
  • 如果全局禁用 GC,则基本上需要编写自己的运行时和标准库,它们可以在不泄漏内存的情况下工作。祝你好运!
  • @Cyber​​Shadow:我还没有学习它的垃圾收集器,希望它不会成为问题。坏消息。希望,有可能减轻它。

标签: d


【解决方案1】:

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

快速而肮脏的回放:如果你不得不问,你不应该在生产中使用 D。

有些人不认为 D 是一种改进,而另一些人则认为它将停留在“无关紧要的领域”。回顾它的历史表明它具备生存所需的条件。

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

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

这些问题将成为任何讨论的一部分,尤其是对于像 D 这样的年轻语言,它甚至破坏了与现有库的兼容性,使其只有大约 4 年的历史(并且仍然存在)。我不使用其他编译器,因此没有 DMD 的支持会令人担忧,其他编译器的历史并不出色,知道可能有另一个编译器可以依靠是件好事。当然,如果你有一个可以维护编译器的工作人员......

我认为 D 可以在生产中使用,但可能应该非常受控制。目前,您需要一个熟悉 D 的团队来使用它制作产品。

【讨论】:

    【解决方案2】:

    我认为 D2 还没有准备好生产,但它已经接近了。语言定义相当稳定。此时应该发生的重大更改很少(尽管可能会发生一些旨在解决语言中关键问题的附加更改)。编译器的开发进展非常迅速,许多错误正在得到修复。但此时,如果您大量使用 D2,您遇到编译器错误,尤其是在您使用较新的语言功能时。并非所有这些功能都已完全实现(例如 alias thisinout),所以虽然 TDPL 大部分是正确的,但 dmd 仍然有点落后。

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

    绝对支持 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 使用它与他合作的公司进行 Web 开发 - 他是 D 新闻组的常客),但我认为它们并不多,而且它们通常会避免该语言的更新、更高级的功能(这通常是最严重的错误所在)。它的稳定性实际上取决于您使用该语言所做的工作。

    The wiki 有一些关于剩余工作的好信息,新闻组上的this recent thread 也有一些好信息。

    D 肯定会接近我认为它已准备好生产的地步,但此时肯定存在一些风险。对于业余爱好来说,这很棒,但如果你的生计依赖​​于它,我不知道风险是否值得。不过也越来越近了。可能值得您花时间研究、尝试、试验等等。但我不会只潜入您的生产代码并将其全部转换为 D。它可能会很好,但可能不会。我希望从现在起一年后,我可以说 D2 已准备好投入生产,但我不知道要多久我才能这么说。

    【讨论】:

    • 希望你把帖子刷一遍。一年过去了。提前致谢。
    • 多年过去了,现在有人愿意评论或修改这篇有用的文章吗?
    【解决方案3】:

    有没有这种迁移的例子 或现有的大型商业软件 从头开始写在 D 上的产品?

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

    在这方面投资如何安全 现在的语言?

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

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

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

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

    【讨论】:

    • The DMD compiler's ... 64-bit support is flaky (although improving) 是否有任何 64位支持?
    • 我相信 64 位在 Linux 上“工作”,虽然有问题。
    • 哦,哎呀,我的错。我在考虑 Windows。
    • Windows 会在某个时候得到支持(Digital Mars 最初是作为 Dos/Windows 工具开始的)但我不知道是否有人愿意说什么时候,所以它甚至可能是少数。 (或者有人可能会挺身而出,在接下来的一两个月内 Windows 将与 Linux 相提并论,你永远不会知道。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多