怎麼自學python程式設計 零基礎如何自學程式設計?

2021-10-10 03:55:52 字數 3181 閱讀 9279

對於所有程式設計學習者,尤其是零基礎的同學們,在學習的初期,一定要給自己做乙個思想上的轉在我的程式設計學習理論中,這個思想的轉變至關重要,什麼時候你把這個思維轉換過來了,你就是真正上道的那一天。

這個思維轉換就是:不要把自己當學生,而是要把自己當開發者。

不同的身份認同感,最後會導致不同的行為模式,而這行為模式,會對你的程式設計學習造成非常大的影響。

乙個很有名的學習法叫做費曼學習法,這個學習方法簡單地說,就是在學完乙個東西之後,去給別人講明白,注意,是講給別人聽,當你寫成文章發表在網上的時候,你自然會去用更通俗的語言,更清晰的邏輯去講述這個事物背後的邏輯,這個過程,是對自己學習的乙個檢驗,也是加深映像,整理思路的重要過程。

那麼如果你是去記筆記的話,很有可能,你不會去試圖講清楚這個東西,而是傾向於去照抄,或是不完全照抄,以「提綱」或是「知識點」的形式抄在本子上,說句實話,照抄的筆記,真的沒用,因為現在搜尋引擎的能力已經可以讓你把大多數東西快速找到,你為什麼還要照抄到筆記本上呢?從功利的角度考慮,技術文章的寫作,別人可以直接訪問,也可以逐漸累積你的影響力,乙個好的個人技術部落格,會給你的簡歷加分很多,而乙個厚厚的筆記本,沒有人會管你記了什麼。

區別二:以學會xx為目標vs以做出xx為目標

你會發現,學生思維裡面有乙個重要的特點,就是他們總是特別關注自己「學會了什麼」,不僅如此,他給自己定的目標,定的計畫,永遠都是」學會xx書第xx章內容"。

學生永遠在準備,而開發者早已動手。

如果你還在上學,學生思維是「這個學期我要學會xx課程」,而開發者思維是「這個學期我要做出xx"。

如果學python,學生思維會拿起一本教材,開始從頭到尾看,我不知道你們發現沒有,幾乎所有那種程式語言教材,長得都差不多,上來先是基本的語法,基本的整型變數,浮點型變數之類的,然後伴隨著幾個小的教學例子。

開發者學python,他第一步絕對不是去書店買教材,而是先去了解,python適合做什麼,然後他了解到,python適合做爬蟲,資料分析,ai,還能很輕鬆地搭建web後端,之後他逛了一下午github,看了看那些python高星專案都是做啥的,於是他給自己定下了這個目標:

半年時間內,我要用python和python周邊的庫搭建出乙個**,這個**服務端運用爬蟲技術爬取一些資料,可以提供知乎粉絲性別比例分析功能。

學生繼續看書,乙個個的知識點去記憶,拿著他的小本本去總結知識點,而開發者上言網簡單的看了下reference doc的簡單互動式語法教程後,便馬上開始了變做邊學的過程,有了乙個實際的專案目標,朝著這個目標走,不斷地發現自己不會這,不會那,然後有目的性的去補足知識,他了解到了beatuiful soup作為爬蟲主庫,flask作為後端web服務主庫,然後會去看一些簡單的教程,在這個過程中,基礎語法得到了熟練,也訓練了工程能力。

學生的成就感**於學會了什麼,開發者的成就感**於做出來什麼開發者很功利,他們深知他們學會的所有東西都是為了開發出偉大的產品而服務的,所以他們絕對不會出現「在學乙個東西,但是也不知道學這個用來幹嘛」的窘境。

區別三:厭惡不確定性vs接受不確定性

學生們總是對「確定性」有一種幾乎瘋狂的追求,他們總問,「c語言學到什麼程度就一定能被大廠錄取?」,「掌握xx要幾個月?」,「上課認真聽講,認真做筆記,考試是否一定能上80分?」

這種對確定性的追求,直接導致學生有一種下意識的舉動:

幹什麼都等準備好了再去做,但是卻「永遠在準備」。

因為他們害怕那種不太會還要硬上帶來的各種不確定性,他們渴求一種內功的修煉,寄希望於」把基礎夯實了,就能順暢的開發,所以還是先夯實基礎吧!」

