Pure Pascal: Objekte auf dem ST

Der Trend in der modernen Softwareentwicklung geht verstärkt in Richtung objektorientierter Programmierung (OOP). Pure Pascal macht nun OOP auch auf dem Atari möglich.

Programmtext mit Übersicht der Units und Klassenhierarchie

Entwickelt wurde Pure Pascal (PP) bei der Münchner Firma Pure Software von Peter Sollich (Compiler) und Herbert Czymontek (Oberfläche, Editor). Mit PP sind zahlreiche spektakuläre Versprechen verbunden: Eine Programmiersprache mit objektorientierten Erweiterungen, vollständige Kompatibilität zu Turbo-Pascal 6.0 (TP), der beste Compiler für den Atari ST (mit Codeoptimierung und Fehleranalyse), eine leistungsfähige, komfortable Entwicklungsumgebung nach dem Stand der Technik (mit Editor, Debugger, Hilfesystem) und außerdem soll es für Einsteiger wie für professionelle Softwareentwickler gleichermaßen geeignet sein. Ein gewaltiger Anspruch!

Tatsächlich ist PP eine Sprache, die diesbezüglich ausnahmslos alle Eigenschaften von TP in kompatibler Form besitzt, namentlich Units, alle Standardfunktionen (mit wenigen sehr speziellen Ausnahmen) und die objektorientierten Erweiterungen der Version 5.516.0 von TP, alle Datentypen (ausgenommen comp, da dieser vom Gleitkommaprozessor 68881 nicht unterstützt wird), nicht jedoch die Overlay-Fähigkeit, auf die man wegen des großen linearen Adreßraums der ST-Computer wohl verzichten kann. Leider heißt das nicht, daß man ausnahmslos jedes TP-Programm von einem DOS-Computer nur im Quelltext auf den Atari zu bringen und dort neu zu kompilieren braucht, doch für die meisten Programme trifft dies zu. Grundsätzlich nicht portabel sind Programme mit In-line-Assembler-Teilen, und natürlich auch solche, die direkt von Hardwareeigenschaften eines DOS-Rechners abhängig sind. PP besitzt keinen In-line-Assembler, ein separater Assembler wird jedoch mitgeliefert. Darüber hinaus gibt es einige geringfügige Abweichungen, die daher rühren, daß die Entwickler von PP natürlich nicht die Vorzüge der CPU brachliegen lassen wollten (z. B. linearen Adreßraum von 16 MByte). So können auf einem PC Arrays oder andere Datenstrukturen nicht größer als (knapp) 64 KByte werden. Daher haben Funktionen, die Variablen erzeugen oder einlesen, wie Get-Mem oder BlockRead in TP Parameter vom Typ WORD, ausreichend, um den Umfang von 64 KByte großen Datenstrukturen auszudrücken. In PP darf aber zum Beispiel der Index eines Arrays den gigantischen Wert von MaxLonglnt (215 oder 2147 483 647) annehmen, mithin könnte ein Ar-ray 2 GByte (—1) groß werden. Ein Programm mit einer solchen Deklaration kann man zwar übersetzen, aber wohl auf keinem Computer laufen lassen. Man kann aber sagen: Pure Pascal läßt Sie nicht im Stich, wenn Sie Ihren ST maximal aufrüsten!

Folglich haben natürlich die entsprechenden Standardfunktionen bei den entsprechenden Parametern den Typ LONGINT statt WORD. Leider fehlt bisher eine Gegenüberstellung derartiger Abweichungen von TP sowohl im Handbuch als auch in den Help-Menüs. Der Hersteller hat aber Abhilfe versprochen. Natürlich kann PP auch für sich selbst stehen, und wer nur auf dem ST damit programmiert, den werden solche feinen Unterschiede zu TP kaum interessieren.

Da es mit einer leicht bedienbaren GEM-artigen Oberfläche inkl. Hilfefunktion und einem schnellen Compiler mit informationsreichen Fehlermeldungen ausgestattet ist, kann man es ohne weiteres dem Anfänger in die Hand geben. Es eignet sich ausgezeichnet als Werkzeug der ersten Wahl, um Pascal zu lernen für diejenigen, die bisher vorwiegend in Basic programmiert haben. Es bedeutet aber sicherlich auch eine ernstzunehmende Konkurrenz für die vorhandenen Modularsysteme auf dem Atari, und eine ebenbürtige Ergänzung für das C-System aus demselben Hause.

