CoffeeScript compile en JavaScript pour une raison très simple, JavaScript est le langage côté client de facto et il serait déraisonnable de s'attendre à ce que les fournisseurs de navigateurs prennent en charge nativement CoffeeScript, alors que tout ce qu'il offre est une syntaxe alternative.
De manière très similaire, le point principal des traducteurs de haut niveau en langage C est la portabilité immédiate, car il existe un compilateur C pour presque toutes les plates-formes et une abondance de bibliothèques C. Vala , par exemple, a été conçu pour :
- être un compilateur pour le GObject ,
- construire des exécutables natifs (via le compilateur C de la machine),
- automatiser le comptage des références, et
- être toujours accessible aux programmeurs GNOME C
GNOME est un projet traditionnellement orienté C et GObject est spécifiquement écrit en C, Vala ne trouverait probablement pas beaucoup d'amour parmi les développeurs GNOME s'il était compilé en code machine, quelle que soit sa nature (et sa syntaxe) plus conviviale. Tout le monde ne semblait pas aimer la syntaxe, au point qu'une autre langue, Genie , a été conçue pour l'améliorer.
Pour un exemple C ++, Facebook a développé HipHop , un traducteur PHP vers C ++. Ils essayaient de résoudre un problème très spécifique, l'utilisation du processeur, sans avoir à remplacer tout leur code PHP et à recycler leurs ingénieurs (ou pire, à les remplacer). Ceci est un exemple beaucoup plus spécifique, car les problèmes d'évolutivité de Facebook sont, bien, uniques, et encore une fois avoir accès au code C ++ intermédiaire peut être utile, car les extensions PHP sont écrites en C et C ++.
Un traducteur d'une langue de haut niveau vers une autre est donc une bonne idée, surtout lorsque vous avez besoin d'accéder au code intermédiaire. Pour CoffeeScript, le code JavaScript est nécessaire en raison de sa large adoption par le navigateur, et pour Vala, Genie et HipHop en raison de la base de code existante. De toute évidence, avoir accès au code intermédiaire signifie que vous pouvez l'optimiser davantage si nécessaire.
Mais d'une manière générale, ce ne serait pas une si bonne idée de construire un langage qui se traduit en C, ou tout autre langage, si vous n'aviez aucune utilisation du code résultant. Il y a tellement de langues là-bas, si vous ne pouvez pas gérer le C, choisissez-en simplement un autre. Par coïncidence, le premier compilateur C ++ écrit par Bjarne Stroustrup, CFront, était un traducteur C avec Classes en C, mais c'était principalement parce qu'en tant que nouveau langage, il était impossible d' amorcer C avec Classes.