看了这篇文章,我终于知道要成为一个C++高手真的很不容易

lxb365 2005-12-03 05:36:05
经过十分漫长的C++学习过程,我总算完成了我自己的C++心愿,看完了我想看的所有C++书籍,回顾我C++的整个学习过程,颇有一些心得和经验,希望与各位分享,也希望给正处在摸索学习阶段的XDJM一点学习参考。
首先看看我第一次接触编程语言,唔,那可能要追述上到世纪,在我小学4年纪的时候第一次接触到BASIC,那个时候学习这个东西完全是为了要爸爸给我买一台386,没想到的是,BASIC开启了我对于计算机的一切兴趣与追求。5年纪的时候参加少年的计算机奥赛,我用BASIC写的一个彩色立体可旋转移动的正方体拿了一个铜牌,从此计算机编程成为了最大的爱好,现在我还保留着源代码,是保存在一盘普通单放机的磁带上的,我估计很少有人用过录音机和串口的转换器吧,呵。我用BASIC写的第二个大程序是给我妈妈用的财务程序,初中二年纪的时候,我妈妈在单位做出纳,我总看到妈妈每天晚上拿个计算机算一堆表,所以我写了这个程序帮助妈妈快速完成她的工作,其实我的根本目的是为了一台打印机,因为这个程序,生成了简单的报表,她可以直接打印,当然为了这个便利,她必须花钱给我买一台当时还算价值不低的打印机。不过现在回顾起来,BASIC虽然是我编程的第一位启蒙老师,但是在我开始C++的学习之后,他确实使我我思想上产生了很大的困绕,主要是OOP思想,我花费了将近1年多的时间才真正体会到什么是OO!
到了大学,我才真正开始系统的学习编程。在此之间走过一些歪路,比如高中的时候研究HACKING,之所以说学习hacking是条歪路,原因很简单,因为研究到一定的程度,没有十分稳固的编程基础,根本的无法继续深入学习。中国**联盟解体前,位列第三的kender给了我这方面很大的打击,从此我就退出了,从此对于hacking我就不闻不问,从此看到那些下三烂的货色也要学hacking,我就感到可笑。第一次接触的是C,没什么好说的,我C学的不好,因为我大二的时候经商去了,而且我觉得C能做的,我用BASIC都能做到,为什么要学C?当然那个时候我成绩真是北大的BBS...然后接触到的就是C++,教材的钱能的《C++程序设计》,这本书其实还是很不错的,不过很多看了两本名著的朋友都对这本书嗤之以鼻,也许是我天生很笨,在我看完了《C++PRIMER》后还经常番看《C++程序设计》。《C++程序设计》虽然出书的时候ANSI C++还没有确定下来,不过它还是含盖了C++所有语法,建议对C++感兴趣却又没有任何基础的人先从这本书开始,简单而高效,不要认为人家一上来就看《C++ PRIMER》或是《the c++ programming language》就觉得自己的档次很低,你要确信,你肯定能超过他!这本书课后习题在我看来是典型的结构化编程,即使到了CLASS,也全部可以用STRUCT代替。不过在这个阶段做习题十分必要,用处我不想敲了,推荐使用的编译器就是书中所说到的编译器(我忘记叫什么了:P)看完之后,如果你想说C++很简单的话,建议你在看完了《C++ PRIMER》或是《the c++ programming language》之后再说。这两本书都是基于标准C++的,十分苛求的说,后者对标准的兼容性稍差:)。对这两本书,我的看法是,如果你确实想仔细的学习,建议你看《C++ PRIMER》,如果你想跳过我将要写到的下面两本书的话,建议你看《the c++ programming language》。对这两本书,前者最高到中文第三版,因为第四版,后者到特别版。对于前者,我看后的感觉是它的优点在于解析,特别是函数,类,模板的解析,但是它并没有含盖C++的方方面面,后者就不是这样。实际上我并没有仔细看过后者,只是同学总是拿这本书上的问题来与我商量,所以有机会偷窥了几眼。暂定你选择的是前者继续学习,在看完后,也许你用C++编制普通的程序已经能够运用自如,但是你仍然应该会有很多问题和遗憾,比如,类继承,虚拟继承,类访问控制,类继承下的访问控制,还有虽然我已经对如何解析十分清楚,但是我仍然感觉我对语法掌握得不系统,遗憾的是,书中出现了很多的库函数,我为什么都不知道?这个时候建议你看看《标准C++宝典》,这本书对于语法正所谓事无巨细,一一道来啊,再就是回顾一下《C++ 程序设计》(钱能),对类的部分讲解的还是十分精辟的。在掌握了一切牢固的语法基础之后,我选择的下一步不是STL,而是IOSTREAM,原因之一是因为《C++ PRIMER》并没有把这一部分讲述的很好,对了,《C++ PRIMER》也没有把STL讲述的很好,所以我看《C++ PRIMER》的时候这些章节都跳过了,我的目标是不求知道,只求精通。对于IOSTREAM,我选的书是《Standard C++ IOStream and Locales》,我当时还是看的E文原版,事实证明,我错了,这本对于当时的我,难度突然拔的太高,所以在看完了第一章之后我就放弃了,只是暂时的搁置下来了。对了,忘记说,对于《C++ PRIMER》或是《the c++ programming language》的学习,你应该十分认真的选择编译器了,我推荐3个首选dev-cpp最高4.9.9.2,然后是vc.net(千万看清楚,不是vc6.0!),最后就是borland c++ builder-X,具体我就不介绍了,相信你学习到这一步,自己应该已经掌握很多的信息了.继续,下一步,我的选择是〈深入探索C++对象模型〉,我是在图书馆借阅的,现在也有电子版了,不过我看了以下,效果一般,但是可以和E文原版的电子版一起看。这本书看完。如果你是跟我一样,把《C++ PRIMER》翻烂掉,能把《深入探索C++对象模型》的知识要点全部背出来的话,我恭喜你,你的C++水平已经到中级了:)接下来,我的选择是对C++这门语言为我提供的所有服务设施通透的学习一边。说穿了,就是库函数,C++库函数分两部分,一部分来自C语言,一部分就是STL,对于C语言部分,我建议你可以买一本C++函数库的书,最近好象刚出了一本,不过我还没有机会看,我看的是〈C和C++代码精粹〉,里面把C语言部分的库函数分为3类,这本书我也就看了这3个章节,其他的东西我知道,看他做甚?而对于STL,你如果真想成为C++出类拔萃的高手,你应该看3本<<C++标准程序库>> <<泛型编程与STL>> <<STL源码剖析>>,第一本主要讲的是如何使用STL,第二本将STL的一些设计理念,并指导你进行泛型设计,所谓泛型说穿了就是指模板。看完这些书,如果你跟我一样,可以把STL全部重写一边的话,那么恭喜你,你已经成为C++准高手,这个时候我的选择是回过头去看《Standard C++ IOStream and Locales》,呵,现在才发现原来这本书这么简单!简直是naive!其实,我现在最想做的事情就是能够把IO全部重写一边,不过还没有找到合适的编译器下手,感觉应该用GCC比较好,还没开始研究,我也不清楚。好了,既然这么多本讲述C++技术的书籍你都搞完了,也不在乎多两本吧,呵呵。知道你应该看什么吗?你应该看看<exceotional c++>还有<effective c++>,这两本书都有more版,不算太难,最后可以看《高质量C++编程》,最后有一套练习题,做做,小菜一样。接下来我的选择是<C++编程思想> 〈设计模式〉 〈大规模C++程序设计〉(最后一本我最近才看完:P)这3本书可不讲什么语法,第一本实在没有必要介绍,似乎每一种语言的编程思想的的书籍都是说的如何用这门语言编程,第二本其实并不能说是针对C++,所有语言通用的一本书,关键是程序设计的方式,第三本被称为〈设计模式〉的C++实践篇,其意义毋庸多说。看完了吗?好吧,你应该选一个项目锻炼一下。如果你能在一个月内看完这所有的书,欢迎你加入ISS_SQL开发团队,这个就是我近期想做的事情,我就是想写一个自己的数据库。不过如果你不是外星人的话,我估计你不可能在一个月的时间内,看完我看了2年的书。对于我刚才说的SQL,我还在选人,说实在的,现在我的同学里,真的是没有几个人的技术能让我看的上的,哎,得一知己难啊!还是继续说编程,这个时候,你已经有了顶级的C++基础,想学什么不容易?JAVA,你学了一个月??开玩笑,我看了一个星期的书就开始做项目了!其实我觉得到了这个时候是一个面临选择的时候,一个是做UNIX下的开发,一个是做WINDOWS下的,不过我选择了第三条路,也就是我正在学的,算法,因为我的导师正在做973计划中的数据挖掘项目,所以我也沾光,因为是基与weka,所以我用java,这个B语言真弱智,我已经开始讨厌JAVA了,所以我才想用C++重写一个WEKA类的开源软件,不过我感觉用java写算法,的确不错。前段时间,我一个同学为了一个C#问题苦恼,问题粗略说来是GIS设备返回串,要进行处理,提取数据,因为串本身的复杂性,具体是怎么样的我也不知道,因为他的这个是商业项目。这个问题在C#下十分困难,连正则表达式都无能为力,所以我给他的建议是写一个自动机,也不知道他最后的处理方式,不过在java下,呵,大概不超过五十行代码吧。说远了。
最后说说人的问题。有一点点浮躁的人建议你千万别想学C++,直接学VB或者C#算了,希望在浩方有个排名的人,我直接告诉你,你不应该学C++。
关于C++的学习,我就说这么多,其实也感觉没有说什么,只是把我学习C++看的每一门书都罗列出来,虽有显摆之嫌,但也确实希望给那些如曾经的我一样迷茫的摸索者,那些希望学习C++且追求完美技术的人指一条明路。简单的说,你认真看完我上面说的所有书,你就是C++高手!
改天,我把我文中提到的所有书籍的电子都汇总起来跟贴到下面。

==============================

上面提到的这么多书,我只看了2本,已经用了3个月的时间了,要想成为C++高手,真的还有很多路要走,更要命的是,现在已经不是学生了,没有那么多时间和精力,要完成那样的愿望不知道何年何月才行啊!
...全文
1441 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
bhut 2005-12-09
  • 打赏
  • 举报
回复
问题的关键是:看完这些书以后能找到什么样的工作?
lujun-cc 2005-12-07
  • 打赏
  • 举报
回复
C++当然是博大精深,就连很是经典的书,也不可能涉及它的方法面面,要学好就必须看一大堆的书,唉,偶才看了几本
huheng_0_0 2005-12-07
  • 打赏
  • 举报
回复
学习~~~
hmily_ysp 2005-12-07
  • 打赏
  • 举报
回复
受教了。
lxb365 2005-12-06
  • 打赏
  • 举报
回复
我觉得这篇文章适合那些希望追求完美技术的人,先学语法,再学算法,然后才是真正的应用,不过要走完这个过程,不是1年2年能办到的,除非是个刚上大学的学生,在大学里把所有精力都放在编程上,对于广大工作了的人来说,没有那样的条件让你打基础,往往一知半解就开始搞开发了。
iiml 2005-12-06
  • 打赏
  • 举报
回复
学语言,
主要还是应用,
基础理论打牢了,
很多东西现学现用其实也可以,当然开发效率要低一些了:)
我本科和硕士都是学计算机的,
上了博士,根本没什么整块时间学语言。
按照lz的方法固然能对C++能有相当的掌握,
不过不建议大家把时间都花在学习语言上。
crazy_wrong 2005-12-06
  • 打赏
  • 举报
