2002年01月10日
這個星期,微軟終于發布了.Net的面向對象的旗艦語言C# 。它是由Anders Hejlsberg也就是Turbo Pascal的設計者為Web 服務的開發量身定做的。微軟一年半多的時間以來一直把它說成是最美好的東西,而Java以及開放源代碼團體則嘲笑它不過是一個惡人嘴里吐出來的另一種語言罷了。
換句話說,對C#的批評意見隨處可見。但是,在通過幾次電話采訪以后,我獲得了Derek Ruths的幫助,他是Advanced Reality項目的首席科學家和參與者,這個項目旨在使任何應用程序都能夠相互合作。Ruths用Java開發了他的Resence AR程序,但是他也在積極的探索C#語言。他與Gartnet分析師David Smith的觀點成為了這篇關于C#的神話與現實的文章的要點。
C#是“類Java的。”這句話在一方面是對的,但是在其它方面看來卻不對。微軟否認C#是對Java作出的一種“反應”,并聲稱它是C++的直接的繼承物--雖然Java自身也可以這么認為。據報道,將Java應用程序移植到C++上來相對容易一些,而且它所使用的API函數和類有相同的名字。與Java一樣,C#也有垃圾內存回收的功能,也就是說無用的內存在應用程序運行的過程中被自動的回收。但是這兩種語言之間存在一個巨大的差別:Java是平臺無關的而C#在很大程度上只適合Windows操作系統。
Java仍然占有很大的優勢。Java產生的原因部分的是作為C++的改進,C++是一種很難掌握但是非常強大的語言。但是Java的出現已經有一陣子了,而C#則剛剛開始。“所以在Java中存在一些早期設計遺留下來的難以逾越的障礙,”Ruths說。而C#則在語法上增加了一些“甜頭,”(Ruths語)--它的關鍵字和概念能夠讓開發過程稍微容易一些。另一方面,他認為C#的窗口模型與Java Swing相比顯得弱一些。總的調查顯示,在綜合了兩者的強項和弱項以后,C#和Java在它們的功能和易用性上是有得一比的。
C#最終會使Java程序員投降。Gartner的觀點與上面的有所不同。Java雖然還有很大的勢力。很少有人會懷疑C++和Visual Basic的程序員會很快轉移到C#上來--但是對于Java程序員來說,如果他們想轉移陣地的話,他們必須投身到由所有微軟平臺構成的自我封閉的世界中來--而這些平臺對于企業后端應用的滲透還很不夠。Java程序員為什么要拋棄這么多的東西呢?當然,.Net計劃中很大的一個動機就是在企業后端應用方面占領一席之地,但是這個過程需要時間。
如果你想開發.Net Web 服務,你就要學習C#。也許這是個好主意。微軟不斷重復的句子是“C#是C/C++家族中第一個面向組件的語言。”Ruths同意這個觀點“總的說來,它要更容易一些。”但是.Net中的通用語言運行庫使得你能夠使用任何其它一種不同的語言來編寫.Net組件。
另一個有趣的的觀點:Ruths認為C#可能會重走Java小應用程序走過的可下載的,客戶端運行的應用程序的道路(但不會在移動計算領域出現,這里Java仍然一統天下)。COM組件總是面向桌面的,所以這種想法也是合理的。有一點是肯定的:C#會是Bill Gates稱為微軟最重要的產品的Visual Studio.Net的關鍵部分。你將會在未來的幾個月內學習
|