?
引用
的.NET发展中的几个失误
? 西安.NET培训,西安软件培训,西安软件开发培训,西安计算机培训,西安电脑培训,西安IT培训
我一直认为,.NET是目前设计的最漂亮的基础软件平台,这个平台从设计之初,就对与一些长期困扰软件开发者的老问题从根本上进行了重新考虑,并且给出了格外非常好的解绝方案。比如像Assembly的概念,像AppDomain的概念,关于安全问题的解绝方案,确实是考虑得格外非常周倒。.NET刚出来的时候,像Jeffrey Richter,Jeff Prosise等老牌微软技术专家,都在兴奋地高呼看倒了软件开发的未来,这种呼声估量也不能xx看成是替微软在摇旗鼓吹。事实上,.NET本身的优越性不仅仅征服了微软阵营,也征服了一部分开源技术专家。GNU组织就启动了一个项目来效仿.NET,这应该是关于.NET技术优越性的{zj0}注脚。
然而几年下来,.NET的发展符合微软的预期吗?符合曾经对微软迷信得如痴如醉的fans们的预期吗?估量不是这样的吧。
.NET技术是出色的,但是执行上大大小小失误的地方有很多。从大的方面来讲,像.NET这样面向Internet的技术体系,本质上必需跨平台。只有跨平台,才华遮盖网络上的各个节点,使原来是异质的网络同质化,使.NET成为Internet的API,假如能达成这个目标,则.NET就千秋万代了。但微软并没有这样做。在将.NET扩展倒Linux、FreeBSD等其他Internet主流平台上的过程中,微软的表现始终是犹犹豫豫,模模糊糊,格外非常暧昧。
为什么这样明显具有重大战略意义的步子却总迈不开?最简单的揣测是,微软担心这样做会客观上勉励人们使用Linux/FreeBSD等操作系统,从而简捷削弱Windows,直接打击微软的主要利润来源。另外,.NET本身还处于快速变迁中,战线拉得太长也会带来技术体系保持上的难题。
今天的微软已经是一个大公司,各部门各产品线之间的利益关系交叉复杂,即使是明显正确的绝策也要在官僚主义的台球桌上撞个七荤八素才华落袋,何况像.NET跨平台这样重大的战略性绝策。总之,直倒现在,我们仍然只能在Windows上使用.NET(不要跟我较真提什么Mono)。这样就把一个原来能够成为遮盖Internet的未来软件环境变成了Windows本身的一个API升级版,战略意义折损大半。回想一下2000-2002年间.NET的那些初期宣传,什么XML,Web Services,什么.NET My Services,多么激进的面向Internet的计划!有人说当时微软对技术发展趋势判定失误,这是胡说。哪里有失误?XML难道不是已经成为网络数据描述的标准了吗?Web Services难道不是为SOA奠定了基础吗?.NET My Services难道不正是今天Google梦寐以求想做的事情吗?哪里有错?只不过自己不坚定,见势不妙就打退堂鼓而已!
即使从Windows API升级版的角度看.NET的执行与推广,失误仍然很大。微软在向.NET移动的过程中,关于如何处理好上一代技术(基于C/C++/COM)与.NET过渡的问题上表现得很不成熟。几个月内过火的宣传排山倒海,把对手们吓得心惊胆寒,把fans们搞得心驰神迷,把自己也灌得晕晕乎乎,可以说是乱了敌人也乱了自己。什么可以马上转?什么要有中长期的转型计划?什么果断保持稳定?上上下下发生了严重的思想混乱。结果在技术平台过渡这样重大的战略步骤中出现强行军、大跃进的左倾机会主义行为。可以一定地说,Windows Vista的严重跳票,与激进的技术转型有直接的关系。回顾历史,想想微软从DOS过渡倒Windows时代的战战兢兢,周全稳妥,令人不仅唏嘘,同是一家公司,前后差别咋就这么大呢?
让我们再退一步,看看整天跟我们打交道的这几个.NET编程语言好了。微软在微观层面上{zd0}的失误就是对VB.NET语言发展方向的绝策失误。原来,在.NET平台上的三种主流语言VB、C#和C++有一个格外非常清楚的定位。C++专攻底层,与CLR同级,开发效率放两旁,把“强”字摆中间。C#作为CLR上的系统语言,解绝.NET上的系统软件开发,开发效率和功能兼顾,但也绝不在哪一边冒头。这样一来,留给VB一个光荣使命——应用开发。VB应该是一个强调生产率,强调简便易用,快速开发的语言,凡是跟这个目标相冲突的,都可以请出VB,脏活累活让C#和C++去做吧,让我们VB漂漂亮亮体体面面地去做very high level language,在开发效率上5倍10倍地超过C#,那才是VB的使命!历史上VB在微软技术体系里不是一直扮演这样的角色吗?历史上VB在这个角色上的表现不是一直都很杰出吗?CLR是干什么的?语言互操作为了什么?不就是为了各个语言各展所长,{zh1}一对接,天衣无缝,皆大欣喜吗?难道我没事制造20种同一个level,表示能力相同,连语义模型都差不多的语言耍着好玩吗?
可是你看看VB.NET干了什么?在Perl、Python已经充分证实了动态语言在生产效率上的威力之后,VB.NET不但没有在VB6的基础上进一步走向动态,走向高生产率,反而往回缩,语言变得比以前更严格了,加强了类型系统的约束,一大堆对生产效率有影响的复杂面向对象特性被毫不犹豫地加入VB,一个简单明快的VB变成了庄重厉穆VB.NET,变成了C#的等价Basic版。假如没有C#,这一切都没什么错误,可是有了C#,还放一个几乎可以句对句翻译的VB,有什么意义呢?除了让老VB6的开发者悲愤欲绝,除了把.NET开发人员毫无必要地划分为两个不能自由勾通的阵营,除了让MSDN文档的长度延长一倍之外,关于开发者提供了什么实质的好处吗?其结果是,.NET主流语言体系里出现了一个基础语言,两个生产率和能力等价的中级语言,而在高生产率的应用开发语言这一栏里,写着一个“暂缺”。
现在VB的那些产品经理大概总算意识倒了这个问题,在VB的My名字空间里加入一大堆便利的特性。很好,你们终于看清楚VBers的脑门上写的是什么了:不尚虚名,只求实效。惋惜啊,晚了!