Transpiler

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 12 decembrie 2018; verificările necesită 6 modificări .

Transpiler  (transpiler, eng. transpiler ) - un program ( tip compilator ) care realizează transpilarea programului. [1] [2]

Transpilarea este o transformare a unui program care folosește codul sursă al unui program scris într-un limbaj de programare ca date sursă și produce un cod sursă echivalent într-un alt limbaj de programare.

Un transpiler traduce între limbaje de programare care operează aproximativ la același nivel de abstractizare , în timp ce un compilator tradițional traduce de la un nivel superior al unui limbaj de programare la un limbaj de nivel inferior . De exemplu, un transpiler poate traduce un program din Pascal în C. Un compilator bazat pe paralelizare automată ia adesea ca intrare un program de limbaj de nivel înalt, apoi își transformă codul și îl comentează folosind adnotări de cod paralel (de exemplu, modelul openmp ) sau constructe de limbaj (de exemplu, forall pentru Fortran ). [unu]

Un alt scop al unui transpiler este acela de a traduce codul vechi pentru a utiliza următoarea versiune a aceluiași limbaj de programare sau API, rupând astfel compatibilitatea inversă. Transpilerul în acest caz va efectua refactorizarea automată a codului , care este utilă atunci când programele care urmează să fie refactorizate sunt în afara controlului executorului original (de exemplu, conversia programelor din Python 2 în Python 3 sau convertirea programelor dintr-un API vechi într-un API nou) sau atunci când, din cauza dimensiunii programului, procesarea manuală a acestuia este inadecvată sau durează prea mult timp.

Transpilerii pot fie să păstreze codul tradus cât mai aproape de codul sursă pentru a face cât mai ușor posibil dezvoltarea și depanarea codului sursă, fie pot restructura codul astfel încât codul tradus să nu arate ca codul sursă. [2] Există, de asemenea, utilitare de depanare care vă permit să comparați codul sursă transcompilat cu codul sursă original; de exemplu, standardul SourceMap pentru JavaScript [3] are capacitatea de a mapa codul JavaScript care rulează într-un browser la o sursă într-o limbă transpilată în JavaScript. [patru]

Exemplele de limbaje transcompilate includ Closure Compiler, Coccinelle, coffeescript , Dart , Haxe , TypeScript [5] și Emscripten. [6]

Note

  1. Tipuri de compilatoare . compilers.net (1997–2005). Preluat: 28 octombrie 2010.
  2. Fowler, Martin Transparent Compilation (12 februarie 2013). Preluat: 13 februarie 2013.
  3. Lenz, Fitzgerald Source Map Revision 3 Proposal (11 februarie 2011).
  4. Seddon, Ryan Introducere în hărțile sursă JavaScript . html5rocks.com (21 martie 2012). Preluat: 21 ianuarie 2015.
  5. Henson, Valerie Patch-uri semantice cu Coccinelle . lwn.net (20 ianuarie 2009). Preluat: 28 octombrie 2010.
  6. Epic Games HTML5 Epic Citadel .