Kompilator tłumaczy kod źródłowy na język maszynowy przed uruchomieniem programu, generując plik wykonywalny (np. .exe w systemie Windows). Jest to proces jednorazowy – po kompilacji aplikacja może działać bez potrzeby ponownego tłumaczenia kodu. Dzięki temu programy skompilowane są zazwyczaj szybsze i bardziej wydajne niż te interpretowane, ponieważ cały kod jest przekształcany na język maszynowy przed wykonaniem. Kompilatory są szeroko stosowane w językach takich jak C, C++ czy Java, gdzie kompilacja umożliwia optymalizację kodu oraz wykrywanie błędów na etapie translacji, zanim program zostanie uruchomiony.
Kompilator nie tłumaczy kodu w trakcie jego wykonywania – to cecha interpretera, który przetwarza kod linia po linii podczas działania programu. Interpreter nie generuje plików wykonywalnych; program działa w czasie rzeczywistym, co skutkuje wolniejszym działaniem. Tłumaczenie kodu przed kompilacją nie jest prawidłowe – kompilacja to proces tworzenia pliku wykonywalnego z kodu źródłowego. Interpreter nie generuje samodzielnych plików wykonywalnych, a jedynie analizuje i wykonuje kod na bieżąco.