Comment puis-je dire que le langage de programmation se compile dans d'autres langages?

22

Comment puis-je dire en anglais, que le langage de programmation peut être compilé dans d'autres langages de programmation?

L'exemple peut être Haxe . Sur le site Web, la langue est décrite comme "Multiplateforme":

Multiplateforme: Haxe peut être compilé sur toutes les plateformes de programmation populaires avec son compilateur rapide - JavaScript, Flash, NekoVM, PHP, C ++, C # et Java (bientôt)

mais la multiplateforme peut être mal comprise comme plate-forme matérielle ou logicielle (win, mac, linux).

Alors, quel est le mot le plus approprié pour décrire cette capacité?

danilo2
la source
3
Je supprimerais "compiles" et dirais simplement que ce langage de programmation peut être transformé en un autre en utilisant un interpréteur.
Neil
6
Vous pouvez utiliser le même mot que vous le feriez pour les langues normales: traduire, traducteur. C'est clair, et j'ai entendu le mot utilisé dans ce sens.
superM
4
@teresko Comment ça? La seule façon dont je pourrais vous voir affirmer que vous utilisez une définition trop restrictive et inutile de la compilation (qui limite la sortie au code machine).
18
@Neil: transformer un programme écrit dans une langue dans une autre langue n'est pas une interprétation. En fait, c'est la définition de la compilation .
Jörg W Mittag
2
@Neil, la compilation, par définition, est une transformation d'une langue à l'autre. Et la "transformation" sonne tout aussi obscure et obscure que la "compilation", tant que votre lecteur n'est pas bien versé dans la réécriture des termes et autres. Je suggère donc d'utiliser le mot "ciblage", par exemple, "Haxe vise JavaScript, Flash, etc.".
SK-logic

Réponses:

41

Le terme habituel est "transcompilation" - pas un terme courant, mais techniquement correct. Ce n'est pas seulement pour les nouveaux langages de script à la mode (CoffeeScript -> JavaScript); les premiers compilateurs C ++ étaient en fait des transcompilateurs vers C.

Kilian Foth
la source
2
Aussi "transpile" comme dans "Le transpilateur transpile CoffeeScript en Javascript"
4
Je n'ai jamais entendu ce terme auparavant, étant sur le terrain depuis des décennies. Vous rappelez ses origines (un lien vers le premier article où il est apparu serait le meilleur)?
SK-logic
De Wikipedia : "Un compilateur source à source [aka." Transcompiler "," transpiler "] traduit entre les langages de programmation qui fonctionnent approximativement au même niveau d'abstraction, tandis qu'un compilateur traditionnel traduit d'un langage de programmation de niveau supérieur à un langage inférieur langage de programmation de niveau. "
l0b0
4
@ l0b0, wikipedia ne commente pas les origines du terme, et il n'est certainement jamais censé être une source originale .
SK-logic
3
... la recherche de "transcompilation" sur google ne donne aucun résultat connexe ...
Bakuriu
27

Désolé messieurs, mais le mot pour cela est juste "compilé" . Cela signifie transformer un type de code en un autre type de code. Cela ne fait aucune différence réelle si ce code est l'anglais, C ++, le code machine x86, le code machine ARM, Java, le bytecode ou le retour en anglais. Nous l'utilisons généralement pour signifier le passage du langage de programmation au code machine, mais c'est un aspect que le mot a gagné au fil du temps. Et bon, si suffisamment de gens commencent à utiliser un mot de manière incorrecte, il gagne en effet ce nouveau sens. Mais si vous voulez un mot pour transformer Haxe en C ++, le mot est "compile" .

Multiplateformes: Haxe peut être compilé dans tous les programmes populaires langues avec son compilateur rapide - JavaScript, Flash, NekoVM, PHP, C ++, C # et Java (bientôt)

(De plus, j'ignore Merriam-Webster, parce qu'ils sont stupides parce qu'ils ne sont pas d'accord avec moi ... hmmmm)

Philippe
la source
10

