D 是 Java 和 C + + 的可靠替代品吗?

D 语言是 Java 和 C + + 的可靠替代品吗?如何才能成为一个可信的替代方案?我是不是该学学?它值得传福音吗?

我问这个问题的主要原因是,随着新的 C + + 标准(c + + 0x)的出现,我很清楚,对于任何理解它的人来说,这门语言已经远远超过了无法回头的地步。我知道 C/C + + 永远不会消亡,但在某些时候,我们需要继续前进。甚至 COBOL 也有它的时代,而 Java 在很多方面都取消了 C + + 。接下来呢?D 符合条件吗?

45298 次浏览

D 是一种很好的语言 而且很受欢迎,但是像所有语言一样,它只是另一种工具。使用哪种工具取决于你是什么样的人,你是怎么想的,你工作的环境,应用程序的语言的限制,最重要的是,程序本身。如果你有时间,我绝对建议你学习 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 是一个天才的作品,主要是一个头脑——沃尔特 · 布莱特,他的 Zortech 编译器在当时是非常棒的。

相比之下,C + + 是太多的设计委员会,即使比亚内是一个影响。太多的附加功能和奇怪的新语法。这种差异反映在易于学习和易于日常使用,更少的错误。

更连贯的语言会带来更好的生产力和程序员的乐趣——但这是主观的,也是有争议的!(我想我应该投票否决我自己的答案)

这实际上取决于你的需求是什么——服务器端存在用 D 编写的大规模商业应用程序,对于这个 D (通常使用 Tango/Mango)是一个完美的选择,并且你可能比其他语言/平台能够服务更多的请求。

对于协议和交互性方面的更专业的解决方案(很多都是如此) ,您在寻找所需的库时会遇到更多的问题,而缺乏工具可能会对您产生更大的影响。

我同意 C + + 正在成为一种死胡同的语言——在使用了它17年之后,说出这样的话让我很痛心。

我认为 D 是 C + + 的合法继承者。从语言的角度来看,它“做所有正确的事情”(即使我不同意每一分钟的决定)。我认为,随着 C 和 C + + 的衰落,没有其他系统级语言能够真正做到它们所做的事情,同时在现代语言的世界中保持自己的地位——除了 D!D 不仅填补了这个角色-它擅长它!看一下 D1.x 就足以让你相信这一点——但是当你看一下 D2.0,你就会大吃一惊。在我看来,目前还没有其他语言能像 D2.0那样在命令式和函数式编程范例之间架起桥梁——这在未来几年只会变得更加重要。

缺乏主流的接受——甚至是可见性——以及大规模、成熟的库——当然是 的一个障碍。然而,我不认为你可以因为这个就一笔勾销。我相信,D 威尔将在未来几年内成长为最重要的语言之一——那些现在正在认真对待它的语言将在那个时候处于领先地位。

我认为,这种差异将在很大程度上归因于 Andrei Alexandrescu 的参与。这并不是要以任何方式诋毁沃尔特•布莱特(Walter Bright) ,他在让 D 走向世界方面做出了重大贡献。但 Alexandrescu 是 C + + 社区中一个重要的、引人注目的人物——而且大多数潜在的 D 转换者都将来自于此。在 D2.0对函数式编程的支持方面,他也做出了重要的贡献。

也许 D 仍然注定要成为系统级语言的 Betamax ——但我打赌它会在未来两年内好转。

加上我自己的经历:

大约一年前,我参与了一个为期3个月的小型游戏项目(3个程序员) ,我们使用 D 作为我们的主要语言。我们选择它一部分是作为一个实验,一部分是因为它已经为 SDL 和我们正在使用的其他一些工具提供了绑定,而且主要是因为它的好处似乎超过了 C + + 。

我们喜欢用它。它学起来快,写起来也容易。它的许多特性被证明是无价之宝,我怀念它们回到 C + + 时的样子。

