Heilloses Durcheinander auf den höheren Ebenen:

Smalltalk kennt nur den Anwenderdialog

25.02.1983

Ankündigungen wie Lisa von Apple etwa suggerieren, daß hier ein neuer Stil der Software (benutzerfreundliche Fenster, Menü) wie auch der Hardware (Bitmap-Grafik, Maus-Bedienung) praktiziert wird. Nach Ansicht von Christopher J. Macie*, Autor des folgenden Beitrages, sind die wesentlichen Fähigkeiten dieser Produkte weitgehend und bewußt von dem Xerox-Smalltalk-System übernommen worden. Apple beispielsweise beschäftigte mittlerweile sogar einen Teil der Xerox-Entwicklungsmannschaft.

Ein neuer Grad der Benutzerfreundlichkeit wird zur Zeit in mehreren Software-Produkten und Hardware-/Software-Systemen angeboten. Doch Fenster-, Maus- und Menüorientierte Technik und objektorientierter Anwendungsaufbau sind in der Tat schon seit mehr als zehn Jahren vorhanden. In integrierter Form wurden sie im Smalltalk-System verwirklicht, das auch weitergehende Möglichkeiten sowohl für Programmierer als auch für die Anwender bietet.

In Zusammenhang mit der Erfindung von "Personal"-Rechnern und lokalen Netzen wurde in den Forschungslaboratorien von Xerox schon seit Anfang der siebziger Jahre das Smalltalk-System entwickelt.

Das Smalltalk-Konzept ist wahrscheinlich revolutionären als die, neue Hardware. Während die Methoden des Software-Design und die Organisation der Software-Herstellung sich ständig weiterentwickelt haben, stammen die fundamentalen Werkzeuge wie Sprachen und Betriebssysteme nach wie vor aus der Zeit der vorletzten Hardware-Generation, im Wesentlichen also aus den sechziger Jahren.

Traumvorstellung rückt näher

Smalltalk verwaltet alle Ressourcen des Rechners auf einer einheitlichen und dazu mensch-orientierten Ebene. In den bisherigen Softwaresystemen bilden Maschinen-Codes die einzige einheitliche Basis. Auf den höheren Ebenen wie Betriebssystemen, Sprachen, Textsystemen, Datenbanksystemen oder Dienstprogrammen herrscht ein heilloses

Durcheinander.

Ausgangspunkt für die Entwicklung bei Xerox war die Überlegung, die ideale Programmierung und Bedienung des -Rechners für den Menschen zu finden, wenn es große Rechnerleistungen und Speicherkapazitäten gäbe. Hierbei sollten nicht nur die Informatiker und Elektroniker, sondern auch Pädagogen, Psychologen, Philosophen, Künstler, Sekretärinnen und nicht zuletzt auch Kinder zu Wort kommen.

Smalltalk wurde als Versuchssystem erstmalig 1972 implementiert, mehrmals überarbeitet und als Version Smalltalk-80 Mitte 1981 erneut vorgestellt. Was damals einmal als Traumvorstellung von Rechnerleistung und Speicherkapazität erschien, rückt jetzt durch die neue Computergeneration in greifbare Nähe.

Alle Elemente sind Objekte

Smalltalk umfaßt eine vollintegrierte Umwelt. Teile davon (Betriebssystem, Benutzer-Interface, interaktive Kompiler und Debugger, generalisierter Editor, Dateiverwaltung und sämtliche Dienstfunktionen) sind alle in Smalltalk selbst geschrieben. Außerdem kennt das System nur einen einheitlichen und äußerst einfachen Modus: den Anwenderdialog, sowohl für den Software-Hersteller als auch für den Endbenutzer.

Technisch betrachtet wird die Sprache in einzelnen Bausteinen interaktiv kompiliert und in einen Zwischencode - ähnlich dem P-Code bei Pascal - übergeführt. Grundlage der Sprache bildet eine virtuelle Maschine, die im Maschinencode (104 KB) geschrieben ist. Die Sprache und die Umwelt, das virtuelle Image, umfassen im Grundsystem etwa 300 KB.

Smalltalk hat in erster Linie nichts mit Daten und Prozeduren, sondern mit "Objekten" zu tun. Alle Elemente der Programmierungs- und Anwendungs-Umwelt sind Objekte. Jedes Objekt enthält bestimmte Daten und gehorcht bestimmten Methoden und Vorschriften. Die Daten selbst sind nur durch das Objekt zugängig, und zwar mittels Botschaften, die an das Objekt gerichtet werden. Diese Botschaften werden von den zugehörigen Methoden interpretiert.

Durch Verschachtelung beliebige Strukturen

Jedes Objekt gehört einer Klasse an, die ein progammierbares Verhaltensmuster der Objekte sowie die Struktur der Objekte beschreibt. Einerseits werden die Daten der Objekte, andererseits die erlaubten Botschaften und Methoden spezifiziert. Die Codierung der Methoden erfolgt wiederum in Form von Botschaften an die Objekte und Klassen. Selbst die Operatoren (+, -, *, /) sind Botschaftsformen.

Die in den Objekten gespeicherten Datenelemente sind selbst wieder Objekte. Durch diese Verschachtelung lassen sich beliebige Strukturen aufbauen, wobei Klassen auch als Unterklassen anderer Klassen gebildet werden können und grundsätzlich rekursiv sind. Smalltalk bietet eine saubere und umfassende Lösung von Problemen der Datenabstraktion und der Strukturierung an.

Wie die Objekte untereinander, so kommuniziert auch der Mensch mit dem System mittels Botschaften. Der Mensch (Programmierer oder Anwender) braucht nicht die Botschaft im Kopf zu behalten und auch nicht zu tippen: er selektiert Kommandos aus den gezeigten Menütafeln und greift Daten aus den vorgelegten Datenfenstern ab. Das Zeigen und Selektieren erfolgt über ein graphisches Eingabegerät - "Maus" genannt. Die Tastatur wird lediglich für Eingabe von Texten und Zahlen benötigt.

Auf dem Bildschirm lassen sich mehrere Fenster gleichzeitig, überlappend und frei positionierbar darstellen. In den verschiedenen Fenster können verschiedene Prozesse auch parallel aktiv sein. Um von einer Aufgabe (Prozeß) zur anderen zu wechseln, zeigt man einfach in das gewünschte Fenster.

Offen für Anpassungen

Als Betriebssystem ist Smalltalk grundsätzlich mit Multi-Tasking ausgestattet. Für den Programmier ist die Sprache selbst verwendbar und erweiterbar. Smalltalk ist eine der wenigen Sprachen, bei der Steuerungsstrukturen wie For/Next, While, Until, Case nach eigenem Ermessen programmiert werden können. Das System ist also offen für individuelle Anpassungen, da es ja selbst in Smalltalk geschrieben ist.

Das ganze System, inklusiv der Anwenderprogramme, bewegt sich auf der Ebene der menschlichen Begriffswelt: Objekte, Klassen, Botschaften und Verhältnisse. Dieser Aspekt hat besondere Konsequenzen. Zwischen der Organisation und der Programmstruktur muß nicht die übliche Übersetzung von der menschlichen in die Maschinenlogik durchgeführt werden. In der Sprache baut man direkt ein Modell des Problems.

Für die Wartung und Erweiterung von Software-Systemen bietet Smalltalk entscheidende Vorteile: Es kommt seltener vor, daß relativ kleine organisatorische Änderungen zu einer riesigen Umprogrammierung führen; das Problem einer hinreichenden Dokumentation wird durch die problemnahe Formulierung erheblich reduziert und die Codierung wesentlich verkürzt.

*Christopher J. Macie, Software Systems, Mettmann