2023年6月30日发(作者:)
C++的就业,和发展⽅向从学习C++到现在已经有四个年头了,但是从来没有很深⼊学习,有⼈说C++是⾯向对象的编程语⾔,但是我在这⾥想说的是,C++是⼀个多泛型的编程语⾔,它既可以⾯向过程,⽐如我们完全可以⽤C++写C的代码,这是没问题的,它也是⼀个⾯向对象的语⾔,它具有⾯向对象的特征,可以模拟现实世界中的各种事物;它也是⼀个泛型编程语⾔,⾥⾯包含⼤量的模板特性,⽐如C++的标准库STL就是基于模板的⼀个库,C++语⾔的难学也就是因为它的功能⼗分强⼤。C++初学者⼀般可以按照下列的顺序进⾏学习:刚开始接触C++时,如果是学校开了C++课程的话那就更好了,可以跟着⽼师的进度学习,在课余时间可以多做⼀些习题或上机练习。如果你是完全⾃学,你可以找⼀本⾯向⼤学⽣的教材(谭浩强的教材⽐较适合⼊门)。掌握了⼀些基本的C++概念了,那就开始学习⾯向对象的部分了,这部分内容⽐较多,初学者理解起来也会感觉⽐较吃⼒,建议多上机练习。在基本了解了C++的⾯向对象之后,可以开始学习模板库,⽐如STL,因为STL在我们的软件开发中⾮常重要,甚⾄有些招聘都要求会STL,(STL:标准模板库),这⾥⾯包含了⼤量的数据结构和算法的实现,有些可以直接拿来⽤,但是如果你对数据结构有特殊需求,那么你就要⾃⼰去实现这些数据结构。如果你已经进⼊了C++的世界,那么你就可以进阶学习了,学习了这些你或许感觉有疑惑,为什么我不能开发出⼀个带界⾯的程序呢,呵呵,如果你⼜这样的需求,那么你可以学习⼀些界⾯库,⽐如QT,MF等,这两个是⽐较常⽤的,QT⼊门稍微容易些,但是往后深⼊会⽐较困难,MFC⼊门起来会⿇烦⼀点,有很多⼈也就是因此⽽放弃,但是甜头在后⾯,只要⼊门了后⾯的路将会是⼀马平川,障碍⽐较少。库,在c++的世界⾥具有很⾼的位置,你如果对某⼀领域感兴趣,你就需要去了解和学习相关的库,⽐如三维图形库OPENGL,⽹络通信库ACE等等,这些库基本是都是标准C++写成的,⼀般都是跨平台的。也许有很多会有疑问,我学习了C++以后能做什么样的软件开发⼯作?⽬前C++软件开发主要集中在以下领域:1、服务器端开发:很多游戏或者互联⽹公司的后台服务器程序都是基于C++开发的,⽽且⼤部分是linux,unix等类似操作系统,所以说,你如果想做这样的⼯作,你需要熟悉linux操作系统及其在上⾯的开发,熟悉数据库开发,精通⽹络编程。2、游戏:⽬前很多游戏客户端都是基于C++开发的,除了⼀些⽹页游戏可能不是,这个领域需要学习的东西就⽐较多,个⼈不太了解就不多说。3 、虚拟现实仿真:这个也是发展很快的计算机领域,⽬前各种数字地球,数字城市,虚拟地理环境什么的,出现了这⽅⾯的⼤量应⽤,不过也不限于这些⽅⾯,⽐如科学计算可视化也是其中⼀个⽅向。这个⽅向重点需要学习的是图形学。4 、数字图像处理:现在市⾯上有很多VC++图像处理的书籍,可见在这个领域的应⽤软件开发也是占了很⼤⽐重,需要深⼊学习数字图像处理和模式识别等课程。呵呵,说到这⾥都感觉好像跑题了,都没看到具体什么学习路线啊,就当是⾃⼰的学习感⾔吧,有什么不对的,也欢迎⼤家讨论。C++ 学习路线和看法C++⼤体分为C++的基本知识,template C++, Object-Oriented C++, STL四部分。1.谭浩强的《C++的程序设计》是⼊门的⾸选,讲的易懂,对那些初学者来说是⾮常不错的选择。虽然这本书没有概括到C++的全部内容,但⾜可以把你引进C++的殿堂门⼝感受感受。2.上⼀本书的缺少了模板,⾯向对象和STL部分,这时候可以看看THINKING IN C++,你会有种登堂⼊室的感觉,体会到C++的奇妙和⼤智慧。4.C++当然不会缺少经典的书,还有很多好书,⾃⼰有空看看哪本和⾃⼰的胃⼝ 就买来看看吧。5.在学习过程中切勿求快,⼼浮⽓躁。⼀定要多多练习,把模拟两可的东西⾃⼰编程来验证下。当你学习C++后,你会急着想去编写带华丽界⾯的程序,展⽰展⽰⾃⼰。选择MFC和QT,你可以选择⼀个:(以下是我的个⼈观点) 1.很多公司都需要MFC的开发⼈员。 的书籍肯定会远远多于QT,并且⽹上的资源也是这样的。 3.学习MFC的⼈很多,你在不懂得时候可以随时请教他们。 是完全的⾯向对象,MFC并不是。 2.诺基亚在官⽅⽹站宣布,将采⽤Qt作为未来Symbian和MeeGo平台的唯⼀开发架构。可见QT的嵌⼊式份额正在扩⼤。 编写的程序没有QT那么好的跨平台性,所以QT常⽤在⼿机(meego和symbian),linux,window平台等等平台上。学习MFC的路径:1.孙鑫⽼师有⼀本 vc++的书和配套视频,可以帮助你快速的对MFC有⼀个基本的认识。2.《Windows程序设计(第2版)》讲的⾮常的细致,会⾮常有耐⼼地为你讲解每⼀个细节。对本质剖析得⾮常好。讲原理,让你知其实还知其所以然。3.学习侯捷的<<深⼊浅出>>,你就开始了解MFC的内部机制,让你对MFC的运⾏来龙去脉理解。 C++技术内幕,⼜是⼀部带你深⼊了解MFC的经典书。学习QT:1.C++ GUI Qt 4编程(第⼆版)经典之作,内容紧扣,详实清楚,QT必备书。如果你发现这本书有点难,可以先看看零起点的书籍。的⽂档和强⼤的在线⽀持。C++到底还能做什么?C++到底还能做什么?肖舸嗯,这是⼀位朋友发到我邮箱⾥⾯的,很奇怪,发到了gmail邮箱,⽽不是我常⽤的hotmail邮箱哈。我呢,试着回答⼀下,如果回答得不好,叫做肖某⼈学艺不精,回去重新学习再来过哈。呵呵。⼀家之⾔哈,欢迎拍装。原⽂如下:我呢,试着回答⼀下,如果回答得不好,叫做肖某⼈学艺不精,回去重新学习再来过哈。呵呵。⼀家之⾔哈,欢迎拍装。原⽂如下:肖⽼师您好:我现在是⼀名在校⼤学⽣,在学校期间⾃学C++有两年的时间了,看过C++Primer,stl,inside C++ model(侯捷翻译的那本),com本质论等…在学习C++的过程中感觉C++语⾔本⾝的确很强⼤,⽽且随着学习的深⼊,我逐渐感到要想在短时间了解这门语⾔的本质⼏乎是不可能的.因为我也学习过javaSE的⼀些东西,感觉就java和C#来说,语⾔本⾝不难,不过在底层调⽤⽅⾯有时候就会显得有点费⼒了.不过对于C++我⼀直有很多疑问,所以想请教您,向您学习⼀下:1)关于C++的应⽤:曾经我以为C++的应⽤⽐较多的就是⽤MFC来编写各种应⽤软件,但是,我现在感觉编写软件这⽅⾯,⽤⼀些其他语⾔和开发平台,要⽐C++⽅便和快捷的多,⽽且也听⼈说,现在⼏乎不⽤MFC或是C++做软件了.⾄于⽹络应⽤和跨平台⽅⾯,现在应该是C#和java在这⽅⾯的应⽤⽐较有优势吧.⾄于⼀些其他有关硬件⽅⾯⽐如嵌⼊式,单⽚机控制系统等⽅⾯,⽤C语⾔就可以满⾜⼤多是的应⽤了.所以,现在哪⽅⾯的⼯作是⽤C++来做的?2)关于找⼯作的事:现在学C++到底能做什么样的⼯作?就像我前⾯说的,因为不⼤了解C++主要的应⽤在哪,所以,也不清楚到,能⽤C++来做哪⽅⾯的⼯作.3)关于com:我之前听⼈说,C++做到最后就是做com组件开发.情况是这样的吗?如果是的话,是不是⽤com来做有关远程调⽤对象和接⼝或是分布式系统等⽅⾯的应⽤.如果想做com开发的话,现在有哪些⼯作是需要⽤com组件编程的?4)最后:虽然我学习c++两年了,不过感觉,没做过什么像样的应⽤,因为我在我们学校的⼀个⽹站的技术部⾥做过⽹站前台开发的⼯作,就是html,css这些,感觉这些语⾔虽然在学习的时候感到有很多东西不理解,但是通过做⼀些简单的⽹页,逐渐的基本掌握了如何编写⽹页代码.所以,也做过⼀些专题⽹站什么的.不过,就是c++这门我学的时间⽐较长的语⾔,我没有做过什像样的应⽤,想练习可是⼜找不到合适的⽅向.所以,想让您给我提点建议,我现在应该学习或者是做哪⽅⾯的东西来提⾼⾃⼰的C++⽔平,还有就是在学习这门语⾔时,如何能够通过实践来更好的掌握C++.P.S:我的表达能⼒有限,可能有些问题我描述的不清楚,不过,还是希望⽼师能⾟苦⼀下,尽量帮我解答这些问题.谢谢了.我的回答:嗯,这位同学你好,我看了你的问题,也有点头⼤,说实话,你这个问题我不是没想过,我想得⽐较“野”,说⽩了,虽然我也⽤C++,但是,想这个问题的时候,我确实尽量站在⼀个客观的⽴场上在想,想出来的结论,说实话对C++不是很有利,我也怕说出来被⼈拍砖,所以⼀直没说,呵呵。不过,你既然问得这么细,我想我还是说说吧,说得不好听,⼤家就担待⼀下吧。嗯,恶意拍砖,我拍回去!这第⼀个问题,其实⾥⾯就很不好回答了。你说的“我以为C++的应⽤⽐较多的就是⽤MFC来编写各种应⽤软件”其实话没说完整,在Windows下,这个⼤前提不能少,⼤家开发Windows的应⽤程序,如果使⽤VC++的话,建议使⽤MFC来开发,因为它是微软提供的⼀套C++扩充类库,专门针对WindowsAPI封装,开发Windows程序最⽅便。这个话,倒退10年,是绝对正确的,因为那会⼉,Linux没怎么起来,100个程序员,估计有99个都在为Windows开发程序,应⽤软件想当然跑在Windows下,这是对的,不过现在,使⽤Linux开发的⼈越来越多,Windows即使在桌⾯平台上,也⼀般只占据Client市场⽽已,Server中早就是Linux⼀家独⼤了,没办法,⽼外版权意识强,但⽼外也想省钱,Linux不花钱,WindowsServer花钱,就这⼀点,就够了。国外⼤量部署的商⽤服务器,其实是Linux平台。嗯,国内貌似也差不多。所以,我在年初的演讲《明⽇世界–云端计算下的程序员需求分析》中强调,MFC可能会衰落。起码,没有上世纪90年代那样,⼀家独⼤的感觉了。这其实也正是我为什么⼀直强调⼤学⽣尽量打好基础,不要太早涉⾜商业应⽤开发的原因,因为商⽤类库,有⽣命期,今天最⽕,你学了,明天等你毕业出来,⼈家被淘汰了,你不是做了⽆⽤功?甚⾄,⼯作都不好找。不信,有谁是专门研究TurboC的graphics开发的,就是BGI,现在出来找得到⼯作不?其实,MFC最⼤的问题,不是它⾃⼰的问题,是业界发展的⼀个普遍结果。现在的社会,请问⼤家⼀句话,纯正单机版程序的应⽤还有多少?⼤家打开⾃⼰的Windows系统看看,有哪些应⽤是纯粹单机版,⼀点不带⽹络访问的?恐怕不多了吧?现在随着互联⽹的发展,⽹络化应⽤越来越多,在Server端不好说,因为要求⾼吞吐量,⾼性能和⾼安全性,C/C++开发还占有⼀席之地,但是,客户端,恐怕未必了。客户端应⽤,⼀般都很贴合应⽤客户的需求,更多的以数据库服务为主,⽬前,我这⾥再提个看法,纯粹功能性应⽤越来越少,像暴风影⾳,像光阴魔术⼿,这类纯功能应⽤其实是越来越少,⽬前应⽤开发的主流,是利⽤强⼤的中⼼服务器的处理能⼒,为⽤户带来越来越多的数据密集型应⽤体验。QQ,它的⽤户群有多少?MSD和gtalk什么的不说了吧?⼤⽤户量,就是⼤数据量,带来了全新的沟通体验。SNS社区,包括我们这个⽹站,⼤家是不是在享受⼤数据量的应⽤体验?即便是强调终端⽤户体验效果的游戏,⽬前⼤家可以⽐较⼀下,⽹游和单机游戏的⽐例,就知道了,⼈们到底喜欢什么样的应⽤了。这就带来了⼀个问题,以后的社会发展,对于程序员来说,越来越偏重强中⼼,弱客户端的这么⼀种开发模式,这其实就是云计算的由来啦。⼤家是不是发现,⾃⼰⽤IE的时候越来越多了?但是,这就带来⼀个问题,开发弱客户端,还⽤得着C++这种⼤型的语⾔吗?我不说,⼤家⾃⼰想,学C#和Java容易,还是学C++容易?⼤家别耍酷啊,呵呵,其实我当初就是为了耍酷,⾮要学C++的,不过,要是站在商⽤⽴场,站在⽼板的⽴场,早出⼈才,快出⼈才,出便宜⼈才,嗯,Java和C#,PHP也算,就是不能算C和C++,为啥,学起来费劲,程序员学习成本⾼,⾃然价格也⾼,同样的功能,⽤Java实现,程序员满地跑,⽤C++实现,⽼板抱着程序员⼤腿哭,恐怕程序员都未必肯应聘,太少啦,也太贵啦。这不是肖某⼈危⾔耸听啊,我也声明⼀句,我⼀点歧视Java和C#这些程序员的意思都没有,仅仅是请⼤家⽐较⼀下,Java、C#程序员多,还是C++程序员多。不过,这并不说明C++程序员的优势啊,这反过来证明另外⼀个问题,⼤多数中⼩型企业,在研发上投⼊不会很⼤的企业,急于做出成绩,快速获得市场表现的企业,在同等条件下,即Java和C++都能满⾜需求的时候,会选择Java、C#、PHP等语⾔作为公司的主流开发语⾔,⽽不会选C++。这对Java等语⾔来说,其实是最利好的消息,当越来越多的公司需要这⽅⾯程序员时,程序员的市场越来越⼤,价格越来越⾼,⽽C++呢,虽然摆出⼀副曲⾼⽽和寡的样⼦,端着架⼦,但是,由于没有太多公司选择C++作为开发语⾔,因此,反⽽市场越来越⼩,找不到⼯作,即使找到,也得降价销售,这就是市场规律。这⾥我要说⼀句,其实C++程序员,我个⼈认为,前景并不好,从我个⼈经历,和很多朋友的感觉,发现有问题。主要就是不好找⼯作,⼯作机会太少,没有太多的选择空间,⽽Java的朋友们,由于选择空间⼤,其实很好谈价,我好⼏个Java朋友,薪⽔⽐我⾼的。呵呵。因此,我的建议,如果以后定位在应⽤程序员,主要做Client业务,建议不要选择C++,更多选择Java和C#什么的吧,⼯作更好找,还有,我的经验,薪⽔与语⾔⽆关,⼤家千万不要以为C和C++程序员薪⽔就⼀定⾼。⾼的有,肯定有,但是,不是所有⼈,也不⼀定就是你。嗯,说到这⾥,顺便说说第⼆个问题,C++找什么⼯作,我的经验,游戏,⽆论是客户端还是服务器,需要C++程序员的,不过,由于⽬前引擎公司越来越强劲,很多游戏公司⾃⼰不开发引擎,⽽是⽤买的,因此,客户端这边,恐怕需求会越来越少,主要恐怕以后还是做服务器需要。但是也很难讲,C++⽐Java主要就是速度,但是,硬件越来越快,多核开发越来越多,很多⽹页游戏其实⽤PHP已经够了,这个,C++程序员的⼯作空间也受到挤压。C不⼀样,C呢,在很多时候,做驱动,做嵌⼊式⼩规模应⽤,满够⽤的,⽽⽼板为了节约硬件成本,往往会挑选⽐较弱的平台,Java等脚本语⾔⽬前跑不下来,只能⽤C,嗯,稍微⼤点,⽤点C++也可以的。在嵌⼊式平台上,C++貌似还有⼀点市场。不过很难讲,⽬前的arm9已经接近当年P2的计算能⼒,随着嵌⼊式CPU的发展,嵌⼊式系统最终⾛向脚本化,也不是什么难事。其实,Java等脚本语⾔,针对C++最主要的优势就是没有指针,没有很多费解的东东,学习曲线低,程序员容易学出来,还有就是底层已经处理了很多细节,上层更多地专⼼与⽤户的业务,这样,⽤户业务贴合度好,更容易受到⽤户的青睐,还有就是,不处理复杂数据结构,⼤家都调⽤基本库,程序成功率⾼,bug率低,开发成本低,公司容易赚到钱。说⽩了,Java相对C++,不是技术在推动,⽽是钱在推动,所以,C++必败。com就不说了吧,com本质上是跨进程远端调⽤,dcom甚⾄允许跨机器。但是,⼤家想想,其实正是因为com的存在,进⼀步挤占了C++的⽣存空间,越来越多的基本C++功能,被以com形式提供出来,最终被Java、C#等其他语⾔所调⽤,扩充了其他语⾔的功能和性能,使原来仅有C和C++能做的事情,现在Java、C#等做起来也很好,很快。其实,我私⼈认为,com更像是C++程序员⾃⼰为⾃⼰挖的墓坑。当把基本功能⽀持完善,Java、C#等语⾔获得了更好的性能和功能⽀持,可以通过com调⽤很多C和C++的基本库,获得更好的开发能⼒的时候,纯UI,纯数据应⽤,其实已经被Java和C#牢牢占据了,C++没什么事了。嗯,针对你最后⼀个问题,学习⽅向问题,我的建议是,基础的要学,但是,出于好找⼯作的⽬的呢,我建议你应该学点html相关,css相关。如果不是⽴志,这辈⼦就要做⼀个C++程序员,(我总觉得纯正的C++程序员有点曲⾼⽽和寡,不好找⼯作),⽽是很务实的,希望毕业后在程序界迅速找到⼀份⼯作,我建议多学点Java和C#这类脚本语⾔,对于各种数据库的访问做到滚⽠烂熟,嗯,基本的数据结构和算法这不说了,要熟悉的。这样起码帮助你在毕业后,能找到饭碗。不过,这并不是说你这辈⼦不能做C++,当找到饭碗,⼯作稳定了,在有空的时候,是可以继续学习C和C++的,学好了,有合适的⼯作机会,跳⼀下也不是不⾏,说不定,收⼊更⾼。嗯,还是那句话,程序员就是程序员,写得出程序就是程序员。程序员不要在⾃⼰脑门上加太多修饰,什么C++程序员,什么Java程序员,什么Windows程序员,什么Linux程序员,这些加了修饰的程序员,其实不容易存活的。要能掌握程序设计的通理,什么语⾔,什么平台,掌握了基本的程序设计道理的时候,其实都⼀样。⼤学⽣,打好基础,毕业先抓饭碗,总不好意思⼯作了还要⽗母养活。在饭碗稳定的时候,随时注意学习,特别是注意利⽤⾃⼰的基础功底,跟踪主流语⾔技术,不断与时俱进,⽅能⽴于不败之地。C++不是永恒的,C不是,Java也不是,C#更不是,没有永恒的语⾔,没有永恒的平台,只有永恒的程序设计技术。这就是我的看法。嗯,本⽂写到这⾥,还是要补充⼀点:虽然上⾯本⼈写了很多关于C++前景堪忧的⾔论,不过呢,我本⼈确实还是在从事C/C++的开发⼯作。我想我并不是对C++有什么偏见,仅仅是想尽量客观⼀点,不带个⼈感情⾊彩,讨论⼀下C++程序员的就业前景问题。其实C++我认为还是⼀门⾮常优秀的开发语⾔,它与C配合,可以实现很多底层的调⽤,这是Java等语⾔⽆法企及的。我也希望各位C++er能正确看待本⽂的论点,起码,我们现在还是⼀起的。呵呵。⽼兄这个说得有点好向与我感觉不同哟。我是从C#,JAVA转C++的。感觉很好找⼯作啊,⽽且现在讲究⽤户体验,UI以及操作⽅⾯,客户端天然占优势。。⽽且现在桌⾯⽅⾯,windows下仍然90%的软件是C++的,其余的也⼤多被DELPHI,VB⼀类占据,C#,JAVA极少。。linux下C++半壁江⼭,mac仍然是C的天下。。(object-c也是C嘛)。。开发效率⽅⾯,qt,c++ builder等IDE⼯具,⼏乎与c#⼀样块.
发布者:admin,转转请注明出处:http://www.yc00.com/news/1688109807a82969.html
评论列表(0条)