Wróć do: Teoria
podstawowy teoria programowaniakompilatorinterpretermatura podstawowa z informatyki

Kompilator a interpreter

Dwa sposoby wykonania programu – tłumaczenie całości przed uruchomieniem kontra linia po linii w trakcie działania.

01

Opis

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.

02

Porównanie

CechaKompilatorInterpreter
Moment tłumaczeniaprzed uruchomieniemw trakcie działania
Wynikplik wykonywalnybrak, potrzebny interpreter
Szybkość działaniawiększamniejsza
Wykrywanie błędów składniprzed uruchomieniemdopiero po dojściu do błędu
Przenośnośćograniczona do platformywysoka
PrzykładyC, C++Python

Na maturze

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.

04

Zapamiętaj

  • Kompilator tłumaczy całość z góry i tworzy plik wykonywalny.
  • Interpreter tłumaczy linia po linii podczas działania programu.
  • Kod skompilowany działa szybciej, interpretowany jest bardziej przenośny.
  • Python jest interpretowany, C i C++ kompilowane.
05

Najczęściej zadawane pytania

Co jest szybsze i dlaczego?

Kod skompilowany, bo tłumaczenie odbyło się wcześniej. Interpreter musi analizować instrukcje na bieżąco, co kosztuje czas przy każdym uruchomieniu.

Czy istnieje rozwiązanie pośrednie?

Tak – kod pośredni. Program kompiluje się do postaci uniwersalnej, a maszyna wirtualna wykonuje ją na docelowym sprzęcie. Tak działa Java.

Dlaczego program napisany na Windowsie nie działa na Linuksie?

Bo kompilacja tworzy plik dla konkretnego systemu i architektury. Ten sam kod źródłowy trzeba skompilować osobno dla każdej platformy.

Powiązane zagadnienia