相關閱讀 |
>>> 技術話題—商業文明的嶄新時代 >>> | 簡體 傳統 |
文 / 蔡學鏞
主動學習各種新語言是我的習慣,於是我經常到PLnews網站上,看看各種語言的消息,遇到不認識的語言,就會花一些時間研究一下值不值得學。我自己有一套語言評分標準,我理想中的語言必須符合這篇文章所描述的各點(依重要次序排列)。我到現在還沒有找到完全符合這些嚴苛條件的語言。
你也可以拿這些條件來檢視目前你正在使用的語言(例如Java、C#、Ruby),看看你的語言表現如何。
【支援Unicode】 所有不支援Unicode的語言,都應該被埋在上個世紀的歷史灰燼中。雖然Unicode早就已經是主流,但是還有許多語言不支援Unicode,這是相當重大的缺點。即使號稱有支援Unicode,也有支援程度的差異,例如有的語言對Unicode的支援是添加上去的,有點格格不入,且有些語言對Unicode的支援相當有限。
【寫一次,任何地方都可以執行】 最好支援Windows、MacOS、Linux、BSD等主流OS,甚至Windows Mobile、Symbian等手機的OS。
【超小的執行環境】 現在的軟體都大得很可怕。幾乎所有現代的語言,都需要10MB以上的執行環境,而30MB以上的也不少見。執行環境太大有什麼不好:(1) 下載、安裝時耗費時間與資源; (2) 執行時速度「可能」會比較差;(3) 潛藏其中的bug「可能」比較多。因此,我極度抗拒癡肥的語言與框架。
【有包含GUI】 大多數Open Source的語言,都不包含GUI,而是使用外部的Tk、wxWidget等套件,這些外部套件往往:(1) 相當龐大;(2) 效率「可能」不是很好; (3) 不見得和語言本身的paradigm吻合,使用起來可能會導致精神錯亂。除了GUI套件,我也希望具有比較好的2D / 3D繪圖引擎。
【用更少,做更多】 程式寫得越長,不代表越有價值。能夠用精簡的程式碼,做出許多重要的事,才是我們追求的目標。寫出來的程式短,會比較好維護。
【支援Meta-Programming】 我希望能夠不用再透過ANTLR等工具,而是可以直接用語言本身,輕易地寫程式處理另一種(我自己發明的)小語言,並讓兩種語言之間可以互相融合,達到最佳的DSL(Domain Specific Language)境界。如此一來,開發的效率會相當高,且需要的程式碼會相當少。
我希望重要的DSL都已經有人先建立好了,我可以直接採用,特別是Web、資料庫、GUI這些部分。
【好用的剖析器】 現在程式需要剖析文字檔的機會很高,我不喜歡Regular Expression,也不想用外部的ANTLR,我希望能有更方便使用的剖析器,讓我可以利用BNF(Backus-Naur Form)的語法。
【能夠呼叫C】 許多時候,光靠語言本身還是做不到的事,必須呼叫OS或其他廠商的C程式庫。如果語言和C之間能有良好的介面,那麼呼叫外部程式庫就會很容易。我希望不只能呼叫C,也可以做成call-back函式,被C回頭呼叫。
【具有良好的Web與資料庫方案】 現在做軟體開發,十之八九都是Web加上資料庫。如果該語言可以輕易地做出這樣的方案,會相當具有吸引力。
【嵌入組合語言】 寫C程式時,我們可以嵌入x86組合語言,以提升速度。我希望現在一般的語言也能夠有類似的作法,讓我可以嵌入比較低階的語言,捨棄一些檢查(例如型別檢查,陣列邊界檢查),換取速度的提升。
【豐富的資料型別Literal】 我希望語言能有豐富的資料型別,且能夠用literial的方式寫出這些型別的值,如此一來,寫起來非常簡短方便,表達力更好,並可能有其他的好處(例如讓DSL的設計更容易)。
可惜目前主流的語言,Literial的寫法都只有不到10種,不外乎是整數、小數、字串、陣列,距離我所謂的「豐富」,還有好幾倍的差距。
【輕量級的RPC / SOA】 我希望語言能支援RPC / SOA,且使用輕量級的方式,不要搞得像IBM的SOA那麼複雜。複雜的東西又貴又難上手,失敗告終的機會很高。
【支援RIA】 提供瀏覽器Plug-In,讓程式可以在瀏覽器內執行,也可以獨立於瀏覽器而執行。為了要支援RIA,也要提供許多標準協定(例如HTTP)。
【有互動模式】 對於初學者來說,互動模式是相當好的學習方式,而且也可以當作Shell,進行日常一些基本的操作(例如檔案系統管理)。
【免費與開放源碼】 軟體開發的錢很難賺,能省則省。另外,開放源碼的語言比較有保障,比較不會因為廠商關門而使得該語言產品的用戶變成孤兒。
【有很強的社群】 社群可以幫我們解決技術問題,告訴我們到哪裡取用資源。社群的存在,可以幫助語言健康地發展。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jerryxycai/archive/2008/02/29/2132485.aspx
蔡學鏞 2010-07-15 08:32:44
稱謂:
内容: