D语言DMD是一种通用的系统和应用编程语言。它是比 C++ 更高级的语言,同时还保持了生成高效代码以及直接访问操作系统API和硬件的能力。D 很适合于编写从中等规模到那些由团队合作完成、数百万行代码规模的各种程序。D 易于学习,为编程者提供了很多便利,并且适用各种野心勃勃的编译器优化技术。
D语言 详细介绍
D语言(Dlang)是由Digital Mars公司开发的编程语言,起因是为了改进C++。它与C二进制兼容(不完全),可编译为本地码,有GC也可手动管理内存,语法上借鉴多种语言,模板则 在C++的基础上做了相当大的扩充。D 语言既有 C 语言的强大威力,又有 Python 和 Ruby 的开发效率。它是一种集垃圾回收、手工内存操作、契约式设计、高级模板技术、内嵌汇编、内置单元测试、Mixin 风格多继承、类 Java 包管理机制、内置同步机制、内建基本运行时信息的系统级编程语言。
D 不是脚本语言,也不是一种解释型语言。它不需要虚拟机、宗教、或者高于一切的哲学。它是给实际的编程者使用的实际的语言,它帮助编程者快速、可靠的完成易于维护、易于理解的代码。
D 是数十年来实现多种语言编译器的经验的积累,是用那些语言构造大型工程的尝试的积累。D 从那些语言(主要是 C++ )那里获得了灵感,并使用经验和现实世界中的实用性来驯服它。
为什么是 D ?
确实,为什么?有谁需要另一种编程语言?
自从 C 语言被发明以来,软件工业走过了一段很长的路。许多新的概念被加入了 C++ 中,但同时维护了同 C 的向后兼容性,包括兼容了原始设计中的所有的弱点。有很多修正这些弱点的尝试,但是兼容性是最大的困扰。同时,C 和 C++ 都在不断引入新的特性。这些新特性必须被小心的加入到现有的结构中,以免重写旧的代码。最终的结果十分复杂—— C 标准将近 500 页,C++ 标准大概有 750 页!C++ 实现起来既困难又代价高昂,造成的结果就是各种实现之间都有差别,因此很难写出完全可以移植的 C++ 代码。
C++ 程序员倾向于使用语言中的孤岛来编程,也就是说,他们倾向于十分精通语言中的某个特性而避免使用其他特性。尽管代码通常在编译器之间是可移植的,但在程序 员之间移植就不那么容易了。C++ 的一个长处是它支持很多根本上不同的编程风格——但从长远来看,互相重复和互相冲突的风格会给开发带来妨碍。
C++ 在标准库而不是语言核心中实现了可改变大小的数组和字符串拼接等。不在语言核心中实现这些功能造成了几种不太理想的结果。
是否能把 C++ 的能力释放、重新设计并重铸到一门简单、正交并实用的语言中呢? 这种语言是否能做到易于正确实现,并使编译器有能力有效地生成高度优化的代码呢?
现代编译器技术已经取得了很大的进步,有些原来用作原始编译技术的补充的语言特性已经可以被忽 略了(一个这样的例子是 C 语言中的‘register’关键字,一个更为微妙的例子是 C 中的宏预处理程序)。我们可以依赖现代编译器的优化技术而不是使用语言特性(如同原始的编译器所做的那样)来获得可以接受的代码质量。
D 语言 2.086.0更新日志
D 语言 2.086.0 发布了,此版本包含 17 项主要更改与 69 个 bug 修复。
Compiler changes
在聚合声明范围内私有导入符号用作定义的聚合模块之外的聚合成员,DMD 现在将发出错误提示,而不是直接弃用
生成的 opEquals 优先于别名此成员的 opEquals
D 语言编译器实现了复制构造函数的全部功能
废弃 HexString literals,使用 std.conv.hexString
导入的模块中有选择地导入的符号,现在发出错误提示而不是直接弃用
Function literals 现在可以通过引用返回
新的命令行选项 -lowmem 可降低编译器内存要求
getMember 和 getOverloads 启用私有成员访问权限,可以访问非公开成员
Runtime changes
新模块 core.sync.event,该模块为其它线程的轻量级信令提供了跨平台接口,可以用于同时开始执行多个等待线程。
Library changes
修复了 std.algorithm.comparison.levenshteinDistance 中的比较 bug
std.experimental.all 移到了 std
Installer changes
绑定的 LLD 链接器升级到 8.0.0
Dub changes
支持自定义 dub init 类型
Windows 上 DUB 将不再使用 OPTLINK 作为默认值
如果在本地找不到包,dub run 现在将自动获取包
移除 dub list-installed 命令
DUB 使用单个 API 请求来升级/解决依赖关系
∨ 展开