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