學(xué)習(xí)啦>學(xué)習(xí)方法>通用學(xué)習(xí)方法>學(xué)習(xí)方法指導(dǎo)>

初學(xué)者學(xué)習(xí)編程的方法有哪些

時(shí)間: 欣怡1112 分享

  很多編程初學(xué)者都會(huì)問(wèn):該學(xué)習(xí)什么程序語(yǔ)言,怎么學(xué)習(xí)?由于小編知道如何掌握“所有”的程序語(yǔ)言,總是感覺(jué)這種該學(xué)“一種”什么語(yǔ)言的問(wèn)題比較低級(jí)。以下是學(xué)習(xí)啦小編分享給大家的學(xué)習(xí)編程的方法的資料,希望可以幫到你!

  學(xué)習(xí)編程的方法

  將其與類似的語(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)不熟悉的概念。

  閱讀語(yǔ)言的官方文檔

  如果希望在使用之前吸收大量信息,從閱讀語(yǔ)言的參考資料中可能會(huì)受益。

  不用擔(dān)心它們會(huì)對(duì)你催眠,參考文獻(xiàn)通常是用于查找使用,而不是用來(lái)記憶。

  使用互聯(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ā)布日期。

  與社區(qū)接觸

  雖然博客和新聞文章具有大量有用的信息,但是你嘗試編寫(xiě)的特定代碼片段總會(huì)有些微妙之處。不要害怕在郵件列表中發(fā)帖,或加入 IRC 和 Slack 頻道以尋求幫助。

  要提出有幫助的回復(fù)的問(wèn)題,請(qǐng)確保在正確的地方提問(wèn)。許多語(yǔ)言都有 “初學(xué)者” 郵件列表或聊天頻道,專門(mén)針對(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)聽(tīng)取建議或會(huì)回答你的疑問(wèn)可能產(chǎn)生的后續(xù)問(wèn)題。

  編寫(xiě)“生產(chǎn)就緒” 的代碼

  使用該語(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)用。

  閱讀一本關(guān)于這門(mén)語(yǔ)言的書(shū)籍

  如果有好幾本有用的書(shū),比較它們的評(píng)論,并考慮哪位作者的背景和自己的最相似?,F(xiàn)在有很多電子書(shū)可以免費(fèi)在線閱讀。

  在購(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ā)生了怎樣的變化。

  觀看講座和課程

  如果你學(xué)習(xí)的語(yǔ)言在在線課堂中有講授,那么視頻應(yīng)該是公開(kāi)的。除了學(xué)術(shù)講座之外,還可以考慮尋找錄制講座、會(huì)議談話和有關(guān)該語(yǔ)言的博客。

  當(dāng)在看電視時(shí),談?wù)勀愕男抡Z(yǔ)言是一個(gè)將學(xué)習(xí)融入日常生活很好的方式。

  閱讀示例代碼

  大多數(shù)關(guān)于編程語(yǔ)言的書(shū)籍都會(huì)包含代碼片段。你也可以在博客和 Rosetta Code 上找到示例代碼。運(yùn)行示例代碼、修改它們,并嘗試預(yù)測(cè)修改后會(huì)發(fā)生那些情況。

  閱讀生產(chǎn)代碼

  查找有關(guān)該語(yǔ)言所有類型和大小的項(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。

  尋找好的工具

  當(dāng)使用新的語(yǔ)言時(shí),可向其更有經(jīng)驗(yàn)的用戶請(qǐng)教,詢問(wèn)他們的開(kāi)發(fā)環(huán)境。你可能會(huì)發(fā)現(xiàn),一個(gè)特定的文本編輯器或 IDE 對(duì)于新語(yǔ)言的支持比你習(xí)慣通常使用的要好。

  調(diào)查在新語(yǔ)言生態(tài)系統(tǒng)中管理依賴關(guān)系、格式化、模糊化和單元測(cè)試代碼的選項(xiàng)。

  保持你的熱情

  入門(mén)新的語(yǔ)言很容易,但變得真正精通它通常是一個(gè)需要多年的旅程。慶祝一路上你的成功,并與追隨你腳步的學(xué)習(xí)者分享你所學(xué)到的知識(shí),保持著學(xué)習(xí)編程的興趣。

  新手學(xué)習(xí)編程的最佳方式

  聚焦習(xí)慣而不是目標(biāo)

  聚焦習(xí)慣而不是目標(biāo)聽(tīng)起來(lái)似乎不合常理,但是請(qǐng)聽(tīng)我把話說(shuō)完 - 這是一個(gè)有關(guān)平衡的問(wèn)題。凡是和我共過(guò)事的人都知道,我有時(shí)就像傻子一樣,在一天內(nèi),引用《蝙蝠俠:俠影之謎》中 Ra's Al Ghul 的話多達(dá) 3-4 次。

  Bloc 公司的投資者們對(duì)于我在董事會(huì)上頻繁地引用《蝙蝠俠:俠影之謎》中的片段作為開(kāi)始,早已經(jīng)煩透了。

  R'As 告訴 Bruce:

  “(當(dāng)你的胳膊快要凍僵的時(shí)候,)按摩你的胸口,你的胳膊自然會(huì)暖和起來(lái)。”

  如果你將精力放在在每星期編程 20-30 個(gè)小時(shí)的習(xí)慣培養(yǎng)上,成為一名 Web 開(kāi)發(fā)者的目標(biāo)很快就可以實(shí)現(xiàn)。如果你將目標(biāo)設(shè)定為在數(shù)月內(nèi)成為一名 Web 開(kāi)發(fā)者,在什么時(shí)候能可以達(dá)成目標(biāo)以及距離目標(biāo)還有多遠(yuǎn)等不確定性的壓力之下,你反而可能會(huì)一無(wú)所獲。聚焦于習(xí)慣而不是目標(biāo)。按摩你的胸口,你的胳膊自然會(huì)暖和起來(lái)。

  因此,你現(xiàn)在應(yīng)該做的是:在你的日程安排上,每天花15分鐘時(shí)間用于編程。不要多于15分鐘,每天只要15分鐘就夠了。如果你能在一星期之內(nèi)堅(jiān)持做下來(lái)而不找任何借口,請(qǐng)?jiān)囍褧r(shí)間延長(zhǎng)到一天20分鐘。不要試圖通過(guò)每天一小時(shí)的編程來(lái)過(guò)度擴(kuò)展自己的能力,編程就是一場(chǎng) 10,000 小時(shí)的馬拉松,因此我們應(yīng)該將精力集中在培養(yǎng)習(xí)慣上。與其在一天內(nèi)花費(fèi)大量時(shí)間學(xué)習(xí)編程,不如每天花費(fèi)少量時(shí)間,但是能夠天天堅(jiān)持,因?yàn)檫@樣更有效。

  獨(dú)自學(xué)習(xí)非常痛苦

  當(dāng)我在學(xué)習(xí) Web 開(kāi)發(fā)時(shí),在我的學(xué)習(xí)過(guò)程中,擁有一位導(dǎo)師和加入一個(gè)社區(qū)是兩個(gè)最大的組成要素。

  ●擁有一位導(dǎo)師

  大學(xué)期間,我曾在一家名叫 merge.fm 的小型創(chuàng)業(yè)公司工作。暑假期間,我與該公司的一位聯(lián)合創(chuàng)始人一起工作,我在此期間學(xué)到的東西比我之前一年在大學(xué)學(xué)到的還要多。跟隨一名經(jīng)驗(yàn)豐富的專業(yè)人士一起工作,可以真正地加速你學(xué)習(xí)的速度,你會(huì)了解到他們?nèi)绾嗡伎紗?wèn)題的,同時(shí),也會(huì)發(fā)現(xiàn)自己的不足之處。這就是為什么師徒制通常成為學(xué)習(xí)一門(mén)新技藝的默認(rèn)標(biāo)準(zhǔn)的一個(gè)原因吧,因?yàn)樗浅S行А?/p>

  ●加入一個(gè)社區(qū)

  我加入了的兩個(gè)社區(qū),一個(gè)是 Illini Entrepreneurship Network(我們學(xué)校的一個(gè)學(xué)生組織),另一個(gè)是 Hacker News(一個(gè)面向黑客和創(chuàng)業(yè)者的大型在線社區(qū))。

  我沒(méi)有從 Hacker News 學(xué)到任何有關(guān)對(duì)象和類的知識(shí),但是我學(xué)到了一些別的東西。我知道了沒(méi)人喜歡 JavaScript。我知道了 Ruby 程序員是編程領(lǐng)域的潮人。我還知道了 Bret Taylor, Rich Hickey, and John Carmack 都是編程世界的領(lǐng)袖人物,還有就是,那些真正關(guān)心員工的軟件公司,它們公司的廚房看上去就像興奮劑實(shí)驗(yàn)室。

  總之,我學(xué)會(huì)了如何說(shuō)行話。當(dāng)你和其他程序員一同工作的時(shí)候,這一點(diǎn)非常重要,也正因如此,才使你覺(jué)得自己就是一名程序員。

  項(xiàng)目實(shí)踐

  在學(xué)習(xí) Web 開(kāi)發(fā)的第一年,我動(dòng)手實(shí)現(xiàn)了以下項(xiàng)目:

  ●一個(gè) Digg 的克隆版(來(lái)自 Sitepoint書(shū)上的 Rails 例子,我想現(xiàn)在它已經(jīng)過(guò)時(shí)了)

  ●一個(gè)在線購(gòu)物應(yīng)用程序(來(lái)自 Agile Web Development with Rails 4)

  ●一個(gè) GeekSquad-esque 應(yīng)用程序(個(gè)人項(xiàng)目)

  ●一個(gè)實(shí)時(shí)在線課堂應(yīng)用程序(個(gè)人項(xiàng)目)

  ●一個(gè)外語(yǔ)學(xué)習(xí)應(yīng)用程序(課程項(xiàng)目)

  我認(rèn)為構(gòu)建真實(shí)項(xiàng)目之所以非常重要的原因有很多,就我而言,最重要的一個(gè)原因是它充滿了樂(lè)趣。這恰恰是在傳統(tǒng)教育中嚴(yán)重缺失的,也正因如此,它才成為了諸多原因中最重要的一項(xiàng)。尋找如何開(kāi)展項(xiàng)目實(shí)踐的參考資源,是一個(gè)不錯(cuò)的選擇。

  要具有“小強(qiáng)”精神

  對(duì)于那些能堅(jiān)持讀到此處的讀者們,我偷偷地增加了第四項(xiàng)內(nèi)容。 Paul Graham 曾經(jīng)對(duì) Airbnb 的創(chuàng)始人說(shuō)過(guò):

  “你們這些家伙是不會(huì)失敗的,因?yàn)槟銈兙拖翊虿凰赖?rsquo;小強(qiáng)’一樣”

  一段時(shí)期,你可能會(huì)有放棄學(xué)習(xí)編程的想法。就像任何具有同樣價(jià)值的事情一樣,學(xué)習(xí)編程真的很難,有時(shí)你會(huì)覺(jué)得自己真的很笨。這就是為什么第一項(xiàng)策略如此重要的原因 - 不要過(guò)度擔(dān)心是否已經(jīng)取得進(jìn)步,或者需要花費(fèi)多長(zhǎng)時(shí)間達(dá)成目標(biāo)。你要做的就是每周堅(jiān)持10-30個(gè)小時(shí)的編程。就像執(zhí)著的’小強(qiáng)’一樣,你就不會(huì)失敗。

  多年以前我說(shuō)過(guò)一句話 - “成功貴在堅(jiān)持(注解:亦可譯為‘生活中80%的成功源于堅(jiān)持’)”,這句話經(jīng)常被其他人引用。人們常常向我提及,他們想編寫(xiě)一個(gè)劇本,他們想制作一部電影,他們想撰寫(xiě)一本小說(shuō)。那些最終成功實(shí)現(xiàn)目標(biāo)的人,80%的做法是先行動(dòng)起來(lái)。那些最終失敗的人,他們連這一點(diǎn)都做不到。這正是他們不能做成一件事情的原因,他們沒(méi)有去做。一旦你去做了,如果你真地去編寫(xiě)電影劇本,或者撰寫(xiě)小說(shuō),實(shí)際上,你的成功之路已走過(guò)大半。這就是我可以告訴你的我人生最大的成功經(jīng)驗(yàn)。其它的都是失敗的教訓(xùn)。

  掌握所有編程語(yǔ)言的關(guān)鍵學(xué)習(xí)方法

  1、重視語(yǔ)言特性,而不是語(yǔ)言

  很多人在乎自己或者別人是否“會(huì)”某種語(yǔ)言,對(duì)“發(fā)明”了某種語(yǔ)言的人倍加崇拜,為各種語(yǔ)言的孰優(yōu)孰劣爭(zhēng)得面紅耳赤。這些問(wèn)題對(duì)于我來(lái)說(shuō)都是不存在的。雖然我寫(xiě)文章批評(píng)過(guò)不少語(yǔ)言的缺陷,在實(shí)際工作中我卻很少跟人爭(zhēng)論這些。如果有其它人在我身邊爭(zhēng)論,我甚至?xí)魃隙鷻C(jī),都懶得聽(tīng)他們說(shuō)什么 ;) 為什么呢?我發(fā)現(xiàn)歸根結(jié)底的原因,是因?yàn)槲抑匾暤氖?ldquo;語(yǔ)言特性”,而不是整個(gè)的“語(yǔ)言”。我能用任何語(yǔ)言寫(xiě)出不錯(cuò)的代碼,就算再糟糕的語(yǔ)言也差不了多少。

  任何一種“語(yǔ)言”,都是各種“語(yǔ)言特性”的組合。打個(gè)比方吧,一個(gè)程序語(yǔ)言就像一臺(tái)電腦。它的牌子可能叫“聯(lián)想”,或者“IBM”,或者“Dell”,或者“蘋(píng)果”。那么,你可以說(shuō)蘋(píng)果一定比 IBM 好嗎?你不能。你得看看它里面裝的是什么型號(hào)的處理器,有多少個(gè)核,主頻多少,有多少 L1 cache,L2 cache……,有多少內(nèi)存和硬盤(pán),顯示器分辨率有多大,顯卡是什么 GPU,網(wǎng)卡速度,等等各種“配置”。有時(shí)候你還得看各個(gè)組件之間的兼容性。

  2、合理的入門(mén)語(yǔ)言

  所以初學(xué)者要想事半功倍,就應(yīng)該從一種“合理”的,沒(méi)有明顯嚴(yán)重問(wèn)題的語(yǔ)言出發(fā),掌握最關(guān)鍵的語(yǔ)言特性,然后由此把這些概念應(yīng)用到其它語(yǔ)言。

  3、掌握關(guān)鍵語(yǔ)言特性,忽略次要特性

  為了達(dá)到我之前提到的融會(huì)貫通,一通百通的效果,初學(xué)者應(yīng)該專注于語(yǔ)言里面最關(guān)鍵的特性,而不是被次要的特性分心。

  舉個(gè)夸張點(diǎn)的例子。我發(fā)現(xiàn)很多編程培訓(xùn)班和野雞大學(xué)的編程入門(mén)課,往往一來(lái)就教學(xué)生如何使用 printf 打印“Hello World!”,進(jìn)而要他們記憶 printf 的各種“格式字符”的意義,要他們實(shí)現(xiàn)各種復(fù)雜格式的打印輸出,甚至要求打印到文本文件里,然后再讀出來(lái)……

猜你喜歡:

1.java編程學(xué)習(xí)方法有哪些

2.學(xué)習(xí)編程需要的時(shí)間以及方法

3.學(xué)習(xí)編程的時(shí)間以及方法

4.最科學(xué)的聲樂(lè)訓(xùn)練方法

5.初學(xué)者自學(xué)怎么練口琴

3713924