掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
GCC在2012年8月15日的時候,merge了一個patch - Merge from cxx-conversion branch,這意味著,以后在GCC的編譯只能用C++的編譯器了,也意味著,gcc的實現(xiàn)代碼開始轉(zhuǎn)向C++了。

站在用戶的角度思考問題,與客戶深入溝通,找到宜川網(wǎng)站設(shè)計與宜川網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋宜川地區(qū)。
你可能會有兩個問題,
那,我們來看一看吧。
在GNU的C++ Conversion文檔中,我們可以在Background中看到這樣的描述:
Whether we use C or C++, we need to try to ensure that interfaces are easy to understand, that the code is reasonably modular, that the internal documentation corresponds to the code, that it is possible for new developers to write new passes and to fix bugs. Those are the important issues for us to consider. The C++ features which are not present in C – features which are well documented in many books and many web sites – are not an important issue.
這句話的意思可以理解為,今天GCC在用C語言的實現(xiàn)已經(jīng)有點hold不住了,因為,開發(fā)人員覺得,不管我們用C或C++,都需要努力確保接口是容易理解的,這樣我們的代碼是想當(dāng)理性地被模塊化的,這樣內(nèi)部文檔和代碼一致,這樣可以更好地組織代碼,這樣有利于新人了fix-bug。而C++正好可以讓他們更好的完成這些東西。
GNU還給出了下面這些理由:
然后,給了一個PDF http://airs.com/ian/cxx-slides.pdf,這是Google 的 Ian Lance Taylor的的一個PPT,這個文檔可以讓大家更好地理解我在《C++的坑多嗎?》一文中那些觀點。我都不知道我要說多少遍C++的封裝,繼承和多態(tài)比C語言在代碼組織上要好得多得多。大家還是自己看一下代碼吧:
數(shù)據(jù)結(jié)構(gòu)的操作 —— 你寫的一定不會有STL好
結(jié)構(gòu)套結(jié)構(gòu)還是繼承?
函數(shù)指針還是多態(tài)?
垃圾回收 還是 智能指針?
Why not C++?
***,我想來介紹一下Bootstrapping。 所謂Bootstrapping,就是用自己這個語言寫編譯器來編譯自己,也就是說如果你要編譯gcc,你需要用一個c的編譯器來編譯之,這個就是bootstrapped process,自舉過程。包括 BASIC, Algol, C, C++, Pascal, PL/I, Factor, Haskell, Modula-2, Oberon, OCaml,Common Lisp, Scheme, Java, Python, Scala 等語言都這么干。
這樣干的好處主要是,自己可以測試自己,編譯器的改善和語言的改善相輔相成。
但是,這是一個“雞生蛋,還是蛋生雞”的問題,如果你需要用X語言來寫一個X語言編譯器的語言,你可以這樣干:

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流