Транспайлер

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Транспайлер (транспилер, англ. transpiler) — программа (тип компилятора), выполняющая транспиляцию программы.[1][2]

Транспиляция — преобразование программы, при котором используется исходный код программы, написанной на одном языке программирования в качестве исходных данных, и производится эквивалентный исходный код на другом языке программирования.

Транспайлер переводит между языками программирования, которые работают примерно на одном и том же уровне абстракции, в то время как традиционный компилятор переводит с более высокого уровня языка программирования на язык более низкого уровня. Например, транспайлер может выполнить перевод программы с Паскаля на Си. Компайлер, основанный на автоматическом распараллеливании, нередко принимает в качестве входных данных программу на языке высокого уровня, а затем преобразует её код и комментирует его при помощи параллельных кодовых аннотаций (например, модель openmp) или языковых конструкций (например, forall для Фортрана).[1]

Другая цель транспайлера — это перевод старого кода, чтобы использовать следующую версию того же языка программирования или API, нарушая тем самым обратную совместимость. Транспайлер в этом случае будет выполнять автоматический рефакторинг кода, что оказывается полезным, когда программы, подлежащие рефакторингу, находятся вне контроля исходного исполнителя (например, преобразование программ из Python 2 на Python 3 или преобразование программ из старого API в новый API) или когда из-за размера программы её ручная переработка нецелесообразна или отнимает слишком много времени.

Транспайлеры могут либо сохранить переведенный код как можно ближе к исходному коду, чтобы максимально упростить процесс разработки и отладки исходного кода, либо могут изменить структуру кода так, что переведенный код не будет похож на исходный.[2] Существуют также утилиты отладки, которые позволяют сопоставить транскомпилированный исходный код с оригинальным исходным кодом; например, стандарт SourceMap для JavaScript[3] имеет возможность сопоставления кода JavaScript, выполняемого в браузере, с первоисточником на языке, транскомпилированном в JavaScript.[4]

Примеры транскомпилированных языков включают Closure Compiler, Coccinelle, coffeescript, Dart, Haxe, TypeScript[5] и Emscripten.[6]

Примечания[править | править код]

  1. Types of compilers. compilers.net (1997–2005). Дата обращения 28 октября 2010.
  2. Fowler, Martin Transparent Compilation (February 12, 2013). Дата обращения 13 февраля 2013.
  3. Lenz, Fitzgerald Source Map Revision 3 Proposal (11 February 2011).
  4. Seddon, Ryan Introduction to JavaScript Source Maps. html5rocks.com (21 March 2012). Дата обращения 21 января 2015.
  5. Henson, Valerie Semantic patching with Coccinelle. lwn.net (January 20, 2009). Дата обращения 28 октября 2010.
  6. Epic Games HTML5 Epic Citadel.