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

我是.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

原文发布于微信公众号 - 我是攻城师(woshigcs)

原文发表时间:2015-04-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java学习

程序员用这5种方式学习编程最无效,停止这些可以少走弯路!

学习编程的弯路多得数不完,坑多得踩不完。 编程是一门手艺,需要不断地进行练习。 但是,不是所有的编程学习和练习都是有效的,下面小编给程序员小伙伴说说无效学习编程...

32580
来自专栏程序员互动联盟

如何用6个月搞定C++

提到c++做过项目的人,都会扔下一句,这玩意短期内很难学的很熟练,更不要说弄的精通,没有做过项目的人觉得C++和java差不多啊,就是面向对象一些基本应用,掌握...

75770
来自专栏企鹅号快讯

初识Python

(一)Python的起源 Python(发音类似“派森”)这个英文单词的意思是“蟒蛇”或“巫师”。在我们文章讨论的范围内,它是一种最近几年大红大紫的编程语言的名...

40780
来自专栏CDA数据分析师

资料泄露!2016需求分析人才报告流入市场

本文内容为CDA数据分析院原创资料 这是一个来自CDA数据分析院内部培训关于需求侧人才报告的PPT,我们不张扬文字,只喜欢用数据说话!本报告适合刚入门数据分析的...

26660
来自专栏码生

Flutter

知道 Flutter 后,对 Flutter 的兴趣很大,感觉前景也是不错。 因为使用 React Native 已经一年时间了,其动态性无疑是最大亮点,但同...

55520
来自专栏儿童编程

理解编程语言只需四个词-编程知识体系介绍(带python及scratch案例)

学习编程有时候会给人一种高深莫测的错觉,容易让人“敬而远之”。事实并非如此,学习编程其实就是学习一种语言——一种与机器对话的语言。编程语言与人类语言有着很多相似...

21340
来自专栏编程

给学c加加小白的50条忠告

1.请热爱C++! 2.不要被 VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言; 3.会用Visual C++,并不...

198100
来自专栏华章科技

最多金的编程语言Top10:Python第3,R第10,你猜第1是谁?

本文绝非标题党,而是基于大量数据和为期两周的深入探究,在18年初,对IT行业的现状、趋势以及预测进行客观观察,让大家对编程语言有一个更清晰的认识,以选择最值得花...

28820
来自专栏程序员互动联盟

有一种编程语言永远不敢说精通

如果提到一种语言,可能说这辈子都不敢说精通,有相当数量的人辉选择c++,看看大家如何评述c++, 用了两年的c++,转学别的语言发现从未有过的轻松感。 c++...

385130
来自专栏牛客网

阿里菜鸟网络1-4面总结

作为物理跨专业求职的菜鸟,至今也只面过华为和菜鸟网络,华为那边现在是面试通过,具体offer什么时候发看公司心情。看了这么久的牛客网讨论区,今天和大家分享一下菜...

2K60

扫码关注云+社区

领取腾讯云代金券