返回 登录
0

21天速成C++?编程生涯的一点思考

阅读15745

之所以决定学习C++,是因为我对游戏引擎开发和机器人微控制器编码等很感兴趣,这些工作无一例外地要求掌握C和C++等相对低级别的计算机语言。之前我做过的图形和音频编码工作也有很多都是C++资源的,所以我想,不系统地学一下恐怕不行。

多年来,身边有不少人要我对C++敬而远之,说它跟Swift相比,多么不严密,不好用等等。我对C++不甚了解,实在不好评判。

我注意到市面上有很多C++入门教程,现在我读的是Beginning C++ Through Game Programming,虽然里面“for”循环语句等概念我已熟知,但这本书对于使用C++还是很有用的。我信奉实践出真知,当初是跟着Big Nerd Ranch指南一步一步实践着,学会iOS编程的,所以看书之余,上手练一练C++找找感觉很好。

话虽如此,这本跟培训班所教内容大同小异的C++入门书籍最大的价值在哪里呢?吃透这本书就能进入C++高级技能的大门吗?

Bjarne Stroustap写了很多C++的书,不论是没耐心的,没胆量的,还有盲目自信的,都能在其中找到自己适合的。

提到了入门教程,那么高级教程又长什么样呢?我最初学的是iOS框架的Objective-C,而当时市面上iOS有关的书都是入门级别的,可以找到Swift的书籍,但没有入门或者高级教程。大部分iOS及其相关技术的“高级教程”也都是讲框架和API的。还能找到OpenGL(iOS)、AVFoundation和Core Data的书。但是并没有iOS高级教程。如果有本高级教程,那内容上也应着重帮助程序员熟悉iOS语言UIKit,以及教授如何看懂其他框架文件。

到底哪里去找C++高级教程呢?如何成为C++大牛?可持续软件执行的经验对C++能力培养有用吗?什么样的项目能帮助提高C++能力?C++跟iOS或Java一样,库是重中之重吗?既然市面上有iOS库的书,是不是也有C++库的书呢?

程序员能力上的参差不齐很明显。很多人觉得干得久了,能力就高了,未来五年有没有进步一点都不重要,也不在乎认真提升自己能力。都想证明自己优秀,都恨不得昭告天下自己多么在行,但很多人根本不理解什么是“优秀”,更不知道“优秀”跟“菜鸟”之间差别有多大。

好长一段时间,我都觉得理解设计精髓能够造就“优秀”,但其实编程的“终极大法”不在于此。现在我的想法变了:理解要解决的问题,写出“菜鸟”都能看懂的代码才是“优秀”。未来随着年龄增长,也许对“优秀”的理解还会改变吧。

一本指南能够帮你学会“for”循环,却不能囊括所有编程经验。不过至少指明一条路,让学习着磨练自己的技能。“优秀”到底体现在哪里?一个项目有能耐写十组代码吗?一个框架用5年?

以前很多人觉得开发一个应用放在商店里就是“优秀”——真的是这样吗?很多应用没过多久就被用户抛弃了;如果开发出应用就沾沾自喜,而不是老老实实回去改进自己的代码的话,你还嫩了点。

抛给我一个项目,我会整整两周都小心翼翼,不敢破坏任何代码,然后再被拽去做别的项目;有时候没有需要解决的问题,或者项目不太可能成功等等。这些情况下要提高技能很难。最初从事编程时,我遇到过这种事,好在现在已经熬出了头。如果再回到过去,我仍然不晓得怎么做才好。单打独斗成功的可能性微乎其微,从他人那里学习才能有大的进步。

我喜欢那种需要投入好几年时间跟团队合作完成的复杂项目或框架。现在我正在寻找一个开源项目,这样能激励我朝更高水平迈进。而且我也想要了解,为什么人人都讨厌C++,说不定某一点突然恍然大悟了呢?但仅仅依赖抽象的书籍恐怕达不到恍然大悟的水平。

面试C++工作时,如果无法证明自己能够躲过C++的雷区,估计也得不到offer;但要积累经验,就得实践才行。有时候觉得,我们都只是在机械重复自己的工作,并没有真正提高自己,关于这个问题,每个程序员都应该有深入的思考。

英文来源: What Makes an Advanced Programmer?
翻译: 张新慧
审校/责任编辑: 唐小引(@唐门教主),欢迎技术投稿、约稿,给文章纠错,请发送邮件至tangxy@csdn.net

评论