Tiobe近日公布了2009年8月的編程語言排行榜,51CTO注意到本期榜單中有Objective-CHE第一次進入前二十名並取代之前的Lua,而Java、C、C++依然以絕對優勢占據前三甲的位置。本期我們將重點關注微軟的.Net平台,以及新近推出的F#、Small Basic語言。
C# 4.0借Visual Studio 2010 Beta1發力
很多人將C#認為是微軟對Java的反擊,我們從C#語言的繼承體系,以及一些特性中可以看出,C#語言綜合了C、C++和Java的優點。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.Net平台的主力。51CTO注意到盡管微軟發布過J++,但還是不如C#對Java的威脅大。
在Visual Studio 2010 Beta1發布後,C#關注度像是被注入強心劑一樣持續上升。更多的特性支持,是廣大開發人員支持C#的動力。比如51CTO曾報道過的Visual Studio 2010中使用C# 4.0的動態類型,這一動態類型的新特性包括:1、支持動態查找;2、同時支持命名參數和可選參數;3、增強的COM互操作特性;4、支持方差。從這裡面可以看到很多Javascript、Python這些動態語言的影子。雖然C#越來越偏離靜態語言的道路,但從另一個角度來說,這些特性也都是為了提高程序員的生產力。
大起大落的VB
Visual Basic從誕生之日起就注定成為一門合適的入門語言,簡單易學使Visual Basic成為很多程序員的第一門語言。微軟也很樂意將更多的新東西帶入Visual Basic,最新的Visual Basic 2010新特性包括:數組初始值設定項、集合初始值設定項、內聯Lambda表達式、自動實現屬性、泛化、No-PIA部署、與Python的集成、並行計算擴展等。不過目前來看,Visual Basic正處在一個十字路口,需要更多的新技術來支持它繼續前行。
盡管微軟Visual Studio 2010將加強對C++的支持,但是一向作為Visual Studio缺省語言的Visual Basic,還是會作為微軟的主力語言得到推崇。相信隨著Visual Studio 2010正式版的到來,更方便的Visual Basic會更好的提高程序員的工作效率。
微軟F#語言漸入佳境
F#是微軟發布的一款函數編程語言。功能編程語言將計算看作是數學函數的賦值,數學特性使得它對需要大量使用數學符號的領域的專業人士頗有吸引力。微軟更允許F#運行在CLR之上,51CTO認為這也標志著微軟將F#列為Visual Studio 2010上的“一等公民”。
作為今後.NET平台的支柱,微軟希望F#能被用來構建應用程序的核心,並且在呈現層與C#、Visual Basic合力打造完美的應用程序。從這裡可以看出微軟全方位做大.Net平台的決心。盡管F#在本期的榜單中排名並不顯眼,相信明年Visual Studio 2010正式版發布後,榜單前排一定有F#的位子。
其他微軟語言介紹
M語言,這種新編程語言是微軟新Oslo發展和面向服務策略的一部分,在保持文本(textual)和特定領域(domaiN-specific)的同時,還整合了來自XAML的特性。
Spec#是C#的一個擴展,支持許多契約(contract)屬性,如非Null類型系統,前置和後置條件,循環常量(loop invariant)和對象常量等。這個擴展將終結Null引用異常。
Nemerle是一種多范型語言(面向對象和函數式),完全支持編譯器宏(後來更多的是Lisp的變種,而不是C++),以及許多其他的東西。Nemerla與Visual Studio 2010裡發布的F#不同,後者是純函數式語言。
Small Basic,一款針對兒童的免費編程語言。不像Scratch和Alice,這款工具屬於“無編碼”環境,本質上講是一個簡略版本的BASIC語言。
Axum語言曾經叫做Maestro,它的目標是提供一個.Net環境下的並行編程模型,支持隔離、actor和消息傳遞。此語言借鑒了很多Erlang語言的元素,不過擁有類似C#的語法。
從Visual Basic到C#,我們不止看到微軟編程語言的發展路徑,也看到整個it項目需求及技術的起伏發展,在51CTO.com與Windows教父Jeffrey Richter一次關於程序語言發展的對話中,他提到編程語言最初的目的是為了讓人可以控制機器,從機器語言、匯編語言直到現在的高級語言和運行在虛擬機上具有更多面向對象和動態特性的語言,編程語言最初的目的一直沒有改變,只是我們現在可以利用高級語言(比如C#)更加方便、輕松的開發我們的應用來控制機器。他認為,未來的編程語言將會讓開發人員更輕松的控制機器,高度的自動化和智能化將是未來編程語言發展的方向。