最近跟一个朋友聊起编程语言的一些特性,他有个言论让我略有所思:“不能REPL的都是渣”。当然这个观点有点偏激,但我们可以探究一下,我们常用的编程语言里面,哪些支持REPL,哪些不支持,还有REPL的一些概况。
在一般的脚本语言中,有REPL是常态, 因为REPL非常的方便。 编程术语 REPL (Read-Eval-Print Loop) 中文的话有翻译成“交互式解释器”或“交互式编程环境”的。 不过我觉得不用翻译,直接REPL就好了,这样的术语,翻译成中文后,读者更难理解。下面是对 REPL 的解释:
A Read-Eval-Print-Loop (REPL) is available both as a standalone program and easily includable in other programs. REPL provides a way to interactively run JavaScript and see the results. It can be used for debugging, testing, or just trying things out.
交互式解释器(REPL)既可以作为一个独立的程序运行,也可以很容易地包含在其他程序中作为整体程序的一部分使用。REPL为运行JavaScript脚本与查看运行结果提供了一种交互方式,通常REPL交互方式可以用于调试、测试以及试验某种想法。
下面列举一些常见编程语言对 REPL 的原生支持: 原生就有REPL的语言Common Lisp Ruby Python Lua
原生不带REPL的语言JavaScript PHP JAVA C# C++ Haxe
原生就有REPL的语言
实用的语言(Practical) Ruby (beta): A natural dynamic object-oriented language. Python: A dynamic language emphasizing readability. Lua: A lightweight multi-paradigm scripting language. Scheme: An elegant dynamic dialect of Lisp.
诡异的语言(Esoteric) Emoticon: Programming with an extra dose of smile. Brainfuck: A pure Turing machine controller. LOLCODE: The basic language of lolcats. Unlambda: Functional purity given form. Bloop: Nothing but bounded loops.
网页语言(Web) JavaScript: The de facto language of the Web. Javascript.next: The JavaScript of tomorrow. Move: The easy way to program the web. Kaffeine: Extended JavaScript for pros. CoffeeScript: Unfancy JavaScript. Roy: Small functional language that compiles to JavaScript.
codepad codepad这个算不上REPL,但是允许你不安装任何编译器就可以在网页上运行很多语言,所以有时候也算很方便。特别是你想简单的给出一些代码片段,让别人可以迅速的得出结果时。codepad会自动的生成一个地址,你直接分享这个地址即可,比如这个Python的片段. 任何人点击submit都能很快的看到结果. 这种分享代码片段的方式比snipplr和github gist这种单纯贴代码的方式要更为先进一些.支持的语言如下: C C++ D Haskell Lua OCaml PHP Perl Plain Text Python Ruby Scheme Tcl
WIKI的列表 WIKI的列表也挺详细的:http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop