是d语言一个可靠的替代Java和C++?如何成为一个可靠的替代方案?我应该学习它吗?它值得传福音吗?
我问的主要原因是,几乎在这里使用新的C++标准(c ++ 0x),我很清楚,对于任何理解它的人来说,语言已经远远超过了不归路.我知道C/C++永远不会死,但在某些时候我们需要继续前进.即使是COBOL也有它的一天,Java在很多方面都取消了C++.下一个是什么?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++.
只是为了添加我自己的经验:
大约一年前,我参与了一个持续3个月的小规模游戏项目(3个编码器),我们用D作为主要语言.我们之所以选择它作为一个实验,部分是因为它已经对SDL和我们正在使用的其他工具进行了绑定,并且主要是因为它们的好处似乎超过了C++.
我们喜欢使用它.它学得快,易于编写.它的许多功能证明是非常宝贵的,我想念它们回到C++.
但是,以下几点使我们的生活变得更加困难:
当时没有好的IDE是一个主要问题.我们最终通过自定义Scite来制作自己的.这工作正常,但并不理想.
当时没有调试器.我们设法让WINDBG在一个命中或未命中的基础上工作,但它是不可靠的.没有调试器的调试代码有时会让人感到生气.
当时有2个标准库可供选择(Tango和Phobos).我们从一个开始,切换到另一个,并且真正需要两者的混合功能(Tangobos!).这导致头痛和一些代码重写.
绑定到其他不可用的工具.最后我们不得不切换到DirectX(原因我不会进入).DirectX没有可用的绑定,因此我们必须在C++中编写自己的绑定,将其构建为.dll并绑定到它.这是相当讨厌的工作,花了一些时间.
总的来说,我们喜欢写D.它实际上编写代码很容易,并且很快学习.我提到的问题回应了这个问题已被接受的答案 - 它是需要在D中解决的"额外"位,它的核心是可靠的.
我同意C++正在成为一种死胡同的语言 - 在过去17年中使用它之后,我很难说.
我认为D是C++的合法继承者.从语言的角度来看,它"做了所有正确的事情"(即使我不同意每一分钟的决定).我认为随着C和C++的衰落,没有其他系统级语言可以真正做到他们所做的,同时在现代语言的世界中保持自己 - 除了D!D不仅填补了这个角色 - 它擅长于此!看看D1.x应该足以说服你 - 但是当你看到D2.0时它会让你感到震惊.我认为,今天没有其他语言可以像D2.0那样与桥接命令式和功能性编程范式相媲美 - 这种范式在未来几年才会变得更加重要.
缺乏主流接受 - 甚至是可见性 - 以及大规模,成熟的图书馆 - 当然是一个障碍.但是我认为你不能因此而写下来.我相信D 将在未来几年内成长为最重要的语言之一 - 那些现在认真对待它的人将会很好地在那个时候带头.
我认为差异将在很大程度上归因于Andrei Alexandrescu的参与.这并不是以任何方式诋毁沃尔特·布莱特,他在将D带入世界方面做了大量工作.但Alexandrescu在C++社区中确实是一个重要的,引人注目的人物 - 而且大多数潜在的D切换器都将来自这里.他还为D2.0在功能编程方面的支持做出了重要而重要的贡献.
可能仍然会发现D注定要成为系统级语言的Betamax--但是我的钱在未来两年内就会转变.
我喜欢D是一个天才的作品,主要是一个人 - Walter Bright,他的Zortech编译器当时很棒.
相比之下,即使Bjarne具有影响力,C++也是委员会设计的过多.太多的附加功能和奇怪的新语法.这种差异反映了学习的简易性和日常使用的便利性,减少了错误.
更连贯的语言可以带来更高的生产力和程序员的喜悦 - 但这是主观的和有争议的!(我想我应该把我自己的答案投下来)
D是一种很好的语言并且很受欢迎,但与所有语言一样,它只是另一种工具.使用哪种工具取决于您的人选类型,您的想法,您工作的环境,语言的哪些限制适用于该计划,最重要的是,程序本身.如果你有时间,我肯定会建议学习D.最糟糕的情况,你永远不会使用它.您更有可能了解自己最喜欢哪些方面,以及在什么条件下最闪亮,并在制作新程序时利用它.
我建议查看D比较图表,看看该语言的功能是什么,看看它是否适合您.
D语言很现代.没有语言是完美的,毫无疑问.但语言的诞生是为了让生活更轻松.在复杂性方面,D语言与C++相比具有很多优点.还涉及许多其他语言组合专业,这有助于编码人员更快地编码,其他语言引入了TOP功能.有关D和其他语言的更多详细信息,请参阅:
D vs 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++一样,编码时提醒我正在做的是真正的现代C/C++,它叫做D
D语言有很多更好的理由,没有理由低估任何语言,它始终是用户的选择.
这实际上取决于您的需求 - 用D编写的大型商业应用程序确实存在于服务器端,而D(通常使用Tango/Mango)是完美的选择,并且您可能能够提供更多请求比任何其他语言/平台.
对于协议和交互性(许多都是)的更专业的解决方案,您将在查找所需的库时遇到更多问题,并且缺少工具可能会对您产生更多影响.
D非常令人印象深刻,安德烈关于它的书写得很好.但正如其他人所说,您需要工具和平台支持.随着时间的推移,GDC可能是两者的答案.
你见过这个吗?
"GNU Debugger增加了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之间的呼吸空间,Go是谷歌支持的更容易的替代方案.
更新:我刚刚发现我最喜欢的安德烈书的章节,即并发的一章,可以在网上免费获得.绝对值得一读!
这是关于Go和D的相对优点/目标/方法的讨论.