Pomiędzy kodem a programem wykonywalnym
- tradycyjnie interpretowana jest linia po linii(BASIC, MATLAB) ale nowsze np. Python tłumaczą cały program na język pośredniego poziomu, który jest potem interpretowany znacznie szybciej
- długi czas wykonania (wielokrotne interpretowanie tych samych fragmentów kodu)
- łatwo i szybko znajduje się błędy
- łatwo i szybko można zaimplementować program (MATLAB)
- ostatecznym wynikiem kompilacji jest kod maszynowy
- Proces kompilacji jest znacznie dłuższy ale czas wykonania jest znacznie krótszy
- Części kodu można kompilować oddzielnie
Proces kompilacji (w C lub C++)
- Pierwsze przejście: parser zamienia kod na drzewo prostych operacji
- Drugie przejście: generator kodu maszynowego przechodzi przez węzły drzewa produkując dla każdego z nich odpowiednie instrukcje
- Po tych przejściach dostajemy pliki .o lub .obj (kod maszynowy ale jeszcze bez konkretnych adresów procedur)
- Linker (konsolidator) łączy listę .o w program wykonywalny (przypisuje procedury do konkretnych miejsc w pamięci i uzupełnia adresy), dodaje moduł startowy. Linker może też przeszukiwać biblioteki (kolekcje modułów .o zebranych w jednym pliku)