这几天连续有多篇文章(详细文章列表在《.NET和Java之争一点随想》和《由优劣语言之争引起的思考》有写)诋毁.NET,这类文章我十几年前就看得多了,只不过十几年前是C和C++之争,C++和Java之争。我从来不理这类文章,因为这类口水战并没有什么实际意义。
然而接连收到多位粉丝私聊说,主席,你应该写点什么反击了。我才醒悟过来,为了自己,我可以不用理会这些文章,但是为了社区,我必须写点东西。
首先,必须声明一点,我在《广州.NET微软技术俱乐部与其他技术群的区别》说得很清楚,“本群坚决禁止讨论“JAVA和.NET哪个好”、“NET有没有前途”等问题,请把讨论这些问题的时间用来研究如何提高自身.NET技术水平上。”
所以,这篇文章将会是唯一一次也是最后一次讨论.NET和Java之争。
然后,这篇文章的阅读对象是有上进心、好学但是又在迷茫中的.NET粉丝。
这些粉丝的心态我懂,我读书的时候,身边很多人跟我讲,读书没有用,读书并不能赚大钱,很多赚大钱的人都是小学毕业。
那时候我的心态就和这些粉丝心态是一样的。
幸亏后来家族里的长辈点醒我,他只说了四点:
-
福布斯500富豪榜里面,绝大部分都是大学毕业,所以读书无用论这种论点根本经不起推敲。纯粹是这些人为自己辩护找的借口。
-
即使是小学未毕业的爱迪生,和因为贫穷只读了三年书的林肯,大家尊敬他们并不是因为他们读书少,而是因为他们的成就和贡献,并且他们都很尊敬文化人,所以读书无用论是本末倒置。
-
建立了党和国家财政体系(包括长征和解放军后勤、建立商务部和广交会)的叶季壮将军,就是个文化人,新中国暂时还没有哪个小学文化的富豪创造的财富比他创造的财富多,所以读书无用论和读书不能致富就是扯淡。
-
读书无用论是使用小学课文《田忌赛马》里的手法,用小学毕业里的上等马去和大学毕业里的下等马去比,那当然是小学毕业里的上等马胜出啦,正确的比法应该是用小学毕业里的上等马去和大学毕业里的上等马去比。我当时已经是高中文化了,怎么还会中这种这么低级的招数呢?
因此我走出了迷茫,最终考上了大学。十年之后,当我在硅谷上空开飞机的时候,我才发现当年相信读书无用论的同学们不但没开过飞机,甚至连汽车都没有开过(当然现在又过了十年,中国经济发展起来了,绝大部分同学都开上汽车了)。
所以这些迷茫中的.NET粉丝的心态我很懂,不就是当年读书无用论的翻版嘛。
所以诋毁.NET的文章我不关心,我只关心我们这些会被这些文章坑害的粉丝们。我也说几点吧:
-
我2003年就开始用Java里的J2ME做出一个西门子M55手机程序。目前我同时使用Java、.NET(C#)、Python、Typescript四种语言和技术。所以我并没有说Java不好,我只是认为.NET也不差。
-
这些诋毁.NET文章的作者,并没有做过什么实际上的贡献(比如参与开源项目或者写技术文章),和鼓吹读书无用论的是同一类人,纯粹是这些人为自己辩护找的借口。
-
这些诋毁.NET文章的手法,是使用小学课文《田忌赛马》里的手法,用Java里的上等马去和.NET里的下等马去比,那当然是Java胜出啦,嗯,这些人好像并不知道.NET Core这匹.NET体系里的上等马吧。绝大部分粉丝的文化程度都比小学文化高多了,怎么还会中这种这么低级的招数呢?
-
目前流行的网游,比如王者荣耀,是使用.NET平台,这说明了.NET并不差。
-
最近我在整理叶季壮将军的史料过程中,发现在OCR这一块,Java就比不上.NET。在github搜OCR,按照Most Stars排序,你会发现第一页有两个C#的OCR库,而没有Java的OCR库。
- 传统领域,比如Office,也是.NET的天下。当然现在Office更开放了,支持Typescript开发了。
-
当然在某些领域,Java是比.NET强,比如工作流这一块,我自己目前就是用Java的Activiti, 但是Java是可以和.NET共存的啊,特别是在微服务的年代,早就已经是语言无关了。多种语言和框架都可以共存。
-
这些诋毁.NET文章没有举出任何一个.NET不好的实例,而我在前面就举了三个实例,真的是造谣张张嘴,辟谣跑断腿啊。
最后单独说一下大家最关心的问题,就是Java程序员工资比.NET程序员高。
这种手法比小学课文《田忌赛马》里的手法高明点,然而很容易识破啊。
这种手法的另一个例子是:我和中国前五个富人的财富一平均,我也是亿万富翁。
See! 这种手法很清晰了吧,“Java程序员工资比.NET程序员高”没有任何意义,重点是“你做Java程序员工资会不会比做.NET程序员工资高”,这才有讨论的意义。
我的经验告诉我:
- .NET转Java是需要付出成本的,如果你不会.NET里的IOC、设计模式、DDD、TDD、BDD,那么你转Java,你一样还是需要付出海量的时间去学会这些东西。
- 只学会一种语言而不学它的框架和库是什么都干不了的。光学Java是没有生产力的,你至少要学习SSM三大框架,做点有规模的项目还要学Spring Security, Activiti, Drools等等。这都是要花不少时间的,同样的时间用来学好.NET Core提高生产力岂非更好?
- 你付出成本转成Java之后,收益不一定比原来.NET的高。因为除了公司内部转Java保证了你的工资待遇外,换一个公司求职你就变成了一个0年工作经验的Java新手,这在一些非算法取胜的公司里是很吃亏的,最终工资未必比你原来.NET的薪水高,毕竟你在.NET是按有经验的工资去付的。目前能够成功从.NET转JAVA的成功案例大部分都是公司内部转,保证了你的工资待遇。
- .NET Core正在崛起,微软重回市值第一,你花了时间转Java之后会不会错过这个时机呢?
-
不管你是用Java还是用.NET,只要能把事情做好了,就能拿高工资,如果老板不肯给你高工资,那你就换一家公司。
-
要通过把事情做好来拿到高工资,你很可能需要同时使用.NET和Java, 比如现在的我,工作流用Java,前端用TypeScript,数据采集和分析用Python,其他用C#/.NET Core.
-
如果抱着.NET垃圾的想法,那么当项目需要使用OCR、网游或者其他.NET擅长领域的时候,你因为不喜欢.NET而不去用.NET,从而没有把事情做好,那你可能会被降工资。
这个世界上,大概率是做实事的人会等到尊重,比如王安电脑的王安,当年排名全球第5富(目前还没有其他亚洲人能做到这点),美国人并没有因为他是华人而鄙视和打压他,反而很尊重他,被选为全美最杰出的12位移民之一,接受了里根总统颁发的“总统自由奖章”。王安卖电脑就没有打什么民族牌、爱国牌。所以还是少点空谈,多干点实事吧。
写这篇文章总计花费58分钟,这个时间比我做".NET俱乐部联盟官网"里一个PBI和写“ABP大型项目实战(1) - 目录”这篇技术文章耗时还多。所以这篇文章将会是唯一一次也是最后一次讨论.NET和Java之争,有多余的空闲时间还是用来做点实事吧。
我依旧坚持群规:“本群坚决禁止讨论“JAVA和.NET哪个好”、“NET有没有前途”等问题,请把讨论这些问题的时间用来研究如何提高自身.NET技术水平上。谁先挑起这个话题被警告三次后就请出群,目前已经有多位人士被请出群了,请合作,谢谢。”