【问题标题】:What scripting languages are similar to ECMA?哪些脚本语言类似于 ECMA?
【发布时间】:2010-10-27 09:32:46
【问题描述】:

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

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

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

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

我宁愿不做的事情

  • 凌乱的 ECMA prototype 对象

您了解哪些语言适合此个人资料?我很难找到一种为良好的面向对象设计而设计的优质脚本语言。

【问题讨论】:

    标签: javascript actionscript-3 dynamic-languages scripting-language ecma262


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        Python

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

        红宝石

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

        两者

        • 可以嵌入到另一个应用程序中
        • 私人会员

        【讨论】:

          【解决方案4】:

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

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

          更进一步,TCL(Tool Command Language)可以让你在 C/C++ 代码中嵌入解释器,还有很多可嵌入的 Lisp 和 Scheme 解释器等等。

          【讨论】:

          • Rhino 甚至不是现代 Java 的标准部分吗?我认为它从第 6 版开始就存在于 J2SE 中。
          • 那太酷了...我将 Rhino 嵌入到我用 Java 1.2 编写的 VoiceXML Web 浏览器中,但那是在 2000 年。Rhino 工作得像个冠军,现在浏览器超过一百万每天调用次数(使用更新的 Rhino 版本)。
          【解决方案5】:

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

          【讨论】:

          • 我以前使用过 Mozilla 的 SpiderMonkey(用于 Firefox)。它也在 JSDB (jsdb.org)
          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

            Lua - 大约 100KB 中您想要的一切以及更多内容

            参见this 页面,了解 Lua 和其他提及的语言之间的比较。

            【讨论】:

            • “类,包括公共/私人成员”在 Lua 中不存在,尽管您可以或多或少地破解它。
            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2010-09-07
                • 2011-02-21
                • 2010-11-15
                • 2010-10-12
                • 1970-01-01
                • 2022-11-14
                • 1970-01-01
                相关资源
                最近更新 更多