Da es über professionelle Debug- und Trace-Funktionen verfügt, und aufgrund der schon angedeuteten Sprachmerkmale, könnte es sich aber auch zum Programmiersystem der Wahl für professionelle Softwareentwickler mausern.

Schließlich aber bietet es sich vor allem für diejenigen an, die entweder an ihrem Arbeitsplatz einen DOS-Rechner haben und dort in Turbo-Pascal arbeiten, oder die eigene Softwareprodukte von DOS auf die ST-Linie portieren wollen.

Pure Pascal ist ein modularer Pascal-Dialekt. Das bedeutet, daß man große Programmprojekte damit planen kann, indem man sie in einzelne Module zerlegt. Das funktioniert ganz ähnlich wie in Modula 2. Eine Unit ist eine Compilationseinheit, die ähnlich wie ein Programm aussieht.

Fehlermeldungen und Warnungen des Compilers

Eine weitere Besonderheit von PP sind die schon erwähnten objektorientierten Erweiterungen: In der herkömmlichen Programmierung in Pascal werden Daten und Prozeduren getrennt formuliert. Man deklariert eine Variable und andernorts eine Prozedur. Im Programm wird dann der Prozedur die richtige Variable als Argument übergeben. Pascal überwacht zwar, ob der Typ der Variablen und des Parameters der Prozedur übereinstimmen, aber das ist auch alles. Ob die Daten wirklich zu dieser Prozedur gehören, ob das, was sie damit macht, angemessen ist, liegt in der Verantwortung des aufmerksamen Programmierers. Bei einem objektorientierten Ansatz werden Daten und Prozeduren als eine Einheit formuliert, die man ein Objekt nennt. Ein Objekt »weiß«, was seine Daten sind, und welche Operationen zulässig sind. Darüber hinaus kann man das Modell eines Objektes formulieren, das nur grundlegende Eigenschaften enthält. Dann läßt sich dieses Modell verfeinern: spezielle Eigenschaften hinzufügen oder vorhandene modifizieren.

Objektorientierung

Klassendefinitionen sehen ähnlich wie Record-Definitionen aus, statt mit dem Schlüsselwort RECORD werden sie mit OBJECT eingeleitet. Außer Datenfeldern enthalten sie auch Prozeduren (Methoden genannt). Die Klassendefinition selbst enthält nur die Köpfe der Methoden-Prozeduren, ähnlich wie der Interface-Abschnitt einer Unit. Soll eine Klasse von einer anderen abgeleitet werden, steht bei der Deklaration der Unterklasse nach OBJECT in Klammern der Name der Oberklasse, der an dieser Stelle im Programm also bekannt sein muß. Eine Unterklasse »erbt« alle Datenfelder von ihrer Oberklasse und kann neue hinzufügen. Ebenso werden alle Methoden der Oberklasse geerbt, können aber nach Bedarf modifiziert werden. Im jeweiligen Programmmodul sind zu den Methoden der Objekte deren Implementierungen anzugeben. Dabei schreibt man die Prozedurnamen in »qualifizierter Form«, also z. B. PROCEDURE SimpleRobot.Links-Drehen; BEGIN ... END. Anders als bei einer normalen Prozedur braucht man einer Methode die Daten des eigenen Objektes nicht als Parameter zu übergeben, da sie diese kennt und weiß, welches die Daten ihres Objektes sind, auch wenn es davon mehrere Exemplare gibt. Methodenparameter dienen also nur dazu, neue Datenwerte an das Objekt zu liefern oder von ihm zu empfangen.

Eine Reihe kleiner, aber feiner Turbo-Pascal-Programme haben wir auf die Probe gestellt, insbesondere solche, die objektorientierte Elemente enthielten. Alle OOP-Programme, die außerdem aus verschiedenen Units aufgebaut waren, liefen in PP auf dem ST einwandfrei (abgesehen von kleinen Problemen mit dem Bildschirm-Handling). Während des Testens stellte sich in einer Anzahl von Fällen heraus, daß die Sprachbeschreibung von TP in den Borland-Handbüchern stellenweise unklar, wenn nicht widersprüchlich ist.

