全無(wú)計(jì)算機(jī)基礎(chǔ)的大學(xué)生怎么學(xué)習(xí)編程語(yǔ)言?
對(duì)于所有編程學(xué)習(xí)者,尤其是零基礎(chǔ)的同學(xué)們,在學(xué)習(xí)的初期,一定要給自己做一個(gè)思想上的轉(zhuǎn)變。
在我的編程學(xué)習(xí)理論中,這個(gè)思想的轉(zhuǎn)變至關(guān)重要,什么時(shí)候你把這個(gè)思維轉(zhuǎn)換過(guò)來(lái)了,你就是真正上道的那一天。
這個(gè)思維轉(zhuǎn)換就是:
不要把自己當(dāng)學(xué)生,而是要把自己當(dāng)開(kāi)發(fā)者。
不同的身份認(rèn)同感,最后會(huì)導(dǎo)致不同的行為模式,而這行為模式,會(huì)對(duì)你的編程學(xué)習(xí)造成非常大的影響。
做好心里準(zhǔn)備
自學(xué)編程的彎路多得數(shù)不完,坑多得踩不完。如果你決定要自學(xué)編程,就意味著踏上了一條面對(duì)困難、挫折和失敗的無(wú)盡之路,要想清楚自己能不能承受這些挫折,自己能不能堅(jiān)持走到最后。
自學(xué)編程過(guò)程中總會(huì)遇到這樣一些問(wèn)題:* 編程環(huán)境?不會(huì)搭建* 知識(shí)點(diǎn)好多,定義概念,格式規(guī)則,缺點(diǎn)優(yōu)點(diǎn)。。。* 剛學(xué)的知識(shí)怎么又忘了,怎么這也不會(huì)那也不會(huì)* 這個(gè)語(yǔ)法是什么邏輯,搞不懂* 教程這樣做可以,我這樣做怎么就不行?* 敲了半天代碼,一運(yùn)行怎么全是錯(cuò)誤?* 錯(cuò)誤解決不了,想放棄,狗帶* 學(xué)了這么久,感覺(jué)還沒(méi)入門* 教程內(nèi)容都是舊的,學(xué)起來(lái)費(fèi)力* 技術(shù)更新了,舊知識(shí)不管用,又要重新學(xué)
如果沒(méi)有一顆能戰(zhàn)勝這些苦惱的勇敢的心,我勸你還是盡早放棄,免得心灰意冷,身負(fù)重傷。而如果你喜歡挑戰(zhàn)艱難險(xiǎn)阻,能直面失敗,并能在失敗與痛苦中砥礪前行,那么恭喜你可以踏上編程之路,努力的去追尋自己的夢(mèng)想吧。
選定方向
編程的世界是多元紛繁的,大的方向就分前端開(kāi)發(fā)、后端開(kāi)發(fā)、移動(dòng)開(kāi)發(fā)、云計(jì)算、數(shù)據(jù)處理、智能硬件、物聯(lián)網(wǎng)、虛擬現(xiàn)實(shí)等等,光編程語(yǔ)言都幾十種。如果沒(méi)有做過(guò)功課,貿(mào)然進(jìn)入只會(huì)分分鐘懵逼。所以最好是根據(jù)自己的興趣愛(ài)好再結(jié)合市場(chǎng)前景,先選定一個(gè)方向,再選擇一門語(yǔ)言,然后頭也不回的深深扎進(jìn)去。區(qū)別一:記筆記 VS 寫技術(shù)文章學(xué)生有一個(gè)特點(diǎn),就是他們喜歡記筆記,但是開(kāi)發(fā)者不怎么記筆記,而是會(huì)把自己學(xué)會(huì)的東西寫成技術(shù)文章、教程的形式發(fā)表在技術(shù)博客或者知乎等網(wǎng)站上。
一個(gè)很有名的學(xué)習(xí)法叫做費(fèi)曼學(xué)習(xí)法,這個(gè)學(xué)習(xí)方法簡(jiǎn)單地說(shuō),就是在學(xué)完一個(gè)東西之后,去給別人講明白,注意,是講給別人聽(tīng),當(dāng)你寫成文章發(fā)表在網(wǎng)上的時(shí)候,你自然會(huì)去用更通俗的語(yǔ)言,更清晰的邏輯去講述這個(gè)事物背后的邏輯,這個(gè)過(guò)程,是對(duì)自己學(xué)習(xí)的一個(gè)檢驗(yàn),也是加深映像,整理思路的重要過(guò)程。
那么如果你是去記筆記的話,很有可能,你不會(huì)去試圖講清楚這個(gè)東西,而是傾向于去照抄,或是不完全照抄,以“提綱”或是“知識(shí)點(diǎn)”的形式抄在本子上,說(shuō)句實(shí)話,照抄的筆記,真的沒(méi)用,因?yàn)楝F(xiàn)在搜索引擎的能力已經(jīng)可以讓你把大多數(shù)東西快速找到,你為什么還要照抄到筆記本上呢?
從功利的角度考慮,技術(shù)文章的寫作,別人可以直接訪問(wèn),也可以逐漸累積你的影響力,一個(gè)好的個(gè)人技術(shù)博客,會(huì)給你的簡(jiǎn)歷加分很多,而一個(gè)厚厚的筆記本,沒(méi)有人會(huì)管你記了什么。
區(qū)別二:以學(xué)會(huì)XX為目標(biāo) VS 以做出XX為目標(biāo)你會(huì)發(fā)現(xiàn),學(xué)生思維里面有一個(gè)重要的特點(diǎn),就是他們總是特別關(guān)注自己“學(xué)會(huì)了什么”,不僅如此,他給自己定的目標(biāo),定的計(jì)劃,永遠(yuǎn)都是”學(xué)會(huì)XX書第XX章內(nèi)容“。
學(xué)生永遠(yuǎn)在準(zhǔn)備, 而開(kāi)發(fā)者早已動(dòng)手。
如果你還在上學(xué),學(xué)生思維是“這個(gè)學(xué)期我要學(xué)會(huì)XX課程”,而開(kāi)發(fā)者思維是“這個(gè)學(xué)期我要做出XX”。
如果學(xué)Python,學(xué)生思維會(huì)拿起一本教材,開(kāi)始從頭到尾看,我不知道你們發(fā)現(xiàn)沒(méi)有,幾乎所有那種編程語(yǔ)言教材,長(zhǎng)得都差不多,上來(lái)先是基本的語(yǔ)法,基本的整型變量,浮點(diǎn)型變量之類的,然后伴隨著幾個(gè)小的教學(xué)例子。
開(kāi)發(fā)者學(xué)Python,他第一步絕對(duì)不是去書店買教材,而是先去了解,Python適合做什么,然后他了解到,Python適合做爬蟲,數(shù)據(jù)分析,AI,還能很輕松地搭建Web后端,之后他逛了一下午Github,看了看那些Python高星項(xiàng)目都是做啥的,于是他給自己定下了這個(gè)目標(biāo):
半年時(shí)間內(nèi),我要用Python和Python周邊的庫(kù)搭建出一個(gè)網(wǎng)站,這個(gè)網(wǎng)站服務(wù)端運(yùn)用爬蟲技術(shù)爬取一些數(shù)據(jù),可以提供知乎粉絲性別比例分析功能。
學(xué)生繼續(xù)看書,一個(gè)個(gè)的知識(shí)點(diǎn)去記憶,拿著他的小本本去總結(jié)知識(shí)點(diǎn),而開(kāi)發(fā)者上官網(wǎng)簡(jiǎn)單的看了下Reference Doc的簡(jiǎn)單交互式語(yǔ)法教程后,便馬上開(kāi)始了變做邊學(xué)的過(guò)程,有了一個(gè)實(shí)際的項(xiàng)目目標(biāo),朝著這個(gè)目標(biāo)走,不斷地發(fā)現(xiàn)自己不會(huì)這,不會(huì)那,然后有目的性的去補(bǔ)足知識(shí),他了解到了beatuiful soup作為爬蟲主庫(kù),flask作為后端web服務(wù)主庫(kù),然后會(huì)去看一些簡(jiǎn)單的教程,在這個(gè)過(guò)程中,基礎(chǔ)語(yǔ)法得到了熟練,也訓(xùn)練了工程能力。
學(xué)生的成就感來(lái)源于學(xué)會(huì)了什么,開(kāi)發(fā)者的成就感來(lái)源于做出來(lái)什么
開(kāi)發(fā)者很功利,他們深知他們學(xué)會(huì)的所有東西都是為了開(kāi)發(fā)出偉大的產(chǎn)品而服務(wù)的,所以他們絕對(duì)不會(huì)出現(xiàn)“在學(xué)一個(gè)東西,但是也不知道學(xué)這個(gè)用來(lái)干嘛”的窘境。
區(qū)別三:厭惡不確定性 VS 接受不確定性學(xué)生們總是對(duì)“確定性”有一種幾乎瘋狂的追求,他們總問(wèn),“C語(yǔ)言學(xué)到什么程度就一定能被大廠錄取?”,“掌握XX要幾個(gè)月?”,“上課認(rèn)真聽(tīng)講,認(rèn)真做筆記,考試是否一定能上80分?”
這種對(duì)確定性的追求,直接導(dǎo)致學(xué)生有一種下意識(shí)的舉動(dòng):
干什么都等準(zhǔn)備好了再去做,但是卻“永遠(yuǎn)在準(zhǔn)備”。
因?yàn)樗麄兒ε履欠N不太會(huì)還要硬上帶來(lái)的各種不確定性,他們渴求一種內(nèi)功的修煉,寄希望于”把基礎(chǔ)夯實(shí)了,就能順暢的開(kāi)發(fā),所以還是先夯實(shí)基礎(chǔ)吧!”
開(kāi)發(fā)者選擇接受這種不確定性,他們?cè)敢狻边厡W(xué)變做“,因?yàn)樗麄冎溃畛鯇W(xué)習(xí)敲鍵盤的時(shí)候,他們就是這么做的,邊看某個(gè)按鍵在哪,邊打字,做和學(xué)交叉進(jìn)行,他們始終抱有疑問(wèn),他們又始終試圖通過(guò)學(xué)習(xí)的延伸拓展去解決疑問(wèn),他們仿佛就像是拿著燭火在迷宮中行走的俠客,在游戲的一開(kāi)始,對(duì)迷宮的結(jié)構(gòu)一無(wú)所知,通過(guò)不斷地摸索和碰壁,逐漸建立起對(duì)整個(gè)地圖的認(rèn)知.
區(qū)別四: 線性學(xué)習(xí) VS 遞歸學(xué)習(xí)學(xué)生喜歡線性的學(xué)習(xí),因?yàn)榫€性的學(xué)習(xí)(拿本教材從頭到尾慢慢看)正是符合了他們對(duì)確定性的追求,可惜這違背了學(xué)習(xí)的本來(lái)面目
開(kāi)發(fā)者知道,人腦最不擅長(zhǎng)的就是線性枚舉,即便我們認(rèn)識(shí)幾千個(gè)漢字,但是我們無(wú)法去線性地去將所有認(rèn)識(shí)的漢字枚舉出來(lái),我們的大腦,本就不是用來(lái)進(jìn)行線性思考的,而復(fù)雜度上了一定程度的知識(shí),線性的掌握,基本不可能。
有難度的知識(shí),往往是這樣的:為了搞懂A,而去學(xué)B,為了學(xué)會(huì)B,而去學(xué)C,這叫遞歸學(xué)習(xí),遞歸雖深,但有回溯,它最終會(huì)回溯到我們的起點(diǎn)。
所以開(kāi)發(fā)者的學(xué)習(xí)更偏向于遞歸式的學(xué)習(xí),而且可能會(huì)以一個(gè)知識(shí)點(diǎn)為起點(diǎn),去完成樹(shù)狀知識(shí)外圍的遍歷。(有點(diǎn)像搜索引擎去爬蟲)
知識(shí)是樹(shù)狀結(jié)構(gòu), 或者網(wǎng)狀結(jié)構(gòu).
當(dāng)我們?cè)噲D遍歷一個(gè)樹(shù)的時(shí)候, 最簡(jiǎn)單直接的方式就是遞歸, 如果你非要去"線性"的學(xué), 那就你是把編程學(xué)習(xí)當(dāng)成了鏈表, 還是“單向”的,這種算法怎么可能用來(lái)遍歷樹(shù)呢?
區(qū)別五:拿會(huì)XX定義自己 VS 拿XX項(xiàng)目作者定義自己linus 從來(lái)不說(shuō)自己精通 c 語(yǔ)言, 與其說(shuō)他不需要, 不如說(shuō)他不關(guān)心, 因?yàn)樗?linux 和 git 的作者.
linus 這個(gè)程序員之神就是一個(gè)典型的開(kāi)發(fā)者思維的人.
我希望所有計(jì)算機(jī)專業(yè)的同學(xué)們, 等你們畢業(yè)了之后, 你的github應(yīng)該是綠油油的, 而不是貧瘠的一片白.
我希望你們用你們的簡(jiǎn)歷里寫的是"用c語(yǔ)言實(shí)現(xiàn)了一個(gè)XX引擎, github鏈接http://github.com/xxxxxx"
而不是"精通c".
我希望學(xué)生們明白, 任何一個(gè)像樣子的項(xiàng)目, 制作周期至少是按月計(jì), 你的大學(xué)有四年時(shí)間, 哪怕一個(gè)項(xiàng)目做一年, 你也能拿出兩三個(gè)好項(xiàng)目, 不一定有多少star, 但是要完整, 文檔, 測(cè)試, 一應(yīng)俱全.
我希望學(xué)生們知道, 做項(xiàng)目和寫課后習(xí)題不一樣, 課后習(xí)題一個(gè)小時(shí), 而項(xiàng)目是長(zhǎng)期不斷努力, 不斷學(xué)習(xí)突破的過(guò)程, 需要你每天都搞, 善始善終, 最終拿出成果來(lái).
我希望學(xué)生們明白, 這個(gè)世界衡量一個(gè)人的成就, 從來(lái)都是"他做了什么", 而不是"他學(xué)會(huì)了什么", 不要總用修煉內(nèi)功去感動(dòng)自己, 必要時(shí), 也請(qǐng)你為開(kāi)源世界貢獻(xiàn)一點(diǎn)自己的力量.
我希望學(xué)生們明白, 考上985, 拿獎(jiǎng)學(xué)金, 這都不叫成就, 因?yàn)楹蛣e人沒(méi)關(guān)系, 只有真正影響到別人的東西, 讓這個(gè)世界變得更好的東西, 才是值得去"秀"的.
最后送給學(xué)生們一句話:
愿你早日忘記學(xué)生的身份, 以開(kāi)發(fā)者的姿態(tài), 面對(duì)這個(gè)世界。關(guān)于學(xué)習(xí)方法,比如看視頻還是看書?
從效率上說(shuō),視頻要好于書,因?yàn)橐曨l所有的操作是連續(xù)的,自己出錯(cuò)了便于排查,更直接、清晰,書呢,種類很多,重點(diǎn)不同,適合不同的訴求。也適合作為查漏補(bǔ)缺使用。
再者學(xué)編程一定要多敲、多模仿、多思考。
多少人學(xué)習(xí)是一看就會(huì),一敲就廢,俗話說(shuō),鍵盤敲爛月薪過(guò)萬(wàn),鍵盤落灰狗屎一堆,學(xué)編程沒(méi)有什么竅門,就是多看別人的代碼,多敲自己的代碼,多思考為什么這樣設(shè)計(jì),記住,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。
2022年度全網(wǎng)最全Web前端學(xué)習(xí)路線https://www.bilibili.com/read/cv5650633
茅塞頓開(kāi):簡(jiǎn)歷制作\面試技巧\就業(yè)求職_嗶哩嗶哩_bilibili
https://www.bilibili.com/video/BV1Dz411b7Yh?spm_id_from=333.999.0.0
前端求職秘籍&前端技術(shù)趨勢(shì)_嗶哩嗶哩_bilibili
https://www.bilibili.com/video/BV1Q54y1B7Cc?spm_id_from=333.999.0.0
尚硅谷經(jīng)典前端面試題精講第一季(web前端大咖總結(jié))_嗶哩嗶哩_bilibili
https://www.bilibili.com/video/BV1nb411P7tQ?spm_id_from=333.999.0.0
面試官:web前端面試 - 面試官系列 (vue3js.cn)
https://vue3js.cn/interview/
2022年度全網(wǎng)最全Java學(xué)習(xí)路線https://www.bilibili.com/read/cv5216534
尚硅谷Java大廠面試題第3季,跳槽必刷題目+必掃技術(shù)盲點(diǎn)(周陽(yáng)主講)_嗶哩嗶哩_bilibili
https://www.bilibili.com/video/BV1Hy4y1B78T?
尚硅谷Java大廠面試題第2季,面試必刷,跳槽大廠神器_嗶哩嗶哩_bilibili
https://www.bilibili.com/video/BV18b411M7xz?
尚硅谷經(jīng)典Java面試題第一季(java面試精講)_嗶哩嗶哩_bilibili
https://www.bilibili.com/video/BV1Eb411P7bP?
強(qiáng)烈推薦一個(gè)網(wǎng)站:
Java面試題-幫助你通過(guò)Java面試 (zwmst.com)
https://zwmst.com/
2022年度全網(wǎng)最全大數(shù)據(jù)學(xué)習(xí)路線https://www.bilibili.com/read/cv5213600
尚硅谷C語(yǔ)言零基礎(chǔ)快速入門教程_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1qJ411z7Hf?
尚硅谷-C語(yǔ)言國(guó)二真題講解(計(jì)算機(jī)二級(jí)c語(yǔ)言考試真題)_嗶哩嗶哩_bilibili
https://www.bilibili.com/video/BV1bJ411z7ke?