Unix 與 C 語言的關系

在服務器領域,最著名的系統莫過于Unix了,即便Linux也是類Unix的作業系統,Unix 是用 C 語言撰寫的,而且是世界上第一個用 C 語言撰寫的作業系統,但是 Unix 是怎么產生的?C 語言又是怎么產生的?Unix 為什么要用 C 語言來撰寫?相信看完這篇文章你很快就會有了答案,
Multics 和 Unix
1964年,在 Unix 誕生之前,美國貝爾實驗室、通用電氣、和麻省理工學院聯合開發了一個專案,叫做 Multics作業系統,Multics 在當時取得了巨大的成功,因為它給了人們一個真正可用并且很穩定的作業系統,當時從學校到政府機關,到處都在安裝 Multics,
但是時間到了 1969年,因為種種原因,貝爾實驗室的 Ken Thompson 和 Dennis Ritchie 決定放棄Multics,于是貝爾實驗室退出了這個專案,Ken Thompson 和 Dennis Ritchie 決定開發一個更為簡單并且高效的作業系統,并把它命名為 Unix,于是他們倆就成為了 Unix 之父,
和 Unix 相比,Multics 有兩個比較致命的缺點,一是需要安裝在非常昂貴的機器上,普通的計算機沒有辦法安裝,二是設計非常復雜,這也是貝爾實驗室的工程師退出的主要原因,不過 Ken Thompson 和 Dennis Ritchie 還是從 Multics 上得到很多啟發,可以說 Unix 是 Multics 的簡化以及更新,
說到這里,C 語言還沒有出場,因為它在那個時候還沒有被發明出來,Unix 作業系統的第一個版本是純粹用匯編語言撰寫出來的,一直到了 1974年,第四個版本才改用 C 語言進行開發,在講 C 語言之前,我們還不得不先說一下 BCPL 和 B 語言,
BCPL 與 B 語言
Ken Thompson 和 Dennis Ritchie 最初用匯編語言來開發 Unix,因為在那個時候,所有的作業系統都是用匯編語言來開發的,不過當時 Multics 是一個例外,Multics 專案組使用了 PL/1 來進行開發,它的價值就在于向世人展示了用一門高級語言也可以開發出一套作業系統,Ken Thompson 和 Dennis Ritchie 也受到了鼓舞,他們決定用匯編之外的語言重新開發 Unix,他們最初的選擇是 BCPL,BCPL 最早是由 Martin Richards 發明用來開發編譯器的語言,但是 Ken Thompson 和 Dennis Ritchie很快發現,如果他們想在小型計算機 DEC PDP-7 上使用 BCPL,就需要對這個語言本身進行一些修改,于是就產生了后來的 B 語言,
B 語言作為系統開發語言,也存在很多的缺點,于是后來它又被改進為 NB 語言 (New B),可是 NB 還是有很多的問題,于是 Dennis Ritchie 就又發明了 C 語言,最終在 1974年,Ken Thompson 和 Dennis Ritchie 一起用 C 語言重新撰寫了第四版的 Unix 系統,現在,C 語言已經成為了作業系統開發最常用的編程語言,
通往 C 語言與 Unix 之路
Dennis Ritchie 曾經解釋過自己為什么要發明 C 語言,以及使用 B 語言程序中遇到的一些困難:
-
只能處理計算機字:B語言所有的操作都是通過計算機字來處理的,在那個時候,能夠處理位元組的編程語言對工程師們來說是一個夢,
-
沒有型別:準確的說,B語言只有一種型別,計算機字,如果你有一個字串,可能你需要把它分成多個變數來保存,比如一個21個字符的字串,就需要 6 個變數,
-
不支持浮點型別運算:在那個時候,大部分硬體已經都可以開始支持浮點運算了,但是 B 語言還不支持這種操作,
B 語言的這些問題,開發低效,在機器上運行緩慢等等,都迫使 Dennis Ritchie 發明一種新的編程語言,最開始被稱為 New B,后來逐漸演化成了 C 語言,
C 語言解決了 B 語言的很多缺陷,并很快成為了開發作業系統最流行的一種編程語言,新版本的 Unix 以及今天很多類 Unix 的作業系統都是用 C 語言開發出來的,
好了,講到這里,我想大家都清楚了 Unix 和 C 語言是怎么來的了,以及為什么要用 C 語言來撰寫 Unix,現在有很多非常流行的語言比如 Java 和 Python,它們是一種更高級的編程語言,是在 C 語言這一層之上的,但是如果大家想做設備驅動或者系統內核模塊的修改,還是離不開 C 語言這把利器,
推薦閱讀:
《一篇文章帶你快速弄清楚什么是終端》
《一篇文章看清楚 Linux 的職業發展方向》
《2020年你最需要掌握的11種編程語言》
《微軟:懸賞10萬美金破解 Linux 系統》
《安卓到底是不是Linux》
獲取知識干貨、增加面試經驗、了解程式人生
歡迎關注微信公眾號
回復【面試】,獲取技術大廠面試寶典

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/17347.html
標籤:C
上一篇:雙鏈表
下一篇:C 實戰練習題目30 – 回文數