Interessanterweise sind diese Stellen in der deutschen Übersetzung weniger eindeutig formuliert, so als hätte der Übersetzer bemerkt, daß der TP-Compiler die in den Originalhandbüchern beschriebene Syntax gelegentlich nur lax interpretiert. So läßt der Turbo Compiler eindeutig irrtümlich formulierte Programme zu. In diesen Fällen wurde PP korrigiert.

Die Standardfunktion TypeOf, mit der sich die Klasse eines Objektes (sofern es virtuelle Methoden besitzt) ermitteln läßt, darf laut Borland-Dokumentation nur auf Objekte angewandt werden, die virtuelle Methoden besitzen. TP erzeugt andernfalls zur Laufzeit eine Fehlermeldung, PP erkennt den Fehler bereits während der Übersetzung. Die Member-Funktion, die in TP fehlt, wurde in PP ebenfalls nicht implementiert, kann aber genauso wie in TP selbst programmiert werden [1].

Ohne die Turbo-Vision-Bibliotheken fehlen dem Programmierer einige recht interessante Hilfsmittel für die objektorientierte Programmierung wie Streams und Collections. Dies sind jedoch keine neuen Sprach-merkmale, sondern lediglich in Turbo-Pascal implementierte Datentypen. Man kann diese in der Praxis sehr interessanten Konstruktionen aber auch in Pure Pascal implementieren.

Die In-line-Assembler-Anweisungen gibt es nicht. Verwendet man Assemblerstatements in TP-Programmen, kann man nicht erwarten, daß so etwas dann »portabel« ist. Falls jemand den Wunsch hätte, solche Routinen in Assembler zu programmieren, kann er den mitgelieferten Pure-Assembler benutzen. Das ist oft aber nicht nötig, denn es gibt dazu XBios-Auf-rufe, die man in der Unit TOS findet. Übrigens funktionieren in den geprüften Programmen sogar die Soundeffekte des PC originalgetreu.

Selbstverständlich gibt es die Operationen Seg und Ofs, mit denen man in TP den Segment- bzw. Offset einer Pointeradresse erhält, nicht, ebenso Ptr, die Umkehrung, die aus Segment und Offset einen Pointer bildet.

Wie schon in [2] erläutert, überrascht PP mit einigen professionellen Merkmalen, die man beim »Vorbild« vergeblich sucht. Erstens übersetzt der Compiler ein Programm immer vollständig, auch wenn es mehrere Fehler enthält. Besonders bei Programmänderungen gibt es nicht selten ein Dutzend falsch geschriebene Variablen oder dergleichen. Das System öffnet nach dem Übersetzen ein Fenster mit »Messages« des Compilers, das eine Liste aller gefundenen Fehler sowie zusätzliche »Warnings« enthält. Sie bestehen aus einer Angabe von Datei und Textstelle sowie dem Klartext der Fehlermeldung. Man erhält damit einen Überblick über die Fehlersituation und kann die Textpositionen durch Anklicken der Einträge direkt anspringen. Das Fehlerfenster läßt sich jederzeit wieder in den Vordergrund bringen. Dies erlaubt wesentlich zügigeres Arbeiten als in TP, denn trotz der legendären Geschwindigkeit des Compilers, dauert es bei komplexen Projekten doch immer eine gewisse Zeit, bis der nächste Fehler gefunden wird, da TP zumindest die aktuelle Unit immer wieder von vorn zu kompilieren beginnt. Übrigens steht ihm der PP-Com-piler an Geschwindigkeit in nichts nach. Zudem kann man per Help-Taste eine ausführliche Erläuterung der Fehlermeldung mit einem Beispiel, bei dem sie auftritt, und einem Hinweis auf die Beseitigung des Fehlers bekommen.

PP erzeugt außer Meldungen für Fehler, die das Programm unübersetzbar machen, noch Warnungen. Diese kann man ignorieren und das Programm trotzdem ausführen, es lohnt sich aber, sich die betreffenden Programmstellen genauer anzusehen. In der Regel wird man bei vielen in TP fehlerfrei kompilierbaren Programmen solche Warnungen erhalten.

