零基礎(chǔ)向:為什么要學(xué)習編程&如何入門編程


打算把公眾號和知乎專欄的文章搬運一點過來。
不知道B站會不會判定抄襲我自己…
話說回來…如果不會判定的話那專欄豈不是又要變抄襲重災(zāi)區(qū)了…
歷史文章可以去關(guān)注我的公眾號:不二小段,或者知乎:段小草。
也歡迎來看我的視頻學(xué)Python↓↓↓

這篇文章回答以下幾個問題:
我們?yōu)槭裁匆獙W(xué)習編程?
非計算機學(xué)生,如何對編程產(chǎn)生興趣?
零基礎(chǔ),如何入門編程?

第一個問題:我們?yōu)槭裁匆獙W(xué)習編程?
如果說和編程有關(guān)的最經(jīng)常收到的提問,莫過于如何(零基礎(chǔ))入門編程/Python/爬蟲。剛開始收到這種問題,還會認真地寫點回答給些建議,后來見得多了,發(fā)現(xiàn)絕大多數(shù)都是只說不做的伸手黨,漸漸地也就懶得回答了。
我們?yōu)槭裁磿葻嶂杂凇皩W(xué)習”,又熱衷于放棄呢?
其實說起來,我是很熱衷于號召乃至幫助大家學(xué)習編程的,雖然我正處于并且將長期處于編程的入門水平,但是我實在是有太豐富的入門經(jīng)驗了,以至于我已經(jīng)很久沒有在市面上買到、讀到我理想中的入門文章了。了解我的朋友都知道,我經(jīng)常會拉著他們忽悠他們學(xué)編程,其實最初是因為義務(wù)幫忙太多,想著教會徒弟閑了師傅。結(jié)果皇帝不急太監(jiān)急,往往是虎頭蛇尾。
在我自己的觀察里,現(xiàn)在很多人患上了知識恐慌癥(包括我自己),進而衍生出了“馬克黨”和“收藏夾黨”,每每看到精品文章、入門教程,評論區(qū)“Mark”之,再往收藏夾一丟,從此相忘于江湖,知道某天翻起,已經(jīng)忘記當時想看什么想學(xué)什么。如此循環(huán)往復(fù),給自己一種每天都在接受新知識的錯覺,殊不知輕飄飄的馬克和再滿的收藏夾,都不會把知識塞進你的腦子里。
說白了,在這個信息爆炸的社會,我們需要給自己一種時刻不停地學(xué)習的錯覺??吹絼e人會這個懂那個,就往自己身上套,無怪乎如今智商稅越收越多,割完一茬又一茬,不全是知識恐慌鬧的嗎。
但是,在許多無用的努力和浪費里,我卻始終堅定:人人都應(yīng)該懂點編程!
理由很簡單,套用現(xiàn)在流行的時髦說法,現(xiàn)在是IT(信息技術(shù))時代,以后是DT(數(shù)據(jù)處理技術(shù))時代,而未來是AI(人工智能)時代。編程,則是邁入新時代必不可少的一塊敲門磚。我們一直講,編程語言編程語言,語言語言,你不學(xué)會和機器對話的語言,又如何使用乃至掌控機器呢?
編程是生產(chǎn)力,可以幫人節(jié)約非常多的重復(fù)勞動。舉個栗子,上周末回家,接到我哥的電話,幫他在職介所的兩張Excel表里根據(jù)身份證號的比對結(jié)果自動填表,學(xué)過Excel的同學(xué)都知道,一句VLOOKUP的事嘛。但是在沒有學(xué)會這個公式之前,人工比對幾百人的表格就要花去一下午的時間。節(jié)約下來的時間,不就是你的財富嗎?再直白一點,學(xué)點編程,技能傍身,混不下去了也能養(yǎng)活自己,技術(shù)不斷精進,收入也會隨之增長,這或許也是最實在的收獲。
有人又要說,我不跟數(shù)據(jù)打交道,也不靠編程養(yǎng)活自己,為什么要學(xué)編程?知乎大V ze ran在回答“你會為什么喜歡上編程?”時說:
編程是最容易習得的超能力。
何意?當你看到別人可以輕松搞定重復(fù)性工作,當你看到別人輕松抓取到導(dǎo)師布置的數(shù)據(jù)工作,當你看到人工智能切實改變自己的生活,你可能會高呼:Magic!殊不知,編程這種“雕蟲小技”,實在是最容易習得的超能力了。這件事情,真的不難,但卻可以改變很多很多。你可以不學(xué)習,但不可以不了解;你可以不認同,但未來可能不得不去……擁抱變化。

