初學者學習編程的方法有哪些
很多編程初學者都會問:該學習什么程序語言,怎么學習?由于小編知道如何掌握“所有”的程序語言,總是感覺這種該學“一種”什么語言的問題比較低級。以下是學習啦小編分享給大家的學習編程的方法的資料,希望可以幫到你!
學習編程的方法
將其與類似的語言進行比較
當你首次觀看有關該語言的第一個教程或閱讀代碼時,請嘗試猜測該語言的每個部分將會做什么,并檢查你的判斷是否正確。 如果記筆記可以幫助你整合信息,請拿起一張紙并記下三個列表:
看起來很熟悉的東西,并且做了預期中的事
看起來很熟悉的東西,但做了意料之外的事
看起來完全是新的東西
例如,如果我用來自 Python 和 C 背景的 Rust 代碼進行此練習,那么在第一個列表中,我會放上用于表示范圍的花括號,(看起來像是布爾類型的 非,但實際上是 Rust 中的宏定義)則放在第二個列表,類型簽名語法(type signature syntax)放在第三個列表。
如果你保留著初始列表的副本,一旦你更熟練,可使用它通過語言反思你的進展,并提醒自己在嘗試向其他人講授該語言時,有哪些看起來不熟悉的概念。
閱讀語言的官方文檔
如果希望在使用之前吸收大量信息,從閱讀語言的參考資料中可能會受益。
不用擔心它們會對你催眠,參考文獻通常是用于查找使用,而不是用來記憶。
使用互聯(lián)網搜索
搜索網絡是一個很好的方式,可提供有關特定錯誤和一般最佳做法的信息。當收到錯誤信息時,應搜索信息中看起來是錯誤的獨一無二的部分,但不是代碼唯一的部分。
例如,如果錯誤提示 "Error on line 53: Invalid argument exception(錯誤在第 53 行:無效的參數異常)",以語言名稱和字符串 “Invalid argument exception” 這樣的組合搜索,以找到最佳的結果。
記住要將錯誤信息中的所有引用內容都包含在內。
還可以在網絡中搜索有關解決語言中特定問題的最佳做法的博文。
評估搜索結果中顯示的博客帖子的質量和決定認真采用他們的建議時,請查看作者的公共代碼組合以及發(fā)布日期。
與社區(qū)接觸
雖然博客和新聞文章具有大量有用的信息,但是你嘗試編寫的特定代碼片段總會有些微妙之處。不要害怕在郵件列表中發(fā)帖,或加入 IRC 和 Slack 頻道以尋求幫助。
要提出有幫助的回復的問題,請確保在正確的地方提問。許多語言都有 “初學者” 郵件列表或聊天頻道,專門針對可能會頻繁詢問的問題而建立。
當提出問題時,請務必先總結準備做什么、已做過的東西以及發(fā)生的情況。盡量為專家提供足夠的上下文來了解問題,但不需要無關緊要的細節(jié)。
提出問題后,請務必堅持一段時間來聽取建議或會回答你的疑問可能產生的后續(xù)問題。
編寫“生產就緒” 的代碼
使用該語言編寫 “生產就緒(Production-Ready)” 的代碼
玩具程序是一個很好的第一步,但在更逼真的的環(huán)境中使用一門語言可幫助探索其現實使用中的優(yōu)勢和挑戰(zhàn)。
考慮將一個熟悉的、相對較小的、經過良好測試的程序移植到新的語言,以探索其在現實使用的應用。
閱讀一本關于這門語言的書籍
如果有好幾本有用的書,比較它們的評論,并考慮哪位作者的背景和自己的最相似。現在有很多電子書可以免費在線閱讀。
在購買有關該語言的書籍之前,請先查看書籍出版的日期以及其示例所涵蓋的語言版本。
如果使用的是較舊的書籍,請務必使用其所使用的語言版本的示例。還要在網上調查一下,以了解自出版以來語言發(fā)生了怎樣的變化。
觀看講座和課程
如果你學習的語言在在線課堂中有講授,那么視頻應該是公開的。除了學術講座之外,還可以考慮尋找錄制講座、會議談話和有關該語言的博客。
當在看電視時,談談你的新語言是一個將學習融入日常生活很好的方式。
閱讀示例代碼
大多數關于編程語言的書籍都會包含代碼片段。你也可以在博客和 Rosetta Code 上找到示例代碼。運行示例代碼、修改它們,并嘗試預測修改后會發(fā)生那些情況。
閱讀生產代碼
查找有關該語言所有類型和大小的項目的一種方法是在 GitHub 上搜索它。按最受歡迎或最具影響力進行排序,你的熱門搜索將包括最受歡迎的開源工具。
如果想要了解開源項目的設計,可通過郵件列表或 IRC 來與社區(qū)進行互動。你甚至可能會發(fā)現一些 bug。
尋找好的工具
當使用新的語言時,可向其更有經驗的用戶請教,詢問他們的開發(fā)環(huán)境。你可能會發(fā)現,一個特定的文本編輯器或 IDE 對于新語言的支持比你習慣通常使用的要好。
調查在新語言生態(tài)系統(tǒng)中管理依賴關系、格式化、模糊化和單元測試代碼的選項。
保持你的熱情
入門新的語言很容易,但變得真正精通它通常是一個需要多年的旅程。慶祝一路上你的成功,并與追隨你腳步的學習者分享你所學到的知識,保持著學習編程的興趣。
新手學習編程的最佳方式
聚焦習慣而不是目標
聚焦習慣而不是目標聽起來似乎不合常理,但是請聽我把話說完 - 這是一個有關平衡的問題。凡是和我共過事的人都知道,我有時就像傻子一樣,在一天內,引用《蝙蝠俠:俠影之謎》中 Ra's Al Ghul 的話多達 3-4 次。
Bloc 公司的投資者們對于我在董事會上頻繁地引用《蝙蝠俠:俠影之謎》中的片段作為開始,早已經煩透了。
R'As 告訴 Bruce:
“(當你的胳膊快要凍僵的時候,)按摩你的胸口,你的胳膊自然會暖和起來。”
如果你將精力放在在每星期編程 20-30 個小時的習慣培養(yǎng)上,成為一名 Web 開發(fā)者的目標很快就可以實現。如果你將目標設定為在數月內成為一名 Web 開發(fā)者,在什么時候能可以達成目標以及距離目標還有多遠等不確定性的壓力之下,你反而可能會一無所獲。聚焦于習慣而不是目標。按摩你的胸口,你的胳膊自然會暖和起來。
因此,你現在應該做的是:在你的日程安排上,每天花15分鐘時間用于編程。不要多于15分鐘,每天只要15分鐘就夠了。如果你能在一星期之內堅持做下來而不找任何借口,請試著把時間延長到一天20分鐘。不要試圖通過每天一小時的編程來過度擴展自己的能力,編程就是一場 10,000 小時的馬拉松,因此我們應該將精力集中在培養(yǎng)習慣上。與其在一天內花費大量時間學習編程,不如每天花費少量時間,但是能夠天天堅持,因為這樣更有效。
獨自學習非常痛苦
當我在學習 Web 開發(fā)時,在我的學習過程中,擁有一位導師和加入一個社區(qū)是兩個最大的組成要素。
●擁有一位導師
大學期間,我曾在一家名叫 merge.fm 的小型創(chuàng)業(yè)公司工作。暑假期間,我與該公司的一位聯(lián)合創(chuàng)始人一起工作,我在此期間學到的東西比我之前一年在大學學到的還要多。跟隨一名經驗豐富的專業(yè)人士一起工作,可以真正地加速你學習的速度,你會了解到他們如何思考問題的,同時,也會發(fā)現自己的不足之處。這就是為什么師徒制通常成為學習一門新技藝的默認標準的一個原因吧,因為它非常有效。
●加入一個社區(qū)
我加入了的兩個社區(qū),一個是 Illini Entrepreneurship Network(我們學校的一個學生組織),另一個是 Hacker News(一個面向黑客和創(chuàng)業(yè)者的大型在線社區(qū))。
我沒有從 Hacker News 學到任何有關對象和類的知識,但是我學到了一些別的東西。我知道了沒人喜歡 JavaScript。我知道了 Ruby 程序員是編程領域的潮人。我還知道了 Bret Taylor, Rich Hickey, and John Carmack 都是編程世界的領袖人物,還有就是,那些真正關心員工的軟件公司,它們公司的廚房看上去就像興奮劑實驗室。
總之,我學會了如何說行話。當你和其他程序員一同工作的時候,這一點非常重要,也正因如此,才使你覺得自己就是一名程序員。
項目實踐
在學習 Web 開發(fā)的第一年,我動手實現了以下項目:
●一個 Digg 的克隆版(來自 Sitepoint書上的 Rails 例子,我想現在它已經過時了)
●一個在線購物應用程序(來自 Agile Web Development with Rails 4)
●一個 GeekSquad-esque 應用程序(個人項目)
●一個實時在線課堂應用程序(個人項目)
●一個外語學習應用程序(課程項目)
我認為構建真實項目之所以非常重要的原因有很多,就我而言,最重要的一個原因是它充滿了樂趣。這恰恰是在傳統(tǒng)教育中嚴重缺失的,也正因如此,它才成為了諸多原因中最重要的一項。尋找如何開展項目實踐的參考資源,是一個不錯的選擇。
要具有“小強”精神
對于那些能堅持讀到此處的讀者們,我偷偷地增加了第四項內容。 Paul Graham 曾經對 Airbnb 的創(chuàng)始人說過:
“你們這些家伙是不會失敗的,因為你們就像打不死的’小強’一樣”
一段時期,你可能會有放棄學習編程的想法。就像任何具有同樣價值的事情一樣,學習編程真的很難,有時你會覺得自己真的很笨。這就是為什么第一項策略如此重要的原因 - 不要過度擔心是否已經取得進步,或者需要花費多長時間達成目標。你要做的就是每周堅持10-30個小時的編程。就像執(zhí)著的’小強’一樣,你就不會失敗。
多年以前我說過一句話 - “成功貴在堅持(注解:亦可譯為‘生活中80%的成功源于堅持’)”,這句話經常被其他人引用。人們常常向我提及,他們想編寫一個劇本,他們想制作一部電影,他們想撰寫一本小說。那些最終成功實現目標的人,80%的做法是先行動起來。那些最終失敗的人,他們連這一點都做不到。這正是他們不能做成一件事情的原因,他們沒有去做。一旦你去做了,如果你真地去編寫電影劇本,或者撰寫小說,實際上,你的成功之路已走過大半。這就是我可以告訴你的我人生最大的成功經驗。其它的都是失敗的教訓。
掌握所有編程語言的關鍵學習方法
1、重視語言特性,而不是語言
很多人在乎自己或者別人是否“會”某種語言,對“發(fā)明”了某種語言的人倍加崇拜,為各種語言的孰優(yōu)孰劣爭得面紅耳赤。這些問題對于我來說都是不存在的。雖然我寫文章批評過不少語言的缺陷,在實際工作中我卻很少跟人爭論這些。如果有其它人在我身邊爭論,我甚至會戴上耳機,都懶得聽他們說什么 ;) 為什么呢?我發(fā)現歸根結底的原因,是因為我重視的是“語言特性”,而不是整個的“語言”。我能用任何語言寫出不錯的代碼,就算再糟糕的語言也差不了多少。
任何一種“語言”,都是各種“語言特性”的組合。打個比方吧,一個程序語言就像一臺電腦。它的牌子可能叫“聯(lián)想”,或者“IBM”,或者“Dell”,或者“蘋果”。那么,你可以說蘋果一定比 IBM 好嗎?你不能。你得看看它里面裝的是什么型號的處理器,有多少個核,主頻多少,有多少 L1 cache,L2 cache……,有多少內存和硬盤,顯示器分辨率有多大,顯卡是什么 GPU,網卡速度,等等各種“配置”。有時候你還得看各個組件之間的兼容性。
2、合理的入門語言
所以初學者要想事半功倍,就應該從一種“合理”的,沒有明顯嚴重問題的語言出發(fā),掌握最關鍵的語言特性,然后由此把這些概念應用到其它語言。
3、掌握關鍵語言特性,忽略次要特性
為了達到我之前提到的融會貫通,一通百通的效果,初學者應該專注于語言里面最關鍵的特性,而不是被次要的特性分心。
舉個夸張點的例子。我發(fā)現很多編程培訓班和野雞大學的編程入門課,往往一來就教學生如何使用 printf 打印“Hello World!”,進而要他們記憶 printf 的各種“格式字符”的意義,要他們實現各種復雜格式的打印輸出,甚至要求打印到文本文件里,然后再讀出來……
猜你喜歡: