2015-10-26 84 views
0

如果我有一個「宿主」應用程序在某個時刻執行並知道某些代碼的位置。那會是什麼叫如果然後閱讀代碼的實時,然後做如在此代碼創建一個窗口的正確響應:什麼是編程語言,如果它不被解釋或編譯

int main() 
{ 
    create magical mystical window() 
} 

我知道,如果一個語言直接編譯的代碼轉換成二進制它會被稱爲編譯語言,並且如果一種語言將該代碼轉換成另一種語言,它將被稱爲解釋型語言。

+0

如果代碼被轉換成另一種語言,它是一個「反編譯器」,而不是一個解釋器......「解釋器」正是你想要的。 –

+0

謝謝,我現在明白,一種轉換爲另一種語言的語言稱爲反編譯語言,編譯成二進制語言的語言稱爲編譯語言,應用程序實時編譯的語言稱爲解釋語言。 – Hyden

回答

1

其實,你錯了什麼,你知道

  • 一塊軟件,需要代碼並將其轉換爲二進制文件 可以在機器的OS上運行的和/或硬件直接通常被稱爲 編譯
  • 如果編譯器爲與其自身執行的平臺不同的平臺生成代碼,那麼這有時稱爲交叉編譯器
  • 一塊軟件,需要代碼並執行它直接 ,轉換其高級別結構變爲低電平,該機器的操作系統和/或硬件上運行 結構通常被稱爲 解釋
  • 一段軟件需要代碼並將其轉換爲 然後可以編譯或解釋的另一組代碼是 有時稱爲轉發程序

然而,事情並不那麼簡單。例如,Java被解釋,但它動態地編譯它運行的一些代碼,但是,我們仍然稱它爲解釋型語言。 C被稱爲編譯語言,但許多編譯器會將C轉換爲彙編器,然後將其彙編成處理器將運行的字節碼。因此,C實際上是一種編譯語言,但我們把它稱爲一種編譯語言,而且一些現代編譯器(不幸地)繞過了彙編語言的步驟。

因此,對於很多語言,它們是通過約定來確定的,以及它是如何使用的。但是,正如大衛·施瓦茨在他自己的答案評論這個問題只是說:

真的,這不是來描述執行過程作爲語言的屬性特別好的主意。

+0

好的,謝謝。我會改變接受的答案,因爲它更詳細,並提到它被稱爲我不知道的「譯員」,並有很好的例子。 – Hyden

2

我知道編程語言讀取代碼並將其轉換爲另一種語言,然後編譯它將被稱爲解釋型語言。

不,這是帶有額外步驟的編譯語言。

你所描述的是一種解釋型語言,解釋者計算出每行代碼在運行時意味着什麼。

+0

好的,謝謝。所以,爲了確保一種語言變成另一種語言,然後編譯出來仍然是一種編譯語言,而我所描述的是一種解釋語言? – Hyden

+1

@Hydra是的。我應該指出,儘管C通常被認爲是一種編譯語言,但如果你願意的話,你可以創建一個C解釋器。同樣,可以爲大多數解釋型語言編譯編譯器。真的,將執行過程描述爲語言屬性並不是一個好主意。 –