簡體   English   中英

語言被“解釋”意味着什么?

[英]What does it mean for a language to be ‘interpreted’?

像Ruby這樣的語言(如果運行MRI,我的意思是沒有編譯成字節碼)運行實際上每次執行時都需要解析,例如方法或循環體嗎? 我的意思是,要執行一個循環,你需要解析它的身體N次?

我一直以為所有這些程序都在引導程序中被解析一次,在“強類型”語句樹中轉換,等等。這不是真的嗎?

解釋是一個定義非常寬松的詞。 甚至機器代碼指令也由處理器解釋。

通常,在運行之前編譯的語言和沒有編譯過程並在另一個程序(稱為解釋程序)內運行的語言之間進行區分。 后一種語言通常被稱為解釋語言

在某些情況下,這條線並不清楚:

  • 有些語言可以編譯或解釋,例如PHP。
  • 某些解釋的代碼可能在運行時編譯為本機機器指令( JIT編譯 )。
  • 某些編譯語言可能具有exec功能,允許在運行時生成和執行代碼,繞過正常的編譯過程。

我現在只是吝嗇,並說幾乎每種編程語言都被解釋,無論是軟件(Ruby,Python,Java)還是硬件(C,C ++)解釋器:)

對於一個真正的答案,雖然我不知道內部的Ruby實現,但我確定他們不會一遍又一遍地解析語句。 雖然在原始實現中沒有使用字節碼(或者它們是否已經遷移?),但是它們使用了一些中間表示(當你想為它編寫C擴展時可以很好地看到它),因此只是反復執行它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM