Besonders bei Programmiersprachen gilt es, sich zwischen einem breiten Angebot zu entscheiden. Hier zeigen wir Ihnen die wichtigsten Sprachen und deren Können.
Keiner hat sie je gezählt. Oder wüßten Sie auf Anhieb, wieviele Programmiersprachen es gibt? Mehrere hundert sind es auf jeden Fall. Zählt man noch die verschiedenen Sprachdialekte hinzu, so wächst die babylonische Vielfalt in die Tausende. Sich durchgesetzt und weite Verbreitung gefunden haben im Laufe des Computerzeitalters nur eine Handvoll.
Die wichtigsten Programmiersprachen werden Sie in diesem Beitrag kennenlernen. Dabei kann man natürlich nicht alle Feinheiten erschöpfend beschreiben. Vielmehr werden wir Ihnen eine Hüfestellung bei der Auswahl der für Sie geeigneten Sprache geben. Lernen Sie die wichtigsten Eigenschaften von Assembler, Basic, Pascal, Forth, Logo, Modula-2, C, Comal, Fortran und Cobol kennen. Auch die Sprachen der Künstlichen Intelligenz werden wir kurz beleuchten.
In vergangenen Zeiten, als RAM-Bausteine noch nahezu unerschwingliche Schätze darstellten, kämpften Programmierer um die Einsparung jedes einzelnen Bytes. Wer sich Ausgaben früher CP/M-Public Domain-Disketten aus den Jahren um 1978 ansieht, wird entdecken, wie ein Programmierer den anderen zu übertrumpfen versuchte, indem er seine Programmversion fünf Bytes kürzer gestaltete als sein »Konkurrent«. Vor jener Zeit war die einzig sinnvolle und effiziente Programmiersprache Assembler. Das ist der Code, den der Computer direkt versteht, seine Muttersprache sozusagen. Nicht ganz korrekt, werden die Eingeweihten unter Ihnen sagen. Direkt verarbeitet jeder Mikroprozessor nämlich nur Bytefolgen wie zum Beispiel 3A 54 76 21 05 00, die sich ihrerseits jeweüs aus acht Nullen und Einsen zusammensetzen. Derartige Bit-Kombinationen sind natürlich für den Menschen unverständlich und zudem nur sehr schwer zu behalten. Findige Programmierer erfanden deshalb den mnemonischen Code. Hier wird für jede dem Prozessor verständliche Bit-Kombination ein einfaches Merkwort eingesetzt. Ein »Assembler« genanntes Programm übersetzt Mne-monics in hexadezimale Bytes. Assembler bieten den großen Vorteil, daß sie die Fähigkeiten der Hardware in Sachen Geschwindigkeit und Kompaktheit optimal ausnutzen. Jede höhere Programmiersprache muß dagegen beim Programmlauf erst in Assemblercode übersetzt werden und ist deshalb langsamer und weniger universell.
Problematisch bei Assemblerprogrammen ist nur, daß sie lediglich auf einem einzigen Typ eines Mikroprozessors abgearbeitet werden. So läuft ein Programm für den Z80 (Schneider CPC, C 128, Spectrum) beispielsweise nicht auf einem 6502-Prozessor (C 64, C 128, Atari XL/XE, Apple ID oder einem Motorola-68000 (Atari ST. Amiga, Sinclair QL). Selbst bei zwei Computern mit dem gleichen Prozessor ergeben sich in der Regel Inkompatibilitäten. Der Grund hierfür liegt in den unterschiedlichen Betriebssystemen (Programme, die in der Regel ebenfalls in Assembler programmiert wurden) und dem differierenden Hardwareaufbau der meisten Computer. Mühselig, im Vergleich mit höheren Programmiersprachen, ist auch die Programmierung, da oftmals bei Assembler-Unterprogrammen das Rad neu erfunden werden muß. Zu den meisten Assemblern existieren jedoch Bibliotheken, die oft benutzte Routinen zur Verfügung stellen. Des weiteren sind fertige Programme schwierig zu warten, sofern sie nicht sorgfältig dokumentiert wurden.
Wegen der genannten Nachteile wurden bereits in den fünfziger Jahren sogenannte »Hochsprachen« entwickelt. Im Bereich der Großrechner standen ausreichend Speicherkapazitäten bereit, um nicht um jedes Byte ringen zu müssen. Der maßgebliche Unterschied zwischen einer Assemblersprache und einer Hochsprache ist, daß ein Assembler ein Programm eins zu eins in Maschinencode übersetzt, während ein Hochsprachen-Compiler für einen einzigen seiner Befehle viele Maschineninstruktionen erzeugen muß. Dadurch wird ein hochsprachliches Programm immer langsamer und länger sein als ein Assemblerprogramm.
Dadurch, daß Computer schneller werden und über mehr Speicherplatz verfügen, treten diese Probleme mehr und mehr in den Hintergrund. Heutzutage steht vor allem eine schnelle Programmentwicklung im Vordergrund. Und darin sind Hochsprachen dem Assemblercode eindeutig überlegen. Jede Programmiersprache besitzt ihre Besonderheiten. Wer mehrere Sprachen beherrscht, wird immer die für den jeweiligen Anwendungsfall am besten geeignete wählen.
Ziel bei der Entwicklung von Basic (1956 bis 1971 am Dartmouth College. USA) war es, Studenten, die sich nicht ausschließlich mit Ingenieurwissenschaften beschäftigten, das Programmieren zu erleichtern. Die Sprache mußte leicht erlernbar und leicht zu benutzen sein. Basic sollte zunächst im Rahmen von Mathematikvorlesungen gelehrt werden. Hieraus erklärt sich auch seine Ausrichtung auf mathematische Probleme.
Basic gehört bei vielen Computern zur Grundausstattung, während andere Sprachen oft erst teuer hinzugekauft werden müssen. Auch ist Basic die ideale Sprache für Einsteiger. Programme lassen sich nach dem Eintippen sofort ausprobieren — keine Compiler-, Assembler- oder Linkerläufe sind notwendig, wie es bei den meisten anderen Hochsprachen der Fall ist. Diese als »Interaktivität« bekannte Fähigkeit hat Basic gleichermaßen bei Programmierern beliebt und bei Informatiklehrern verhaßt gemacht. Denn sie legt Problemlösungen nach der Methode »quick and dirty« nahe: Programme, die schnell geschrieben werden und auch einwandfrei funktionieren, aber wild durcheinander geschrieben und ohne sinnvolle Planung entwickelt werden. Trotzdem läßt auch Basic strukturierte Programmierung zu.
Als strukturiert wird ein Programm dann bezeichnet, wenn die einzelnen Aufgaben, die es zu lösen hat, im Programm-Code übersichtlich zu logischen Einheiten zusammengefaßt werden.
Moderne Basic-Versionen erlauben sogar den Verzicht auf die Erzfeinde der Strukturierung, nämlich Sprungbefehle wie GOTO. Eine moderne Basic-Version besitzt zumindest die Datentypen Integer (ganzzahlige Werte), Fließkomma und Zeichenketten. Datenfelder sind ebenfalls vorhanden. An Befehlen, die den Programmfluß steuern, bietet Basic die Schleife FOR-TO-NEXT, die eine festgelegte Anzahl von Wiederholungen vorsieht, die Bedingungsabfrage IF-THEN-ELSE und die Sprungbefehle GOTO und GOSUB. Viele Interpreter erlauben WHILE-WEND, einige auch REPEAT-UNTIL. Auch existieren bereits Versionen, die völlig auf die Zeilennummerierung verzichten (zum Beispiel GFA-Basic für den Atari ST). Damit nähern sich die Implementationen oft schon stark an Pascal an.
Kaum jemand hätte den Siegeszug von Pascal für möglich gehalten, am wenigstens ihr »Erfinder« Professor Niklaus Wirth von der ETH (Eidgenössischen Technischen Hochschule) Zürich. Anfang der siebziger Jahre suchte er nach einer passenden Unterrichtssprache, die weniger der Praxis entlehnt sein sollte als vielmehr moderne beispielhafte Konzepte aufweisen sollte. Auf der Basis von Algol 60, das schon damals ein zufriedenstellendes Konzept aufwies, schuf er eine eigene Sprache und benannte sie nach dem französischen Mathematiker Blaise Pascal. Pascal ist schwieriger zu lernen als beispielsweise Basic, denn sie zwingt Programmierer zu einem klaren übersichtlichen Programmierstil. Das heißt, daß das zu programmierende Problem zunächst in Aufgabenpakete zerlegt wird. Für jedes Paket muß dann ein Algorithmus gefunden werden, der zu guter Letzt in Programmcode umgesetzt wird. Erst dann beginnt die Tipparbeit. Pascal-Programme entstehen also in der Regel eher auf dem Papier als auf dem Bildschirm.
Ein Programm ist klar unterteilt in einen Vereinbarungs- und einen Anweisungsteil. Vor dem Hauptprogramm müssen im Quelltext bereits alle Variablen, Konstanten und deren Datentypen exakt definiert sein. In Basic hingegen sind Variablen automatisch durch ihre Verwendung definiert. Der Zwang zur Auflistung bietet den Vorteil, daß bereits der Pascal-Compiler viele Tippfehler entdeckt. Pascal unterstützt zwei Arten von Unterprogrammen: Prozeduren und Funktionen. Sie unterscheiden sich grundlegend darin, daß Funktionen stets einen Wert an das aufrufende Programm zurückgeben. Prozeduren tun dies nicht.
Pascal ist vielseitig und erzieht zum strukturierten Denken. Seine Verbreitung ist folgerichtig in akademischen Bereichen sehr hoch.
Pascal besitzt auch einige Schwächen. Die Routinen zur Ein- und Ausgabe sind beispielsweise recht unterentwickelt. So existiert in Standard-Pascal kein Befehl zur formatierten Ausgabe von Zahlen, wie es in Basic mit PRINT USING und in Cobol mit PICTURE vorgesehen ist.
Auch wurde das Konzept der Modularisierung von Programmen durch Prozeduren und Funktionen nicht ganz zu Ende gedacht. Erhältlich ist Pascal für alle verbreiteten Computer. Durchschlagender Erfolg auf CP/M- und MS-DOS-Computern war und ist insbesondere Turbo-Pascal beschert, das durch hohe Geschwindigkeit und hervorragendes Preis-/Leistungsverhältnis mit Abstand zur weltweiten Nummer eins avancierte.
Modula-2 ist eine Weiterentwicklung von Pascal. Wer schon in Pascal programmiert, dem wird der Umstieg leichtfallen. In Modula-2 wurden einige syntaktische Ungereimtheiten von Pascal bereinigt.
Der entscheidende Vorzug von Modula-2 ist, wie Sie aus dem Namen der Sprache schon ersehen, das Modulkonzept. Es besagt, daß ein Unterprogramm nur einmal in einer allgemeingültigen Fassung entwickelt und compiliert wird. Jeder weitere Compilerlauf ist dadurch überflüssig, denn die Module werden in Bibliotheksdateien auf Diskette verwahrt und vom Compiler oder auch vom Programmbinder in den Programmcode eingebunden. Dazu muß nicht die Funktionsweise eines Moduls bekannt sein, sondern lediglich dessen Namen und die Übergabeparameter. Dieser Vorzug erleichtert die Entwicklung.
Über den Befehl IMPORT werden die Module in das Hauptprogramm »importiert«. Während bei Modulbibliotheken anderer Sprachen die kompletten Bibliotheken ins Programm eingebunden werden müssen, wird in Modula-2 selektiv importiert. Die Speicher-Ersparnis ist enorm.
Für Computer mit 68000-Prozessor ist Modula-2 seit langem erhältlich. Seit neuestem steht auch für MS-DOS und CP/M das hervorragende »Turbo-Modula-2« zur Verfügung, mit dem der Hersteller an die Erfolge von Turbo-Pascal anzuknüpfen sucht.
Von ganz anderem Kaliber, und mit anderen Hochsprachen kaum zu vergleichen ist Forth. Entwickelt wurde sie ursprünglich zur Steuerung von Radioteleskopen. Forth ist interaktiv wie Basic. Programme werden erst im Direktmodus getestet und nach der endgültigen Fertigstellung compiliert.
Die Besonderheit von Forth ist die mit dem Programmieren einhergehende Erweiterung des Sprachumfangs: Wörter, Forth-Befehle also, werden zu Befehlsfolgen zusammengefaßt und mit einem neuen Wortnamen bedacht. Die neuen Wörter lassen sich dann genauso weiter benutzen, wie die bereits vorhandenen Befehle. Das fertige Programm ist in logischer Konsequenz dieser Entwicklung ebenfalls ein Forth-Wort. Wenn auch der Befehlsumfang der meisten Forth-Implementationen über vierhundert (!) Wörter umfaßt, so ist doch nur ein kleiner Bruchteil in Assembler implementiert. Alle anderen Wörter bauen auf diesen auf.
Selbstverständlich stellt Forth auch Kontrollstrukturen zur Verfügung, wie sie beispielsweise für Pascal typisch sind. IF...ELSE...ENDIF, BEGIN...UNTIL und BEGIN...WHILE sind nur einige Beispiele. Die berüchtigten Sprungbefehle fehlen ganz, ergäben beim vorliegenden Sprachkonzept auch keinen Sinn. Grundlegend in Forth ist das Arbeiten mit einem Stapelspeicher (Stack) nach dem LIFO-Prinzip (Last In First Out). Über diesen Stapel laufen sämtliche mathematischen Operationen. Dabei kommt die Umgekehrte Polnische Notation (UPN) zum Einsatz. Diese ist zwar gewöhnungsbedürftig, andererseits aber sehr effizient. Forth ist durch seine Assemblernähe und offene Erweiterbarkeit sehr universell. Auch übt sie unter den Programmiersprachen eine ganz eigene Faszination auf den aus, der sich eingehend mit ihr beschäftigt. Mittlerweile existieren für alle verbreiteten Computer eine oder mehrere Versionen.
Bekannt wurde Logo vor allem durch die Turtle-Grafik: Ein kleines Dreieck, die Schildkröte, wird mit einfachen Befehlen, wie BACK, FORWARD, LEFT, RIGHT etc. über den Bildschirm gesteuert, wobei es eine Gerade hinterläßt oder, je nach Modus, löscht. Daß Logo aber wesentlich mehr kann, ist den meisten nicht bekannt. Viele der Sprachkonzepte erklären sich unmittelbar aus der Entwicklungsgeschichte: Seymour Papert, der geistige Vater von Logo, arbeitete gemeinsam mit einem Team aus Lehrern und Programmierern über zwölf Jahre am MIT (Massachusetts Institute of Technology) in den USA an der Entwicklung. Dadurch, daß nur auf den größten vorhandenen Datenverarbeitungsanlagen getüftelt wurde, fanden maßgebliche Sprachelemente von Lisp Eingang in Logo, so zum Beispiel die Listenprogrammierung. Listen sind einfach zu definieren und zu manipulieren und erlauben die komfortable Programmierung rekursiver Strukturen oder von Dateiverwaltungen. Außerdem ähnelt das Baukasten-Prinzip in Logo stark dem aus Forth. Separate Programmbausteine werden erst mit dem Interpreter getestet und später zum Programm zusammengesetzt. Der Programmierkomfort in Logo ist höher als bei allen anderen Programmiersprachen.
Ebenfalls eingebracht wurden Erziehungstheorien, die sich auf das Lernverhalten von Kindern bezogen. So lernen denn auch Kinder in jungen Jahren Logo sehr viel leichter als Pascal oder Basic.
Mangelhaft ist lediglich die Verarbeitungsgeschwindigkeit, was aber bei einem Lehrsystem wenig ins Gewicht fällt. Erhältlich ist Logo für alle verbreiteten Computer, beim Schneider CPC ist es sogar im Lieferumfang enthalten. Wegen des großen Sprachumfanges ist Logo auf vielen Mikrocomputern mit kleinem Speicher (unter 100 KByte) nur als Untermenge implementiert.
C besitzt eine Reihe von Ähnlichkeiten zu Pascal und Modula-2, stammt aber aus einer völlig anderen Umgebung, den Entwicklungsbüros der Bell-Laboratories. Die Entwicklung der Sprache ist eng mit der Geschichte des Betriebssystems Unix verknüpft. Unix wurde, ebenso wie GEM in neuerer Zeit, in C geschrieben. Diese Tatsache verdeutlicht die überragende Effizienz dieser Sprache. C ist nur wenig langsamer als echte Maschinensprache, und in der Regel schneller als alle anderen Hochsprachen. Das geht so weit, daß viele der Sprache C vorwerfen, sie wäre nur eine Art maschinenunabhängiger Assembler. Das ist natürlich übertrieben. Es trifft aber zu, daß C sehr maschinennah arbeitet.
C bietet den Komfort von Assembler, beispielsweise die beliebige Umwandlung von Datentypen, muß aber nicht auf Hochsprachen-Eigenschaften wie Programmschleifen, mehrzeilige Bedingungsabfragen mit SWITCH-CASE sowie Funktionen und Prozeduren verzichten. Ein C-Programm ist ausschließlich aus Funktionen aufgebaut. Auch das Hauptprogramm ist eine Funktion, mit dem Namen »main()«. In C existieren keine Befehle zur Bildschirmausgabe, zur Abfrage der Tastatur oder zum Zugriff auf Diskettendateien! Bevor Sie sich nun entsetzt von C abwenden, sei zur Ehrenrettung der Sprache versichert, daß auch C-Programme, beispielsweise auf den Bildschirm, schreiben können. Nur sind die entsprechenden Befehle selbst Funktionen, die nicht im Compiler oder den Laufzeitroutinen verankert sind. Statt dessen sind die meisten Funktionen selbst in C geschrieben und werden als vorcompilierte Bibliotheken geliefert. Über den Befehl »#include« wird die passende Bibliotheksdatei eingebunden und auf deren Funktionen zurückgegriffen. Die Standardbibliothek, die die Ein- und Ausgaberoutinen enthält, heißt meist »stdio« (Standard-Input/Output). Der Vorteil dieses ungewöhnlichen Konzepts liegt darin, daß sich C-Compiler in kürzester Zeit programmieren lassen. Der Programmierer muß sich nur um den Compiler selbst kümmern, nicht um die Laufzeitroutinen. Außerdem erhält ein C-Programm völlig neue Eigenschaften durch einfaches Auswechseln oder Ändern einer Bibliothek. C besitzt den wichtigen Vorteil, daß der Sprachumfang und die Bibliotheken weitestgehend standardisiert sind. Abgesehen von minimalen Änderungen lassen sich so Programme vom Schneider CPC oder C 128 auf den Atari ST oder Amiga übernehmen — und umgekehrt. Nur auf die maschinenspezifische Eigenschaften der jeweiligen Computer muß dabei verzichtet werden. Im 8-Bit-Bereich sind effiziente C-Compiler nur unter CP/M erhältlich. Für MS-DOS- und 68000-Computer stehen ebenfalls hervorragende Versionen zur Verfügung.
Wem Basic zu profan erscheint, Pascal und Modula-2 aber zu theoretisch und C zu maschinennah, dem bietet sich mit Comal eine interessante Alternative. Die »Computer Algorithmic Language« versucht, die besonderen Vorzüge der anderen Sprachen, insbesondere von Basic, Pascal und Logo in einer Synthese zu vereinigen. Die wachsende Verbreitung in den letzten Jahren gibt dem vielversprechenden Sprachkonzept recht.
Comal ist weder Compiler noch Interpreter. Es handelt sich um einen sogenannten »Compreter«: Programmzeilen werden wie gewohnt mit dem Editor eingegeben, dabei aber bereits vorcompiliert. Auf den Befehl RUN compiliert Comal blitzschnell das Programm in eine maschinennähere Form und startet es. Sie müssen also weder auf die interaktive Bedienung verzichten, die Basic so populär gemacht hat, noch auf eine ausgesprochen hohe Geschwindigkeit des abgearbeiteten Programmcodes, die nur Compilersprachen auszeichnet. Kontrollstrukturen. die den Ablauf eines Programms beeinflussen, sind in Comal sehr ausgeprägt. Die Zählschleife lautet — fast wie in Basic — FOR-TO-DO und wird mit ENDFOR abgeschlossen. Wer aber als Basic-Programmierer noch auf NEXT be-harrt, hat damit keine Schwierigkeiten. Denn Comal wandelt es selbsttätig in ENDFOR um. Diese Akzeptanz von Comal für fremde Befehle ist typisch, trägt aber nicht gerade zur Eindeutigkeit bei.
CASE-WHEN-ENDCASE-OTHER-WISE, REPEAT-UNTIL und LOOP-EXIT- ENDLOOP sind weitere Strukturbefehle. Auch GOTO wird unterstützt. Angesprungen werden keine Zeilennummern, sondern nur alphanumerische Labels (Sprungmarken). Die Zeilennummern in Comal-Programmen dienen nur zur vernünftigen Bedienung des Editors. Comal wird für fast alle gängigen Mikrocomputer angeboten. Erfreulicherweise stehen auch zahlreiche Public Domain-Versionen zur Verfügung.
Vielfach wird Cobol gar nicht als Programmiersprache angesehen, sondern als »schwatzhaftes Ungetüm«. »Verbose« nennen es die Amerikaner. So »versteht« Cobol beispielsweise folgende Zeile: DIVIDE JAHR BY 12 GIVING MONAT ADD OKTOBER NOVEMBER GIVING MONATE DIVIDE ST BY 60 GIVING S REMAINDER MINUTE. Das mutet natürlich seltsam an und erinnert eher an englische Prosa als an eine Programmiersprache.
Als Cobol Ende der fünfziger Jahre in den Vereinigten Staaten entwickelt wurde, versuchte man, die Syntax möglichst an die englische Umgangssprache anzunähem. Man glaubte, daß man mit wachsendem Speicherplatz immer neue Befehle implementieren könne. Die euphorischen Vorstellungen der Gründerzeit ließen es plausibel erscheinen, daß sich in ferner Zukunft Programmierer mit Cobol in natürlicher Sprache »unterhalten« können. Dieses Ziel wurde natürlich gründlich verfehlt. Cobol wird auch noch heute von vielen Programmierern benutzt. Die »Common Business Orien-ted Language« ist eine Programmiersprache für Geschäfts- und Wirtschaftsanwendungen. In diesem Bereich ist Cobol auch am weitesten verbreitet. Vorrangig bei Minicomputern und Großrechnern sind Anwendungen wie Finanzbuchhaltung und Lagerverwaltung oft in Cobol geschrieben. Bedenkt man, daß Cobol eine der ältesten Programmiersprachen ist, bleibt es doch sehr erstaunlich, welche Leistungsfähigkeit die Sprache besitzt. So erlaubt Cobol sowohl den sequentiellen und relativen als auch indexsequentiellen Zugriff auf Datenbestände auf Diskette — eine unerläßliche Vorbedingung bei der Verwaltung großer Dateien, wenn eine vernünftige Geschwindigkeit erzielt werden soll. Auch umfangreiche Routinen zur formatierten Ein-und Ausgabe von Daten sind vorhanden. Mit der PICTURE- oder PIC-Klause werden Zahlen und Zeichenketten formatiert und ausgedruckt.
Dennoch hat Cobol seine Blütezeit bereits hinter sich. Das zeigt sich daran, daß beispielsweise Lochstreifen und Lochkarten unterstützt werden.
Vor der Gefahr, vergessen zu werden, wird Cobol in den nächsten Jahren eigentlich nur dadurch bewahrt, daß viele Firmen bereits hohe Investitionen in Cobol-Programme getätigt haben und daher diesen Veteranen künstlich am Leben halten. Ganz neue Programmpakete werden aber inzwischen nur noch in Ausnahmefällen in Cobol entwickelt. Unter CP/M und MS-DOS ist Cobol für die meisten Computer erhältlich.
Die älteste und überhaupt erste Hochsprache ist Fortran. Ihre Anfänge gehen auf das Jahr 1956 zurück. Der »Formula Translator« wurde, wie der Name schon sagt, in erster Linie als mathematisch-naturwissenschaftliches Werkzeug konzipiert. Bis heute hat sich Fortran an Universitäten seine Vormachtstellung in den Ingenieurwissenschaften und der Mathematik erhalten. Wer also ein entsprechendes Hochschulstudium anstrebt, der hat mit Fortran-Kenntnissen gute Karten.
Neben den gebräuchlichen Zahlentypen sind zum Beispiel solche mit doppelter Genauigkeit, für boolsche Algebra und für das Rechnen mit komplexen Zahlen vorgesehen. Fortran ist streng zeilenorientiert und erlaubt zunächst nur einen Befehl pro Zeile. Während bei den älteren Versionen viel mit dem GOTO-Befehl umhergesprungen werden mußte, bieten neuere Implementationen, wie Fortran 77, strukturierte Sprachelemente wie IF..THEN...ELSE..ENDIF. Unter CP/M und MS-DOS ist Fortran derzeit auf fast allen Mikrocomputern implementiert, darüber hinaus auch auf dem Atari ST und dem Amiga. Durch die Entwicklung kleinerer Computersysteme kamen auch Nicht-Techniker mit Programmiersprachen in Berührung. Da Fortran eine sehr komplexe Sprache ist, mußte eine neue Sprache geschaffen werden; aus Fortran entstand Basic.
Ganz aus dem Rahmen der bis hierher gezeigten Programmiersprachen fallen die Sprachen der Künstlichen Intelligenz. Die beiden Hauptvertreter heißen Prolog und Lisp. Da beide nur für einen sehr eingeschränkten Problembereich sinnvoll einsetzbar sind, sollen ihre Eigenschaften hier nur kurz zusammengefaßt werden. PROLOG ist eine sogenannte »deskriptive« oder »deklarative« Programmiersprache, während herkömmliche Sprachen »prozedural« arbeiten. Der Unterschied ist gewaltig: Wollen Sie in Basic oder Pascal ein Problem lösen, müssen Sie dem Computer den Lösungsweg zeigen. Sie müssen eine Prozedur entwickeln.
Prolog geht genau den anderen Weg: Sie haben ein Problem und geben eine Beschreibung der Logik des Problems oder eine Musterlösung an. Prolog entwickelt daraufhin einen passenden Algorithmus, da es in der Lage ist, Schlußfolgerungen zu ziehen. Prolog programmiert also gewissermaßen selbst. Beim späteren Programmlauf stellen Sie nur noch Fragen und erhalten vom Computer die Antworten. In der Regel dient Prolog für intelligente Datenbankanwendungen. Verfügbar ist Prolog für den C 64, unter CP/M und MS-DOS und für 68000-Computer, die meisten Versionen sind Public Domain. Aufsehenerregend, wenn auch vom Sprach-Standard stark abweichend, war jüngst das Turbo-Prolog, das einen überaus schnellen und umfangreichen Compiler zum sensationell niedrigen Preis bietet.
Übrigens wurde Prolog von den Japanern entwickelt, speziell für ihr Projekt »Computer der fünften Generation« — ein System das über Ein-/Ausgabe in natürlicher Sprache verfügt, sowie über Sensoren zum Sehen, Hören etc. Dieses Projekt wollen die Japaner bis zum Jahr 1993 abgeschlossen haben.
Lisp ist nach Fortran die Zweitälteste Programmiersprache. Im Vergleich zu den anderen Hochsprachen vertritt sie ebenfalls ein grundsätzlich andersartiges Konzept. Im Gegensatz zur statischen Datenverwaltung sind in Lisp die Daten hauptsächlich dynamisch und werden in Stapeln abgelegt. So wird eine beliebige Erweiterbarkeit der Dateien auch während der Programmausführung realisiert. Programme als auch Daten sind in Listen organisiert. Die Elemente der Listen sind entweder Atome, als kleinste semantische Elemente, oder weitere Listen. Primär werden symbolische Ausdrücke in diesen Listen verarbeitet. Die Syntax ist sehr flexibel, und da Programmteile wie Daten gehandhabt werden können, verändern sich Lisp-Programme auch selbst. Die Programmierung komplizierter Prozesse wird so im Rahmen der Künstlichen Intelligenz stark erleichtert oder überhaupt erst machbar. Die Hauptanwendung liegt in der Programmierung von Expertensystemen, Robotersteuerungen, natürlichsprachlicher und bildverarbeitender Systeme und vielen anderen Randgebieten der Informatik. Implementiert wurde Lisp bisher hauptsächlich auf Großrechnern, aber auch für MS-DOS und CP/M stehen hervorragende Interpreter bereit. Für den Atari ST ist ein Lisp-Interpreter sogar als Public Domain-Programm erhältlich.
Ihre Entscheidung zugunsten der einen oder anderen Programmiersprache beeinflußt im wesentlichen, wie effektiv Sie Ihren Computer nutzen. Nicht immer ist die schnellste Sprache auch die beste. Geschwindigkeit geht oft zu Lasten der Übersichtlichkeit und des Programmierkomforts — und umgekehrt. Für weiter verbreitete Sprachen existiert zwangsläufig auch ein wesentlich umfangreicheres Software-Angebot. Keine Sprache kann alle Vorzüge in sich vereinen. Entscheidend ist Ihre ganz persönliche Aufgabe, die Sie sich am Computer gestellt haben. Mit dem hier gewonnenen Überblick sind Sie nun in der Lage, die wichtigsten Sprachen mit Ihrem Einsatzzweck abzustimmen.
(Martin Kotulla/Matthias Rosin/lg)