語言處理器

設計程序時使用的語言稱為程序設計語言念链,如C、C++贝润、Java、Ruby铝宵、Python語言等打掘。

程序員必須使用與程序設計語言相匹配的軟件來執(zhí)行由該語言編寫的代碼华畏,這種軟件即語言處理器。

機器語言與匯編語言

有些程序設計語言無需借助軟件(語言處理器)執(zhí)行尊蚁,這些語言稱之為機器語言亡笑。機器語言可以由硬件直接解釋執(zhí)行,理論上不必使用語言處理器横朋。

然而仑乌,機器語言書寫的程序只有載入內存后才能通過硬件執(zhí)行。因此用戶在實際使用時琴锭,必須先通過軟件從磁盤文件系統(tǒng)中讀取機器語言程序晰甚,再將其復制到內存。不過這類程序稱不上是語言處理器决帖,通常稱為操作系統(tǒng)(operating system)厕九。

匯編語言和機器語言是很容易混淆的概念,兩者并不相同地回。機器語言代碼本質是一個位數(shù)很長的二進制數(shù)字扁远,由于它不易于閱讀,人們通過匯編語言程序來表述這個巨大的數(shù)字刻像,使其更易于理解畅买。因此,如果要執(zhí)行匯編語言寫成的程序细睡,用戶通常需要使用軟件將其轉換為機器語言谷羞。這種軟件稱為匯編程序(assembler)。匯編程序可以說是一種最基本的語言處理器纹冤。

解釋器與編譯器

語言處理器大致分為解釋器和編譯器兩種洒宝,它們的執(zhí)行原理有很大地差異。

  • 解釋器

解釋器根據程序中的算法執(zhí)行運算萌京,它是一種用于執(zhí)行程序的軟件雁歌。如果執(zhí)行的程序由虛擬機器語言或類似于機器語言的程序設計語言編寫,這種軟件也能稱為虛擬機知残。

  • 編譯器

編譯器能將某種語言編寫的代碼轉換*為另一種語言的程序靠瞎。通常它會將源代碼轉換為機器語言程序。編譯器轉換程序的行為稱為編譯求妹,轉換前的程序稱為源代碼或源程序乏盐。如果編譯器沒有把源代碼直接轉換為機器語言,一般稱為源代碼轉換器或源碼轉換器(source code translator)制恍。

程序設計語言提供何種類型的語言處理器不一而論
例如父能,C語言也提供解釋器卻很少使用。C語言直接通過編譯器轉換為機器語言執(zhí)行净神。轉換后得到的機器語言程序會暫時保存至某個文件何吝,需借助操作系統(tǒng)來執(zhí)行溉委。

有些語言混用解釋器和編譯器
例如,Java語言首先通過編譯器把源代碼轉換為Java二進制代碼爱榕,并將這種虛擬的機器語言保存在文件中瓣喊。之后,Java虛擬機的解釋器將執(zhí)行這段代碼黔酥。

傳統(tǒng)狹義的編譯器將會以文件形式保存轉換后的程序藻三,只要源程序沒有變更,編譯僅需執(zhí)行一次跪者,執(zhí)行時間也會縮短棵帽。然后一些編譯器并不保存轉換后的程序文件,這種編譯器常見于解釋器內部坑夯。
例如:Java虛擬機為了提高性能岖寞,會在執(zhí)行過程中通過編譯器將一部分Java二進制代碼直接轉換為機器語言使用。執(zhí)行過程中進行的機器語言轉換稱為動態(tài)編譯或JIT編譯(Just-In-Time compile)柜蜈。轉換后得到的機器語言程序將被載入內存仗谆,由硬件執(zhí)行,無需使用解釋器淑履。

編譯器用途多樣隶垮,它能夠直接解釋器內部執(zhí)行。此外秘噪,編譯器的作用也不局限于將源程序轉換為機器語言狸吞。
例如:Ruby語言的解釋器內部會通過編譯器來執(zhí)行預處理工作,將源程序轉換為類似于Java二進制代碼的虛擬機器語言程序指煎。解釋器真正執(zhí)行的是這種經過編譯的語言蹋偏,這種設計提高了執(zhí)行性能。

