{eval=Array;=+count(Array);}
首先答案是c語言是用c語言編寫。
一個語言能否自己編寫自己實現自己編譯,這叫自編譯,自舉性。目前能實現自舉性的語言沒有幾個,而自舉性也就成了一個語言能否真實強大的標志。
一般來說圖靈完備的語言,編譯型語言,虛擬機語言可以實現自舉。而解釋型語言基本上很難。
現代很多語言都沒實現自舉,Java(jvm),Javascript, python,ruby,lua,php,perl……一堆。這些語言編譯器、解釋器都是c語言。
一個語言能自舉是他們社區和開發一直夢寐以求的事情,也是他們情懷和追求所在。有一個語言為了實現自舉成功,花了近20年,前年圣誕節才正式推出了第一個正式版本。它就是perl6,perl的下一代語言。perl6支持過程、OO、函數式三種程模式,支持虛擬機的語言(自己的虛擬機和jvm)。為了做好perl6,社區搞了一個功能啟示錄,把要實現的功能好點子都錄進去。后來一個日本人參考這個啟示錄自己實現了一個語言,這就有了ruby語言,但是ruby沒有自舉。
我在以前的回答中,曾說過c語言的來歷:
上世紀70年代,為了實現unix,教主Tomphson和Ritchie開發了B語言,但是b語言性能不行,編寫也較繁瑣,所以又在B語言的基礎上開發出了現在的C語言。
第一個C語言編譯器的原型是用B語言或者混合B和匯編語言編寫的。采用部分實現功能,交叉編譯方式實現。
先用B和匯編語言編寫一個C語言的部分必須功能的編譯器,再通過這個編譯器,完成完整的C語言編譯器。詳細過程如下:
1、先編寫一個只有C語言最基本功能編譯器C0語言,用匯編語言編寫出C0的編譯器。
2、接著用C0實現比C0復雜,功能不完整的C語言子集C1語言,用C0編譯出C1語言的編譯器。
3、在C1-〉c2……如此循環直到Cn,Cn功能已經強大到可以實現C。
4、用Cn編譯實現了第一個c語言編輯器,即C實現了自舉。
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++ 語言編寫的函數
C語言是用計算機編寫出來的,廣泛用于開發,C語言的設計目標,是提供一種簡易的方式編譯,專門用來處理存儲器,產生少量的機器碼,不需要任何運行環境的支配,便能運行的一種編程語言,簡稱:C語言。c語言與C十十,Java,編程語言有所不同,主要有:dang,GCC,WlN一TC,SUBLlME,MSVC,TurboC。
首先C語言是一門計算機編程語法規則規范,可以將C語言比做英語語言,我們在學習英語的時候都是先學語法 單詞之類的英語規則,在學會了語法以后我們就可以用英語寫出自己的文章,同樣的道理C語言也是如此,我們可以用C語言寫出自己的程序。
其次計算機并不認識什么C語言,計算機只認識數字0和1(硬件上是使用開關來表示,用數字0來代表低電平,數字1代表高電平),那怎么用0和1來描述十進制整數?答案是二進制。
再次我們的編寫的程序要能在計算機上實現,首先要做的就是翻譯工作,將C語言編寫的程序(文本格式)翻譯成二進制數字文本格式,
最后就是翻譯好的二進制文件,如何讓計算機幫我們運行呢?答案就是通過一種工具將我們編譯好的二進制文件存儲到存儲器中,存儲器是啥呢?存儲器可以比作是一個有很多抽屜的柜子,比如二進制文件開頭處是數字001,那么我們的工具就會在第三個抽屜放東西,前兩個抽屜為空,來代表001。
至此 我們的C語言程序就能夠在計算機上運行起來!
語言是規范,是沒有用什么語言寫出來的概念的。你問的應該是語言的編譯器是用什么寫的。c編譯器有很多,這些編譯器根據發布時期不同,所用語言也有差異,早期用匯編,c成熟了用c語言自己,理論上任何語言都可以來做c編譯器的。
c程序需要編譯器編譯才能執行 這個編譯器可以是用c語言寫的,但編譯器誰來編譯呢 這是雞和蛋的問題 ,所以,最早的c編譯器肯定不是c寫的了
最早最早的c編譯器(貝爾實驗室階段)是用匯編寫的,之后的編譯器一般都是用c/c++編寫,并且用已有的舊版本編譯器來編譯新版本的源碼。
用C語言寫的代碼通過C語言的編譯器編譯成EXE,最早版本的C語言的編譯器是通過匯編語言寫的編譯器編譯出來的,最早版本的匯編語言編譯器是由機器語言寫的編譯器編譯出來的。舊版本的C語言編譯器可以用來編譯出新版本的編譯器程序。
10
回答10
回答0
回答2
回答9
回答10
回答5
回答6
回答0
回答10
回答