如果你是一個計算機相關(guān)專業(yè)的低年級學(xué)生聘裁,如果你是一個愛好計算機愛好者琐馆,那么這篇文章就是為你寫的。
進入大學(xué)之后具则,你肯定會對所要學(xué)習的內(nèi)容產(chǎn)生一種深深的疑問砾淌,這個東西到底有什么作用啦撮,值得我們在這樣美好的年紀里,耗盡心思去學(xué)習他汪厨。難道我以后買菜算賬需要使用微積分赃春,難道我家里安裝個插頭需要懂電氣工程,每個專業(yè)的學(xué)生都會對自己要學(xué)習要考試的內(nèi)容產(chǎn)生深深的疑問劫乱。
我曾一度認為大學(xué)里還在用51單片機做教學(xué)聘鳞,真是low到家了,曾大言不慚的宣揚大學(xué)教育需要改革要拂。然而在之后求學(xué)就業(yè)的十多年里抠璃,我曾不止一次驚奇的發(fā)現(xiàn),以前口口聲聲抱怨的專業(yè)課脱惰,在實戰(zhàn)中是多么重要搏嗡。
這是我一直想寫的東西,我想講透的不僅僅是核心計算機課程拉一,更重要的是采盒,我想要分析清楚這些課程之間的關(guān)系,以及它到底講得是些什么東西蔚润,對未來的專業(yè)技能有什么幫助磅氨。注意我這里所說的是通常情況下的核心課程,每個學(xué)校在課程設(shè)置上是存在差異的嫡纠,但總體的框架應(yīng)該都是差不多的烦租。
我想將這些課程最終組成一個完整而龐大體系,一點點剖析給你看除盏,讓你知道叉橱,為什么這里有一塊兒磚,那里有一個草坪者蠕,最終又是怎么樣組裝成一座讓人驚艷的高級城堡窃祝。
最開始的第一門課毫無疑問應(yīng)該是“C語言程序設(shè)計”,這基本上屬于你日后一切真正計算機學(xué)習的開始踱侣。這門課程的主要內(nèi)容就是介紹一種計算機語言的語法內(nèi)容粪小,讓你知道原來計算機除了玩兒游戲上網(wǎng)之外大磺,還可以用來進行編程,我相信絕大多數(shù)人都是在這一刻才知道編程這個概念的探膊,盡管我們能夠做的就是計算加減乘除之類的基本運算杠愧,再就是輸出個“hello world”。至于怎么才能學(xué)好它突想,會在另外一個系列里會仔細分解殴蹄。
之后的課程會分為三條線路:
第一條線路我稱之為【算力之路】
第一條線的第一門課程是“數(shù)據(jù)結(jié)構(gòu)與算法 ”
這很好理解究抓,有了一些語言基礎(chǔ)之后猾担,這個基礎(chǔ)指的是你能看懂基本程序,也能夠編寫簡單的代碼刺下。為了更好的使用編程語言去解決實際問題绑嘹,就必須學(xué)習數(shù)據(jù)結(jié)構(gòu)和算法,基本的數(shù)據(jù)結(jié)構(gòu)橘茉,像鏈表工腋、堆棧、隊列畅卓、結(jié)構(gòu)體等這些基本的數(shù)據(jù)單元擅腰,以及10大經(jīng)典排序算法、5大經(jīng)典算法等翁潘,會伴隨你的整個職業(yè)生涯趁冈。這個過程是鍛煉自己邏輯思維的過程。
至于怎么才能學(xué)好它拜马,會在另外一個系列里會仔細分解渗勘。請注意,如何學(xué)不是這個系列的重點俩莽,這個系列的重點在于告訴你旺坠,將來都會學(xué)些什么以及應(yīng)該學(xué)些什么。
第一條線的第二門課程是是“編譯原理”
編譯原理說白了就是介紹編譯器如何工作的扮超,是讓計算機理解計算機語言的一種方法和理論取刃,或者說就是探究如何高效的將程序翻譯成計算機能夠執(zhí)行的指令的過程。這個工作過程之中蘊含了大量的算法出刷,而且是非常復(fù)雜的算法蝉衣,一度讓很多同學(xué)認為編譯原理是計算機專業(yè)本科階段最難的一門課程。
這里面的算法不僅多而且復(fù)雜巷蚪,當然也會用到很多結(jié)構(gòu)病毡,樹可能是用得最多的。所以這就是相當于是數(shù)據(jù)結(jié)構(gòu)與算法課程的一個后續(xù)性課程屁柏,類似一道附加題啦膜。算力這條線路到編譯這里就應(yīng)該是終點了有送,今天大火的大數(shù)據(jù)、人工智能等等僧家,其實說到底也就是數(shù)據(jù)結(jié)構(gòu)和算法的實際應(yīng)用雀摘。
下面我們來談?wù)劥髮W(xué)計算機課程學(xué)習的第二條路線。
第二條路線我稱之為【產(chǎn)品之路】
為了更好地探究計算機系統(tǒng)的實現(xiàn)原理八拱,在入門了C語言之后阵赠,第一門課程是“匯編語言和微型計算機接口技術(shù)”
這門課程包含兩部分的內(nèi)容,一部分就是匯編語言肌稻,現(xiàn)在大學(xué)一般用51單片機和80X86清蚀。匯編是一種更底層的語言(相對于C而言),說白了它就是一種“用助記符描述的機器語言”爹谭,你可以理解為一本字典枷邪,看著ADD,你知道是加法诺凡,看到SUB东揣,你知道是減法。很多人剛學(xué)匯編的時候都覺得很復(fù)雜腹泌,因為它跟硬件緊密相關(guān)嘶卧,就是那些寄存器、內(nèi)存地址凉袱,讓人很頭疼芥吟。
這門課程的另外一部分內(nèi)容是微型計算機及其接口技術(shù),目前國內(nèi)高校這部分內(nèi)容主要還是基于51單片機和80X86系列芯片的绑蔫。這門課其實涉及到了很多硬件的知識运沦,不僅包括計算機的核心部件,控制器和運算器配深,還包括內(nèi)存携添、總線等,關(guān)于I/O控制篓叶,寄存器烈掠,中斷這些東西,這門課里也都有體現(xiàn)缸托。
第二門課程就是“計算機組成原理與體系結(jié)構(gòu)”
如果說微型計算機及其接口技術(shù)為我們講解了計算機領(lǐng)域的基本硬件模塊左敌,那么計算機組成原理與體系結(jié)構(gòu)就是展示了一個完善的計算機系統(tǒng),他包括哪些組成部分俐镐,如何有效的進行工作矫限。
第三門課程是“計算機操作系統(tǒng)”
如果外行聽起來可能會覺得這個課應(yīng)該是教如何使用操作系統(tǒng)的吧,就像“WindowsXP速成”?當然不是這么簡單叼风!這門課程是講OS是如何設(shè)計和運作的取董,或者說是如何實現(xiàn)一個OS(當然做要比說起來難太多了)。
這門課程之所以被安排在組成原理之后无宿,是因為這反映了一種自底向上的學(xué)習路線茵汰。操作系統(tǒng)是在計算機系統(tǒng)之上來搭建的。有了基本的硬件結(jié)構(gòu)孽鸡,才能完成數(shù)據(jù)的計算蹂午、存儲、控制等基本動作彬碱,而操作系統(tǒng)的核心功能:內(nèi)存管理豆胸、任務(wù)管理、文件管理等等堡妒,也是通過一系列的算法和方法配乱,讓硬件資源得到更加充分的利用溉卓,保障整個軟硬件系統(tǒng)穩(wěn)定可靠的允許皮迟。
這就是大學(xué)計算機課程學(xué)習的第2條路線,這條路可以看到和計算機硬件有很緊密的聯(lián)系桑寨,所以伏尼,很大部分走這條路的人都進入了設(shè)備型企業(yè),比如說做電子鬧鐘尉尾、游戲機爆阶、銀行取款機,特點就是跟具體的設(shè)備產(chǎn)品打交道沙咏,有具體的硬件和配套軟件辨图。下面我們來講最后一條路線。
最后一條路線屬于應(yīng)用型的肢藐,我稱之為【應(yīng)用之路】
在你有了一定的C語言基礎(chǔ)之后故河,學(xué)校可能會開一些面向?qū)ο蟪绦蛟O(shè)計方面的課程吆豹,可能是C++鱼的,也可能是Java,因為面向?qū)ο蟮恼Z言在實際開發(fā)中正廣泛的被使用痘煤。但無論是C++還是Java凑阶,跟C來說本質(zhì)上都是語言,只不過他們多了一些OOP方面的特性衷快,就像中文和英文宙橱,外形看上去不太一樣,但都是用來進行交流的。
接下來的一門課程應(yīng)該是“數(shù)據(jù)庫系統(tǒng) ”
這門課學(xué)校里教的大部分是MySQL师郑,更加偏重理論哼勇,畢竟數(shù)據(jù)庫相比于計算機硬件和OS來說已經(jīng)是上層建筑了,變化很快呕乎。這門課講的多是些數(shù)據(jù)庫系統(tǒng)設(shè)計方面的原則积担,和基本的數(shù)據(jù)庫操作。
再之后可能會學(xué)的課程是“計算機網(wǎng)絡(luò)”
這門課里會更加系統(tǒng)的向你介紹網(wǎng)絡(luò)方面的知識猬仁,TCP帝璧、UDP,HTTP這些名詞會粉末登場湿刽。注意這門課一般不是教授你如何布網(wǎng)的的烁,這門課里講的更多的是上層原理與協(xié)議,或者說目前互聯(lián)網(wǎng)的運作機制诈闺。
我們今天能夠登錄的絕大多數(shù)網(wǎng)站渴庆,大多是JAVA的前端,數(shù)據(jù)庫系統(tǒng)存儲數(shù)據(jù)雅镊,就像你打開手機里的銀行APP襟雷,他的前端為你展示了優(yōu)美的歡迎界面,可能還有動態(tài)的效果動畫仁烹;你看不見的時候耸弄,他已經(jīng)去后臺數(shù)據(jù)庫里取出了你的賬戶余額,為你進行了展示卓缰,從手機去銀行數(shù)據(jù)庫讀取數(shù)據(jù)的過程计呈,就是通過互聯(lián)網(wǎng),用的可能就是互聯(lián)網(wǎng)的TCP協(xié)議征唬。
以上就是一般的大學(xué)計算機課程學(xué)習的幾條路線捌显。他們彼此聯(lián)系,共同作用总寒,也正是這些基本的技術(shù)扶歪,打造了如今這個豐富多彩的互聯(lián)網(wǎng)世界。學(xué)習的過程往往會遇到困難偿乖,痛苦也是難免的击罪,但還是希望你不要放棄,堅持不懈贪薪,定會有更好的收獲媳禁。