可以簡單的理解為直接被解釋執行的語言稱為動態語言。而需要編譯環境將
程序轉換為其它的編碼再執行的語言稱為靜態語言。
當前靜態語言有:Java、C/C++、C#、Delphi、VB等。
動態語言有:ASP、PHP、CGI、lisp、Perl、python,Smalltalk、Ruby等。
對于動態語言,每個人心中都有自己的排序,各自喜好不同。但是對于動態語言越來越受重視是很多人的共識。眾多的動態語言當中,誰將成為主流語言,眾說紛蕓,各持已見。而我最看好的動態語言將從下面三種語言中產生。為什么我會鎖定在三種語言上呢?除了語言自身的優勢外,另外一點最主要的原因就是其被后的力量。任何一種產品想成為主流都離不開強大的財團支持,開發語言也不例外。
1、php 動態語言之精典
對于php語言,筆者的個人感情較濃,從第一次接觸它就被其簡單、靈活、功能之強大所征服。更快的處理效率,迅速的部署及PHP的跨平臺的特性讓其應用更為廣泛,相信俱有跨平臺特性的動態語言中沒有任何一個語言能及php語言的普及率高。很多大的網站使用著PHP,歷史證明,它是一個經得起考驗的動態語言。另外,php的開源環境也相當出色。世界各地數以萬計的程序員,采用PHP編寫程序。你可以從PHP相關的網站、社區等找到各類優秀的開源程序代碼。
最近IBM、Oracle 正嘗試把PHP 應用到SOA 之中,再一次證明了PHP的優秀。雖然PHP存在著維護困難,復用性低等問題,但這些并不能影響其最終成為主流的動態語言。前不久IBM還基于Apache Geronimo項目推出了為it WebSphere Application Server Community Edition開發的PHP集成工具集。該工具集能讓開發人員在SOA中開發服務時使用PHP和Java。zend也推出了php的開發框架,這些技術將幫助軟件公司創建企業級PHP應用。 PHP會變得更加廣泛,從當前網站技術上的勝行,到企業級WEB應用,php必將成為最有競爭力的動態語言。
2、在java的基礎上產生新的語言
java語言的發展是有目共睹的,早已成為時下最為主流的開發語言。在java環境下的應用層出不窮,特別是JDK1.5發布之后,java在性能上的提升已今非惜比。對于動態語言的支持早就在日程當中。
在Lang.net 2006 會議上, Sun公司宣布將積極參與讓JVM支持動態語言的開發項目.將會增加一個新的JVM 指令——invokedynamic,用來設計對動態語言對象的支持。然而主僅僅是一個開始。我想java平臺將會全面支持動態語言,俱備運行時更改類結構或相關配置。另外很類技術人員都知道Sun已經整體收購了JRuby項目,sun公司對于動態語言的發展是有備而戰的。目前java平臺下的動態語言有Groovy、nice、BeanShell、Jython、JRuby、Rhino(JavaScript)、Jacl(TCL)、Bistro(SmallTalk)、Kawa(Lisp/Schema),真是越來越多了。java下這么多的動態語言建議選擇Groovy,感覺血統較為正宗,兼容Java的語法,java程序員學習起來較為容易,上手較快。
由于2EE太過于復雜,面對當前的行業需要,必將會在java語言的基礎上發展出一種新的基于java的動態語言,使WEB開發過程變得更快,更簡潔,但又不失java自身的特點。使Java在WEB開發能力上達到前所未有的提升。由于sun及IBM公司的推動,反微軟企業的支持,還有企業的認可,基于java語言所產生的動態語言也必將會成為動態語言家族中有力的競爭對手。
3、.net的動態語言
微軟的動態語言用的人最多的應該是asp,現在發展到ASP.NET。看微軟在開發語言方面的發展,他們一定不會放棄這塊肥肉,并會加大投入力度,與其它的動態語言提供商火拼到底。只要是有利可圖的地方,沒有微軟不想伸腳的,更何況這是一塊大肥肉呢。
前不久微軟CLR開發組的負責人Jim Hugunin表示,微軟將加強對CLR中的動態語言的支持。并將會發布成熟的軟件模式,細化到代碼中,放在庫中供開發者調用,以幫助他們通過.Net Framework上的動態語言開發自己的應用程序。種種跡像表明微軟在動態語言方面沒閑著,正緊鑼密鼓實施著一系例動作。
我把微軟的動態語言列為最可能成為主流動態語言的原因是因為其Windows的平臺無所不在。這是無法否認的。微軟勢比處投入重手,增強競爭能力。以微軟的人力、財力,想不分給微軟一塊蛋糕是不可能的。有錢就是好,投入大筆的資金,什么都可以做。
有人一定會反問我,為什么把其它的動態語言拋開不談。Perl語言過時了,雖然還有一些公司在使用,但早已不是主流。python、Ruby最近幾年開始火起來的動態語言,我并不看好它們,雖然它們是很優秀的語言,但是優秀并不帶表會成為主流。正如操作系統一樣,大家都有個共識就是,unix、 Linux很優秀,但是并不是主流系統。當然會有人反駁說應用場景不同,不能一概而論。那么開發語言也一樣,我說的是大眾主流,大眾主流就是指最廣泛的被采用。
有人說,未來動態語言會取代靜態語言,將一統天下,我并不這樣認為,相信應該是動態語言與靜態語言互相輔助,各在其擅長的方面發揮作用。比如多線程,目前的動態語言支持都不如靜態語言的好,很多還不支持。
對于語言的選擇,一般性的應用,完全可以采用動態語言完成,也可以采用靜態語言,這要看撐握語言的人或是需求而決定。更為靈活,更容易擴展及復用的方式是采用動態語言+靜態語言的方式。前臺功能采用動態語言實現,后臺服務采用靜態語言實現,充分利用各自的優勢。當前在java的WEB應用開發過程中,采用模板技術就是這類應用模式的一個雛型。java的模板技術很多都支持簡單的編程,如邏輯控制等。當然現在還不能稱其為一種語言,但是相信,這一切隨著動態語言的發展并將成為一種新的語言。
動態語言必將大行其道,但是不是獨行,而將與靜態語言相輔相成。