Транспайлер

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

Транспайлер (транспилер, англ. 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.