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