Transpiler
Transpiler (z ang. transpiler, transkompilator, kompilator „źródło do źródła”) to narzędzie, które tłumaczy kod źródłowy z jednego języka programowania na inny język o zbliżonym poziomie abstrakcji. W odróżnieniu od klasycznego kompilatora, który zamienia kod wysokiego poziomu na kod maszynowy lub bajtowy, transpiler przekłada tekst czytelny dla człowieka na inny tekst również czytelny dla człowieka — na przykład jedną wersję JavaScriptu na inną.
Na czym polega działanie transpilera?
Proces przebiega w kilku krokach, podobnie jak w zwykłym kompilatorze. Najpierw transpiler parsuje kod wejściowy, budując z niego drzewo składniowe (AST), które odwzorowuje strukturę programu. Następnie przekształca to drzewo, zastępując konstrukcje nieobsługiwane przez cel ich odpowiednikami, po czym generuje z niego kod wyjściowy w języku docelowym. Efektem nie jest program gotowy do uruchomienia przez procesor, lecz inny kod źródłowy, który wciąż trzeba wykonać w odpowiednim środowisku. Kluczowa różnica względem kompilatora sprowadza się właśnie do poziomu wyniku: kompilator schodzi „w dół” ku maszynie, a transpiler pozostaje na tym samym piętrze abstrakcji, jedynie zmieniając język lub jego dialekt.
Zastosowanie w praktyce
Transpilery są wszechobecne we współczesnym frontendzie. Najbardziej znany, Babel, tłumaczy najnowszą składnię JavaScriptu (ES2020+) na starszą wersję zrozumiałą dla przeglądarek, które nie nadążają za standardem — dzięki temu programista pisze nowoczesny kod, a użytkownicy starszych urządzeń wciąż mogą z niego korzystać. Kompilator TypeScript również działa jak transpiler: usuwa adnotacje typów i zamienia kod na czysty JavaScript. Do tej rodziny zaliczają się także preprocesory CSS, jak SCSS czy LESS, oraz języki kompilowane do JavaScriptu. W praktyce transpilacja to jeden z etapów budowania aplikacji, spinany przez narzędzia takie jak Webpack czy Vite w ramach automatycznego procesu przygotowania kodu do wdrożenia.
Powiązane pojęcia
Najczęstsze pytania
Czym różni się transpiler od kompilatora?
Klasyczny kompilator tłumaczy kod z języka wysokiego poziomu na niższy — na przykład na kod maszynowy lub bajtowy. Transpiler przekłada kod między językami o podobnym poziomie abstrakcji, na przykład z TypeScriptu na JavaScript. Formalnie transpiler jest szczególnym rodzajem kompilatora, zwanym też kompilatorem źródło-do-źródła.
