当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《D是Java和C++的可靠替代品吗?》经验,为你挑选了8个好方法。

是d语言一个可靠的替代Java和C++?如何成为一个可靠的替代方案?我应该学习它吗?它值得传福音吗?

我问的主要原因是,几乎在这里使用新的C++标准(c ++ 0x),我很清楚,对于任何理解它的人来说,语言已经远远超过了不归路.我知道C/C++永远不会死,但在某些时候我们需要继续前进.即使是COBOL也有它的一天,Java在很多方面都取消了C++.下一个是什么?D填写账单吗?



1> dmazzoni..:

决定编程语言在现实世界软件开发中的成功和普及的因素仅与语言本身的质量有关.作为一种纯语言,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++.


没有证据不是缺席的证据.
如果有人作出积极的断言,例如"有粉红色的独角兽",那么必须先提供证据才能接受.当然,这并不意味着没有像@FeepingCreature那样的粉红色独角兽,而只是说这不是一个引人注目或有效的论点.
说它"在任何现代IDE中都没有支持"是夸大它的一点.日食有支持.它还不是第一类,但它在那里并且越来越好.
@Feeping:这是一个可爱的说法詹姆斯兰迪喜欢扔,但它根本不是真的.你的测试有合理的证据支持测试*应该*找到一些东西,但不要,这是缺席的证据.
我想补充一点,我们用D1和Tango构建大型应用程序.好吧,我们不是跨平台而只是linux,但仍然.我们的整个基础架构都是用D编写的,我们每小时处理超过30k个请求,还有一个用D编写的大型DHT后端.
您可以构建大规模的跨平台应用程序,问题更多的是它需要的专业化程度(以及您的平台有多深奥).
那么哪些大型跨平台应用程序已用D编写?给我们举个例子,而不仅仅是说多米尼克的答案是错误的.

2> xan..:

只是为了添加我自己的经验:

大约一年前,我参与了一个持续3个月的小规模游戏项目(3个编码器),我们用D作为主要语言.我们之所以选择它作为一个实验,部分是因为它已经对SDL和我们正在使用的其他工具进行了绑定,并且主要是因为它们的好处似乎超过了C++.

我们喜欢使用它.它学得快,易于编写.它的许多功能证明是非常宝贵的,我想念它们回到C++.

但是,以下几点使我们的生活变得更加困难:

    当时没有好的IDE是一个主要问题.我们最终通过自定义Scite来制作自己的.这工作正常,但并不理想.

    当时没有调试器.我们设法让WINDBG在一个命中或未命中的基础上工作,但它是不可靠的.没有调试器的调试代码有时会让人感到生气.

    当时有2个标准库可供选择(Tango和Phobos).我们从一个开始,切换到另一个,并且真正需要两者的混合功能(Tangobos!).这导致头痛和一些代码重写.

    绑定到其他不可用的工具.最后我们不得不切换到DirectX(原因我不会进入).DirectX没有可用的绑定,因此我们必须在C++中编写自己的绑定,将其构建为.dll并绑定到它.这是相当讨厌的工作,花了一些时间.

总的来说,我们喜欢写D.它实际上编写代码很容易,并且很快学习.我提到的问题回应了这个问题已被接受的答案 - 它是需要在D中解决的"额外"位,它的核心是可靠的.


我不明白为什么DirectX是个问题.我不是D程序员,但我认为D能理解C?DirectX有一个C API吗?
很酷的输入...现在有一个调试器!:)

3> philsquared..:

我同意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--但是我的钱在未来两年内就会转变.


