Przejdź do zawartości

Transpilator

Z Wikipedii, wolnej encyklopedii

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).

Rodzaje transpilacji

[edytuj | 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 | 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ć kod JavaScript tak, żeby narzędzia w przeglądarce internetowej mogły pokazać oryginalny kod przy debugowaniu[7].

Lista transpilatorów

[edytuj | 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ą 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.

Lista transpilatorów języków[4][8]
Nazwa Język źródłowy Język docelowy Komentarz
Cfront C++ C
HipHop dla PHP (HPHPc) PHP C++
CoffeeScript CoffeeScript JavaScript Jeden z pierwszych sztucznych języków, które zawsze są przetwarzane. Udostępniał on bardziej typowy system klas niż ówczesny JS, ale także kompletnie nowe konstrukcje. Wszystko z założenia miało być przetwarzane na JS i uruchamiane jako JS.
TypeScript TypeScript JavaScript TS również w pełni kompiluje się do JS. Cechą charakterystyczną jest to, że TS jest nadzbiorem JS i wygląda podobnie do składni JS z wersji ES6.
ClojureScript Clojure JavaScript
JSweet Java TypeScript
Swiftify Objective-C Swift Swiftify to internetowe narzędzie do konwersji z Objective-C na Swift. Pomaga programistom, którzy migrują całość lub część swojej bazy kodów iOS do Swift. Konwersja ma na celu przede wszystkim konwersję składni między Objective-C i Swift.
J2ObjC Java Objective-C
Emscripten C/C++ JavaScript (Wasm) Ma umożliwiać uruchamianie kodu pisanego w C / C ++ w przeglądarce. Twórcy twierdzą, że dowolny przenośny kod może zostać skompilowany do JS[9].
c2go[10] C Go Przed wydaniem 1.5 kompilator Go został napisany w C. Opracowano automatyczny translator do automatycznej konwersji bazy kodu kompilatora z C na Go[11][12]. Od Go 1.5 „kompilator i środowisko wykonawcze są teraz zaimplementowane w wersji Go i asemblerze, bez C”.
Google Web Toolkit Java JavaScript GWT ma tworzyć kod, który można uruchomić w przeglądarce, ale możliwe do użycia konstrukcje z Javy są tutaj ograniczone w porównaniu do normalnego kodu Java.
Js_of_ocaml[13] OCaml JavaScript
Lista transpilatorów wersji
Narzędzie Język źródłowy Język docelowy Komentarze
Babel ES6+ (JS) ES5 Babel ma na celu zmianę kodu z nowszej wersji na starszą do uruchomienia w starszych przeglądarkach. Zmienia głównie składnię, ale również dodaje implementacje nowych funkcji (tzw. polyfill).
Skrypt 2to3 Python 2 Python 3 2to3 robi wszystko, co w jego mocy w zakresie automatyzacji procesu tłumaczenia, często konieczne są dalsze ręczne korekty.

Zobacz też

[edytuj | edytuj kod]

Przypisy

[edytuj | edytuj kod]
  1. Gastón Silva, ES6 bez tajemnic. Korzystanie z ES6 z pomocą narzędzi Babel i Broccoli, Joanna Liana, Shebang.pl, 15 grudnia 2015 [dostęp 2020-01-01] (pol.).
  2. Transpilacja kodu ECMAScript 6 za pomocą Babel JS i Browserify [online], ProPHP, 15 listopada 2015 [dostęp 2020-01-01].
  3. Yakov Fain, Anton Moiseev, Angular 2. Programowanie z użyciem języka TypeScript, Lech Lachowski, Helion.
  4. a b Transpiler [online], Devopedia, 17 marca 2017 [dostęp 2020-01-01] (ang.).
  5. Martin Fowler, TransparentCompilation [online], 12 lutego 2013 [dostęp 2020-01-01].
  6. Source Map Revision 3 Proposal [online], Google Docs [dostęp 2020-01-01] (pol.).
  7. Ryan Seddon, Introduction to JavaScript Source Maps [online], HTML5 Rocks, 21 marca 2012 [dostęp 2020-01-01] (ang.).
  8. Jeremy Ashkenas, List of languages that compile to JS [online], CoffeeScript Wiki - Github [dostęp 2020-01-01].
  9. About Emscripten [online], emscripten.org [dostęp 2020-01-01].
  10. Russ Cox, C to Go translation tool supporting Go toolchain migration: rsc/c2go [online] [dostęp 2020-01-01].
  11. Go 1.5 Release Notes - The Go Programming Language [online], golang.org [dostęp 2020-01-01].
  12. Go 1.3+ Compiler Overhaul [online], Google Docs [dostęp 2020-01-01] (pol.).
  13. Js_of_ocaml [online], ocsigen.org [dostęp 2020-01-01].
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy