D 是一种很好的语言 而且很受欢迎,但是像所有语言一样,它只是另一种工具。使用哪种工具取决于你是什么样的人,你是怎么想的,你工作的环境,应用程序的语言的限制,最重要的是,程序本身。如果你有时间,我绝对建议你学习 D。最坏的情况是,你永远不会使用它。更有可能的是,您将学习到您最喜欢它的哪些方面,以及在什么条件下它最闪亮,并在制作新程序时利用这一点。
在现实的软件开发中,决定编程语言成功与否的因素只与语言本身的质量有部分关系。作为一种纯语言,D 可以说比 C + + 和 Java 有许多优势。在其他条件相同的情况下,作为一种纯语言,它至少是一种可信的替代品。
然而,对于软件开发来说,其他事情几乎比语言本身更重要: 可移植性(它在多少平台上运行)、调试器支持、 IDE 支持、标准库质量、动态库支持、常见 API 绑定、文档、开发者社区、势头和商业支持等等。在所有这些方面,D 都远远落后于 Java、 C + + 和 C # 。事实上,在这些方面,我认为它甚至隐藏在所谓的“脚本”语言(如 Python、 Perl、 PHP、 Ruby,甚至 JavaScript)之后。
坦率地说,你根本不能使用 D 来构建一个大规模的、跨平台的应用程序。对于一个不成熟的标准库,不支持任何现代 IDE(Visual Studio 和 Xamarin Studio/MonoDevelopment 都有插件) ,有限的动态/共享库支持,以及很少与其他语言的绑定,D 现在根本不是一个选项。
如果你喜欢你所看到的 D,无论如何,学习它-如果你已经知道 Java 和 C + + ,它不会花很长时间。我不认为传道会有帮助-在这一点上,如果 D 要成功,它真正需要的是更多的人悄悄地使用它,并解决其主要缺点,如标准库和 IDE 支持。
最后,至于 C + + ,虽然大多数人都认为这种语言过于复杂,但成千上万的公司成功地将 C + + 作为一种健康的语言组合的一部分,只允许语言的一个较小的、定义良好的子集。当需要原始性能和少量内存使用时,仍然很难击败 C + + 。
我认为 D 是 C + + 的合法继承者。从语言的角度来看,它“做所有正确的事情”(即使我不同意每一分钟的决定)。我认为,随着 C 和 C + + 的衰落,没有其他系统级语言能够真正做到它们所做的事情,同时在现代语言的世界中保持自己的地位——除了 D!D 不仅填补了这个角色-它擅长它!看一下 D1.x 就足以让你相信这一点——但是当你看一下 D2.0,你就会大吃一惊。在我看来,目前还没有其他语言能像 D2.0那样在命令式和函数式编程范例之间架起桥梁——这在未来几年只会变得更加重要。
我认为,这种差异将在很大程度上归因于 Andrei Alexandrescu 的参与。这并不是要以任何方式诋毁沃尔特•布莱特(Walter Bright) ,他在让 D 走向世界方面做出了重大贡献。但 Alexandrescu 是 C + + 社区中一个重要的、引人注目的人物——而且大多数潜在的 D 转换者都将来自于此。在 D2.0对函数式编程的支持方面,他也做出了重要的贡献。
作为一门语言,我总觉得 D 比 C + + 更接近 C # 。不是在特性和库中,而是在“感觉”中。它(比 C + +)更干净,更好... ... 更有趣。
恕我直言,成为可靠替代方案的最大障碍是工具、 IDE 和调试器。如果 D 克服了一些广泛使用/采用的障碍,更多的工具和库就会出现。(如果有一个可用的 IDE 和调试器,我自己将返回到 D。)
此外,Digital almars 网站还有讨论与 C 和 C + + 接口的页面(对于那些你离不开的库)。我想知道是否有任何工具,给定一个 C 头文件,将尝试编写 D 原型。
就个人而言,我不会在这一点上推动做一个大型项目在 D,但我 会使用 D 的内部工具,获得经验,并介绍其他人给它。
最初的问题是 D 是否是 Java 和 C + + 的可靠替代品。我不认为 D 和 Java 在实践中会有太多竞争; D 和 C + + 竞争,现在是 Go。其他问题解决了 D 和 Go 之间的区别,但是 Go 通常被认为更容易使用。所以我怀疑 D 的未来在很大程度上取决于它在 C + + 和 Go 之间有多少空间可以呼吸,C + + 是目前的山顶之王,而 Go 是有 Google 支持的更容易的选择。