有哪些語言的編譯器是用C++寫的? 為何選用C++
01-04
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 源代碼樹中的代碼是這樣的:
當然 clang 是 C++ 寫的(雖然其中仍然有 C 代碼,你查看源代碼樹可以看到),原因更多的應該只是設計者喜歡 C++。
@陳碩推薦閱讀:
※為什麼解釋型的腳本語言(如Lua、Python)可以熱更新,而編譯型的語言(如C、C++)不能呢?
※C++ 析構函數問題?
※只是為了建立一點編程的思想思維,學哪個語言最好?
※學習編程語言最好的方法是什麼?
※關於函數式語言的編譯優化,有沒有好的學習資料?