Dwa sposoby wykonania programu – tłumaczenie całości przed uruchomieniem kontra linia po linii w trakcie działania.
Procesor rozumie wyłącznie kod maszynowy, a człowiek pisze w języku programowania. Ktoś musi to przetłumaczyć – i tu pojawiają się dwa różne podejścia.
Kompilator tłumaczy cały program naraz, jeszcze przed uruchomieniem, i tworzy plik wykonywalny. Od tego momentu program działa samodzielnie, bez kompilatora. Jest szybki, bo tłumaczenie już się odbyło, a błędy składniowe wychodzą przed uruchomieniem. Wadą jest to, że plik wykonywalny działa tylko na tej platformie, dla której powstał, a po każdej zmianie trzeba kompilować od nowa.
Interpreter tłumaczy i wykonuje kod linia po linii w trakcie działania. Nie powstaje plik wykonywalny – do uruchomienia programu potrzebny jest interpreter. Jest wolniejszy, bo tłumaczenie odbywa się na bieżąco, ale za to ten sam kod działa wszędzie, gdzie zainstalowano interpreter, a efekt zmiany widać natychmiast.
Języki takie jak C i C++ są kompilowane, a Python jest interpretowany – dlatego program w Pythonie uruchamia się bez osobnego kroku kompilacji.
| Cecha | Kompilator | Interpreter |
|---|---|---|
| Moment tłumaczenia | przed uruchomieniem | w trakcie działania |
| Wynik | plik wykonywalny | brak, potrzebny interpreter |
| Szybkość działania | większa | mniejsza |
| Wykrywanie błędów składni | przed uruchomieniem | dopiero po dojściu do błędu |
| Przenośność | ograniczona do platformy | wysoka |
| Przykłady | C, C++ | Python |
Najczęstsze pytanie to wskazanie różnicy albo przypisanie języka do kategorii. Python to interpreter, C to kompilator – ta para wraca najczęściej.
Warto znać istotny szczegół dotyczący błędów: przy interpreterze błąd w rzadko wykonywanej linii ujawni się dopiero wtedy, gdy program tam dojdzie. Kompilator wychwyciłby go od razu.
Kod skompilowany, bo tłumaczenie odbyło się wcześniej. Interpreter musi analizować instrukcje na bieżąco, co kosztuje czas przy każdym uruchomieniu.
Tak – kod pośredni. Program kompiluje się do postaci uniwersalnej, a maszyna wirtualna wykonuje ją na docelowym sprzęcie. Tak działa Java.
Bo kompilacja tworzy plik dla konkretnego systemu i architektury. Ten sam kod źródłowy trzeba skompilować osobno dla każdej platformy.
Zagadnienia z tego samego obszaru matury – warto je powtórzyć razem: