D語言和Visual D簡介
D語言是一種由Digital Mars公司創造的系統編程語言,它專注于“把C和C++的能力和高性能與先進的語言——像Ruby和Python——的高生產力結合起來。”盡管它仍然是一種靜態類型的語言,可以直接編譯成本地代碼,而且語法看起來與Java或者C#非常類似,但是它做出了很多有意義的改進。
這些改進包括明確地支持惰性參數。當我們使用關鍵字“lazy”標記一個形參時,就意味著相關的實參會被賦值0次或者多次。這與Haskell之類的語言不同,它會延遲對實參賦值0次或者1次,但不會再多。
為了保證程序的正確性,特別是在并行以及多線程的領域中的正確性,D語言支持把“immutable”和“const”作為一等概念。和C++不同的是,在D語言中的immutable和const修飾符是可傳遞的。如果我們用immutable標記了一個變量,那么不但不能對其進行變更,也不能變更通過它所能夠訪問的任何變量。const關鍵字的工作方式和immutable類似,不過特定的對象還是可以通過non-const的引用來修改變量的值。
D語言還包括了很多來自于其它語言的流行特性。例如,它擁有for-each循環、字符串轉換、數組分片、閉包、try-catch-finally塊,以及值類型和引用類型的分離等等。同時,它還考慮到了直接對內存的訪問,80位的浮點型數字、結構成員排列控制以及內聯程序集。
通常,因為安全性,把源代碼轉換為本地代碼會付出高昂的代價。C和C++是最容易受到類似于緩沖區溢出之類的編碼錯誤影響的,其它大多數本地語言也都一樣。D語言通過既在編譯時又在運行時執行數組邊界檢查來避免這些問題。同樣,非零長度的數組的內容會自動初始化為它們的默認值。
關于內存管理,D語言和.NET非常類似。默認情況下,引用類型會存儲在垃圾回收堆中,而值類型或者會存儲在堆棧中,或者存儲在其它對象中。D語言也可是分配堆棧來存儲引用類型,但這不可避免要使用指向它們的指針。和.NET一樣,你還可以讓指針指向非托管的內存。讓這些彼此分離非常重要,因為很多你能夠在非托管的指針上能夠執行的操作,在托管指針上執行是不安全的。
對于能夠使用非快捷版Visual Studio的開發者來說,有一個項目叫做Visual D,它提供了Visual Studio 插件。Lloyd在一篇文章中介紹了如何在你的環境中安裝Visual D。
當前D語言有四種實現。Digital Mars公司為Windows、Linux、OS X和FreeBSD提供了免費的編譯器。還有一種Gnu D編譯器,它是構建在gcc之上的。而LLVM也發布了他們的D語言編譯器的beta版本,最后還有針對.NET的部分實現。
英文原文地址:http://www.infoq.com/news/2011/05/Visual-D
【編輯推薦】