世界上最著名的操作系統是用什麼語言編寫的?

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》

 

  

 

獲取知識乾貨、增加面試經驗、了解程序人生

歡迎關注微信公眾號

回復【面試】,獲取技術大廠面試寶典

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

※回頭車貨運收費標準

網頁設計最專業,超強功能平台可客製化

※別再煩惱如何寫文案,掌握八大原則!

您可能也會喜歡…