本贴给C++初学者一个学习参考

本贴给C++初学者一个学习参考:
   C++难学吗?这个问题也是我初学C++的时候所困扰我的,我思考了很久。也看了网上很多人的争论, 面对C#和Java的诱惑, 特别是C++,MFC淘汰论的时候,我依然选择了学习C++这条路。MFC可能真的是落后了,但是它绝对没有被淘汰,有时间它还是某些方案的唯一的选择。我学C++的理由是(相对于C#和Java):
  1、 学习C#的人和Java的人占程序员总数的百分之80以上,C++占百分之10左右,C,Flash等其它语言也占百分之10左右。这个数据是我自己统计出来的,可靠性在百分之90左右。学得人少,竞争对手就少,以后的薪水可能就会更高。这个少也只是相对来说。
  2、 C++效率比C#和Java高,不受XXX框架和类库的限制
  3、 C++写出来的代码安全性高,除了反汇编,你不可能看得到他的代码是什么样的,但是C#和java的源代码是可以逆向出来的。
  4、 C++的功能强大,只要是操作系统上能跑的东西,它都能做出来,像PhotoShop、3DMax、Word、等大型,强悍的软件基本都是用C++写的,有些是用C写的
  如操作系统、数据库等。
  5、 C#和Java貌似还没出过什么牛B哄哄的软件。游戏基本也是用C++写的,好像只有传奇是用Delphi写的,不过现在Borland也倒闭了,Delphi也日落孙山了。C#和Java主要应用是在网站和一些对性能要求不高的但是又有很多逻辑的地方。如XXX管理系统,XXX进销存系统,XXX银行系统。这类软件对技术的要求不高,但是对逻辑的要求很高,这些市场是C#和Java的天下
  以上的几条只是我稍微罗列下几条能够站得住脚的理由。
  但是作为一名想要真正学东西的并从事软件这行的人,我觉得还是学习C++更有利于自己的成长。一个干了10年的C#和Java程序员和一个干了两三年的C#和Java程序员相比,并没有多大优势。但是一个干了10年的C++程序员和一个干两三年C++的程序员有天攘之别。也许有人会说,我又不想干程序员干一辈子。说实话,我也没想过干一辈子。但是既然选择了这个行业,我们就应该朝最好的方向发展,不能以我以后会XXX样,不会XXX样这个借口来搪塞自己的懒惰。谁也无法预知未来,但是我可以大胆的说,大部分程序员10年之后依然还是程序员,会有一部分人转行,一部分人升做管理了,就算是升做管理的人,大部分人还是程序员而已。只是更高级点。转行的那部分人我不讨论了,但是一个干了10年的C#或Java程序员没升转到管理或转行的话,跟干了两三年的人比不但没多少优势,反而会有劣势。至少在精力上比不过像我们这些刚毕业的人吧。
  以上都是些废话,我还是谈谈我是怎么学习C++的吧。刚开始选软件这个专业的时候,是因为高三的时候看了一条新闻,说是我国的IT人才缺口好几十万,而这个缺口以每年百分之二十的速度增长,而且经常在网上看到XXX干IT行业,工资XXX的高。我一看,前途这么光明,遂从该行。但是进了大学一看,靠,这么难学。因为我是专科,专业是软件技术,这个专业在今年已经被我们学校取消了,原因不详。大一上半年,开了几门睡觉课,除了高数还学了点东西,其它课不是玩就是睡觉去了。下学期开了C语言和VB这两门程序课,很遗憾,这两门课学完之后啥东西也不知道,C语言连for循环是怎么回事都没弄明白,
  只知道for(int i=0; i<10; i++)这行代码下面的大括号中的代码会执行10次。期末考试只考了44.5分,VB60来分,估计是老师放水了。大一算是学得相当的失败了。大一将完了的时候,发生了一件对我影响比较大的事情——哥我失恋了。NND,女朋友跟别人跑了。
  周星驰经常在食神里吃着碗面对我说,真是失败,相当的失败。经过失恋的打击,我自己反思过很多东西。最后咬牙决定,两耳不闻窗外事,一心只读圣贤书。权衡了很久,最后决定学C++,决定是很好做的,但是执行起来却是相当的难。时间过得很快,大二开始了,我也有了自己的本本了。同学会基本都有了自己的电脑了。但是电脑男的当游戏机,女的当电视机。因为我的笔记本是显卡是集显,当哥我兴致勃勃的从商店里买了一张3块钱的盗版游戏碟《最高指挥官》,再又兴致勃勃的装在电脑里,最后兴致勃勃的双击游戏图标,电脑给我弹出个对话框说我的显卡太垃圾了。最后哥我用神来之手将那张盘活生生的变成了可吸入颗粒物。
