牛逼的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++,要做好一件事情学好一样东西的方法有很多,能不能坚持就是关键。
我作为过来人,也是一步一个脚印学出来的,并且还在继续学习。
牛逼的C/C++程序员是如何练成的?相关推荐
- 有史以来最牛逼的一张程序员职业路线图,分享给你
最近在琢磨程序员到底路在何方,经过不断的自虐和代入,终于在迷雾森林中得图一张,看之豁然开朗.独乐乐不如众乐乐,share了: (图1 程序员职业路线图) 术语表 图1中使用了很多术语,这里先做解释,只 ...
- java代码打出一只狗_牛逼!这位程序员开发出一“舔狗”必备神器(代码已开源)!...
在一个阳光明媚的清晨,我打开窗户呼吸了一口新鲜空气.阳光灿烂,岁月静好,又是一个约女朋友出去爬山吃饭看电影的好日子.想到女朋友的大眼睛,我脸上不禁洋溢起了幸福的微笑. 打开微信,给女朋友发出去一个美好 ...
- 卧槽~比Postman牛逼多了~【程序员福音】
Apifox 最好用的接口管理神器,没有之一,秒杀市面上所有同类产品. Apifox 是 API 文档.API 调试.API Mock.API 测试一体化协作平台,定位 Postman + Swagg ...
- 优秀程序员是怎样炼成的?
随着软件技术不断发展,从事软件行业的人员日渐增多.你发现身边多了这么一群人,他们有的西装革履,有的穿着随意,有的不苟言笑,有的风趣幽默,有的博学多才,有的质朴木讷,唯一的共同点是,他们的名片上都印着& ...
- 好程序员分享大势所趋 HTML5成Web开发者最关心的技术
为什么80%的码农都做不了架构师?>>> 好程序员分享大势所趋 HTML5成Web开发者最关心的技术,最近,在Stack Exchange上出现了一个比较热门的问题:Web开发 ...
- 同样的文章2个网站2种待遇,2个眼光,博客园是逼我走、程序员网站是请我过去,这就是人才在不同公司的待遇一样的道理
昨天晚上很热血的写了两篇文章,结果一个被博客园强制撤下首页. 今天被CSDN网站发布到首页,为我免费做广告,http://www.csdn.net/, 同时给我上了2个首页. C# ASP.NET 开 ...
- 虾米音乐mac端应用代码注释惊现“穷逼vip”,是程序员干的
http://www.guancha.cn/industry-science/2017_11_19_435527_s.shtml 11月19日,某技术论坛出现了一篇讨论阿里旗下虾米音乐客户端的帖子,引 ...
- IDEA JetBrains 推出 Mono 编程字体真牛逼,更适合程序开发人员!
>>号外:关注"Java精选"公众号,菜单栏->聚合->干货分享,回复关键词领取视频资料.开源项目. Intellij IDEA 公司 JetBrains ...
- 程序员自我修练-提高写代码的能力
首先让我们看一看刚入软件公司会出现的情况: 1. 你可能会常常发现,写了一段代码后,编译程序时是一大堆的出错 (原因:语法不熟) ──别担心,这是每个程序员必须经历的事,这时候你就需要更大的耐心及细心 ...
最新文章
- 库克喜提 8 亿年终奖,2020 年整体薪酬增长 28%
- Android Thread interrupt 中断JAVA线程(转)
- MySQL索引知识总结
- HTML5学习笔记(一)(2015-12-2)【新浪云搬运】
- 一个功能非常全面的增强出口查找工具
- python 多层感知器 sklearn.neural_network MLPClassifier.predict()函数
- python流行的爬虫框架_Python爬虫相关框架
- valuestack,stackContext,ActionContext.之间的关系
- oracle存储过程多分支怎样写,如何从存储过程返回多行? (Oracle PL / SQL)
- 辛苦俩月总结的面试题,掌握它怼翻面试官不是梦~
- UEditor工具栏上自定义按钮、图标、事件、窗口页面
- 《分析服务从入门到精通读书笔记》第四章、创建父子维度(7)
- 错误率_全新的支付方式来了 错误率可控制在百万分之一
- 简书文章阅读量之小漏洞
- HBase学习笔记:HBase数据库介绍
- edge浏览器开启夜间模式
- html自动幻灯片代码,简单常用的幻灯片播放实现代码
- uk码对照表_尺码UK5 对应的中国尺码是多少?
- 视觉问答06day[综述]:一文带你了解视觉问答VQA
- 小米10青春版刷鸿蒙,功能齐全也不行!小米10青春版现已跌至新低价,高刷已成趋势?...
热门文章
- navicat 模型保存错误 unable to write the output file
- 为什么你的简历石沉大海,offer了无音讯?
- 游戏引擎开发中常用的设计模式
- WireShark导出H265/HEVC码流,使用h265_export.lua插件
- Oracle EBS Interface/API(19)-PO修改行或发运行的单价、数量、需求日期和承诺日期等等
- 转载:程序员如何优雅的挣零花钱?
- 八,如何检测PC1,PC2直接通信?
- java基础案例-购物车模拟
- otrs安装mysql_otrs安装配置
- 防DDOS攻击案例 -- ddos deflate