過去人們提高編譯器時至壤,首先會聯(lián)想到費時的編譯過程威始。不過由于編譯后實際執(zhí)行的是機器語言,因此執(zhí)行速度很快像街。而對于解釋器黎棠,人們通常認為它會在程序輸入的同時立即執(zhí)行,執(zhí)行速度較慢镰绎。這就是兩者的基本區(qū)別∨д叮現(xiàn)代的解釋器內部常采用各種類型的編譯器,已經越來越沒有必要將解釋器和編譯器區(qū)分看待畴栖。

語言處理流程

無論解釋器還是編譯器随静,語言處理器前半部分的程序結構都是大同小異的。


語言處理器內部處理流程
  • 源代碼首先將進行詞法分析吗讶,由一長串字符串細分為更小的字符串單元(單詞化)燎猛,分割后的字符串稱為單詞叼丑。
  • 之后處理器將執(zhí)行語法分析處理,把單詞的排列轉換為抽象語法樹(AST)扛门。
  • 至此為止,解釋器和編譯器的處理方式相同纵寝。
  • 之后編譯器會將抽象語法樹轉換為其他語言论寨,而解釋器會一邊分析樹一邊執(zhí)行運算。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末爽茴,一起剝皮案震驚了整個濱河市葬凳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌室奏,老刑警劉巖火焰,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胧沫,居然都是意外死亡昌简,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門绒怨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纯赎,“玉大人,你說我怎么就攤上這事南蹂∪穑” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵六剥,是天一觀的道長晚顷。 經常有香客問我,道長疗疟,這世上最難降的妖魔是什么该默? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮秃嗜,結果婚禮上权均,老公的妹妹穿的比我還像新娘。我一直安慰自己锅锨,他們只是感情好叽赊,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著必搞,像睡著了一般必指。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恕洲,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天塔橡,我揣著相機與錄音梅割,去河邊找鬼。 笑死葛家,一個胖子當著我的面吹牛户辞,可吹牛的內容都是我干的。 我是一名探鬼主播癞谒,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼底燎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弹砚?” 一聲冷哼從身側響起双仍,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎桌吃,沒想到半個月后朱沃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡茅诱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年逗物,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑟俭。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡敬察,死狀恐怖,靈堂內的尸體忽然破棺而出尔当,到底是詐尸還是另有隱情莲祸,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布椭迎,位于F島的核電站锐帜,受9級特大地震影響,放射性物質發(fā)生泄漏畜号。R本人自食惡果不足惜缴阎,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望简软。 院中可真熱鬧蛮拔,春花似錦、人聲如沸痹升。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疼蛾。三九已至肛跌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背衍慎。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工转唉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人稳捆。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓赠法,卻偏偏與公主長得像,于是被迫代替她去往敵國和親乔夯。 傳聞我的和親對象是個殘疾皇子期虾,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)驯嘱,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • TITLE: 編程語言亂燉 碼農最大的煩惱——編程語言太多喳坠。不是我不學習鞠评,這世界變化快! 有時候還是蠻懷念十幾壕鹉、二...
    碼園老農閱讀 5,295評論 2 35
  • 今天下午看到一句話:你有freestyle嗎剃幌?這句話貌似已經看到好幾次了,想想應該是什么網絡流行語吧晾浴,出于好奇负乡,百...
    我就是哈哈哈閱讀 834評論 4 3
  • 貓又前幾天剛剛過了自己的20歲生日延塑,但是不是很開心箩祥,確切的說貓又高中畢業(yè)的兩年里论皆,都不是很開心枕稀。倒不是因為缺錢亦或...
    將暮未暮的人生閱讀 265評論 0 0
  • 靜坐闌珊夜聽曲嗦明,堂前月淺搖庭樹 他年木槿花開時果港,君來能飲一杯無
    淺月堂前閱讀 110評論 0 0