C++行业现状怎么

C++行业现状如何
C++行业现状如何????
------解决方案--------------------
C++在Java甚至.NET面前都显得那么的老旧,那么C++真的不行了吗?我们这里将采访一位资深开发人员,为大家讲讲C++的现状和未来。

TechRepublic的一名会员Oleg F(有经验的C++开发人员)问我对C++的现状和未来的看法,此外,他还希望了解C++如何适应.NET世界、Web开发和云计算,下面是我的答复。

我认为对于大多数一般开发人员而言,C++作为一门通用编程语言将很快从他们的编程语言中消失,但C++仍然会得到大量的使用,特别是操作系统层的工作和底层开发(如嵌入式设备和驱动开发)、某些高性能应用程序和那些如果使用.Net或Java开发显得过于沉重的应用程序(如办公套件)。有些开发人员将继续使用C++开发应用程序,但对于一般开发人员而言,C++确实很头痛。 Visual C++ 本地并行编程:状态管理

大多数开发人员都面临着性能问题,当你解决掉性能问题后,在大多数情况下,C++仍然是相当有吸引力的。

我接触过的少部分C++开发人员对于在.Net托管环境下使用C++对他们没有多少吸引力,这样使得C++丧失了许多用于Web开发的机会,除非你想在CGI模式下使用它,关于CGI有好消息(开销少,简单的概念模型)也有坏消息(应用程序被许多底层任务“感知”)。我所听说的是,在.NET CLR下,C++的速度也不行,以及其它一些本是C++的优势,结果在.NET CLR下也变成劣势了。 C++中随机存取文件的处理

并不是说C++短时间内就会消失,我看到C++正在加入传统的COBOL和FORTRAN语言,为那些使用超过50年的应用程序提供维护和扩展基础。此外,由于各种原因(熟悉程度、库支持、传统/习惯、文化等)有些新的开发项目将会启动,我认为它将会为这个即将死去的语言找回一点尊严。

我不想看到C++的未来结局很凄凉,我认为C++开发人员还有很大的潜力可挖,如果你是一名C++开发人员,我建议你坚持使用这门语言,就目前的薪资结构而言,我认为经验丰富的C++开发人员领到的薪水还是相当可观的,此外,由于C++的难度较高,并且学习它的人也比较少(目前高校也很少开设这门课程了),从长远来看,我预计C++开发人员相对.Net和Java开发人员更有就业保障和更好的补偿。

虽然C++在Web开发方面不可能很快成为主流,在桌面应用程序开发方面C++也不可能很快就销声匿迹,我认为C++在云计算的某些方面可能具有许多机会,对于某些项目(想想那些适合超级计算机的项目),云给C++开发人员提供了一个方法获得与网格计算相同的好处,但它的灵活性却更好,因此,我认为云计算会代替或作为网格及超级计算机的补充,并为C++创新提供了一个极好的机会。

注意我的大部分分析都是着眼于Windows世界,从我所看到的,*Nix开发社区仍然热衷于使用C/C++,担心Windows中C++开发机会逐渐变少的C++开发人员一定要看看*Nix开发。

我认为C++会慢慢消失,但它不会死,也不会成为一点都不重要的语言,虽然我知道现实生活中大多数开发人员都没有接触过C++,但许多开发人员肯定从学习它获得了许多受益。

------解决方案--------------------
现在来讲一般PC端分高层应用开发与底层驱动开发,另外还有单片机和嵌入式开发,当然,现在又出来ios和安卓移动端开发了。

前者的应用开发一般使用java,C#等语言。底层驱动开发基本用的是C\C++。
ios用的object-C,安卓用的java
单片机和嵌入式也以C\C++为主。

