D是Java和C ++的可靠替代品吗?
D语言是Java和C ++的可靠替代品吗?成为可信的替代方案将需要什么?我应该学习吗?它值得传福音吗?
我问的主要原因是,几乎在这里有了新的C ++标准(c ++ 0x),对于我来说,很明显,对于任何了解它的人,该语言已经远远超过了无回报的地步。我知道C / C ++永远不会消失,但是在某些时候我们需要继续前进。甚至COBOL都有其发展史,而Java在许多方面都具有未完成的C ++。下一个是什么? D会付账吗?
解决方案
D是一门很好的语言,相当受欢迎,但是与所有语言一样,它只是另一种工具。使用哪种工具取决于类型,思维方式,工作环境,程序所受语言的限制以及最重要的是程序本身。如果有时间,我绝对会建议我们学习D。最坏的情况是,我们永远不会使用它。我们更有可能会了解到我们最喜欢它的哪些方面,以及在什么条件下它最亮,并在制作新程序时加以利用。
我建议我们查看D比较表,以了解该语言的功能,并查看它是否适合我们。
决定用于现实世界软件开发的编程语言的成功与普及的原因仅与语言本身的质量有关。作为纯语言,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 ++。
非常适合我自己的宠物项目。我将它用于雇主的项目,但是却不知道在我继续前进后,找到某人来接管工作对他们来说会有多困难。至少在受支持的平台上,没有技术上的原因可以避免它。 (敲木头)
我喜欢D是一个天才的作品,主要是一个头脑Walter Bright,他的Zortech编译器在当时是不可思议的。
相反,即使Bjarne产生了影响,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 ++。
但是,以下几点使我们的生活更加困难:
- 当时没有好的IDE,这是一个主要问题。我们最终通过自定义Scite制作了自己的游戏。这行得通,但并不理想。
- 当时没有调试器。我们设法使WINDBG在失败的基础上工作,但这是不可靠的。没有调试器的情况下调试代码有时会使生活变得井井有条。
- 当时有2个标准库可供选择(Tango和Phobos)。我们从一个开始,切换到另一个,确实需要同时使用两者的功能(Tangobos!)。这引起了麻烦,并重写了一些代码。
- 与其他工具的绑定不可用。最后,我们不得不切换到DirectX(出于我不愿讨论的原因)。没有可用的DirectX绑定,因此我们不得不用C ++编写自己的代码,将其构建为.dll并绑定到该文件。这是相当讨厌的工作,并且花费了一些时间。
总体而言,我们喜欢编写D。它使编写代码的实际过程变得容易,并且学习起来很快。我已经提到的问题呼应了这个问题的答案,那就是需要在D中寻址的"额外"位,它的核心是牢固的。
作为一种语言,我一直觉得D与Cthan C ++更加接近。不是在功能和库中,而是在"感觉"中。它比C ++更干净,更有趣。
恕我直言,成为可靠替代方案的最大障碍是工具,IDE和调试器。如果D克服了广泛使用/采用的一些障碍,那么将会出现更多的工具和库。 (如果有可用的IDE和调试器,我本人将返回D。)
它看起来像是一种设计精良的语言;比C ++++目标C好得多。
我可以在没有IDE或者调试器的情况下生活一段时间,但没有没有D 2.0的良好文档库。
我会在6个月后再检查一次...
一种方法是搜索我们所在地区的工作。找到我们想做的工作,看看他们要求什么技能。如果他们要求C ++或者Ruby或者Oracle或者D,那么这是主要用来获得所需工作的技能。
D令人印象深刻,而Andrei的书也写得很好。但是正如其他人所说,我们需要工具和平台支持。随着时间的流逝,GDC可能会同时解决这两个问题。
你见过这个吗?
" GNU调试器增加了对D语言的支持":
http://www.linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support
此外,digitalmars网站上有一些页面讨论与C和C ++的接口(对于那些我们不能没有的库)。我不知道在给定C头文件的情况下,是否有任何工具会阻止编写D原型。
就我个人而言,此时我不会推动在D中进行大型项目,但我会将D用于内部工具,获得有关它的经验并向其他人介绍它。
最初的问题是D是否是Java和C ++的可靠替代品。我认为D和Java在实践中并不会真正竞争很多。 D与C ++竞争,现在与Go竞争。其他问题解决了D和Go之间的区别,但是通常认为Go更易于使用。因此,我怀疑D的未来很大程度上取决于它在C ++(当前的山丘之王)和Go(拥有谷歌支持的更容易的替代方案)之间有多少空间。
更新:我刚刚发现,安德烈(Andrei)的书中我最喜欢的一章,关于并发的一章,可以免费在线获得。绝对值得一读!
这是关于Go和D的相对优缺点/目的/方法的简短讨论。