既然在语言层面上 Java 要落后于 C#,那为何国内 Java 架构到处都是?
差不多四年前,做项目的时候跟阿尔卡特朗讯(现在已经被诺基亚收购了)的一个加拿大小哥、天才程序员聊过天,他才 20 岁不到,已经是他们那的顶级程序员了,待遇在当时的我们看来是个天文数字。成功在 “Java fucks” 的话题上达成一致之后,我说 c#
是不是比 Java 好点,他是这么回答的:
“Yes,C# is better, but it’s Microsoft, so who cares?”
当年 C#的语法一直是领先同时代的 Java 的,一直到现在 Java 的新功能都还有一些 C# 至少 5 年前的版本的功能的影子。它的致命弱点就是第一当时只能跑在 Windows 上,第二需要买微软的开发工具(免费版在商用上有一些限制),这导致了什么问题呢?如果我是一个用 Linux 的程序员,你开发了一个超级 NB 的 C#库,领先业界 100 年,你也愿意开源出来,结果呢?我们没人用的了,因为第一我们没有 Windows Server 可以运行,第二我们没有 Visual Studio 可以开发。那么用 C# 的人还做什么开源啊,自己的代码自己凑合着用用得了。这就导致 C# 的开源社区远远落后于 Java。
等到微软醒悟过来,搞了可以在 Linux 上用的平台,和免费的 Visual Studio 社区版的时候,已经太晚了,大部分人的态度都已经变成了“Who cares?”我现有的平台上该解决的问题都解决的差不多了,你也没比我现在强太多,凭啥我要换个平台再解决一遍呢?再说,阴谋论一点,你一个卖软件起家的公司,现在说是拥抱开源了,可维护你的开源代码的都是你的公司员工,等用的人多了万一你再来一个新版本不再开源要收费,也没人能维护你们那套老开源代码,那不是坑我们嘛?自然就没有什么人关心了。
所以 C#还是在现有领域发挥一下余热就好了。其实 C# 算好的了,F#那才叫一个大写的悲剧。
你不好找工作,并不是因为你学了 C#,而是因为你只会一点 C#。
只要你技术扎实,算法/数据结构,网络、IO、存储等有一个方面比较深入,找个工作应该没有难度,什么华为中兴,BAT,微软,IBM 之类的,都有没有问题(这些大公司,动则上万人,其实哪有那么多精英?多半都是普通人,只要努力,你也可以的)。
但是如果你只会一点语法, 那么无论是 C# 还是 JAVA 或者 C++,都没有用。