如何快速有效的學(xué)習(xí)編寫(xiě)程序
IT很火爆, 編程很熱門(mén),想要學(xué)好編程不能少了學(xué)習(xí)方法,那么如何快速有效的學(xué)習(xí)編寫(xiě)程序?以下是學(xué)習(xí)啦小編分享給大家的有效的學(xué)習(xí)編寫(xiě)程序的方法,希望可以幫到你!
有效的學(xué)習(xí)編寫(xiě)程序的方法
1. 將其與類(lèi)似的語(yǔ)言進(jìn)行比較。當(dāng)你首次觀看有關(guān)該語(yǔ)言的第一個(gè)教程或閱讀代碼時(shí),請(qǐng)嘗試猜測(cè)該語(yǔ)言的每個(gè)部分將會(huì)做什么,并檢查你的判斷是否正確。
如果記筆記可以幫助你整合信息,請(qǐng)拿起一張紙并記下三個(gè)列表:
看起來(lái)很熟悉的東西,并且做了預(yù)期中的事
看起來(lái)很熟悉的東西,但做了意料之外的事
看起來(lái)完全是新的東西
例如,如果我用來(lái)自 Python 和 C 背景的 Rust 代碼進(jìn)行此練習(xí),那么在第一個(gè)列表中,我會(huì)放上用于表示范圍的花括號(hào),!(看起來(lái)像是布爾類(lèi)型的 非,但實(shí)際上是 Rust 中的宏定義)則放在第二個(gè)列表,類(lèi)型簽名語(yǔ)法(type signature syntax)放在第三個(gè)列表。
如果你保留著初始列表的副本,一旦你更熟練,可使用它通過(guò)語(yǔ)言反思你的進(jìn)展,并提醒自己在嘗試向其他人講授該語(yǔ)言時(shí),有哪些看起來(lái)不熟悉的概念。
2. 閱讀語(yǔ)言的官方文檔。如果希望在使用之前吸收大量信息,從閱讀語(yǔ)言的參考資料中可能會(huì)受益。不用擔(dān)心它們會(huì)對(duì)你催眠,參考文獻(xiàn)通常是用于查找使用,而不是用來(lái)記憶。
3. 使用互聯(lián)網(wǎng)搜索。搜索網(wǎng)絡(luò)是一個(gè)很好的方式,可提供有關(guān)特定錯(cuò)誤和一般最佳做法的信息。當(dāng)收到錯(cuò)誤信息時(shí),應(yīng)搜索信息中看起來(lái)是錯(cuò)誤的獨(dú)一無(wú)二的部分,但不是代碼唯一的部分。例如,如果錯(cuò)誤提示 "Error on line 53: Invalid argument exception(錯(cuò)誤在第 53 行:無(wú)效的參數(shù)異常)",以語(yǔ)言名稱(chēng)和字符串 “Invalid argument exception” 這樣的組合搜索,以找到最佳的結(jié)果。記住要將錯(cuò)誤信息中的所有引用內(nèi)容都包含在內(nèi)。
還可以在網(wǎng)絡(luò)中搜索有關(guān)解決語(yǔ)言中特定問(wèn)題的最佳做法的博文。評(píng)估搜索結(jié)果中顯示的博客帖子的質(zhì)量和決定認(rèn)真采用他們的建議時(shí),請(qǐng)查看作者的公共代碼組合以及發(fā)布日期。
4. 與社區(qū)接觸。雖然博客和新聞文章具有大量有用的信息,但是你嘗試編寫(xiě)的特定代碼片段總會(huì)有些微妙之處。不要害怕在郵件列表中發(fā)帖,或加入 IRC 和 Slack 頻道以尋求幫助。
要提出有幫助的回復(fù)的問(wèn)題,請(qǐng)確保在正確的地方提問(wèn)。許多語(yǔ)言都有 “初學(xué)者” 郵件列表或聊天頻道,專(zhuān)門(mén)針對(duì)可能會(huì)頻繁詢(xún)問(wèn)的問(wèn)題而建立。當(dāng)提出問(wèn)題時(shí),請(qǐng)務(wù)必先總結(jié)準(zhǔn)備做什么、已做過(guò)的東西以及發(fā)生的情況。盡量為專(zhuān)家提供足夠的上下文來(lái)了解問(wèn)題,但不需要無(wú)關(guān)緊要的細(xì)節(jié)。提出問(wèn)題后,請(qǐng)務(wù)必堅(jiān)持一段時(shí)間來(lái)聽(tīng)取建議或會(huì)回答你的疑問(wèn)可能產(chǎn)生的后續(xù)問(wèn)題。
5. 編寫(xiě)玩具程序。一次練習(xí)一個(gè)新的概念,很少有任務(wù)可打敗只使用某個(gè)概念的玩具程序。你可以將重點(diǎn)放在盡可能讓你的代碼清潔和慣用性上。如果你將解決 Project Euler 或 Rosetta Code puzzle 作為玩具程序,則可以將你的解決方案與其他使用相同語(yǔ)言編寫(xiě)的解決方案進(jìn)行比較。
6. 使用該語(yǔ)言編寫(xiě) “生產(chǎn)就緒(Production-Ready)” 的代碼。玩具程序是一個(gè)很好的第一步,但在更逼真的的環(huán)境中使用一門(mén)語(yǔ)言可幫助探索其現(xiàn)實(shí)使用中的優(yōu)勢(shì)和挑戰(zhàn)??紤]將一個(gè)熟悉的、相對(duì)較小的、經(jīng)過(guò)良好測(cè)試的程序移植到新的語(yǔ)言,以探索其在現(xiàn)實(shí)使用的應(yīng)用。
7. 閱讀一本關(guān)于這門(mén)語(yǔ)言的書(shū)籍。如果有好幾本有用的書(shū),比較它們的評(píng)論,并考慮哪位作者的背景和自己的最相似?,F(xiàn)在有很多電子書(shū)可以免費(fèi)在線(xiàn)閱讀。
在購(gòu)買(mǎi)有關(guān)該語(yǔ)言的書(shū)籍之前,請(qǐng)先查看書(shū)籍出版的日期以及其示例所涵蓋的語(yǔ)言版本。如果使用的是較舊的書(shū)籍,請(qǐng)務(wù)必使用其所使用的語(yǔ)言版本的示例。還要在網(wǎng)上調(diào)查一下,以了解自出版以來(lái)語(yǔ)言發(fā)生了怎樣的變化。
8. 觀看講座和課程。如果你學(xué)習(xí)的語(yǔ)言在在線(xiàn)課堂中有講授,那么視頻應(yīng)該是公開(kāi)的。除了學(xué)術(shù)講座之外,還可以考慮尋找錄制講座、會(huì)議談話(huà)和有關(guān)該語(yǔ)言的博客。當(dāng)在看電視時(shí),談?wù)勀愕男抡Z(yǔ)言是一個(gè)將學(xué)習(xí)融入日常生活很好的方式。
9. 閱讀示例代碼。大多數(shù)關(guān)于編程語(yǔ)言的書(shū)籍都會(huì)包含代碼片段。你也可以在博客和 Rosetta Code 上找到示例代碼。運(yùn)行示例代碼、修改它們,并嘗試預(yù)測(cè)修改后會(huì)發(fā)生那些情況。
10. 閱讀生產(chǎn)代碼。查找有關(guān)該語(yǔ)言所有類(lèi)型和大小的項(xiàng)目的一種方法是在 GitHub 上搜索它。按最受歡迎或最具影響力進(jìn)行排序,你的熱門(mén)搜索將包括最受歡迎的開(kāi)源工具。如果想要了解開(kāi)源項(xiàng)目的設(shè)計(jì),可通過(guò)郵件列表或 IRC 來(lái)與社區(qū)進(jìn)行互動(dòng)。你甚至可能會(huì)發(fā)現(xiàn)一些 bug。
11. 尋找好的工具。當(dāng)使用新的語(yǔ)言時(shí),可向其更有經(jīng)驗(yàn)的用戶(hù)請(qǐng)教,詢(xún)問(wèn)他們的開(kāi)發(fā)環(huán)境。你可能會(huì)發(fā)現(xiàn),一個(gè)特定的文本編輯器或 IDE 對(duì)于新語(yǔ)言的支持比你習(xí)慣通常使用的要好。調(diào)查在新語(yǔ)言生態(tài)系統(tǒng)中管理依賴(lài)關(guān)系、格式化、模糊化和單元測(cè)試代碼的選項(xiàng)。
12. 保持你的熱情。入門(mén)新的語(yǔ)言很容易,但變得真正精通它通常是一個(gè)需要多年的旅程。慶祝一路上你的成功,并與追隨你腳步的學(xué)習(xí)者分享你所學(xué)到的知識(shí),保持著學(xué)習(xí)編程的興趣。
有效的學(xué)習(xí)編寫(xiě)程序的建議
學(xué)練相結(jié)合:
在學(xué)習(xí)新知識(shí)的同時(shí),充分利用身邊的電腦,做到邊學(xué)新知識(shí)邊上機(jī)操作練習(xí),這樣對(duì)于加強(qiáng)知識(shí)的穩(wěn)固具有十分重要的作用。
深入學(xué)習(xí)細(xì)節(jié)過(guò)程中,對(duì)于電腦編程的學(xué)習(xí),即要從整體把握,又要深入細(xì)節(jié)當(dāng)中,了解并掌握知識(shí)的核心理念。
努力學(xué)好一門(mén)計(jì)算機(jī)編程語(yǔ)言。根據(jù)電腦編程語(yǔ)言的相通性,當(dāng)充分掌握一門(mén)計(jì)算機(jī)編輯語(yǔ)言后,對(duì)于其它語(yǔ)言的掌握時(shí)間將明顯減少。
最好先從低層(級(jí))語(yǔ)言學(xué)起,這樣就可以有效的掌握計(jì)算機(jī)的硬件低層知識(shí),從而為更高級(jí)語(yǔ)言的學(xué)習(xí)打下良好的基礎(chǔ)。
嘗試自己編寫(xiě)若干個(gè)功能模塊,從而加強(qiáng)對(duì)計(jì)算機(jī)編程語(yǔ)言基礎(chǔ)能力的加強(qiáng)以及應(yīng)用,并為新知識(shí)的學(xué)習(xí)奠定基礎(chǔ)。
向別人學(xué)習(xí),多看看別人寫(xiě)的代碼,了解應(yīng)用計(jì)算機(jī)編程解決問(wèn)題的通用方法,從中提煉解決問(wèn)題的通用方法。
有效的學(xué)習(xí)編寫(xiě)程序的注意事項(xiàng)
1、搖擺不定的老大
我是老大, 最早的時(shí)候是Java愛(ài)好者, 因?yàn)榇蠹叶颊f(shuō)Java 應(yīng)用面廣, 既能做Web, 又能做Android, 還可以開(kāi)發(fā)大數(shù)據(jù)應(yīng)用,就業(yè)需求量大, 學(xué)Java絕對(duì)沒(méi)錯(cuò), 于是就興沖沖的開(kāi)始了Java 之路。
Java 才開(kāi)了個(gè)頭, Java SE勉強(qiáng)看完, 我又在網(wǎng)上看到抨擊Java 的文章: 傻大笨粗,老氣橫秋, 人家Pyhton 一行頂你10行, 云計(jì)算,大數(shù)據(jù)樣樣在行, 非常適合做小白的“初戀”語(yǔ)言,轉(zhuǎn)眼一想, 還是投入Python 的懷抱吧。
Python 剛?cè)腴T(mén), 網(wǎng)上又熱炒Go語(yǔ)言, 說(shuō)是去年增長(zhǎng)最快的語(yǔ)言,是21世界的C語(yǔ)言, 還有個(gè)財(cái)大氣粗的親爹Google , 前途不可限量, 趕緊去學(xué)。
昨天半夜, 無(wú)意看到一篇介紹javascript 的文章, 說(shuō)javascript是前端之王, 那些前端框架又酷又炫, 比呆板的后端編程強(qiáng)太多了, 于是又動(dòng)了看javascript的心思。
就這么來(lái)來(lái)回回, 反反復(fù)復(fù), 我被網(wǎng)絡(luò)輿論帶著,游走在各大語(yǔ)言邊緣, 每個(gè)都學(xué)了皮毛, 了解了優(yōu)缺點(diǎn),拿來(lái)和人吹牛是足夠了, 但是沒(méi)有一個(gè)精通的, 這可怎么辦啊?
2、“小倉(cāng)鼠”老二
我排行老二, 人稱(chēng)“小倉(cāng)鼠”, 以集齊各種電子書(shū)/視頻為樂(lè)。 看到論壇,群里推薦書(shū)就兩眼放光,千辛萬(wàn)苦也要找個(gè)電子版下載下來(lái)。
計(jì)算機(jī)組成原理, 數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng), 網(wǎng)絡(luò),數(shù)據(jù)庫(kù), 每個(gè)主題都好幾本, 不帶重樣的。
進(jìn)階,高級(jí), 解密, 白話(huà),大話(huà),實(shí)戰(zhàn),Head Frist系列, 一個(gè)都不能少!
每當(dāng)我看到各培訓(xùn)機(jī)構(gòu)泄出來(lái)的教學(xué)視頻時(shí), 簡(jiǎn)直是是欣喜若狂,什么基礎(chǔ)班, 就業(yè)班,一頭扎進(jìn)xxx 。。。。 趕緊保存到自己的百度網(wǎng)盤(pán)里。
閑來(lái)無(wú)事, 欣賞下滿(mǎn)滿(mǎn)一硬盤(pán)的電子書(shū)和好幾個(gè)T的視頻, 我心滿(mǎn)意足,安全感極強(qiáng), 世界盡在掌握。
但我就是不去看, 不去學(xué), 原因很簡(jiǎn)單: 看電子書(shū)太累,還有就是工作太忙,哪有時(shí)間啊。
3 、不看書(shū)的老三
我排行老三, 我最喜歡網(wǎng)絡(luò)學(xué)習(xí)。 現(xiàn)在信息大爆炸時(shí)代, 所有的知識(shí)網(wǎng)絡(luò)上都有, 還看書(shū)干嘛呢?
不信你說(shuō)個(gè)知識(shí)點(diǎn),我分分鐘給你找出幾百篇文章。 對(duì)了,我用的都是手機(jī), 電腦都不派補(bǔ)上用場(chǎng)。
我可以一邊看技術(shù)文章,一邊刷個(gè)朋友圈, 和朋友們互相打個(gè)招呼, 學(xué)習(xí)娛樂(lè)兩不誤。
我網(wǎng)絡(luò)快餐吃的快, 很少深度思考,也記不住多少東西, 但是沒(méi)關(guān)系, 等到想不起來(lái)的時(shí)候再搜一下。
不過(guò)最煩的是網(wǎng)絡(luò)文章一大抄, 你抄我的我抄你的, 實(shí)在讓人煩。 前兩天我看到某知名技術(shù)網(wǎng)站上關(guān)于JVM相關(guān)的文章, 讀了一遍以后似曾相識(shí), 原來(lái)是照抄《深入理解Java虛擬機(jī)》這本書(shū), 嗯, 也許看書(shū)好一點(diǎn)吧。
我原來(lái)還嘲笑那些在圖書(shū)館靜靜的捧著一本書(shū)看的同學(xué),都什么年代了, 還看書(shū)?
慢慢的發(fā)現(xiàn)他們的知識(shí)體系似乎更加完整,理解更有深度, 而我似乎一直浮在表面, 知識(shí)點(diǎn)支離破碎的。 后來(lái)一問(wèn)才知道, 人家不但深入思考, 還寫(xiě)筆記,寫(xiě)博客,把自己的理解整理了出來(lái), 不僅僅是一個(gè)內(nèi)容的消費(fèi)者,
已經(jīng)變成內(nèi)容的生產(chǎn)者了。
4、半途而廢的老四
我是老四, 沒(méi)有前面幾位哥哥的毛病, 我專(zhuān)心致志,一門(mén)心思的學(xué)Java, 耐心看書(shū), 耐心的看視頻。 我還知道, 好的程序員都是代碼喂出來(lái)的, 動(dòng)手實(shí)戰(zhàn)必不可少, 所以我還經(jīng)常coding。
但我有個(gè)毛病, 凡事三分熱度, 無(wú)法堅(jiān)持, 半途而廢。
我也知道數(shù)據(jù)結(jié)構(gòu)和算法很重要啊, 也看了前面的隊(duì)列、棧等基本內(nèi)容, 可讓我堅(jiān)持著把所有內(nèi)容都看完, 把習(xí)題都做個(gè)差不多, 實(shí)在是要了我老命了。
優(yōu)秀和平庸的差別可能就是那一點(diǎn)點(diǎn)堅(jiān)持吧, 堅(jiān)持不懈的做一件事, 每天前進(jìn)一點(diǎn)點(diǎn), 最后量變發(fā)生質(zhì)變。
我聽(tīng)說(shuō)每個(gè)季度定個(gè)小目標(biāo), 努力達(dá)成, 獲得成就感, 就能刺激自己更進(jìn)一步, 我決定實(shí)驗(yàn)一下, 希望能改善下我這半途而廢的毛病吧。
猜你喜歡: