C語言第1課:瞭解C語言的前世今生,簡述C語言誕生的過程

在正式講解C語言知識點之前,我們先來了解一下C語言的誕生過程,這一點還是很有必要的。因為學一門程式語言,如果瞭解到可它的誕生背景,以及它的一些主要用途,這有助於加深我們對於這一門程式語言的更深層次的理解。

在很早的時候,計算機並不屬於我們平常百姓,它最開始有一間屋子那麼大,主要用於科技研發之用。後來隨著時代的發展,計算機逐漸變得越來越小巧,以至於最終“走入尋常百姓家”。

最開始,人們在使用計算機寫程式的時候,使用的是“機器語言”,也就是由一大堆“0”和“1”組成的程式碼。如下圖所示:

C語言第1課:瞭解C語言的前世今生,簡述C語言誕生的過程

機器語言

上圖中,這些0和1組成的一大堆東西,我們如果不經過長期的專業訓練,是根本看不懂的。而且最要命的是,不同的廠家生產的處理器,有不同的這樣“0”和“1”的組合。就好比很多個地方,人們的方言都不一樣,都相互之間聽不懂。

計算機行業的那些前輩們,就是使用這樣“0”和“1”來進行程式設計的。可想而知,有句老話說得很好“人只有享不了的福,沒有受不了的罪”。我們現在看來,用這樣一大堆“0”和“1”進行程式設計,是太受罪了。但是,如果我們也身處那個年代的計算機行業中,經歷過一段時間的訓練,或許我們也會感覺是一件“很平常”的事情了。

話又說回來,其實那個年代能夠從事“計算機”相關的工作,或許也是一件較為幸福的事情。因為那時接觸到計算機的人並不很多,能夠與“計算機”打交道,屬於“稀缺”崗位,在心理上會多多少少有一些優越感,這也是很符合人之常情的。

科技在進步,時代在發展。因為“機器語言”實在是太“難學”了,編寫的效率太慢了,這就再進一步出現了“組合語言”。在大學中的一些專業裡,就會有“組合語言”這門課。如下圖,這就是“x86”系列組合語言的大概模樣:

C語言第1課:瞭解C語言的前世今生,簡述C語言誕生的過程

組合語言

比如:mov就是英文單詞“move”的簡寫,add就是英文單詞“add”,這些都是符合我們人的閱讀習慣的。儘管組合語言依然存在“難以編寫”、“移植性不好”等這樣或者那樣的問題,但是這已經相比於“機器語言”進步了一大截了。

至少組合語言的出現,使得人們在當時程式設計的效率大為提高,直接推動了整個計算機科學領域的發展了。如果說以前使用“機器語言”要編寫一個月,或許使用“組合語言”只需編寫幾天時間就可以了。實現同樣的功能,大大縮短了程式碼量,而且組合語言相比機器語言更加不易出錯,這就是一個很重要的進步了。

繼“組合語言”被髮明出來之後,科技仍在發展,永遠不會停下腳步。再後來,人們就發明出了“高階程式語言”。具體“高階”在哪裡呢?主要還是大大提升了“程式編寫效率”,以及提升了“可移植性”。

C語言的前身,是B語言。至於“C語言的名字”是怎麼由來的呢?這是因為:B語言是由“BCPL語言”進化而來的,“B語言”取的是“BCPL”的第一個英文字母“B”,而C語言是繼續由B語言進化而來,所以就取“BCPL”的第二個英文字母“C”。

並且,當初使用B語言來編寫的一款作業系統“UNIX”,它又被C語言重新來編寫了一遍。

我們可以記住一個時間,和兩個偉大的人:時間是1972年,兩個偉大的人是:丹尼斯·裡奇,肯·湯姆遜。也就是說:C語言在1972年被創造,而且創始人是裡奇和湯姆遜。

C語言第1課:瞭解C語言的前世今生,簡述C語言誕生的過程

丹尼斯·裡奇

至於C語言的優勢,主要應用於和硬體打交道的領域,以及一些對於效能追求較為極致的軟體領域。比如“微控制器”、“嵌入式”領域,就是主要使用“C語言”來開發。並且在大學中,在很多專業中,C語言都是必學的。

此外,學好了C語言之後,對於我們來學其它程式語言,都是非常有幫助的。因為各個程式語言之間,很多的思想都是想通的,甚至C語言難度還更大一些,學會了C語言也就等於進入了“程式設計領域”的大門了。

下一節課開始,將正式來講解C語言程式的編寫了。