跳轉到內容

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 庫

[編輯 | 編輯原始碼]
華夏公益教科書