我曾經是一名黑客,我購買黑客雜誌期刊,關注最新的漏洞利用,那時候電腦安裝的操做系統主要是WinXP和Win2000,不少人使用弱口令甚至空口令,隨便選一個網段用掃描軟件一掃就一堆肉雞(黑客對能夠被遠程控制的機器的稱呼),再加上各類服務的緩衝區溢出漏洞,SQL注入漏洞,網絡環境安全當時可謂一塌糊塗,我入侵過不少我的電腦,也入侵過一些服務器,甚至經過鍵盤記錄器獲得過一些人的帳戶和密碼甚至是ADSL密碼,當時是能夠經過ADSL進行某些購買的,不過我從未利用這些獲取過任何利益,也沒有進行過任何破壞行動,我只是以爲頗有成就感,當時的我就沉浸在這所謂的黑客技術中。逐漸再也不知足於使用別人提供的工具,我想搞清楚他們的原理以即可以利用最新的漏洞,我接觸到一些漏洞的溢出源代碼,它們通常是用C語言描述的,而我不知道如何使用它,還有一些論壇上會討論如何使用反彙編對軟件進行破解或者找到其中的漏洞,而我對這些一竅不通,我發現我根本不懂什麼真正的技術,若是沒有別人的工具我什麼都不會,製做工具的那些人才是真正的黑客,他們掌握的纔是真正的技術。從那時起我就認識到要學習編程,編程纔是真正的技術,而後我便從書店買了一本《C++捷徑教程》並開始了個人編程生涯,那一年我在讀高二。
……
以後我一直在學習編程,不過卻再沒踏上黑客之路,現在我已從計算機專業畢業,並在遊戲開發行業從業近5年了,算起來我學習和使用C/C++已經10年有餘了。
好吧,這個引子有點可能長了,我只想說明相比剛剛學會寫圖形界面的妄自尊大的初學者就在論壇上侃侃而談指點他人或許個人意見更具說服力。
如今我常常看到一些初學者在編程論壇和QQ羣裏詢問該如何學習編程,有人問已經已經學了C還要不要學C++,已經學了C++還要不要學JAVA,要不要學C#,諸如此類要學習哪些語言的問題,有人會回答他們「是的,你須要學習Java,C語言已通過時了。」,「如今學習C語言已經找不到工做了,你仍是學習C#吧」,可能還有更多人有相似疑問我根本沒有遇到,這些初學者可能將花費大量時間在膚淺的層面徘徊,有時我會去指導他們,可是遇到得多了我也疲於指導了。
我並非說多學習一些不一樣的語言很差,相反,學習不一樣的語言確實能夠開拓思路,但我不提倡初學者接連甚至同時學習不一樣的語言,由於編程的精髓不在語言,語言只是對思想的一種描述形式,事實上除了上面提到的C++我也接觸和使用過不少其餘語言,C, VB, FORTRAN, JAVA, C#, PHP, Javascript, SQL, ASP.NET, LUA, RUBY, 而我學習這些語言的時間越晚我就學習得越快,只要花幾天學習一下基礎語法,而後寫一些DEMO,一邊寫一邊查文檔學習使用標準庫,用不了一個月就能夠基本掌握這門語言。由於我已經掌握了一些編程本質的東西。
若是說語言是膚淺的,那編程的內在到底是什麼呢?咱們應該如何修煉編程「內功」呢?
我將這些知識劃分爲3個方面
1. 數學、算法和數據結構
2. 編碼規範和設計模式
3. 開發實踐和團隊領導
其中2個方面有關我的能力的培養,1個方面有關團隊建設和開發管理。
接下來我將經過3篇BLOG將分別就這三方面的能力培養和相關書籍分別闡述 (超連接和BLOG之後將慢慢補全)
如何成爲一名優秀的程序員——數學&算法篇
如何成爲一名優秀的程序員——編碼&設計篇
如何成爲一名優秀的程序員——開發實踐&團隊領導篇html