Ten artykuł dotyczy informatyki. Zobacz też: inne znaczenia tego słowa.

Kompilacja to proces automatycznego tłumaczenia kodu napisanego w jednym języku programowania na drugi. Dane wejściowe najczęściej nazywa się kodem źródłowym. Program wykonujący tłumaczenie to kompilator. Przeważnie kompilacja jest częścią większego procesu tłumaczenia, tworzony w jej trakcie kod wynikowy jest przekazywany do innych programów (np. linkera), możliwe jest jednak tłumaczenie do postaci zrozumiałej dla człowieka.

Nazwa kompilacja na co dzień jest używana w kontekście tłumaczenia z języka wyższego poziomu na język niższego poziomu. Tłumaczenie w odwrotnym kierunku określa się terminem dekompilacji.

[edytuj] Zastosowania

Typowe zastosowania kompilacji:

  • TÅ‚umaczenie kodu programu w postaci czytelnej dla czÅ‚owieka na zbiór rozkazów maszynowych, które mogÄ… być wykonane przez procesor komputera lub maszynÄ™ wirtualnÄ….
  • W części jÄ™zyków interpretowanych kompilacja jest częściÄ… procesu wykonywania (np. PHP lub SQL w niektórych serwerach DB).
  • Konwersja miÄ™dzy jÄ™zykami programowania.

[edytuj] Etapy kompilacji

Proces kompilacji składa się z dwóch faz podzielonych na kilka etapów:

  • Faza wstÄ™pna - odczyt i analiza kodu źródÅ‚owego na podstawie reguÅ‚ danego jÄ™zyka. Efektem jego pracy jest tzw. reprezentacja poÅ›rednia kodu źródÅ‚owego, majÄ…ca przeważnie postać grafu lub drzewa zależnoÅ›ci.
    • Analiza leksykalna - rozdzielenie kodu źródÅ‚owego na elementarne jednostki jÄ™zyka programowania zwane tokenami.
    • Analiza skÅ‚adniowa - kontrola, czy uÅ‚ożenie tokenów nie Å‚amie reguÅ‚ danego jÄ™zyka programowania (czy kod źródÅ‚owy byÅ‚ poprawny skÅ‚adniowo)
    • Analiza semantyczna - okreÅ›lenie znaczenia poszczególnych tokenów. PrzykÅ‚adem może być sprawdzanie, czy nie wystÄ™puje niezgodność typów.
  • Faza koÅ„cowa - na podstawie reprezentacji poÅ›redniej generowany jest kod wynikowy.
    • Optymalizacja - reprezentacja poÅ›rednia jest upraszczana tak, aby otrzymany na jej podstawie charakteryzowaÅ‚ siÄ™ pewnymi cechami (np. wiÄ™kszÄ… wydajnoÅ›ciÄ… lub mniejszÄ… objÄ™toÅ›ciÄ…).
    • Generacja kodu.

[edytuj] Zobacz też