回复
人人都这么学就能成为高手吗...
每个人的学习方法不同...
走有自己特色的C++之路...
作为参照可以...但是照着别人的路走有意思吗...
fyps 2005-12-05
  • 打赏
  • 举报
回复
目标: 第一种高手
实践学习,学习实践.........
zez 2005-12-05
  • 打赏
  • 举报
回复
原作者只是搞研究的...

到了商业编程里面.. 就完全不是那么一回事了..

不知道原作者是否知道 团队,版本控制,编码规范 等等...

学语言难的不是其技术,而是怎么用 ...

megaboy 2005-12-05
  • 打赏
  • 举报
回复
真不容易?这只能说明,你还远不是高手。其实高手只有两种,这两种高手都有一个共同特征,就是当他进入另一个领域的时候,他能很快地成为那个领域的高手。

一种高手,他专注于各种应用环境的研究,对它们非常熟悉,能够独立完成技巧性很强或者比别人高一畴的应用,甚至推陈出新。但是,他必须时刻跟踪版本、观念的不断变化,然后很快地掌握它们的本质,如果离开该领域一段时间,他会变得落后。

另一种高手,专注于基础理论的研究,有很强的数学理论功底,但由于他把大量时间都花在理论的研究上,长期与应用脱节,对表面的应用往往了解不深,但如果进入该领域,他也能很快地掌握,因为他早已熟悉其本质。同时,他往往对另一种高手带有偏见,呲之以鼻。
bm1408 2005-12-05
  • 打赏
  • 举报
