1

我正在寻找一种 ECMAScript 替代方案来作为自定义应用程序逻辑的脚本语言。我喜欢 ECMA 的某些方面,尤其是新规范(如 AS3)的语法。

不幸的是,AS3 引擎不是开源的,无法集成到项目中。我想要一种专为面向对象使用而设计的脚本语言。

具体来说,是否有一种语言具有:

  • 静态类型变量(可选)
  • 类,包括公共/私人成员
  • 继承,包括接口
  • 套餐(可选)
  • 简洁的语法
  • 必须能够作为应用程序的内部脚本语言(如浏览器的 Javascript)进行接口,不能是外部系统调用。

我宁愿没有的事情

  • 凌乱的 ECMAprototype对象

您知道哪些语言适合此配置文件?我很难找到一种为良好的面向对象设计而设计的优质脚本语言。

4

9 回答 9

5

在 Java 中,最好的 ECMAScript (Javascript) 选项是嵌入Rhino。我不认为基于原型的继承是一个交易杀手,因为只要有一点纪律,你就可以让它表现得几乎像基于类的继承。

如果您想要与 Java 非常紧密地互操作的东西,请选择Groovy。如果您需要 JVM 兼容性,还可以查看Jython(JVM 上的 Python)、Jruby(JVM 上的 Ruby)和Scala(JVM 上的函数式语言)。如果您不关心 Java 和 JVM 兼容性,请查看RubyPythonErlangClojure是 JVM 上的 Lisp 方言。

更进一步,TCL(工具命令语言)允许您在 C/C++ 代码中嵌入解释器,有许多可嵌入的 Lisp 和 Scheme 解释器等。

于 2009-05-19T17:16:23.687 回答
3

如果您想要一种像 ECMAScript 一样工作的脚本语言,为什么不使用 ECMAScript?有很多开源实现,只要看看Wikipedia上的列表。

于 2009-05-19T17:17:17.213 回答
2

我会推荐 Python 或 Ruby。两者都不像 ECMA,但我是在 JavaScript 之后学习它们的,而且它们很快就学会了。此外,它们是更强大的语言,使其成为在应用程序中使用 JavaScript 引擎(Rhino for Java)的更好选择。

Python

  • 强制使用干净的语法(几乎像 English while is not False:
  • 多重继承(无接口)
  • 可以使用 C/C++ 扩展解释器(如果需要,可能用于您的适配器)

红宝石

  • 语法应该接近英语(unless条件,until循环)
  • 一切都是对象
  • 仅支持单继承,但使用 Mixins 添加功能

两个都

  • 课程
  • 可以嵌入到另一个应用程序中
  • 私人会员
  • 套餐
于 2009-05-19T17:08:26.100 回答
2

Lua - 你想要的一切以及更多在 ~100KB 中

有关Lua 和其他提到的语言之间的比较,请参阅此页面。

于 2009-05-19T17:27:27.277 回答
2

Haxe on Neko 看起来正是您想要的。我不知道 nekovm 的可嵌入性如何,但它是开源的,所以你可以摆弄它。http://haxe.org

于 2009-05-19T20:20:21.357 回答
1

Ruby解释器也可以嵌入到 C 程序中,并且可能被某些人认为比 Python 更面向对象。

于 2009-05-19T16:58:58.827 回答
1

我们使用 ECMAscript 作为我工作的软件产品的扩展语言,它运行良好。作为一种标准(和流行)语言,很高兴能够将我们的用户指向该语言的大量现成文档。我们构建了自己的 ECMAscript 编译器,它可以为我们运行的平台转换成字节码,但如果我重来一遍,我会认真考虑嵌入 Google 的 V8 ECMAscript 引擎(事实上,我什至会考虑构建我们的整个应用程序)。

于 2009-05-19T17:39:47.793 回答
0

我会选择一些相当主流的东西来简化事情。阅读您的要求后,我推荐Python。它实际上并没有 Java/C# 方式的接口,但它也不需要它们。除此之外,它应该很合适。

于 2009-05-19T16:43:48.067 回答
0

QtScript是 ECMAScript。你没有提到你的应用程序的主要部分是用什么编写的,但我想它不是 Qt,或者你已经知道 QtScript。

于 2009-05-19T17:20:38.847 回答