楊曉兵
摘要:本文通過介紹編譯器的現(xiàn)狀,并著重論述了三種編譯器的概念及缺點,引出YC編譯器的特點及優(yōu)勢,允許最終用戶直接對開發(fā)商提供的產(chǎn)品再次擴展與開發(fā)。
關(guān)鍵詞:編譯器;YC;分析;優(yōu)點
編譯器是將“一種語言(通常為高級語言)”翻譯為“另一種語言(通常為低級語言)”的程序。C語言代碼主要是在特定詞匯照著特定格式排列組合而成的,方便程序員的識別與理解,可CPU卻無法直接讀懂C語言代碼,其往往只能讀懂二進制形式的指令。因此,開發(fā)者必須設(shè)計出一個專門的工具,將程序員使用的C語言代碼直接轉(zhuǎn)化為CPU能讀懂的二進制指令,換句話說就是將代碼轉(zhuǎn)變?yōu)?exe程序;此類工具名為編譯器(Compiler)。編譯器能夠識別代碼中的詞匯、句子以及各種特定的格式,并將他們轉(zhuǎn)換成計算機能夠識別的二進制形式,這個過程稱為編譯。
1.編譯器的現(xiàn)狀
編譯器輸出是指通過包含入口點的名字、地質(zhì)、外部調(diào)用等內(nèi)容的機器代碼,構(gòu)成目標文件。通常,一組目標文件并非出自同一個編譯器,但是一組目標文件中的所有文件在編譯時必須使用相同的輸出格式,同時需要確保其能夠鏈接在一起,形成可供用戶執(zhí)行的EXE文件。
當今世界上有三大編譯器:msvc編譯器、gcc編譯器和LLVM/clang編譯器。這三大編譯器,直接或者間接開發(fā)出了現(xiàn)在主流的操作系統(tǒng)和幾乎所有的軟件。
(1) msvc編譯器是微軟公司的產(chǎn)品,有40年的歷史,是應(yīng)用最廣泛的編譯器之一,它功能強大,但體積也非常龐大。Windows電腦操作系統(tǒng)、相應(yīng)的應(yīng)用程序和驅(qū)動程序,都是直接或間接由msvc編譯器開發(fā)的(依賴JavaScript、Python、Java、Basic等語言)。
(2)gcc編譯器是開源的,不屬于任何公司,它的體積巨大。Linux電腦操作系統(tǒng),Android手機操作系統(tǒng)、所有嵌入式OS操作系統(tǒng)以及配套的驅(qū)動程序、應(yīng)用程序,都是直接或間接用gcc編譯器開發(fā)的。
(3)LLVM/clang編譯器是開源的,它由gcc編譯器發(fā)展而來,交給蘋果公司負責開發(fā)與維護。其中,macOS電腦操作系統(tǒng)、iOS手機操作系統(tǒng)以及與之配套的應(yīng)用軟件都是出自該編譯器。
但是三大編譯器存在明顯的缺點:只兼容自己開發(fā)出的三大電腦操作系統(tǒng),即Windows—msvc,Linux—gcc,macOS-—LLVM/clang。舉例來說:在Windows操作系統(tǒng)下開發(fā)的軟件不能在Linux和macOS中直接編譯。如果想讓一個軟件在各個操作系統(tǒng)中都能運行,那就需要針對每種操作系統(tǒng)對此軟件做相應(yīng)開發(fā),這無疑增加了開發(fā)工作量和維護成本;若是軟件只能在特定的操作系統(tǒng)下運行,不同的版本對應(yīng)的動態(tài)鏈接庫也將有所差異,這就要需要開發(fā)多套同樣功能的動態(tài)庫,同樣增加了成本。 如果軟件產(chǎn)品規(guī)模較大(如文件數(shù)超過一萬),則各文件中的函數(shù)調(diào)用關(guān)系極其復雜、調(diào)試費時費力,哪怕改作微小的改動,都需重新生成執(zhí)行代碼。
2.三大編譯器缺點
軟件開發(fā)講究模塊化,在C/C++中,有兩種方式實現(xiàn)模塊化。(1)類繼承或源碼文件;(2)動態(tài)鏈接庫或COM對象。在這兩種方式中,前者的模塊被放入執(zhí)行文件,后者的模塊以二進制方式提供。用戶無法修改模塊,很難進行二次開發(fā)和功能擴展。YC編譯器除提供上述兩種模塊方式外,還通過擴展C/C++語法提供了“獨立源碼模塊”的方式,這種方式的模塊以C/C++源碼方式提供,用戶通過修改模塊源碼而進行二次開發(fā)和功能擴展,源碼修改后,無需手動編譯。
YC編譯器經(jīng)過近20年的研發(fā),已經(jīng)具有三大編譯器的主要功能,同時解決了三大編譯器的上述缺點。一個軟件用YC編譯器只需要編寫一套源代碼,就可以在所有操作系統(tǒng)上運行,而三大編譯器則需要針對不用的操作系統(tǒng)進行開發(fā)。
3.YC編譯器特點分析
YC(Yang C++,簡稱YC)瀏覽器—國內(nèi)首款全新瀏覽器內(nèi)核,YC瀏覽器內(nèi)核(暫命名Ycweb)的研發(fā)始于2001年底,歷時十年。幾十萬行的代碼,沒有借用任何開源的代碼,做到了真正獨立自主開發(fā),是繼世界主流四款瀏覽器內(nèi)核之后的又一款全新瀏覽器內(nèi)核。
YC瀏覽器主要依托于HTML5技術(shù),是一個智能終端瀏覽器,其不僅體積小、運行速度高、拓展性強,還能夠自由定制、安全性能較強;不同于其他的瀏覽器,YC瀏覽器可以實現(xiàn)對Trident、Gecko、Presto以及Webkit等四款內(nèi)核瀏覽器的兼容,網(wǎng)頁制作速度更高。此外,YC瀏覽器還支持最先進的網(wǎng)絡(luò)技術(shù),包含W3C標準、CSS3、HTML5、Canvas、WebM、ECMAScript 5以及JavaScript等。由此可見,YC瀏覽器具備超強的核心引擎,能夠帶動更多的便捷應(yīng)用。
YC瀏覽器還允許第三方應(yīng)用擴展,為廠商開發(fā)配備了接口,瀏覽器中專門內(nèi)置了YC++編譯器,能夠?qū)崿F(xiàn)實時編譯。此外,使用者還可以直接在瀏覽器中開發(fā)插件、應(yīng)用軟件,甚至可以根據(jù)自己的需要定制特殊功能、根據(jù)需要開發(fā)出個性化的產(chǎn)品與服務(wù),并將其直接傳輸至智能終端設(shè)備中。
(1)兼容性強。YC編譯器支持C、C++、JavaScript、HTML、css、x86匯編、arm匯編等語言,支持32位和64位的Intel系列CPU,支持64位ARM系列CPU。
(2)應(yīng)用性廣。YC編譯器可以高效地開發(fā)各種高性能的系統(tǒng)軟件和應(yīng)用軟件(如操作系統(tǒng),工業(yè)軟件,行業(yè)軟件等)。
(3)功能豐富。YC編譯器比三大編譯器具有更佳的模塊管理功能,即不需要手動編寫生成代碼的腳本,它用HTML+css來生成界面,通過程序語句來實現(xiàn)自動編譯,用C、C++和JavaScript來實現(xiàn)功能。
(4)適合教學。YC編譯器具有詳細分析源碼邏輯關(guān)系的功能,可以讓初學者輕松地學習軟件技術(shù)。
(5)使用便捷。YC編譯器提供幾個編譯函數(shù),供三大編譯器調(diào)用。因此,現(xiàn)有的軟件產(chǎn)品可以用YC編譯器生成其中的任意部分代碼,而不必整個重新用YC編譯器開發(fā),從而使工作量減少到最小。
(6)開源性強。YC編譯器開源了80%左右。如HTML解析器,JavaScript的Jit,c/c++的x86-32、x86-64、arm64等后端。用戶可以修改優(yōu)化這些代碼,也可以編寫新的CPU后端代碼,使YC編譯器支持新的CPU。
(7)可以自舉。YC編譯器可以自己編譯自己。它的體積最小可裁剪到1.5M左右,加上HTML解析器不超過6M。生成同樣質(zhì)量的代碼,編譯速度超過三大編譯器許多。編譯所需要的內(nèi)存也遠遠小于三大編譯器。因此它非常適合與用戶軟件產(chǎn)品集成在一塊,方便產(chǎn)品的直接用戶進行二次開發(fā)和功能擴展。
(8)操作性好。YC編譯器提供了一個集成開發(fā)環(huán)境(IDE),還提供一個開源的適用于各平臺的代碼編輯器,命名為YC編輯器。YC編譯器的所有代碼都用YC編輯器寫成,用戶可以非常容易地改寫、擴展這個編輯器。
4.結(jié)語
YC編譯器除了能夠?qū)崿F(xiàn)靜態(tài)、動態(tài)語言的編譯,還可以用于解析HTML超文本。本文通過對實際示例程序進行分析,發(fā)現(xiàn)其均能夠經(jīng)由YC編譯器生成可獨立執(zhí)行文件,以便使用者學習、開發(fā)、使用。
參考文獻:
[1]劉舒,彭鳳,段曉悅,等.一種DHFR介導的可調(diào)控的腺嘌呤堿基編輯器的構(gòu)建[J].現(xiàn)代生物醫(yī)學進展,2021(23):4401-4406.
[2]甄仲強.云計算下的移動通信網(wǎng)絡(luò)優(yōu)化實踐探究[J].工程建設(shè)與設(shè)計,2021(22):98-99+106.
[3]楊娜.新媒體集成發(fā)布平臺富文本編輯器選型淺析[J].現(xiàn)代電視技術(shù),2021(11):111-113.