最近Richard Grimes的一篇文章,把.Net社区搅弄了一番,CSDN也将这个新闻放在了首页上。博客园也有人发了一篇帖子,表示了自己对.Net的疑问。
Visual C#的产品经理Dan Fernandez则在他的Blog上发表了一篇文章,逐条的反驳了Richard Grimes的观点。那么我也凑凑热闹,来讲一讲自己的观点,为什么Microsoft不做某些看起来“理所当然”的事情。
一、Microsoft对.Net没有信心吗?
恰恰相反,Microsoft相对IBM、SUN最大的不同就是,如果Microsoft认准的方向,会将整个Microsoft全部“押”上去,投入所有的力量,尽最大的努力做到最好。从DOS到Windows,从Win32到.Net,无不是如此。不管是IBM,还是SUN,在推广某项技术的同时,总会“留上一手”,以免“万一不利”的时候,还有备选方案,或者能够避免让整个公司受损。看起来似乎很“安全”,但是,如果连公司自己都没有“决一死战”的信心和勇气,还能指望消费者能相信自己吗?
当Lotus、WordStar领先于办公套件市场时,当几乎所有上网的人都使用Netscape时,当OS/2号称将取代DOS和Windows时,当Java似乎要将所有程序员吸引过去时,如果没有“决一死战”的信心,没有将整个公司“押”上去的勇气,你认为,Microsoft能走到今天吗?
二、为什么Microsoft自己不将所有现有产品都彻底用.Net改写掉?
一家软件公司最愚蠢的事情之一,就是公司的管理层听信了开发人员的下面这句话:“天哪,旧版本的代码简直就是垃圾,我们唯一的选择就是重头设计一个全新的系统,用最棒的技术来构建!”无数软件公司都是死在了这句话之下。
Netscape的管理层就曾经听信过开发人员的话,用全新的代码去构建Netscape的下一个版本,而不是基于旧版本进行逐步的升级。最后,似乎永远无法Release的全新版本,把Netscape彻底拖死了...
三、但是,“纯粹”的.Net,多激动人心呀!
嗯,有个专门的术语,叫做“The Myth of .NET Purity”(纯血统.Net神话),请先阅读这篇文章。我们生活在一个真实的世界,在这个世界中,已经有大量的使用Win32 API、COM等“过时”的技术构建起来的系统,而且这些系统可能还需要维护和升级。如果我们生活在一个完美的世界,那么,我们倒的确可以尝试用最新的技术去构建和升级一切系统!
顺便一提的是,Longhorn本身不是托管的(Longhorn is NOT managed),而且从一开始就没打算将其设计成一个纯.Net的OS。Longhorn仍然是以现有的Windows代码为基础,经过许多的改进而成的。重要的是,Longhorn的开发接口WinFX是托管的。