Transpilator


Transpilator w encyklopedii

Z Wikipedii, wolnej encyklopedii Przejdź do nawigacji Przejdź do wyszukiwania

Transpilator (także transkompilator)[1][2][3] – rodzaj kompilatora, który przetwarza kod źródłowy programu napisanego w języku programowania na równoważny kod w innym języku programowania (lub w tym samym języku, ale w innym wariancie). Transpilator różni się tym od typowego kompilatora, że zarówno wejściowy jak i wynikowy kod operuje w przybliżeniu na tym samym poziomie abstrakcji, podczas gdy tradycyjny kompilator tłumaczy z języka programowania wyższego poziomu na język programowania niższego poziomu. Inaczej niż w typowych kompilatorach, po transpilacji wynikowy kod może być nadal czytelny dla człowieka (o ile nie został dodatkowo poddany minifikacji).

Spis treści

Rodzaje transpilacji | edytuj kod

Przykładem transpilacji może być przetworzenie programu napisanego w Pythonie na JavaScript, podczas gdy tradycyjny kompilator tłumaczy z języka takiego jak C na asembler lub Java na bytecode[4]. Przetwarzanie z jednego języka na drugi może być używane np. w wypadku przenoszenia bibliotek na inny język lub tworzenia kodu w lepiej znanym środowisku. Istnieją również języki jak TypeScript, dla których transpilacja jest naturalnym procesem, ponieważ TS został zaprojektowany tak, żeby był przetwarzany i uruchamiany jako JavaScript.

Innym celem transpilacji jest tłumaczenie kodu napisanego dla starszej wersji języka na nowszy (na przykład tłumaczenie kodu pisanego w Python 2 na Python 3). Narzędzie przeprowadzi automatyczną refaktoryzację kodu, co ma ułatwić i przyśpieszyć proces przejścia na nową wersję. Wynikowy kod nie musi być jednak gotowy do bezpośredniego użycia (może wymagać ręcznych zmian).

Często spotykany jest również odwrotny proces – przetwarzanie kodu z nowszej wersji języka na język zgodny ze starszą wersją. Jest to szczególnie popularne w sytuacji gdy osoba tworząca kod nie ma wpływu na środowisko uruchomieniowe. Tak jest w przypadku tworzenia kodu dla przeglądarek internetowych, stąd popularność kompilatorów takich jak Babel przetwarzających ECMAScript 6 na wersję 5.

Mapowanie źródeł | edytuj kod

Transkompilatory mogą albo utrzymywać strukturę kodu przetłumaczonego jak najbliżej kodu źródłowego, aby ułatwić testowanie i debugowanie oryginalnego kodu źródłowego, lub mogą zmieniać strukturę oryginalnego kodu tak bardzo, że przetłumaczony kod nie wygląda jak kod źródłowy[5].

Istnieją jednak standardy i narzędzia, które mapują transpilowany kod źródłowy z powrotem na kod oryginalny. Przykładem może być standard JavaScript Source Map[6], który specyfikuje jak mapować kodu JavaScript tak, żeby narzędzia w przeglądarce internetowej mogły pokazać oryginalny kod przy debugowaniu[7].

Lista transpilatorów | edytuj kod

Poniżej znajduje się lista transpilatorów, które transformują jeden język w drugi. Część z nich stanowi jedynie asystę przy migracji (np. Swiftify). Inne stawiając sobie za cel przetworzenie każdego kodu na ekwiwalent w innym języku (np. CoffeeScript). W wypadku tych drugich kod można tworzyć w jednym języku i za każdym razem budować aplikację do uruchomienia w innym języku.

Zobacz też | edytuj kod

Przypisy | edytuj kod

  1. GastónG. Silva GastónG., ES6 bez tajemnic. Korzystanie z ES6 z pomocą narzędzi Babel i Broccoli, JoannaJ. Liana, Shebang.pl, 15 grudnia 2015 [dostęp 2020-01-01]  (pol.).
  2. Transpilacja kodu ECMAScript 6 za pomocą Babel JS i Browserify, ProPHP, 15 listopada 2015 [dostęp 2020-01-01] .
  3. YakovY. Fain YakovY., AntonA. Moiseev AntonA., Angular 2. Programowanie z użyciem języka TypeScript, LechL. Lachowski, Helion .
  4. a b Transpiler, Devopedia, 17 marca 2017 [dostęp 2020-01-01]  (ang.).
  5. MartinM. Fowler MartinM., TransparentCompilation, 12 lutego 2013 [dostęp 2020-01-01] .
  6. Source Map Revision 3 Proposal, Google Docs [dostęp 2020-01-01]  (pol.).
  7. RyanR. Seddon RyanR., Introduction to JavaScript Source Maps, HTML5 Rocks, 21 marca 2012 [dostęp 2020-01-01]  (ang.).
  8. JeremyJ. Ashkenas JeremyJ., List of languages that compile to JS, CoffeeScript Wiki - Github [dostęp 2020-01-01] .
  9. About Emscripten, emscripten.org [dostęp 2020-01-01] .
  10. RussR. Cox RussR., C to Go translation tool supporting Go toolchain migration: rsc/c2go [dostęp 2020-01-01] .
  11. Go 1.5 Release Notes - The Go Programming Language, golang.org [dostęp 2020-01-01] .
  12. Go 1.3+ Compiler Overhaul, Google Docs [dostęp 2020-01-01]  (pol.).
  13. Js_of_ocaml, ocsigen.org [dostęp 2020-01-01] .
Na podstawie artykułu: "Transpilator" pochodzącego z Wikipedii
OryginałEdytujHistoria i autorzy