編譯器自舉編譯器
發布時間: 2025-05-24 09:25:09
⑴ 什麼是編程語言的自舉
就是自己的編譯器可以自行編譯自己的編譯器。
實現方法就是這個編譯器的作者用這個語言的一些特性來編寫編譯器並在該編譯器中支持這些自己使用到的特性。
首先,第一個編譯器肯定是用別的語言寫的(不論是C還是Go還是Lisp還是Python),後面的版本才能談及自舉。
至於先有雞還是先有蛋,我可以舉個這樣的不太恰當的例子:比如我寫了一個可以自舉的C編譯器叫作mycc,不論是編譯器本身的執行效率還是生成的代碼的質量都遠遠好於gcc(本故事純屬虛構),但我用的都是標準的C寫的,那麼我可以就直接用gcc編譯mycc的源碼,得到一份可以生成高質量代碼但本身執行效率低下的mycc,然後當然如果我再用這個生成的mycc編譯mycc的源碼得到新的一份mycc,新的這份不光會產生和原來那份同等高質量的代碼,而且還能擁有比先前版本更高的執行效率(因為前一份是gcc的編譯產物,後一份是mycc的編譯產物,而mycc生成的代碼質量要遠好於gcc的)。故事雖然是虛構的,但是道理差不多就是這么個道理。這也就是為什麼如果從源碼編譯安裝新版本的gcc的話,往往會「編譯——安裝」兩到三遍的原因。
⑵ .net中內置的編譯器稱為
.net中內置的編譯器稱為Roslyn編譯器,負責把C#和VB代碼編譯為程序集。最 C#語言的編譯器是用C++ 編寫的,後來微軟推出了一個新的用C#自身編寫的編譯器:Roslyn,它屬於自舉編譯器。
熱點內容