.NET和Java之争

这几天连续有多篇文章诋毁.NET,这类文章我十几年前就看得多了,只不过十几年前是C和C++之争,C++和Java之争。我从来不理这类文章,因为这类口水战并没有什么实际意义。

 

然而接连收到多位粉丝私聊说,主席,你应该写点什么反击了。我才醒悟过来,为了自己,我可以不用理会这些文章,但是为了社区,我必须写点东西。

 

首先,必须声明一点,我在《广州.NET微软技术俱乐部与其他技术群的区别》说得很清楚,“本群坚决禁止讨论“JAVA和.NET哪个好”、“NET有没有前途”等问题,请把讨论这些问题的时间用来研究如何提高自身.NET技术水平上。”

所以,这篇文章将会是唯一一次也是最后一次讨论.NET和Java之争。

 

然后,这篇文章的阅读对象是有上进心、好学但是又在迷茫中的.NET粉丝。

这些粉丝的心态我懂,我读书的时候,身边很多人跟我讲,读书没有用,读书并不能赚大钱,很多赚大钱的人都是小学毕业。

那时候我的心态就和这些粉丝心态是一样的。

幸亏后来家族里的长辈点醒我,他只说了四点:

  1. 福布斯500富豪榜里面,绝大部分都是大学毕业,所以读书无用论这种论点根本经不起推敲。纯粹是这些人为自己辩护找的借口。

  2. 即使是小学未毕业的爱迪生,和因为贫穷只读了三年书的林肯,大家尊敬他们并不是因为他们读书少,而是因为他们的成就和贡献,并且他们都很尊敬文化人,所以读书无用论是本末倒置。

  3. 建立了党和国家财政体系(包括长征和解放军后勤、建立商务部和广交会)的叶季壮将军,就是个文化人,新中国暂时还没有哪个小学文化的富豪创造的财富比他创造的财富多,所以读书无用论和读书不能致富就是扯淡。

  4. 读书无用论是使用小学课文《田忌赛马》里的手法,用小学毕业里的上等马去和大学毕业里的下等马去比,那当然是小学毕业里的上等马胜出啦,正确的比法应该是用小学毕业里的上等马去和大学毕业里的上等马去比。我当时已经是高中文化了,怎么还会中这种这么低级的招数呢?

因此我走出了迷茫,最终考上了大学。十年之后,当我在硅谷上空开飞机的时候,我才发现当年相信读书无用论的同学们不但没开过飞机,甚至连汽车都没有开过(当然现在又过了十年,中国经济发展起来了,绝大部分同学都开上汽车了)。

 

所以这些迷茫中的.NET粉丝的心态我很懂,不就是当年读书无用论的翻版嘛。

