是否有编程语言,具有可用的交互式解释器,即使它可以编译为机器代码?
答案 0 :(得分:14)
编译与“解释”本质上是一个实现问题,而不是语言本身。例如,MRI Ruby 1.8被解释,而MacRuby被编译为本机机器代码。两者都包含互动REPL。我知道的所有语言至少有一个机器代码编译器和至少一个REPL:
如果我们将编译计算为字节码以及机器代码,那么绝大多数流行的字节码编译语言都是如此:
答案 1 :(得分:12)
Haskell,使用Glasgow Haskell Compiler,它有一个名为GHCi的交互式“shell”。
答案 2 :(得分:5)
Lisp的许多版本都提供了两种选择,包括Clojure。
答案 3 :(得分:3)
我想到了两个:ocaml和scala(〜= java),但我确信那里肯定会有很多。
答案 4 :(得分:3)
这是另一个烧毁你房子的人:
x86汇编
是的,还有解释器。
此时你真的处于模拟器领域,但它确实符合你所说的要求。
我想知道是否更容易命名编译语言,某人没有拼凑出一个有效的翻译。 : - )
答案 5 :(得分:2)
Lua具有单线和实验的交互模式。它通常编译为其VM的字节码以供执行。 LuaJIT是Lua VM的独立实现,也可以及时编译为32位x86。目前正在支持64位,并经常要求支持ARM。
编译为字节码通常是纯解释器和纯编译器之间的合理折衷。 VM可以根据语言的需要进行调整,JIT技术可以在执行时分析VM代码,并专注于频繁执行的代码路径和内部循环。
答案 6 :(得分:2)
正如其他人所提到的,OCaml。
如果托管代码(.NET CLI)足够接近机器代码,F#也将成为候选代码。可能还有其他.NET / Mono语言也符合要求。
答案 7 :(得分:2)
答案 8 :(得分:2)
许多语言提供了一种实现,它既可以与机器代码进行交互,也可以编译,但是很少能同时执行这两种语言。 Standard ML of New Jersey是一个具有交互循环但没有字节码的东西:它只是编译到内存中的机器代码然后分支到它。
答案 9 :(得分:1)
不完全是机器代码,但Java可以编译并通过BeanShell使用。
答案 10 :(得分:1)
我使用Ruby和解释器,似乎有一个编译器here。
答案 11 :(得分:1)
用于拥有编译器的图标,但它不属于维护范围。它可能仍然有用。
答案 12 :(得分:1)
Python可以编译为windows可执行文件。
答案 13 :(得分:1)
可以使用SnippetCompiler编译C#,也许这可以作为您的交互式解释器?
答案 14 :(得分:1)
你的问题有点模糊。即便是Java也适合它:
我的意思是交互式口译员 贝壳般的环境,你可以在哪里 以交互方式在运行时中工作。
Java有这个,例如在Eclipse“剪贴簿页面”中,您可以在其中输入Java表达式并立即对其进行评估。 Java当然也是一种编译语言(虽然它通常编译为字节码,但有各种编译器输出机器代码)。
那你在找什么?也许你可以解释一下你的问题或兴趣。
答案 15 :(得分:1)
我尝试使用mono / .net一点,发现随机的GC暂停令人不愉快(至少在我硬的旧笔记本电脑上)。我看着使用gambit-c一个可以编译为C的方案的实现,但它似乎很难处理,因为文档有些限制,并且包不容易安装和使用。
我通常只是坚持使用像C / C ++这样的python这样的解释性语言,这更痛苦,但至少我知道我在做什么。