Ankunft in Silicon-Babylon

Das alte Babylon ist längst versunken. Doch wer heute im Land der Programmierer eintrifft und versucht, mit seinem Computer ins Gespräch zu kommen, muß auch erfahren, was Sprachenvielfalt bedeutet. Assembler, Basic, C, Cobol — das ist längst nicht alles, was in Silicon-Babylon gesprochen wird. Um Neuankömmlingen eine grundlegende Orientierung zu vermitteln und ihnen die ersten Schritte zum eigenen Programm zu erleichtern, haben wir das folgende Trainingsgespräch geführt. Doch was ist eigentlich eine Programmiersprache?

Eine Programmiersprache dient zum Schreiben von Programmen, die der Computer ausführt. Wie er die Programme verarbeitet, ist allerdings bei den verschiedenen Programmiersprachen unterschiedlich. Einmal interpretiert er die einzelnen Befehle. Ein Übersetzungsprogramm, der Interpreter, schaut, welcher Befehl in einer Zeile steht, führt ihn aus und geht dann zum nächsten Befehl beziehungsweise zur nächsten Zeile. Dies geschieht bei jedem Programmlauf. Ein Compiler dagegen übersetzt das Programm nur einmal und erzeugt dabei einen Code, der alleine, also ohne einen Interpreter, läuft.

Wie muß dieser Code aussehen, damit er alleine läuft?

Ein Programm, das direkt lauffähig ist, besteht aus Maschinenbefehlen, die der jeweilige Prozessor versteht.

Kannst Du mir Beispiele für einen Maschinenbefehl nennen?

Ladebefehle, Schiebebefehle, Speicherbefehle, Vergleiche.

Wie lautet beispielsweise der Befehl für Vergleiche und wie schaut er in Maschinensprache aus?

Compare, beziehungsweise in der Assembler-Sprache »CMP Quelle,Ziel«. Direkt auf Computerebene besteht dieser Befehl nur aus Nullen und Einsen. Die für den Programmierer leicht zu merkenden Abkürzungen, in diesem Fall also CMP, heißen Mnemonics. Übersetzt der Assembler das in Assembler-Sprache geschriebene Programm, so sucht er in einer Tabelle nach dem Schlüsselwort CMP. Hat er dieses gefunden, ersetzt er es durch die Einsen und Nullen, die für den Prozessor, auch kurz CPU (Central Processing Unit) genannt, den Befehl Compare bedeuten.

Assembler ist also in diesem Fall die Programmiersprache?

Genau, Assembler ist die Muttersprache des jeweiligen Prozessors. Beispielsweise hat der MC 68000 von Motorola eine andere Assembler-Sprache als der Z80 von Zilog. Da man den jeweiligen Prozessor mit Assembler ohne Umwege über einen Compiler oder Interpreter programmiert, sind in Assembler geschriebene Programme die schnellsten und kürzesten.

Gehen wir nun weg von Assembler. Es gibt doch noch andere Programmiersprachen?

Ja, das sind die Hochsprachen. Beispielsweise Basic als Interpretersprache oder C als Compilersprache.

Das müßte eigentlich reichen. Dann hätte man eine Sprache nahe der Maschinenebene, eine Interpreter- und eine Compilersprache. Warum gibt es so viele Sprachen?

Interpretersprachen wurden entwickelt, weil ein Interpreter leichter zu bedienen ist als ein Compiler, da es sich meist um interaktive Systeme handelt. Wie zum Beispiel beim Commodore C 64. Den schaltet man ein und ist sofort im Basic. Besitzern dieses Computers ist der Unterschied zwischen Betriebssystem und Basic aus diesem Grund oft gar nicht bewußt. Ein weiterer Vorteil eines Interpreters ist, daß man seine Idee eben mal schnell ausprobieren kann. Man muß sie nur eintippen und sieht sofort das Ergebnis. Das ist beim Compiler nicht der Fall. Da muß man das Programm, das man mit einem Editor eingegeben hat, erst compilieren und anschließend linken. Linken bedeutet, daß man Routinen, die jedes Programm benötigt, also beispielsweise Ein-/Ausgabe-Funktionen, die dem Compiler in Form von Bibliotheken beiliegen, in das eigene Programm bindet. Erst nach dieser Prozedur ist man in der Lage, das Programm auszuprobieren.

Daß es heute mehrere verschiedene Sprachen gibt, ist darauf zurückzuführen, daß häufig für ein bestimmtes Spezialgebiet noch keine passende Sprache existierte, also schuf man sich die nötige Programmiersprache. Nehmen wir beispielsweise Pascal und Modula. Professor Wirth merkte, daß es keine geeignete Programmiersprache gab, mit der er seinen Studenten strukturierte Programmierung an der Universität beibringen konnte. Also entwarf er Pascal. Dann, nachdem er überrascht feststellte, daß auch Softwarehäuser mit Pascal programmieren, aber über einige Mängel klagten und eine Wunschliste aufstellten, entwickelte er weiter und so entstand Modula-2 als direkter Nachfolger von Pascal.

Gibt es noch andere Interpretersprachen als Basic?