然而,以下几点使我们的生活更加艰难:

  1. 当时没有好的 IDE,这是一个主要问题。我们最终通过定制 Scite 来制作我们自己的。这个方法还可以,但并不理想。
  2. 当时没有调试器。我们设法让 WINDBG 工作在一个打或错过的基础上,但它是不可靠的。没有调试器的调试代码有时会让生活变得糟糕透顶。
  3. 当时有两个标准库可供选择(Tango 和 Phobos)。我们从一个开始,切换到另一个,并且真的需要两个特性的混合(Tangobos!).这引起了一些头痛和代码重写。
  4. 其他工具的绑定不可用。最后,我们不得不切换到 DirectX (原因我不会介绍)。没有可用的 DirectX 绑定,因此我们必须用 C + + 编写自己的绑定,将其构建为。Dll 并绑定到它。这是一项相当棘手的工作,需要一些时间。

总的来说,我们喜欢写 D。它实际上使编写代码变得容易并且学起来很快。我提到的问题回应了这个问题已经被接受的答案——需要在 D 中处理的“额外”位,它的核心是坚实的。

作为一门语言,我总觉得 D 比 C + + 更接近 C # 。不是在特性和库中,而是在“感觉”中。它(比 C + +)更干净,更好... ... 更有趣。 恕我直言,成为可靠替代方案的最大障碍是工具、 IDE 和调试器。如果 D 克服了一些广泛使用/采用的障碍,更多的工具和库就会出现。(如果有一个可用的 IDE 和调试器,我自己将返回到 D。)

它看起来是一种设计得非常好的语言; 比 C-C + +-Objective C 好得多。 我可以暂时不使用 IDE 或调试器,但不能没有一个好的、文档化的 D 2.0库。

我六个月后再来看看。

一种方法是在你所在的地区寻找工作。找到你想做的工作,看看他们需要什么技能。如果他们要求使用 C + + 或 Ruby、 Oracle 或 D,那么这项技能主要是为了帮助你得到你想要的工作。

D 是相当令人印象深刻的,而且安德烈关于它的书写得很好。但正如其他人所说,您需要工具和平台支持。随着时间的推移,环球数据中心可能会成为这两个问题的答案。

你看过这个吗?

“ GNU 调试器增加了 D 语言支持”: Http://www.linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support

此外,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 支持的更容易的选择。

更新: 我刚刚发现 安德烈书中我最喜欢的一章,一个关于并发的,可以在线免费获得。绝对值得一读!

这是 关于围棋和 D 的相对优点/目标/方法的漫长讨论

看来这个问题已经得到了解答。 D 语言比 C + + 语言更好。

出于实际目的,D 周围是否有更好的基础设施的问题是次要的。

简而言之,如果它们都是全新的语言,而且没有任何支持,那么 D 就是更好的语言,因此它就是更好的语言。

D 语言是现代的。没有一种语言是完美的,这一点毫无疑问。但语言的诞生是为了让生活变得更容易。与 C + + 相比,D 语言在复杂性方面有很多优点。许多其他的语言组合特性也参与其中,这有助于程序员更快地编码,其他语言也引入了 TOP 特性。请参阅: 了解更多关于 D 和其他语言的细节

  • D 对 C + + ,是兼容性,其中涉及到大量的 C + + 语言,需要与 D 的兼容性。 D 允许与 C 的兼容性已经达到100% ,这仍然是一个很好的胜利。

  • D vs C + + ,C + + 是我认为非常好的语言,但它难以编码,而且耗时,需要越来越多的经验才能获得成功,但 D 允许以简单的方式做同样的事情

  • D vs C + + ,我不确定 C + + 是否这样做,但是 D 不允许使用“ auto”进行类型限制变量赋值,当需要时,可以创建一个严格的类型

  • 与 C + + 相比,如果你有其他语言经验,你可以直接开始使用它,它有简单的学习路线图,并得到了一个强大的经验丰富的团队和公司的支持

  • D vs C + + ,我发现 D 最好的地方就是它的代码风格,它给人的外观和感觉和 C/C + + 完全一样,当编写代码的时候,它提醒我正在做一个非常现代的 C/C + + ,它叫做 D

D 语言有很多更好的理由,没有理由低估任何语言,它总是用户的选择。