所以诋毁.NET的文章我不关心,我只关心我们这些会被这些文章坑害的粉丝们。我也说几点吧:

  1. 我2003年就开始用Java里的J2ME做出一个西门子M55手机程序。目前我同时使用Java、.NET(C#)、Python、Typescript四种语言和技术。所以我并没有说Java不好,我只是认为.NET也不差。

  2. 这些诋毁.NET文章的作者,并没有做过什么实际上的贡献(比如参与开源项目或者写技术文章),和鼓吹读书无用论的是同一类人,纯粹是这些人为自己辩护找的借口。

  3. 这些诋毁.NET文章的手法,是使用小学课文《田忌赛马》里的手法,用Java里的上等马去和.NET里的下等马去比,那当然是Java胜出啦,嗯,这些人好像并不知道.NET Core这匹.NET体系里的上等马吧。绝大部分粉丝的文化程度都比小学文化高多了,怎么还会中这种这么低级的招数呢?

  4. 目前流行的网游,比如王者荣耀,是使用.NET平台,这说明了.NET并不差。

  5. 最近我在整理叶季壮将军的史料过程中,发现在OCR这一块,Java就比不上.NET。在github搜OCR,按照Most Stars排序,你会发现第一页有两个C#的OCR库,而没有Java的OCR库。

  6. 当然在某些领域,Java是比.NET强,比如工作流这一块,我自己目前就是用Java的Activiti, 但是Java是可以和.NET共存的啊,特别是在微服务的年代,早就已经是语言无关了。多种语言和框架都可以共存。

  7. 这些诋毁.NET文章没有举出任何一个.NET不好的实例,而我在前面就举了三个实例,真的是造谣张张嘴,辟谣跑断腿啊。

 

最后单独说一下大家最关心的问题,就是Java程序员工资比.NET程序员高。

这种手法比小学课文《田忌赛马》里的手法高明点,然而很容易识破啊。

这种手法的另一个例子是:我和中国前五个富人的财富一平均,我也是亿万富翁。

See! 这种手法很清晰了吧,“Java程序员工资比.NET程序员高”没有任何意义,重点是“你做Java程序员工资会不会比做.NET程序员工资高”,这才有讨论的意义。

我的经验告诉我:

  1. .NET转Java是需要付出成本的,如果你不会.NET里的IOC、设计模式、DDD、TDD、BDD,那么你转Java,你一样还是需要付出海量的时间去学会这些东西。

  2. 只学会一种语言而不学它的框架和库是什么都干不了的。光学Java是没有生产力的,你至少要学习SSM三大框架,做点有规模的项目还要学Spring Security, Activiti, Drools等等。这都是要花不少时间的,同样的时间用来学好.NET Core提高生产力岂非更好?

  3. 你付出成本转成Java之后,收益不一定比原来.NET的高。因为除了公司内部转Java保证了你的工资待遇外,换一个公司求职你就变成了一个0年工作经验的Java新手,这在一些非算法取胜的公司里是很吃亏的,最终工资未必比你原来.NET的薪水高,毕竟你在.NET是按有经验的工资去付的。目前能够成功从.NET转JAVA的成功案例大部分都是公司内部转,保证了你的工资待遇。

  4. .NET Core正在崛起,微软重回市值第一,你花了时间转Java之后会不会错过这个时机呢?

  5. 不管你是用Java还是用.NET,只要能把事情做好了,就能拿高工资,如果老板不肯给你高工资,那你就换一家公司。

  6. 要通过把事情做好来拿到高工资,你很可能需要同时使用.NET和Java, 比如现在的我,工作流用Java,前端用TypeScript,数据采集和分析用Python,其他用C#/.NET Core.

  7. 如果抱着.NET垃圾的想法,那么当项目需要使用OCR、网游或者其他.NET擅长领域的时候,你因为不喜欢.NET而不去用.NET,从而没有把事情做好,那你可能会被降工资。

 这个世界上,大概率是做实事的人会等到尊重,比如王安电脑的王安,当年排名全球第5富(目前还没有其他亚洲人能做到这点),美国人并没有因为他是华人而鄙视和打压他,反而很尊重他,被选为全美最杰出的12位移民之一,接受了里根总统颁发的“总统自由奖章”。王安卖电脑就没有打什么民族牌、爱国牌。所以还是少点空谈,多干点实事吧。

 

写这篇文章总计花费58分钟,这个时间比我做".NET俱乐部联盟官网"里一个PBI和写“ABP大型项目实战(1) - 目录”这篇技术文章耗时还多。所以这篇文章将会是唯一一次也是最后一次讨论.NET和Java之争,有多余的空闲时间还是用来做点实事吧。

 

我依旧坚持群规:“本群坚决禁止讨论“JAVA和.NET哪个好”、“NET有没有前途”等问题,请把讨论这些问题的时间用来研究如何提高自身.NET技术水平上。谁先挑起这个话题被警告三次后就请出群,目前已经有多位人士被请出群了,请合作,谢谢。”

原文地址:https://www.cnblogs.com/adalovelacer/p/dotnet-vs-java.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
640?wx_fmt=jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性代数一之矩阵转向量随机化求解——神奇的矩阵(BZOJ)+向量内积

向量随机化神奇的矩阵descriptionsolutioncode[NOI2013]向量内积descriptionsolutioncode矩阵既可以看成是一张数位表,也可以看成是若干个行向量或者若干个列向量的向量表神奇的矩阵 description solution 暴力做A∗BA*BA∗B会达到n3n^3n3的复杂度,难…

潘淳:国士无双《微软技术俱乐部(苏州)成立大会暨微软技术交流会介绍》附专题视频...

题记:凡我赶不上的,我就在未来等他,随时等待捕捉那个趋势的的到来。2019年立一个FLAG,加入一个成长性组织,一个能让我学习使我成长的平台。2019年你和我都将亲历这个组织的到来,一个属于苏州程序员自己的大…

ASP.NET Core中借助CSRedis实现安全高效的分布式锁

引言最近回头看了看开发的.NET Core 2.1项目的复盘总结,其中在多处用到Redis实现的分布式锁,虽然在OnResultExecuting方法中做了防止死锁的处理,但在某些场景下还是会发生死锁的问题,下面我只展示部分代码:问题&#x…

L Machining Disc Rotors

L Machining Disc Rotors 题意: 圆心为(0,0)半径为R的圆,现在被被n个互不相交的圆切割(圆心和半径会给出),保证这n个彼此之间不会交叉,保证n个圆中不会有某个包含整个大圆的情况。问切割后大圆剩余部分的直径(即两点…

线性代数二之矩阵加速DP——数学作业,Arc of Dream

矩阵加速数学作业descriptionsolutioncodeArc of Dreamdescriptionsolutioncode数学作业 description solution dpdpdp状态转移方程,dpidpi−1∗10lenii(modM)dp_{i}dp_{i-1}*10^{len_i}i\pmod Mdpi​dpi−1​∗10leni​i(modM) nnn巨大,分段矩阵加速 …

Shadow Properties之美(二)【Microsoft Entity Framework Core随笔】

接着上一篇Shadow Properties之美(一),我们来继续举一个有点啰嗦的栗子。先看简单需求:某HR系统,需要记录员工资料。需要记录的资料有:员工号(规则:分公司所在城市拼音首字母&#x…

线性代数三之状压DP的矩阵加速——Quad Tiling,Bus公交线路

状压与矩阵加速的藕断丝连Quad Tilingdescriptionsolutioncode[Hnoi2010]Bus 公交线路descriptionsolutioncodeQuad Tiling description solution 设dpi,S:dp_{i,S}:dpi,S​: iii列的状态为SSS的方案数&#xff0c;最后答案为dpn,(1<<4)−1dp_{n,(1<<4)-1}dpn,(…

如何在ASP.NET Core程序启动时运行异步任务(2)

原文&#xff1a;Running async tasks on app startup in ASP.NET Core (Part 2)作者&#xff1a;Andrew Lock译者&#xff1a;Lamond Lu在我的上一篇博客中&#xff0c;我介绍了如何在ASP.NET Core应用程序启动时运行一些一次性异步任务。本篇博客将继续讨论上一篇的内容&…

线性代数四之动态DP(广义矩阵加速)——Can you answer these queries III,保卫王国

动态DP——广义矩阵加速SP1716 GSS3 - Can you answer these queries IIIdescriptionsolutioncode[NOIP2018 提高组] 保卫王国descriptionsolutioncode动态DP能矩阵加速要满足外层操作符对内层操作符具有分配率加法对于乘法就具有分配率(ab)*ca*cb*c SP1716 GSS3 - Can you a…

.Net Core跨平台应用研究-HelloArm(串口篇)

引言为了验证采用dotnet core技术开发的物联网设备数据采集接入服务应用是否能在高性价比的linux嵌入式平台运行&#xff0c;针对dotnet core应用程序进行嵌入式linux环境的发布部署运行验证研究。硬件环境硬件系统经过对比筛选&#xff0c;选用了友善之臂出品的NanoPC-T3 Plus…

[数论系列一]C Looooops,跳跳棋,The Luckiest number,CF906D Power Tower,Minimal Power of Prime,仪仗队,LCMSUM

文章目录C Looooopsdescriptionsolutioncode跳跳棋descriptionsolutioncodeThe Luckiest numberdescriptionsolutioncodeCF906D Power TowerdescriptionsolutioncodeMinimal Power of Primedescriptionsolutioncode[SDOI2008]仪仗队descriptionsolutioncodeLCMSUMdescriptionso…

.NET Core使用微软AI认知服务识别文字语言

点击上方蓝字关注“汪宇杰博客”识别一段文字的语言有多种途径&#xff0c;在这个以AI为热点的时代&#xff0c;我们也可以给自己的应用强行加上AI&#xff0c;然后就能加上“智慧”的名字“自主研发成功”后去吹牛逼。今天我带大家来看看如何使用微软智慧云Azure提供的AI认知服…

【NET CORE微服务一条龙应用】第二章 配置中心使用

背景系列目录&#xff1a;【NET CORE微服务一条龙应用】开始篇与目录在分布式或者微服务系统里&#xff0c;通过配置文件来管理配置内容&#xff0c;是一件比较令人痛苦的事情&#xff0c;再谨慎也有湿鞋的时候&#xff0c;这就是在项目架构发展的过程中&#xff0c;配置中心存…

D - ABC Conjecture Gym - 102798D

D - ABC Conjecture Gym - 102798D 题意&#xff1a; 规定rad(n)n的所有质因子的乘积 给你一个c&#xff0c;问能否构造a和b使得abc且rad(abc)<c 题解&#xff1a; 先说结论&#xff0c;如果c可以拆分出两个一样的质因子&#xff0c;则能构造a和b 即 np1a1 * p2a2 . . .…

“幕后英雄”之Backing Fields【Microsoft Entity Framework Core随笔】

刘德华 有一首歌叫《马桶》&#xff0c;其中有一句歌词是&#xff1a;每一个马桶都是英雄。EFCore也有一个英雄&#xff0c;在幕后默默地任劳任怨。它就叫 "支持字段" (Backing Fields):中文版&#xff1a;https://docs.microsoft.com/zh-cn/ef/core/modeling/backin…

数论练习二之BSGS算法——随机数生成器,Matrix,Lunar New Year and a Recursive Sequence,Fermat‘s Last Theorem

[SDOI2013] 随机数生成器 description solution 肯定是非常想找一个通项公式来表示第nnn个数的 依据形式&#xff0c;考虑化成等比数列 xi1ka(xik)a⋅xibt⇒kba−1x_{i1}ka(x_ik)ax_ibt\Rightarrow k\frac{b}{a-1}xi1​ka(xi​k)a⋅xi​bt⇒ka−1b​ ⇒xiba−1ai−1(x1ba−…

NetCore下模拟和使用Modbus工业通信协议

Tips&#xff1a;1、目前NetCore下与Modbus通信的框架主要选择了 Modbus.Net https://github.com/parallelbgls/Modbus.Net2、modbus是常用的工业通信协议&#xff0c;在软件调试时可以通过modbus pollslave模拟通信通过达到调试目的&#xff0c;下图是我使用软件1&#xff09…

C - Rencontre Gym - 102798C

C - Rencontre Gym - 102798C 参考题解&#xff1a; 参考一 参考二 题意&#xff1a; 有一棵树&#xff0c;树上的点分为三种&#xff0c;&#xff08;一个点可以为多种&#xff09;&#xff0c;现在分别在三种点中随机选一点a&#xff0c;b&#xff0c;c&#xff0c;然后找到…

API标准化成为技术团队面临的最大挑战

调查表明&#xff0c;API 标准化成为了技术团队面临的最大挑战。SmartBear 发布了 2019 年 API 状态报告“The State of API 2019”&#xff0c;此报告旨在为 API 行业建立关于软件团队在 2019 年规划、设计、开发、测试、记录和监控 API 的方法、实践和工具的基准。此次调查有…

线性代数五之高斯消元——[SDOI2010]外星千足虫,[HNOI2013]游走,[HNOI2011]XOR和路径,[hdu 4035]Maze

多类型高斯消元杂题[SDOI2010]外星千足虫descriptionsolutioncode[HNOI2013]游走descriptionsolutioncode[HNOI2011]XOR和路径descriptionsolutioncodeMaze(树上高斯消元)problemsolutioncode[SDOI2010]外星千足虫 description solution 高斯消元的模板题 虽然感觉问了个最…