Sicher. Lisp zum Beispiel. Prinzipiell kann man jede Sprache als Interpreter implementieren. Es gibt C-Interpreter, und es gibt sogar interpretierende Assembler-Tutoren. Auf der anderen Seite kennt man aber auch Ba-sic-Compiler.

Demzufolge ist die Unterscheidung in Interpreter- und Compilersprachen gar kein eindeutiges Unterscheidungskriterium für Programmiersprachen.

Aus geschichtlichen Gründen zählt Basic immer als Interpretersprache, obwohl es für fast jedes Basic auch einen Compiler gibt. Zum Beispiel gibt es für GFA- und Omikron-Basic auf dem ST einen Compiler. Dies hat den Vorteil, daß man mit dem Interpreter schnell und bequem austestet und erst das fehlerfreie Programm compiliert.

Gibt es noch andere Kriterien, nach denen man Programmiersprachen unterscheiden oder sie in Gruppen einteilen kann?

Ein Kriterium zur Unterteilung ist das hauptsächliche Anwendungsgebiet der jeweiligen Programmiersprache. Da gibt es Basic als Anfängersprache, weil es relativ leicht zu lernen ist und auf praktisch jedem Computer zur Verfügung steht. Auch Logo ist für Einsteiger geeignet. Logo ist eine recht einfache, schön zu lernende Sprache. Man merkt, sie wurde für Kinder entwickelt. Deshalb hat sie auch nie den Durchbruch geschafft. Man kann mit Logo wirklich schöne Programme schreiben. Doch sieht man gerade beim ST, bei dem Logo neben dem Atari Basic zum Lieferumfang des Computers gehörte, daß praktisch niemand ein Programm in dieser Sprache zu uns in die Redaktion geschickt hat. Dabei lassen sich komplette Adreßverwaltungen mit dieser listenorientierten Sprache realisieren. Aber Logo kann folgendes Image nicht ablegen: Jeder weiß, Logo wurde für Kinder entwickelt und jeder kennt nur die Turtle-Grafik von Logo. Was soll man also mit so einer Kindersprache? Hier wird Logo verkannt, denn Logo ist eine vollwertige Programmiersprache.

Dann gibt es Sprachen, die vor allem in der Wirtschaft, bei Versicherungen und Banken, zum Einsatz kommen. Hier wäre Cobol zu nennen, das seine Stellung bis heute aus seiner geschichtlichen Entwicklung heraus behauptet. Cobol wurde für kaufmännische Anwendung entwickelt, vom Marktführer unterstützt und dann standardisiert. Dies hatte den Effekt, daß heute viele Programmierer diese Sprache beherrschen und nicht mehr auf sie verzichten wollen, auch wenn es tausend Gründe gäbe, warum eine andere Sprache besser geeignet wäre. Weiter spricht für Cobol die leichte Lesbarkeit und, daß der ganze Softwarepool dieser Branchen in dieser Sprache geschrieben ist.

Mathematiker bevorzugen die Sprache Fortran, da sie genau auf ihre Probleme zugeschnitten ist.

In Softwarehäusern gewinnt die Sprache C immer mehr an Bedeutung, da mit ihr geschriebene Programme relativ leicht zu portieren sind, weil man bei C einen Standard kennt. Dies bedeutet in der Praxis: Solange man die Programme nicht maschinenabhängig schreibt, sind sie auf andere Computer, für die es C-Compiler gibt, übertragbar.

Was heißt eigentlich »portierbar«?

Portieren bedeutet, ein Programm auf einer Maschine zu entwickeln, das Quellprogramm auf eine andere Maschine zu übertragen und es dort neu zu compilieren. Danach sollte das Programm auch auf dem neuen Computer laufen. In der Praxis muß der Programmierer in der Regel aber sein Programm erst einmal an die neue Maschine anpassen.

Gibt es die oben aufgezählten Sprachen alle für den ST?

Ja, teilweise in Versionen von verschiedenen Softwarehäusern und -entwicklern.

Welche Versionen der wichtigsten Programmiersprachen auf dem ST sind die gebräuchlichsten?

Bei Fortran »ProFortran« von Pöspero, bei Basic »GFA-Basic«, bei Cobol »Fast Cobol« von Softline und bei Pascal »ST-Pas-cal Plus« von CCD. Bei C kommt es sehr darauf an, was man entwickeln möchte. Für kleinere Programme »Megamax« von Application Systems, obwohl es nicht das genaueste und nicht das schnellste ist, was aber seine komfortable Benutzeroberfläche wieder wett macht. Für größere Projekte würde ich das »Mark Williams-C« von Markt & Technik nehmen.

Und bei Assemblern?

Den neuen GFA-Assembler, der heuer auf der CeBIT vorgestellt wurde. Was man dort gezeigt bekam, sah sehr vielversprechend aus. Von denen, die bereits ausgetestet sind, empfehle ich den »MadMac« aus dem Atari-Entwicklungspaket.

In der nächsten Ausgabe setzen wir das STTrainingsgespräch über Programmiersprachen und unser kleines Lexikon zu diesem Thema fort.