開發者選擇接受這種不確定性,他們願意」邊學變做",因為他們知道,最初學習敲鍵盤的時候,他們就是這麼做的,邊看某個按鍵在哪,邊打字,做和學交叉進行,他們始終抱有疑問,他們又始終試圖通過學習的延伸拓展去解決疑問,他們彷彿就像是拿著燭火在迷言中行走的俠客,在遊戲的一開始,對迷言的結構一無所知,通過不斷地摸索和碰壁,逐漸建立起對整個地圖的認知。

區別四:線性學習vs遞迴學習

學生喜歡線性的學習,因為線性的學習(拿本教材從頭到尾慢慢看)正是符合了他們對確定性的追求,可惜這違背了學習的本來面目。

開發者知道,人腦最不擅長的就是線性列舉,即便我們認識幾千個漢字,但是我們無法去線性地去將所有認識的漢字列舉出來,我們的大腦,本就不是用來進行線性思考的,而複雜度上了一定程度的知識,線性的掌握,基本不可能。

有難度的知識,往往是這樣的:為了搞懂a,而去學b,為了學會b,而去學c,這叫遞迴學習,遞迴雖深,但有回溯,它最終會回溯到我們的起點。

所以開發者的學習更偏向於遞迴式的學習,而且可能會以乙個知識點為起點,去完成樹狀知識外圍的遍歷。(有點像搜尋引擎去爬蟲)

知識是樹狀結構,或者網狀結構。

當我們試圖遍歷乙個樹的時候,最簡單直接的方式就是遞迴,如果你非要去」線性」的學,那就你是把程式設計學習當成了鍊錶,還是「單向」的,這種演算法怎麼可能用來遍歷樹呢?

區別五:拿會xx定義自己vs拿xx專案作者定義自己

linus從來不說自己精通c語言,與其說他不需要,不如說他不關心,因為他是linux和git的作者。

linus 這個程式設計師之神就是乙個典型的開發者思維的人。

我希望所有計算機專業的同學們,等你們畢業了之後,你的github應該是綠油油的,而不是貧痛的一片白。

我希望你們用你們的簡歷裡寫的是「用c語言實現了乙個xx引擎,github鏈結github.com/******」,而不是」精通c"。

我希望學生們明白,任何乙個像樣子的專案,製作週期至少是按月計,你的大學有四年時間,哪怕乙個專案做一年,你也能拿出兩三個好專案,不一定有多少star,但是要完整,文件,測試,一應俱全。

我希望學生們知道,做專案和寫課後習題不一樣,課後習題乙個小時,而專案是長期不斷努力,不斷學習突破的過程,需要你每天都搞,善始善終,最終拿出成果來。

我希望學生們明白,這個世界衡量乙個人的成就,從來都是「他做了什麼」,而不是「他學會了什麼」,不要總用修煉內功去感動自己,必要時,也請你為開源世界貢獻一點自己的力量。

我希望學生們明白,考上985,拿獎學金,這都不叫成就,因為和別人沒關係,只有真正影響到別人的東西,讓這個世界變得更好的東西,才是值得去「秀」的。

最後送給學生們一句話:願你早日忘記學生的身份,以開發者的姿態,面對這個世界。

零基礎如何自學程式設計

首先學習程式設計,需要具備以下三個條件。第一 硬體保證,具備一台筆記本或者台式電腦,操windows作業系統,效能高低對程式設計的前期學習幾乎無任何影響。第二 買一本c語言的紙質書籍,便於隨時攜帶,隨時翻閱。如果是電子版本,長時間盯著看會對眼不利。建議選擇c語言,雖然門檻較高,學習難度相對較大,但c...

自學日語,零基礎

2013年九月,才是接觸了五十音,背了下來。之後也學習了幾課日語課,也沒堅持下來。到滬江日語購買的課程快到期了,才開始加快速度走馬觀花的聽完課程。之後就時不時的找日語電視劇集來看,日語電視劇集還蠻好看的,那個時候就沒怎麼看國內的電視劇集。之後懶了,就沒學,都忘得差不多了。到現在又忽然想學習了。總結一...

零基礎自學PHP

由於公司需求 需要自學php搭建伺服器 完成crm系統 php 指令碼以 尖括號 問號 php 問號 尖括號結束 echo 顯示命令 我們可以讓他顯示任何可見的字元 php 變數 必須要以 開始。變數的首字母不能以數字開始 變數的名字區分大小寫 變數不要用特殊符號 中文,不算特殊符號 變數命名要有意...