Das häufigste Beispiel ist sicherlich eine Variable, der ein Wert zugewiesen wird, die aber nie wieder benutzt wird. Typischerweise tritt das auf, wenn man eine Funktion aufruft, deren Resultat nicht weiter interessiert, für die man aber eigens eine Dummy-Variable deklariert hat. Wie in TP auch kann man in PP mit der Compiler-Anweisung $X- erreichen, daß eine Funktion wie eine Prozedur aufgerufen wird, so daß die Variable für das »Auffangen« des Funktionsresultates wegfallen kann (dem Pascal-Puristen dreht sich dabei freilich der Magen um). Eine andere Warnung bezieht sich auf die Verwendung von Variablen, die möglicherweise vorher nicht initialisiert worden sind (ein häufiger und — besonders bei Pointern — sehr tückischer Programmfehler). Damit leistet der Compiler bereits ein gutes Stück Programmanalyse über das bloße Auswerfen von Syntaxfehlern hinaus.

Übersetzt man ein Programm, das Klassen deklariert, erhält man in dem Menüpunkt View/Object hierarchy ein Fenster, das, durch entsprechende Einrückungen kenntlich gemacht, die Abstammungsverhältnisse der Klassen darstellt. Klickt man eine der Klassen an, öffnet sich ein »Inspektions«-Fenster, das im Titel den Namen der Klasse trägt. In der ersten Zeile steht der Vorfahre der Klasse (Ancestor), also die Oberklasse, von der sie abgeleitet wurde, gefolgt von Name und Typ aller Variablen und Methoden der Klasse. Klickt man auf das Feld Ancestor, öffnet sich ein weiteres Inspektionsfenster, das die Oberklasse darstellt. Falls die Variablen (Felder) des Objektes selbst Strukturen sind (Records, Arrays), so lohnt es sich, auch diese anzuklicken, da man dann ein weiteres Fenster mit einer Aufschlüsselung der einzelnen Komponenten erhält.

Die Installation des Programmiersystems ist denkbar einfach. Man kopiert einfach alle Dateien der drei Disketten in ein Verzeichnis auf der Festplatte und startet die Datei PPASCAL. Persönliche Anpassungen werden anschließend in der Shell vorgenommen und normalerweise automatisch beim Verlassen des Systems gespeichert.

Nach dem Start erscheint eine GEM-ähnliche Umgebung, die jedoch kein GEM ist. Sie vereint in einem durchdachten Konzept verschiedene Systemprogramme wie Editor, Compiler, Debugger und Inspektoren.

Insgesamt präsentiert sie sich recht einheitlich, der Benutzer hat es mit einigen Arten von Fenstern zu tun, weniger mit voneinander isolierten Programmen. OOP also auch in der Oberfläche!

Ausführliches elektronisches Handbuch

Die, wie unter GEM üblich, einzige Menüleiste ist »generisch«, das heißt die möglichen Menüauswahlen und teilweise sogar deren Texte ändern sich je nach der Art des Fensters, das gerade aktiv ist. Pure setzt so konsequent auf Dateifenster, daß es nicht einmal einen File-Selektor gibt — stattdessen klickt man auf die Dateinamen in einem Dateifenster, wenn man etwas mit einer Datei anstellen möchte. Das geht so weit, daß man einen Dateinamen, der z. B. ein Programm darstellt, aus dem Dateifenster auf die graue Fläche des Desktop ziehen kann, wo es sich dann in ein Icon verwandelt. Macht man das mit einem externen Editor, so funktioniert leider die Kommunikation bisher nur in einer Richtung korrekt: Ändert man etwas im PP-Textfenster und zieht dann — ohne es explizit zu sichern oder zu schließen — wieder den Dateinamen aus dem Dateifenster auf den Editor, erscheinen die im Textfenster gemachten Änderungen in der geladenen Textdatei. Das Umgekehrte funktioniert nicht — man muß das PP-Textfenster schließen und erneut öffnen, damit es den aktuellen Inhalt annimmt. Übrigens kann man auch Textfenster in ein Icon verwandeln, indem man den Befehl Iconize im File-Menü anklickt. Der bewirkt nur scheinbar zunächst nichts, denn in der Regel wird das Icon unter dem es verdeckenden Textfenster oder den Dateifenstern angelegt, das Textfenster muß man allerdings noch von Hand schließen.

