D 编程
此页面被 导入,需要被 去维基化. 书籍应该稀疏地使用维基链接,并且仅用于引用理解内容至关重要的技术或深奥术语。大多数维基链接应该简单地删除。请在页面去维基化后删除 {{dewikify}}。 |
本书的目标是为 D 编程语言创建一个完整、免费、开放内容、组织良好的在线书籍。
D 是一种被设计为 C++ 继任者的编程语言。在本文档写得更好更信息丰富之前,D 的主页可以在 这里 找到。
本书针对学习 D 语言的初学者。它将涵盖所有语言基础和一些设计方面。此外,它还将介绍多线程、GUI 编程和标准库等主题,帮助您开始进行实际应用。
引用 D 编程语言的作者 Walter Bright 的话
D 是一种通用的系统和应用程序编程语言。它比 C++ 更高级,但保留了编写高性能代码并直接与 操作系统 API 和 硬件 交互的能力。D 很适合编写由开发人员团队参与的百万行中等规模到大型程序。D 易于学习,提供了许多帮助程序员的功能,并且非常适合 积极的编译器优化技术。
D 不是一种 脚本语言,也不是一种 解释型语言。它没有自带 VM、宗教或压倒性的哲学。它是一种实用的语言,适合需要快速、可靠地完成工作并留下可维护、易于理解的代码的实用程序员。
D 是几十年来为许多不同语言实现编译器并尝试使用这些语言构建大型项目的经验的结晶。D 从这些其他语言(尤其是 C++)中汲取灵感,并用经验和现实世界的实用性来调和它。
D 是一种 静态类型、多范式 语言,支持 命令式编程、面向对象编程 和 模板元编程。它还支持 泛型 和 契约式设计。
本节是存根。 您可以通过 扩展它 来帮助维基教科书。 |
D 有许多在 C++ 中没有的功能,实现了 契约式设计、单元测试、真正的 模块、自动内存管理(垃圾回收)、一等 数组、关联数组、动态数组、数组切片、嵌套函数、内部类、闭包(匿名函数),并且具有重新设计的 模板 语法。D 保留了 C++ 进行 低级编码 的能力,并通过支持集成的 内联汇编程序 对其进行了扩展。C++ 的 多重继承 被 单一继承 和 接口 和 mixin 替换。D 的声明、语句和表达式 语法 与 C++ 的语法非常相似。
内联汇编程序 典型地体现了 D 与 Java 和 C# 等应用程序语言之间的区别。内联汇编程序允许程序员在标准 D 代码旁边输入特定于机器的 汇编 代码 - 这是一种经常被系统程序员用来访问运行与底层 硬件 直接交互的程序所需的 处理器 的低级功能的技术,例如 操作系统 和 设备驱动程序。
内存通常使用 垃圾回收 进行管理,但特定对象可以在超出范围时立即完成。可以使用 重载运算符 new 和 delete 进行显式内存管理,也可以简单地直接调用 C 的 malloc 和 free。还可以为单个对象或整个程序禁用垃圾回收,如果需要对内存管理进行更多控制。
C 的 ABI(应用程序二进制接口) 以及 C 的所有基本类型和派生类型都受支持,从而能够直接访问现有的 C 代码和库。C 的标准 库 是标准 D 的一部分。
在 D 1.0 中,不支持 C++ 的 ABI,尽管它可以访问以 C ABI 编写的 C++ 代码,并且可以访问 C++ COM(组件对象模型) 代码。D 2 已经支持与 C++ ABI 的一些交互。
Digital Mars D 编译器可以从 digital mars 网站获取。 http://www.digitalmars.com/d/download.html 您需要两个文件 dmd.zip 和 dmc.zip。根据手册,这两个文件应解压到根目录或不包含空格或其他特殊字符的目录中。然后将 link.exe 的位置添加到路径中。现在可以通过调用 'dmd' 来编译 D 程序。
创建一个批处理文件 "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 等),这也很好用。
使用 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 编程语言,并提供了大量示例。
- 词法
- 模块
- 声明
- 类型
- 属性
- 属性
- 编译指示
- 表达式
- 语句
- 数组
- 结构体
- 类
- 联合体
- 枚举
- 函数
- 接口
- 运算符重载
- 模板
- 混合
- 契约
- 条件编译
- 异常
- 垃圾收集
- 内存管理
- 浮点数
- 内联汇编器
- 文档注释
- 与 C 接口
- 可移植性指南
- 将 D 嵌入 HTML
- 命名字符实体
- 应用程序二进制接口
- GNU D 编译器 (GDC)
- Digital Mars D 编译器 (DMD)
- LLVM D 编译器 (LDC)
- 库
- 平台
- 在 Windows 上编程 D
- 在 Linux 上编程 D
- 在 Macintosh 上编程 D
- 在 xBSD 上编程 D