C'est peut-être une question pour https://english.stackexchange.com/ mais je dirais que le processus de compilation comprend la compilation dans un autre langage de haut niveau et n'est pas seulement limité aux compilateurs qui compilent vers le code machine natif.

Comme un mot "Compiler" n'est pas du tout spécifique aux compilateurs informatiques et est assez général. «Compiler un tableau» ou «compiler une liste de noms» me vient à l'esprit, il est donc suffisamment large pour de nombreux usages (les processeurs de texte comme Latex compilent également, etc.). Pour être plus précis sur la cible de la compilation, j'utiliserais to-source-compiler

Maintenant, pour l'exemple spécifique, je pense que la plate-forme est un mot approprié à utiliser. Étant donné que les langues humaines sont intrinsèquement ambigües, vous devez utiliser la redondance (exemples, paraphraser avec d'autres mots, expliquer) pour faire passer le message en cas de doute.

Je voudrais également lire la déclaration "Haxe" d'une manière qui inclut des bibliothèques standard et des choses similaires. C'est-à-dire que dans ce cas, la plate-forme serait un surensemble de "langage" et vous pourriez le séparer de cela en l'appelant "plate-forme de développement logiciel", etc.

wirrbel
la source
4
Je pense que vous voulez dire english.stackexchange.com?
Suman
3

Vous pouvez dire qu'un compilateur a les langues X, Y et Z comme cibles de traduction , ou concevoir une langue avec ces cibles à l'esprit.

tempête à venir
la source
2

Je dirais que le compilateur par définition se traduit par un langage de programmation différent (au moins c'est la définition que je connais - programme qui transforme un langage en un autre). Par exemple, la plupart des compilateurs C produisent un assemblage en sortie. Les compilateurs d'assemblage prennent cette sortie et la transforment en code binaire qui est aussi une langue (bien sûr - probablement personne n'y écrit écrit au cours des 40 dernières années ou plus mais techniquement c'est la langue) - qui peut être prise et recompilée pour dire micro- opérations par les processeurs (ou certaines opérations sont effectuées par l'éditeur de liens sur les fichiers objets). De même, lejavapcompile en bytecode. Habituellement, à la fin de cette chaîne, il y a un interprète qui exécute le code final (que ce soit CPU, GPU ou programme exécuté). Le code machine n'existe pas, car le x86 moderne recompile les programmes en opérations internes (micro-opérations) et je suis parfaitement capable de traiter le code machine ARM comme un langage interprété sur x86 ou l'inverse (dans certains cas, même recompiler d'une forme à une autre).

Haxe est un compilateur source-à-source car il ne transforme pas le langage de niveau supérieur en niveau inférieur comme les exemples précédents. Cela ne semble pas résoudre directement votre problème d'ambiguïté multiplateforme, mais malheureusement je ne pense pas qu'il existe un moyen pratique de différenciation entre ces deux choses - les API sont des sortes de langages qui peuvent être en général interprétés, recompilés, etc.

Maciej Piechotka
la source
1

Première chose d'abord: je ne sais pas s'il existe déjà un mot approprié pour cette fonctionnalité.

Mais peut-être que cela pourrait être appelé multilingue? Ou langageagnostique? Puisqu'il s'agit davantage du langage de programmation, la mention de «langage» dans le nom pourrait le rendre plus évident que multiplateforme.

Bien sûr, le langage est également ambigu, car on pourrait comprendre que le code source peut être écrit dans n'importe quel langage du monde réel (par exemple parce que les variables peuvent être écrites en unicode).

D'un autre côté, chaque programmeur chevronné reconnaîtra probablement une telle construction comme différente de la localisation ou de l'internationalisation, de sorte qu'ils pourraient «l'obtenir» plus facilement.

Juste mes 2 cents.

Enduriel
la source
je ne pense pas que ce soit exact; et si vous voyez le fait que le site n'aime que les réponses factuellement correctes. mais bienvenue dans la communauté et j'espère que vous répondrez un peu plus là où vous êtes sûr de la réponse :)
tgkprog