2.1.2. Die Entwicklung der heutigen Programmiersprachen |
Programmiersprachen formulieren Algorithmen und
Datenstrukturen so, dass der Rechner das resultierende und übersetzte (kompilierte)
Programm ausführen kann. Es gibt heute bereits mehr als tausend Programmiersprachen,
wobei allerdings nur etwa 20 weiter verbreitet sind.
Man unterscheidet heute 3 Hauptgruppen von Programmiersprachen in unterschiedlicher
Höhe, d.h. "Entfernung" vom Computer: Maschinensprachen, Assemblersprachen und
Problemorientierte (höhere) Programmiersprachen.
In der Anfangszeit der Mikrorechentechnik wurden Programme fast ausschließlich in
Maschinen- oder Assemblercode erstellt und getestet. Nach dem Erscheinen der ersten
Betriebssysteme und verbesserter Hilfsmittel für die Programmentwicklung, vor allem von
Übersetzern (Compilern) für höhere Programmiersprachen, waren Ende der siebziger Jahre
die Voraussetzungen für eine Programmentwicklung geschaffen, die dem Niveau der
Rechentechnik entsprach. Die Orientierung auf wenige international verbeitete
Betriebssysteme förderte die Kompatibilität und damit den Austausch von Programmen.
Der Maschinencode (=Maschinensprache) ist das Endergebnis der
Kompilierung einer höheren Programmiersprache wie z.B. Pascal oder C oder von
Assemblersprachen. Dieser aus Einsen und Nullen (Binärzeichen) bestehende Code ist die
einzige Sprache, die ein Computer verstehen kann. Er bildet somit die Grundlage aller
Programmiersprachen, welche nur als Hilfsmittel dienen, dass der Mensch in einer einfachen
Weise die vom Computer zu lösenden Probleme formulieren kann.
Algorithmen werden so ausgedrückt, dass das benutzte Rechnermodell sie direkt
verarbeiten kann, dabei werden die Zeichenfolgen durch den Mikroprozessor geladen und
ausgeführt.
Alle verwendeten mathematischen Operationen werden auf eine sehr begrenzte Anzahl
von Grundoperationen zurückgeführt.
Die Programme sind an ein bestimmtes Rechnermodell gebunden und nicht auf andere
Platformen portierbar. Auch die benutzbaren Ein- und Ausgabegeräte sind vorgegeben.
In Maschinensprache geschriebene Programme sind äußerst schwer lesbar und auch
für den erfahrenen Programmierer oft unverständlich.
Sie bieten dafür den Vorteil, dass sie schneller verarbeitet werden können, weil
eine spezifischere Problemformulierung möglich ist, da man nicht auf vorgegebene und
umfangreiche "Formulierungshilfen" zurückgreifen muss.
Assemblersprachen sind symbolische Darstellungen der
Maschinencodes und damit ebenso maschinennah und schnell zu verarbeiten.
Dadurch sind sie sehr effizient und außerdem benötigen sie nur wenig
Speicherplatz.
Der Nachteil ist allerdings, dass sie, genau wie die Maschinensprachen, an einen
bestimmten Rechnertyp gebunden sind.
Auch Assemblersprachen sind noch recht schwer verständlich und wenig
übersichtlich, erleichtern aber immerhin die Programmierung in Maschinensprache
(rein binäre Darstellung).
Höhere Programmiersprachen (High
Level Language)
Höhere Programmiersprachen sind die heute am meisten
verwendeten Programmiersprachen.
Sie basieren auf der Maschinensprache und werden durch einen Compiler oder
Interpreter in diese übersetzt (compiliert).
Algorithmen werden in den HLL (High Level Languages) auf einfache und dem Problem
angepasste Weise beschrieben.
Programme in einer höheren Programmiersprache sind oft plattform- und
rechnerunabhängig und können übertragen werden. Sie haben einen klaren
und strukturierten Aufbau und sind relativ leicht nachvollziehbar.
Die höheren Programmiersprachen ermöglichen eine problemnahe und für den
Anwender transparente Darstellung, die den Forderungen nach Anwenderfreundlichkeit und
Verständlichkeit entgegenkommt.
Da dem Computer an sich die Programme unverständlich sind, müssen sie immer erst
compiliert werden. Sie belegen mehr Speicherplatz und sind in der Ausführung langsamer
als vergleichbare reine Maschinencodes.
Beispiel
Die höheren Programmiersprachen werden unterteilt in imperative, funktionale,
prädikative und objektorientierte Programmiersprachen. Die Einteilung kann man jedoch
unter verschiedenen Gesichtspunkten vornehmen, so dass sich die einzelnen Klassen
überschneiden. Einige Sprachen kann man somit in mehrere Klassen einordnen..