首頁 >系統教程 >Linux >大學學習計劃之計算機

大學學習計劃之計算機

PHPz
PHPz轉載
2024-02-01 17:54:02589瀏覽

大學學習計劃之計算機

#1 前言

最近有不少還在讀書的同學來問我大學期間到底該學什麼,學了Java,看了JS, HTML,CSS, 嘗試了一下SSH以後似乎就迷茫了, 這其中還有不少是計算機系的同學。

毫無疑問,為了畢業後找個好工作,在大學期間應該學一些應用層的技能,掌握一門應用廣泛的語言及其框架。最好做過實際的項目,有過實習的經驗, 這些都是履歷中能看得到的加分項,是脫穎而出的重要砝碼。

但是這些東西都是一顆大樹的枝葉和花朵, 在大學期間更應該學習的是看不見的根,也就是基礎知識, 對於科班出身的人更是如此。

原因很簡單,基礎知識雖然可以在工作以後再補,但是再也找不到這麼多大塊的時間,這麼安靜的環境,讓你心無旁騖的鑽研了。

你不用考慮著第二天怎麼去應付客戶的臉色,也不用去想著怎麼去給領導解釋昨晚的嚴重Bug不是我們的問題, 你只需要單純的學習就好,看到有這麼多同學把美好的時光都花在打遊戲上,實在是令我扼腕嘆息,要是把這些時間給我就好了!

我現在只能利用一些碎片時間補一下基礎的知識,如果時光倒流,讓我再坐到圖書館中去靜靜地看書該多好!

同學甲說: 基礎,又是基礎,老劉你說了多少遍了!我耳朵都聽出繭來了!

抱歉,基礎就是這麼很重要,我還是要像祥林嫂一樣繼續囉嗦。

我認為大學期間應該搞定的基礎知識應該包括(不限於)這些:

2 C語言

大學期間不要忙著去學Java , Python等高階語言, 你應該先去搞定C語言(不是C 啊),因為這門語言太貼近機器了, 能幫助你理解計算機的運作原理,不信你看看《深入理解電腦系統》, 通篇都是C語言,它怎麼不用Java,Python去描述啊?因為他們太高級了,太抽象了,描述不了底層。

學會C語言,才能為其他基礎知識打下基礎,因為大部分基礎軟體、系統軟體都是C語言寫的,你看不懂C程式那怎麼行?

不要像我當年一樣,看到別人已經能做網頁了,自己還在命令列的小黑窗口中折騰,頭腦一熱就把C語言給扔了,後來又花了很多時間來彌補。

要記住你學會了C這門貼近硬體的,簡單又複雜的語言以後,再去學別的語言,幾乎不費吹灰之力, 他們都太簡單了!

3 理解電腦的組成原理

如果你是科班的,老老實實地把《電腦組成原理》和《數位電路》這兩門課學了,把那些實驗內容(如門電路,半加器,全加器,觸發器等)兢兢業業做好。

你應該定個目標: 自己折騰一個簡單的CPU,簡單的就是進行數值運算,複雜一點兒的可以實現指令, 如果覺得教材實在枯燥,可以結合《編碼》或者《穿越計算機的迷霧》 來學習, 如果我實在喜歡玩遊戲,可以到《我的世界》遊戲中去製造CPU啊,已經有大牛這麼做了。

4 理解操作系系統原理

作業系統太重要了, 對作業系統的理解決定了你以後工作中能達到的深度,這裡邊藏著太多極為重要的概念, 例如進程,線程的概念,鎖、調度,IO模型,虛擬儲存等等, 他們會在你以後做高效能,高並發系統這一塊兒起到重要作用。

即使你先學會了Java , SSH/SSM, 隨著你能力的提升,最後你還是得走入這些基礎知識的世界。為什麼不在大學期間把他們都搞定呢?

有人可能覺得OS太枯燥了,實在是看不下去,其實OS是一門動手實踐課, 你可以去看看早期Linux 內核的源碼(要求C語言啊),書籍文章多如牛毛; 也可以自己動手自製簡單的作業系統,視訊書籍也不少,就看你願不願意把玩遊戲的時間花在上面了。

舉個例子:哈工大的VOID同學就在本科期間從零開始做了一個類似於Linux 0.11的操作系統出來,他拿到了阿里的Special Offer , 目前在阿里就職。他錄製的《從零開始寫作業系統》影片可以在B站看到: https://www.bilibili.com/video/av12169693/

同學乙要問了: “人家是大牛,還有一個好學校,我一個三本的渣渣怎麼可能做得出來? 你這不是給我設置了一個不可能完成的任務嗎?”

確實是這樣,天才永遠只有少數,不可能每個人都成為天才,也不可能每個人都做出天才的成果。

但是我們也要在天才鋪好的道路上堅持往前走走, 也許有一天就會發現,哦,我已經超越了這麼多人了啊!

要堅持使用Linux而不是Windows,立志在後端做開發的更是要如此, 別像我大學時安裝個雙系統,結果整天寵幸Windows , 從來不翻Linux的牌子。

5 網絡, 資料庫, 編譯原理

把這三者合在一起, 是我個人覺得他們的重要性沒有前面的高。

對於網絡,需要理解網絡分層模型,可靠性傳輸原理,TCP/IP協議,Socket編程,和作業系統結合起來可以考慮寫一個Web伺服器。

資料庫的話先理解SQL、關聯式模型、事務、索引, 要深入學習的話可以看看查詢是怎麼實現的,事務是怎麼實現的, 如果確實感興趣一定要看看sqlite的源碼。

學編譯最好的方式就是自製一個程式語言了, 搞出來以後會對程式語言有個極為透徹的理解。

6 資料結構與演算法

這個重要性就不用再強調了,常常看碼農翻身的可能都要煩了,可以看看之前的文章《學習資料結構有什麼用? 》

學習的過程中除了看書、理解各種演算法和資料結構外,更重要的就是做題、做題、做題!

同學丙說: 「老劉,你說的不都是電腦的專業課嗎?」

是的,就是電腦的專業課,一般來說,工作個幾年以後你才會體會到他們的珍貴,更會痛惜大學時為什麼不好好學,就像我現在這樣。

不要侷限於學校發的教材,現在網路上的影片資源異常豐富,世界級大學的課程我們也可以看到,千萬不要浪費。

同學丁說:老劉你別瞎BB了,你讓我學Java,做項目,現在又讓我造CPU,寫操作系統,資料庫,伺服器...... 我都沒時間和女朋友約會了。

恭喜你,已經有女朋友了,超越了大部分同學了,在大學談一場戀愛,享受一下青春也是非常重要的事情。

但是我想說的是,你不可能把所有的都學會,你能做的就是集中火力突擊一個方向,那就是你最感興趣的方向。只有那些經得住寂寞,耐得住誘惑的才最有可能成功,如果再和自己的興趣結合起來,那簡直肯定成功。

總而言之,電腦的基礎知識讓你和別人區分開來,讓你有著比別人更快的加速度。

但是老劉瞎BB這麼多估計也沒太大用處,因為你不行動我也沒有辦法。

以上是大學學習計劃之計算機的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:linuxprobe.com。如有侵權,請聯絡admin@php.cn刪除