是否有一種編程語言,具有可用的交互式解釋器,即使它可以編譯爲機器碼?編譯解釋語言
編譯解釋語言
回答
編譯與「解釋」本質上是一個實現問題,而不是語言本身。例如,MRI Ruby 1.8被解釋,而MacRuby被編譯爲本機機器碼。兩者都包含互動式REPL。我所知道的語言有至少一個機器代碼的編譯器和至少一個REPL:
- 紅寶石
- 的Python
- 幾乎所有的Lisp(Lisp的是開創這種技術的語言,據我所知)
- OCaml的
- 哈斯克爾
- 第四
如果我們報數摹編譯成字節碼,以及機器代碼,這是絕大多數流行的字節碼編譯語言的真實:
- 的Java
- 斯卡拉
- Groovy的
- 二郎
- C#
- F#
- Smalltalk
兩個來到我的腦海裏:ocaml和scala(〜= java),但我確信那裏肯定還有更多。
順便說一句:將ocaml編譯爲本地代碼的命令是「ocamlopt」(ocamlc將編譯爲字節碼)。至於scala,我不確定gcj是否可以編譯它兼容的java字節碼,所以如果有人有更多的信息..? – Shautieh 2010-07-06 23:53:19
圖標曾經有一個編譯器,但它落入和離開維護。它可能仍然有效。
Python可以編譯爲windows可執行文件。
與「RubyScript2Exe」的情況一樣,您所指的工具實際上只是將python代碼與python解釋器捆綁在一起。這不是編譯;稱它爲編譯器是對這個術語的濫用。然而,它*是非常有用的,所以從實際的角度來看可能並不重要。 :-) – Benson 2010-07-07 00:09:53
Haskell,使用Glasgow Haskell Compiler,它有一個名爲GHCi的交互式「外殼」。
你的問題有點含糊。連渣會適應它:通過交互式解釋
,我的意思是 殼般的環境,在那裏你可以在運行時 工作互動。
Java有這個,例如,在Eclipse的「剪貼簿頁面」中,您可以在其中輸入Java表達式並立即對其進行評估。 Java當然也是一種編譯語言(雖然它通常編譯爲字節碼,但有各種編譯器輸出機器碼)。
那麼你在找什麼?也許你可以解釋你的問題或興趣。
我期待着各種各樣的答案提及的語言都能夠被編譯爲一個可執行文件,並擁有完備的交互式解釋器 – mykhal 2010-07-07 00:15:29
我嘗試使用mono/.net一點,發現隨機GC暫停是不愉快的(至少在我硬皮的舊筆記本電腦上)。我研究了使用gambit-c實現的可以編譯爲C的方案,但由於文檔有點受限以及軟件包不易安裝和使用,似乎很難合作。
我通常只是堅持使用像Python這樣的解釋語言綁定到C/C++,這更加痛苦,但至少我知道我在做什麼。
正如其他人所說,OCaml。
如果託管代碼(.NET CLI)足夠接近機器碼,F#也將成爲候選人。可能還有其他符合要求的.NET/Mono語言。
大量的語言提供了一個實現,它們既可以交互,也可以編譯爲機器代碼,但很少一次完成。 Standard ML of New Jersey是一個具有交互式循環但沒有字節碼的程序:它只是編譯爲內存中的機器代碼,然後分支到它。
這裏還有另外一個燒你的房子:
x86彙編
是啊,這是你的翻譯也是如此。
此時你在模擬器土地真的,但它確實符合你的國家的要求。
我想知道是否更容易命名編譯語言,有人還沒有拼湊了一個工作的解釋器。 :-)
- 1. ETL是解釋還是編譯語言
- 2. 解釋型語言 - 利用解釋器之後的編譯語言
- 3. php是編譯語言還是解釋語言?
- 4. 寫編程語言解釋
- 5. 在優化硬件時,編譯語言如何比解釋語言更好?
- 6. C#解釋語言
- 7. 解釋Django語言
- 8. 循環次數問題的效率(解釋與編譯語言?)
- 9. 語言編譯/解釋爲Javascript(如Ruby/Python的/ Coffescript)
- 10. 網站解釋與編譯語言(PHP,ASP,Perl,Python等)
- 11. 8086彙編語言無符號解釋
- 12. 解釋語言是否適合解釋器的實現語言?
- 13. 語言語法的特徵是什麼定義它將被解釋或編譯?
- 14. CLR語言優化。語言編譯器VS JIT編譯器
- 15. 編譯/解釋大多數語言的Windows代碼編輯器ala CodeRunner?
- 16. 什麼是編程語言,如果它不被解釋或編譯
- 17. 是R語言解釋?
- 18. 解釋人類語言
- 19. 編譯器vs解釋器,還是用解釋型語言編寫編譯器仍然使它成爲編譯器?
- 20. 語言間自動編譯
- 21. Haskell語言編譯指示
- 22. C語言編譯錯誤
- 23. 編程語言翻譯
- 24. 編譯成sh的語言
- 25. 反編譯JVM語言
- 26. C語言中:在編譯
- 27. 我在哪裏可以找到Dart語言的解釋器/編譯器?
- 28. 哪些JVM語言被解釋而不是編譯爲字節碼?
- 29. 在Java中實現的小型/玩具語言編譯器/解釋器
- 30. python編譯器包解釋
「可用的互動翻譯」是什麼意思?大多數解釋型語言實際上都是*翻譯*。 – staticsan 2010-07-06 23:35:53
@staticsan通過交互式解釋器,我的意思是類似shell的環境,在這裏你可以交互式地在運行時工作。通過機器碼,我不是指字節碼。 (對不起,如果我的術語不是最精確的) – mykhal 2010-07-06 23:41:58
您正在尋找的術語是「REPL」(Read-Eval-Print-Loop)。 – Artelius 2010-07-07 00:19:12