昨天(25 號)知乎刷到一個問題,“如果讓你重新開始學計算機,你的學習路線會怎麼選擇?”,有個使用者的回答我覺得比較好,但是我自己大部分不會啊哈哈哈。總結一下就是:
- 系統學習計算機:計算機組成原理、計算機網路、作業系統原理、資料庫。
- 資料結構、演算法。
- 物件導向設計。
- 系統設計。
- 做專案。
那我自己的學習路線是怎麼樣的?說實話,是反著來的。我的學習從 2021 年的 C 語言開始,之後淺嘗輒止,對於底層並沒有進一步的研究——雖然我自己從接觸計算機的那一刻開始就覺得底層的東西是最好玩的。
2022 年末到 2023 年,再到現在,我就開始做 Web 專案了,當然我意想不到的是我後面的學業方向也是 Web 相關的前端。但是這兩者並沒有直接的關係,因為我在報志願的時候根本不知道學的什麼,我是在第二年才知道的。
可能系統的學習太枯燥了,對我來說接觸一個新東西的時候,看教程和手冊,我的腦子好像沒在思考啊?!只有做實操專案的時候,才能讓自己腦子動起來。這就不得不說說 CSS 了,某種程度上我是寫得多,再加上臨摹的專案的寫法剛好比較規範,才能到現在一種比較好的境界(相對)。
計算機確實是需要實踐理論相結合的(我加了個“確實”是因為以前聽到過這種話但是無感,現在確實理解了)。在你有了一些寫專案的經驗以後,帶著你寫專案時的遇到的問題和思考,回頭去看教程和手冊,是最快學習的方式。不過我依舊認為自己是個巧合,可能剛好電腦玩的多,和實踐對上了…… 但核心還是多思考。
不過計算機本身就是高度封裝抽象的一個東西,寫上層的東西不需要關心底層。我關注 Web,但我學 Web 之前不需要去特意學一遍彙編,作業系統設計,只需要關心功能。對一個計算機專業的學生,知曉底層的原理是有必要的,所以我確實不想一直停留在 Web 這個層面。更何況越到後面,也適合底層的理解有關聯的。最佳化可能也是如此。最近做輪播圖,CSS 用的是絕對定位然後配合過渡動畫,但是卡卡的,突然想起來 left
、right
屬性會影響元素的幾何佈局,也就是說,瀏覽器在每次幀更新時需要重新計算元素,每次重排和重繪都很浪費效能,所以我就換 transform
了,因為計算 transform
的時候是 GPU 單獨計算一個圖層,不會觸發重排和重繪。
再具體一點,GPU 怎麼單獨計算的呢?瀏覽器會將含有 transform
屬性的元素從主文件流中提取出來,交給 GPU 處理。這樣可以減少整個頁面的佈局計算,僅對這個圖層進行獨立渲染。那再深入一點,GPU 相較於 CPU 有啥特殊之處?我們都知道 GPU 是專門計算圖形的,為什麼要針對影像單獨獨立出一個硬體?因為需求大。GPU 專為圖形處理設計,擁有數千個小型核心,可以同時處理大量畫素的渲染任務(平行計算),而 CPU 的核心數量較少(通常 4-16 個),更多用於順序任務。GPU 可以同時對成千上萬的畫素進行處理,例如同時對點陣圖中的多個點進行旋轉、縮放、透明度處理。同時,GPU 內部硬體還針對矩陣操作(如變換矩陣)進行了最佳化,而矩陣操作是 transform
(如旋轉、縮放、平移)背後的數學基礎。
扯遠了。總的來說,目前自己的知識面還是太窄,或者說廣而淺,很碎。這也能給我帶來一些好處,咱換個角度,至少每次系統性的學習一個新知識的時候,對我來說永遠都是豁然開朗的。因為總有一些詞語或者思路在哪裡見過。希望自己能一直保持主動學習、思考,從實踐中汲取經驗的能力。另外一點就是學習技術,虛心請教不擺架子。
最後感慨一下,多思考多學習這種話居然從我嘴裡說出了:以前不是很愛聽這種偏說教的詞,自己也對這種雞湯無感。現在回頭一看,確實很重要,只有體會過才能知道有多重要。