首页 文章

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

提问于
浏览
158

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

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

13 回答

  • 10

    决定编程语言在现实世界软件开发中的成功和普及的因素仅与语言本身的质量有关 . 作为一种纯语言,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作为 Health 语言混合的一部分 . 当需要原始性能和小内存使用时,仍然很难击败C语言 .

  • 3

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

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

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

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

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

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

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

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

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

  • 126

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

  • 2

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

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

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

  • 4

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

    我建议查看D comparison chart以查看该语言的功能,看看它是否适合您 .

  • 15

    D语言很现代 . 没有语言是完美的,毫无疑问 . 但语言的诞生是为了让生活更轻松 . 在复杂性方面,D语言与C语言相比具有很多优点 . 还涉及许多其他语言组合专业,这有助于编码人员更快地编码,其他语言引入了TOP功能 . 请参阅:for more details about D and other languages

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

  • 104

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

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

  • 7

    D非常令人印象深刻,安德烈关于它的书写得很好 . 但正如其他人所说,您需要工具和平台支持 . 随着时间的推移,GDC可能是两者的答案 .

    你见过这个吗?

    "GNU Debugger adds D language support":http://www.linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support

    此外,数字 Map 网站还有讨论与C和C接口的页面(对于那些你不能没有的图书馆) . 我想知道在给定C头文件的情况下是否有任何工具可以用来编写D原型 .

    我个人不会在这一点上推动在D中做一个大型项目,但我会将D用于内部工具,获得经验并引入其他工具 .

    最初的问题是D是否是Java和C的可靠替代品 . 我不认为D和Java真的会在实践中竞争太多; D与C竞争,现在Go . 其他问题解决了D和Go之间的差异,但Go通常被认为更容易使用 . 所以我怀疑D的未来在很大程度上取决于它在目前的山丘之王C和Go之间的呼吸空间,这是谷歌支持的更容易的替代方案 .

    更新:我刚刚发现my favorite chapter of Andrei's book,一个关于并发的,可以免费在线获得 . 绝对值得一读!

    这是一个loooong discussion about the relative merits/objectives/approaches of Go and D .

  • 21

    看起来问题已得到解答 . 与C相比,D是更好的语言 .

    对于实际目的而言,D是否具有更好的基础设施的问题是次要的 .

    简而言之,如果它们都是全新的语言而没有任何支持,那么D是更好的语言,因为它是更好的语言 .

  • 7

    作为一种语言,我总觉得D比C更接近C# . 不是功能和库,而是“感觉” . 它更清洁,更好......有趣(比C) . 恕我直言,成为可靠替代品的最大障碍是工具,IDE和调试器 . 如果D克服了广泛使用/采用的一些障碍,将会出现更多的工具和库 . (如果有可用的IDE和调试器,我自己会返回D . )

  • 3

    适合我自己的宠物项目 . 我将它用于雇主的项目,但不知道在我继续前进之后找到某人接管来源会有多难 . 至少在支持的平台上,没有技术上的理由可以避免它 . (敲木头)

  • 4

    一种方法是搜索您所在地区的工作 . 找到你想做的工作,看看他们要求的技能 . 如果他们要求C或Ruby或Oracle或D,那么这项技能主要是帮助您获得所需的工作 .

  • 60

    它看起来像一个设计精良的语言;比C - C更好 - 目标C.我可以在没有IDE或调试器的情况下生活一段时间,但不是没有一个好的,有文档的D 2.0库 .

    我会在6个月内回来查看......

相关问题