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