Transpilator vs kompilator vs interpreter

0

Witam,

Mam wrażenie, że w wielu artykułach sformułowania "transpilacja/interpretacja/kompilacja", "transpilator/interpreter/kompilator" są używanie wymiennie i w sumie ciężko połapać się co jest czym. Z tego całego nazewniczego chaosu wywnioskowałem, że:

Transpilator jest to narzędzie które transpiluje("przepisuje") kod na kod o podobnym poziome abstrakcji - czyli np narzędzie Babel jest takim transpilatorem

Kompilator jest to narzędzie które kompiluje("przepisuje") kod zrozumiały dla programisty do kodu który jest zrozumiały dla maszyny oraz wykonuje ten kod

No i jest jeszcze interpreter - program przypominający swoim działaniem kompilator(też przepisuje kod zrozumiały dla programisty na kod zrozumiały dla maszyny i go wykonuje) z tym że kod wykonywany jest na bieżąco - linia po linii(nie ma tak jak w przypadku kompilatora sprawdzenia np funkcji, zmiennych czy nie występuje tam żaden błąd) i ponad to nie otrzymujemy żadnego wynikowego pliku

Powyższe definicje są okey? Czy pomieszałem gdzieś jakieś fakty?

I na koniec pytanie do webdeveloperów używających np SASS'a, czy kod SASS jest transpilowany? SASS jest "przepisywany" do CSS'a czyli de facto z czegoś o wyższym poziome abstrakcji(bo ma listy/mapy itp) do czegoś o nieco niższym poziome abstrakcji więc ja bym powiedział, że jest transpilowany, jednak w jednym z kursów, który przerabiam, prowadzący używa sformułowań kompilacja/kompilator - stąd moje dociekania.

Pozdrawiam

2

Sugerując się Wikipedią to transpilator jest rodzajem kompilatora, a więc określanie transpilatora kompilatorem jest poprawne (ale na odwrót w ogólności nie jest):

https://pl.wikipedia.org/wiki/Transpilator

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

https://en.wikipedia.org/wiki/Source-to-source_compiler

A source-to-source translator, source-to-source compiler (S2S compiler), transcompiler, or transpiler[1][2] is a type of translator that takes the source code of a program written in a programming language as its input and produces an equivalent source code in the same or a different programming language.

1
Aqua 4 napisał(a):

Kompilator jest to narzędzie które kompiluje("przepisuje") kod zrozumiały dla programisty do kodu który jest zrozumiały dla maszyny oraz wykonuje ten kod

Kompilator nie wykonuje wygenerowanego kodu.

No i jest jeszcze interpreter - program przypominający swoim działaniem kompilator(też przepisuje kod zrozumiały dla programisty na kod zrozumiały dla maszyny i go wykonuje) z tym że kod wykonywany jest na bieżąco - linia po linii(nie ma tak jak w przypadku kompilatora sprawdzenia np funkcji, zmiennych czy nie występuje tam żaden błąd)

A to już zależy od konkretnego interpretera co sprawdza a czego nie.

0

Kompilator nie wykonuje wygenerowanego kodu.

We współczesnych językach programowania i kompilatorach to różnie z tym bywa ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1