对不起,我也是来给.Net泼冷水的(山寨版)
《对不起,我也是来给.Net泼冷水的(一)——开发领域方面》这篇文章我是大体上认同的。虽然我也能看出一点小瑕疵,比如vista自带的不是.net 2.0 而是 .net 3.0。然后win7自带的是.net 3.5.1。
.net最让人诟病的是什么?我觉得还不是性能问题,而是部署的问题。
.net一开始就没有好好想好怎么部署程序,只是简单的模仿java的做法,但是又模仿的不像。那些牛人估计是这样想的,.net带了元数据,就能很好的解决”dll地狱“的问题,然后我只需要添加点windows的烙印上去,就是一个完美的解决方案了。当然,牛人不是我等能猜透的,我现在想罗列的只是看得到的现实。
比如最近出来的live套件,我安装了.net 4,但是没有安装.net 3.5,安装的时候就让我去安装个低版本的.net。向后兼容几乎是软件部署的一个铁则,但是.net就敢去冒犯这个所谓的铁则。你有没有试过在网上下载的一些.net程序,老是跟你提示一下需要安装.net 1.0, .net 1.1之类的?明明你已经安装了主流的.net 2.0,.net 3.0, .net 3.5.1之类的。
如果.net是很容易安装的,那也无所谓。但是当你身边熟悉的朋友问你,为什么我的电脑突然那么慢了,你打开一看:.net 1.0 , 1.1, 2.0,3.0,3.5,3.5.1,4.0整个家族躺在程序面板里面,你是怎样的无语?当你小心翼翼的告诉朋友,可能是这个东西的问题,你总能听到他们的一顿抱怨,这鬼东西安装又慢又臭,装完又装……
然后第二个话题,.net的过度封装,严重影响了.net的开发效率。不要认为.net开发效率必然很高,要看具体的项目和具体的需要。有些朋友一开口就认为.net的性能是可以原谅的,为什么可以原谅,因为.net有过人的开发效率。但是这个是事实么?在任何条件下都是事实么?不见得吧。
至少在网络编程这一块,我觉得是很没效率的,尤其你要去做传统的网络编程,而不是新潮的“web服务”开发。不过这个是基于以前的经验,现在没怎么接触了。
另外一点,我觉得java社区比较优胜的地方,他们会非常关注所谓的框架,什么spring之类的玩艺,讨论的非常多。java程序员几乎把他们当作入门来看待。而.net社区,基本只会停留在基础的.net框架自身的范畴,很少涉及其他框架。当然有利有弊,比如人们说java就是给代码民工设计的,只知道怎么用框架,而不懂的创造云云。但是有更多机会接触到优秀框架的设计理念,和开发理念,这一点更加值得重视。
作为一个学过政治的年青人,知道什么叫把握主要矛盾的道理,.net的发展我还是看好的。希望不要把我当.net的叛徒阿。而且就连鲍尔默先生也认可我是微软的忠实拥趸呢!