今早看到一篇资讯:

Google发表了一研究论文(PDF),声称C++是目前市场上性能最好的程序语言

Google分别用C++、Java、Scala和其发明的Go语言实现一种压缩算法,然后测试其性能。结果显示,C++远胜其它三种语言。虽然C++性能最优越,但Google同时指出它实现起来太复杂,超出了普通程序员的水平,而Java则“最容易实现”。

论文截图

感想

对C++的印象一直是它面向对象、高效率,同时也是难于掌握的一门语言。对Java认识不深,刚接触感觉很像C#,毕竟思想都是面向对象的,其他两种语言更是没印象。我常用VC和VC#,借此机会,简单比较一下这两门语言,C++和C#。

C++

兼容C,偏向底层,做系统开发、桌面应用、C/S系统客户端&服务端、大型游戏开发等等,目前软件市场占有率及2011年6月编程语言排行榜,位列第三,保持平稳。Windows上开发IDE还是以VC为主。其实用性,以普通用户来说,桌面软件如360、金山、瑞星等安全系列软件,鲁大师、魔方等系统优化软件,QQ等聊天软件,影音娱乐软件,办公软件几乎全是用到C++开发。Linux上更不用说了,因为Linux内核及其主要应用软件分别是C和C++开发的。

但是C++界面开发,真是有点困难。GDI绘图更多时候压根满足不了需求,DirectUI流行,但只有大牛们才会,而且基于此技术的界面库大多是商业的。自绘控件也不是那么容易。当然Windows默认界面在Windows7下开Areo效果,再破解个主题,也凑合看,XP用户就没那么舒服了。QQ、360、金山等软件都有自己的界面库,SPY一下,就可以看到界面元素全是自绘的控件,一般用的是WTL。WTL技术的应用确实能解决界面问题,幸好金山卫士开源,提供的bkwin源码,还是蛮值得学习的。想学的同学可以去卫士开源社区论坛看看。

不足:C++较难掌握,一般用于底层,界面开发入门难;很难用于B/S系统的开发。

C#

从微软公布.NET开始,并一直推广至今,Windows Vista以后系统都内置.NET框架,C#作为.NET平台下强大的开发语言,理论上无所不能。确实,C#本身包括其可视化的IDE工具,使其具备有C++强大功能和VB操作的简易性,大大提高了开发效率。桌面应用上,Winform、WCF、WPF、WF,可以轻松做出界面美观且功能强大的应用程序。而且,随着微软.NET战略的开始,C#又是一款Web开发利器,Web窗体、MVC、Silverlight、AJAX的应用,可以轻松搭建Web系统。

目前来说,C#多用于Web开发,使用数量也位于前四(仍有上升趋势),但同Java比,仍有差距。我猜测的一个原因是,Java开源且免费,中小型企业在.NET与Java之间权衡时,如果考虑成本,几乎毫不犹豫选后者。毕竟Windows服务器版本一套几千块,SQL Server也是,成本比Linux+MySQL高多了!

桌面应用上,C#也逐渐开始流行,Winform窗体应用到界面炫酷的WPF应用(如QQ概念版)层出不穷。腾讯的原型设计工具UIDesigner就是运行于.NET 2.0上的。这类程序较多运行于Windows Vista以后的系统,大多基于.NET3.5。XP的用户需要装对应.NET框架,几十M,慢的话要几十分钟。我记得为了在一台XP上运行200K的wpf程序,由于目标机器配置较低,安装.NET3.5,还是精简版的,就装了四十多分钟,汗颜了。如果用户机器没有.NET框架,若大型软件,直接将框架打包安装即可,若是小程序,就真没必要了。

也许当大众机器的配置提高,Windows7、8的普及和.NET内置,开发桌面程序C#会更受欢迎。

不足:C#作为中间语言,执行效率比不上C++【更正:在一般应用中是这样,不包括代码优化^_^】,且依赖.NET框架。

总结

个人愚见,编程语言,恰如兵器,各有所长。真正的高手,强的是内功。根据项目需要,挑选合适工具,才是至关重要的。至于学习C++、C#、Java等,重要的是面向对象的思想,语言大多是相通的。

作者:libaoheng
出处:http://www.cnblogs.com/libaoheng/
说明:文章为作者学习记录与总结,如有不妥,还恳请大家批评指正。

作者: libaoheng 发表于 2011-06-19 09:08 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"