Ich beginne mit einem Vergleich. Ein nepalesischer Ureinwohner (= Computer) möchte für dich arbeiten. Er versteht aber kein Deutsch (= Sprache des Programmierers) und du nicht seinen Dialekt (= Befehlssatz der CPU)
Ihr braucht einen Dolmetscher (= Compiler / Interpreter). Allerdings gibt es für diesen Dialekt nur Dolmetscher, die englisch verstehen. Du musst erstmal englisch lernen (= Programmiersprache, z.B. Assembler, C, PHP, …), hast dann aber den Vorteil, auch Dolmetscher für andere Zielsprachen (= andere CPU-Familien) zu finden.
Die CPU (central processing unit) eines Rechners wird vom Hersteller ausgestattet mit einem internen Befehlssatz von mehreren hundert bis tausend binären Kommandos. Ungefähr so:
-
Kopiere den Inhalt von Speicheradresse A in das Rechenwerk. Nehmen wir an, der Inhalt sei die Zahl 3.
-
Addiere den Inhalt von Speicheradresse B dazu, der sei 10.
-
Kopiere das Ergebnis des Rechenwerks nach Speicheradresse C
0011 (0x8 + 0x4 + 1x2 + 1x1)
+1010 (1x8 + 0x4 + 1x2 + 0x1)
=1101
Von rechts nach links addieren, wenn mehr als 1 rauskommt, 0 setzen und die 1 auf die nächste Stelle.
Nun kann die CPU etwas anderes machen und sich später den Wert aus Speicheradresse C holen.
Das Rechnen mit 0 und 1 sieht umständlich aus, geht aber blitzschnell. Weil das nicht die Sprache / Mathematik des Menschen ist, braucht er eine Programmiersprache. Statt Speicheradressen verwendet der Mensch Variablennamen, statt binärer Kommandos unsere üblichen Rechenzeichen:
- arbeitsstunden_montag = 3
- arbeitsstunden_dienstag = 10
- arbeitsstunden_woche = arbeitsstunden_montag + arbeitsstunden_dienstag
Aus dieser Menschen-/Mathematiker-Sprache erstellt ein Compiler oder ein Interpreter dann den binären Maschinencode für eine bestimmte CPU-Familie.
Ein anderer Compiler / Interpreter kann aus demselben Text den Code für eine andere CPU-Familie erstellen.
Ein Compiler ist ein Programm, das den Text in Maschinencode umsetzt und als ausführbare Datei speichert, z.B. als wochenstunden.exe.
Ein Interpreter ist ein Programm, das den Text einliest, in Maschinencode umsetzt und sofort ausführt.
Gruß, Kurti