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