從事嵌入式開發(fā)多年在初級(jí)入門階段也經(jīng)歷過這種階段,其實(shí)編程能力的培養(yǎng)過程有點(diǎn)類似于英語的學(xué)習(xí)過程,英語的學(xué)習(xí)經(jīng)歷的階段就是聽書讀寫,最后的階段就是去創(chuàng)作去寫了,在寫之前就要先學(xué)會(huì)去讀,先能夠看懂英文的文章然后去讀找感覺,其實(shí)在練習(xí)寫代碼之前是一樣的道理,能看懂代碼證明基礎(chǔ)的語法已經(jīng)學(xué)的差不多了,這個(gè)時(shí)候就需要閱讀代碼來不斷的增進(jìn)理解。
說到如何看懂代碼在自己初學(xué)編程的時(shí)候經(jīng)歷過這樣一件事,第一門編程語言選擇的C語言,當(dāng)時(shí)可以選擇的空間不大因?yàn)榇髮W(xué)第一門編程相關(guān)的語言都是C語言,用了幾個(gè)月的時(shí)間把常見的語法概念都走過幾遍源碼,中間也刻意復(fù)習(xí)了幾遍,最后得出的結(jié)論是C語言語法上不是很多,理論上講有關(guān)C語言的代碼都應(yīng)該能看懂,于是興致勃勃的從圖書館借了一本linux內(nèi)核解析的書籍,剛開始看的時(shí)候還是能夠看明白,結(jié)果看不到100頁精神上已經(jīng)接近崩潰了,根本就看不下去了,只是掌握了基本的語法和具體的代碼實(shí)踐相差還是太遠(yuǎn),于是又老老實(shí)實(shí)研究代碼去了,學(xué)完基本的語法第一件事情就是要能看懂優(yōu)秀的代碼,不斷的研究學(xué)習(xí)實(shí)在不懂的可以在網(wǎng)上找相關(guān)的資料,當(dāng)成專題來學(xué)習(xí)這個(gè)階段承接了從初學(xué)到接觸項(xiàng)目中過度的一段,用好了能極大提升自己的思維邏輯判斷能力,也是學(xué)以致用的關(guān)鍵階段。
編程的學(xué)習(xí)雖然非常重視實(shí)踐,但前提是在理解的基礎(chǔ)上去理解,只是沒有目的的實(shí)踐效果也不是最好的,實(shí)踐的時(shí)機(jī)是理論上東西已經(jīng)掌握但是不知道如何使用的時(shí)候就是到了該實(shí)踐的時(shí)候了源碼,有點(diǎn)理論但是寫不出代碼來,最好的方式就是模仿代碼,先看懂然后嘗試去仿照,仿照的過程也是自我培養(yǎng)信心的過程,仿照的很成功了就開始展示自我的創(chuàng)造力的時(shí)候了,對(duì)程序員來講開始是模仿語法知識(shí)積累幾年之后就是編程思維的成熟階段,考慮的是構(gòu)建新的模塊實(shí)現(xiàn)方式,再次升華就是框架層面的學(xué)習(xí)過程了,編程的學(xué)習(xí)需要日積月累,絕非一日之功。
能看懂代碼但寫不出代碼如何應(yīng)對(duì)?
仿照寫能看懂的代碼。第一遍的時(shí)候不要直接照抄而是用自己的理解去寫代碼,實(shí)現(xiàn)的代碼可能和優(yōu)秀的代碼差距非常大,但不要著急就重新回過頭來看代碼,這時(shí)候?qū)Υa的認(rèn)知層面已經(jīng)不是只是簡單看這么簡單的事情。這時(shí)候再次自己去實(shí)現(xiàn)代碼,這個(gè)階段應(yīng)該是信心的培養(yǎng)階段,而且寫出的代碼在思路上已經(jīng)接近優(yōu)秀的代碼,如果覺得有必要可以繼續(xù)第三次甚至更多次的反復(fù)模仿,這個(gè)過程是建立編程思維的重要階段,心中會(huì)有很多個(gè)原來如此,如果到了這種境界距離獨(dú)立寫出代碼已經(jīng)不遠(yuǎn)了,關(guān)鍵還是要堅(jiān)持到底。
選擇稍微簡單些案例作為突破口。很多人直接拿著底層的核心代碼框架在學(xué)習(xí),需要增加的外圍點(diǎn)太多了,不容易短時(shí)間內(nèi)突破,學(xué)習(xí)編程的過程是不斷培養(yǎng)自己信心的階段,全部拿著框架代碼在研究很容易讓自己失去信心,從最簡單基礎(chǔ)的代碼開始去練習(xí),很多時(shí)候在編程找不到感覺的時(shí)候就去看基本的語法知識(shí)或者看基礎(chǔ)的代碼,這樣有助于提升自己的編程內(nèi)功,自信來源于基礎(chǔ),再復(fù)雜的代碼也是從基礎(chǔ)延伸過來的,基礎(chǔ)掌握多了自然就能寫復(fù)雜的代碼了,循序漸進(jìn),越是著急越是寫不出代碼,編程的自信也是自己慢慢培養(yǎng)起來的,誰都不是天生就能寫代碼,就有信心寫出優(yōu)秀的代碼,希望能幫到你。