第二個問題:非計算機學(xué)生,如何對編程產(chǎn)生興趣?
于是有人要問了,我不是學(xué)計算機的,甚至不是理科生,二指禪敲鍵盤,看見字母就眼花,看代碼如天書,如何才能對編程產(chǎn)生興趣?
興趣是最重要的老師,沒有興趣,沒有目的導(dǎo)向,是很難有效學(xué)習的。關(guān)于獲得興趣這件事,其實有些通法,然而矛盾之處在于:我們究竟是因為有興趣而去做一件事,還是因為做一件事的成就感而對它感興趣?
這也是我的一個主要觀點,我在這里不再贅述如何把編程聯(lián)系工作生活,也不再贅述如何堅持一份熱愛,雖然這些都是有效的做法。但是如前文所述,學(xué)習編程,已經(jīng)是這個時代你不得不去面對的一件事情,而培養(yǎng)興趣,只是讓你在這條不歸路上走的更加心甘情愿而已。
興趣和獲得感,是相輔相成的一件事情。你很喜歡去做一件事,但是這件事卻無法帶給你絲毫的長進、收獲或者新鮮感,那么你的興趣會一點一點消失;某件事你雖然很陌生,但是你總能看到自己做出的成果,你每天活在進步中,也自然會對這件事越來越感興趣。
學(xué)編程亦是如此。在我看來,很多人對編程畏難,很多人連入門都摸不著方向,實在是因為指導(dǎo)方針出了問題。編程難嗎?難,學(xué)到精深處,需要大量的數(shù)學(xué)基礎(chǔ)和推導(dǎo),需要投入大量的精力,學(xué)好了能輕松月入X萬;編程簡單嗎?簡單,零基礎(chǔ)成為一位“hello world”程序員也不過半天工夫。這并不矛盾,這就好像你是初入江湖的小蝦米,偏偏要拿著木棍去挑戰(zhàn)最終BOSS,BOSS打不過,小兔子小猴子小熊小野豬你還打不過嗎……
所以,如何培養(yǎng)興趣,這個問題的答案在我這里便是,選對正確的入門方向以后,不斷依靠獲得感、成就感和虛榮感(沒錯就是虛榮感,要敢于show off)提供給自己正反饋,進而鞏固自己的興趣。