大二上学期终于开了C++这门我盼望已久的课,但是这门课哥也学得不咋滴。到了期末考试,也只考了70分,但是我自认为学得还可以,就想找个东西练练手,想写个俄罗斯方块,但是那时候觉得太高深了,换别的吧。正好那时候我们上VB.net这门课,老师正在讲怎么做播放器。OK,就用C++做个播放器出来。哥我兴致勃勃的模仿老师写的那个播放器。首先做个打开文件的功能,打开文件首先要获取文件的路径,最后在csdn上找了半天找到了一个MCF的打开对话框类,然后把别人的代码复制下来了,放在我的程序员,最后点了下打开文件按钮,电脑弹出了一个另我兴奋不已的打开文件的对话框,但是我选择了一个MP3文件后,再点OK,完了,下面代码不知道去哪里复制了。就这样,我的处女作就这样失败了,心里很懊恼,大学的时光已经过去了一半,我慌了,学了这么久,什么都还不会。
   学完了C++的基础知识,第二个学期去考了二级C++,挂了。跟我一起考的室友过了,我心里很慌,他都在用java写出了坦克大战的游戏了。英语四级考了一次348分,说来惭愧,因为是专科,考了两次3级,也都没过。大二下学期,我算是恶补C++基础知识,再就是看了下孙鑫的视频教程,买了孙鑫写的那本书《VC++深入详解》,现在看来孙鑫同志的水平也不怎么样。但是那时候绝对是我膜拜的高手,对着他的书上例子一行行的敲着代码。对MFC算是稍微有了点了解。大二下学期,开了门很重要的课《数据结构与算法》这门课也学得不知东西,只是知道世界上还有链表和树这个概念。
   大二暑假,这个暑假算是我学C++很重要的一个转折点,在大二快放假的时候,厦门有一家叫万策智业的公司在我们学校招人去他们公司暑假培训实习。而且只要800块,还有很多其它的培训机构也在我们学校招人培训。我是抱着去厦门旅游的心态去那里的,跟着我们学校一伙人,轰轰烈烈的占了一节火车厢,千里迢迢的奔到厦门这个岛上来了。在厦门只呆了一个月就走了。但是这个月对我学习C++的进展非常大,因为我从大二下学期开学以来一直是在恶补C++的基础知识,所以知识一直停留的基础知识这个瓶颈这个地方。但是在那家公司,我遇到了一位有15年C++从业经验的老程序员当我们的老师。我们一起培训C++的只有16个人,叫CT4项目组吧,其中我们学校的6个人,福师大的有10人,其中福师大的有好几个人的技术在我那里候看来,是非常牛B的不得了。我们那个项目组分了3个小组,我是在B组。那这个项目组里面我的技术算是中等的吧。我们要做的是一个《知识抢答系统》的小软件,我们孝个老师我们叫他邹工,邹工给我们需求文档,要我们实现它,我们每个小组分别实现。也就是说,在CT4这个项目组会出现3个不同版本的《知识抢答系统》这个软件,邹工第一步要我们写概要设计,从来没听过概要设计是何方之物的我不知所措,但是有国标的模板,幸好在我们小组里面有两个福师大的人以前干过这事,概要设计我只是跟他们参与了讨论,但是具体的东西还是他们写的,但是刚写完了概要设计,马上就要写详细设计,最后我也照葫芦画瓢的把我的模块写上去了。我的模块是键盘输入,就是知识抢答时的键盘输入,我把除了小键盘之外所有的按键都用钩子函数给屏蔽掉了。只留下了小键盘让人抢答。屏蔽的代码是从《Windows程序设计 王艳平著》这本书上看来的,然后按我的需要进行了修改。这个项目花了20天做完了,编码时间只有一周多一点,最后3个小组进行评比,我们小组获得了第一,离开厦门的那天该公司的老板请我们去喝茶,我是第一次喝着1000块一斤的茶还说有不好喝,最后喝3000多一斤的茶说这味道还可以。那老板说我嘴真厉害,1000跟3000的都能分出来。其实味道差别很小的。
  这个项目做完了以后,我发现我进步很快,以前很零散的知识都融会贯通了。最重要是克服了那种学习的好高骛远的心里障碍,以前总是觉得学了那么久,什么都没做出来过,什么东西都没学到,后来才发现,基础知识才是最重要的,如果没有以前的那些基础知识,那个项目我根本就完成不了。所有的什么XXX类库,XXX框架都是虚的。基础知识像是造房子的砖头,没有它再好的设计给你,你也实现不了。而且做完这个项目后我的思维也开始扩展了,不会为了实现代码而代码,开始考虑到优化,但是那里候数据结构刚学完,什么也不会。当我克服了那种好高骛远的心里障碍后,就静下心来学习下一个重要的知识了。它就是数据结构与算法。在厦门的这个暑假,邹工要我们天天写日志,而且经常布置任务,没完成的10个以上的俯卧撑,当我有一天感觉他讲东西实在太快了的时候,我心里感觉很慌张,在OA上发信息问他 C++到底怎么学,那天中午我被他叫到办公室去谈话了。最后是他教我怎么查MSDN,虽然现在我不怎么查MSDN了,因为常用的函数都记住了。但是我学会了碰到问题怎么去解决它的办法了。
  大三上学期开学后,我就把主要的精力放在了啃数据结构与算法这门课程上了。在上一些我认为不是很重要的课程的时候,我说看数据结构这书。有空就在电脑上练习。经过半个学期的努力,把链表这弄得很熟了,树也很熟了。但是树用得很少。大三最后一门考试
  《Windows网络程序设计》这门课程,我以100分满分的成绩完美结束了我的大学生活。至此我可以说问心无愧了,有人问我对大学的生活有什么遗憾么,我没有遗憾,爱过,也恨过,努力过,又有什么好遗憾的呢。
   大三上学期12月份,我们班人都开始出去找工作了,我又继续来到厦门去那里培训,
  交了3个月的培训费的,但是到后来我只学了一个多月就走了,但是很遗憾,我并没有再在里面学到什么更高级的知识。因为一起培训的人的技术水平参差不齐,我在里面算是水平高的。但是老师要照顾基础差的人,所以天天还是讲基础,不过把我的基础打得更牢了。
   大三下学期我也开始找工作了,我一共面试了3次就被录用了,后来发现那老板很抠门,
  干了3个半月,6月份就辞职了,在这家公司主要做了一个信息隐藏的检测软件,自己无聊写了一个信息隐藏的软件,该软件可以将一个文件隐藏在一张bmp图片中,图片的大小一点都不变。检测软件就只是判断图片中是否含有隐藏信息。在这家公司我攒了3000来块了回学校拿了毕业证,拿到了毕业证就直奔深圳了,厦门跟深圳真是没得比,我深有体会。在深圳找工作花了10天左右,到了一家新成立的游戏公司当服务端程序员。主要做技能系统、宠物系统、任务系统,NPc模块等,另外写些其它模块的代码。每个技能都写了一个lua脚本,宠物的属性计算也用写了一个lua脚本,每个任务都有写一个Lua的配置脚本,每个NPC也有一个配置脚本。用脚本的好处就是可以热修改。方便游戏策划们修改游戏数据。开始我也不会Lua这种脚本语言,最后花了一个下午学会了。我写了整个服务端的逻辑代码35%左右,游戏要在2010年1月出来,现在上面天天催进度呢。由于老的任务系统满足不了新的需求,本周把以前写的任务系统代码全部按新的需要重新设计了,精简了百分之30以上的代码量。把逻辑也理清了许多。任务系统的客户端主要是显示功能,百分之80以上的逻辑处理都压在了服务端。由于主动技能太过于复杂,本来想做一个通用的函数,最后发现没法做,最后只能是一个主动技能写了一个处理函数,这样的好处是可以应对策划新提出的几乎任何高难度的技能。技能的写了些原子级别操作的函数让其调用。技能的释放后的状态处理也是个难点,不过还是被我给完美的解决了。一直在考虑怎么优化技能的效率,现在虽然功能上实现了,但是觉得还是不够好。

转载于:https://my.oschina.net/ypimgt/blog/87191

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值