.NET的前世今生與將來
言歸正傳,.NET平臺上最主流的3種開發語言分別是C#、VB.NET和F#。
Pascal之父、Delphi首席架構師Anders Hejlsberg,當年還在Borland,被微軟CEO Bill Gates重金邀請加盟微軟,主導開發.NET平臺上的全新開發語言,這就有了現在.NET平臺上最流行的開發語言C# ,取義C++的++ ,即(C++)++,合在一起就是4個+,碰巧和音符的C♯一樣,所以讀作C sharp,不是C井,謝謝。因為這個升C的字元比較難敲,所以,一般用數字3上面的那個#符合代替(對,♯和#不是同一個字元)。C#是目前全球最流行的開發語言之一。
如果你想深入瞭解C#,可以參考Jon Skeet編寫的《C# in depth》,JK很奇怪,他是在Stack Overflow上是排名第一的回答者,C#專家,然而,他卻是在Google工作的(潛伏的臥底?)。
筆者對BASIC有著非常深厚的感情,第一次接觸這個語言是1992/1993年的時候,後來用了GWBASIC、TrueBASIC、TurboBASIC、QBASIC、QuickBASIC、Visual BASIC (1.0版本還是DOS下的,用的ASCII字元拼接成圖形介面)。
如果你用Visual BASIC 5/6,相信不會對VB.NET太陌生,儘管VB.NET用起來有點彆扭。VB.NET表面上是微軟照顧老VB使用者在.NET平臺上的實現,但這個語言實在太彆扭。在VB 11.0之前,它是儘量和C#高度互動的,很多語言特性都儘量“相容”,但是11.0之後,開發團隊決定和C#分道揚鑣,各自演進。
說起VB.NET,相信一些開發人員還記得@裝配腦袋,他從老VB開始就是忠實使用者,在部落格、技術會議中和大家分享各自VB.NET/編譯器技術和心得,他兩年前不幸因病去世,願天堂沒有bug。
VC++一直以開發高效能著稱程式,在.NET世界,VC++.NET,可以和.NET程式集互動,當然,你仍然可以選擇寫不基於.NET的程式碼。不過,如果你用,NET的話,為什麼不直接用C#?除了VC++.NET,微軟還有C++/CLI這個專門設計來和.NETA互動的相容C++的語言,用來開發.NET託管程式碼。
如果你需要高效能、喜歡函數語言程式設計,那麼F#這個函式式的開發語言會比較適合你,它天生以高效能平行計算著稱。可能你還已經猜到,F#裡的F代表Functional函式式。
微軟當年雄心勃勃,希望把.NET打造為大一統的開發平臺,當年Java如日中天,微軟自然不會放過這個機會:難道還有直接把對手的支持者拉攏過來的而擴大市場更好的辦法嗎?此消彼長,道理大家都懂。所以微軟推出了J#。不過這個專案有點尷尬,最開始是想和Java進行互動,利用Java成熟的平臺元件,後來專案沒有被維護了,但是,.NET 4.5之前,想要自己讀寫zip檔案,.NET框架內建的類庫中,只有J#有一個類庫,否則只能用第三方的方案。
J#出師未捷身先死,長使英雄淚滿襟。然而這並沒有阻止.NET的雄心。大家知道JVM是一個執行平臺,在這基礎上,有各種語言,Java是老大哥,Scala有取而代之的趨勢,最近Google因為不滿Oracle拿Java版權大棒亂揮舞,近年大力扶植JetBrains的Kotlin。同樣,.NET平臺上,也有多種語言,除了上述的幾種,還有Fantom、Visual COBOL、ClojureCLR等。
為了和動態語言互動,.NET引入了 Dynamic Language Runtime (DLR),這樣,各自動態語言就可以和.NET互相呼叫,而這個平臺下的語言一般有一個字首:Iron。當年出現了IronPython、IronRuby、IronScheme等專案。然而,這個專案沒有被維護了。或許Iron是因為這個名字起得比較晦氣,都“打鐵”了。