回复
我晕了~
gudulyn 2005-12-05
  • 打赏
  • 举报
回复
mark and up-up-up
note_code 2005-12-05
  • 打赏
  • 举报
回复
还有好多没看呢
winzz123 2005-12-05
  • 打赏
  • 举报
回复
标记一下!强贴!别删!
睡在床板下_ 2005-12-05
  • 打赏
  • 举报
回复
<stl源码剖析》 是好书,我看了很久,人晕乎乎的。。。。。。。。。。。。。

lz说的,不适合所有人的,有的 人半道 出家 学 vc了的~~~
  • 打赏
  • 举报
回复
《C++程序设计》钱能 没啥说的了easy
《C++ PRIMER》没啥说的了easy
《the c++ programming language》没啥说的了easy
《C++标准程序库》 明明是个手册
《C++编程思想》 没啥说的了easy
《泛型编程与STL》 只要理解了泛型思想,读这本说根本不费劲
《exceotional c++》 看了一遍,听见简单的
《more exceotional c++》 没看
《effective c++》 简单
《more effective c++》 简单
《深入探索C++对象模型》 简单,如果看过masm32v8带的那个oob,再搞过逆向工程的话,看这本书最多一天时间
《高质量C++编程》 没看过
《STL源码剖析》 没看,
《Standard C++ IOStream and Locales》,没看过
《大规模C++程序设计》 准备看

《设计模式》 攻读中
最后我在提议一本
C++设计新思维 范型编程与设计模式之应用 估计俩月才能看懂吧,至于应用,那就不好说了。
dx30611 2005-12-05
  • 打赏
  • 举报
回复
你们上当了
没听说过看书能看出高手来,书是经典,但是没有实际的开发经验
只可能是一个耳朵进,另一个耳朵出或者也只能了解个皮毛,那些c++大师没听说只是舞文弄墨的,那一个没有丰富的开发经验
zhanglu520ily 2005-12-05
  • 打赏
  • 举报
回复
一群牛人~学习总不会错吧?
zixiu2008 2005-12-05
  • 打赏
  • 举报
回复
文章作者的C++心愿竟然只是看书……

有点意思哈
cber 2005-12-05
  • 打赏
  • 举报
回复
崇拜一下,至今上面列的很多书我都没有看完……(有的书都入手5+年了:|)

《Standard C++ IOStream and Locales》这本书我从来就没有看到第二章后

PS:写这个帖子的人口气让我觉得不爽
加载更多回复(27)

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