跳转到内容

D 编程

0% developed
来自维基教科书,为开放世界提供开放书籍

本书的目标是为 D 编程语言创建一个完整、免费、开放内容、组织良好的在线书籍。

D 是一种被设计为 C++ 继任者的编程语言。在本文档写得更好更信息丰富之前,D 的主页可以在 这里 找到。

本书针对学习 D 语言的初学者。它将涵盖所有语言基础和一些设计方面。此外,它还将介绍多线程、GUI 编程和标准库等主题,帮助您开始进行实际应用。

引用 D 编程语言的作者 Walter Bright 的话

D 是一种通用的系统和应用程序编程语言。它比 C++ 更高级,但保留了编写高性能代码并直接与 操作系统 API硬件 交互的能力。D 很适合编写由开发人员团队参与的百万行中等规模到大型程序。D 易于学习,提供了许多帮助程序员的功能,并且非常适合 积极的编译器优化技术

D 不是一种 脚本语言,也不是一种 解释型语言。它没有自带 VM、宗教或压倒性的哲学。它是一种实用的语言,适合需要快速、可靠地完成工作并留下可维护、易于理解的代码的实用程序员。

D 是几十年来为许多不同语言实现编译器并尝试使用这些语言构建大型项目的经验的结晶。D 从这些其他语言(尤其是 C++)中汲取灵感,并用经验和现实世界的实用性来调和它。


D 是一种 静态类型多范式 语言,支持 命令式编程面向对象编程模板元编程。它还支持 泛型契约式设计

D 的主要特点

[编辑 | 编辑源代码]

D 有许多在 C++ 中没有的功能,实现了 契约式设计单元测试、真正的 模块自动内存管理(垃圾回收)、一等 数组关联数组动态数组数组切片嵌套函数内部类闭包(匿名函数),并且具有重新设计的 模板 语法。D 保留了 C++ 进行 低级编码 的能力,并通过支持集成的 内联汇编程序 对其进行了扩展。C++ 的 多重继承单一继承接口mixin 替换。D 的声明、语句和表达式 语法 与 C++ 的语法非常相似。

内联汇编程序 典型地体现了 D 与 Java 和 C# 等应用程序语言之间的区别。内联汇编程序允许程序员在标准 D 代码旁边输入特定于机器的 汇编 代码 - 这是一种经常被系统程序员用来访问运行与底层 硬件 直接交互的程序所需的 处理器 的低级功能的技术,例如 操作系统设备驱动程序

该语言内置了一个名为 Ddoc文档生成器

内存管理

[编辑 | 编辑源代码]

内存通常使用 垃圾回收 进行管理,但特定对象可以在超出范围时立即完成。可以使用 重载运算符 new 和 delete 进行显式内存管理,也可以简单地直接调用 Cmalloc 和 free。还可以为单个对象或整个程序禁用垃圾回收,如果需要对内存管理进行更多控制。

与其他系统的交互

[编辑 | 编辑源代码]

CABI(应用程序二进制接口) 以及 C 的所有基本类型和派生类型都受支持,从而能够直接访问现有的 C 代码和库。C 的标准 是标准 D 的一部分。

在 D 1.0 中,不支持 C++ 的 ABI,尽管它可以访问以 C ABI 编写的 C++ 代码,并且可以访问 C++ COM(组件对象模型) 代码。D 2 已经支持与 C++ ABI 的一些交互。

当前 D 实现 编译 直接到 原生代码 以实现高效执行。

获取和安装 D

[编辑 | 编辑源代码]

Digital Mars D 编译器可以从 digital mars 网站获取。 http://www.digitalmars.com/d/download.html 您需要两个文件 dmd.zip 和 dmc.zip。根据手册,这两个文件应解压到根目录或不包含空格或其他特殊字符的目录中。然后将 link.exe 的位置添加到路径中。现在可以通过调用 'dmd' 来编译 D 程序。

Win32:配置示例 1 (dmd)

[编辑 | 编辑源代码]

创建一个批处理文件 "dmd_vars.bat" 并将其移动到路径中包含的目录中

@echo off

echo Setting up a dmd environment...

set PATH=c:\dm\bin;c:\dmd\bin
rem ;%SystemRoot%\System32
set LIB=c:\dmd\lib;c:\dm\lib

echo PATH set to %PATH%

然后

  • 打开命令窗口 (cmd.exe)
  • 编译之前调用 "dmd_vars.bat"
  • 例如,调用 "dmd hello.d -ofhello_world",这将创建 "hello_world.exe"

注意:即使您安装了其他编译器/工具(它们也可能具有 link.exe/make.exe 等),这也很好用。

您的第一个 D 程序

[编辑 | 编辑源代码]

第一个程序示例

使用 Tango 库,经典的 hello world 程序是

 import tango.io.Console;
 void main() 
 { 
  Cout("Hello, World").newline;
 }

备用程序示例

使用 Phobos 库,经典的 hello world 程序是

 import std.stdio;
 void main() 
 { 
  writefln("Hello, World");
 }

编译 hello world

dmd hello.d -ofhello
gdc hello.d -o hello

D 参考手册

[编辑 | 编辑源代码]

所有 D 功能

[编辑 | 编辑源代码]

这是一个 D 功能的不完整列表。它专门用于显示和教授 D 编程语言,并提供了大量示例。

D 编译器

[编辑 | 编辑源代码]

D GUI 库

[编辑 | 编辑源代码]
华夏公益教科书