- 相關(guān)推薦
初學(xué)者學(xué)習(xí)編程的方法
作為編程學(xué)習(xí)的初學(xué)者,學(xué)習(xí)一門弱類型的編程語言,不要先學(xué)習(xí)那種具有強(qiáng)制類型的、面向?qū)ο蟮木幊陶Z言。你可能會(huì)很想知道在學(xué)習(xí)編程的過程中如何把握正確的學(xué)習(xí)方向?
初學(xué)者如何學(xué)習(xí)編程
一旦你發(fā)現(xiàn)一個(gè)學(xué)習(xí)工具,它采用自上而下的方法,那么什么是最好的學(xué)習(xí)方法?我對這有一個(gè)具有爭議性的觀點(diǎn):我認(rèn)為盡可能快地記住基礎(chǔ)知識(shí)對初學(xué)者而言是絕對有必要的。
當(dāng)成為更高級的學(xué)習(xí)者,記憶很快成為一個(gè)被丟棄了的方式。
你可能聽到過別人輕視地說(“不要死記,要內(nèi)部消化”,“我在消化記住的東西”,“我討厭測試,我不得不回想起記憶中的東西”)。
另一方面,當(dāng)你還是小學(xué)的時(shí)候,你被迫花時(shí)間來背乘法口訣表。
為什么要背呢?因?yàn)槟愕幕A(chǔ)乘法口訣表可以是構(gòu)建更復(fù)雜的乘除法的基礎(chǔ)。
這和你記憶編程語言的語法并沒有什么不同:如果你寫 if 或 for 循環(huán)越自然,那么你寫出更復(fù)雜的語句塊也更容易。
我也承認(rèn)記憶并不總是學(xué)習(xí)所有東西的最好方法,但是我相信對于編程初學(xué)者而言,是實(shí)踐編程所絕對必須的。
為什么呢?因?yàn)樗梢詼p少阻力,如果有什么東西會(huì)帶給初學(xué)者挫折,那就是阻力。
考慮到這一點(diǎn),這里有一些具體的建議給那些正在學(xué)習(xí)或準(zhǔn)備學(xué)習(xí) Web 應(yīng)用開發(fā)的初學(xué)者。
實(shí)際上,說得更遠(yuǎn)點(diǎn)更抽象點(diǎn),這就是一個(gè)如何開始學(xué)習(xí)軟件開發(fā)的一個(gè)好計(jì)劃。
很顯然,這不是一個(gè)適合所有人的計(jì)劃,但是我認(rèn)為它一定適合大部分初學(xué)者。
初學(xué)者學(xué)習(xí)編程的方法介紹
1. 學(xué)習(xí)一門弱類型的編程語言,不要先學(xué)習(xí)那種具有強(qiáng)制類型的、面向?qū)ο蟮木幊陶Z言。
嚴(yán)格而言,如果有人對你提到 class (類)或繼承,那么你就應(yīng)該去選擇其它的途徑了。
雖然我認(rèn)同類和繼承相關(guān)技術(shù)是軟件開發(fā)中必不可少的,但是我強(qiáng)烈認(rèn)為它們不應(yīng)該是初學(xué)者的選擇。
鑒于此,我認(rèn)為 JavaScript 是初學(xué)者而言最理想的編程語言,因?yàn)椋?/p>
(a) JS 解釋器在絕大部分瀏覽器上都可用
(b)它的面向?qū)ο筇匦圆⒉皇菑?qiáng)制型的
(c)在工業(yè)界被廣泛使用(是的,即使是 web 之外的客戶端,即使是現(xiàn)在擔(dān)任設(shè)備工程師的我也做嵌入 JavaScript 的工作)。
說得更具體點(diǎn),我建議你學(xué)習(xí)用 JavaScript 如何去做下面的事,特別是以這個(gè)順序:
1. 學(xué)習(xí)如何打印出一些東西,學(xué)習(xí)如何聲明和定義變量,學(xué)習(xí)基本算術(shù)運(yùn)算操作(包括余數(shù)操作),學(xué)習(xí)循環(huán)(特別是 for 循環(huán)),學(xué)習(xí)把抽象重復(fù)的代碼寫成函數(shù),學(xué)習(xí)字符串和用循環(huán)操作字符串,學(xué)習(xí)數(shù)組和數(shù)組的循環(huán)方法(特別是 foreach 循環(huán)),學(xué)習(xí)創(chuàng)建和操作對象數(shù)據(jù)集。
記住上面的這些并每天寫一個(gè)程序來實(shí)踐,直到這些都輕而易舉地想起來。
2. 學(xué)習(xí) Git 的基本操作,學(xué)習(xí)通過命令行使用 Git。
這意味著要先學(xué)習(xí)四個(gè) Unix/Linux 命令(ls,pwd,mkdir,cd)。
當(dāng)學(xué)習(xí)了這幾個(gè)命令,也就學(xué)會(huì)了以“樹型”或?qū)哟谓Y(jié)構(gòu)的呈現(xiàn)方式查詢文件系統(tǒng)。
一旦你掌握了上面的幾個(gè) Unix/Linux 命令,并會(huì)從命令行進(jìn)入文件系統(tǒng),你就應(yīng)該學(xué)幾個(gè)基礎(chǔ)的 Git 命令。
主要是 git init, git status, git add and git commit。
一旦你掌握了 Git 的基本操作,在學(xué)習(xí)下面的技術(shù)時(shí)將其集成到你的工作流中。
3. 學(xué)習(xí) HTML 基礎(chǔ),能夠憑記憶創(chuàng)建簡單的 HTML 頁面。
學(xué)習(xí) DOM 和如何理解 HTML 作為指定的分層樹結(jié)構(gòu)。
花點(diǎn)時(shí)間來思考它如何關(guān)系到你在前面步驟中學(xué)到的分層文件系統(tǒng)。
4. 學(xué)習(xí) CSS 選擇器,了解它如何讓你選定 DOM 的某些部分。
了解 DOM 元素之間的關(guān)系。
了解一個(gè) DOM 元素作為另一個(gè) DOM 元素的父元素或子元素的含義。
理解這與后代和祖先之間的關(guān)系有什么不同。
記住選擇器可以讓你通過這些關(guān)系來選定某些元素。
5. 學(xué)習(xí) jQuery,并主要專注于 DOM 的操作能力。
學(xué)會(huì)用 jQuery 對 DOM 插入或刪除元素,實(shí)踐可視化如何影響用 DOM 定義的樹型結(jié)構(gòu)。
6. 實(shí)踐 jQuery 中的事件處理和 DOM 操作(比如,實(shí)踐操作 DOM 當(dāng)用戶點(diǎn)擊某個(gè)東西,或在指定的時(shí)間間隔)。
7. 多練習(xí) JavaScript 對象,并把它們當(dāng)作可變的聚合器。
學(xué)習(xí)如何用 JavaScript 來表示更復(fù)雜的數(shù)據(jù)而不是基本數(shù)據(jù)類型。
學(xué)會(huì)應(yīng)用并操作這些數(shù)據(jù)結(jié)構(gòu)。
理解并定義 JSON、理解它如何與 JavaScript 對象相關(guān)聯(lián)。
8. 學(xué)會(huì)使用 jQuery 的 getJSON 函數(shù)從文件中獲取數(shù)據(jù)到 JavaScript 對象中。
使用類似的技術(shù),用一個(gè)簡單的 JSONP API 去練習(xí)用 AJAX 拉取數(shù)據(jù)。
練習(xí)向 DOM 插入和刪除這個(gè)數(shù)據(jù)。
在這個(gè)階段,做一個(gè)簡單的幻燈片來循環(huán)播放 Flickr 圖片,這將是一個(gè)令人難以置信的項(xiàng)目,將真正考驗(yàn)?zāi)愕哪芰,使用之前學(xué)過的基礎(chǔ)技術(shù)來實(shí)現(xiàn)它。
如果你做了這一步,那么你已經(jīng)掌握了大量必備的編程和計(jì)算機(jī)科學(xué)基本概念。
具體來說,你掌握了計(jì)算機(jī)程序的最重要元素(如果 if-else 語句,循環(huán),變量,對象,函數(shù),數(shù)組等),你已經(jīng)學(xué)會(huì)了鏈?zhǔn)交驑湫偷臄?shù)據(jù)結(jié)構(gòu)。
這時(shí),無疑你已經(jīng)準(zhǔn)備好轉(zhuǎn)移到更高級的主題。
【初學(xué)者學(xué)習(xí)編程的方法】相關(guān)文章:
學(xué)習(xí)新的編程語言的方法10-05
對初學(xué)者有效的外語學(xué)習(xí)方法01-14
初學(xué)者學(xué)習(xí)應(yīng)用記憶應(yīng)該從學(xué)習(xí)方法開始10-06
初學(xué)者學(xué)好鋼琴的方法10-01
初學(xué)者寫好草書的方法09-30
編程學(xué)習(xí)心得06-26
數(shù)控車橢圓編程與加工方法10-05
初學(xué)者提升舞蹈能力的方法10-01
初學(xué)者鋼琴慢練方法09-06