代码就是要多写,不管写什么,只要写多了,水平就会从量变到质变。庸人写一万小时可以变成匠人,天赋异禀的人要成为绝世高手也需要一万小时,没有捷径。
但是人是有惰性的,学习的时候需要选择有趣味性、有成就感的东西来练手,否则就坚持不下去。当然了,更重要的是,学了以后能够为找工作积累经验,据我总结,至少有4个方向:
1、学做小游戏,比如说贪吃蛇、连连看、打飞机、2048、坦克大战等等。可以学做控制台游戏、qt做游戏、unreal做游戏,后两个方向都有详细教程。如果只是想练习C++积累代码经验,做控制台或者qt游戏就可以了,如果自己对游戏非常感兴趣,以后想从事游戏客户端开发,可以学习unreal。qt做游戏的教程:用C++编写游戏容易吗?有什么开源的小游戏吗?能分享一下吗?www.zhihu.com
unreal的教程一大堆,自己去买书就可以,我的文章以后也会分享用如何UE4做小游戏,有兴趣的可以关注。
2、学算法,看《算法竞赛入门经典》,刷leetcode,记得尽量用STL,把C++搞熟。入了算法的坑,只有时间不够用的,不存在不知道做啥的情况,因为很多题目几天做不出来太正常了。现在面试一般都有算法题,掌握常用算法基本上是及格线,算法学好是加分项。各大厂校招待遇最高的一般都是算法岗。当然,如果想从事算法方向的工作,光看这一本书还不够,还需要吃透西瓜书。
3、看《unix环境高级编程》,学习linux编程,熟悉其中的命令,然后自己动手造轮子,把很多命令重新实现一遍。比如说ls、find、tree、sort,很多命令随便一个都是上千行,一年之内实现十个命令就能学很多东西了。在实现命令的同时把linux的文件系统、进程模型都搞熟了,收获巨大;
4、学习网络编程,看《unix网络编程》,然后自己做些网络程序,比如说http服务器、聊天服务器、文件服务器、代理服务器,等等,如果还有时间,可以学习一些网络框架、rpc等等,对网络编程熟了,无论以后从事客户端还是服务器端,都很轻松。
上面的四个方向,随便进入一两个,大学四年写几万行代码,找工作就已经碾压很多人了,记得把学习的代码放在github上,这个可是面试官提前了解你的很好途径。其它:看STL源码,慢慢看懂并将其添加注释,放在github上;将stl中没有的容器算法写成STL的风格实现,这样也有成就感,但是比较枯燥,不如像leetcode上ac一道又一道的题目然后看着数字增涨那样激励人心。
另外,开源项目看哪些呢?随便找几个库的源码久可以学很久了:A list of open source C++ librariesen.cppreference.com
// 欢迎公众号「树屋编程」,长期分享接地气的编程知识,争取周更