现在的位置: 首页 > 综合 > 正文

c/c++ ,java 和c# 谁是英雄 ?

2013年07月12日 ⁄ 综合 ⁄ 共 2640字 ⁄ 字号 评论关闭
 

刚接到公司的通知,要求确定明年的培训的方向(c/c++和java二选一),也是以后的工作方向。我是一个应届的毕业生,刚和公司签定了就业协议,是一家主要电信计费的公司,签约时间是,五年挺长的所以要谨慎考虑,c/c++还是java呢?这段时间刚好在csdn上又看到关于c/c++和java语言的论战,这次不像以前那样只是看看热闹而已,这可是的关于自己的终生大事啊!还是和以前一样,双方是谁也说服不了谁。求人不如求己,我从网上收集的资料,写了这篇文章表达了自己的看法,我想这对自己理清思路有用,希望对别人也有用。
c++ ,java 和c# 谁是英雄 ?
每次的语言论战中,C方的总会说:jdk是用c语言写的,所以java速度比不上C。另一方说C++过于复杂,不利与软件开发,而且在分布式软件和互联网应用中java有明显的优势。在我看来这样比较并不能确定一个语言的未来的发展的趋势,并不能断定谁取代谁,和矮子比高,和高的人比矮,java和c比类库,是比不出结果的。我想这也是为什么每次语言论战都是不了了之的原因。在我分析看来的影响语言发展和前途的主要有两个的因素:
1.          语言和专业的领域有很大的关系。没有人会去比较 java会不回代替lisp。c语言在操作系统,图形处理方面,工业控制,嵌入式系统的优势,肯定大于java。c#,java在internet上的应用肯定强于c++。语言都比较明显领域特征,不一定说某个语言天生就是就为某个领域而生的,特别像java ,c#,c/c++表达方式通用的语言。如果那种语言没有领域的特征只能说明它不成熟。从本质上来说其实应该说是语言是带有时代特征的,在计算机科学中每个时代都自己的技术上的主题,而一种语言的能够诞生,能发展,并且成熟,就说明了它符合这个时代的主题,顺应了时代的潮流,就像java并不是为网络时代而设计了,但她身上有某中特质符合这个时代,并且随着时代的发展一起发展,也使她越发的有时代特征,也就是领域特征。发展是要继承的,c语言也要编译成机器码才能运行,jdk是c语言写的,将来有可能在java的基础会创建出更高级的语言来。有点像进化论。
2.          语言与操作系统有很大关系。C#根植window,ms和sun的关系也使jre与windows的兼容性不好,特别是在企业应用方面。这也导致java服务器运行在大多运行linux/unix上。
现对讨论的范围做如下限定:
语言:c/c++,c#,java
操作系统:windows,linux/unix;
应用领域:传统应用,桌面程序,互联网;
传统应用包括:驱动开发,图形处理,工业控制,底层通信协议,嵌入式系统
桌面程序:主要指有界面个人的应用程序
这样划分可能不科学,但个人能里有限,不可能做全面的分析。
从领域的影响力和应用的规模上来看应该是,桌面程序 < 传统应用 < 互联网;
 
 
桌面程序
传统应用
互联网应用
windows
c/c++ > C# > java
c/c++
C# >java
Linux/unix
c/c++ > java
c/c++
java
 
在个人的pc机上,windows的普及率是99%,可以忽略linux/unix下的桌面程序影响,而在这领域,由于MFC停止发展,c++ crl不受宠,c#在桌面程序领域将进一步夺取c++的地盘,所占的比例会加大,而java份额将会被c#完全夺走。但vista发布也增加了一定变数,有可能的发布更加剧了这一趋势,也有可能使用户坚持使用winxp或由于gome同样有vista风格分流部分用户到linux,这样会给c++保留一定的份额,但总体上还c#占优。
在传统领域里c/c++有着不可替代的作用,虽然受到java的威胁,但从现在来看,特别是c语言在整个领域的使用比列相对来说应该是比较稳定的。从下图c语言的近几年排名情况也可以证明我的观点,图片是摘自http://www.tiobe.com/tpci.htm,关于语言的受欢迎程度的排名网站。
 
而在互联网方面,1999的资料显示,有部分的程序员从windows转移到linux下从事java,的电子商务反面的开发,使在windows下从事开发的程序比例,从65%下降到40%, 而从事web程序开发比例从,18%上升到40%。由于2000 微软发布.net,到现在为止在windows程序员比例应该大致保持不变,而从事web开发的程序员,肯定是有所上升,60%可能还是一个保守的估计,可见互联网应用在计算机应用中,在扩大,在将来可能“互联就是计算机”。2005年底windows在的服务器上的收益超过unix,这一比例会进步加大。从以上的资料可以看出,在将来的几年内,C#和java的比例都会增长,但C#增长的肯定将超过java。虽然java想借住开源的力量,来为自己的发展加力,这将会吸引部分c/c++开源者加入到java社区中,但由于c/c++应用比较固定,效果不会明显,所以总体的趋势应该不变的。而且我想不久微软在开源上也会有所动作的。
综上所述:总体来看,在互联网应用中c# 和java占的比例会加大,但c#发展会超过java,但不会杀死java,主要原因是有操作系统这个鸿沟,而且我看mono的目的也只是想能在linux中运行C#桌面程序。由于windows在pc上绝对的霸主的地位,c#无疑将是最佳的桌面程序编写语言,这一领域c++还是有一定份额的。在传统领域c/c++还是老当益壮,除非整个计算机体系发生翻天覆地的改变,不然这一局面不会马上改变。如果非要分出个胜负来应该是
c# > java > c/c++
但这只是从整体使用的比例来看的,各个领域还是不一样的。
我的问题解决了,我给公司回了email,c/c++,我的选择是c/c++,希望自己没有选错,也希望这篇文章对你有用!
参考资料:

 

【上篇】
【下篇】

抱歉!评论已关闭.