很多人都以为会用各种框架、API就是牛逼了,这类永远都是跟在各种技术屁股后面跑,终究有一天跟不上了,觉得学技术真他妈累,其实我想说这种方式学习本身就是错的。牛逼的前提永远是坚实的基础,看书学习要“往下”看,越基础的越好,这才能玩弄于各种技术于手中,而不是被技术玩弄.
个人认为既然往下看,懂底层、原理;也要往上看,会抽象、概况,会模式、会架构
虽说工资主要还是取决于个人,但整体上来说.Net工资确实不高,因为门槛低,从业者数以xx万,一平均就少了.Java主要在金融,证劵,医疗和一线电 商等"吃香"行业,最近Android火起来也让Java的平均工资超过.Net.反观.Net,大多集中在中小和作坊式行业.短平快是.Net开发的理念,同时也是浮躁的代名词.让.Net的从业者工作多年也不知道技术的本质,所以基础有瓶颈就很难有上升的空间.
.NET在互联网的项目上很少,大公司中用.NET的比例也比较少,目前很多大公司恰好是做互联网的。
退一步讲,.NET主要活跃在企业应用,但是Java也同样可以做企业应用,这使得.NET比较尴尬。但通常企业应用对性能的要求并没有互联网业务井喷时这么苛刻,反而VS的强大占尽了便宜。
但是企业应用这块蛋糕并不大,又要和其他语言(Java/Python/C++/PHP/Delphi等)去分,.NET处境的确有点尴尬,高不成低不就。
企业应用中的软件,按功能分的话,.NET也只能接一些功能性的MIS。安全、审计、通信、视频什么的也不是强项。
最悲剧的是微软还没来查我们的版权的情况下,软件公司能否生存还是个问题,IDE+OS+DB+OFFICE,流泪啊。
缺少解决方案,同样一个NHibernate,我们在怀疑它是否可以用于实战抱怨配置麻烦,在老外那边已经有了6年多的实战经验,而Java中的Hibernate已经成为SSH经典的必修课,领域驱动设计的思想分不开它了。同时也反应.NET阵营程序员素质低下。
最后,你会发现有些MVP讲师什么的,讲起微软私有云公有云什么的,结果人公司是在换的,换了公司都没用什么微软的东西。
写程序限制太多,从性能考虑.NET不是首选,基于微软OS平台,Mono暂时先不考虑,有些城市翻遍都没有用Mono的。
如果想职业编程,学习java,c++是很有必要,基本的编程思想,编程框架都在这两门中,其中开源的软件更是多如牛毛,两者混合使用更是如虎添翼,其实最主要的是这两门语言可以跨平台。
或者说在linux中java可以获得不错的性能快捷比,在linux中c++是高性能的代名词,在windows中c++可以获得不错的用户界面性能,在android中java可以快捷开发、在双核处理器下性能不错,在web中java可以牛刀杀小鸡,在事务系统中java干净利落配合oracle可实现商业化卖相,在游戏中c++是3d性能的唯一解决之道,在驱动中c++可以通用于windows和linux,在云计算应用中java独占鳌头,在云计算基础构件中c++大有用武之地,在可穿戴设计中c++用于系统基础件,在移动互联网中java借助开源android适用于多个移动平台,在企业内部java可以很好解决商业问题而不被微软追着要版权费,在面向网民市场中c++可以获得自定义的灵活性。
反观.net,语法糖让人迷恋,ide让人佩意,但受制于windows平台,很难构建适用于移动互联网,云计算化、高并发新新软件,市场只会进一步萎缩。当你在使用.net令人上瘾的快速开发时,其它公司也可轻易加入这个令人上瘾的快速开发中。
如果你需要功能多如牛毛的软件请用java,如果你需要构建成熟的商业解决方案请用java,如果你追求高性能用户体验请用c++,如果你需要精雕细琢的艺术品请用c++。
“李斯者,楚上蔡人也。年少时,为郡小吏,见吏舍厕中鼠食不洁,近人犬,数惊恐之。斯入仓,观仓中鼠,食积粟,居大庑之下,不见人犬之忧。于是李斯乃叹曰:‘人之贤不肖譬如鼠矣,在所处耳!’”
人受环境很大影响,但人可以有限地选择环境,这也是为什么要争论语言的原因。同样的努力,在不同的平台,可能令公司或个人扶摇直上九万里,也有可能墨守一城至老死。
最后我决定,先不管什么语言之争,把C++的基础搞好,把算法和基础数据结构搞通,这才是当前重中之重。