D是Java和C++的可靠替代品吗?[已关闭]

2022-08-31 07:09:09

D语言是Java和C++的可靠替代品吗?怎样才能成为一个可靠的替代方案?我应该费心学习它吗?它值得传福音吗?

我问这个问题的主要原因是,随着新C++标准(c ++ 0x)即将到来,我很清楚,对于任何理解它的人来说,这门语言已经远远超出了不归路。我知道C/C++永远不会消亡,但在某些时候我们需要继续前进。即使是COBOL也有它的日子,Java在许多方面都C++。那么接下来呢?D是否填饱了账单?


答案 1

决定编程语言在实际软件开发中的成功和普及的原因仅部分与语言本身的质量有关。作为一种纯语言,D可以说比C++和Java具有许多优势。至少它是一种可靠的替代语言,作为一种纯语言,所有其他条件都是平等的。

但是,对于软件开发来说,其他事情很重要 - 几乎比语言本身更重要:可移植性(它在多少个平台上运行),调试器支持,IDE支持,标准库质量,动态库支持,常见API的绑定,文档,开发人员社区,势头和商业支持,仅举几例。在每一个方面,D都无可救药地落后于Java,C++和C#。事实上,我认为在这方面,它甚至落后于所谓的“脚本”语言,如Python,Perl,PHP,Ruby,甚至JavaScript。

坦率地说,您根本无法使用 D 构建大规模的跨平台应用程序。由于标准库不成熟,任何现代IDE都不支持(Visual Studio和Xamarin Studio/MonoDevelop都有插件),有限的动态/共享库支持,以及很少绑定到其他语言,D在今天根本不是一个选择。

如果你喜欢你所看到的D,一定要学习它 - 如果你已经知道Java并且C++,那么应该不需要很长时间。我不认为传福音会有所帮助 - 在这一点上,如果D要成功,它真正需要的是更多的人悄悄地使用它,并解决它的主要缺点,如标准库和IDE支持。

最后,至于C++,虽然大多数人都认为语言太复杂,但成千上万的公司通过只允许语言的较小,定义明确的子集,成功地将C++作为健康语言组合的一部分。当同时需要原始性能和小内存使用量时,仍然很难击败C++。


答案 2

只是为了将我自己的经验添加到组合中:

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

我们喜欢使用它。它学习速度快,易于编写。它的许多功能被证明是无价的,我想念它们回到C++。

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

  1. 当时没有好的IDE,这是一个主要问题。我们最终通过定制Scite来制作自己的。这还行,但不理想。
  2. 当时没有调试器。我们设法让WINDBG在命中或未命中的基础上工作,但它是不可靠的。在没有调试器的情况下调试代码有时会使生活变得地狱般。
  3. 当时有2个标准库可供选择(Tango和Phobos)。我们从一个开始,切换到另一个,并且真的需要两者的混合功能(Tangobos!这引起了头痛和一些代码重写。
  4. 与其他工具的绑定不可用。最后,我们不得不切换到DirectX(出于我不会进入的原因)。DirectX 没有可用的绑定,因此我们必须在 C++ 中编写自己的绑定,将其构建为.dll并绑定到该绑定。这是一项相当令人讨厌的工作,需要一些时间。

总的来说,我们喜欢写D。它使实际编写代码变得容易,并且学习速度很快。我提到的问题与这个问题已经接受的答案相呼应 - 这是需要在D中解决的“额外”位,它的核心是坚实的。


推荐