特點
D的設計經驗教訓來自實際的C ++使用,而不是純粹的理論視角。雖然它使用了許多C和C ++概念,但它也放棄了一些,並且與C和C ++原始碼不兼容。然而,D的設計受到以下規則的限制:任何在C和D都合法的代碼應該以相同的方式行事。D在C ++之前獲得了一些功能,例如閉包,匿名函式和編譯時函式執行。D通過契約,單元測試,真模組,垃圾回收,一數組,關聯數組,動態數組,切分數組,切片,嵌套函式,延遲評估和重新設計的模板語法來實現設計,從而增加了C ++的功能。 D保留了C ++執行低級編碼和添加內聯彙編程式的能力。C ++多繼承被具有接口和mixins的Java風格的單繼承所取代。另一方面,D的聲明,語句和表達式語法與C ++的語法緊密匹配。
內聯彙編程式代表D和Java和C#等應用程式語言之間的差異。內聯彙編程式允許程式設計師在標準D代碼中輸入特定於機器的彙編代碼,系統程式設計師經常使用這種方法來訪問處理器所需的低級功能,以運行直接與底層硬體接口的程式,例如作業系統和設備驅動程式。D內置了對文檔注釋的支持,允許自動生成文檔 。
歷史
Walter Bright於1999年決定開始使用新語言.D於2001年12月首次發布,並於2007年1月達到1.0版。語言的第一個版本(D1)集中在命令式,面向對象和元編程範式上,類似於C ++。
對Phobos,D的官方運行時間和標準庫不滿意,D社區的成員創建了一個名為Tango的替代運行時和標準庫。第一個公開的Tango聲明是在D 1.0發布後的幾天內發布的。Tango採用了不同的編程風格,擁抱面向對象和高度模組化。作為一個社區主導的項目,Tango更願意接受捐款,這使得它比官方標準圖書館進步得更快。那時,由於不同的運行時支持API(垃圾回收器,執行緒支持等),Tango和Phobos不兼容。這使得無法在同一個項目中使用這兩個庫。由於一些軟體包使用Phobos和其他使用Tango的軟體包,兩個庫的存在導致了很大的爭議。
在2007年6月,D2的第一個版本發布了。 D2發展的開始標誌著D1的穩定;該語言的第一個版本已進行維護,只接受更正和實施錯誤修正。 D2是從第一個實驗常量系統開始,引入對語言的重大改變。 D2後來增加了許多其他語言功能,例如關閉,純度以及對功能和並發編程範例的支持。 D2還通過將運行時與標準庫分離來解決標準庫問題。 D2探戈港完成於2012年2月宣布。
2010年6月12日Andrei Alexandrescu的書The D Programming Language的發布標誌著D2的穩定,通常被稱為“D”。
2011年1月,D開發從bugtracker / patch-submission基礎轉移到GitHub。這導致了對編譯器,運行時和標準庫貢獻的顯著增加。
2011年12月,Andrei Alexandrescu宣布,該語言的第一個版本D1將於2012年12月31日停止使用。最終的D1版本Dv1.076於2012年12月31日發布。
D編譯器的官方代碼,Walter Bright編寫的Digital Mars D編譯器最初是在定製許可下發布的,符合可用源碼但不符合開源定義。在2014年,編譯器前端在Boost軟體許可下被重新授權為開源。此重新授權的代碼排除了賽門鐵克部分開發的後端產品。 2017年4月7日,賽門鐵克同意對後端進行重新許可後,整個編譯器都可以通過Boost許可證獲得。於二零一七年六月二十一日,D語言被接納列入GCC。
開發工具
支持D的編輯器和集成開發環境(IDE)包括Eclipse,Microsoft Visual Studio,SlickEdit,Emacs,vim, SciTE,Smultron,TextMate,MonoDevelop,Zeus,和Geany等。
a. D的Eclipse外掛程式包括:DDT [38]和Descent(死亡項目)。
b. Visual Studio集成由VisualD提供。
c. Visual Studio代碼與Dlang-Vscode 或Code-D的擴展集成。
d. Vim支持語法高亮和代碼完成。
e. 一個包可用於TextMate,而Code :: Blocks IDE包含對該語言的部分支持。然而,諸如代碼完成或重構之類的標準IDE功能尚不可用,儘管它們部分在Code :: Blocks中工作(由於D與C相似)。
f. Xcode 3的外掛程式是可用的,D用於Xcode,以支持基於D的項目和開發。
g. MonoDevelop的AddIn可用,名為Mono-D。
h. KDevelop(以及它的文本編輯器後端,凱特)autocompletion外掛程式可用。
i. Coedit,一個專用於D的開源IDE。
存在用於Windows的開放源碼D IDE,一些用D編寫,如Poseidon, D-IDE,和Entice Designer 。
D應用程式可以使用任何C / C ++調試器進行調試,例如GDB或WinDbg,儘管對各種D特定語言功能的支持非常有限。在Windows上,在使用cv2pdb轉換調試信息後,可以使用Ddbg或Microsoft調試工具(WinDBG和Visual Studio)來調試D程式。Linux的ZeroBUGS調試器為D語言提供了實驗支持。 Ddbg可以與各種IDE或命令行一起使用; ZeroBUGS有它自己的圖形用戶界面(GUI)。
例子
這個示例程式列印其命令行參數。 主函式是D程式的入口點,args是表示命令行參數的字元串數組。 D中的字元串是由D1中的char [ ]或D2中的immutable(char)[ ]表示的字元數組。
foreach語句可以遍歷任何集合。 在這種情況下,它將從數組參數中生成一系列索引(i)和值(arg)。 索引i和值arg根據數組參數的類型推斷出它們的類型。