D编程语言在实际应用中的使用情况?

140

是否有人正在使用D语言进行真实的应用程序开发?如果是,你们用它来做什么?我在互联网上似乎找不到任何用D语言编写的大型项目。

尽管缺少众所周知的大型用户,但我认为D语言似乎是一种非常有前途的语言,而且根据TIOBE的数据,它相当受欢迎。


12
最近在dlang论坛上宣布,Facebook现在正在生产中使用D语言。 - sghill
没有什么大不了的,因为D语言本身对于构建大型复杂应用程序而言相当薄弱。它在表面上看起来很棒,但一旦你尝试做任何商业化的事情,所有的裂缝都开始显露出来,而且粉丝们几乎没有什么愿望为商业受众创建适当结构化的软件(我相信金钱有很大关系,但领导力和组织也同样重要)。写一个命令行实用程序或一个5k行算法是一回事,但创建涉及多个领域(如GUI、音频等)的非常复杂的业务应用程序则完全不同。 - Stretto
当然,你可以把一些东西拼凑在一起,但那不是商业化的。企业不会投资时间/金钱在一个如此不稳定的东西上。没有适当的IDE,我用过的每一个都让我想砸东西。正确调试应用程序要慢大约10倍,因为错误消息很糟糕,调试器要么不工作,要么反对你,我们期望的现代功能不存在或很差,库也很混乱,因为它没有逻辑结构(事物被“任意”移动,奇怪的命名方案如“chomp”和“detabber”等)。 - Stretto
我猜这就是阴阳。D语言中有些东西非常棒,没有任何其他语言能够媲美......但另一方面,它失败的地方也相当明显。只有在真正投入时间编写实际应用程序而不是琐碎或算法性质的东西时,人们才会发现这些问题。在D组织整顿好自己之前(需要多长时间?10年、20年?),真正的企业是不会投资它的。时间就是金钱,没有哪个企业愿意因为IDE不达标而花费10倍的时间来调试应用程序。 - Stretto
@Stretto 你是什么意思?https://dlang.org/orgs-using-d.html - Bauss
2
@Stretto,你对这门语言的不了解并不意味着它不好。我从未在设置D语言的工作环境时遇到过问题,并且我将其用于商业工作。 - Bauss
20个回答

89

我在 D 中从事生物信息学工作。对我来说,D 的关键是它采用非常冷静的权衡方法,并认识到收益递减原则。

与严格遵循零开销原则的 C++ 不同,如果某些特性使语言更易用,则 D 允许具有一定性能/空间成本的功能。这些包括垃圾回收、每个类的监视器对象、运行时类型信息等。

与 Ruby、Python、PHP 等不同,D 试图尽可能地接近 C 的速度,即使它比脚本语言更少动态且稍微难编程。
结果是一种当开发时间和执行时间同等重要时最优的语言,在我的领域中这是大部分时间都是如此。

同样,D 对安全性和灵活性采取非常冷静的方法。它假设程序员基本上知道自己在做什么,但会犯错误。

与 C 和 C++ 不同,它假设您不想在代码中的每个位置都使用指针、不安全转换、手动内存管理等,因为它们容易出错,并假定您不想在出错时浏览多页模板错误消息以使用可调整大小的数组。

与 Java 和其他束缚和纪律性语言不同,D 假设有时需要使用指针、不安全转换、手动内存管理等,并假定您足够聪明,可以处理真正的模板、运算符重载等而不编写混淆的代码。它还认为您可能会出错并访问超出范围的数组,但程序员最了解在任何情况下安全和速度之间应该做出什么权衡。因此,是否对数组进行边界检查仅由编译器开关确定。


2
什么是监视器对象?我似乎找不到相关结果。 - Samaursa
2
相比C++,我非常喜欢D语言。它具有更快的编译时间、使用更少的代码、没有头文件等优点。然而,问题在于缺乏人们进行严肃的GUI工作。当然,我可以使用GtkD,但是尝试绘制一系列花哨的图表。我看到了与Chromium集成GUI的有希望的工作,但该项目文档不完整,需要更多的参与者。我希望这种情况会改变,但这就是我在2015年9月看到的情况。 - Volomike
对象监视器是胡说八道。它锁定整个方法,真的非常浪费... - dev1223
@Volomike 我也一直在关注 D 语言,同样地,使用它来制作图形界面工具也很困难。目前我还没有找到任何实用的解决方案来制作优雅的 D 语言 GUI 工具,这是我可能会很快开始解决的问题。 - dimiguel

