如何成为一个牛逼的C/C++程序员?

这个题目的噱头太大,要真的写起来, 足够写一本书了。

老九君分享一些经验,希望能让初学的小伙伴少走弯路。

每个人的情况不一样,所以下面的描述可能并不适合每一个看到这篇文章的人。

一、C/C++语言

如果你的基础很差, 建议不要一开始就学C++语言,从C开始学起,对程序有个初步的认识,循序渐进。C语言的书可以先买一本 C primer plus,把书中的一些例子都通过键盘敲到编译工具里面去,然后单步执行,逐行调试去看各个变量的值。或者自行添加一些printf语句去输出变量的值。这样当你看完一本书后, 你就有编写小程序的感觉了。

记住,千万不要偷懒,不敲代码,自以为聪明, 能看懂, 或者直接从网上复制。偷懒的代价是会花费更多的时间学习,最后还没有学会,给自己的自信心造成巨大打击,再也不想学程序了。

C语言看完一本书后,下来你就可以买一本C++的书看了。《C++ Primer plus》这样的好书,因为太厚了,怕你没有信心能够看完。如果确实没有信心的话, C++的书可以先买一本300页以内的书看一看。《C++ Primer plus》这种经典的厚的好书, 可以作为资料直接查阅,有时间的时候可以慢慢看。

还是要提醒各位,一定要把书中的例子挨个敲到电脑里面, 单步执行。一定不要从网上复制, 一定要单步执行。

经过两本书的磨练, 估计你对C/C++肯定有比较深入的了解了, 下来应该可以进入实战了。

二、带界面的应用程序

学会了C/C++语言本身,可能还没有什么成就感,毕竟都是控制台的程序, 老是输出一串字符串, 整天面对各黑框框,成就感估计不是那么爽。要是能搞个带UI界面的程序就爽了。

下来就看个人的志向了, 如果走微软路线, 那你下来学MFC好了,如果要走开源路线, 那开源跨平台的界面库多得是。

通用的并且简单的就是Wxwidget了, 官方网站为 www.wxwidgets.org/。你下载后看具体的例子, 把里面的例子程序敲到你的编译工具里面,去调试,看运行的结果,你也可以试着去修改例子,添加按钮,响应按钮事件等。

走到这一步, 恭喜你,可以照葫芦画瓢的搞个小应用程序了, 还带界面。

三、网络应用程序

语言搞懂了,UI程序也会了, 下来该学学网络咯, 现在那个程序不需要联网啊,懂网络对你理解很多程序非常有帮助。但是网络应用程序从哪里入手呢 ?

我来告诉你,从《UNIX网络编程》这本书入手吧,这本书可以教会你网络套接字的底层原理,把上面的例子好好学习,自己动手写一个回应服务器。写一个服务器端,再写一个客户端。服务器端请务必学会 select 这个简单的多路复用模型,这样你才能慢慢的深入里面 poll,epoll ,IOCP 之类的模型。

四、文件操作

所有的程序,基本都会用到文件的读写操作,windows系统有自己的文件操作API, 比如CreateFile, DeleteFile 等,请新手不要学windows的文件操作API, 新手请学标准C语言的文件操作函数,简单易学还跨平台。

就那么几个函数,三下五除二你也就学会了, fopen, fclose, fread , fwrite, fseek, ftell 就这么几个而已。

五、深刻理解内存与指针的关系

作为一个C/C++程序员, 从学习程序的头一天开始,就要和内存的分配释放作斗争。你必须理解内存与指针的关系。怎么样才能理解呢,把老九学堂的《零基础学编程系列之C语言》里讲指针的部分来回碾压个十几遍,代码敲个几十遍就算差不多了。

六、仔细研究Apache源码

学程序非特别是C/C++程序,非3年之功可以出山,三年对一个C/C++程序来说是一个从量变到质变的过程,三年的项目实战经验,可以让你接触到一个完整的应用程序所需要具备的骨架。

但是这个阶段你写的代码,可能充满BUG, 会宕机,运行效率很差,自己回头看看一年前写的代码,可能自己都感觉恶心, 看不下去。没有关系,这种感觉是每一个进步青年都会有的。要提高自己的代码水平, 还是要像高手学习。