Ein feines Feature des PP-Editors ist der Einrückbefehl, mit dem man einen markierten Block als ganzes nach rechts oder links ein-bzw. ausrücken kann — eine in TP schmerzlich vermißte Operation, wenn man z. B. einmal ein WITH oder eine Schleife um vorhandene Anweisungen hinzufügt oder entfernt. Im übrigen besitzt der Editor alles, was man braucht, mit Ausnahme von Textmarken — es gibt lediglich ein Goto line, das, zusammen mit den Funktionen Suchen und Ersetzen, in einem eigenen Search-Menü zu finden ist. Die Suchfunktionen sind durch regular expressions sehr leistungsfähig, allerdings ist die Syntax anders und vielfältiger als man sie von Dateinamen gewohnt ist, so daß man erst einmal den betreffenden Abschnitt im Handbuch genau studieren muß. Beispielsweise kann man mit ~$[0-9a-fA-F] + lt. Handbuch alle Hexadezimalzahlen finden, die an einem Zeilenanfang stehen.

Sehr komfortabel

Sehr angenehm: Die PP-Oberfläche läßt das Öffnen von anscheinend beliebig vielen Fenstern zu. Der einzige Nachteil: Man verliert rasch den Überblick über die verdeckten Fenster und macht auch leicht mehrfach Laufwerksfenster auf, ohne es zu wollen. Klickt man in einem Dateifenster auf einen Dateinamen, für den es schon ein geöffnetes Fenster gibt, wird dieses lediglich an die Oberfläche gebracht. Da geöffnete Textfenster als Dateien gelten, findet man einen Befehl »Cycle window« im File-Menü, damit kann man dann das »nächste« Fenster in den Vordergrund bringen. Da dies aber selten gleich das gewünschte ist, bringt man damit nur die »Ablage« der Fenster durcheinander.

Die Menüs Compile und Run dienen der Projektverwaltung. Durch Setzen eines »Primary file« definiert man das Hauptprogramm — ist kein primary file angegeben, wird immer nur das aktuelle Textfenster kompiliert, sonst bezieht sich der Befehl Compile auf das aktuelle Textfenster und Make auf das primary file. Spielt man allerdings eine Weile damit herum, daß man abwechselnd einzelne Units verändert, diese kompiliert und dann versucht, das ganze Programm per RUN auszuführen, kommt es gelegentlich zu Abstürzen bzw. Hängern.

Im Run-Menü kann man ein Programm normal starten oder mit »Step over« zeilenweise ausführen, wobei Prozeduraufrufe ohne Stop ausgeführt oder mit »Trace into« schrittweise abgearbeitet werden. Mit »until return« kann man eine Prozedur bis zu ihrem Ende laufen lassen.

Mit dem Befehl Debug im Compile-Menü läßt sich ein Programm unter Kontrolle des Debuggers ausführen, wobei man in verschiedenen Fenstern die Variablen der aktuellen Umgebung, bestimmte vorgegebene Variable und den Prozedur-Stack beobachten kann. Ein Pfeil zeigt dabei im Quelltextfenster die aktuelle Programmstelle an.

Im View-Menü öffnet man die gewünschten Überwachungsfenster, schaltet wahlweise auf das Ausgabefenster des Programms, läßt sich alle von dem Programm verwendeten Units oder die bereits erwähnte Hierarchie der Objekte anzeigen. Unter anderen kann man auch ein Breakpoint-Fenster öffnen.

Im Options-Menü läßt sich die Commandline eines Programms im Debugger setzen sowie allerlei Parameter für das aktuelle Fenster, die Oberfläche, den Editor, Directory-Pfade sowie Compiler-Schalter und Voreinstellungen für den Debugger machen.

