CoffeeScript kompiluje się w JavaScript z bardzo prostego powodu, JavaScript jest de facto językiem po stronie klienta i nie byłoby uzasadnione oczekiwać, że dostawcy przeglądarki natywnie obsługują CoffeeScript, gdy wszystko, co oferuje, jest alternatywną składnią.
W bardzo podobny sposób, głównym punktem języka wysokiego poziomu dla tłumaczy C jest natychmiastowa przenośność, ponieważ istnieje kompilator C dla prawie każdej platformy i mnóstwo bibliotek C. Na przykład Vala została zaprojektowana w celu :
- być kompilatorem GObject ,
- budować natywne pliki wykonywalne (za pomocą kompilatora C maszyny),
- zautomatyzować liczenie referencji, oraz
- wciąż będą dostępne dla programistów GNOME C.
GNOME jest tradycyjnie zorientowanym na C projektem, a GObject jest napisany w języku C, Vala prawdopodobnie nie znalazłaby wiele miłości wśród programistów GNOME, gdyby skompilowała się do kodu maszynowego, bez względu na jego przyjazną naturę (i składnię). Nie wszystkim wydawało się, że ta składnia się podoba, do tego stopnia, że inny język, Genie , został zbudowany, aby go poprawić.
Na przykład w C ++ Facebook opracował HipHop , tłumacz z PHP na C ++. Próbowali rozwiązać bardzo konkretny problem, użycie procesora, bez konieczności wymiany całego kodu PHP i ponownego szkolenia inżynierów (lub, co najgorsze, zastąpienia ich). Jest to o wiele bardziej konkretny przykład, ponieważ problemy ze skalowalnością Facebooka są, cóż, unikalne, i znowu dostęp do pośredniego kodu C ++ może być przydatny, ponieważ rozszerzenia PHP są napisane w C i C ++.
Tłumacz z języka wysokiego poziomu na inny jest dobrym pomysłem, głównie gdy wymagany jest dostęp do kodu pośredniego. W przypadku CoffeeScript kod JavaScript jest konieczny ze względu na szerokie zastosowanie przeglądarki, a w przypadku Vala, Genie i HipHop ze względu na istniejącą bazę kodów. Oczywiście dostęp do kodu pośredniego oznacza, że możesz go dalej optymalizować, jeśli zajdzie taka potrzeba.
Ale ogólnie rzecz biorąc, nie byłoby dobrym pomysłem zbudowanie języka, który tłumaczy się na C lub inny język, jeśli nie używałbyś wynikowego kodu. Jest tak wiele języków, jeśli nie możesz poradzić sobie z C, wybierz inny. Przypadkowo pierwszy kompilator C ++ napisany przez Bjarne Stroustrup, CFront, był C z tłumaczem klas na C, ale było tak głównie dlatego, że jako nowy język nie można było uruchomić C z klasami.