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