当前位置 博文首页 > Allen Roson:关于C++程序员进阶之路的思考

    Allen Roson:关于C++程序员进阶之路的思考

    作者:[db:作者] 时间:2021-07-09 09:40

    ?

    ?????? 我觉得不管做什么行业,都需要不断地学习,尤其是程序员。平时我偶尔会去查询和思考程序员的学习路线,结合自己的实践经验,我将我自己认为的一个C++程序员的学习路线整理成了本篇文章。书中提到的书籍我基本都收藏了,当然我并没有全部看完,需要书的可以去网上找。

    ?

    1.C语言

    C语言是基础中的基础,打好基础,我们的技术根基才扎实。我的建议是,找出谭浩强的《C语言程序设计》,将每个章节的练习题逐个在LINUX环境下做一遍,效果要达到编译成功、运行结果没有问题。这种基础性的练习一定要做,不要偷懒,别怕麻烦,更不要仅仅因为认为自己已经会了而不屑去做。俗语道“熟能生巧”,最起码你也可以练习指法,缩短完成代码的时间长度。说“细节决定成败”,你敲键盘的速度比别人快,也是细节,即所谓“磨刀不误砍柴工”。我个人认为,这本书作为基础性教材还是很不错的。

    ?

    2.C++基础

    可能有的同事首先想到的是《C++ Primer》,但我认为这本书更适合达到一定程度的同事,否则的话还是建议从谭浩强的《c++面向对象程序设计》开始。同样练习题要认真做,熟练后有精力的话再看《C++ Primer》,可以有选择性地看,那么厚的一本书,学习它还是需要一定的时间和方法的,可以把它作为技术支持类的书籍,在日后工作中遇到实际问题时,有针对性地深入学习。

    有一定基础后就要看下《Effective C++》和《More Effective C++》,个人认为这两本书十分实用,能快速提升对一些技术点的深入理解和快速提升代码能力,并且能有效地运用到实际工作中。还有《Thinking in C++》也应该认真翻看,不知是否有人要抓狂了,但经典牛书又怎能不看?

    另外就是《C++标准程序库》,与vector、list、set、map、string,相关的iteror如何使用,写程序的时候insert()、find()、erase()、push_back、push_front、make_pair()基本上都要用到。

    还有《编程珠玑》,如果想研究算法和数据结构这些内功,一定要看下这本书,这本书是一本“授人以鱼不如授人以渔”的书籍。

    3.C++高级应用

    在开发诊断软件的过程中,我们可能需要写一些工具,或者在写一些超大型的车系代码时,我们需要用到一些高级的技术,这个时候只有C++基础是不够的,我们需要学习一些更高级的技术。

    ?

    《深入浅出MFC》

    本书是MFC的经典读本,相信搞VC开发的很多人都看过,直到今天,对于需要掌握MFC的朋友来说,它仍然是很好的选择。

    ?

    《Qt5开发及实例》《Qt及Qt Quick开发实战精解》

    相比MFC来说,我更喜欢用QT,我个人觉得它的开发效率更高,框架也更好理解,做出来的界面也很好看。

    ?

    《Windows程序设计》

    这是一本绝版的图书,算是Windows平台下编程指南图书的鼻祖,口碑非常好。本书每章的例子都是使用的Windows下的原始API开发的,一个基本窗口的显示也需要自己动手编写接受消息的循环以及消息翻译的逻辑;即使是使用MFC开发的朋友,这本书的作用也很明显,它能让你自行解剖MFC框架程序,明明白白的看透MFC是如何为我们做底层封装,如何实现消息链传递(结合《深入浅出MFC》,整个流程就相当透彻了)。

    ?

    《Windows核心编程》

    对于一般GUI程序的开发,看看VC技术内幕就可以动手,但涉及到进程间通信,涉及到多线程、互斥、信号量,不看这本书就太可惜了。讲解全面而深入,Windows系统的各种核心对象都涉及到了。两句话概况:Windows平台下的经典;Windows开发必备;

    ?

    4.设计模式

    当我们写代码写多了,或者经常改BUG就会发现,好的设计模式真的很重要,不然后面加功能或者维护十分费劲,还容易出问题。关于设计模式,有的人会说《大话设计模式》、《设计模式之禅》,但是我觉得《Head First设计模式(中文版)》更香,里面的例子非常形象生动,语言简洁,不拖泥带水同时又具备技术深度,感觉是给我量身定制的一样。

    ?

    5.数据库

    ?????? 活在这个大数据的时代,如果不会点数据库,那可能真的是不敢和别人说话,哈哈。Oracle在刚毕业那会捣鼓了一下,感觉安装挺麻烦,也很笨重。实际工作中我接触到的一般是SQL Server、MySQL、Office Access,我比较推荐先学SQL Server,基础的话看《SQL Server 2008编程入门经典》、后面进阶的话可以看下《SQL Server 2008查询性能优化》、《SQL Server 2008管理员指南》

    ?

    ?

    6.其它编程语言

    ?????? 作为程序员,多多少少都会接触到一些其它的编程语言,不管是看别人的代码,还是我们在选择设计方案的时候,如果对其它语言有一些基础的认识或者深入的学习过,比如这个语言能做出来什么,这个功能用什么语言实现最快最好,那我们会事半功倍。根据tiobe编程语言排行榜,并结合我的工作经验,我觉得Java,Python,C#应优先抽空学习了解一下。

    ?

    7.行业业务

    ?????? 大家看招聘网站上的招聘要求就能够发现,一般先是声明一些各行业通用性的技术,然后再强调一些招聘企业所在行业的行业经验,经常能看到“会……的优先”。搞桌面软件界面的要求你熟悉常见的界面库,搞视频播放软件的要求你会音视频解码,搞诊断的要求你会通讯协议。我觉得写代码写到一定程度之后,C++技术只是一块敲门砖,而对业务知识的掌握程度才是决定你是否能在这一行出类拔萃的关键因素。就拿诊断这个行业来说,很多人的C++功底其实相差不大,但是你会10个协议,别人只会1个,你实测了500辆车,别人只实测过10辆车,那相对别人来说,你可能就是这个行业的专家,你就是经验更丰富的、更值钱的。

    cs
    下一篇:没有了