前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#系列之编程语言好坏撕逼大战

C#系列之编程语言好坏撕逼大战

作者头像
我是攻城师
发布2018-05-11 17:44:27
2.3K0
发布2018-05-11 17:44:27
举报
文章被收录于专栏:我是攻城师

我是.NET铁杆粉丝,所以如果你要在评论里跟我撕逼.NET怎么怎么烂,Java、C++、PHP、JavaScript怎么怎么好,我奉陪。我这人没什么优点,就是说话直入主题,然后骂到你爽为止,当然咯我不是纯流氓,我是有文化的流氓,呵呵。

为什么我喜欢.NET

我用.NET十年了,说实话C#这个语言我很喜欢,比C++不知道人性化多少,当然前提是不考虑性能的情况下,C++的性能比.NET好上10倍左右,这是官方MSDN里提到的,所以不用质疑。但问题是Java也好不到哪去,慢的跟狗屎一样,只能说半斤八两。倒是JavaScript的V8引擎异军突起,你看Node.js最近多火呀,当然V8也是用C++写成的,性能赞也不足为奇。

.NET的设计理念是会一种语言即可,但程序会被编译成同一种代码(MSIL),然后运行在同一个虚拟机上(CLR)。其实不得不说微软的有些理念还是很不错的,虽然理想很丰满,现实很骨感。虽然微软经常干虎头蛇尾的事,但.NET是个例外,至少目前来看,.NET的语言层面的推广和维护做的还是很不错的,近期微软对于开源及Linux系统上Mono的支持力度还是很不错的,并且已经开源了CLR,我们可以预见不久的将来很多高级的定制CLR会诞生,微软正在仿效当年Sun的模式来推广.NET。

.NET中最棒的语言自然是C#,这个没有之一,因为C#融合了C++的所有优秀特性,同时也增加了新的东西,如LINQ、Lamda表达式、匿名委托等。有很多特性即使是Java,目前也未实现。而且C#比C++多了两个+,哈哈(这是个笑话)。

微软有全球最好的集成开发环境(IDE),没有之一,这也是我喜欢.NET的关键因素。当然有些脑残程序员会昧着良心说,这种傻瓜IDE是给不懂程序的人用的,我只能说你要羡慕嫉妒恨我是没办法的,Eclipse这种鸟玩意定制IDE是不错,要说体验我还真觉得不咋地,启动慢的要命,各种啃爹界面设计。只可惜Visual Studio目前还没有开源,等开源了就没Eclipse什么事了,哪凉快哪呆着去!

另外么,有些脑残.NET黑会说.NET那帮人只会拖控件,我可以明确的告诉你,我现在基本用notepad写css, html, js,即使用Visual Studio有没有智能感知对我来说没太大区别,更不要说什么toolbox拖住控件了,这是说明你不懂呢?还是说明你不懂呢?你这种门外汉也好意思来评论.NET,闲得蛋疼大概!

中国.NET生态系统现状

其实中国.NET程序员最痛苦的一件事情恐怕是找工作,据非官方猎头数据,微软.NET程序员的需求量在去年减少了一半以上,大量企业已经转向或正在转向非微软技术,比如Java、Python等,当然有一部分原因可能是一些企业需要更稳定的操作系统平台,比如Ubuntu或CentOS,Java在跨平台方面确实是有优势的,这点我不否认;Python开发web有点类似于当年的PHP,再加上各种类库齐全(特别是大数据这块),正在逐渐成为一些程序员的主要吃饭语言。

.NET在中国究竟怎么了?是水土不服还是怎么回事?其实吧,我的经验告诉我,与其说.NET本身有问题,不如从人的身上找找原因。基本上我的很多朋友也在转其他语言,理由很简单,因为很多公司不用.NET,那为什么不用呢?因为领导觉得.NET不行,所以要换,问题来了,为什么是“觉得.NET不行"?有数据能说话吗?还是拍脑袋的?领导说,.NET大型网站成功案例太少,行吧,这确实是个问题!但是这能说明.NET不行吗?还是做的人水平不行?!如果完全没有案例,那确实是.NET本身的问题,但如果有网站用.NET跑的很溜(比如stackoverflow),然后你说.NET不行,那你说这是谁的问题?是.NET还是人?大家心里有数。目前.NET阵营的情况是紧缺资深架构师,这个问题不解决,再牛的语言也是白搭,因为一群菜鸟在领导着一些大型项目,而且参考案例少,导致他们都不知道该怎么搭建自己的架构。相对而言,Java你即使是菜鸟架构师,随便找个案例一样画葫芦总会把,就这么回事。当然Java也有画错的时候,比如12306那个做的烂呀,你们不是说Java很棒吗?我笑笑。

重建的时机好不好?

