En recherchant la différence, je suis tombé sur ces définitions:
La compilation est le terme général pour prendre du code source écrit dans un langage et le transformer dans un autre.
Transpiling est un terme spécifique pour prendre du code source écrit dans un langage et le transformer en un autre langage qui a un niveau d'abstraction similaire.
Je comprends ce qu'est l'abstraction.
Mais que signifie «niveau d'abstraction similaire» dans la définition ci-dessus? Et comment trouver le niveau d'abstraction dans une langue?
compiler-construction
abstraction
transpiler
Nishi Mahto
la source
la source
Réponses:
La définition que vous avez citée ci-dessus est trop générale pour qu'un débutant la comprenne complètement et permettez-moi donc de la simplifier à quelque chose que nous voyons pratiquement.
Compilateur: est un terme générique pour décrire un programme qui prend du code source écrit dans une langue et produit un (ou plusieurs) fichier de sortie dans une autre langue. En pratique, nous utilisons principalement ce terme pour décrire un compilateur tel que gcc qui prend du code C en entrée et produit un exécutable binaire (code machine) en sortie.
Les transpilers sont également connus sous le nom de compilateurs source-à-source. Donc, essentiellement, ils sont un sous-ensemble de compilateurs qui prennent un fichier de code source et le convertissent en un autre fichier de code source dans une autre langue ou une version différente de la même langue. La sortie est généralement compréhensible par un humain. Cette sortie doit encore passer par un compilateur ou un interpréteur pour pouvoir s'exécuter sur la machine.
Quelques exemples de transpileurs:
Maintenant, que veulent-ils dire par «niveau d'abstraction similaire»: comme je l'ai dit, il compile / transpile vers un fichier source, on peut affirmer que le langage d'assemblage est aussi un fichier source et donc gcc est également un transpilateur. Donc, cet argument est ce que ce niveau similaire d'abstraction vide.
La notion de catégorisation des langages en niveaux inférieur, moyen et supérieur est basée sur le niveau d'abstraction qu'ils fournissent à partir du fonctionnement réel de la machine / architecture.
Les langages de niveau inférieur comme l'assemblage sont très proches de l'architecture du processeur, c'est-à-dire qu'ils ont des instructions différentes pour différents processeurs. Alors que C / C ++ / Java / JavaScript, abstrait tout cela pour fournir plus d'abstraction.
Ainsi, un transpilateur compile dans une langue qui est plus proche de la langue avec laquelle vous avez commencé dans les termes de cette abstraction (ou est plus proche du niveau de cette langue dans l'échelle de langue de niveau inférieur-moyen-supérieur).
J'espère que cela t'aides!
la source
Voici une sorte de manière descriptive de répondre
Si vous pensez aux couches d'abstraction comme cet exemple:
Un compilateur passe à un niveau inférieur (nombre inférieur). Un transpilateur passe d'une langue (ou version d'une langue) à une autre au même numéro.
la source
javac
un compilateur ou non.Je suis généralement d'accord avec la réponse tapananand, mais ...
définition
Les mots sont «faits», ils servent donc un but. Et cela change également avec le temps.
Nous avons maintenant tendance à utiliser transpiler pour spécifier un compilateur qui traduit le code en un autre code "plus similaire" au code source, ce que pourrait faire un compilateur. Et est utilisé pour différencier les deux principalement lorsque les deux sont mentionnés dans le même contexte (encore une fois, ce qui implique principalement qu'un langage transpile devra être compilé au moins une fois de plus)
exemples
Donc tout est très subjectif. Au moment d'écrire ces lignes:
fazit
Donc transpile est à ce moment très rarement utilisé, et seulement pour distinguer deux compilateurs.
Il disparaîtra probablement en tant que concept, car la compilation est beaucoup plus compliquée que cela (même / langue supérieure / inférieure, version, etc.), et le mot ne semble plus être utile (les «transpileurs» sont désormais omniprésents)
la source
Ex: TypeScript (un sur-ensemble Microsoft de JavaScript avec vérification de type sécurisé) transpile en code JavaScript qui peut s'exécuter sur différents types de navigateurs.
https://en.wikipedia.org/wiki/Microsoft_TypeScript "Microsoft TypeScript est un langage de programmation open-source développé et maintenu par Microsoft. Il s'agit d'un sur-ensemble syntaxique strict de JavaScript et ajoute un typage statique facultatif au langage.
TypeScript est conçu pour le développement de grandes applications et transcompiles vers JavaScript. [5] Comme TypeScript est un sur-ensemble de JavaScript, les programmes JavaScript existants sont également des programmes TypeScript valides. TypeScript peut être utilisé pour développer des applications JavaScript pour une exécution côté client et côté serveur (Node.js). "
la source