2010-12-11 13 views
10

Another post Frage, wie praktisch es ist, Sprachen in Javascript zu kompilieren. Praktisch beiseite, was Dolmetscher übersetzen aus einer Sprache X zu Javascript und wurden in Javascript implementiert? Ich interessiere mich besonders für die Fälle, in denen X nicht mit der Absicht entworfen wurde, Javascript zu zielen. Auch wenn der Dolmetscher nicht ganz fertig ist, würde ich gerne davon erfahren.Sprachen, die sich auf Javascript beziehen?

Sie können neugierig auf die Motivation für diese Frage sein. Javascript kann sicherlich nicht so viel Energie wie Assembler nutzen, aber die Flexibilität für Codeverteilung und -ausführung kann manchmal diese Kosten überwiegen.

Ein Anwendungsfall für diese Interpreter ist ein Modell zum Lehren und Lernen von Programmiersprachen. Überlegen Sie, wie nützlich es ist, einen Javascript-Interpreter im interaktiven Buch Eloquent Javascript zu haben. Sicher, es kann einen Leistungseinbruch geben, wenn man es nativ kompiliert, aber in manchen Situationen sind die Kosten es wert. Und ja, ich weiß, dass es immer eine Option ist, sich auf den Server zu verlassen, um Code zu kompilieren oder zu interpretieren, aber ich bin speziell an clientseitigen Ansätzen interessiert.


UPDATE: Viele Antworten enthalten Verweise auf Compiler, die nicht in Javascript umgesetzt wurden. Ich möchte nur betonen, dass der Interpreter selbst in Javascript implementiert werden sollte, damit sowohl er als auch der Quellsprachcode im Browser auf dem Computer Ihres Großelternteils ausgeführt werden können.

+0

+1 höhere Ordnung Sprache -> höhere Ordnung lang Die Zusammenstellung ist immer interessant. – Orbling

+0

Re: Ihr Update: Der Compiler muss nicht in JavaScript implementiert werden, nur in einer Sprache, die in JavaScript * laufen * kann. Der CoffeeScript-Compiler zum Beispiel ist in CoffeeScript geschrieben. Aber da der CoffeeScript-Compiler CoffeScript in JavaScript kompiliert, kann er * sich selbst * zu JavaScript kompilieren und somit im Browser laufen. Das Gleiche gilt für jeden in C geschriebenen Compiler (da es einen Compiler gibt, der C nach JavaScript kompiliert), Java, jede .NET-Sprache, die nach CIL kompiliert, jede JVM-Sprache, die nach JVML kompiliert, jede Sprache, die LLVM-Bitcode oder LLVM kompiliert IR, ... –

Antwort

4

Community Wiki, lassen Sie uns diese Maische aus :-)

jsc - re-kompiliert von CIL (CIL zusammengestellt von VB.NET, C#, etc.)

Script# - erstellt von C# (Quellen- Code).

GWT: Google Web Toolkit - kompiliert von Java.

Emscripten - kompiliert von LLVM. Sollte in der Lage sein zu arbeiten (Sprache X) -> LLVM-> JavaScript, minus Probleme, wo Sprache X einen LLVM-Compiler hat.

+0

Keine C/C++ Alternativen? – ROAR

+0

@RA Emscripten Link von Ihnen hinzugefügt, der aus LLVM kompiliert :-) Fühlen Sie sich frei, weitere Informationen hinzuzufügen. –

0

Pyjamas kann Python zu JavaScript kompilieren. Das ist eine serverartige Übersetzung; Pyjamas wurden noch nicht zum Kompilieren verwendet, daher gibt es keinen JavaScript-Python-Interpreter.

1

j2js kompiliert Java-Bytecode auf Javascript (zum Beispiel Java, Scala, etc.).

+0

Leider nicht mehr. Siehe https://github.com/decatur/j2js-compiler/ für die Gründe warum. –