一个平台的生态系统重建绝非一朝一夕,必须大家配合,特别是微软这位大哥的配合。在过去的10年里,.NET其实有过机会,但是微软没有把握好,当然现在重建并不晚,特别是微软完善了全平台产品布局,随着win10的推出,微软将有可能统治各种设备领域,这在过去是很难想象的。

特别是单片机设备、小型手持设备领域,微软比以往任何时候都要强大,再加上bing的市场份额已经接近20%,以及新CEO的上台,2015对于微软也许是转折的一年。

如何重建中国.NET生态系统

.NET生态系统的重建其实可以参考当年Java的模式,以及Apache基金会的模式,即以开源带动整个社区的活跃性,并且通过个中合作渠道,拉高合作伙伴的商业化热情。

其实Java为什么会这么火,很大程度上要感谢开源社区,其实很多公司选择Java的一个重要原因是因为他们觉得Java的开源组件很多,其实同一个功能选择也很多,而且又是免费+开源的,何乐而不为,大不了让苦逼的程序员去理解源代码然后定制。这一点确实是.NET的软肋,但是我们正在改变这一切,我有资格这么说,因为单单我的团队就贡献了3个非常有用的框架(NPOI, Toxy和Nepy),这些框架分别对应于java的POI、Tika以及Stanford NLP(NER部分)。我朋友也有其他的.NET开源组件在维护,我是想说,通过大家的努力,.NET开源领域正在被丰富,而且逐渐你会发现你需要的开源库.NET其实都有了,只是可能没有Java这么丰富,这需要时间和人的投入,以及社区的信任才会得到发展

微软说实话,在过去的日子里很不给力,基本上.NET社区一直处于”散养“状态。如今随着微软开源运动的推进,这一切正在改变,微软正在主导社区创新,并帮助整个.NET技术社区成长,这个非常有意思。去年呢,.NET基金会也成立了,虽然这帮人到现在还在“打酱油”(谁说只有中国出酱油男),我已经发邮件给几个微软资深PM了,他们已经明确表示接下来会有改观,基金会还新聘了一个市场总监,专门负责推广事宜,既然他们都明确表态了,我相信会有不同。让时间来证明一切。

重新拉拢合作伙伴也是微软应该做的事情,其实在过去,微软中国区合作伙伴比散养好不了多少,无非是你买个白金支持包,我帮你定制一些东西,比如当年魅族的WinCE定制操作系统。但一旦微软说不能做,那帮合作伙伴基本就只能选择放弃,所以微软的MCS部门(微软客户咨询部门)和技术支持部门还是很关键的。但如今,很多东西正在被开源,比如Driver SDK,一旦厂商有了这些,他们就有了主动权,可以有效改变目前的散养格局。其实哪天微软想开了,把Windows开源了,那么微软可能会成为全球市值最高的软件公司。其实开源了又如何,有多少人真的会去改?反而有利于漏洞的发现和修复,你让他去定制好了,比如中国花了多少钱打造所谓的自主知识产权的军用操作系统——麒麟,说白了就是拿Linux改的,而且关键没改好,一堆问题,很多东西都不知道怎么改,只是改了FreeBSD的通讯加密部分,就说整个操作系统是自主知识产权了,我也算服了。你们就算骗经费也稍微搞点高大上的东西行吗?受不了这帮人,特别是某倪姓院士,脑残中的典范!

.NET社区的振兴需要大家的努力,说的大点关系到整个微软系开发的发展问题,说的小一点,社区振兴了,你找工作会好找很多,而且待遇会越来越好!我觉得Java、Python语言的高薪资只是暂时的,任何语言都有兴衰,Java自从被Oracle收购后一蹶不振;Python刚刚兴起,正值壮年,关键看谁能熬到最后。你看当年PHP多火呀,再看看现在,找个PHP的资深程序员很难,基本都转了。没事记得在你老板那里吹吹风,说说.NET最近的变化,微软的变化,人是善变的,你说一次他无动于衷,但是说十次就很难说了,但你不需要刻意去改变什么,老板也是人,是人就有跟随心理,一切顺其自然,让时间来证明一切。

一些评论如下:


