學一大堆硬體的東西,以後工作能用到多少大家都心知肚明,學這門學科的意義是什麼?


學計算機的,不知道計算機組成,是不是有點可小了?科班出身的和那些培訓學校出來的,區別在哪?不就是基礎打的牢靠,知識面廣一些嗎?

你如果不學,連負數補碼形式存放都不知道,強制類型轉換的時候,總有一天會死在這坑上面。。。

就說隔壁自動化專業的,上位機能c能Java,能qt能vs,下位機能裸片,能Linux,還有的可以搞硬體,畫原理圖,畫pcb,甚至連FPGA都能玩的起飛。。。

你覺得你只會個Java或者c++,會個平臺框架,會個設計模式,你能競爭過那些自動化的怪物們?

一些計科的同學真的應該好好想想,作為計算機專業的學生有什麼課程(知識)是你學了(掌握)而別的專業,如通信工程、自動化、軟體工程、物聯網工程、還有新開的人工智慧專業沒有學的、不會不懂的。是數據結構嗎?是java編程嗎?是計算機視覺嗎?是計算機網路嗎?

再反過來也想想,別的(作為本科生)專業的核心課,數字信號處理、數字圖像處理、感測器網路、模式識別、嵌入式系統、自動控制原理之類你會不會?

計算機科學的核心競爭力是什麼?看看華為,想想蘋果谷歌,想想中美兩國對抗,我們自己的核心競爭力是什麼,我們自己在哪兒被人磕住了脖子,BAT、拼夕夕到底真的能不能強國?


我就以最簡單的例子告訴你為什麼你要學習計算機組成原理。

我們可以深入理解程序在計算機中運行的整個過程,知道什麼應該做,需要避免什麼,有一些不知道原因的bug,能定位bug的來源。最簡單的來說,int在不同機器上位數可能是不同的,寫程序的時候需要考慮,防止溢出。

著名的蠕蟲病毒是怎麼來的,我們在學了計算機組成原理的程序在棧中的運行流程便可以得知,學習這一套流程,讓我們的程序儘可能的防止來自外界的攻擊


這個問題讓我想到了龍芯的胡偉武老師說的一句話,就是我們國家開設計算機科學與技術這門課的學校有很多,但是絕大多數的學校都在教怎麼用計算機,只有少數那麼幾個學校教怎麼造計算機,就有點像汽車專業在教學生怎麼開車。。。但這也沒辦法,大多數學校的師資是有限的,老師也不會造,他們既不會寫編譯器,操作系統,TCP網路協議棧,也不會寫CPU;所以大多數的計算機基礎課就顯得很無力了。

其實計算機組成原理這門課,主要的目的,就是讓你會造CPU,並理解計算機世界的運行原理,它教你二進位(定點的,浮點的)的運算原理,教你指令集系統的基本構成,教你計算機中程序的運行原理(帶操作系統和不帶操作系統的都有),教你怎麼完成一個簡單的CPU五級流水線,教你基本的訪存系統的理論知識,以及如何完成一個基本的Cache,完成一個TLB。然後再給你科普科普GPU長什麼樣,Vector處理器大致長什麼樣,為什麼需要它們;再拓展拓展雲端並行處理的多處理器結構,現代處理的多核結構等等等等。

如果對計算機的運行原理感興趣,可以看看Patterson寫的《計算機組成原理與設計-軟硬體介面》,這本書就是造計算機的入門書籍。如果還想造計算機的話,可以參考一下龍芯杯比賽裏的一些處理器,然後自己寫一個基於RISCV指令集(RISCV相對於MIPS要簡單一些)的處理器,套上一個簡單的SoC,跑起來,會很有成就感的。


搬磚的基本用不到,屬於屠龍之術(這樣說怕不是我老師要揍我),不過我覺得這門課挺有意思的。

抽象是計算機的靈魂,這句話在這門課上體現的很好,你能從自上而下的方式看到代碼如何被計算機執行的,也能自底向上從門電路開始搭建一臺計算機。還有很多結論也是很有道理的,比如「少即是多」,「80%的時間都是在使用20%的簡單指令」。比如為什麼代碼要少些循環和判斷,這是因為分支預測和多級流水線的原因。諸如此類 ,對計算機這麼神祕的東西一步步解剖,也很有意思。

還有一個課程設計,記得是用唐都的機子,實驗就是從ISA設計到彙編再到高級語言,實現雖然簡單,原理也容易理解,即使比不上知乎很多大神的學校用Verilog做的多級流水線這麼高大上,但是也算完整的實踐了一下,挺有收穫的。

這門課教我的是IC方面的大牛,用的英文書,現在想起來,當時應該認真的學一下的,今天刷到這個問題,只能感嘆年輕不懂事了 。


以前我也是這麼認為,讀個通信工程,學什麼c,學什麼Java學什麼資料庫學什麼Linux學什麼MATLAB學什麼通信原理學什麼數字模電學什麼電磁波學什麼電路分析學什麼……

我通信工程不就是需要學一個通信原理嗎?計算機原理都不用學!學好學精通信原理就ok了呀,其餘的不用學了。

其實出來你就會發現,大學這麼多課程只要你認真學通了一門,找工作都很輕鬆。但是隻學一門卻不能學通,它們互為補充相輔相成,精通一門的情況下,多多少少懂得其他的會好很多很多,因為學科滲透和學科交叉比較厲害。

嗯,好想再回去認真學一學專業課知識。

這大概也是不少過來人的心聲吧。


你將來就懂了,現在和你說了你其實也無法參透。底子多厚,蹦的多高。


感覺得看以後從事什麼行業,如果做嵌入式這種偏底層的話,確實需要了解下。

通過計算機組成原理對計算機的基本組成和計算機體系結構會有比較深刻的認識,等到做嵌入式開發的時候,對於板子的組成和功能的軟硬體劃分就會有明確的認識,讀起晶元手冊也不會那麼懵逼;還有匯流排的相關概念,這在嵌入式開發中都是很基礎的東西。


就說一件事:2017年的圖靈獎給了研究計算機組成原理的科研大佬~


意義在於以後漂亮妹子去找你修電腦的時候,你不用費一堆口舌解釋你為什麼不會這個。


大哥,你上的是大學,不是技校。大學培養的是科學家和工程師,而不是野雞外包調包俠。


你可以問問圖靈獎新得主

1、大學學什麼都和工作沒什麼關係,基本都用不到

2、大學本身就不是為了你工作的,文憑纔是


推薦閱讀:
相關文章