D编码

科技工作者之家 2020-11-17

D是一种面向对象,势在必行的多范式系统编程语言。 虽然它起源于C ++的重新设计,但D是一种独特的语言,重新设计了一些核心C ++特性,同时也从其他语言中获得灵感,特别是Java,Python,Ruby,C#和Eiffel。

特点D的设计经验教训来自实际的C ++使用,而不是纯粹的理论视角。虽然它使用了许多C和C ++概念,但它也放弃了一些,并且与C和C ++源代码不兼容。然而,D的设计受到以下规则的限制:任何在C和D都合法的代码应该以相同的方式行事。D在C ++之前获得了一些功能,例如闭包,匿名函数和编译时函数执行。D通过契约,单元测试,真模块,垃圾回收,一数组,关联数组,动态数组,切分数组,切片,嵌套函数,延迟评估和重新设计的模板语法来实现设计,从而增加了C ++的功能。 D保留了C ++执行低级编码和添加内联汇编程序的能力。C ++多继承被具有接口和mixins的Java风格的单继承所取代。另一方面,D的声明,语句和表达式语法与C ++的语法紧密匹配。

内联汇编程序代表D和Java和C#等应用程序语言之间的差异。内联汇编程序允许程序员在标准D代码中输入特定于机器的汇编代码,系统程序员经常使用这种方法来访问处理器所需的低级功能,以运行直接与底层硬件接口的程序,例如操作系统和设备驱动程序。D内置了对文档注释的支持,允许自动生成文档1。

历史Walter Bright于1999年决定开始使用新语言.D于2001年12月首次发布,并于2007年1月达到1.0版。语言的第一个版本(D1)集中在命令式,面向对象和元编程范式上,类似于C ++。

对Phobos,D的官方运行时间和标准库不满意,D社区的成员创建了一个名为Tango的替代运行时和标准库。第一个公开的Tango声明是在D 1.0发布后的几天内发布的。Tango采用了不同的编程风格,拥抱面向对象和高度模块化。作为一个社区主导的项目,Tango更愿意接受捐款,这使得它比官方标准图书馆进步得更快。那时,由于不同的运行时支持API(垃圾回收器,线程支持等),Tango和Phobos不兼容。这使得无法在同一个项目中使用这两个库。由于一些软件包使用Phobos和其他使用Tango的软件包,两个库的存在导致了很大的争议。

在2007年6月,D2的第一个版本发布了。 D2发展的开始标志着D1的稳定;该语言的第一个版本已进行维护,只接受更正和实施错误修正。 D2是从第一个实验常量系统开始,引入对语言的重大改变。 D2后来增加了许多其他语言功能,例如关闭,纯度以及对功能和并发编程范例的支持。 D2还通过将运行时与标准库分离来解决标准库问题。 D2探戈港完成于2012年2月宣布。

2010年6月12日Andrei Alexandrescu的书The D Programming Language的发布标志着D2的稳定,通常被称为“D”。

2011年1月,D开发从bugtracker / patch-submission基础转移到GitHub。这导致了对编译器,运行时和标准库贡献的显着增加。

2011年12月,Andrei Alexandrescu宣布,该语言的第一个版本D1将于2012年12月31日停止使用。最终的D1版本Dv1.076于2012年12月31日发布。

D编译器的官方代码,Walter Bright编写的Digital Mars D编译器最初是在定制许可下发布的,符合可用源码但不符合开源定义。在2014年,编译器前端在Boost软件许可下被重新授权为开源。此重新授权的代码排除了赛门铁克部分开发的后端产品。 2017年4月7日,赛门铁克同意对后端进行重新许可后,整个编译器都可以通过Boost许可证获得。于二零一七年六月二十一日,D语言被接纳列入GCC。

开发工具支持D的编辑器和集成开发环境(IDE)包括Eclipse,Microsoft Visual Studio,SlickEdit,Emacs,vim, SciTE,Smultron,TextMate,MonoDevelop,Zeus,和Geany等。

a. D的Eclipse插件包括:DDT [38]和Descent(死亡项目)。
b. Visual Studio集成由VisualD提供。
c. Visual Studio代码与Dlang-Vscode 或Code-D的扩展集成。
d. Vim支持语法高亮和代码完成。
e. 一个包可用于TextMate,而Code :: Blocks IDE包含对该语言的部分支持。然而,诸如代码完成或重构之类的标准IDE功能尚不可用,尽管它们部分在Code :: Blocks中工作(由于D与C相似)。
f. Xcode 3的插件是可用的,D用于Xcode,以支持基于D的项目和开发。
g. MonoDevelop的AddIn可用,名为Mono-D。
h. KDevelop(以及它的文本编辑器后端,凯特)autocompletion插件可用。
i. Coedit,一个专用于D的开源IDE。

存在用于Windows的开放源码D IDE,一些用D编写,如Poseidon, D-IDE,和Entice Designer 。

D应用程序可以使用任何C / C ++调试器进行调试,例如GDB或WinDbg,尽管对各种D特定语言功能的支持非常有限。在Windows上,在使用cv2pdb转换调试信息后,可以使用Ddbg或Microsoft调试工具(WinDBG和Visual Studio)来调试D程序。Linux的ZeroBUGS调试器为D语言提供了实验支持。 Ddbg可以与各种IDE或命令行一起使用; ZeroBUGS有它自己的图形用户界面(GUI)。

例子这个示例程序打印其命令行参数。 主函数是D程序的入口点,args是表示命令行参数的字符串数组。 D中的字符串是由D1中的char [ ]或D2中的immutable(char)[ ]表示的字符数组。

import std.stdio: writefln;void main(string[] args){ foreach (i, arg; args) writefln("args[%d] = '%s'", i, arg); }foreach语句可以遍历任何集合。 在这种情况下,它将从数组参数中生成一系列索引(i)和值(arg)。 索引i和值arg根据数组参数的类型推断出它们的类型。

本词条内容贡献者为:

李岳阳 - 副教授 - 江南大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。