Definicja, którą przytoczyłeś powyżej, jest zbyt ogólna, aby początkujący mógł ją całkowicie zrozumieć, więc pozwól mi tylko uprościć ją do czegoś, co widzimy praktycznie.
Kompilator: to ogólny termin opisujący program, który pobiera kod źródłowy napisany w jednym języku i tworzy (lub wiele) plik wyjściowy w innym języku. W praktyce używamy tego terminu głównie do opisania kompilatora, takiego jak gcc, który pobiera kod C jako dane wejściowe i generuje binarny plik wykonywalny (kod maszynowy) jako wyjście.
Transpilery są również znane jako kompilatory od źródła do źródła. W istocie są to podzbiór kompilatorów, które pobierają plik kodu źródłowego i konwertują go na inny plik kodu źródłowego w innym języku lub w innej wersji tego samego języka. Wynik jest ogólnie zrozumiały dla człowieka. To wyjście nadal musi przejść przez kompilator lub interpreter, aby można było uruchomić na komputerze.
Kilka przykładów transpilerów:
- Emscripten : Transpiles C / C ++ do JavaScript
- Babel : Transpiles ES6 + kod do ES5 (ES6 i ES5 to różne wersje lub generacje języka JavaScript)
A teraz, co mają na myśli przez „podobny poziom abstrakcji”: jak powiedziałem, że kompiluje / transpiluje do pliku źródłowego, można argumentować, że asembler jest również plikiem źródłowym, a zatem gcc jest również transpilerem. Tak więc ten argument jest tym, co ten podobny poziom abstrakcji powoduje.
Pojęcie kategoryzacji języków na niższy, średni i wyższy poziom opiera się na poziomie abstrakcji, jaki zapewniają one w stosunku do rzeczywistego działania maszyny / architektury.
Języki niższego poziomu, takie jak asembler, są bardzo zbliżone do architektury procesora, tj. Mają różne instrukcje dla różnych procesorów. Podczas gdy C / C ++ / Java / JavaScript, odejmij to wszystko, zapewniając więcej abstrakcji.
Tak więc transpiler kompiluje się do języka, który jest bliższy językowi, od którego zacząłeś w zakresie tej abstrakcji (lub jest bliżej poziomu tego języka w drabinie językowej niższy-średni-wyższy poziom).
Mam nadzieję że to pomoże!