Ein besonderer Glanzpunkt ist das Help-System. Zum Beispiel kann man eine Anweisung wie ClrScr im Programmtext markieren und dann die Help-Taste drücken oder im Help-Menü den Eintrag Help wählen. Dann erhält man eine ausführliche Erklärung der Prozedur ClrScr mit einem Beispiel, das ausweist, daß die Prozedur in der Unit Crt vorhanden ist. Zu allen Standardfunktionen sowie Schlüsselwörtern der Sprache wie NEW oder BEGIN kann man sich so orientieren. Bei eigenen Bezeichnern gibt es freilich nur den Hinweis »Help keyword not found«. Je nach Programmsituation kann man aber unter dem Debugger die Namen von Variablen, Prozeduren etc. mit dem Inspect-Befehl eingeben und erfahren, was das System darüber weiß.

Das Help-Menü besitzt die Einträge Menu, Shell, Debugger, Pascal und Units. Menu zeigt ausführlicher die möglichen Themen Pascal, File, Edit, Search, Compile, Run, View, Options und Help. Dahinter verbirgt sich nichts Geringeres als ein »elektronisches Handbuch« des Systems und der Sprache. Unter Options erhält man etwa die Auswahl der verschiedenen Menüeinträge. Klickt man einen davon an, erscheint ein Textfenster mit einer ausführlichen Erklärung des Menüpunktes.

Am faszinierendsten ist der Eintrag Pascal, der zunächst auf eine Untergliederung führt: Sprachelemente, Konstantendeklarationen, Typdeklarationen, Variablendeklarationen, Ausdrücke, Anweisungen, Prozedurdeklarationen, Programme, Compiler-Direktiven und Pure Pascal intern. Klickt man auf Typdeklarationen, erscheint ein Textfenster mit einer kurzen grundsätzlichen Erklärung sowie einer Auflistung der Standardtypen einschließlich der benutzerdefinierten Typen, Aufzählungstypen, Unterbereichstypen und der Strukturen Array, String, Record, Objekt, Set (Menge), Datei, Zeiger und Prozedurtypen. Wann immer in einem Fenster Begriffe wie diese fett und unterstrichen dargestellt sind, kann man sie anklicken und erhält sogleich ein neues Fenster mit dem entsprechenden Untergebiet. Auch Querverweise auf verwandte Themen sind häufig. Mit der Undo-Taste kehrt man zum vorherigen Fenster zurück.

Als die Runde der Beta-Tester mit dem Ende des Testverfahrens zum erstenmal ein Handbuch zu dem System erhielt, war die Enttäuschung groß. Mängel sind vor allem im Bereich der Sprach-beschreibung vorhanden. Das Handbuch wurde nicht von den Softwareentwicklern geschrieben — was normalerweise auch nicht empfehlenswert ist—, sondern offenbar von Amateuren, die sich vor allem eines blumigen, von Stilblüten und läppischen Witzchen strotzenden Stiles befleißigten. Das Handbuch enthält keine systematische Sprachbeschrei-bung und keine Beschreibung der Syntax. Beispielsweise sucht man im Index Begriffe wie »reservierte Wörter« oder »(Standard-) Bezeichner« vergeblich, auch die Definition von Cha-racter-Konstanten durch Hexzahlen blieb im Dunkeln. Wie schon angedeutet, findet man alle diese Informationen im Help-System, die Standard-Bezeichner beispielsweise unter der Unit SYSTEM.

Es gibt also keine Zusammenstellung reservierter Wörter oder Schlüsselwörter, auch keine Referenz der Standardfunktionen und der Bibliotheksroutinen: es mangelt an Beispielen, Angaben über zulässige Argumenttypen und den Typ des Resultats. Im Help-System sind diese glücklicherweise ausführlich erklärt. Block-read und Blockwrite werden zwar in einem Abschnitt über untypisierte Dateien erwähnt, aber nicht erklärt und es gibt kein Beispiel, nicht einmal eine Angabe der notwendigen Parameter (im Help-System unter 10-Routinen ausführlich erklärt).

Nun findet man zwar über die Help-Funktion des Sprachsystems selbst die vermißten Beschreibungen, aber ein halbwegs brauchbares Handbuch kann es nicht ersetzen. Es ist auch nicht gelungen, über die Help-Funktion zu erfahren, wie man Character-Konstante über Hexzahlen definiert oder daß es typlose Prozedurparameter gibt und was diese bedeuten. Schließlich lernt man eine Programmiersprache nicht gerade am besten durch Versuch und Irrtum, und ein Blättern, Nachlesen und Überdenken in einer ruhigen Stunde.

