Na ostatnim etapie, tworząc pewienprogram, każdy programista musi skorzystać z usług kompilatora. W dokumentacji technicznej program ten ma raczej skromną definicję jako narzędzie, które wykonuje kompilację. Kompilacja to proces przekształcania programu napisanego w języku czytelnym dla człowieka (język wysokiego poziomu) na instrukcje odczytywalne maszynowo (język niskiego poziomu). W rezultacie otrzymujemy program zbliżony do kodu maszynowego. Może wyglądać jak moduł obiektowy, kod absolutny. Czasami taki program wygląda jak język asemblera.
Tak więc kompilacja ma miejsce, gdy dane wejścioweinformacja (kod źródłowy) reprezentująca opis algorytmu lub program napisany w języku zorientowanym na problemy jest przepisywana na równoważną listę poleceń reprezentowanych w kodzie obiektowym (język zorientowany maszynowo).
Aby jeszcze bardziej uprościć definicję, kompilacja polega na przetłumaczeniu programu maszynowego z języka zorientowanego na problemy na język zorientowany maszynowo.
Pomimo przejrzystości i prostoty definicji,kompilacja jest procesem o wielu obliczach. Istnieje kilka rodzajów tego. Kompilacja wsadowa odbywa się na wielu modułach źródłowych w jednej pozycji zadania. Kompilacja wiersz po wierszu przebiega tak samo, jak interpretacja (niezależna kompilacja krok po kroku każdej kolejnej instrukcji). Istnieje również kompilacja warunkowa. W takim przypadku przetłumaczony tekst zależy od warunków określonych w programie źródłowym przez dyrektywy kompilatora.
Zmieniając wartość pewnej stałej, można dostosować włączenie lub wyłączenie tłumaczenia części tekstu programu.
Dla wygody programistów przy rozwiązywaniu różnych problemów stosuje się najwygodniejsze i dostosowane kompilatory. Jeśli je sklasyfikujemy, możemy wyróżnić kilka typów takich narzędzi.
Kompilator wektoryzacji tłumaczy kod źródłowy na maszynowy kod komputerowy, dostosowując się do procesorów wektorowych.
Elastyczny kompilator został opracowany w oparciu ozasada modułowa. Jest zarządzany przez tabele. Jest zaprogramowany w języku wysokiego poziomu. Można go również zaimplementować za pomocą kompilatora kompilatora.
Kompilator przyrostowy ponownie tłumaczy fragmenty programu i dodatki do niego, z wyłączeniem rekompilacji całego programu.
Kompilator interpretacyjny lub kompilator krok po kroku wykorzystuje zasadę sekwencyjnego wykonywania niezależnej kompilacji dla każdej indywidualnej instrukcji lub polecenia z programu źródłowego.
Kompilator kompilatora to tłumacz, który przyjmuje formalny opis języka programowania. Jest w stanie samodzielnie wygenerować kompilator dla określonego języka.
Kompilator debugowania może samodzielnie naprawić niektóre typy błędów składniowych.
Kompilator rezydentny ma przypisane stałe miejsce w pamięci RAM i jest dostępny, gdy jest ponownie używany przez wiele różnych zadań.
Istnieją kompilatory samokompilujące się. Są napisane w tym samym języku, z którego odbywa się transmisja.
Uniwersalny kompilator opiera się na formalnym opisie semantyki i składni języka wejściowego. Składa się z rdzenia, modułów ładujących składni i semantycznych.
Najczęstsze zadania, gdziekompilatory znajdują swoje zastosowanie - jest to kompilacja jądra dla platformy Linux. Operacja ta pozwala rozwiązać szeroki wachlarz problemów związanych z koordynacją sprzętu i ustawieniem najbardziej akceptowalnej wersji platformy.
Kompilacja Java jest implementowana przy użyciukompilatory działające na wielu różnych platformach. Pozwala to na rekompilację kodu źródłowego na potrzeby systemów operacyjnych różnych producentów.