【问题标题】:Languages that interpret down to Javascript?解释为 Javascript 的语言?
【发布时间】:2010-12-11 00:54:47
【问题描述】:

Another post 质疑将语言编译成 Javascript 的实用性。抛开实用性不谈,哪些解释器从某种语言 X 翻译成 Javascript 并用 Javascript 实现?我对 X 的设计目的不是针对 Javascript 的情况特别感兴趣。即使口译员还没有完全完成,我也想听听。

您可能对这个问题的动机感到好奇。 Javascript 肯定不能像汇编程序那样利用强大的功能,但代码分发和执行的灵活性有时可能超过这一成本。

这些解释器的一个用例是用于教授和学习编程语言的模型。考虑一下在交互式书籍Eloquent Javascript 中拥有一个 Javascript 解释器是多么有用。当然,在本地编译它可能会影响性能,但在某些情况下,成本肯定是值得的。是的,我意识到依赖服务器编译或解释代码始终是一种选择,但我对客户端方法特别感兴趣。


更新:许多响应包括对未在 Javascript 中实现的编译器的引用。我只想强调解释器本身应该用 Javascript 实现,这样它和源语言代码都可以在你祖父母计算机上的浏览器上运行。

【问题讨论】:

  • +1 高阶语言 -> 高阶语言编译总是很有趣。
  • 回复:您的更新:编译器不必在 JavaScript 中实现,只需在可以在 JavaScript 中运行的语言中实现。例如,CoffeeScript 编译器是用 CoffeeScript 编写的。但是由于 CoffeeScript 编译器将 CoffeeScript 编译为 JavaScript,它可以将 自身 编译为 JavaScript,从而在浏览器中运行。这同样适用于任何用 C 编写的编译器(因为有一个编译器可以将 C 编译为 JavaScript)、Java、任何编译为 CIL 的 .NET 语言、任何编译为 JVML 的 JVM 语言、任何编译为 LLVM Bitcode 或 LLVM 的语言红外,...

标签: javascript programming-languages client interpreter


【解决方案1】:

CoffeeScript 是一种编译成 JavaScript 的编程语言。

【讨论】:

    【解决方案2】:
    • Objective-J 是一种基本上采用 Objective-C 的“目标”部分并将其粘合到 ECMAScript 的语言
    • Clamato 是一种受 Smalltalk 启发的客户端 Web 脚本语言

    另请参阅此问题:Are there other languages than Objective-J that get “compiled” to JavaScript in the browser?

    【讨论】:

      【解决方案3】:

      社区 Wiki,让我们把它混搭起来 :-)

      jsc - 从 CIL 重新编译(从 VB.NET、C# 等编译的 CIL)

      Script# - 从 C# 编译(源代码)。

      GWT: Google Web Toolkit - 从 Java 编译。

      Emscripten - 从 LLVM 编译。应该能够工作(语言 X)->LLVM->JavaScript,减去问题,其中语言 X 具有 LLVM 编译器。

      【讨论】:

      • @RA 添加了您的 Emscripten 链接,该链接是从 LLVM 编译的 :-) 随时添加更多信息。
      【解决方案4】:

      纯 javascript 中的一些或多或少的玩具解释器

      当然是强制性的

      【讨论】:

        【解决方案5】:

        j2js 将 Java 字节码编译为 Javascript(例如 Java、Scala 等)。

        【讨论】:

        【解决方案6】:
        【解决方案7】:

        Pyjamas 可以将 Python 编译为 JavaScript。那是服务器类型的翻译;睡衣还没有被用来编译自己,所以没有 JavaScript Python 解释器。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-06
          • 1970-01-01
          • 2011-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多