C#
发布的时候
我们回头看Java
总认为这个语言怎么发展得这么慢?但当C#发展到
的时候
它也开始显示出臃肿之态了
这是否会也会带来什么连锁效应呢?
年前我是个Java的拥护者当时C#还是版我经常和师傅争论Java如何比C#好于是他给我一个回答我们的COM比Java早了近年所以我们更成熟; 我们的NET比Java晚了年所以更先进虽然这么比较有偷换概念的感觉但现在想想其实有另一层意思——成熟与先进的矛盾
LispHaskellScheme这些语言也都可以被称之为伟大但为什么很少有人去学呢?因为需要用太多的东西充斥我们的大脑后才可以使用Java和C#之所以可以快速地被普遍接受一个很重要的原因就是因为它们的简单与清爽但当明年春天C# 发布的时候会怎么样呢?虽然你可以将WCFWFWCS和WPF视为NET的外挂不予理会但LINQ是个不好回避的内容因为它在处理数据访问(关系型的非关系型的)方面有比较明显的优势所以即便你个人排斥它其他还是会有很多人用最后很可能成为这样一种局面参与到一个项目组自己只能从事一些表层业务开发因为下层的公共封装机制都是用LINQ编写的况且还有Enterprise Library这个样板工程在后面催着
可以这么说C#越来越臃肿是个必然的趋势作为NET语言的主力随着新的开发架构的出现C#的复杂性还会增加同时很可能导致革新特性越出越慢毕竟牵扯的内容多了作为主力除了要考虑语言特性间的协作外还要充分考虑处理效率
不过比起一条道跑到黑的Java而言NET平台有个优势——CLS(Common Language Specification公共语言规范)相信Java的设计者不太愿意也不敢随便为了一个快速走红但还没有年时间市场考验的技术趋势就去修改Java编译器; NET不同C#红旗不倒的同时NET平台可以彩旗飘飘比如Spec#就是个例子为了避免null对于软件的影响NET家族诞生了Spec#目的就是通过非null这个前提提高数据验证异常处理堆栈管理的能力利于开发者提供更高质量的软件; F#也是虽然C#是强类型的但动态语言式的开发一样可以基于这个小兄弟开发加上它和其他NET语言前辈基于同一个CLR环境所以功能毫不逊色
综上所述C#臃肿是不可避免的而且很可能会像Visual C++一样因为语言的复杂性导致C#开发人员技术能力的两极分化但同时借助试验性NET语言的支持即便需要集成新的特性也不会像某些语言一样从头开始依靠试验性语言的积累相信从MSDN中查看C#这些新语法的时候可以少见一些标着[Obsolete]的内容