java和.net的理念之别
.net 开发为代表的微软软件开发方法论,就是从消费者的角度观察,比如“积木搭建”这种方式。
而java开发为代表的方法论,比较偏重于系统管理者的思维,去对于一个系统进行解析,细化,协调。
<p$1$2$3$4$5$6>
总的来说,微软的策略是失败的。因为微软是从外部观察开发,而不是从内部,无法从系统的角度去观察开发。
微软认为“控件”是高效率的,但是控件这种半成品如果从程序角度,包括了逻辑,UI等等,表面上一拖就行,实际上限制了应用范围。作为一个系统的选型,他不可能要一个全功能的控件去限制自由度,甚至连UI都给微软限定了,系统通常只要组件做好某个层次的功能就可以了。
如何理解微软的思维:它等于把一个个完成了的作品让你去拼接,就好象“食神”那道菜:从各种鱼身上割一块肉去重新拼成一条鱼,很难做到和谐。而正确的做法,应该是提供骨架,肉,皮等不同层次的组件。
<p$1$2$3$4$5$6>
微软的全功能思维是非常顽强的,在vs的设计上也是如此,每一个部分都是极度耦合的,他不会让你用“散打”的方式去使用vs。
<p$1$2$3$4$5$6>
微软知道自己提供一个一站式的控件,让你十分钟做出一个播放器,是可能的,但是要拿去卖基本没人买。软件,只有充分的调整自身的组成结构,才能从根本上产生竞争力,而这些都要求从系统的角度,从程序员的角度,而不是从消费者的角度去进行开发。不错,改变的就是”不起眼“的算法,”不重要“的程序结构,这些消费者所无法理解的元素,却是根本的。
微软一直以来,投入了大量资源,却是去扼杀程序最重要的东西,那就是创造力。程序员需要的不是使用思维,而是创造思维,微软让程序员变成傻瓜,那么生产出来的软件也是傻瓜才会去用。正确的做法是让程序员变聪明,但是减少他们的琐碎工作,帮助他们集中精力去做最有价值的思考。
<p$1$2$3$4$5$6>
不过,微软已经意识到软件开发的真正价值,并不在于”高速“的完成软件,而在于提供有竞争力的软件。现在的微软,已经不是以前那个只会拖控件的vb6时代的微软,他已经懂得什么叫软件工程,懂得什么叫敏捷开发,懂得什么叫测试优先,既然如此,为何还要用老一套的观点去评价微软。微软已经逐渐成长了,停滞可能是我们。
对于现代的微软工具来说,你完全可以按照java的理念去进行开发,而且我相信微软是擅长制作工具的公司,只要他能够改变设计的理念,投入的资源不是什么IBM,SUN,甲骨文,Google之类的不入流公司所能相提并论的。