你可能要问,公司同事的水平一般, 水平好的人家也不愿意给我讲。没有关系,开源的代码就是你像高手学习的最佳途径,开源代码是高手留下的练功秘诀, 你看了后你会突然感觉茅塞顿开,感觉自己的水平差人家太远了。

Apache里面的很多思想是所有程序都通用的,搞懂了, 很多模块你也可以直接拿来使用。Apache对内存池的使用, 对线程池的使用, 对模块结构的封装,非常具有实际意义。要是你能把Apache的源码吃个透彻,每一个细节都搞明白了为何人家要这么实现,我可以给你说,“恭喜你 , 你离传说中的高手已经不远了。”

七、修炼C++

我上面说的基本都是修炼C的, 要修炼C++, 还得再花3年功夫, 才有可能练成C++高手。C++太博大精深了,其中最复杂的莫过于泛型编程思想,不要以为能写个模板类就认为泛型编程不过如此而已。

修炼C++, 可以从用C++封装的MFC, wxWidget入手, 看高手如何通过C++语言, 封装这样庞大的UI库,里面应用了很多的C++机制, 最典型的就是多态机制, 还有很多的设计模式应用可以研究。

八、深研设计模式

设计模式是程序设计的灵魂,是通用方法,当你面对一个大型项目的时候,如何设计一个有弹性的系统,是所有系统分析员应该掌握的技能。在设计模式的研究上,要结合实际的项目进行。

上面跟小伙伴们说了那么多方法和步骤,能否坚持按照上面的方法进行学习,是小伙伴是否能够学有所成的关键。不仅仅是C/C++,要做好一件事情学好一样东西的方法有很多,能不能坚持就是关键。

原文发布于微信公众号 - 老九学堂(xuetang9)

原文发表时间:2017-03-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员宝库

前端新手程序员不知道的 20个小技巧

16.你遇到的问题,大多数人都遇到过,并且网上都有完整的解决方案。你找不到,只是你懒得去找。

1147
来自专栏程序员互动联盟

【专业技术】 Linux下如何学习c语言?

引言   尽管 C 语言问世已近 30 年,但它的魅力仍未减退。C 语言继续吸引着众多的开发者,他们为了编写、移植或维护应用程序而必须学习新技能。   本文是为...

3226
来自专栏编程

给学c加加小白的50条忠告

1.请热爱C++! 2.不要被 VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言; 3.会用Visual C++,并不...

18110
来自专栏老九学堂

学编程一开始就值得坚持的习惯

学习任何一门技术,在一开始就养成优秀的习惯,这是非常重要的。 1 看官方文档 遇到不清楚或不懂的知识点,先去看官方文档! 很多官方文档是英文的,硬着头皮也要看...

3669
来自专栏Java编程

Java后端2017书单推荐

对于程序员来说,个人感觉最佳学习方式是看书,视频花费时间太长,而博客则不够系统。初学相关领域最好的方式就是找到一本经典的好书,然后啃完它。

1.2K2
来自专栏日常学python

Python 面试宝典

步入 9 月,徐徐的秋风给酷热的天气带来丝丝凉意。同时,也吹来一股招聘高潮。俗话说“金九银十”,每年的 9、10 月都是招聘高潮。有些小伙伴会参加秋招,有些小伙...

1133
来自专栏全栈工程师成长之路

全栈开发学习笔记(持续更新)

34410
来自专栏程序员互动联盟

如何才能学好Linux?

为何要学习 Linux? 这个问题可能困扰着很多 Linux 初学者和爱好者,其实我也说不上来为何要学习 Linux,可能最实在的理由就是----Linux 相...

3044
来自专栏码神联盟

高效编程所需要做的那点事

聊聊如果才能高效编程 计划(Plan) 所谓Plan,其实就是对应于编程中的设计阶段,当然,这里的Plan并不像设计那样重量级。它要求我们程序员在正式...

2699
来自专栏闵开慧

lamp兄弟连的解决问题套路

首先我想说问这些问题的除了第三个问题可能会有人跟你讲讲什么个意思以外,估计大部分问题都是未遂。。。有人问完没反应还说 “大家不帮我”。。。不是不帮你,是你问问...

3378

扫码关注云+社区