Sollten Sie weitere Fragen zu diesem Thema haben, bemühen wir uns, sie zu beantworten. Schreiben Sie uns bitte auch, wenn Sie andere Themen für ein ST-Trainingsgespräch interessieren.

Nicht nur die Welt der Programmiersprachen ist verwirrend, man muß schon fast eine eigene Sprache beherrschen, wenn man sich über Programmiersprachen informieren will. Hier finden Sie die wichtigsten Begriffe, damit Sie in Zukunft bei diesen Thema mitreden können.

**APL:** Abkürzung für A Programming Language; höhere Programmiersprache (mathematisch orientiert).

Assembler: Bezeichnet zum einen ein Übersetzungsprogramm, das ein in Assembler-Sprache geschriebenes Programm in den Maschinencode übersetzt, zum anderen wird die Assembler-Sprache selbst oft als Assembler bezeichnet. Assembler-Sprache: Die Assemblersprache ist eine maschinenorientierte (CPU-abhängige) Programmiersprache, bei der Adressen und Operanden eines Befehls im mnemotechnischer (symbolischer) Form geschrieben werden (zum Beispiel CMP für Vergleiche). Die Programmierung in Assembler-Sprache ist schwieriger als in einer höheren Programmiersprache (zum Beispiel Pascal, Basic), jedoch ist ein Assembler-Programm meist wesentlich kürzer und schneller als ein entsprechendes Hochsprachen- (zum Beispiel Basic-) Programm.

Basic: Relativ leicht erlernbare, weit verbreitete höhere Programmiersprache, die bei nahezu allen Mikrocomputern eingesetzt wird. Basic ist die Abkürzung für Beginners All purpose Symbolic Instruction Code. Neben der Interpreter-Version von Basic gibt es auch Basic-Compiler, deren Vorteil in wesentlich kürzeren Programmlaufzeiten liegt. Ferner ermöglicht die Kombination Basic-Interpreter — Basic-Compiler eine relativ schnelle und einfache Programmentwicklung. Betriebssystem: Gruppe von Systemprogrammen eines Computers, die ihn für den Benutzer einsatzfähig machen. Das Betriebssystem steuert beispielsweise Peripheriegeräte und Massenspeicher, besorgt die Dateiverwaltung mit Texteintragungen und Änderungen, organisiert die Speichersteuerung und bietet Fehlerverfolgungsprogramme an. Die Betriebssysteme für Personal Computer sind von sehr unterschiedlicher Qualität — es werden deshalb zahlreiche ergänzende System-Programme (Utilities) angeboten. Betriebssysteme werden in der Regel vom Hardware-Hersteller mitgeliefert. Bibliothek: Sammlung von Programmen. Auch: Sammlung von Unterprogrammen zur Berechnung häufig vorkommender Aufgaben, zum Beispiel mathematischer Routinen wie Sinus oder Logarithmus. Unterprogramme sind im relokativen Code abgelegt, so daß sie sich an beliebiger Stelle in das Programm ein-fügen lassen. Sie können vom Benutzerprogramm aus aufgerufen werden. Dazu muß die Bibliothek durch ein Systemprogramm (Binder) an das Anwenderprogramm angebunden sein. Im Gegensatz zu normalen zugeladenen Programmen werden bei Bibliotheken nur die Unterprogramme angebunden, die im Anwendungsprogramm zum Einsatz kommen.

Bit: Kleinste Einheit im Binärsystem; kann den Wert »0« oder »1« annehmen. Bug: Fehler, die bei der Programmentwicklung auftreten Byte: 8 Bit

C: Höhere Programmiersprache, in der beispielsweise das Betriebssystem Unix geschrieben ist. C wurde von den Bell Laboratories entwickelt und ist eine sehr schnelle, maschinennahe und relativ leicht zu erlernende Programmiersprache, die auch im Personal Computer-Bereich Einsatz findet.

Cobol: Abkürzung für Common Business Oriented Language. Cobol ist eine speziell für den administrativen und kommerziellen Bereich entwickelte höhere Programmiersprache. Auf kaufmännische und wirtschaftliche Aufgaben zugeschnitten, ist Cobol in diesem Bereich eine der am häufigsten verwendeten Programmiersprachen. Diese Computersprache ist nicht sehr leicht zu erlernen, dafür jedoch selbstdokumentierend, wodurch die Programm-Listings verhältnismäßig gut lesbar sind.

Compiler: Ein Compiler ist ein Übersetzungsprogramm, das ein in einer höheren Programmiersprache geschriebenes Programm in den Maschinencode überführt. Dieser kann dann direkt vom Mikroprozessor ausgeführt werden. Nachteil von Compilern: Sie erzeugen mehr Maschinencode als ein guter Programmierer benötigen würde, der Programme in Assembler schreibt; deshalb ist die Programm-Ausführungszeit länger, mehr Speicherplatz ist nötig.


Paul Sleß Ulrich Hofner
Aus: ST-Magazin 07 / 1988, Seite 102

Links

Copyright-Bestimmungen: siehe Über diese Seite