21天速成 C++?编程生涯的一点思考
之所以决定学习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;但要积累经验,就得实践才行。有时候觉得,我们都只是在机械重复自己的工作,并没有真正提高自己,关于这个问题,每个程序员都应该有深入的思考。
- shjhcx [Firefox 47.0|Windows 7] 2016-06-17 09:11 4 赞 回复
- 有点意思
- 来自广东深圳南方科技大学的 Chrome 50.0|Chrome OS 7978.74 用户 2016-06-06 16:35 3 赞 回复
- 这个时候是不是应该说一声,PHP是世界上最好的语言?2333
- hello_linux [Firefox 45.0|Windows 7] 2016-06-05 10:43 3 赞 回复
- 哈哈哈哈。长路漫漫!
- [1]来自广东深圳深圳大学的 Chrome 51.0|Windows 10 用户 发表于 2016-06-03 15:20 的评论:没看懂作者到底想表达什么
- 来自江苏苏州的 Microsoft Edge 13.10586|Windows 10 用户 2016-06-04 04:16 4 赞 回复
- 入门是简单的而更上一层楼是艰辛的