#251楼 2015-04-29 19:06 HolleHuang @超然 引用@HolleHuang 引用引用C#还不是抄Java的,LZ你妹的,人家Java开源,C#你开么? java还不是抄c的,抄这回事要追溯那就没底了。 还有C#还真的开源了 -------------------- 你笨啊,java你看它哪里像c,回去好好复习下 支持(0)反对(0) 回复引用 #252楼 2015-04-29 19:08 HolleHuang @流火行者 引用@HolleHuang .net 已经开源了,已经支持linux,mac等各大操作系统了。另外monotouch在国外很流行,用C#可以开发所有移动平台的App,Xamarin也是C#,一次开发适应所有平台,虽然这些在国内还不流行,但是未来10年C#和.net真的会如同搂住所说一统天下的 是最近开源的,我也知道,C#是被Java搞得不行了,所以才这样干,Toble编程语言排行榜经常是Java,c排名第一 支持(0)反对(0) 回复引用 #253楼 2015-04-29 19:10 xmodygetz @masonjiang Anders Hejlsberg如果对java和sun一切满意也不至于从borland跳到微软搞C# 支持(0)反对(0) 回复引用 #254楼 2015-04-29 19:11 HolleHuang @李宏 引用@HolleHuang 单纯的说一句,您知道JAVA8里的LAMBDA式和C#里的LAMBDA式谁先有吗? 你也很笨,Lambda早在很多语言就有了,如C++,当年我Java风气水起时,C#还没有出世,出世就连很多语法都抄Java的,但Java还是很牛逼 支持(0)反对(0) 回复引用 #255楼 2015-04-29 19:17 李宏 @HolleHuang C++ 11版才有的lambda,在2011年发布 C# 3.5版有的,在2008年3月发布 java感觉没有属性很奇怪 支持(0)反对(0) 回复引用 #256楼 2015-04-29 19:18 李宏 @HolleHuang PS:如果你说C#抄JAVA,C++和C可能会表示很不服。。。 支持(0)反对(0) 回复引用 #257楼 2015-04-29 19:20 HolleHuang @李宏 引用@HolleHuang PS:如果你说C#抄JAVA,C++和C可能会表示很不服。。。 C#确定是抄Java的,这个很多人都认同,C也是抄前前辈的,C++是对C的封装,没有什么服不服的 支持(0)反对(0) 回复引用 #258楼 2015-04-29 19:22 microtry 对于高级语言,其实都是差不多的, 为了满足需要,各种语言都可以玩弄一下, 但是如果你付出真感情,那就不值得了 支持(0)反对(0) 回复引用 #259楼 2015-04-29 19:24 xmodygetz @HolleHuang 请不要人身攻击。 Anders Hejlsberg在borland原本就开发过jbuilder,所以开发新语言借用大量语法很正常。 说c#抄java是因为c#使用了和java类似的技术,使用中间代码。 语法对于它们只是很表面的东西。 其实我想博主的意思显然是希望.net的生态得到改善。 语法对于任何语言只是一种很表面的东西,但是多数人却对此耿耿于怀。 记得我看过的第一本c语言的书,看了两句前言我就认为没必要看下去了,因为它宣称c对于pascal的优势在于他的变量名是大小写敏感的。 支持(0)反对(0) 回复引用 #260楼 2015-04-29 19:28 李宏 @HolleHuang 我认为同系新语言总是要比老的语言有进步,JAVA和C#我都认为是C系列的,因为它们语法的相似性。但在语言上面,我认为C#更加的友好、人性化。在实际开发上,实现同样功能C#比Java更简洁。不可否认的是Java起步早,市场占有量大,但这不代表它一定比C#强。我是两种语言都在用,客户要什么平台就用什么语言做,单纯比较,楼主请理智。 支持(0)反对(0) 回复引用 #261楼 2015-04-29 19:33 microtry .net发明比java迟了五六年,理当更加先进, 但是,由于长期以来,微软热衷于造轮子,希望把开发者绑在自家的封闭环境上,冷落了对工业标准和开源技术的支持和相关技术的开发. 要知道,只有工业标准和开源技术才会受到最广泛的厂商的支持,这是众多厂商竞争的妥协结果:失去任何一个厂商,他们所依赖的生态环境仍然能很好地维系. .net其实早就是开源的,当下,微软高调的"开源",只是表示一个态度:他会更加积极的支持工业标准和开源技术 支持(0)反对(0) 回复引用 #262楼 2015-04-29 19:33 xmodygetz @microtry 引用对于高级语言,其实都是差不多的, 为了满足需要,各种语言都可以玩弄一下, 但是如果你付出真感情,那就不值得了 是的,放到语法层次上,大多数时候,照搬是轻而易举的事情。所以很多时候高级语言的差异还是理念上的。 支持(0)反对(0) 回复引用 #263楼 2015-04-29 19:35 HolleHuang 好吧,如果要是用来做界面开发,肯定是选择C#,如果是做服务器,我会选择Java的,虽然性能上Java比C#差一些,但Java的语法的很非常友好的,面向对象95%以上,C#我却感觉有些乱,像C#定义属性可以不用写set和get,这感觉编译器做的东西太多了,还是要向Java这种好,比较原生质 支持(0)反对(0) 回复引用 #264楼 2015-04-29 19:36 蒋先生 即使同样的技术能力 NET 比 Java 少个2,3千 的待遇,我还是会选择NET , 因为工作不只是为了钱, 一个用起爽的东西, 写代码都开心. 支持(0)反对(0) 回复引用 #265楼 2015-04-29 19:37 microtry 一个自称java的程序员,如果3天之内不能开始C#编程工作, 那是说不过去的,反之亦然 Single-Language Programmer is not a Programmer indeed 支持(0)反对(0) 回复引用 #266楼 2015-04-29 19:41 xmodygetz @microtry 同意 支持(0)反对(0) 回复引用 #267楼 2015-04-29 19:56 12饕餮21 @microtry 引用一个自称java的程序员,如果3天之内不能开始C#编程工作, 那是说不过去的,反之亦然 Single-Language Programmer is not a Programmer indeed 同意,想当初要搞个Android应用,随便拽了本java的书翻了翻,第三天就开始coding,说实话区别真不大,好多思想都是相同的。 支持(0)反对(0) 回复引用 #268楼 2015-04-29 20:02 microtry @蒋先生 引用即使同样的技术能力 NET 比 Java 少个2,3千 的待遇,我还是会选择NET , 因为工作不只是为了钱, 一个用起爽的东西, 写代码都开心. 其实真没有可比性,这和语言没直接关系, 如果非要比java和C#谁工资高,那一定是C# 据我所知,最高的那个人年薪是300万美金, 我想除了我,还有不少人知道 支持(0)反对(0) 回复引用 #269楼 2015-04-29 20:18 超然 @HolleHuang 引用@超然 引用引用@HolleHuang 引用引用C#还不是抄Java的,LZ你妹的,人家Java开源,C#你开么? java还不是抄c的,抄这回事要追溯那就没底了。 还有C#还真的开源了 -------------------- 你笨啊,java你看它哪里像c,回去好好复习下 你没看出来这句话是调侃么。 真的要说抄那真没底了。 对象,类概念java抄C++ 函数,逻辑语法概念java抄c 变量,常量概念java抄汇编的寄存器概念 所以编程语言都是相互借鉴,不断改进的过程 支持(0)反对(0) 回复引用 #270楼 2015-04-29 20:20 超然 @HolleHuang 引用@流火行者 引用引用@HolleHuang .net 已经开源了,已经支持linux,mac等各大操作系统了。另外monotouch在国外很流行,用C#可以开发所有移动平台的App,Xamarin也是C#,一次开发适应所有平台,虽然这些在国内还不流行,但是未来10年C#和.net真的会如同搂住所说一统天下的 是最近开源的,我也知道,C#是被Java搞得不行了,所以才这样干,Toble编程语言排行榜经常是Java,c排名第一 Toble编程语言排行没发现这几年java一直在持续下降么,就像这几年的ie,虽然份额一直是第一,但是再走下坡路。 支持(0)反对(0) 回复引用 #271楼 2015-04-29 20:21 真爱像深蓝 @xmodygetz 单论数据库性能而言相同版本的oracle性能一定优于sqlserver。 但真正能把这一优势发挥出来的DBA在一些国内的软件企业内并不多。学习成本sqlserver相对而言要低得多。 而且在x86满天下的今天,oracle运行在windows上的机率要大于bsd或商用unix如aix之类的操作系统上。 说个不好听的微软如果在os上做一些小手段例如给自己的语言开一点快捷通道,或降低其它数据库在自己OS上部署的运行效率这种种微软又不是没做过,用过office的都知道java用poi读取写入office2003的excel图片是多麽麻烦的事情。 sqlserver也许不那麽好,但它却可以和C#紧密结合,就好像php和mysql一样。 支持(0)反对(0) 回复引用 #272楼 2015-04-29 20:28 超然 @HolleHuang 引用好吧,如果要是用来做界面开发,肯定是选择C#,如果是做服务器,我会选择Java的,虽然性能上Java比C#差一些,但Java的语法的很非常友好的,面向对象95%以上,C#我却感觉有些乱,像C#定义属性可以不用写set和get,这感觉编译器做的东西太多了,还是要向Java这种好,比较原生质 C#为了提高效率编译器简化了很多代码,但是并不妨碍你继续使用原先的方法写代码,比如属性你依旧可以使用get和set,就像和java一样。而C#那种在运行时依旧存在的泛型概念是java没法去实现的。java为了兼容在新的语法特性上做了太多的妥协了。 支持(0)反对(0) 回复引用 #273楼 2015-04-29 20:32 超然 @真爱像深蓝 说的没错,还有一个是国内因为盗版的存在,所以oracle泛滥,对于很多公司来说,如果都需要正版化的话很多公司根本用不起oracle

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我是攻城师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档