第三個問題:零基礎(chǔ),如何入門編程?
那么,對于零基礎(chǔ)的朋友,究竟如何入門編程才算做正確的方向?
首先要明確一點,編程之所以被成為超能力,在于其無所不能。學(xué)到深處,你自然可以跳脫限制,隨心所欲;入門之時,你卻處處碰壁,像蹣跚學(xué)步的孩童。其實如同學(xué)習外語一樣,學(xué)的好了可以斗酒詩百篇,學(xué)的差者也能勉強日常讀寫。
單單討論入門編程,我為大家指兩個方向:一是寫網(wǎng)頁,二是寫爬蟲。
大家覺得編程很難,編程很神秘,卻對Office不是那么畏懼,其實在于Office套件屬于WYSIWYG(所見即所得)的軟件。而大多數(shù)情況下的編程都是面對枯燥的代碼,經(jīng)歷了艱深的入門,卻很難看到代碼的實際效果,更不要提理解其內(nèi)部原理和運行過程了。
但是也有例外,網(wǎng)頁和爬蟲這對相愛相殺的孿生兄弟,就是學(xué)習編程中所見即所得的代表。
先說網(wǎng)頁。我們?nèi)粘g覽的網(wǎng)頁是HTML格式,其本質(zhì)是一個文本文檔,和txt是沒有差別的。我們之所以能看到頁面中各式各樣的圖片、視頻、動畫效果,其實依賴于瀏覽器對HTML中標簽的渲染。這就意味著,你只需要打開一個.txt的文檔,寫上幾行簡單的字母,拿到瀏覽器中打開,就能直接看到最終效果。進而你不停地學(xué)習更多標簽、更多知識,不停地在瀏覽器中看到其效果,就能在這種反饋感中持續(xù)地學(xué)習下去。
學(xué)習網(wǎng)頁,推薦給大家一個網(wǎng)站,時間關(guān)系,就不再寫更詳細了:
https://www.freecodecamp.org/
至于爬蟲。什么是爬蟲呢?爬蟲可以說是寫網(wǎng)頁的逆向過程了,如同加與減乘與除一般。網(wǎng)絡(luò)爬蟲(Web Spider)源于搜索引擎,它像一只整天掛在“網(wǎng)”上的蜘蛛一樣,把網(wǎng)絡(luò)數(shù)據(jù)爬取下來,留作處理。而在現(xiàn)在的海量信息時代和未來的大數(shù)據(jù)時代,網(wǎng)絡(luò)爬蟲自然成為獲取網(wǎng)絡(luò)公開數(shù)據(jù)的一項必備基本技能(在此不討論爬蟲的道德困境)。
如同寫網(wǎng)頁文檔的所見即所得,寫爬蟲程序時你也很容易能看到自己每一步程序的輸出結(jié)果,當你有一個具體需求(一般是批量抓取一系列有規(guī)律網(wǎng)頁的有規(guī)律數(shù)據(jù))時,這樣的輸出結(jié)果帶來的反饋可以激勵你一點一點完成一個復(fù)雜的程序。
至于學(xué)習爬蟲的建議嘛,本來想說跟我學(xué)習就夠了,畢竟中文環(huán)境的幾本書我看過以后覺得不甚滿意(并非寫的不好,只是章節(jié)體系和一些具體例子我不喜歡),而外文語境的書翻譯過來已經(jīng)略顯過時,不翻譯過來對一部分朋友又有語言障礙。但是我實在是一個怠惰的人,雖然最近勤奮筆耕,指不定何時就又咕咕咕地放大家鴿子。
好在以前有所積累,我以前寫東西都在知乎,在知乎的三年里,風向變了很多。以前很多人熱衷于寫入門文章,后來大概是自己進步了,入門文章不寫了,反過來抨擊入門文章泛濫破壞社區(qū)生態(tài);14年的時候知乎上鮮有人關(guān)注Python和爬蟲(這真的是兩個東西,雖然經(jīng)常連在一起),我隨便寫上一些,也會被人驚呼大神,擁有一些粉絲,頗有種山中無老虎,猴子稱大王的感覺。而如今爬蟲文章都快人人喊打了。也就只有我這種三年了還沒什么長進的人,依然停留在入門水平,樂得寫些入門文章,樂得繼續(xù)搞搞爬蟲吧。
知乎、簡書、博客等等平臺,實在不缺入門爬蟲的文章,雖然良莠不齊,至少學(xué)習資料充足。究其原因,無非是極其容易量產(chǎn),相似的代碼,換個網(wǎng)站就是新的數(shù)據(jù),換個數(shù)據(jù)就是新的結(jié)論與文章,炮制熱點文章簡直不要太容易。
如果一定要推薦的話,《Python網(wǎng)絡(luò)數(shù)據(jù)采集》是一本不錯的入門書籍,只是書中示例都是國外網(wǎng)站,具體實戰(zhàn)可以自己找其他例子。
零零散散寫了許多,其實其中很多觀點都可以拉出來單獨成文。時間倉促,文展開不多,不夠豐富,以后會多記多寫。
