Was ist eine Hochsprache?
Programmiersprachen wurden entwickelt, um dem Programmierer eine Möglichkeit zu geben, die zu bearbeitenden Probleme in einer für Menschen geeigneten Form darzustellen und gleichzeitig die Umsetzung in die Bits und Bytes der Maschine durch ein Programm möglich zu machen.
Die Sprachen verwenden daher Namen und Symbole, die dem Menschen vertraut sind. Die automatische Umsetzung erfordert aber auch die genaue Einhaltung von Spielregeln, der Syntax.
Die wichtigsten Merkmale der beiden Sprachgruppen sind im obigen Bild zusammengefasst. Hochsprachen verwenden Datentypen, um Variablen zu beschreiben. Hier geben wir an, von welcher Art der Inhalt einer Variablen sein soll.
Die Bearbeitung der Daten geschieht dann mit Operatoren ("+-*/" usw.), die möglicherweise viele Maschinenbefehle zur Bearbeitung benötigen.
Compiler oder Interpreter - der Dolmetscher für eine Hochsprache
Hochsprachen werden oft als Compilersprachen realisiert. Die Grundidee ist, dass der Programmierer seine Beschreibung des Problems anfertigt und der Compiler ein einziges Mal zur Übersetzungszeit den Quelltext in eine Darstellung bringt, die die Maschine ausführen kann. Bei jedem Start des fertigen Programmes wird nur noch der fertige Maschinencode ausgeführt.
Das Gegenstück zum Compiler ist ein Interpreter, wie er z. B. oft bei Basic verwendet wird. Hier geschieht die Interpretation des Quelltextes bei jedem Ablauf des Programmes.
Vorteile und Nachteile eines Compilers
Die Vorteile einer Compilersprache sind:
- der Quellcode bleibt beim Produzenten des Programmes
- die Prüfung auf syntaktische Fehler ist vollständig möglich
- schnellerer Ablauf verglichen mit einem Interpreter
- Teile können getrennt übersetzt werden und bei Bedarf zu einem Programm gebunden werden
Als Nachteile für eine Compiler-Sprache könnte man anführen:
- keine Änderungsmöglichkeit am fertigen Programm
- der Entwicklungsszyklus "editieren - übersetzen - binden" kann zeitaufwendig werden
Datentypen - Schlüsselbegriff der Hochsprachen
Den einfachsten Zugang bieten Compilersprachen, wenn man von den Datentypen ausgeht. Ein Datentyp ist ein Modell eines Stücks der Wirklichkeit. Die in der Sprache definierten Datentypen sind entweder der Mathematik entlehnt oder werden benutzt, um Texte darzustellen.
Ein Datentyp ist z. B. "int" für "integer" (ganze Zahl mit Vorzeichen). Will man eine ganze Zahl bearbeiten oder speichern, braucht man eine Variable, die eine solche Zahl aufnehmen kann. Wie viel Platz eine Variable benötigt, die den Typ "int" hat, wird vom Compilerhersteller festgelegt. Die Größe richtet sich nach der Registerbreite der Maschine.
Der Wertebereich für 16-Bit Rechner ist auf +/-32k (-32768 .. +32767) festgelegt. Der positive Bereich ist um eins kleiner als der negative, da die "0" im positiven Bereich untergebracht wird. Für eine Variable im Speicher sind hier 16 Bit notwendig.
Neben dem Platzbedarf legt der Datentyp auch die möglichen Operationen fest, die man mit einer ganzen Zahl ausführen darf. Hier sind es natürlich die grundlegenden mathematischen Operationen, wie "addieren", "subtrahieren" oder auch den "Rest der Division" finden. Und schließlich ist es die Aufgabe des Compilers, zu prüfen, ob der Programmierer immer die richtigen Variablen mit den richtigen Operationen zusammen benutzt.
Neben den vordefinierten Datentypen kann der Programmierer auch beliebige eigene Datentypen (z. B. Kunde, Artikel, Motor...) definieren.
Ein Datentyp legt
- den Aufbau der Daten,
- den gültigen Wertebereich und
- die zugelassenen Operationen fest
- char für Buchstaben und kleine Zahlen
- int für ganze Zahlen
- float für Fließkommazahlen
- double für Fließkommazahlen mit großer Genauigkeit