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