2010-12-11 9 views
10

Another post zakwestionował, jak praktyczne jest kompilowanie języków do Javascript. Poza tym, co tłumacze tłumaczą z języka X na JavaScript i zostały zaimplementowane w JavaScript? Szczególnie interesują mnie przypadki, w których X nie został zaprojektowany z myślą o kierowaniu na Javascript. Nawet jeśli tłumacz nie jest całkowicie skończony, chciałbym o tym usłyszeć.Języki, które interpretują do JavaScript?

Możesz być ciekawy motywacji do tego pytania. JavaScript z pewnością nie może wykorzystać tak dużej mocy jak asembler, ale elastyczność dystrybucji i wykonywania kodu może czasami przewyższać ten koszt.

Jednym z przykładów użycia tych tłumaczy jest model do nauczania i uczenia się języków programowania. Zastanów się, jak przydatne jest posiadanie interpretera Javascript w interaktywnej książce Eloquent Javascript. Pewnie, może się zdarzyć, że wydajność zostanie skompilowana natywnie, ale w niektórych sytuacjach koszt jest na pewno tego wart. Tak, zdaję sobie sprawę, że zawsze można polegać na serwerze, aby skompilować lub zinterpretować kod, ale jestem szczególnie zainteresowany podejściem po stronie klienta.


UPDATE: Wiele odpowiedzi zawierać odniesienia do kompilatorów, które nie zostały wdrożone w JavaScript. Chcę tylko podkreślić, że sam interpreter powinien zostać zaimplementowany w Javascript, aby zarówno on, jak i kod języka źródłowego mógł działać w przeglądarce na komputerze dziadka.

+0

+1 wyższa język zamówienie -> wyższy porządek lang kompilacja programu jest zawsze interesująca. – Orbling

+0

Odp: twoja aktualizacja: kompilator nie musi być zaimplementowany w JavaScript, tylko w języku, który potrafi * uruchomić * w JavaScript. Na przykład kompilator CoffeeScript został napisany w języku CoffeeScript. Ale ponieważ kompilator CoffeeScript kompiluje skrypt CoffeeScript do JavaScript, może skompilować * sam * do JavaScript i uruchomić go w przeglądarce. To samo dotyczy każdego kompilatora napisanego w języku C (ponieważ istnieje kompilator, który kompiluje C do JavaScript), Java, dowolnego języka .NET, który kompiluje się do CIL, dowolnego języka JVM, który kompiluje do JVML, dowolnego języka, który kompiluje do LVVM Bitcode lub LLVM IR, ... –

Odpowiedz

4

Wiki, niech to mash out :-)

jsc - re-kompiluje z CIL (CIL skompilowany z VB.NET, C# itp)

Script# - kompiluje z C# (source- kod).

GWT: Google Web Toolkit - kompiluje z Java.

Emscripten - kompiluje z LLVM. Powinien móc pracować (język X) -> LLVM-> JavaScript, minus problemy, gdzie język X ma kompilator LLVM.

+0

Nie ma opcji C/C++? – ROAR

+0

@RA Dodano link Emscripten, który kompiluje z LLVM :-) Zapraszam do dodania więcej informacji. –

0

Pyjamas potrafi skompilować Python do JavaScript. To tłumaczenie typu serwerowego; Piżama nie została jeszcze użyta do kompilacji, więc nie ma interpretera JavaScript Python.

1

j2js zestawia Java bajtowego do JavaScript (np Java Scala, itd.).

+0

Niestety, już nie. Zobacz https://github.com/decatur/j2js-compiler/ z powodów, dla których. –