Die Übersetzung des Quellcodes in Ereignisse, die auf dem Bildschirm, der Festplatte oder im Netzwerk stattfinden, kann (ungefähr) auf zwei Arten erfolgen: Kompilieren und Interpretieren.
In einem kompilierten Programm (Beispiele sind C und Fortran):
- Der Quellcode wird in ein anderes Programm eingegeben (normalerweise Compiler genannt - verständlicherweise), das ein ausführbares Programm (oder einen Fehler) erzeugt.
- Das ausführbare Programm wird ausgeführt (durch Doppelklicken oder Eingeben seines Namens an der Befehlszeile).
Dinge, die im ersten Schritt passieren, heißen "Kompilierungszeit", Dinge, die im zweiten Schritt passieren, heißen "Laufzeit".
In einem interpretierten Programm (Beispiel MicroSoft Basic (auf DOS) und Python (denke ich)):
- Der Quellcode wird in ein anderes Programm eingegeben (normalerweise Interpret genannt), das es direkt "ausführt". Hier dient der Interpret als Zwischenschicht zwischen Ihrem Programm und dem Betriebssystem (oder der Hardware in wirklich einfachen Computern).
In diesem Fall ist der Unterschied zwischen Kompilierungszeit und Laufzeit eher schwieriger zu bestimmen und viel weniger relevant für den Programmierer oder Benutzer.
Java ist eine Art Hybrid, bei dem der Code in Bytecode kompiliert wird, der dann auf einer virtuellen Maschine läuft, die normalerweise ein Interpreter für den Bytecode ist.
Es gibt auch einen Zwischenfall, bei dem das Programm in Bytecode kompiliert und sofort ausgeführt wird (wie bei Awk oder Perl).