簡單說這門課程的主要目的和內容就是介紹壹種計算機語言的語法內容,至於怎麽學好它,
之前的文章都談過了,這裏就不羅嗦了。
之後的課程會分為三條線,第壹條線的第壹門課程是“數據結構與算法”。這很簡單,
壹些有了語言基礎之後,為了更好的使用語言去解決問題,就必須學習結構知識和算法。至
於怎麽學好它,之前的文章也談過了——請註意,如何學都不是本文的重點。本文的重點在
於告訴妳妳將來都會學些什麽以及該學些什麽。
“數據結構與算法”的後續課程是什麽?答案應該是《編譯原理》。很奇怪吧?課程就
是這樣設計的,其實這個路線也不是我發明的,國外大學的CS Course 的體系也是這麽設計
的。編譯原理說白了就是介紹編譯器如何工作的,是讓計算機理解計算機語言的壹種方法和
理論。這個工作過程之中蘊含了大量的算法,而且是非常復雜的算法,很多人甚至認為編譯
原理是計算機專業本科階段最難的壹門課程。主要就是因為這裏面的算法太復雜,當然也會
用到很多結構,樹可能是用得最多的。當然,這就是相當於是數據結構與算法課程的壹個後
續性課程,類似壹道附加題。最近聽壹個學生說有些學校本科已經取消這門課了,我想應該
是較少壹部分學校的做法吧。不過,中國的學習並不太重視這門課倒是真的。壹般課程設置
就是壹個學期左右的課時。但是壹般的國外學校這門課都要學上1 年,甚至兩年之久。這條
線路到編譯這裏就應該是終點了.
在妳具有了壹定C 語言基礎之後,除了前面講的第壹條路線以外,妳已經可以開始下
面這條路線的學習了。
為了更好地探究計算機系統的研究機制,在學習了C 語言之後,下面壹門需要學習的
課程是“匯編語言和微機接口技術”,這門課程包含兩部分的內容,壹部分就是匯編語言,
匯編是壹種更底層的語言(相對於C 而言),說白了它就是壹種“用助記符描述的機器語言”。
很多人剛學匯編的時候都覺得很復雜,因為它跟硬件緊密相關,就是那些個寄存器也夠初學
者糊塗壹陣子的。這門課程的另外壹部分內容是微機接口技術,目前國內高校這部分內容都是基於80X86 系列芯片的。已經可以看到這門課其實涉及到了很多硬件的知識,其實還不
止,關於I/O 控制,寄存器,中斷,這門課裏都有體現的。
接下來要學習的內容就是《計算機組成原理與體系結構》。其實我特別奇怪,我在寫學
習路線1(也就是前壹篇文章)的時候,有讀者認為在學習C 語言之前,或者在學習其他專
業課程之前,最先要學的就是這個東西。我不知道大家是不是覺得大學第壹門專業課就是這
個,我覺得這麽想的人是不且實際,信口開河的。這門課程還是比較深的壹門課程,在匯編
和接口之後安排這門課程是比較的。不過國外的壹些先進的計算機教育體系確實也有在較開
始的時候開設壹門概論課來作為導引,有時候叫Computer System Introduction,有時候叫
Computer Culture,其實內容差不多,但作為計算機專業課程的導引課程,這些課程的設置
裏面已經設計到組原和OS 的初步內容了。但這和Computer Structrue & Architecture 還是有
區別的。
接下來的壹門課程是《計算機操作系統》,如果外行聽起來可能覺得這個課應該是學如
何使用操作系統的吧,就像“WindowsXP 速成”?非也!這門課程是講OS 是如何設計的,
或者說是如何實現壹個O S(當然做要比說起來難多了)。之所以這門課程被安排在組原之後,
那是因為這反映了壹種自底向上的學習路線。操作系統當然是在計算機系統之上來搭建的。
向調度啊、虛擬內存啊這些問題都是由操作系統來控制的。我最近所寫的《代碼揭秘》基本
上是屬於這條路線上的內容的,不同的是我采用了壹種更貼合讀者理解方式的描述,因為在
講述這些原理之前,我都是采用C 語言實例來作為引子的。有空也推薦大家看看,應該學
校裏的圖書館是可以借到的。前壹陣子壹位四川大學的計算機青年教師給我寫信談起我這本
書時,我才知道高校的圖書館裏原理已經可以借到了。以上就是大學計算機課程學習的第2
條路線,下面我們來講最後壹條路線。
最後壹條路線屬於應用型的,也就是說當妳學完了基本的原理之後,壹方面為了日後更
好的工作,另壹方面如果從事研究工作也可擇其壹而繼續深入探究,那麽最好總之要上升到
壹定應用層面的東西。
在妳有了壹定的C 基礎之後,學校可能會開壹些面向對象程序設計方面的課程,可能
是C++或者Java,因為面向對象的語言在實際開發中正廣泛的被使用。無論是C++還是Java,
跟C 來說本質上都是語言,只不過他們多了壹些OOP 方面的特性。如何學好它們,我前面
的文章中已經談過,這裏就不多言了。
接下來的壹門課程應該是“數據庫系統”,這門課不是教妳怎麽使用SQL SERVER 或者
DB2 的,學校裏的課程遠沒這麽前沿。數據庫系統這門課依然偏重更多理論,盡管數據庫
相比於組原和OS 來說已經是上層建築了。這門課講的多是些數據庫系統設計方面的原則,
例如如何解決關系問題或者SQL 語言等等。
再之後可能會學的課程是“計算機網絡”,這門課裏會更加系統的向妳介紹網絡方面的
知識,TCP、UDP,HTTP 這些名詞會粉末登場。註意這門課壹般不是教授妳如何布網的,
例如如何配置路由器這種東西壹般是CCNA 裏面的內容了。這門課裏講的更多的是上層原
理與協議。
以上就是壹般的大學計算機課程學習的幾條路線。他們彼此聯系,***同作用。註意我這裏講的內容不是給妳推薦學習方向,而是告訴妳大學裏會學什麽,之間聯系如何。從之前的
文章評論裏不難看出,有的同學好像根本沒理解文章的意思,說自己好像更適合哪條路線的
樣子,其實適不適合哪條線的問題根本不存在,這些東西妳都得學,既然學就要學好。本身
就是壹個體系的,怎麽能做瞎子摸象的事情呢?現在CSDN 學生大本營搞得不錯,資源很
多,訪問量很大,但也能客觀的看出瀏覽的人真的是分好多等的,有的是謙遜而好學的,有
的則是蜻蜓點水的過客。浮躁之氣甚囂塵上,胸中無物自然談吐輕浮,看什麽都不求甚解,
淺嘗輒止,多少有些自以為是、妄自尊大了。這也是我在此開博四個月余來的感受吧。希望
大家都能保持壹顆平常心,戒驕戒躁,平和的埋頭學習吧。