真实世界中的D编程语言?[关闭]


138

外面有人在现实应用中使用D吗?如果是这样,您将其用于什么?我似乎在用D编写的网络上找不到任何重要的东西。

尽管缺少知名的大用户,但D对我而言似乎是一种非常令人发指的语言,根据TIOBE的说法,它相当受欢迎。


11
最近在dlang论坛上宣布,Facebook现在在生产中使用D。
sghill

没有什么大不了的,因为D本身对于构建大型复杂应用程序而言是很差的。表面上看起来很棒,但是一旦您尝试进行任何商业化,所有的裂缝就会开始显现出来,并且粉丝们几乎没有为商业受众创建适当的结构化软件的愿望(我敢肯定,金钱与这有很多关系领导力和组织也是如此)。编写命令行实用程序或5k线路算法是一回事,但是创建涉及多个区域(例如gui,音频等)的非常复杂的业务应用程序则完全不同
。– Stretto

当然,您可以一起破解某些东西,但这并不商业。企业不会将自己的时间/金钱投入到如此脆弱的事情上。没有合适的IDE,我用过的每个IDE都让我想砸东西。正确调试应用程序的速度要慢大约10倍,因为错误消息非常糟糕,调试器无法工作或对您不利,我们期望的现代功能不存在或较差,并且由于没有逻辑结构而使该库变得富fubar'ed(事物被“任意移动”,诸如“ chomp”和“ detabber”之类的奇怪命名方案等)
Stretto

我猜是阴/阳。D中的某些东西太神奇了,还没有什么要完成的……但是另一方面,它失败的原因也很强大。人们只有在真正花时间编写真实的应用程序时才发现这些东西,而不是琐碎的或算法性的事情。直到D组织将它们放在一起(它们需要花多长时间?10年,20年?),否则真正的企业将不会对其进行投资。时间就是金钱,没有企业愿意花10倍的时间来调试应用程序,因为IDE不足以解决问题。
Stretto

@Stretto是什么意思?dlang.org/orgs-using-d.html
Bauss

Answers:


77

我在计算机图形学领域的研究工作中使用了D。我和其他人已经基于使用D完成的工作在我们的领域发表了论文。我认为对于性能至关重要的中小型研究项目,它肯定可以使用。这非常适合研究工作,因为无论如何您通常都是从头开始,因此您不必担心要与之集成的大量旧代码。

另一个受欢迎的领域似乎是Web服务。希望其他人可以评论这个领域的人,但是我也认为,性能通常很重要,因此您需要一种编译为金属的语言。服务通常是很小的,独立的进程,因此与大量旧式C ++代码互操作并不是真正必要或有用的。因此,D可以踏入门。

我认为D将以这种方式继续赢得基层关注者-在较小的项目上,无论出于何种原因,这些项目都可以放弃C ++的遗产,从而获得一种更令人愉悦的使用编程语言,也许还会提高生产力。

但是,除非有大量的基层用户,否则我怀疑大型企业用户的方式不会太多。


10
我纯粹用D来开发客户端/服务器应用程序,并绑定到C库,但仅针对荷兰最受欢迎的服务之一的客户端的GUI部分。尽管我不得不说服我的老板,但是他似乎并不后悔。;-)-D在这里特别闪耀,因为即使在Windows上,标准库也提供了BSD套接字的实现。一次写入,可以部署到任何地方,非常好。
Jesse Brands

@JesseBrands您使用phobos还是探戈?
2014年

88

我在D从事生物信息学工作。对我而言,D的关键在于,它采用一种非常头脑冷静的方法进行权衡,并认识到收益递减的原理。

与严格遵循零开销原则的C ++不同,D如果允许某些特性使语言更加实用,则允许其性能/空间成本降低。其中包括垃圾收集,每个类的监视对象,运行时类型信息等。

与Ruby,Python,PHP等不同,D试图与C几乎一样快,即使它的动态性比脚本语言要差,并且编程难度也比C语言略高。
结果是一种语言,在开发时间和执行时间都差不多时,这是一种最佳语言,在我的领域中,这是大多数时间。

同样,D在安全性和灵活性方面采取了非常严格的方针。它假定程序员基本上知道他们在做什么,但确实会犯错误。

与C和C ++不同,它假定您不想在代码中的任何地方都使用指针,不安全的强制转换,手动内存管理等,因为它们容易出错,并且假定您不想在多处进行筛选。页模板错误消息(仅使用可调整大小的数组时)。

与Java和其他约束和纪律语言不同,D假定有时指针,不安全的强制转换,手动内存管理等是必不可少的,并假定您足够聪明,可以处理实际模板,运算符重载等而无需编写混淆的代码。它还假定您可能搞砸了并访问了一个数组,但程序员最清楚在任何给定情况下都应该在安全性和速度之间进行权衡。因此,是否通过边界检查数组仅由编译器开关确定。


2
什么是监视对象?我似乎找不到结果。
Samaursa 2014年

2
与C ++相比,我非常喜欢D语言。更快的编译时间,更少的代码使用能力,没有头文件等。然而,问题是它缺少进行认真的GUI工作的任何人。当然,我可以使用GtkD,但尝试绘制一系列花式图表。我看到与Chromium集成以进行GUI的工作很有前途,但是该项目基本上没有文档记录,并且在该领域需要更多的参与者。我希望这种变化,但这就是我在2015
。– Volomike

对象监控器是bulsh **。它锁定了整个方法,真的很浪费……
dev1223

@Volomike我最近也一直在研究D,同样,用它来制作图形界面工具也很困难。我目前没有使用D制作优雅的GUI工具的实际解决方案,而我可能很快就会着手解决这个问题。
dimiguel '16

32

我知道有一家较小的公司已经向市场发送了邮件服务器产品。他们至少有2个人专职从事该项目。

此外,IT业务的主要参与者有几名员工在较大的内部项目中使用D。

此外,我知道有一家公司正在寻求风险投资,在小公司中有几名(至少4名)员工部分或全职使用D,至少有几名(包括我在内)在咨询市场上积极寻找机会。

我可能遗漏了一些我本应该知道的,也许我还没有听说过的,但是仍然存在,因为以上内容或多或少是我在社区中认识的。

我目前收入的一小部分来自D。


您能否提名这些组织?进一步了解这些项目也将是一件很高兴的事情。
nbro

28

我使用D进行Web开发,事实证明,与C / C ++相比,D的生产率更高。当然,有很多基于ruby / php / python的框架。但是,当您要开发独特的东西时,就像在许多脚本语言中一样,它的速度必须与C一样快,并且几乎像编程一样容易,那么D是一个不错的选择。


3
请问 您使用什么框架或库?
Zelenova 2014年

26

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

随着SWT / JFace的不断移植,我计划做更多的工作并在D中工作,而我以前用Java可以完成。



19

我正在使用D进行有关编译时代码转换的研究。先进的模板与元组和mixin结合使用,使代码转换变得更加容易,并允许在编译时完成代码转换,而无需单独的工具。

有一些物理学家使用D来通过D中的元编程来增强其程序的示例。

视频 -会议讲话,找不到物理学家使用的来源站点。


我的一个类似的项目,也位于D dsource.org/projects/scrapple/browser/trunk/dparser/dparse.d
BCS


14

我当前的工作任务是将C#转换为D的系统。这是开发软件系统的盈利计划的一部分。




7

ABA Games发行的许多游戏都是用D 1.x编写的,尽管我认为控制台端口必须用C ++重写。

我已经用D编写了很多游戏原型,但是我不确定这是否可以称为“真实世界”,因为我是出于自己的利益编写它们的,并且从未发布过任何原型。


您能否更具体地说明使用D创建了哪些游戏?
nbro

7

我编写了(并且仍在维护和开发)一种软件,用于将测试仪协议从各个硬件测试站转换为标准化的输出格式,以实现可追溯性和类似的工作。

用D 1.x和Phobos库编写的超过5k行代码。

D非常易于学习,并且无视某些陷阱(在Phobos库中)对于编程确实是一种乐趣。


6

在开发全局优化算法的研究项目中,我使用了D。我将其应用于训练神经网络的问题。是否要称为“现实世界”取决于您。


是否提供有关您所做工作的源代码或某些信息?
nbro


6

我使用D2,该版本的第二个标准。我编写了实时应用程序(例如3D引擎)。

语言每天都在变得越来越强大。我认为D非常实用,所有嵌入式功能(尤其是元编程范例)使它远远超过了C ++。语法更清晰,您可以通过filterreduce之类的功能来利用函数式编程的优势,并且是最重要的功能之一:可以使用所有C库。

绝对是我最喜欢的语言,而且我敢肯定,它将是一种广泛使用的语言。


是否可以查看使用D创建的内容的源代码?
nbro

那条评论已经有一段时间了!我现在主要使用Rust和Haskell进行编码,但是我有一些项目。我的github上有一些东西,但我认为不值得去研究。该评论已有4岁!我应该看看所有这些的当前状态…
phaazon

4

我想我们可以从缺乏对这个问题的立即答案的角度读到一些东西,那就是,没有多少/任何积极的stackoverflow响应者正在使用D。链接到。

话虽如此,沃尔特·布赖特(Walter Bright)从事这种语言的研究已经有很多年了,我认为他有很多“追随者”,他们都记得他在90年代对Zortech C ++编译器所做的出色工作。我还注意到,该语言现在似乎倾向于功能性方向。


3
实际上,现在不可能在此网站上搜索D。搜索“ d”或“ d编程”时说“没有命中”,然后在标签上搜索“ d”,列出一整页包含“ d”但本身不包含“ d”的标签。因此,这也可能与此有关。
Baxissimo

20
在搜索框中搜索[d]以进行基于标签的搜索。
Gregg Lind


0

我正在开始一个项目,以将我们的一些内部工具从Perl重写为D。我之所以选择D,是因为我对该语言的设计理念感到非常兴奋。我已经进行了很长时间的编程,并使用了许多语言,从汇编程序到高级语言(大部分为C)再到脚本语言(大部分为Perl),D是我多年来一直热衷于学习的第一语言。 。

我决定迁移到编译语言是出于一个主要原因-安全性。从功能上讲,Perl在我使用的工具集上工作得很好,但是它是不安全的-任何可以运行脚本的人都可以读取,复制和创建自己的工具修改版本。(而且确实如此。)我知道有一些circuit回的方法可以解决这个问题(有点),但是老实说,我一天没有足够的时间来处理所有这些问题,仍然可以完成我的主要工作。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.