爲什麽用C語言編寫操作系統?爲什麽不使用其他語言?
時間:2020-09-23 作者:管理員(yuán) 點擊:647
也許很多人會說,因爲C出現得早啊 。其他語言都這麽晚,作爲時間來說,這确實是一(yī)個原因的。但是爲什麽不用其它語言去(qù)重寫或者新建個系統呢?畢竟 現在出色的語言那麽多。
金屬線的物(wù)理迷宮稱爲二極管,晶體(tǐ)管,電(diàn)阻器和電(diàn)容器,它們傳遞電(diàn)壓以執行布爾邏輯,算術運算。二進制數字字符串是物(wù)理硬件中(zhōng)電(diàn)壓狀态的代理。
硬件僅表示電(diàn)壓狀态。C所做的全部工(gōng)作是爲程序的藍(lán)圖定義一(yī)個受限語法中(zhōng)的英文文本單詞,并将其翻譯成二進制數字字符串。計算機隻理解那些二進制數字。除了一(yī)系列文本文件,計算機不知(zhī)道C是什麽。
運行二進制的計算機:
可以修改Python,JavaScript或任何其他語言,以便直接産生(shēng)正确的二進制數字序列。你能做到這一(yī)點。然而C不是計算機。當您考慮計算機的真正含義時,您會意識到它是一(yī)個用于定義和解釋數據序列的系統。一(yī)種機械設備,它使用電(diàn)來通過對二進制序列達成一(yī)緻的解釋來翻譯命題。
語言作爲藍(lán)圖:
彙編器是CPU制造商(shāng)提供的一(yī)種語言,他們在其中(zhōng)定義了許多有意義的詞和操作,以使您可以訪問CPU定義的擴展功能(以及系統擴展名),以此來達到盡可能多的功能。
C爲軟件編寫者總結了彙編程序,其方式重點在于訪問計算機功能的最基本方面。如前所述,很多語言都可以做到這一(yī)點,大(dà)多數計算機語言都間接地總結了彙編程序代表的标準。
彙編程序代碼必須轉換爲那些二進制數字字符串。我(wǒ)(wǒ)們通常稱彙編程序爲低級,但這是主觀的。從直接寫入二進制數字的角度來看,它是高級的。C使編寫可以清晰映射到二進制結構的程序藍(lán)圖的過程比在Assembler中(zhōng)更方便。C不會創建實際的計算機代碼,而隻是創建藍(lán)圖。編譯器和鏈接器生(shēng)成計算機可以運行的實際代碼。
編碼操作系統:
爲什麽要使用C操作系統?就好比在一(yī)定面積的矽中(zhōng)隻能存在這麽多的電(diàn)壓/能量。而因爲翻譯,硬件大(dà)小(xiǎo)限制。計算機的啓動代碼必須緊湊。啓動BIOS的軟件将開(kāi)始硬件的識别,并爲随後加載的操作系統提供挂鈎,其大(dà)小(xiǎo)受到必要性的限制。引導加載程序位于硬盤驅動器的開(kāi)頭。它是BIOS運行的程序,引導加載程序決定要啓動的操作系統。基本上是連鎖反應。全部爲二進制。具有大(dà)小(xiǎo)要求和确定性。
代碼确定性:
除了它們的設計支持某些場景外(wài),沒有什麽能阻止C成爲Web開(kāi)發語言和JavaScript成爲系統語言。C以這樣一(yī)種方式定義爲标準,即翻譯正确編寫的C代碼的編譯器将生(shēng)成滿足這些标準的代碼。許多其他語言的定義根本就沒有一(yī)種方式,當您使用編譯器翻譯它們時,會産生(shēng)适當約束的二進制代碼。
如果我(wǒ)(wǒ)在JavaScript中(zhōng)使用原型聲明,是否會創建我(wǒ)(wǒ)可以在操作系統上下(xià)文中(zhōng)依賴的代碼類型?評估本質上使我(wǒ)(wǒ)朝着具有非确定性屬性的自我(wǒ)(wǒ)修改代碼的方向邁進了呢?我(wǒ)(wǒ)可以在編譯器中(zhōng)優化使用eval嗎(ma)?我(wǒ)(wǒ)可以像使用C的對齊類型約定那樣在JavaScript接口中(zhōng)很好地約束它嗎(ma)?
一(yī)旦使用了C之類的語言,就意味着最好需要通過代碼訪問服務的代碼使用兼容的調用約定和應用程序二進制接口進行接口。可以與操作系統的C代碼很好地齧合,龐大(dà)的C代碼主體(tǐ)意味着更少的集成工(gōng)作和更多的數據交換确定性。
切換到另一(yī)種語言可能會導緻放(fàng)棄數十年的代碼。也許此代碼中(zhōng)的許多代碼都有安全性問題和其他缺陷,但是在功能範圍内,它可以工(gōng)作。過渡的情況需要符合高标準,以證明這種重大(dà)變化是合理的。
優缺:
C的積極屬性意味着它已成爲一(yī)個值得信賴的工(gōng)具,可以爲高層(相對于Assembler)創建操作系統和硬件訪問例程的藍(lán)圖。C語言設計的缺點,也許是它試圖總結的機器模型的反映,自然而然地編寫了不那麽安全的代碼。特别是如果您從Web複制和粘貼。
用Lisp編寫操作系統聽(tīng)起來是最好的主意。特别是基于那些積極倡導Lisp的人的主張。Lisp并未映射到系統定義中(zhōng)首選的抽象,而命令式語言越來越流行證明了這一(yī)點。對于可以替代操作系統的C的語言,人們進行了大(dà)量的研究。領先的競争者是Rust and Go。他們似乎是取代C的最實用的候選人。然而隻是到現在,還是C語言。