C語言是用什麼編出的?

Wskvklqtd12345


首先C語言是一門計算機編程語法規則規範,可以將C語言比做英語語言,我們在學習英語的時候都是先學語法 單詞之類的英語規則,在學會了語法以後我們就可以用英語寫出自己的文章,同樣的道理C語言也是如此,我們可以用C語言寫出自己的程序。

其次計算機並不認識什麼C語言,計算機只認識數字0和1(硬件上是使用開關來表示,用數字0來代表低電平,數字1代表高電平),那怎麼用0和1來描述十進制整數?答案是二進制。

再次我們的編寫的程序要能在計算機上實現,首先要做的就是翻譯工作,將C語言編寫的程序(文本格式)翻譯成二進制數字文本格式,

最後就是翻譯好的二進制文件,如何讓計算機幫我們運行呢?答案就是通過一種工具將我們編譯好的二進制文件存儲到存儲器中,存儲器是啥呢?存儲器可以比作是一個有很多抽屜的櫃子,比如二進制文件開頭處是數字001,那麼我們的工具就會在第三個抽屜放東西,前兩個抽屜為空,來代表001。

至此 我們的C語言程序就能夠在計算機上運行起來!


GkGavin


C語言標準文檔是 pdf 格式的,你可以在這裡下載 http://open-std.org/JTC1/SC22/WG14/www/docs/n1570.pdf 至於是什麼編寫的,因為很多文檔編輯器都可以導出 pdf,這個還真不好猜測。。。


如果你說的是 C 語言編譯器是什麼編寫的,當今三大主流 C 語言編譯器都是使用 C++ 語言編寫的。

1. 首先是Windows平臺的 cl(全稱叫 Microsoft (R) C/C++ 優化編譯器)。該編譯器是閉源的,但是從它的可執行文件的導入符號可以看出它是用 C++ 語言編寫的,並極有可能就是用自身編譯的。

2. 然後是在Linux平臺廣泛使用的 gcc。gcc 編譯器(平臺)最初是用 C 語言編寫的,但是在 2012 年 8 月,gcc 宣佈全面遷移至 C++ 語言,所以現在都是使用 C++ 語言編寫了。

3. 最後是在BSD系(包括蘋果系統)使用的 clang 編譯器,它屬於 LLVM 編譯器平臺,從誕生第一天起就是使用 C++ 語言編寫的。


其他還有很多小眾編譯器,多數是使用 C 或 C++ 語言編寫(C 語言居多),由於數量眾多這裡就不列舉了。


可以看到 cl 的引用了 C++ 語言編寫的函數


手機用戶78320221300


C編程語言是在20世紀70年代早期設計的,作為新興Unix操作系統的系統實現語言。它源於無類型語言BCPL。c編譯器最初期的版本,是在pdp-11機器上,用匯編語言編寫的,用其編寫人的名字縮寫命名,為dmr,在github上可以查找legacy-cc,找到部分dmr的編譯器的源代碼。

最開始的c的代碼,帖一部分在這裡,紀念一下。


/* C compiler

Copyright 1972 Bell Telephone Laboratories, Inc.

*/

ossiz 250;

ospace() {}\t/* fake */

init(s, t)

char s[]; {

extern lookup, symbuf, namsiz;

char symbuf[], sp[];

int np[], i;

i = namsiz;

sp = symbuf;

while(i--)

if ((*sp++ = *s++)=='\\0') --s;

np = lookup();

*np++ = 1;

*np = t;

}

main(argc, argv)

int argv[]; {

.....


Hello編程世界


C語言的編譯器,開始是用B語言和彙編編寫,後來等到C語言基本可用的時候,C語言的編譯器用C語言本身重寫了。


任何編程語言的編譯器都可以使用匯編編寫,之過不過非常耗費時間,彙編可以用機器碼編寫,機器碼都是0和1組成的程序和硬件指令。0和1使用邏輯門構成邏輯電路去映射並存儲更為複雜的邏輯。在物理電路上,邏輯門由晶體管實現,邏輯電路由集成電路實現。


scottcgi


如果你能考上大學本科的話,計算機專業有門課叫《編譯原理》,裡面有個術語:自舉開發。


老饅頭簸箕


c程序需要編譯器編譯才能執行 這個編譯器可以是用c語言寫的,但編譯器誰來編譯呢 這是雞和蛋的問題 ,所以,最早的c編譯器肯定不是c寫的了


skydig


我不回答這個問題,只是糾正一下這個問題本身。這個問題應該這樣問:“C語言編譯器(compiler)是用什麼語言來編程的?”


W4290


C語言,用符合C語言語法的語句編寫的。

你能在記事本上編,就是沒有檢查語法錯誤的功能。

你也能在有關C語言的編譯器上編寫,在編譯器上能檢查錯誤。編好的文件是C語言文件,若是要放到電腦上運行的話,要通過編譯操作,就是說將C語言文件轉化為電腦能識別的機械語言,機械語言就是那些一大堆的“0”和“1”。


柯維的視野


通俗點說 c語言不是什麼編寫的 是一套規範和邏輯理論形成的一套語言 他的實現是通過這個規範和理論通過不同平臺的編譯器轉換具體的c語言代碼為相應平臺的彙編代碼 比如x86彙編 51彙編 之類的 然後彙編跟相應的機器(cpu內存等)緊密聯繫 最終還是機器代碼 如果你是初學者 很容易會認為c語言就是IDE(集成開發環境)只不過是一套便利的開發工具 要分開看 其他語言同理 關鍵在於編譯器 如何去解釋你的代碼


NAUTILUS


c語言的標準是通過英語定義的。

c語言的第一個編譯器是用BCPL寫的。

gcc一開始是使用c語言寫的,現在的gcc改成用c++寫的


分享到:


相關文章: