Publications

Feature in SILVER 13

/ 30 Oktober 2007

In der Ausgabe 13 des Magazins SILVER, welches vom Internet-Provider Silver Server herausgegeben wird, schrieb Stefan G. Weichinger über die Geschichte der Programmiersprachen.

Die Geschichte der Programmiersprachen

“Wenn Dein einziges Werkzeug ein Hammer ist, wird jedes Problem wie ein Nagel aussehen.”

In der modernen IT gibt es unzählige Programmiersprachen. Diese Entwicklung ist die Folge vielfältiger unterschiedlicher Ansprüche und Aufgaben. Das Werkzeug ist abhängig vom zu lösenden Problem.
Um ein Problem zu lösen, ist es nötig, die dafür erforderlichen Werkzeuge parat zu haben, und zu definieren, wie diese Werkzeuge folgerichtig anzuwenden sind, um zum gewünschten Ergebnis zu gelangen. Aus der alltäglichen Welt kennen wir dasetwa in Form von Montageanleitungen von Möbeln: “Schrauben Sie mit Inbusschlüssel A die acht Schrauben des Typs B in die Seitenwand C.” Man spricht von einer Anwendungsvorschrift.
In die IT übertragen und in der Komplexität zumeist wesentlich höher (abgesehen vom klassischen “Hello, world!”) sprechen wir von Programmen. Ein solches Programm kann ich nur in einer Sprache erstellen, die das zu lösende Problem beschreiben kann. Die Sprache spiegelt also auch die Struktur des Problems wieder.
Eine Analogie aus der Umgangssprache zeigt, wie sich die Sprache den vorhandenen Gegebenheiten anpasst: Das Volk der Inuit kennt, je nach zitierter Quelle, zwischen 10 und 100 verschiedene Begriffe für “Schnee”. Ihre alltägliche Umgebung und die Aufgaben und Schwierigkeiten, denen sie darin begegnen, sind elementar geprägt von Schnee, daher ist es erforderlich, exakte Begriffe dafür in ihrer Umgangssprache zu finden, um damit effizienter agieren zu können. Man kann also postulieren: Das Problem bedingt die Sprache.
Zu Anbeginn der elektronischen Datenverarbeitung war die Kommunikation mit den damals neuartigen Werkzeugen noch diffus, der Mensch als sogenannter Bediener (“operator”) passte sich zuerst an die Möglichkeiten der Maschinen an. Das Drücken von Tasten und Schaltern und Ablesen von Lämpchen diente als Abstraktion. Erst im Laufe der Entwicklung neuerer Technologien entwickelten sich auch die Sprachen weiter, nicht zuletzt auch deswegen, weil die Erfahrungen mit den ersten Rechnern auch neue Sichtweisen eröffnete, bzw. eben neue Begrifflichkeiten bedingte.
Die ersten höheren Programmiersprachen wurden Mitte der 1950er Jahre in den USA entwickelt, Urgesteine wie Fortran, Lisp und Cobol, deren Nachfolger bis heute existieren und reale Anwendungen finden. Die Langformen dieser Akronyme weisen auch auf die Problemfelder hin, für die diese sprachlichen Werkzeuge entworfen wurden: “FORmula TRANslator”, “LISt Processor”, “COmmon Business Oriented Language”.
Fortran fand seine vorrangige Verwendung in wissenschaftlichen und numerischen Berechnungen und ist eine der führenden Sprachen, wenn es um super-computing geht: Wetter- und Klima-Modelle, diverse Simulationen bis hin zur Simulation von Auto-Crashs.
Lisp dagegen war immer ein wichtiges Werkzeug für die Versuche rund um “künstliche Intelligenz”. Ein berühmtes Beispiel dafür stellt das Pogramm SHRDLU dar, das Anfang 1970 im MIT entwickelt wurde und dem Anwender erlaubte, in gängigen englischsprachigen Begriffen mit dem Programm zu interagieren. SHRDLU brachte eine Art von Verständnis für eine definierte Welt von Objekten mit: verschiedene einfache Objekte wie Kegel, Quader und Kugeln konnten per Befehl angeordnet werden und das Programm konnte diese Objekte in Kontext setzen und sogar so etwas wie Erfahrungen daraus ziehen. Ein weiteres Anwendungsfeld von Lisp ist der Einsatz als Skriptsprache in diversen Anwendungen, darunter AutoCAD und Emacs.
Cobol findet seine Anwendung vorrangig im betriebswirtschaftlichen Bereich. Hier geht es weniger um hochkomplexe Berechnungen als um das Handling grosser Datenmengen. Im Design von Cobol spiegelt sich die damals vorherrschende Verwendung von Lochkarten wieder, die 80-stelligen Programmzeilen erinnern an diese Ursprünge. In der Wirtschaftsinformatik gibt es bis heute viele historisch gewachsene Anwendungen, die auf Cobol basieren, eine Ablösung ist oft eher aus wirtschaftlichen denn als aus technischen Gründen schwierig.
In den 60er und 70er Jahren brach eine Zeit des Entdeckertums an. Militärs und Forschungseinrichtungen erkannten das Potential der neuen Technologie und fanden immer neue Anwendungsfelder für das Meta-Werkzeug Computer. Aus bestehenden Sprachen entstanden unzählige Ableger für unterschiedlichste Anwendungsbereiche. Parallel dazu wurde auch die Hardware rasant weiterentwickelt, schnellere und komplexere Rechner erlaubten den Einsatz komplexerer Software.
Ein bisschen Ironie schwingt mit, in diesem Kontext Basic anzuführen, “Beginner’s All-purpose Symbolic Instruction Code”, eine Sprache, die vorrangig dafür entwickelt wurde, den Studenten den Einstieg ins Programmieren mit Algol und Fortran leichter zu machen. Basic fand seinen Weg auf unzählige Homecomputer, seien es die Computer der Firma Commodore, oder später Rechner mit Betriebssystemen der Firma Microsoft (Visual Basic gibt es nach wie vor …), und nahezu jeder Computerbegeisterte erinnert sich an das hochkonzentrierte Abtippen von ellenlangen Programmen aus irgendwelchen Zeitschriften, um dann nach Stunden bernsteinfarbene Grafiken hervorzubringen … und wo sonst lernte man programmiertechnische Unsitten wie “GOTO” kennen?
Die definitiv ernsthaftere Entwicklung aus dieser Zeit ist die Sprache C. Hier wurde von Beginn an Augenmerk auf ein möglichst plattformunabhängiges Design gelegt, C ist eng verbunden mit den damals jungen Unix-artigen Betriebssystemen, kein Wunder, wenn man bedenkt, daß sowohl UNIX wie auch C von den Hacker-Ikonen Ken Thompson und Dennis Ritchie entwickelt wurden. Viele heute existierende Betriebssysteme sind in ihrem Kern in C programmiert, aber auch ein grosser Anteil der heute eingesetzten Software. Nicht zu vergessen ist auch die rasante Verbreitung von Open Source Software und dem eng damit verknüpften Betriebssystem Linux, hier spielt C eine zentrale Rolle. C ist nach wie vor die meistbenutzte Programmiersprache, und das nach 35 Jahren ihrer Existenz. (Und: Ja, es gab auch eine Sprache namens “B” ;) ).
Ein neues Konzept der späten 1960er war das objektorientierte Programmieren (OOP). Man begann, Klassen von Objekten zu definieren, die wiederum spezifische Attribute haben konnten, im Unterschied zu dem rein prozeduralen Ansatz der zuvor entworfenen Sprachen. Der erste Vertreter dieser Art war Simula-67, später nahm “Smalltalk” diese Konzepte auf und verfeinerte sie, heute findet man die objektorientierte Programmierung in “C++”, Java und Delphi. Die in den 80ern aufkommenden grafischen Benutzer-Interfaces begünstigten dies, da sie gut mit diesen Konzepten zu programmieren waren. Auch hier findet sich wieder, daß die Aufgabenstellung die Sprache bedingt.
Ein weiterer wichtiger Einfluss war das rasante Anwachsen des Internets. Mit der Einführung des World Wide Web wurde es zur vorrangigen Aufgabe, Sprachen zur Beschreibung der Darstellung von Inhalten zu entwerfen. Hier war es vor allem HTML, die “Hypertext Markup Language”, die ausschlaggebend für die Gestaltung des Internets war und ist. In ihrer Eigenschaft als sogenannte Auszeichnungssprache beschreibt sie Eigenschaften von Texten.
Der momentane Star der Auszeichnungssprachen ist XML, es bildet selbst wieder eine Übermenge für eine Vielzahl von spezialisierten XML-Sprachen wie Docbook, SVG, XHTML et cetera. Diese Sprachen finden zB. Anwendung beim Verfassen von Büchern und Dokumentationen, aber auch in der Verwaltung von Artikeldaten in Warensystemen, in geographischen Informationssystemen und Finanz-Software.
Der nahezu ubiquitäre Einsatz von Informationstechnologie in so gut wie allen Bereichen heutigen Lebens hat die Vielzahl der zu lösenden Problemstellungen im Vergleich zu den Anfängen der Computertechnik um mehrere Grössenordnungen anwachsen lassen. Waren es zu Beginn einige wenige beschränkte Anwendungsbereiche, sind es heute unzählige und ihre Anzahl wächst stetig weiter an. Die dafür verwendeten Programmiersprachen reflektieren diese Entwicklung in Anzahl und Komplexität.

Zum Anfang