開發(fā)人員應(yīng)該知道的六種腳本語言
Lynn Greiner的文章《腳本世界現(xiàn)狀》遭到痛批。一些人對文章明顯的疏漏表示出了不滿,因為文章只涵蓋了PHP ,Perl,Python,Ruby,Tcl和JavaScript。Lynn只選擇這些語言,因為她是為三年前的一篇文章做的后續(xù)報道。此外,大多數(shù)IT經(jīng)理即使沒有親自編寫過代碼,也都至少熟悉其中一種腳本語言。
然而,盡管我們已經(jīng)深入了解上述五種語言,但是開發(fā)人員使用語言的卻不僅限于這五種。由于每種編程語言都是適合于解決某個具體問題的工具,因此每個IT公司都能挑選一個最適合自己的語言。在本文中,我們會分享一些新興的腳本語言,以提供些指導(dǎo)。
Scala
Scala對開發(fā)人員而言是別具吸引力的。按照其網(wǎng)站所說:“Scala...既是對象面向型又是實用型的。它混合了一些現(xiàn)代語言功能,同時與Java保持著密切的兼容性?!?/P>
Object Mentor的高級顧問Wampler說:“Scala是我見到的最好的一體適用的語言。Scala彌補了Java的不足,比方Java為對象面向型編程提供的支持冗繁而有限。此外,Scala支持功能性編程——在學(xué)術(shù)計算機科學(xué)界已存在很長一段時間的一種方法,但現(xiàn)在被證明用來編寫強效并行軟件非常有用。并行技術(shù)對在大型網(wǎng)站和企業(yè)擴展軟件十分重要?!?/P>
Trampoline Systems開發(fā)人員David Ritchie Maclver認(rèn)為,Scala的主要好處是能避開Java。他說:“就圖書庫的支持,性能和易于部署而言,我可以匹配Java?!痹S多Java工具也推到Scala。他認(rèn)為,他的公司正為可視化軟件的軟件采用Scala,隨著這一更新,將減少Java和Ruby的使用。
但是,Maclver并不推崇Scala的一切。他說:“為了發(fā)揮并行優(yōu)勢,人們會推動Scala的發(fā)展。但請不要受制于這種誘惑。因為它不能取代Java?!?/P>
Groovy
另一種語言就是Groovy,根據(jù)其網(wǎng)站所稱,Groovy是為Java虛擬機(JVM)而設(shè)計的一種靈活而動態(tài)的語言。集Java之長,但受Python , Ruby和Smalltalk的啟發(fā),具備額外的功能和特點。
Groovy令人信服之處在哪里呢?首先提出這一問題的開源新聞平臺批評家說:“我感到驚訝的是Groovy沒有出現(xiàn)在任何地方。如果有一個動態(tài)語言能平衡企業(yè)的擁堵,那它就是Groovy。它能匯編進Java字節(jié)碼,并直接利用龐大的Java庫,卻省去了繁瑣的Java句法。幾年的時間后,Python和Ruby被Groovy取代將不會使我感到驚訝。”
Groovy讓Java開發(fā)的指令有效表達,同時又與Java代碼保持相互兼容性。
Closure
您的公司可能會采用最新的硬件,但您的軟件可以充分利用其多線程功能嗎?您可能想看看Clojure,它是一個以虛擬機為目標(biāo)的動態(tài)編程語言。其網(wǎng)站上解釋說, Clojure被設(shè)計成一個通用語言,它是將高效和強勁的基礎(chǔ)設(shè)施同腳本語言的可接近性和互動發(fā)展相結(jié)合的多線程編程。 Clojure是一種直接編輯JVM字節(jié)碼的語言,卻保存了完整的動態(tài)特點。每個由Clojure支持功能在運行時也獲得支持。 Clojure提供對Java框架的輕松訪問,通過可選類型提示和類型推斷確保調(diào)用的Java可避免映射。
小?強大?Java?這三個能并存嗎? Clojure是一種體積小,功能強大的語言,它在虛擬機上編輯并運行,因此不需要新的基礎(chǔ)設(shè)施。此外,它也可以讓您以更少的代碼處理更多事情。這對發(fā)展進程和維護都是好事。特別有益于在缺乏像Java那樣足夠多的程序員開銷時,利用多核硬件。
現(xiàn)在軟件開發(fā)中最緊迫的問題在于如何更好地利用多核CPU ,以提高性能和降低能源成本。就方便與安全性而言,Clojure用于并行要比其他任何語言都要優(yōu)越。它繼承的Lisp極大地提高程序員的生產(chǎn)方式,隨著時間的增長,它能實現(xiàn)簡單的DSL創(chuàng)建以便商家驗證程序的正確性。它能在模擬機上運行并能順利與數(shù)百萬行遺留的Java代碼融合還僅是其表面現(xiàn)象?!?/P>
Lua
正式點說,Lua是一個強大,快速,輕量,可嵌入的腳本語言。Lua結(jié)合了簡單的程序句法并具備強大的基于關(guān)聯(lián)數(shù)組和可擴展的語義的數(shù)據(jù)描述。Lua是動態(tài)型的,它的運行通過為基于寄存器的虛擬機解釋字節(jié)碼來實現(xiàn),通過增量垃圾收集自動管理內(nèi)存,非常適合配置,撰寫腳本,和快速原型。
通俗點說,這只是一個非常小的語言工具用它辦事很快。
開發(fā)人員RalphHempel將Lua描述為“編程語言中最棒的小秘密”,他還說:“雖然它沒有一個正式認(rèn)可的庫分配機制。但卻有大量的標(biāo)準(zhǔn)庫供文件系統(tǒng)訪問,網(wǎng)絡(luò)連接,數(shù)據(jù)庫訪問等等。對我來說,該系統(tǒng)最好的部分是堅如磐石的語言核心和考慮周密的升級和補丁。Lua的發(fā)布由從一開始就參與該語言的‘Three Amigos’控制?!盚empel已向LEGO Mindstorms NXT移植Lua。
Lua的優(yōu)勢在于它的快速敏捷式開發(fā)超過了傳統(tǒng)的語言。它給你所需要的積木,您可以以任何方式建立你想要的任何東西。驚人的小和快是Lua特點。就技術(shù)層面而言,它是杰作。
F#
.NET開發(fā)社區(qū)并非沒有一套腳本語言增強功能。其中最突出的是F#,它起先作為微軟的編程語言研究,集安全,簡潔,性能,表達和腳本于一身,能高品質(zhì)運行,支持現(xiàn)代運行系統(tǒng)?,F(xiàn)在微軟把F#轉(zhuǎn)變成.NET平臺上的充分支援語言。
F#促進編程的功能性不可改變類型,而這適合并行和分布式程序的編寫。此外,它支持編程的陳述風(fēng)格。陳述風(fēng)格可以讓你區(qū)分為解決問題開發(fā)一些智能庫的高級程序員和使用它來解決日常問題的初級程序員。
許多編程語言可以很容易地寫一些小東西,再擴展成一個較大的應(yīng)用程序,但當(dāng)軟件需要變成一個真正的有強大邏輯結(jié)構(gòu)的庫時,問題就來了。F#就可以讓你做得很好,你可以從簡單的(就像使用動態(tài)類型語言如Python或Ruby那樣)開始,最終完成一個非常強大的程序(如同C #或Java )。F#的關(guān)鍵益處是做到過渡完全流利而無須經(jīng)歷任何痛苦的步驟。事實上,你不需要重寫任何開始時的代碼。
F#額外的好處是通過學(xué)習(xí)F#有助于你成為更好的C#程序員, ”F#有助于人們了解LINQ。如果你未來想平行運行什么東西,它可能是很好的準(zhǔn)備。
Boo
Boo在其主頁上宣布,它是“為CLI(通用語言基礎(chǔ)設(shè)施)設(shè)計的,一個新的面向?qū)ο蟮撵o態(tài)類型的編程語言,具備Python-inspired句法并特別側(cè)重于語言和編譯器的可擴展性?!?/P>
這不是一種解釋語言,因為它的編纂是為了CLI。由于它在.Net上運行,您擁有.Net的所有權(quán)力,只有它更靈活,而且您把它當(dāng)作一個腳本或編好的程序。Boo也有足夠的技術(shù)優(yōu)勢,如能在匯編過程中操縱編譯器輸出。
計算機語言是制作軟件的一種工具,Boo作為一種計算機語言與其他工具(.Net 生態(tài)系統(tǒng))一樣表現(xiàn)出色,但Boo更具競爭力,因它給予開發(fā)者空前的力量開發(fā)自己的語言工具。大多數(shù)語言圍繞一套固定的概念工作,Boo賦予開發(fā)者制作自己的語言概念的能力。此外,Boo句法也很奇妙,并配備了各種口譯以加速發(fā)展。
該語言在輕量特定領(lǐng)域子語言和微型格式中取得優(yōu)勢。它也是微小的,自我控制和跨平臺的,所以在Windows編寫代碼和在Linux或Mac OS X是一樣的。它有一個內(nèi)置的GUI庫,能夠發(fā)送電子郵件和訪問內(nèi)內(nèi)置的網(wǎng)絡(luò)資源。沒有包含文件,只有兩條簡單的線??蓤?zhí)行程序也很小,在Java做同樣的事情將有數(shù)以百計兆數(shù)據(jù),在C將有以噸計的包含文件和許多代碼。
【編輯推薦】















 
 
 













 
 
 
 