初學(xué)者學(xué)習(xí)程序的方法有哪些
初學(xué)者學(xué)習(xí)程序的方法有哪些
在這個(gè)信息爆炸的時(shí)代,人們已然被大量、快速并且簡(jiǎn)短的信息所包圍。因很多人紛紛加入程序編程這個(gè)大家庭,那么初學(xué)者學(xué)習(xí)程序的方法有哪些?以下是學(xué)習(xí)啦小編分享給大家的初學(xué)者學(xué)習(xí)程序的方法的資料,希望可以幫到你!
初學(xué)者學(xué)習(xí)程序的方法
一是不要為了學(xué)習(xí)一門(mén)語(yǔ)言而學(xué)習(xí)。至少你知道自己在不遠(yuǎn)的將來(lái)有很大可能性會(huì)用再去學(xué)。因?yàn)閷W(xué)了一門(mén)語(yǔ)言而不去實(shí)踐,除了對(duì)語(yǔ)言特性能有些了解,其實(shí)不會(huì)有什么用。因?yàn)楹芏鄸|西肯定會(huì)忘掉。這有的時(shí)候和一門(mén)說(shuō)話的語(yǔ)言一樣。大學(xué)的時(shí)候覺(jué)得好玩學(xué)了日語(yǔ)和德語(yǔ),然而從來(lái)沒(méi)有真正的應(yīng)用場(chǎng)景,所以都忘的差不多了。都不好意思跟別人說(shuō)我學(xué)過(guò)。不過(guò)以后需要用的時(shí)候可能學(xué)起來(lái)還是比從頭開(kāi)始快些吧。
二是不同語(yǔ)言別人口中的學(xué)習(xí)的難度和你自己學(xué)起來(lái)覺(jué)得的難度會(huì)很不一樣。原因就在于你已經(jīng)熟悉掌握的語(yǔ)言其實(shí)是你的底子。比如一個(gè)已經(jīng)熟悉 OO 編程的人,再學(xué)另一門(mén) OO 語(yǔ)言就會(huì)相對(duì)輕松;一個(gè)已經(jīng)熟悉函數(shù)式編程的人,再學(xué)習(xí)另一門(mén)函數(shù)式語(yǔ)言也會(huì)比從沒(méi)接觸過(guò)的人容易的多。
但這僅限于相對(duì)輕松。每門(mén)語(yǔ)言都還是有很多區(qū)別于同類語(yǔ)言的特性。還有很多語(yǔ)言,是綜合了多個(gè)類型語(yǔ)言的特性,再做了不同的權(quán)衡。即使是看似語(yǔ)法很相近的語(yǔ)言,可能實(shí)際使用起來(lái)卻又有很大的區(qū)別。一個(gè)眾而周知的例子就是 C++ 和 Java。二者都是典型的 OO 語(yǔ)言,然而使用起來(lái)很多思維方式卻是有著極大的差異。因此,學(xué)習(xí)一門(mén)語(yǔ)言很忌諱膚淺的覺(jué)得 “這個(gè)和我知道的 X 語(yǔ)言差不多”,然后想當(dāng)然的在使用中套用一些 X 語(yǔ)言的思維。
三是因?yàn)楣ぷ鲿r(shí)候?qū)W習(xí)語(yǔ)言通常都是邊用邊學(xué)。一方面,這比在學(xué)校時(shí)候能夠?qū)W的更快,因?yàn)槟阌惺褂玫膱?chǎng)景,可以不斷練習(xí)。而且周圍很多高手可以討論,還有別人的代碼可以參考,更容易積累實(shí)戰(zhàn)經(jīng)驗(yàn)。而另一方面,直接上手沒(méi)有系統(tǒng)學(xué)習(xí)很容易想當(dāng)然,很容易以偏概全。這又必須在工作以外自己主動(dòng)學(xué)習(xí)理論知識(shí)來(lái)彌補(bǔ)。
初學(xué)者學(xué)習(xí)程序的建議
1. 通讀全書(shū)
不徹底地讀完解釋性的材料是一個(gè)常見(jiàn)的誤區(qū)。跳過(guò)代碼運(yùn)行原理的解釋而直接去看代碼示例會(huì)將你領(lǐng)向失敗。之所以你要買一本計(jì)算機(jī)書(shū)籍,就是為了獲取代碼示例,以及它附帶的解釋。
計(jì)算機(jī)書(shū)通常包含了你應(yīng)該邊讀邊標(biāo)記的一些額外的信息,例如一些需要花大量時(shí)間去研究的參考資料。你可以使用這些參考資料幫助你去尋找不同的代碼實(shí)現(xiàn)方式或不同的測(cè)試代碼示例的輸入方式。
當(dāng)然了,單單一本書(shū)并不能教會(huì)你在當(dāng)今復(fù)雜的編程環(huán)境下的所有東西。因此,許多計(jì)算機(jī)書(shū)籍還細(xì)心地引用了組織好的在線資源,里面也許包含了許多你所查找的內(nèi)容的準(zhǔn)確信息。
2. 集中精力
確保你在讀書(shū)時(shí)能保持注意力。當(dāng)你發(fā)現(xiàn)你突然在想一次釣魚(yú)之行或是電視上的球賽,就是你該放下書(shū)的時(shí)候。隨性地閱讀是不夠的,你需要專心致志或有一個(gè)練習(xí)的目標(biāo)。如果你需要回顧之前在你神游到釣魚(yú)之行時(shí)所閱讀的內(nèi)容確保你真正理解了,也別太在意。
3. 下載代碼
編程書(shū)通常附帶了可下載的源代碼。下載源代碼,載入編譯器中編譯它,然后看它實(shí)現(xiàn)了什么,這個(gè)過(guò)程非常重要。這些可以運(yùn)行的代碼對(duì)于我們理解編程技術(shù)至關(guān)重要。它們確保你可以看到一個(gè)沒(méi)有任何問(wèn)題(例如拼寫(xiě)錯(cuò)誤等等)的可工作的示例。
在你開(kāi)始理解代碼的運(yùn)行后,接下來(lái)你或許想要試著自己手寫(xiě)一下,以加強(qiáng)你對(duì)其原理的理解。拼寫(xiě)錯(cuò)誤是新手程序員最主要的挫敗感的來(lái)源之一,所以下載示例的源代碼作為你的參考吧,這樣你可以更快地找到自己的錯(cuò)誤并糾正它們。除了手寫(xiě)代碼,也要將其用鍵盤(pán)打出來(lái)。
4. 使用debugger進(jìn)行單步調(diào)試
取決于你想學(xué)的語(yǔ)言以及你使用 Integrated Development Environment (IDE)的程度,你可能對(duì)于當(dāng)你跑一個(gè)應(yīng)用時(shí)確切發(fā)生了什么沒(méi)有一個(gè)清晰的概念。很多現(xiàn)代編程語(yǔ)言的目標(biāo)是任務(wù)自動(dòng)化。當(dāng)你了解程序是如何運(yùn)行后,這一特性還是很好的,但它同樣可能會(huì)成為你學(xué)習(xí)路上的一道坎。
在例程中單步調(diào)試幫助你理解細(xì)節(jié)。隨著你一步一步向前運(yùn)行,你可以觀察變量的值,考察它們?nèi)绾巫兓?,以及確定它們?yōu)楹我阅欠N方式變化。使用debugger的功能去改變變量的值,你可以看到這些變化是怎樣影響應(yīng)用的。 再看看應(yīng)用內(nèi)存,去了解它是怎么保存信息的,然后查看調(diào)用棧去準(zhǔn)確地了解一個(gè)調(diào)用是怎么完成的。總之,要在你單步調(diào)試時(shí),探索應(yīng)用中的所有可能的方面。
這種方法讓你可以探索其他的應(yīng)用開(kāi)發(fā)和設(shè)計(jì)之路。比如,在適當(dāng)?shù)沫h(huán)境下,你有時(shí)可以進(jìn)入文件庫(kù)中觀察它們是如何做關(guān)于應(yīng)用的工作的。在一些案例中,你可以探索字節(jié)碼或是反匯編應(yīng)用代碼去看底層如何運(yùn)作。
注意:由于有些程序是時(shí)間敏感的,用debugger做單步調(diào)試可能導(dǎo)致應(yīng)用不正常運(yùn)行。此外,你有可能需要在某些節(jié)點(diǎn)重啟應(yīng)用,因?yàn)榄h(huán)境將會(huì)崩潰,你將得不到你所要的結(jié)果。單步調(diào)試最適合用于短的代碼段。
5. 把玩并掌握代碼
到了這一步,你可能會(huì)覺(jué)得你已經(jīng)從這本書(shū)所給予的信息中提取出了全部。然而,你還是沒(méi)有把玩示例代碼并試著讓它以別的方式運(yùn)行。試驗(yàn)是學(xué)習(xí)的關(guān)鍵。將書(shū)本中的示例代碼試驗(yàn)一下,是提升你技能的好方法。當(dāng)你做了各種各樣的延伸時(shí),你應(yīng)該開(kāi)始理解代碼的變化如何在整體上影響應(yīng)用。這類知識(shí)無(wú)法通過(guò)其他方式學(xué)習(xí)——你需要通過(guò)試驗(yàn)去精準(zhǔn)地理解一門(mén)語(yǔ)言所提供的特性。
最后,你將開(kāi)始創(chuàng)造出與書(shū)中代碼不太一樣的應(yīng)用。這時(shí),你走到了一個(gè)新的階段。在這個(gè)階段中,你開(kāi)始自信地創(chuàng)建自己的應(yīng)用,并且真正地理解了它們是如何運(yùn)作的。
初學(xué)者學(xué)習(xí)程序的書(shū)籍推薦
基礎(chǔ)型:
《瘋狂java講義》,讀那本精粹版就行了,普通版的廢話太多了。至于為什么它會(huì)出現(xiàn)在這里,我要說(shuō)的是:學(xué)Android,一定得要java基礎(chǔ)非常扎實(shí)。
《瘋狂Android講義》這本書(shū)真的是經(jīng)典,只是這本書(shū)非常厚,里面也有很多廢話,需要仔細(xì)甄別,我入門(mén)就是看這本書(shū)學(xué)習(xí)的。
《第一行代碼》這本書(shū)是郭霖寫(xiě)的,聽(tīng)說(shuō)很適合入門(mén),不過(guò)我沒(méi)有看過(guò)。
橫向提高型:
所謂橫向,講求的是一個(gè)基本功,不僅Android,每個(gè)程序員應(yīng)該都知道的知識(shí)。
依舊是《瘋狂Android講義》,這本書(shū)真的是很贊,每讀一遍都會(huì)有不同的收獲。
《軟件秘籍——設(shè)計(jì)模式那點(diǎn)事》,當(dāng)你覺(jué)得一個(gè)人開(kāi)發(fā)一個(gè)APP沒(méi)有問(wèn)題了,但是閑下來(lái)又感覺(jué)到自己好像什么都不會(huì)的時(shí)候,你需要好好思考一下自己做過(guò)的項(xiàng)目了。
《大話設(shè)計(jì)模式》這本書(shū)我沒(méi)有讀過(guò),也是聽(tīng)說(shuō)的口碑很不錯(cuò)。不過(guò)設(shè)計(jì)模式這類的書(shū)讀一本就夠了,理論方面都是一樣的,最重要的是懂得運(yùn)用。
縱向深入型:
如果想縱向深入的去學(xué)習(xí)Android,下面這幾本書(shū)應(yīng)該會(huì)幫到你:
《Android 群英傳》我的同事徐宜生著作,是一本深入學(xué)習(xí)View自定義控件非常好的書(shū)。
《APP研發(fā)錄》作者包建強(qiáng),去哪兒技術(shù)總監(jiān)。書(shū)中的前三章能讓你對(duì)整個(gè)APP的架構(gòu)有更深的認(rèn)識(shí),第六章詳細(xì)講解了APP中各種莫名其妙崩潰的原因,第九章詳細(xì)分析了各種競(jìng)品產(chǎn)品的技術(shù)優(yōu)劣。
《Android開(kāi)發(fā)進(jìn)階》作者M(jìn)r.Simple,相信大家都很熟悉了。讀完這本書(shū)你會(huì)發(fā)現(xiàn)你是從0開(kāi)始又學(xué)了一遍Android,學(xué)到的卻又是以前從來(lái)沒(méi)有關(guān)注過(guò)的技術(shù)點(diǎn)。
猜你喜歡:
3.初學(xué)者如何從零開(kāi)始自學(xué)五子棋