77

我在计算机图形学领域的研究工作中使用D语言。我和其他人已经发表了基于D语言开发的论文。我认为D语言绝对可以用于小到中型的侧重于性能的研究项目。对于研究工作来说,它非常适合,因为通常你从头开始进行,所以不必担心与遗留代码的集成。

另一个流行的应用领域似乎是Web服务。希望其他在这个领域的人可以发表评论,但是我认为,在这里,性能真的很重要,因此需要一种编译到底层的语言。服务通常是相当小的、自包含的进程,因此与大量遗留的C++代码进行互操作并没有什么必要或有用。因此,D语言可以进入市场。

我认为,D语言将继续通过这种方式获得草根级别的追随者——在某些原因可以放弃C++遗留代码而选择更加愉悦、也更可能更加高效的编程语言的小型项目中。

但是,在没有大量草根用户的情况下,我想大型公司用户也不会太多。


11
我纯粹使用D语言开发客户端/服务器应用程序,其中一些绑定到C库,但仅针对荷兰最受欢迎的服务之一客户端的GUI部分。虽然我不得不说服老板,但他似乎没有后悔。;-) -- D特别出色的地方在于其标准库提供了一个BSD套接字的实现,即使在Windows上也可以使用。一次编写,到处部署,非常好。 - Jesse Brands
@JesseBrands 你使用Phobos还是Tango? - qed

33

我知道一家小型公司推出了一款邮件服务器产品,他们至少有两名全职员工参与了这个项目。

此外,IT业的一家主要企业在内部的大型项目中有几名员工使用D语言。

此外,我还知道一家正在寻求风险投资的公司,有几个(至少4个)小公司的员工部分或全部时间使用D语言,并且至少有几个人(包括我在内)正在积极寻找咨询市场的机会。

我可能忽略了一些我本该知道的事情,也可能有一些我没有听说过但仍然存在,因为以上信息更多地是我自己通过社区得知的。

目前我的收入中只有一小部分来自于D语言。


请您能否提名这些组织?了解更多关于这些项目的信息也会很好。 - nbro

30

我使用D语言进行Web开发,相比C/C++,它证明了更高的生产力。 当然,基于Ruby/PHP/Python的框架也有很多。 但是,当你想要开发一些独特的东西,既需要像C语言一样快速,又需要像许多脚本语言一样易于编程时,D语言是一个不错的选择。


4
请问,您使用哪个框架或库? - Zelenova

26

我使用D语言作为硬件在环(HIL)测试环境。这是用于汽车领域的软件测试。D语言可以在此处使用,因为作为系统编程语言,它可以用于实时程序(IRQ处理程序在Linux实时扩展RTAI-LXRT中)。

随着SWT/JFace的持续移植,我计划在D语言中进行更多工作,这些工作以前都是在Java中完成的。


22

Facebook宣布从今天起开始在生产中使用它。


1
相关讨论:http://www.reddit.com/r/programming/comments/1o7p2f/facebook_is_using_d_in_production_starting_today/ 和 https://news.ycombinator.com/item?id=6532322 - Animesh

20

我正在使用D语言研究编译时代码转换。高级模板结合元组和混入使得代码转换更加容易,并且可以在编译时完成代码转换,而无需使用单独的工具。

有一些物理学家使用D语言进行元编程来增强他们的程序。

视频 - 会议演讲,未找到物理学家使用来源网站。


1
我的一个类似的项目,也是用D语言编写的: http://www.dsource.org/projects/scrapple/browser/trunk/dparser/dparse.d - BCS

18
我们整个(高流量)网络基础设施仅依赖于D1和tango。我们是一家年轻的柏林初创公司:sociomantic.com

15

我的当前工作任务是开发一个将C#翻译成D的系统,这是一个盈利项目的一部分,旨在开发软件系统。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接