自學編程記不住代碼怎麼辦?

因為要自學Android,現在在看視頻,把視頻關掉後自己寫老是就不知道怎麼寫了,該怎麼辦?


學編程你記代碼幹啥?又不是學英語,背記單詞是必要的。

只要平時學習時建立自己的資料庫和代碼庫,整理好,用的時候能快速找到就行了,記不住也沒關係。


首先歪一下:視頻教程真不是什麼合適的學習方法。視頻教程能教會你的東西,看文字教材圖文教材庫文檔也能弄懂,並且更詳細豐富方便反查。視頻教程基本上都是把信息量減少,細節一些的地方略去不說,同時放慢速度,把一小段話能說清的東西展開來講個十幾分鐘,降低效率來產生一學就懂的錯覺。

然後是正題。

真沒見過誰編程靠背代碼的。不管什麼語言,無論什麼模塊、框架、庫,都是從實際問題中抽象出若干概念,然後提供處理這些概念的方法和工具。Java這樣嚴格OO的東西更甚,一切都有著標準嚴格的邏輯聯繫。你學Android,上手來寫代碼,就算背再熟悉,需求一變難不成先找現成的代碼背一遍?Activity,Service,BroadcastReceiver,ContentProvide,四者的基本概念,系統啟動一個App的正常流程,相互交互關係,UI與程序交互的抽象模型,這些東西弄明白之後才有你發揮的空間,而不是閉眼抄代碼。

背完一片代碼,你能說清楚它在幹什麼,為什麼要這樣寫,能不能換個別的辦法寫或者寫在別的地方么?再往下深入,自然而然就會接觸到著名的幾門課程了——計算機原理、操作系統、網路、數據結構、編譯原理……不求樣樣精通,但這些個老掉牙教材里的東西,很多部分對於最近十幾二十多年的無論新舊的軟體開發要用到的知識而言仍是幾乎是沒有什麼大的變化,至少也是有許多共通之處的。編程這個東西,任何時刻在做任何方向上遇到的問題,即使換到別的語言、別的開發方向中,也同樣會稍作打扮重新蹦躂出來。一旦能從原理和概念的層面去理解這些問題,你會發現所有的工程問題都只是固定的那麼幾類,解決方法就算不容易想到,也會很容易查到。

最後補一刀:如果某個編程問題靠背代碼能夠解決(至少某種應用或者說某個範圍上的)需求,那麼一定遲早會有人把它包成庫/模塊/框架,並得到廣泛應用,因此今日背的代碼或許幾天之後就變得只是一個import加上一行調用。這背起來也就太沒有意義了。


正好前幾天有朋友在我的值乎上問類似的問題,看樣子不少朋友都是通過視頻教學來學習編程的。

視頻教學當然有其直觀易懂的優勢,但是也有缺點,就我看來,看視頻學寫代碼,就像是看小說改編的電視劇,雖然可以很容易知道這個小說故事的情節,卻難以知道小說的精髓。

我記得對電視的批評一直存在,電視通過視覺和聽覺的灌輸,讓觀眾完全服從電視的節奏,讓觀眾沒有自己思考的機會,如果看小說,那讀者就可以按照自己的節奏來走,遇到不明白的可以停下來想一想,或者跳到其他地方去看一看。

學習編程也是一樣的,如果只是看視頻,節奏完全被視頻控制,雖然直觀,但是缺乏自己思考的機會,所以,如果題主覺得「關掉視頻就記不住」,那就真的應該關掉視頻,看一些文字性的書籍或者教材,一邊看一邊思考,這樣才是學習編程的正確方法。

另外,學寫代碼不是完全靠記憶力,多獨立寫代碼,讓編程能力進入自己的骨子裡,而不是靠記憶代碼來寫代碼。

了解更多學習方法請關注 @程墨Morgan


我很想知道有多少人是覺得X個月可以(或意願)掌握一門語言、一個框架、一門技藝,然後就可以去面試大大小小的軟體開發公司的?有了這想法後,就美滋滋參加培訓班,或看視頻?

是,X個月是可以掌握一點東西了。但時間是公平的,所謂「讀書破萬卷,下筆如有神」,可惜的是,大多數人只想著後半句,卻忽略了前半句「讀書破萬卷」了。世間萬物有因才有果,沒有長時間的浸泡如何修成正果?

你要做的是克服「浮躁」、「求快」的心理,踏踏實實、靜下心來去學習,一兩遍記不住不是很正常嗎?

也請仔細思考一下,新的知識點是需要不斷回顧才能理清的,甚至做了5、6個項目之後才能深刻的。視頻方便回顧嗎?自己有案頭參考可閱嗎?自己做了筆記總結嗎?自己動手模擬、實踐代碼了嗎?這些都是需要的啊。光抱著個視頻想成大事?

