不論你是想自己設(shè)計游戲,還是開發(fā)iPhone或安卓手機上的應(yīng)用,還是僅僅為了娛樂,學習編程語言都是一條必經(jīng)之路。編程語言種類繁多,用途各異,然而一旦掌握其中之一,其他的也就迎刃而解。作為初學者,你可能要先從Java或HTML開始學,一旦掌握了一門編程語言,你就發(fā)揮無窮的想象,開發(fā)各種神奇的軟件啦。
初學者一定要從主流語言開始學習,比如中級語言C和C++。這兩種語言是任何一名合格、專業(yè)的程序員都必須掌握的,因為它們稱得上是軟件開發(fā)界的主流。但是最好不要從高級語言開始學,如Java,因為這些語言對于初學者來說難度未免太高(高級語言可以以后再學,但是C語言和C++應(yīng)該作為你的基礎(chǔ))。然而對于完完全全的門外漢的來說,可能C和C++都有點困難,那么你也可以從Python開始學,這種語言被大家廣泛認為是適合初學者的。
此外,每一種語言都要學習至少一年。要熟悉編程范式,尤其是面向過程及面向?qū)ο筮@兩種;要廣泛閱讀,多用編譯器及IDE(網(wǎng)上有許多免費的)練習編程。
掌握一種語言后,先不要急著運用,而要去多買些數(shù)據(jù)結(jié)構(gòu)方面的書來看,學習搜索、分類、二叉樹及鏈表創(chuàng)建等概念。因為無論你是要制作游戲還是開發(fā)軟件,數(shù)據(jù)結(jié)構(gòu)都是必須要考慮的。
隨后,你就可以開始學習更加高難度的語言,如Java。對于進階學習者來說,可能還需要學習分而治之(Devide-and-conquer)、貪婪算法(Greedy Method)及回溯(Backtracking)等計算機算法,這又要花上至少一年的時間。
許多人都由于這樣那樣的原因而對數(shù)學頗不感冒,而作為一名優(yōu)秀的程序員,卻要整天與一籮筐的數(shù)學問題打交道。正如你所見,學編程真的是說起來容易做起來難,而它的難并不在于你對一種語言的了解程度,而在于這種語言牽扯到的數(shù)學問題。編程中的大多數(shù)問題都能在數(shù)學模型(如斐波那契數(shù)列、弗洛伊德算法、 傅立葉級數(shù)等等)中找到端倪,更不用說數(shù)學公式在解決編程問題中的廣泛應(yīng)用了。所以,現(xiàn)在開始,去學習各種公式及其特性吧,還要仔細鉆研算術(shù)及微積分,因 為不懂數(shù)學,就好比巧婦難為無米之炊。
記住,羅馬建成非一日之功,所以不要在短時間里給自己填壓太多知識。學習編程語言并不容易,因為這是一門需要時常調(diào)用邏輯思維的知識。你要做的,就 是理解程序背后的邏輯,然后不斷練習,直到熟能生巧為止。如果你只是死記硬背一些程序,那么你就錯過了學習過程中的樂趣,而且一些概念你也未必真的理解。 所以,學習編程需要不斷地挑戰(zhàn)自己,但也不要操之過急。
有時,即使是卓有成就的程序員也會被簡單的小問題難住,所以,遇到問題時,一定要讓自己放松下來。找張草稿紙,想想有什么現(xiàn)成的公式可用,或者自己 想一個公式出來。你看,這就是你為什么要學習數(shù)據(jù)結(jié)構(gòu)和數(shù)學。在成為熟練的程序員以前,一個人往往需要花費大把的時間來構(gòu)思用于解決特定問題的程序。這一 過程中,你可以去Project Euler或者Codecademy這樣的網(wǎng)站上看看,上面有簡單的編程作業(yè)及教程,可以用以練習并提高技能。
如果你在編程過程中經(jīng)常粗心犯錯,那么整個過程就會變成一場曠日持久的折磨,然而一旦問題解決,所有的沮喪都會煙消云散。在學習各種算法(傅立葉級 數(shù)、向量、邊界問題、線性代數(shù)、矩陣)的同時,也要注意休息。在解決特別復雜的問題時,要按時放松大腦,讓困擾在心頭的難題暫時轉(zhuǎn)移到潛意識中。另外要有 合理的工作計劃,當你編程編到倦怠的時候,就可以小憩一會兒,或者出去散一會兒步,但是永遠不要說放棄。
學到這個階段,你就可以試著去教教別人,并且向別人展示你制作的應(yīng)用。如果你認識比你更厲害的人,就要與他分享你的想法和問題,這樣會使你積累更多的經(jīng)驗;你也可以模仿諸如文本編輯器、windows軟件等專業(yè)軟件來進行自主開發(fā);積極參加相關(guān)競賽來挑戰(zhàn)自我。
懂得一種編程語言是很贊的,但更贊的就是懂得多門語言,這不僅僅意味著你的“工具箱”里有了更多的“工具”,更是意味著你掌握了更多解決問題的方 法。因為不論你慣用哪種語言,懂得其他語言總是能使你更好地了解常見的抽象概念及問題。所以,有條件的情況下,盡量多學幾種語言,最好是學習兩三種具有不 同設(shè)計原理的語言,如Lisp、Java及Perl。但是每一種都要用心學。
許多高水平的程序員閱讀量也十分驚人,他們也往往會在輸入第一行代碼前深思熟慮一番。所以,你一定要多閱讀、多思考。每周都要檢查一次自己的作品 (平時要養(yǎng)成保存代碼的習慣,這樣日后才能復查、反思);還要多買編程方面的好書。購買的書必須是最值得一看的,而并非是最暢銷的。永遠不要盲目地追隨某 一種資源,因為那樣只會讓你的眼界變得狹隘。一旦你掌握一種知識,就要仔細鉆研其用途及改進的可能。
如果你覺得自學效果不理想,就來咱黑馬程序員學習吧,黑馬程序員成就IT黑馬!一個入學不用給錢,畢業(yè)月薪10000后再給學費的程序員訓練營!(忍不住廣告了下,嘿嘿嘿~咱們黑馬就是這么給力?。?/span>
要養(yǎng)成用編程解決問題的習慣,如果你能自己發(fā)現(xiàn)生活中需要解決的問題的話最好,如果不能,就可以去看看以下這些網(wǎng)站:
TopCoder (http://topcoder.com/tc)- 這是美國著名的編程競賽網(wǎng)站,能夠極大地增長算法方面的知識。
Codeforces(http://codeforces.com/) - 另一種編程競賽網(wǎng)站,這里舉行競賽的頻率要略高于TopCoder。
Project Euler (http://projecteuler.net/)- 該網(wǎng)站上有許多涉及的編程問題。
CodeAbbey (http://codeabbey.com/)- 該網(wǎng)站上有許多初學者經(jīng)常會遇到的問題,其難度低于上述所有網(wǎng)站。
小提示
對于大多數(shù)人來說,編寫自己感興趣或者能夠真正投入使用的程序要比照著教科書上的案列來做有趣得多。那么,你不妨利用搜索引擎來搜尋自己感興趣的項目。
學會利用參考材料。即使無法記住所有的知識也不用覺得難為情,真正重要的是你知道去哪里找參考資料。
編程之前可以先打打草稿來構(gòu)思可能的解決方法,然后去問問別人的意見。
教學相長。因為在教別人編程的同時,你不僅會對既有的知識更加熟悉,也會幫助你從其他的角度來看待問題。
光看教程是不足以把任何一門編程語言學到家的。所以,你要盡量去找些志同道合的人,然后互相學習。多多瀏覽并參與討論這個小團體內(nèi)其他人發(fā)表的意見,這樣你才能學習更多的技能。
如果你對游戲編程感興趣,就要尤其用心學Python、C++以及Java。在這三者中,C++是最強大的一個,Python最簡單,而Java制作的游戲則最適合在不用改動的情況下在Windows、Mac OS及Linux系統(tǒng)上運行。
學習新知識的時候,親手實踐、做出改動、預測結(jié)果這一過程是非常重要的,因為這樣你才能把一個概念吃透。
多和其他程序員交流,多看其他人寫的程序。這比看任何書、上任何課程都有用。
致力于計算機語言標準化。你可以關(guān)注C++標準委員會(ANSI C++ committee),也可以在自己的小團體中把2格縮進還是4格縮進統(tǒng)一一下。不管怎樣,通過這些實踐,你都能對其他人在編程方面的偏好及其原因有更深的理解。
多學最常用的及行業(yè)內(nèi)規(guī)范的算法。
多學著用Java解決問題。
向免費軟件學習。多研究免費軟件的源代碼,因為如果你能利用現(xiàn)成的代碼,又何必費盡心思去重寫呢?只不過抄下來的時候要確保自己真正理解。
如果僅僅是用于在Windows上執(zhí)行簡單任務(wù)的程序,就可以用C#(類似Java)或Visual Basic來做;如果是其他平臺,那么比較常用的就是Perl、Python、bash(或其他shell語言)。
你可以用編程來解決模擬真實情景中的問題。
圖文|節(jié)選網(wǎng)絡(luò)
THANK YOU
覺得有用就分享給朋友圈的好友吧!
長按,識別二維碼,可愛的黑妞在等你
喜歡玩微博的朋友 黑妞約你來
@黑馬程序員訓練營
(本文系作者個人觀點,不代表一點資訊的觀點和立場)