Transpiler (transpiler, eng. transpiler ) - olyan program ( fordítótípus ), amely a program transzpilációját végzi. [1] [2]
A transzpiláció egy olyan program átalakítása, amely az egyik programozási nyelven írt program forráskódját használja forrásadatként , és egy másik programozási nyelven egyenértékű forráskódot állít elő.
A transzpiler olyan programozási nyelvek között fordít, amelyek nagyjából azonos absztrakciós szinten működnek , míg a hagyományos fordító egy magasabb szintű programozási nyelvről egy alacsonyabb szintű nyelvre fordít . Például egy transzpiler le tud fordítani egy programot Pascalról C -re . Az automatikus párhuzamosításon alapuló fordító gyakran egy magas szintű nyelvi programot vesz be bemenetként, majd annak kódját átalakítja, és párhuzamos kódjegyzetekkel (például openmp modell ) vagy nyelvi konstrukciókkal (például forall for Fortran ) kommentálja. [egy]
A transzpiler másik célja, hogy lefordítsa a régi kódot, hogy ugyanazon programozási nyelv vagy API következő verzióját használja, megtörve ezzel a visszafelé kompatibilitást. A transzpiler ebben az esetben automatikus kódrefaktorálást hajt végre , ami akkor hasznos, ha a visszafordítandó programok az eredeti végrehajtó irányításán kívül esnek (például programokat konvertál Python 2-ről Python 3-ra, vagy programokat konvertál egy régi API-ról egy új API), vagy amikor a program mérete miatt annak kézi feldolgozása nem célszerű vagy túl sok időt vesz igénybe.
A transzpilátorok vagy a lefordított kódot a lehető legközelebb tarthatják a forráskódhoz, hogy a lehető legegyszerűbb legyen a forráskód fejlesztése és hibakeresése , vagy átstrukturálhatják a kódot úgy, hogy a lefordított kód ne hasonlítson a forráskódra. [2] Vannak olyan hibakereső segédprogramok is, amelyek lehetővé teszik az átfordított forráskód és az eredeti forráskód összehasonlítását; például a JavaScript SourceMap szabványa [3] képes a böngészőben futó JavaScript-kódot leképezni egy JavaScript-be átírt nyelvű forrásra. [négy]
Az átfordított nyelvek példái közé tartozik a Closure Compiler, Coccinelle, coffeescript , Dart , Haxe , TypeScript [5] és az Emscripten. [6]