2010-12-11 63 views
10

Another post questionné comment il est pratique de compiler les langues en Javascript. Mis à part la pratique, quels interprètes traduisent à partir de certaines langues X en Javascript et ont été implémentés en Javascript? Je suis particulièrement intéressé par les cas où X n'a pas été conçu dans le but de cibler Javascript. Même si l'interprète n'est pas complètement terminé, j'aimerais en entendre parler.Des langues qui interprètent jusqu'à Javascript?

Vous pourriez être curieux de connaître la motivation de cette question. Javascript ne peut certainement pas utiliser autant de puissance que l'assembleur, mais la flexibilité pour la distribution et l'exécution du code peut parfois l'emporter sur ce coût.

Un cas d'utilisation pour ces interprètes est un modèle pour l'enseignement et l'apprentissage des langages de programmation. Considérez comment il est utile d'avoir un interpréteur Javascript dans le livre interactif Eloquent Javascript. Bien sûr, il y a peut-être un problème de performance à le compiler nativement, mais dans certaines situations, le coût en vaut certainement la peine. Et oui, je me rends compte que c'est toujours une option de s'appuyer sur le serveur pour compiler ou interpréter le code, mais je suis particulièrement intéressé par les approches côté client.


MISE À JOUR: Beaucoup de réponses à inclure des références compilateurs qui ne sont pas mises en œuvre en Javascript. Je tiens juste à souligner que l'interpréteur lui-même devrait être implémenté dans Javascript afin que le code source et le code source puissent fonctionner sur le navigateur de l'ordinateur de vos grands-parents.

+0

+1 supérieur langue de commande -> ordre supérieur lang La compilation est toujours intéressante. – Orbling

+0

Re: votre mise à jour: le compilateur ne doit pas être implémenté en JavaScript, seulement dans une langue qui peut * fonctionner * en JavaScript. Le compilateur CoffeeScript, par exemple, est écrit en CoffeeScript. Mais puisque le compilateur CoffeeScript compile CoffeeScript en JavaScript, il peut se compiler * lui-même * en JavaScript et ainsi fonctionner dans le navigateur. La même chose s'applique à tout compilateur écrit en C (puisqu'il y a un compilateur qui compile C en JavaScript), Java, n'importe quel langage .NET qui compile en CIL, tout langage JVM compilant en JVML, tout langage compilant en LLVM Bitcode ou LLVM IR, ... –

Répondre

4

Communauté Wiki, nous allons mash ceci :-)

jsc - re-CIL compile (CIL compilées à partir VB.NET, C#, etc.)

Script# - de C# compile (source- code).

GWT: Google Web Toolkit - compile à partir de Java.

Emscripten - compile à partir de LLVM. Devrait être capable de travailler (langue X) -> LLVM-> JavaScript, moins les problèmes, où la langue X a un compilateur LLVM.

+0

Aucune alternative C/C++? – ROAR

+0

@RA Ajout d'un lien Emscripten de votre part, compilable à partir de LLVM :-) N'hésitez pas à ajouter plus d'informations. –

0

Pyjamas peut compiler Python en JavaScript. C'est une traduction de type serveur; Les pyjamas n'ont pas encore été utilisés pour se compiler, donc il n'y a pas d'interpréteur Python JavaScript.

1

j2js compile bytecode Java à Javascript (par exemple, Java, Scala, etc.).

+0

Malheureusement, plus maintenant. Voir https://github.com/decatur/j2js-compiler/ pour les raisons pourquoi. –