Der Compiler übersetz den ganzen Code auf einmal. Herauskommt ein fertiges Programm das lauffähig ist. (für Insider: den Schritt mit dem Linken hab ich absichtlich mal weggelassen)
Der Interpreter übersetz Anweisung für Anweisung und führt sie direkt aus. Ein interpretiertes Programm wird somit bei jedem Programmstart erneut übersetzt.