chenmingwei 2009-08-14
C# 2.0发布的时候,我们回头看Java,总认为这个语言怎么发展得这么慢?但当C#发展到3.0的时候,它也开始显示出C#臃肿的状态了,这是否会也会带来什么连锁效应呢?
6年前,我是个Java的拥护者,当时C#还是1.0版,我经常和师傅争论Java如何比C#好,于是他给我一个回答:“我们的COM比Java早了近5年,所以我们更成熟; 我们的.NET比Java晚了5年,所以更先进”。虽然这么比较有“偷换概念”的感觉,但现在想想其实有另一层意思――“成熟与先进”的矛盾。
Lisp、Haskell、Scheme这些语言也都可以被称之为“伟大”,但为什么很少有人去学呢?因为需要用太多的东西“充斥”我们的大脑后才可以使用。Java和C#之所以可以快速地被普遍接受,一个很重要的原因就是因为它们的简单与清爽。但当明年春天C# 3.0发布的时候会怎么样呢?虽然你可以将WCF、WF、WCS和WPF视为.NET的外挂,不予理会,但LINQ是个不好回避的内容,因为它在处理数据访问(关系型的、非关系型的)方面有比较明显的优势,所以即便你个人排斥它,其他还是会有很多人用。最后很可能成为这样一种局面:参与到一个项目组,自己只能从事一些表层业务开发,因为下层的公共封装机制都是用LINQ编写的,况且还有Enterprise Library这个“样板工程”在后面催着。
可以这么说,C#臃肿的状态是个必然的趋势,作为.NET语言的“主力”,随着新的开发架构的出现,C#的复杂性还会增加,同时很可能导致革新特性越出越慢,毕竟牵扯的内容多了,作为“主力”除了要考虑语言特性间的协作外,还要充分考虑处理效率。