![]() |
VOOZH | about |
編譯自:http://redqueencoder.com/what-makes-an-advanced-programmer/
轉載自:CSDNhttp://geek.csdn.net/news/detail/78283
譯者: 張新慧
之所以決定學習C++,是因為我對遊戲引擎開發和機器人微控制器編碼等很感興趣,這些工作無一例外地要求掌握C和C++等相對低級別的計算機語言。之前我做過的圖形和音頻編碼工作也有很多都是C++資源的,所以我想,不系統地學一下恐怕不行。
多年來,身邊有不少人要我對C++敬而遠之,說它跟Swift相比,多麼不嚴密,不好用等等。我對C++不甚了解,實在不好評判。
我注意到市面上有很多C++入門教程,現在我讀的是Beginning C++ Through Game Programming[1],雖然裡面「for」循環語句等概念我已熟知,但這本書對於使用C++還是很有用的。我信奉實踐出真知,當初是跟著Big Nerd Ranch指南一步一步實踐著,學會iOS編程的,所以看書之餘,上手練一練C++找找感覺很好。
話雖如此,這本跟培訓班所教內容大同小異的C++入門書籍最大的價值在哪裡呢?吃透這本書就能進入C++高級技能的大門嗎?
Bjarne Stroustap[2]寫了很多C++的書,不論是沒耐心的,沒膽量的,還有盲目自信的,都能在其中找到自己適合的。
Teach Yourself Programming 21 Days
提到了入門教程,那麼高級教程又長什麼樣呢?我最初學的是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;但要積累經驗,就得實踐才行。有時候覺得,我們都只是在機械重複自己的工作,並沒有真正提高自己,關於這個問題,每個程式設計師都應該有深入的思考。
[1]: http://www.amazon.com/Beginning-C-Through-Game-Programming/dp/1305109910/ref=sr_1_1?ie=UTF8&qid=1464534665&sr=8-1&keywords=c+game+programming
[2]: http://www.informit.com/store/programming-principles-and-practice-using-c-plus-plus-9780321992789
推薦文章
將文章分享給朋友是對我們最好的讚賞!