Tiobe近日公布了2009年8月的编程语言排行榜,51CTO注意到本期榜单中有Objective-CHE第一次进入前二十名并取代之前的Lua,而Java、C、C++依然以绝对优势占据前三甲的位置。本期我们将重点关注微软的.NET平台,以及新近推出的F#、Small Basic语言。
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#)更加方便、轻松的开发我们的应用来控制机器。他认为,未来的编程语言将会让开发人员更轻松的控制机器,高度的自动化和智能化将是未来编程语言发展的方向。