我認為計算機領域真正的學習應該是「部落格式」的,即遵循「遇到問題->查閱資料->弄懂問題->有成就感->總結記錄」,早些時候我把這個叫做「需求驅動學習」。在整個專案遷移結束之後,嘟嘟開始對遷移過程進行復盤,發現以下幾點需要搞明白:
為啥多程序變數不能共享
為啥有gil在多執行緒就不好用了
為啥乙個非同步任務阻塞會影響其他任務
於是嘟嘟開始了新一輪的調查研究,在經歷過以往的教訓之後,嘟嘟學會了在乙個404的**上搜尋404的資訊。這才明白了程序和執行緒的關係,明白了程序如何通過訊息佇列進行通訊,明白了非同步程式設計的好處和侷限性以及事件迴圈的原理。無論是程序、執行緒、協程還是纖程,本質都是想要達到乙個目的,即「在需要的時候占用cpu,不需要的時候釋放cpu」。找了一堆的資料之後,嘟嘟又開啟了大學時嶄新的作業系統課本,把處理器這一章從頭讀了一遍,發現醍醐灌頂,每一句都是好東西,感嘆自己當時上課怎麼就沒發現這本書的精妙之處。感慨之餘,決定把自己的感受記錄下來,標題就叫《關於計算機學習》。
從本科一年級第一節程式設計課開始,我就喜歡上了程式設計。之後整個一年級都沉浸在acm刷題和囫圇吞棗的學習之中。雖然當時只會命令列程式設計,但是還是做出了一些小玩意,比如自動計算遊戲中交易的收益、收集名偵探柯南tv版的分集資訊等,當時沒什麼備份的概念,也不懂版本控制,現在程式都遺失了,留下來的只有乙個基於mfc的計算器。
我是什麼時候有了「還是制定專業課計畫的那幾個老頭厲害,是我當時太年輕了」這種想法呢?在大二結束和大三開始這段時間,隨著寫**越來越多,接觸的領域越來越多,我開始做了乙個在當時看來算得上是巨無霸的專案,從前端到後端都是我乙個人完成。和我之前接觸的專案不同,這個專案是真的有很多使用者的(笑),所以系統上線之後不斷暴露出越來越多的問題,比如資料庫查詢很慢,比如網路延遲很高,比如客戶端卡頓等。在給自己收拾爛攤子的時候,開始重新學習了多執行緒、資料庫、計算機網路(主要是退避演算法之類),然後猛然驚覺,「這不就是我大學裡的專業課麼?」。
時間一晃到了現在,我已經研二了。在給師弟師妹們介紹我那點不成器的經驗時,我的觀點也從「多實踐多程式設計」轉變成了「先把基礎打好」。電腦科學與技術的專業課都很重要,無論講課的老師水平如何,都一定要學好,它們是構造整個網際網路空間的基向量。話雖如此,這並不代表我完全同意目前計算機教學的思路,我認為計算機領域真正的學習應該是「部落格式」的,即遵循「遇到問題->查閱資料->弄懂問題->有成就感->總結記錄」,早些時候我把這個叫做「需求驅動學習」。
為什麼我們都不愛聽大道理?為什麼我們聽了那麼多道理仍然過不好這一生?為什麼我們反感雞湯?
我認為計算機的這些基礎課就像所謂的大道理一樣,沒有相關的經歷作為培養基的話是無論如何也不可能理解的,自然只能覺出枯燥無味和腐朽陳舊來。但是倘若踩過了無數的坑就會明白,這些基礎課本字字珠璣,毫不過時(也可見我們的科學發展其實並沒有大家想的那麼快),古人誠不我欺也(有多少人都寫成「誠不欺我」,意思還是乙個意思,但是對話場景瞬間從項脊軒蹦到了王老大燒烤攤)。想要理解多少大道理就要踩多少坑,該踩的坑乙個都少不了。
不要誤會,我不是在宣揚基礎教學無用論,我的意思是初學者一開始不必過於深入地了解基礎知識,因此此時無法真正理解,不如先拓寬知識面,暫時了解有這麼回事就可以,把一部分的時間勻出來自己去折騰,只要智力正常並且適合幹這行,很快就會產生深入學習的需求的,這時候的學習效率遠比按部就班划拉書本要高很多。以嘟嘟來舉例,學習處理器排程的過程可以分為以下幾個階段:
了解到一切計算都被分解成指令交給處理器順序執行查閱類似實現的開源**,學習,重複踩坑,完成需求
查閱課本或工具書,學習程序和執行緒的原理、關係以及區別
拓展了解協程、纖程、actor等非同步程式設計模式
接觸nodejs、python、c#、golang在多工上的做法,對比學習
感覺自己很厲害,寫部落格交流學習,一下筆才發現還有很多細節不懂,繼續學習
開始踩下乙個坑……
或許你又會問,總是實現乙個又乙個大同小異的需求,如何才能擺脫成為crud boy的命運呢?多想,多拓展,多總結記錄,並樂在其中,it』s that ******.
關於如何學習計算機
經過了將近乙個月的大學生活,我基本適應了大學生活,但有乙個讓我不是特別適應的便是大學的學習生活,在大學的生活中,我們的老師真的不是像高中老師一樣一點一,手把手的教學,有些知識點也是一閃而過,只要稍有溜號可能這堂課就聽不懂了。所以,自己最近也在摸索如何學習計算機的相關知識。首先,對於上課溜號問題,其實...
關於計算機
每當我們看到什麼人工智慧 資料分析 作業系統等等,總是會覺得,wahhho,計算機居然可以這麼神奇,居然可以完成這麼多工作。當然,我曾經也這麼以為,感覺很厲害,甚至可以自己學習。有時會很敬畏,甚至自己想想都會覺得可笑。可是如果仔細思考就會發現,計算機其實什麼也不會,他只是會簡單的0和1的與或非運算,...
關於學計算機
東學西學?學了一堆亂七八糟的東西,到頭來,很多東西掌握都是特別淺,也更加迷茫了,都不知道學什麼好了,也給人一種學什麼知識都特別的無力,不斷的懷疑自己,自己到底適不適合這個行業,能不能在這個行業混下去,沒有心情去想其他太多的事情,也強制自己不想其他的事情,集中精力去學知識,可是存在很多的問題,比如該學...