有哪些語言的編譯器是用C++寫的? 為何選用C++


C++ 的就是。clang 和新版 gcc 都是 C++ 寫的。

icc 和 VC 沒開源,估計也是 C++ 寫的。icc 用了 EDG 的前端,是 C,後端不清楚。

即便不算icc,三大主流 C++ 編譯器都是 C++ 寫的了。

由此推論,幾大主流操作系統內核都是用 C++ 寫的編譯器編譯的,儘管內核本身主要是 C 寫的。包括 Linux/Windows/FreeBSD/Mac OS X。


LLVM是C++寫的。


最拉風的肯定是llvm,有大量基於這個的C++編譯器

另很多js引擎啊

比如Google的v8,比如Mozilla的SpiderMonkey,都是C++寫的

再補充一點,還有類似jvm之類的比如hotspot就是C++寫的


c++ 在軟體擴展性上,有的情況是要優於C語言。因為是語言級別的支持,讓你不得不這樣去思維

對比 llvm 和 gcc 就可以得出結論,你如果想修改一下Gcc的東西,花費的時間是要比llvm 多。

但是以上是思維模式的範疇,其實c也可以很好的「面向對象」,linux 內核裡面的有些設計,以及windows 窗口的class 模型,就是例子。

關鍵還是看設計,跟你用哪個語言沒有太多的關係。

還有,linux 內核不用C++ 也是有一定道理的,因為c++ 的 析構模型,如果運用不好的話,你會發現在編譯器層面,給你調用了大量你意想不到的東西。對於內核這種高性能場景,和非常有掌控欲的內核黑客,C語言+彙編是完全可以理解的


截止發帖之日,最新的 gcc 源代碼樹中的代碼是這樣的:

為何人們會存在「最新的 gcc 用 C++ 寫的」錯覺?gcc 改成 C++ 幾乎相當於重寫了,而這需要非常龐大的工作量,開源社區基本上不可能貢獻如此大的工作量,所以原本使用 C 寫的 gcc 全面改成 C++ 不可能,尤其是核心代碼。外圍的獨立小工具用 C++ 寫的情況倒可能出現。

當然 clang 是 C++ 寫的(雖然其中仍然有 C 代碼,你查看源代碼樹可以看到),原因更多的應該只是設計者喜歡 C++。

@陳碩


推薦閱讀:

為什麼解釋型的腳本語言(如Lua、Python)可以熱更新,而編譯型的語言(如C、C++)不能呢?
C++ 析構函數問題?
只是為了建立一點編程的思想思維,學哪個語言最好?
學習編程語言最好的方法是什麼?
關於函數式語言的編譯優化,有沒有好的學習資料?

TAG:編程語言 | C | 編譯器 |