从田忌赛马看Java与.net

来源:互联网 发布:人员架构的优化配置 编辑:程序博客网 时间:2024/05/16 11:11

该文章写给一味贬低 .net 没有发展空间的人,不对Java与.net的前途作评价。

田忌赛马说(原著及注释)


史记卷六十五 孙子吴起列传第五

齐(1)使者如梁,孙膑以刑徒(2)阴见,说(3)齐使。齐使以为奇,窃载与之齐。齐将田忌(4)善而客待之。忌数与齐诸公子驰逐(5)重射。孙子(6)见其马足不甚相远,马有上、中、下辈(7)。于是孙子谓田忌曰:“君弟(8)重射,臣能令君胜。”田忌信然之,与王及诸公子逐射(9)千金。及临质(10),孙子曰:“今以君之下驷(11)与彼上驷,取君上驷与彼中驷,取君中驷与彼下驷。”既驰三辈毕,而田忌一不胜而再胜,卒得王千金。于是忌进孙子于威王。威王问兵法(12),遂以为师(13)。



【注释】(1)“齐”,此时的齐已非姜齐而为田齐,在位者为齐威王。“梁”,即大梁,在今河南开封西北,魏惠王三十一年(公元前三三九年)自安邑(在今山西夏县西北)徙都至此,从此魏亦称梁,但此时魏尚未称梁。(2)“刑徒”,因犯罪而被判罚服劳役的人。(3)“说”,音shuì,以言辞打动人。 (4)“田忌”,齐之宗族,威王时任为将,荐孙膑于威王。(5)“驰逐”,用马车竞赛;“重射”,设重金赌胜。(6)“孙子”,古代孙武和孙膑皆称孙子,此指孙膑。(7)“辈”,等。(8)“弟”,同第,是“但”的意思。(9)“逐射”,即上“驰逐重射”;“千金”,金是古代的货币单位,秦以一镒(音 yì,重二十四两)为一金,战国时期的金可能与之接近。千金是很大的数目。(10)“临质”,箭靶叫质,临质本指临射,这里指比赛即将开始。(11) “驷”,音sì,驾车的四马。这里是劝田忌选择自己三套乘马中的下等对对方的上等,上等对对方的中等,中等对对方的下等。(12)银雀山汉简《孙膑兵法》有(《见威王》)、《威王问》等篇。(13)“师”,军师。

田忌赛马的故事很早就听过了,估计没有不知道的了吧。
但是,今天看<外来媳妇本地郎>的第32集,里面说了个田忌赛马的一个应用例子,感觉特别深刻。
以自己的强项去跟敌人的弱项去拼,这是一个谁都能说得出的道理。

.net很多人都认为诸多原因不能胜任大项目,只能做小项目,而Java因为这样才是企业级应用的王者,其实这里不是在重演着田忌赛马的故事吗,大项目是上驷,中项目是中驷,小项目是下驷,呵呵,以这个作为比喻吧,(也许大家都会说不恰当)大家必须知道世界上项目有大就有小,大企业也有小项目的啊,怎么能说.net就没有立足之地呢。我相信很多都会承认,J2EE的开发成本是相当大的,这里不是说钱,而是时间精力,或者说成是人力,而对于中小项目来说,要的就是多,快,好,省,这个估计大家都能认同的,对于这种需求谁不想用.net做开发呢。这里顺便插句,项目只会越做越大的,估计做开发的朋友,都会会有这样的经历,头头总是说XX功能不足,YY功能要增强,而对于多余的功能总是说,留着吧,以后万一要用呢. 你愿意为了扩大系统而将原来的代码丢弃,重新用Java 从写一次吗?

有人鄙视 .net 的控件,觉得这个东西就是个拖累速度的东西,没有技术含量的东西。我这里只是想问
1。我们要重新发明轮子吗
2。在没有比冒泡排序法更优秀的排序算法出现之前,冒泡排序法不是最优秀的排序算法吗。
答案是显而易见,就以GridView来说吧,分页,排序,等等操作,不借助控件来做,自己还要到处Copy代码,弄得表现层的代码一堆一堆那么多。难道这就是很优美的解决方案吗。

当别人想知道怎么提高Java程序的性能时,其中最卑鄙的一种回答是,购买更好的硬件.
当有人论及Java 性能优于 .net 时,我先不去管具体的差距有多少,我们只是想想,差距能达到1个数量级这么大吗?或者说性能方面的就算不等式 C>Java>.net 成立,会达到以下哪一种情况呢
A .  C > > > > >Java> > > > > >.net
B .  C >Java > > > > > .net
C .  C > > > > >Java> .net
答案明显是C了, 前段时间看了关于Ruby On Rails 的压力分析,大家要知道Ruby 是动态语言, 那真是比Java 和 .net 还要慢一个数量级的啊,结果尚且可以接受,何况Java 和 .net 呢。
说了那么多,差点离题了,如果认为Java在速度是战胜 .net 的其中一点的话,是站不住脚的,毕竟不是什么东西都要像实时系统那样争分夺秒的。 

题外话:
对于有些人问及JSP和Asp.net 哪个更加好学,我的答案是JSP,为什么呢?(有不同意见的先看下去)
就语言来说Java 和 C# 哪个更简单,肯定是Java,看看C# 带入了多少东西
如果大家有空的话,就用SDK+Notepad 写一段Java 和 C# 的程序,我想你肯定会说Java简单,前提是两种语言你都要用过。
但是,为什么很多人都喜欢用C# 呢,因为IDE的缘故啊
其实IDE为我们作了很多东西,例如Framework 1.1 中,你要新建一个WebForm,就要附带三个文件,如果仅用Notepad一个一个弄,非累死你不可。
在这方面我认为.net之所以能发展这么快,VS.net 帮了很大的忙,请问哪位做项目是纯 SDK+ Notepad 的呢? 

 呵呵,顺便庆祝一下,这是第一篇用这个超简单个人文章系统写成的文章