系统级编程的C没有下降.Linux,Windows和OS X都是用C语言开发的.同样,许多用于微控制器的微控制器和操作系统都是用C编程的.
@mikeobi哈哈!这两年从你读这句话开始;-)
不错的预测.这篇帖子已经过去2年了,D与主流采用没有任何关系.
我不认为D"做所有正确的事情".正确的做法是从头开始,而不是尝试制作更好的C++.我认为需要进行更彻底的改变来证明大规模切换C++的合理性.
Kevin:Windows和OS X不是用C语言开发的.当然,内核的块是,但是Windows使用了大量的C++和OS X Obj-C.Linux是我所知道的唯一一个操作系统,其中C被提升到一个真正的语言状态,没有使用其他任何东西.
在这里,我们差不多四年了,看起来情况并没有改变.现在我想知道Java和C#如何能够如此成功......我想由Sun或者微软这样的主要厂商支持会带来不同......
哈!刚好回头看看这个.是的,我很难说,但看起来D已经错过了它的机会.我的预测错了(当时我写了我原来的回复,我也买了巴克莱资本的股票!).就个人而言,我现在更多地关注F#,尽管这不符合系统语言角色.如果你需要一种系统语言,那么C&C++仍然是可靠的选择(C++ 11是一种非常好的语言刷新).还有像Go这样的其他语言正在获得一些牵引力 - 但不确定他们是否能够达到他们应有的程度.
另一年后,我认为可以肯定地说这个前提已经被否定了.也就是说,C++已经巧妙地从死胡同中走出来,并且至少在过去5年左右的时间里,它已经去过好地方.虽然它受到向后兼容性,上下文敏感语法等的影响,但它几乎在所有方面都有所改进.所以C++的合法继承者将是更新式的C++.
我同意凯文.在那些地区,C和往常一样强大.
C没有下降,很难看出你如何证明这种说法的合理性.但是,C++可能是
这是一篇非常好的评论,我想读D语言.我认为你拥有的专家级别和经验越多,你就越喜欢D,因为它有所有实用的技巧,这就是他们对这种语言的美感.
@philsquared 2016已经过了一半,在这个"D语言"的任何地方都没有,而C++,C,C#,Java仍在蓬勃发展.D是一种死的编程语言,如果不是那样的话.

4> DarenW..:

我喜欢D是一个天才的作品,主要是一个人 - Walter Bright,他的Zortech编译器当时很棒.

相比之下,即使Bjarne具有影响力,C++也是委员会设计的过多.太多的附加功能和奇怪的新语法.这种差异反映了学习的简易性和日常使用的便利性,减少了错误.

更连贯的语言可以带来更高的生产力和程序员的喜悦 - 但这是主观的和有争议的!(我想我应该把我自己的答案投下来)


现在还有另外一个天才 - Andrei Alexandrescu.他对D2.0的所作所为,恕我直言,至少和沃尔特对D1.x所做的一样令人惊讶.在他们两个之间(并没有折扣其他众多贡献者)D正在成为一种不可忽视的语言.关注此空间
所以C++最初是由一个非常聪明的人创建的,现在由一个非常聪明的人组成的委员会控制,而D最初是由一个非常聪明的人创建的,现在由一群真正聪明的人控制.是的,我知道这是如何使D优越的.;)(提示:C++的丑陋与委员会无关.它是语言设计目标的结果.它的目的是(几乎)是C的一个子集.D不是,并且不打算如此,这意味着它可以避免很多疣(以避免它带来的普及为代价)
让3名(或更多)成为优秀的程序员:Bartosz Milewski
@jalf你是对的,因为C++的"丑陋"不是由委员会设计的.然而,它在进化中是缓慢的.

5> Spodi..:

D是一种很好的语言并且很受欢迎,但与所有语言一样,它只是另一种工具.使用哪种工具取决于您的人选类型,您的想法,您工作的环境,语言的哪些限制适用于该计划,最重要的是,程序本身.如果你有时间,我肯定会建议学习D.最糟糕的情况,你永远不会使用它.您更有可能了解自己最喜欢哪些方面,以及在什么条件下最闪亮,并在制作新程序时利用它.

我建议查看D比较图表,看看该语言的功能是什么,看看它是否适合您.



6> 小智..:

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语言有很多更好的理由,没有理由低估任何语言,它始终是用户的选择.



7> larsivi..:

这实际上取决于您的需求 - 用D编写的大型商业应用程序确实存在于服务器端,而D(通常使用Tango/Mango)是完美的选择,并且您可能能够提供更多请求比任何其他语言/平台.

对于协议和交互性(许多都是)的更专业的解决方案,您将在查找所需的库时遇到更多问题,并且缺少工具可能会对您产生更多影响.



8> AmigoNico..:

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的相对优点/目标/方法的讨论.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!