D语言是否可以替代Java和C ++?成为可信的替代方案将需要什么?我应该学习吗?它值得传福音吗?
我要问的主要原因是,几乎在这里有了新的C ++标准(c ++ 0x),对于我来说,很明显,对于任何了解它的人,该语言已经远远超过了无回报的地步。我知道C / C ++永远不会消失,但是在某些时候我们需要继续前进。甚至COBOL时代已经到来,Java在许多方面都放弃了C ++。下一个是什么?D会付账吗?
D语言是否可以替代Java和C ++?成为可信的替代方案将需要什么?我应该学习吗?它值得传福音吗?
我要问的主要原因是,几乎在这里有了新的C ++标准(c ++ 0x),对于我来说,很明显,对于任何了解它的人,该语言已经远远超过了无回报的地步。我知道C / C ++永远不会消失,但是在某些时候我们需要继续前进。甚至COBOL时代已经到来,Java在许多方面都放弃了C ++。下一个是什么?D会付账吗?
Answers:
决定用于现实世界软件开发的编程语言的成功与普及的因素仅部分与语言本身的质量有关。作为纯语言,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 ++。
只是为了添加我自己的经验:
大约一年前,我从事了一个为期3个月的小型游戏项目(3个编码器),在该项目中,我们以D作为主要语言。我们选择它作为实验的一部分,部分是因为它已经具有对SDL和我们正在使用的其他工具的绑定,并且主要是因为它似乎比C ++具有更多的好处。
我们喜欢使用它。它学习迅速且易于编写。它的许多功能被证明是无价的,我想念它们回到了C ++。
但是,以下几点使我们的生活更加困难:
总体而言,我们喜欢编写D。它使编写代码的实际过程变得容易并且学习迅速。我已经提到的问题呼应了这个问题的答案-它是D中需要解决的“额外”位,其核心是坚实的。
我同意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-但是我的钱是在接下来的两年内实现这一目标。
我喜欢D是一个天才的作品,主要是一个头脑-Walter Bright,他的Zortech编译器在当时是很棒的。
相反,即使Bjarne产生了影响,C ++还是由委员会过多设计。太多的附加功能和奇怪的新语法。这种差异体现在学习的便利性和日常使用的便利性以及更少的错误中。
更加一致的语言可带来更高的生产率和程序员的乐趣-但这是主观的和有争议的!(我想我应该把我自己的答案否决)
D语言是现代的。没有一种语言是完美的,对此毫无疑问。但是语言的诞生是为了让生活更轻松。就复杂性而言,D语言与C ++相比具有许多优良特性。涉及许多其他语言组合专业,通过其他语言引入的TOP功能,可以帮助编码人员更快地编码。另请参阅: 有关D和其他语言的更多详细信息
D与C ++的兼容性是涉及大量C ++语言并要求与D兼容的兼容性。D已允许与C达到100%兼容性,这仍然是一个好选择。
D vs C ++,C ++是我认为非常好的语言,但是它的难于编写代码和耗时,需要越来越多的经验来获得成功,但是D允许简单地做到这一点
D vs C ++,我不确定C ++是否可以,但是D不允许使用“ auto”进行类型限制变量赋值,这可以使变量动态化,这在需要时可以使用严格类型
D vs C ++,如果您有其他语言经验,则可以直接开始使用,它具有易于学习的路线图,并且由经验丰富的团队和公司支持进行设计
D vs C ++是我发现的D的一个很好的方面,它是代码样式,它的外观和感觉与C / C ++完全相同,而编码使我想起了我正在做的叫D的现代C / C ++
对于D语言,还有许多更好的理由,没有理由低估任何一种语言,它始终是用户的选择。
这实际上取决于您的需求-用D编写的大规模商业应用程序确实存在于服务器端,并且对于D(通常使用Tango / Mango)是否合适,您很可能可以满足更多请求比使用任何其他语言/平台。
对于协议和交互性(很多)而言更专业的解决方案,您在找到所需的库时会遇到更多问题,缺少工具可能会给您带来更多影响。
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)的书中我最喜欢的一章,即并发性,可以免费在线获得。绝对值得一读!
作为一种语言,我一直觉得D比C ++更接近C#。不是在功能和库中,而是在“感觉”中。它比C ++更干净,更有趣。恕我直言,成为可靠替代方案的最大障碍是工具,IDE和调试器。如果D克服了广泛使用/采用的一些障碍,那么将会出现更多的工具和库。(如果有可用的IDE和调试器,我本人将返回D。)