什麼是直譯器與編譯器
❶ 解釋器的解釋編譯
解釋器運行程序的方法有:
1.直接運行高級編程語言 (如 Shell 自帶的解釋器)
2.轉換高級編程語言碼到一些有效率的位元組碼 (Bytecode),並運行這些位元組碼
3.以解釋器包含的編譯器對高級語言編譯,並指示處理器運行編譯後的程序 (例如:JIT)
Perl,Python,MATLAB,與Ruby是屬於第二種方法,而UCSD Pascal則是屬於第三種方式。在轉譯的過程中,這組高級語言所寫成的程序仍然維持在源代碼的格式(或某種中繼語言的格式),而程序本身所指涉的動作或行為則由解釋器來表現。
使用解釋器來運行程序會比直接運行編譯過的機器碼來得慢,但是相對的這個直譯的行為會比編譯再運行來得快。這在程序開發的雛型化階段和只是撰寫試驗笑銷仔性的代碼時尤其來得重要,因為這個「編輯-直譯-除錯」的循環通常比「編輯-編譯-運行-除錯」的循環來得省時許多。
在解釋器上運行程序比直接運行編譯過的代碼來得慢,是因為解釋器每次都必須去分析並轉譯它所運行到的程序行,而編譯過的程序就只是直接運行。這個在運行時的分析被稱為直譯式的成本。在解釋器中,變數的訪問也是比較慢的,因為每次要訪問變數的時候它都必須找出該變數實際存儲的位置,而不像編譯過的程序在編譯碰汪的時候就決定好了變數的位置了。
在使用解釋器來達到較快的開發速度和使用編譯器來達到較快的運行進度之間是有許多妥協的。有些系統(例如有一些LISP)允許直譯和編譯的代碼互相調用並共享變數。這意味著一旦一個子程序在解釋器中被測試並除錯過之後,它就可以被編譯以獲得較快的運行進度。許多解釋器並不像其名稱所說的那樣運行原始代斗野碼,反而是把原始代碼轉換成更壓縮的內部格式。舉例來說,有些BASIC的解釋器會把keywords取代成可以用來在jump table中找出相對應指令的單一byte符號。解釋器也可以使用如同編譯器一般的文字分析器(lexical analyzer)和語法分析器(parser)然後再轉譯產生出來的抽象語法樹(abstract syntax tree)。
可攜性佳,直譯式程序相較於編譯式程序有較佳的可攜性,可以容易的在不同軟硬體平台上運行。而編譯式程序經過編譯後的程序則只限定於運行在開發環境平台。
❷ 什麼是位元組一個位元組有多大啊
位元組(Byte /t/ n. [C])是計算機信息技術用於計量存儲容量的一種計量單位,通常情況下一位元組等於八位,也表示一些計算機編程語言中的數據類型和語言字元。
位元組換算字元:
ASCII碼:一個英文字母(不分大小寫)佔一個位元組的空間,一個中文漢字占兩個位元組的空間。一個二進制數字序列,在計算機中作為一個數字單元,一般為8位二進制數,換算為十進制。最小值-128,最大值127。如一個ASCII碼就是一個位元組。
UTF-8編碼:一個英文字元等於一個位元組,一個中文(含繁體)等於三個位元組。中文標點佔三個位元組,英文標點佔一個位元組。
Unicode編碼:一個英文等於兩個位元組,一個中文(含繁體)等於兩個位元組。中文標點占兩個位元組,英文標點占兩個位元組。
(2)什麼是直譯器與編譯器擴展閱讀:
位元組碼(Bytecode)是一種包含執行程序、由一序列 op 代碼/數據對 組成的二進制文件。位元組碼是一種中間碼,它比機器碼更抽象,需要直譯器轉譯後才能成為機器碼的中間代碼。
通常情況下它是已經經過編譯,但與特定機器碼無關。位元組碼通常不像源碼一樣可以讓人閱讀,而是編碼後的數值常量、引用、指令等構成的序列。
位元組碼主要為了實現特定軟體運行和軟體環境、與硬體環境無關。位元組碼的實現方式是通過編譯器和虛擬機器。編譯器將源碼編譯成位元組碼,特定平台上的虛擬機器將位元組碼轉譯為可以直接執行的指令。位元組碼的典型應用為java bytecode。
位元組碼在運行時通過JVM(JAVA虛擬機)做一次轉換生成機器指令,因此能夠更好的跨平台運行。
❸ java的『編譯器』與『即時編譯器』有什麼區別
你好!編譯器(在windows下,javac.exe)將源代碼(java文件)編譯為位元組碼(bytecode),存放在class文件中。
位元組碼不能直接在機器上執行,而是通過虛擬機(windows下是java.exe)執行。具體的執行方式有兩種:
1. 一般情況下解釋執行。解釋執行並不是「解釋為用c++語言寫成的程序」,而是jvm把位元組碼看成腳本,根據位元組碼中的指令,由JVM去調用實際的本地方法。
2. 在打開了JIT參數的前提下,jvm會把執行過程中發現的熱點位置,由jvm內部的即時編譯器編譯為本地機器碼直接執行。
編譯器將java文件編譯為class文件,解釋器將class文件變為機器語言
❹ 編譯英文
編譯:Edit and translate/compilation /compile.
編譯就是把高級語言變成計算機可以識別的二進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成二進制的。 編譯程序是把一個源程序翻譯成目標程序的工作過程。
編譯過程中會用到編譯器。編譯器是一種特殊的程序,它可以把以特定編程語言寫成的程序變為機器可以運行的機器碼。理論上,任何編程語言都可以是編譯式,或直譯式的。它們之間的區別,僅與程序的應用有關。