了解 Wren 的独特之处
Wren 是一门小巧、快速、基于类的并发脚本语言。想象一下:把 Smalltalk 装进 Lua 大小的体量里,再加一点 Erlang 的味道,外面裹上一层熟悉而现代的语法。
小巧。 虚拟机不到 4,000 个分号,全是可读、注释用心的 C 代码。
快速。 智能的单遍编译器生成紧凑、高效的字节码。
基于类。 类和对象是核心。
并发。 语言内置了轻量的纤程。
脚本化。 可嵌入、无依赖、标准库精简,还有易用的 C API。
Wren 的核心是虚拟机。Wren 虚拟机是这门语言的心脏,负责执行所有 Wren 源代码。它只是一个库,而不是一个独立应用,设计上就是要嵌入到更大的宿主程序中。
你可以在这些项目里找到嵌入的 Wren:
你甚至可以把 Wren 嵌入到自己的项目里。在 Exercism 上,我们将使用的宿主程序是 Wren Console,这样就能在终端里运行和测试我们的 Wren 脚本。
Wren 最初由 Bob Nystrom 创造,他因 Crafting Interpreters 这本书而闻名。他做过的语言远远不止几个,但他特别解释了是什么促成了 Wren 的诞生:
用于嵌入应用的脚本语言有好几种,Lua 是其中的主流。TCL 曾经也是。还有 Guile,以及越来越多被采用的 JavaScript,有些应用还会嵌入 Python。我以前是游戏开发者,所以一提到“脚本”,我脑子里想的往往是“游戏脚本”。
Lua 很好:小巧、简单、快速。但如果你习惯了 C++ 和 Java 这类语言,它也会显得有点怪,我这么说不是在批评它。语法不一样,语义、尤其是对象模型,也不太寻常。谁都能习惯从 1 开始的下标,但像元表这样的东西,恰恰说明对象是在 Lua 成型之后才硬加上去的。
我认为,一门像 Lua 那样简单、但对有面向对象背景的人来说又很自然的语言,是有存在空间的。Wren 就是我为这个目标做的尝试。
你可以在浏览器里快速试一试(什么都不用安装)。如果你想在精美的界面里把玩 Wren,可以看看 Wren Playground。