Damit der Neuling nicht stundenlang vor dem Bildschirm sitzen muß, sollte er sich die Originalhandbücher von Borlands Turbo-Pascal verschaffen. Denn dort ist dies alles in — meistens — vorbildlicher Qualität vorhanden.

Dies ist um so trauriger, als es dem willigen Käufer, der im Laden das Handbuch durchblättert, zwangsläufig den Eindruck vermittelt, dieses Pascalsystem sei nicht besonders professionell. Zum Glück können wir dem Leser das Gegenteil versichern — Handbuch und Sprachsystem selbst stammen aus verschiedenen Quellen.

Die Hilfefunktion ist umfassend

Vorbildlich dagegen die Auflistung aller Compiler-und Laufzeitfehlermeldungen mit einer gut verständlichen, ausführlichen Erklärung jeder Fehlermeldung. Ganz nützlich auch die Zusammenstellung der Bibliotheken mit einer kurzen Erläuterung der darin enthaltenen Prozeduren und Funktionen.

Handbuch

Der mitgelieferte Pure Assembler wird leider nur sehr knapp in einem Anhang des Handbuchs berücksichtigt.

Sicherlich darf man nicht das Handbuch der Version 1.0 mit der halben Buchhandlung der Borland-Bücher zu Turbo 6.0 vergleichen! Dahinter steckt jahrelange Pflege (die trotzdem, wie erwähnt, noch Unklarheiten zurückgelassen hat), so etwas kann man nicht für ein neues Softwareprodukt in wenigen Monaten aus dem Boden stampfen.

Insgesamt macht das System einen sehr gediegenen Eindruck. Zwar ist bei unserem Test das Programm einmal kontrolliert abgestürzt, aber überwiegend arbeitet es recht zuverlässig. Da es sich um ein sehr komplexes System handelt, wird es sicher noch eine gewisse Nachreife benötigen, bis die letzten Ecken und Kanten verschwunden sind.

Die Oberfläche ist durchdacht und nach einer gewissen Eingewöhnung gut zu benutzen. Sie macht — trotz einiger origineller Eigenheiten — einen professionellen Eindruck. Häufig ist eine geschickte Kombination von Minimalismus und Vielseitigkeit zu beobachten (z. B. die Funktionalität der Dateifenster statt eines Datei-Browsers bzw. Fileselektors). Stellenweise ist der Reifegrad noch etwas uneinheitlich (z. B. keine Merkpunkte im Editor, dafür aber hochkomplexe Suchfunktion), doch wird sich das wahrscheinlich in künftigen Releases noch ausgleichen.

Den Compiler, an dem Peter Sollich nach eigenen Angaben etwas über zwei Jahre gearbeitet hat, möchten wir ohne Umschweife als Geniestreich bezeichnen, der, gemessen an seiner Qualität, für die ST-Welt eine ähnliche Rolle spielen könnte wir Borlands Turbo-Pascal für die MS-DOS-Umgebung. Wenn man bedenkt, daß hinter Turbo-Pascal in der Version 6.0 also zehn Jahre Entwicklungszeit stehen, und PP in etwas mehr als einem Fünftel dieser Zeit von Sprachumfang und Komfort der Entwicklungsumgebung mindestens gleichgezogen hat (das Handbuch ausgenommen), so kann man nur staunen.

[1] Johannes Leckebusch: DOSOOPer, 3. Folge in der DOS International 11/91, »Sag mir, wer Du bist« — Implementierung der Funktion »istUnterklasseVon«.

[2] Pures Vergnügen, ST-Magazin 6/92, S. 32 In der Maus, Mailbox-Netzsystem, gibt es eine Gruppe Pure Pascal speziell zum Informationsaustausch über PP. Programme können in der Maus TÖL (Bad Tölz) im Gruppenprogrammteil zu Pure Pascal downgeladen werden (für die korrekte Anzeige ist das Laden eines IBM-Fonts notwendig)..

Pure Pascal, Application Systems Heidelberg, Postfach 102646, 6900 Heidelberg, 398 Mark


Johannes Leckebusch
Aus: ST-Magazin 10 / 1992, Seite 42

Links

Copyright-Bestimmungen: siehe Über diese Seite