抄代码对自己编程提高有用吗?
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達 自己剛接觸數據結構,完成大作業感覺好難,好奇那些項目是怎么完成的,如果把這個題目給我,思維會很混亂,所以就想看看別人一些邏輯清楚的代碼,自己慢慢照著敲,然后看能不能默出來,再自己去寫,不知道這種方法有沒有效作者:迦倫
https://www.zhihu.com/question/387940895/answer/1252055229
大概有一點點心理安慰作用。
安慰自己在努力,安慰自己盡力了。
然后用戰術上的勤奮掩蓋自己戰略的懶惰。
這種事情我也做過,我的數據結構和算法基礎也不好。雖然我上課也很認真,但是確實沒有聽懂老師講什么,為了保持注意力,只能老師在講,我就撐著眼皮打架,然后一邊抄一邊試著理解,如果不會理解就努力去背誦。
事實證明,這是個非常糟糕的策略。因為我雖然耗費了大量的時間和精力,最后成績都不咋地,而且也沒有辦法靈活使用。
直到我知道班里有差不多一半人都掛科,我才意識到,這可能不是我一個人的問題。
然后我就吸取了這個教訓,(這兩門課同一個學期學的),如果某一科老師講的課,我實在聽不進去,我就干脆自學,還能省點時間,反正很多老師上課也只是念PPT,跟念經一樣,沒意思。
結果證明,自學比強逼著抄寫背誦好太多了,就像對乳糖不耐的人,喝酸奶效果比喝牛奶好些。
不過,我其實不建議你像我當初那樣,拿著教材自學。
因為時代不一樣了,現在網絡上有大量的教程,圖文并茂+視頻可視化,你只要穿越了長城,就能暢游知識的海洋,接下來只要學會搜索,學習編程就能像魚兒在水里呼吸一樣自然而舒服。
這是最好的最快的獲取一手資料的方法。
但長城以內也有很多知識庫,雖然時效性差一點,但是對于學生也足夠了。
如果你要練習數據結構和算法,LeetCode 還是非常適合學生的。
如果你想自己做出一些工具/產品。比如小程序,網站,APP,游戲,軟件各種,那就得磨煉工程能力。而阿里和騰訊作為國內的互聯網巨頭,都提供了很多免費超一流的課程,它就躺在那里,等待所有人去搜索。
除此之外,掘金,博客園,CSDN,網易云課堂,簡書,阮一峰的入門博客,廖雪峰的Python/Java教程,鳥哥的Linux私房菜,雷神的視頻大禮包,github 上的各種 awesome markdown,都是非常值得自學的內容。
也許因為太容易獲得,所以很多人只是收藏,很少有人去執行。
所以只要你開始執行,就能超過99.9%的同齡人。
就這樣吧,多么希望,十年前的我能看到我的這個答案。
作者:陳文禮
https://www.zhihu.com/question/387940895/answer/1177045843
umm,數據結構可能是一個很不好的例子。
數據結構這種,包括算法,主要是理解。代碼其實是最不重要的。如果感覺無法應用(無法用來解決實際問題),那么問題也很可能并不是出在代碼能力上,而是出在不能將領域模型轉換到數學模型,或者簡單來說,對套路不熟悉上。
抄寫很多代碼,能不能熟悉套路?也許能,但是效率很低。因為“寫”這個動作肯定比“讀”慢,而且抄寫是又讀又寫,那么你的腦子還能有多少余地去思考。
當然,作為過來人我知道有這樣的想法往往是覺得讀很枯燥,經常思想開小差,讀完了啥也不記得。所以不能僅僅是“讀”,這是對的。但是對于程序,用“寫”來填補不是什么好辦法。我個人推薦用調試、修改來填補。一邊單步執行一邊讀,對照計算機執行的流程和你腦子里認為的流程,可以發現很多問題,加深理解。之后,嘗試修改,改得更快,甚至是有意改錯,只要你能預計到會出現什么錯,就是很好的。
練手(寫)也是必要的,但是我認為這種對于熟悉API更有效。API文檔再怎么看,不實際調一調用一用,看看結果,就是空的,實際上還是啥都不知道。
作者:黃兢成
https://www.zhihu.com/question/387940895/answer/1255467684
對于我來說,看不懂時,將書中代碼敲入電腦,這種行為是有點用處的。我最初學數據結構的時候,就是將書中代碼敲到電腦編譯測試。
這并非是敲代碼本身有用,而是用敲代碼的方式,強迫自己將看書的速度慢下來,一行一行,一字一字地看。
實際上,當你看不懂的時候,任何讓閱讀速度慢下來的方式,都有用。包括
朗讀。
做筆記。
抄書。
用手指在字上移動。
根據內容的不同采用適當的慢下來方式。這些方式,都是讓你慢下來后,思考速度跟上閱讀速度。
只是當你對這部分內容很熟悉,還這樣做。還去敲代碼(或者抄書、手指指著字等),效率就低了。
作者:世最新一期
https://www.zhihu.com/question/387940895/answer/1254099234
更新一下定義澄清,在我看來所謂的「抄代碼」的定義,按照題主說的「慢慢抄代碼敲」和自己慢慢照著敲,然后看能不能默出來,再自己去寫
來看的話,至少要滿足:
1 代碼不是自己寫的
2 并且別人的代碼不能是CTRL+C/V,甚至把別人的源代碼下載下來直接跑,畢竟這根本稱不上敲。
如果你非得推廣到「把別人的代碼下載下來」甚至「看范例自己推廣」、「看別人的思路自己實現」都要能算得上「抄」,那我覺得根本就偏離題主原意了
我就不理解為什么那幾個抄代碼的人會被頂到那么高,是因為這些抄代碼的人互相有了共鳴嗎……
我早年學C的時候用過一點點打進電腦這種辦法,包括后來看那本《笨辦法學Python》,后來覺得這確實是很笨啊(而且抄Python代碼那酸爽,誰抄誰知道),于是我就再也不抄了,不然每次看一個源代碼都抄一遍那要瘋啊,更何況稍大點的項目你根本不知道他是以什么順序寫的,這就相當于一像素一像素去臨摹別人的畫,那抄也白抄。
尤其是樓主描述中說的這個「看看別人一些邏輯清楚的代碼,自己慢慢照著敲,然后看能不能默出來」,是更加笨的辦法。你還不如找他給你說明一下,或者找那些圖形化示范數據結構的網站看看實際上是怎么做的,然后再自己實現一遍并且調通。學習數據結構這種東西就是要自己實現一遍才曉得每條代碼到底是怎么運作的。與其去抄,還不如把別人的代碼拷過來看行為,比如放到環境里面跑一跑,打打斷點和輸出,右鍵看看調用過程什么的,比你瞎抄快多了。
國內一些教材確實講得很不好,你光看它看不懂是正常的。真正能打的教材,比如SICP和Algorithm,都是先把思想給你講得很透徹了,然后再讓你一步步實現或者給你代碼。我也算是比較笨的那種人,當時學SICP也有很多當時感覺非常mindfuck的東西,都是看書完了看視頻,然后再去寫出來調到通。
這個過程說白了才是真正的學習過程,因為你代碼跑不通、不按預期方式執行肯定是因為你就是沒想明白它是怎么個結構。看輸出和debug慢慢調到過的過程,就像是一個老師慢慢教你哪里出問題的過程,畢竟你寫得不對那就是因為你有些地方沒考慮清楚——而debug就可以很方便地找出自己到底是哪里沒考慮清楚。
比如說寫個遍歷鏈表的時候它會漏掉某些元素,那就debug一下,打打斷點看看變量池,看看執行到什么地方會漏元素,為什么會漏元素——這個過程比你輸入代碼、背誦代碼的過程要更能檢查你的想法到底哪里出了問題。
大家都在爭論該不該抄代碼,
我的問題是:你直到學到數據結構了,要做大作業了,才發現你的編程基礎有問題,面對作業根本沒思路的嗎?
按理說大一應該有一些編程語言的基礎課程的,這個課程應該有大量的小題目練習,來幫助你熟練掌握語法,對編程有個基本思路的,那么那個時候的作業,您好好做了嗎?
抄,
你抄語文課文,抄英語單詞那種抄,沒用。
文科,需要把既定事實,一字不差的記下來,在正確的時候運用。
編程不是的。編程那是,在既定的語法規則下,用這套語法規則,把自己所想的邏輯表達出來。
作者:匿名用戶
https://www.zhihu.com/question/387940895/answer/1255957801
一般抄在以下情況下,是有必要的:
1、完全不知道語法規則什么樣的,
2、對著語法規則,完全沒有想法,想參考一下一般大家是怎么做的(對某種情況,大家通常的表達是什么樣的)。
但是,數據結構不行!
數據結構,那是建立在更高一些的抽象上的,硬抄代碼而不理解這一段、那一段代碼想表達什么樣的數據結構的操作,那是沒用的,抄完你仍然不會用數據結構解決問題。
所以,
你先搞清楚,你到底哪塊不行?是本來編程語言了解不扎實,C/Java/Python就低分飄過,簡單的循環都不會寫;還是數據結構就沒聽,完全不知道數據結構。
前者請從0開始補,后者請同學吃頓飯,給你好好輔導一下。
沒用。
抄代碼只對具體的細節問題有效。譬如說怎么在窗口上畫一個圓,這個可以抄。但是你連怎么架構mspaint都要抄,那這是在白費力氣。
作者:Malachite
https://www.zhihu.com/question/387940895/answer/1154820977
抄是可以,別光是抄
想想每行代碼除了上下文無關的意義之外,對于整個塊、最終目標的意義
然后給每一個塊寫注釋,要自己說得通、別人看得懂
會有用的
作者:冒泡
https://www.zhihu.com/question/387940895/answer/1263391419
可以的,不過關鍵是用腦子抄,而不是抄完就忘,事前得知道自己要抄的代碼的大概結構是什么,哪些節點在做什么事情,抄的時候主要是深入到細節
話說我每次接手新項目的時候有個習慣就是一行行將老代碼改成我自己的風格,對理解代碼細節還是有用的(主要是控制自己閱讀代碼的節奏)
作者:裴浩
https://www.zhihu.com/question/387940895/answer/1186330814
看你怎么抄。
初學者做大作業難往往是沒有一個清晰的思路,寫代碼就像寫作文一樣,都是首先確定大致的流程,然后再填充細節。首先要審視自己,是因為細節寫不出來,還是大致的思路都沒有。
回憶下中小學時代你背課文(不知道現在的老師有沒有這么變態了,背現代文……),你如果是一個字一個字地順序背,那么效率很低,最后背完了可能也學不到什么。但如果你是預先把每個自然段大致講了什么記下來,那就算每個自然段背得有所出入,你也能大致了解作者的行文思路,從而看看能不能借鑒。
不同于寫作,寫代碼的套路相對而言更單一,所以記住設計思路的作用其實更大。細節部分也可以照著敲,敲完再理解。
作者:到處挖坑蔣玉成
https://www.zhihu.com/question/387940895/answer/1252523111
有用,事實上這就是正確的學習方法。但前提是,首先你要在編程環境里親自動手寫,不能抄在紙上,第二,在開始寫之前你要先了解算法的宏觀原理,然后一句一句寫,一句一句想,搞清楚為什么這么寫,每一句的含義。最后,寫完一遍之后要試著自己寫一下,反復練習確保自己完全掌握
抄代碼是一個增加肌肉記憶,強制自己思考,防止走神的過程,初學階段這個過程對大多數人來說是絕對有重要意義的。
作者:靜陽
https://www.zhihu.com/question/387940895/answer/1187406552
答:抄大佬寫的代碼確實是有用的。
我們上課不就是先看著老師做一遍案例嘛,抄代碼其實可以看作是模仿例題。
但抄別人代碼只是第一個階段,如果一直靠抄別人的代碼是很難進步的。抄別人的代碼主要是初步的學習,在這之后我們就需要進行實踐。這就是為什么計算機專業在老師上完課以后有實驗課自己敲代碼。
所以,我認為第二階段就是參考大佬們的代碼,寫出自己的代碼。這一步是把別人的變成自己的。這一步實現以后,一定要注意!對比!。有對比的學習,記憶更加深刻,進步也會更快,了解大佬為什么是大佬,為什么大佬是這么寫的,這樣寫有什么好處優勢。
第三階段,我認為就是開始自己創造,自己寫代碼。很多朋友是存在老師說的會寫,但是一旦離開老師,自己在做項目就啥也不會。這一階段就是開始獨立的寫代碼,降低依賴性。
第四階段,我認為就是加快自己寫代碼的速度和提高自己寫代碼的質量。這就是成長吧(狗頭滑稽)
第五階段,我認為就是可以靜靜的裝逼,成為別人眼中的大佬,接受別人膜拜,讓別人抄你的代碼,向你提問。狗頭狗頭
為什么我這么清楚,因為我只是第一階段的菜雞,后面都是我編的。
作者:架構師
https://www.zhihu.com/question/387940895/answer/1211997634
首先謝謝邀請,作為一個工作10年+的 “老人”說兩句吧
作為初學者,抄代碼肯定能加強你對代碼的熟悉感,這里包括語法,一些常用概念等。對著敲代碼頂多也是增加你對語言的熟練程度而已。
數據結構作為編程最基本的內功,重在理解。你只有理解了原理,才會明白別人為什么要這么寫,只有內功練到一定程度,才能識別別人的代碼是不是值得超的代碼。當你把數據結構理解深透之后,你就會發現別人的代碼有時候不是最完美的,這個時候你就有自己的邏輯了。就像做數學題一樣,你總是抄別人的答案沒用,你最終要理解解題過程,解題思路,這才是一個初學者要學的。
同樣作為過來人,學習編程是有一點點捷徑的,那就是找一個資歷深厚的老師,不懂就要問,知道自己明白。不過這樣的老師現實中很難找,當然自己努力也很重要。
學習編程切記不要浮躁,靜下心來,理論+實踐才是硬道理
作者:扶余城里小老二
https://www.zhihu.com/question/387940895/answer/1182895268
一點用途沒有。你看數據結構書的時候,都是大佬把環境給你搭建好了,你直接造個算法函數,輸入數據,就ok了。
事實上,從printf顯示搬到圖形控件上顯示,你還距離一個圖形庫,比如qt,mfc,wxwidget,ue4這類的庫。然后你就得畫大量時間去學習這些前端內容。慢慢地你發現,你忘記了初衷,然后開始想學習如何掌控這些前端圖形控件,你搞得這些窗口,都是一些華而不實的東西,雖然你也知道這么個情況,但是呢,你仍然繼續著昨天的努力。
假如你選擇的是qt,那么你就得學習qt的信號和槽,還有一堆q打頭的類庫和用法。moc這些東西。你就養成了使用非c++的東西,慢慢的你開始學習qml腳本,然后就過渡到了pyqt里面。緊接著,你就想跟pytorch接軌,搞起了深度學習。
然后你就在鮮花和掌聲中,告別了c++。
這就是殘酷的現實。點贊才能夠逆天改命
下載1:OpenCV-Contrib擴展模塊中文版教程
在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。
下載2:Python視覺實戰項目52講
在「小白學視覺」公眾號后臺回復:Python視覺實戰項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰項目,助力快速學校計算機視覺。
下載3:OpenCV實戰項目20講
在「小白學視覺」公眾號后臺回復:OpenCV實戰項目20講,即可下載含有20個基于OpenCV實現20個實戰項目,實現OpenCV學習進階。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據研究方向邀請進入相關微信群。請勿在群內發送廣告,否則會請出群,謝謝理解~
總結
以上是生活随笔為你收集整理的抄代码对自己编程提高有用吗?的全部內容,希望文章能夠幫你解決所遇到的問題。