怎么说呢,向高层应用开发上手很快,学起来很快,相对而言这一行的竞争比较激烈,因为会的人太多了,不怕公司找不到人。而驱动以及嵌入式相对人员较为稀少,这一层面需要蛮扎实的基础和经验,入门的门槛较高,相对也比较抢手。
另外由于智能移动端的发展,ios和安卓开发现在也开始吃香起来,由于这一行刚发展不就,人才需求量还是蛮大的。
------解决方案--------------------
1 ,C++游戏程序员现状

  中国C++程序员100%都是自学的。因为中国几乎没有象样的C++培训机构。大家都知道社会培训是赚钱为主要目的。能在那里成才是个大
  运气。也不象JAVA有SUN公司一手推行。中国大学教育里也根本没有C++教学。关于C/C++基础课的知识,只是让学生入门。但对于实际
  的C++软件工程应用,大学课本知识实践意义不大。最重要的是,大学里没有合格的C++老师。编程是门技术,叫手艺也行。而大学是搞
  科研的,多的是科学家,靠出PAPER教科凭职称为生。并不是技术员。没有10万行以上代码经验和成功软件项目经验的人,很难教出中高级
  C++程序员。游戏制作业对C++程序员的要求是比较高的。比一般行业软件高很多。因为任何一个MMO都是个中大型软件项目。日使用人
  次达到几十万上百万,同时使用人数几十万在线的大型网络多人交互软件,集成了超过十几项专业领域编程技术的软件,想不大都不行。

  另外,中高级C++程序员能力一般都很强。因为都是自学成才,这需要较高智商,很强的自学能力,解决问题能力,和克服困难的毅力。但
  是这种人才在游戏行业里人数并不多。抛开凤毛麟角具备整体大型软件架构能力的高级人才不谈。能够承担独立模块开发,具备独立解决问
  题的能力,写出在空间,性能,可维护性等几个方面达到要求的C++程序员,也是很难找到的。而具备这些能力,同时又具备一些专业领域
  技术的人(图形引擎,网络引擎,等),更加稀少。所以,即便是大游戏公司,对于C++游戏程序员的需求,也是永远不能够得到满足。而已经
  在公司工作的C++程序员,不经过短则3个月,长达1年的锻炼,也无法真正胜任独当一面的C++游戏程序开发工作。

  2 ,MMO游戏开发对C++游戏程序员要求

  前面提到,所有MMO游戏都是中大型软件。软件占用空间,稳定性,性能,可维护性等各项衡量软件质量的指标,对MMO游戏软件的要求
  都非常严格。远大于普通行业软件。这种规模和银行系统类似。而客户端和软件逻辑比一般的商业软件又要复杂很多倍。这就要求软件编写
  人员具备较高的程序编写素质。游戏软件中,解决好软件工程部分,只是项目的1/3。另外两部分是策划和美术/音频。从经验来看,需求变
  更对于MMO游戏软件,不是偶然事件,而是一种MMO游戏软件开发的基本属性。游戏软件投入大,周期长,风险高。MMO市场变化也大,
  交互电子游戏发展迅速。游戏软件必须面对外界变动。又因为开发周期长,所以软件需求变动成为了软件开发的一种基本属性。犹如复杂性是
  软件工程的一项基本属性一样。这导致游戏软件的开发充满了不确定性。交互娱乐不同于商业应用。娱乐是属于理性和感性之间的领域。而
  C++开发面对就是0和1的二元世界逻辑。这两个领域存在着不可调和的矛盾。这种情况,对C++游戏程序员提出了更高的要求。

  首先,基本C++知识,C/C++运用技能,必须极其扎实。并不是游戏软件开发用到什么平时书本上很难得到的知识点或者技能点。游戏C++
  开发的知识体系和技能体系,利用现有C++书籍就可以满足。比如《C++ PAORGRAMMING LANGUAGE》《C++ PRIMER》《EFFECT 
  C++》《MORE EFFECT C++》等。但是在开始游戏编程之前,把这些书本吃透并且实践熟练的人,非常难遇到。当然能够真做到这点的人
  ,已经是个中高级C++程序员了。我曾经遇到过一个,毕业工作不久就去了GOOGLE 其次,对于面向对象的深入理解。是非常重要的。熟练
  掌握C/C++语法,编程技巧,只是满足了C++游戏程序员一部分要求。而面向对象观念的深刻理解,会为大型C++项目开发带来翻天覆地的
  变化。有时候,在一个10人以上并行开发的C++游戏项目中,面向对象方法会成为救命稻草。《设计模式》以及《设计模式解析》相关的书
  籍,也是必修课。最后,好技术人员的本质是自大的。这属于正常。但是如果这种习性影响了自身继续提高和团队合作。以及影响了其成为技
  术管理者和项目技术核心时,那么这种技术人员的自身价值会大打折扣。如果早日越过自命不凡这一关,扩大眼界,继续在综合素质上提高。
   在技术管理能力,架构能力上提高,其自身价值才会继续增长。落到实处,就是待遇和身家增长。

  由于游戏开发的本质是团队开发。任何时候,只有对一个团队有价值的技术人员,其本身的价值才有可能得以体现。

  3 ,成长和技术发展路线

  一般技术人员发展有几个阶段

  1 ,具备独立开发局部功能的能力

  比如为某个UI编写逻辑接口函数。为某个LOGIN对话框编写自绘制控件等。

  2 ,具备独立开发和攻关某个功能模块的能力

  比如为游戏增加一个小型逻辑功能模块。

  3 ,具备独立设计并开发某个系统的能力

  比如设计和开发AUTOPATCH 系统

  4 ,具备解决技术难题,设计架构的能力

  比如开发网络同步仿真系统,开发一个中大型游戏制作工具

  5 ,具备整体架构,管理,协调其他人共同开发一个大系统的能力

  客户端主程,服务器主程,引擎主程等

  6 ,技术director

  制定技术发展方向,技术团队建立,技术管理等

  在迈向每个阶段的过程中,伴随的都是巨大的工作量和工程压力。有时候是跨越1年的失败等等。在公司项目不成功时转换单位,重新开始,
  或者继续做为核心团队留在公司继续从新的机会做起,都是好的办法。但关键是吸取经验教训,尽量多学多练。并且结合自身长处发展。
  当然,游戏制作人员,最好还是依靠一个核心团队。成为核心团队的一员。

  能够达到第三档的程序,已经是公司不可缺少的人才了。但往往程序员自身对自己的认识,和公司对其的认识,有时候会有差异。我碰到过一
  些人,脑子好用,写东西很快。各种技术都有涉猎。但总是不放心让他独立开发设计某个系统。哪怕是相对独立的工具。也会被搞得一塌糊涂
 。要后面人不停擦屁股。可自己还觉着自己水平很高。这种人浮躁,眼高手低,不愿意细致周全的做好一件完整的事。所以就可以看到他不停
  的跳来跳去,可在新公司的职位也没有见多么提高。公司非常重视交给一个程序员一件事,他是否能完整,考虑周全的把事情做完。哪怕时间
  长一点,也不能不做完。这会给工程带来致命的后果。