如何成為最牛程式設計師

2021-08-21 08:00:20 字數 2228 閱讀 2552

我之前曾經發過一篇博文《大學計算機專業那些課

》來談論大學中各門課程的意義和重要性。那是針對更寬泛的範圍來說的,這篇文章則更加精要和簡約。因為這裡研究的僅僅是核心計算機課程,更重要的是,這裡要說的是這些課程之間的關係,以及它到底講得是些什麼東西。我想這些課程最終是要組成乙個體系的。

請注意我這裡所說的是通常情況下的核心課程,每個學校在課程設定是可能是存在差異的,但總體上框架應該是不變的。

最開始的第一門課應該是「c

語言程式設計」,這基本上屬於你日後一切學習的開始,簡單說這門課程的主要目的和內容就是介紹一種計算機語言的語法內容,至於怎麼學好它,之前的文章都談過了,這裡就不羅嗦了。

之後的課程會分為三條線,第一條線的第一門課程是「資料結構與演算法」。這很簡單,一些有了語言基礎之後,為了更好的使用語言去解決問題,就必須學習結構知識和演算法。至於怎麼學好它,之前的文章也談過了——請注意,如何學都不是本文的重點。本文的重點在於告訴你你將來都會學些什麼以及該學些什麼。

「資料結構與演算法」的後續課程是什麼?答案應該是《編譯原理》。很奇怪吧?課程就是這樣設計的,其實這個路線也不是我發明的,國外大學的cs course

的體系也是這麼設計的。編譯原理說白了就是介紹編譯器如何工作的,是讓計算機理解計算機語言的一種方法和理論。這個工作過程之中蘊含了大量的演算法,而且是非常複雜的演算法,很多人甚至認為編譯原理是計算機專業本科階段最難的一門課程。主要就是因為這裡面的演算法太複雜,當然也會用到很多結構,樹可能是用得最多的。當然,這就是相當於是資料結構與演算法課程的乙個後續性課程,類似一道附加題。最近聽乙個學生說有些學校本科已經取消這門課了,我想應該是較少一部分學校的做法吧。不過,中國的學習並不太重視這門課倒是真的。一般課程設定就是乙個學期左右的課時。但是一般的國外學校這門課都要學上

1年,甚至兩年之久。這條線路到編譯這裡就應該是終點了。

下面我們來談談大學計算機課程學習的第二條路線。

在你具有了一定c語言基礎之後,除了前面講的第一條路線以外,你已經可以開始下面這條路線的學習了。

為了更好地**計算機系統的研究機制,在學習了c語言之後,下面一門需要學習的課程是「組合語言和微機接**術」,這門課程包含兩部分的內容,一部分就是組合語言,彙編是一種更底層的語言(相對於

c而言),說白了它就是一種「用助記符描述的機器語言」。很多人剛學彙編的時候都覺得很複雜,因為它跟硬體緊密相關,就是那些個暫存器也夠初學者糊塗一陣子的。這門課程的另外一部分內容是微機接**術,目前國內高校這部分內容都是基於

80x86

系列晶元的。已經可以看到這門課其實涉及到了很多硬體的知識,其實還不止,關於

i/o控制,暫存器,中斷,這門課裡都有體現的。

接下來要學習的內容就是《計算機組成原理與體系結構》。其實我特別奇怪,我在寫學習路線1(也就是前一篇文章)的時候,有讀者認為在學習

c語言之前,或者在學習其他專業課程之前,最先要學的就是這個東西。我不知道大家是不是覺得大學第一門專業課就是這個,我覺得這麼想的人是不且實際,信口開河的。這門課程還是比較深的一門課程,在彙編和介面之後安排這門課程是比較的。不過國外的一些先進的計算機教育體系確實也有在較開始的時候開設一門概論課來作為導引,有時候叫

computer system introduction

,有時候叫

computer culture

,其實內容差不多,但作為計算機專業課程的導引課程,這些課程的設定裡面已經設計到組原和

os的初步內容了。但這和

computer structrue & architecture

還是有區別的。

接下來的一門課程是《計算機作業系統》,如果外行聽起來可能覺得這個課應該是學如何使用作業系統的吧,就像「windowsxp

速成」?非也!這門課程是講

os是如何設計的,或者說是如何實現乙個

os(當然做要比說起來難多了)。之所以這門課程被安排在組原之後,那是因為這反映了一種自底向上的學習路線。作業系統當然是在計算機系統之上來搭建的。向排程啊、虛擬記憶體啊這些問題都是由作業系統來控制的。我最近所寫的《**揭秘》基本上是屬於這條路線上的內容的,不同的是我採用了一種更貼合讀者理解方式的描述,因為在講述這些原理之前,我都是採用

c語言例項來作為引子的。有空也推薦大家看看,應該學校裡的圖書館是可以借到的。前一陣子一位四川大學的計算機青年教師給我寫信談起我這本書時,我才知道高校的圖書館裡原理已經可以借到了。以上就是大學計算機課程學習的第

2條路線,下面我們來講最後一條路線。

最後一條路線屬於應用型的,也就是說當你學完了基本的原理之後,一方面為了日後更好的工作,另一方面如果從事研究工作也可擇其一而繼續深入**,那麼最好總之要上公升到一定應用層面的東西。

想成為最牛程式設計師嗎?

我的乙個程式設計師朋友常跟我說記住超過200個c 函式是多麼的有幫助。我從來不必去查詢函式的定義,因此我可以比其他程式設計師程式設計快上50 他自豪的說。可結果是什麼?難道他不知道編譯器的 自動完成功能可以節約大量查詢函式及輸入函式的時間嗎,另外當c 發布出來後,他在記憶函式上面的努力就白費了。我們...

想成為最牛B的程式設計師嗎?

想成為最牛程式設計師嗎?tip 2 建立屬於你自己的資源庫 我們都會有因為這樣或者那樣原因而不得不建立的 集。我從來不記得連線資料庫的準確 語句,所以我每次都不得不在 集中花10分鐘去查詢它。為了解決這個問題,我建立了乙個用於記錄 片段的word文件,以幫助我記憶和查詢。我的乙個同事建了個記錄鏈結的...

如何成為優秀程式設計師

1,文件習慣 文件是乙個軟體系統的生命力。乙個公司的產品再好 技術含量再高,如果缺乏文件,知識就沒有繼承,公司還是乙個來料加工的軟體作坊。作為 程式設計師,必須將30 的工作時間寫用於技術文件。沒有文件的程式設計師勢必會被淘汰。2,模組化思維能力 要想成為乙個優秀的程式設計師,他的思想不能僅僅只在侷...