還有你的情況也沒咋說,就這麼短短一句話。既然你要別人幫你,為何不多說點呢?不懂想、不懂問真的也是有大問題啊。就像好一些人問問題上代碼,直接就截屏了,或者代碼格式像一坨屎,別人如果要幫你、要調試難不成再敲一遍代碼?不好意思,我一直覺得此類人活該啥都不會。

思想成熟度提高一點,人踏實點,很多問題都能迎刃而解。


代碼語句本來也不用死記硬背啊。你只需要知道,這個語言有這麼一句代碼,這個代碼是幹什麼的就可以了。

我剛學java的時候,除了if for之外什麼的沒記住,甚至if for 語句的格式都沒記住。但是,我能知道我學過了什麼語句,這些語句有什麼用。然後寫程序的時候,需要判斷了,翻下書,哦if語句,哦格式是這樣的。需要一個對話框,翻下書,哦創建對話框的代碼是這個,格式是這樣的。

再之後,多寫幾個程序,多用幾次就都記住了。


記代碼幹嘛?

不會寫多看幾遍,先照貓畫虎,慢慢就會了。模仿期間一定要多思考,不要像機器人一樣照著輸代碼,就算運行成功也學不到什麼。

另外最重要的是,新手不要想著一步登天,你這屬於正常現象。踏實學吧。


今天出門忘記該先伸左腿,還是先伸右腿了,怎麼辦?


不記不住就找 google 啊,找到了 evernote 裡面一丟,讓 evernote 給你記去,要是都能看一遍就記得了,那豈不是滿街都是 Sheldon 了。。。


熟讀唐詩三百首,不會作詩也會吟。你看人家說的是熟讀,也沒說要背呀。

學編程不需要記代碼,以理解為主,要不我那幾十萬行中二的代碼給你,你要記多少年啊。看完視頻和學習資料,一定要動手敲,多敲幾次,還敲不出來就抄。寫代碼就和寫文章是一樣的,一開始毫無思緒,只能模仿,堅持練習,假以時日必能做到文思泉湧。

一定要記住一點,剛開始學的時候,會用就行,學習的目的是為了找一份工作,能讓自己不至於餓死,不是學來考試,不要去死亡硬背,沒用。


代碼是寫的過程中自然記住的。當然經常有很多記不住,查查資料就行了。

記視頻教學裡的代碼部分,完全沒必要。

看視頻學,入門是不錯的,特別是step by step的學習怎麼搭環境,怎麼操作IDE,怎麼DEBUG。這些內容是很多書面資料沒法說清楚的。等過這一關,視頻教學已經跟不上實際的學習需求了。不管是學習效率還是深度,廣度。

最終還是要回到代碼練習和官方文檔上來。


我想起小時候背古詩,怎麼背都記不住。最後,終於記住了,但也僅僅是記住而已。

我要說的是,要理解意思,不要死記硬背。何況,代碼死記硬背,沒什麼用。


你根本不需要記。常用的第一次記不住,用到第三次、第四次就記住了。不常用的,你得知道在哪能找到例子,善用Google和瀏覽器的書籤功能。


別說別人的代碼了,我自己寫的代碼過幾個月就一頭霧水,看都看不懂更別提背了。

所以一方面要自己寫代碼,另外要寫總結,這種才是可以幫助長期理解和記憶的


多寫幾遍,然後Android Studio有自動代碼補全


如果是Android的API,那誰也不可能全記住,很多IDE都帶自動補全和智能提示,就是彌補這個的,寫多了能記住常用的幾個就夠了。

如果是語言層面關鍵字記不住,語法不會寫,那還是先學學java比較好。


github是個好東西


如果記不住 API,沒有關係,沒有多少人能脫離 IDE 和 references 去寫代碼。剩下記不住的,無非就是單詞和思路,單詞還好說,有 IDE 問題應該不大,思路記不住說明你學習方法可能存在問題,還沒有完整認識到編程是個怎樣的東西,編程雖然有很多 recipes 和 paradigm,但這些不一定要去死記硬背,而要靠實踐去掌握,總結一句話就是:多看書,多寫有效代碼。


能看懂就成


看100遍,寫100遍,再不會我就免費教你


IDE都有自動補全,要不然你從A打到Z都試一試,會英文會編程的都能知道怎麼用


推薦閱讀:

魅族 Flyme OS 在 MX4 上卡頓明顯,且很容易死機,這是為什麼?
如何評價 2016 年 12 月 30 日魅族與高通和解?
為什麼搭載麒麟處理器的華為手機可以在中高端市場獲得成功?
Android 手機能支持連接哪些 USB 設備?
如何看待魅族MX5的發布會邀請函「一隻鋼盔」?

TAG:編程 | Java | IT行業 | Android |