关于流行度:现实世界中的D编程语言?

关于流行度:现实世界中的D编程语言?

D Programming Language in the real world?

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

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


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

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

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

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

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

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


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

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

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

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


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

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

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

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

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


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


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

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


Facebook宣布,截止到今天,他们正在生产中使用它。


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

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

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


我们的整个(高流量)网络基础架构仅基于D1和探戈。我们是柏林的一家年轻创业公司:sociomantic.com


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


好吧,我和其他人一样在D中写了几篇研究论文。

http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D.announce&artnum=13337

http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.announce&article_id=9466。


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

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


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

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

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


看来Remedy Games的游戏具有大型D2代码库(请参见Manu Evans编写的D与游戏引擎一起使用-DConf 2013)。

他们是一个大公司,知道一个大公司正在使用D是非常好的。


我写了一个在OS X上构建DGCC的包装器脚本

http://github.com/davecheney/make-gdc-apple/tree/master

我很乐意听到其他DMD程序员的来信


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

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

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


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


我想我们可以读到一些缺少该问题立即答案的东西,那就是很少/任何活跃的stackoverflow响应者正在使用D。对于您在TIOBE列表中其排名的水平,我也感到有些惊讶链接到。

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


D的官方网站枚举了当前正在使用D的组织。

http://dlang.org/orgs-using-d.html

D Wiki还提供了组织列表,但是已经过时了。

只需仔细观看DConf谈话即可。

  • DConf 2013
  • DConf 2014

那里几乎所有人都在某公司工作,他们在工作中使用D。


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

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


我使用ldmd2在D中启动了光线跟踪渲染器。

http://palaes.rudanium.org/SubSpace/render.php


推荐阅读

    linux打开网络命令?

    linux打开网络命令?,网络,系统,地址,工作,信息,工具,管理,命令,基础,状态,Lin

    linux网络修改命令?

    linux网络修改命令?,地址,网络,系统,工作,服务,代码,管理,命令,工具,设备,Lin

    linux命令行网络流量?

    linux命令行网络流量?,工具,系统,信息,网络,实时,状态,代码,服务,联通,号码,

    linux命令行网络流量?

    linux命令行网络流量?,工具,系统,信息,网络,实时,状态,代码,服务,联通,号码,

    linux命令网络管理员?

    linux命令网络管理员?,系统,密码,工作,地址,命令,传播,设备,电脑,用户,目录,L

    linux网络故障命令?

    linux网络故障命令?,网络,地址,系统,信息,状态,命令,环境,服务,电脑,流程,浅

    linux网络命令io?

    linux网络命令io?,系统,情况,网络,状态,实时,信息,数据,时间,命令,服务,在lin

    linux重置网络命令?

    linux重置网络命令?,网络,地址,工作,环境,系统,信息,标准,设备,命令,工具,lin

    linux高级网络命令?

    linux高级网络命令?,网络,地址,系统,工作,信息,管理,设备,电脑,命令,目录,Lin

    linux网络参数命令?

    linux网络参数命令?,网络,地址,系统,工作,信息,工具,情况,服务,状态,命令,Lin

    linux下的网络命令?

    linux下的网络命令?,网络,系统,信息,工具,命令,管理,工作,设备,发行,技术指

    linux下创建网络命令?

    linux下创建网络命令?,网络,地址,工作,系统,管理,命令,名字,最新,项目,设备,l

    linux命令行链接网络?

    linux命令行链接网络?,网络,系统,地址,工作,工具,最新,网址,数据,信息,环境,l

    linux网络速度命令?

    linux网络速度命令?,网络,工作,地址,系统,电脑,命令,网卡,信息,通讯,设备,Lin

    linux网络开启命令行?

    linux网络开启命令行?,网络,地址,系统,环境,设备,工作,通用,服务,数据,网址,

    linux的配置网络命令?

    linux的配置网络命令?,地址,系统,网络,代码,服务,管理,密码,信息,基础,命令,l

    linux下查网络命令?

    linux下查网络命令?,网络,系统,地址,工具,状态,管理,基础,服务,中心,信息,lin

    linux网络命令查询?

    linux网络命令查询?,信息,网络,系统,地址,工作,状态,技术,电脑,命令,设备,lin

    linux网络延时命令?

    linux网络延时命令?,网络,时间,检测,地址,电脑,系统,设备,工具,基础,管理,lin

    linux网络联通命令?

    linux网络联通命令?,网络,地址,工作,系统,信息,联通,电脑,命令,检测,管理,Lin