High Level vs. Low Level Programmierung

Wir haben bereits gelernt, wie ein Computer durch Verwendung bestimmter Zahlensysteme und das Kodieren von Zeichen Daten verarbeiten kann.

Wie kann ich nun meinem Computer Anweisungen geben, wann und wie er diese Verarbeitung durchführen soll?
Wie bereits zuvor erwähnt, wird bei der Programmierung zwischen System- und Anwenderprogrammen unterschieden. Die jeweils nötigen Sprachen zur Programmierung dieser Programme befinden sich auf unterschiedlichen Ebenen. Während die vom Computer verwendeten Folgen von 1en und 0en der Maschinensprache auf einem sehr niedrigen Level der Komplexität operieren, stehen moderne Programmiersprachen aufgrund ihres komplexen Syntax und ihres Umfanges auf einer hohen Ebene.
Aus diesem Grund spricht man hier auch gerne von Low Level und High Level Programmierung.

Wie aber verstehen sich diese Arten von Sprachen?
Hierzu nutzen Computer unter anderem kleine Hilfsprogramme, die ihm bei der Verständigung in diesen Sprachen helfen.

Beispiel für High-Level-Programmierung:

int i = 0;
while(i<3){
    System.out.println(„Hello World!“);
    i++;
}

Problem: Computer "versteht" nur Befehle bestehend aus Einsen und Nullen.

Beispiel für Low-Level-Programmierung:

10110000 01100001

Problem: Mensch versteht Befehle, die nur aus Einsen und Nullen bestehen, nicht.

 


Wie also können wir diese Probleme lösen?
Die Hochsprachen müssen also in Bitfolgen übersetzt werden.

Hierzu gibt es Compiler und Interpreter!

Was das ist, wird dir in dem kleinen Video erstmal deutlich:

Compiler:

Bei einem Compiler handelt es sich um ein Programm, das in der Lage ist, Programme einer anderen Programmiersprache zu übersetzen und so für einen
Computer ausführbar zu machen. Hierzu nimmt der Compiler den kompletten Code und übersetzt ihn in etwas, das der Computer versteht. Dieser kompilierte Code wird dann vom Computer ausgeführt oder als Datei zur späteren Ausführung gespeichert.

Vorteil: Optimierung des Codes kann durchgeführt werden (z.B. Umsortieren von Befehlen)

 

Interpreter:

Im Gegensatz dazu kann ein Interpreter den Code eines anderen Programmes nicht direkt in eine ausführbare Datei übersetzen, sondern liest den Code ein, analysiert ihn und fügt ihn der Laufzeit eines Programmes hinzu. Dies geschieht, indem der Interpreter den Code Zeile für Zeile übersetzt, diesen aber nicht in einer Datei speichert.

Vorteil: Programm kann sofort ausgeführt werden

Compiler und Interpreter


Eine kleine Analogie zur Verdeutlichung:
Wir nehmen an unser Code wäre ein Brief auf Französisch. Wir sprechen aber leider nur Deutsch. Compiler und Interpreter wären in unserem Beispiel ein Übersetzer bzw. ein Dolmetscher. Beide wollen diese eine Sprache in die andere übersetzen, nutzen aber unterschiedliche Methoden, um ihr Ziel zu erreichen: Unser Compiler würde nun den Französischen Brief in einen neuen Brief in Deutsch übersetzen und uns nach Hause schicken, während der Interpreter uns den Französischen Brief in Deutsch vorlesen würde.