Delite und ergo! - Programmerstellung ergonomisch

Trotz einer kurzzeitigen Unsicherheit über die Zukunft von GFA-BASIC, hat diese Programmiersprache immer noch eine große Anhängerschaft, wie die Nachfrage heim neuen Entwicklerteam der Fa. Richter (wir berichteten) auf der ATARI-Messe 1992 und in den Mailboxen zeigt. Grund genug einmal zwei Werkzeuge zur Unterstützung des von GFA nicht gerade verwöhnten Programmierers vorzustellen.

Im Programmpaket des GFA-BASICs befindet sich eine Shell mit Namen MENUX. Dieses Programm ist recht einfach gehalten und, obwohl funktionsfähig, doch nur als Provisorium gedacht. Im beiliegenden Text verweist GFA auch darauf, daß man den Sourcecode von MENUX als Anregung sehen soll für komfortablere Entwicklungsumgebungen.

DELITE

In äußerlich schlichter Form kommt der erste Proband daher: DELITE ist im Rahmen der MAXON-Sonderdiskserie (SD84) als Vollversion für 30,- DM erhältlich. So muß man auf ein gedrucktes Handbuch verzichten, es liegt als ASCII- und als 1st-Word-Datei dem Programm bei. Die Bedienung von DELITE ist jedoch kinderleicht und sehr intuitiv, so daß ein einmaliges Lesen der Dokumentation reichen sollte. Für diesen Test stand die Version 1.15 vom 2.7.1992 zur Verfügung.

Und es geht doch

Gemeint ist die saubere GEM-Programmierung unter GFA-BASIC. Obwohl selbst (natürlich) in GFA-BASIC geschrieben, zeichnet sich DELITE durch saubere Programmierung aus. Das ich selbst ebenfalls Anhänger einer solchen Programmierweise bin, will ich nicht verhehlen. Da kann man nur hoffen, daß die Programmierer die DELITE benutzen, sich davon anstecken lassen.

Doch was bewirkt diese Art der Programmierung in diesem Fall und wie sieht sie aus? Zuerst einmal ist DELITE (fast) unabhängig von der verwendeten Auflösung. ,Fast‘ bedeutet, daß DELITE eine Bildschirmbreite von mindestens 640 Pixeln braucht. Es läuft damit in den mittleren und den hohen ST- und TT-Auflösungen sowie auf beliebigen Grafikkarten mit GEM-Treiber. Wenn der Autor die zum Teil bildschirmfüllenden Dialoge aufteilen oder in großen veränderbare Fenster legen würde, wäre das Programm auch in der niedrigen ST- und TT-Auflösung zu verwenden. Momentan liegen die Dialoge ,nur‘ in starren Fenstern, was immerhin eine freies Bewegen der Dialoge zuläßt.

Die für die Programmentwicklung benötigten Dateien lassen sich auf den Desktop von DEUTE legen. Damit läßt sich das Programm wirklich intuitiv, da analog zum GEM-Desktop, bedienen. Macht man einen Doppelklick auf ein GFA-Icon, so wird der Interpreter gestartet und diese Source-Datei automatisch geladen. Gleiches gilt für die RSC-Icons und einem Resource Construction Set. Für Daten-Icons läßt sich ein Programm definieren, das bei Doppelklick den Inhalt dieser Datei anzeigt. Aber auch andere Hilfsmittel lassen sich auf dem Desktop plazieren. So habe ich mir einmal ein Programm geschrieben um den BASIC-Header einer mit INTERFACE erzeugten Resource-Datei zu erweitern und in eine eingeklappte Prozedur zu verwandeln. Um dieses Tool nun einzubinden, wird es einfach als Icon auf dem Desktop abgelegt. Nach dem Verändern der RSC-Datei zieht man dann einfach das Icon der von INTERFACE erzeugten LST-Datei auf dass Tool-Icon, und der Rest geht automatisch. So sind hierbei der eigenen Kreativität keine Grenzen gesetzt.

Verschiedene Projekte verwaltet DELITE ebenfalls über sein Desktop. Dabei existiert eine Standardeinstellung für den Compiler, den Linker und das Environment. Wird nun ein GFA-Icon an- oder ausgewählt, kann der Programmierer für jedes Programm einzeln eine Einstellung angeben. Im einzelnen sind das:

Die volle Pracht von DELITE

Nobody is perfect

Gut gemeint, aber leider fatal

Sollte DELITE denn wirklich eines der wenigen perfekten und fehlerfreien Programme sein, die es gibt? Nein, das ist es nicht, aber schon beeindruckend nahe dran. Neben der schon erwähnten Unfähigkeit, in den niedrigen Auflösungen zu laufen (die Programmierer von Shells jeder Art sollten sich klar darüber sein, daß ein Benutzer des Hauptprogrammes dieses eventuell voll ausnutzt und nachträgliche, von der Shell kommende Begrenzungen dem Sinn einer Shell zuwiderlaufen), habe ich im Prinzip nur einen, wenn auch sehr ärgerlichen Fehler gefunden: Accessories haben die Eigenschaft, bei Speicheranforderungen keinen eigenen Speicher zu bekommen, sondern von dem des momentan laufenden Programms. Hat ein Accessory Speicher angefordert und das Programm wird bei aktiviertem Accessory verlassen, merkt es unter Umständen nicht, daß der verwendete Speicherbereich nicht mehr zur Verfügung steht. Ein Absturz ist eher früher als später zu erwarten. Nun ist dieses Verhalten von ATARI allerdings dokumentiert und bei entsprechender Programmierung auch nicht weiter tragisch. Scheinbar hat der Autor von DELITE allerdings einige Problemfälle in seiner Sammlung. Ist ein Accessory nämlich geöffnet, kann man DELITE nicht beenden. Man wird aufgefordert erst das Accessory zu schließen. Hat man das getan, kann man DELITE verlassen. Doch wie erkennt DELITE dies? Es schaut einfach nach, ob ein Fenster offen ist, oder nicht. Abgesehen davon, daß DELITE sich darum gar nicht zu kümmern hat, bewirkt dieses einen fatalen Nebeneffekt. Die zwangsläufigen Probleme in einer Multitasking-Umgebung sind dabei zu ignorieren, da GFA-BASIC selbst seine Probleme damit hat und nur als Singletask funktioniert. Programmiert man allerdings selbst mit Fenstern (was zu hoffen ist) und stürzt das Programm bei der Entwicklung einmal ab, wobei es egal ist, ob im Interpreter oder im Compilat, kann man DELITE ebenfalls nicht mehr verlassen, wenn das Programm ein Fenster auf dem Bildschirm hinterlassen hat. Da hilft dann nur noch der Griff zum Reset!

Eine Hilfefunktion in dem Programm wird eigentlich nicht gebraucht, nur bei den Compiler-Einstellungen wäre ein längerer Text wünschenswert. Die Kurzbeschreibung ersetzt dort oft nicht das Blättern im Handbuch. Ansonsten sei nur anzumerken, daß die Tastenbelegung von MENUX leider nur beim Compilieren und beim Linken identisch ist.

Fazit

DELITE ist ein beeindruckendes Stück Software. Darüber sollte man sich auch nicht durch wenige Schwächen und einen Fehler (der zudem leicht zu beseitigen ist) täuschen lassen. Die 60 KB Programm bei 180 KB Verbrauch hat der Programmierer sehr sinnvoll genutzt. Ohne den geringsten Zweifel eines der sinnvollsten und beeindruckendsten Tools für GFA-BASIC, die ich in meiner langen Zeit als GFA-BASIC Programmierer (seit Version 1) gesehen habe. Da auch der Preis als fair zu bezeichnen ist, kann ich jedem GFA-Programmierer nur zum Erwerb raten.

Cogito ERGO! sum

Geballte Ladung: GFA-BASIC typische Schlichtheit

Von Columbus Soft kommt der nächste Kandidat: ergo!. Und natürlich ist das Programmsymbol das berühmte Ei des Selbigen. Nicht zuletzt ist 1992 auch das Kolumbus-Jahr! ergo! ist mit 148,- DM ein ungleich teureres Produkt, wenngleich damit nicht teuer, und schon gar nicht zu teuer. Getestet wurde die Version 1.4 vom August 1992. ergo! ist ebenfalls in GFA-BASIC programmiert und (leider) ein klassischer Vertreter der GFA-Programmierschule, d.h. die meisten Einschränkungen die man von der Mehrzahl der GFA-Programme her kennt (und von GEM-Programmen eben nicht) treffen hier zu. Insbesondere das ergo! auch nicht mal im Ansatz mit MultiTOS läuft und nur die gebräuchlichsten Programmierauflösungen ST-Hoch, TT-Mittel und monochrome Großbildschirme unterstützt, wäre böse Schelte wert. Da aber das GFA-BASIC, ohne das ergo! ja auch keinen Sinn macht, ebenfalls nur unter diesen Voraussetzungen funktioniert, seien diese Einwände auch gleich verworfen. Bis zum Erscheinen einer neuen BASIC-Version werden sicherlich noch ein paar Monate vergehen. Es gibt aber auch einen Bereich, wo die unbeschwerte 'echte' GFA-Programmierung in der Tat eine Einschränkung darstellt: Die Speicherverwaltung. Weder läßt sich ergo! in das wesentlich schnellere und größere TT-RAM laden, noch akzeptiert es TT-RAM für den MALLOC-Befehl. Damit bin ich bei meinem System (TT mit 2 MB ST-RAM und 4 MB TT-RAM) in Verbindung mit meinem aktuellen Projekt (GFA-Datei mit 200 KB in 6500 Zeilen) in Teilbereichen schon an der Grenze des Möglichen. Läßt man jedoch die sehr umfangreichen Hilfstexte und das elektronische GFA-Handbuch weg, hat man wieder deutlich mehr Platz. 1 MB Ausstattung muß es aber schon sein, 2 MB ist sehr empfehlenswert. Last but not least, die Verwendung des GFA-Befehls RESERVE sollte auf dem TT vermieden werden!

To Be or Not to Be

Schon Shakespeare muß von ergo! gewußt haben, denn eines ist ergo! gewiß nicht, nämlich eine Shell. Zwar hat ergo! auch die Funktionen einer Shell, aber das Programm als solche zu bezeichnen, hieße dem Programmierer furchtbar Unrecht zu tun. ergo! kann mehr, und zwar weit mehr! Vielmehr handelt es sich hierbei um eine komplette Programmdokumentations- und -analyse-Software mit eingebauten Präprozessor, sowie einem Online-Handbuch mit Referenzmöglichkeit für das laufende Programm als Accessory. Die Shell-Funktionen sind tastaturkompatibel zum MENUX, nur die diversen Optionen lassen sich entsprechend komfortabler einstellen. Hierbei kann der Programmierer, wie bei allen ergo!-Funktionen, die umfangreichen Hilfstexte zu Rate ziehen. So wird z.B. bei jeder Compiler-Option genau erklärt, wofür sie gut ist und in welchen Fällen man diese oder jene Einstellung braucht. Dazu genügt einfach ein Mausklick auf den begleitenden Text.

Programmentwicklung

ERGO ACC ist ein elektronisches Handbuch mit Referenzfunktionen

Das elektronische GFA-Handbuch, das ergo! via Accessory zur Verfügung stellt, steht dem Programmierer auch während der Programmentwicklung im Interpreter-Betrieb zur Seite. Wenn man nun nicht mehr genau weiß, wie ein bestimmter Befehl lautet, die genaue Funktion entfallen ist oder einfach die Parameter unklar sind, wechselt man einfach über die GFA-Accessory-Leiste in das ergo!-Accessory und kann sich über Eingabe des Namens die Informationen zu diesem Befehl geben lassen. Die Eingabe eines Teilnamens listet alle möglichen Befehle auf. Auch kann man sich das Inhaltsverzeichnis des Handbuches auflisten lassen. Ein Mausklick auf den entsprechenden Eintrag und ähnlich einer sich ausklappenden Prozedur kommt man erst an die Befehlsliste, dann an die genaue Funktion und Parameter.

Leider sind die Erläuterungen nicht bei allen Befehlen für jeden Zweck ausreichend (besonders bei den AES-Befehlen), aber über die angegebene Kapitel- und Seitennummer lassen sich genauere Informationen im Originalhandbuch schnell nachschlagen. Aber nicht nur die Befehle sind im elektronischen Handbuch zu finden, auch die Zeichensatztabelle, die Tastatur- und Scan-Codes(!) sowie die Definitionsparameter für GEM-Muster und -Linien können im Fenster des Accessorys angezeigt werden.

Ebenfalls sehr nützlich ist die Online-Referenz. Im Hauptprogramm von ergo! kann eine Referenzliste erstellt werden, d.h. ergo! macht dem Programmierer schwer zu überblickende Programmstrukturen zugänglich. Welche Procedures und Functions wo und wie häufig aufgerufen werden; welche Variablen mit welchem Typ wo und in welcher Form Vorkommen. So reicht eine kurze Eingabe des Variablennamens oder eines Teils davon, und der Programmierer kann sehen, ob diese Variable schon verwendet wird, und wenn ja, in welchen Prozeduren, in welcher Anzahl, ob lokal oder global. Dort, wo der GFA-Befehl DUMP aufhört, fängt ergo! erst an. Beispiel u.a.:

filename$ fselect<11 d.h. FILENAMES ist 11 mal als Parameter in FSELECT
filename$ 4=5 FILENAME$ ist fünfmal lokal in der Procedure Nr.4
filenames 6-2(5) FILENAME$ ist zwar in der Procedure Nr.6 zweimal als global vorhanden. Procedure Nr.6 wurde jedoch von Procedure Nr.5 aufgerufen und in dieser ist FILENAME$ jedoch lokal definiert.

Doppelbelegungen und unsinnige Deklarationen gehören damit der Vergangenheit an.

Im Hauptprogramm von ergo! findet man dann weitere Unterstützung der Programmentwicklung. Neben der Möglichkeit, die Kommentare zu 'trimmen', d.h. auf einen gleichmäßigen Abstand zu bringen, ist es auch möglich, alle Kommentare zu löschen oder die Variablennamen durch aussagelose Namen zu ersetzen, was die Lesbarkeit für unbefugte Dritte doch erheblich erschweren dürfte.

Eine Besonderheit ist jedoch der Präprozessor. Ein Präprozessor ist ein Programm, das vordem eigentlichen Compilieren automatisch vom Benutzer gewollte Veränderungen am Programmtext vornehmen kann. Bei ergo! sind dies:

Wozu das, wird mancher fragen. Nun bei der Programmentwicklung sollten statt reiner Zahlen möglichst aussagekräftige Variablen genommen werden. Dies erhöht die Lesbarkeit der Software ungemein. Zum Beispiel der Header einer Resource-Datei besteht ausschließlich aus symbolischen Variablen; Variablen, denen genau einmal ein Wert zugewiesen wird und deren Wert das ganze Programm hindurch nicht mehr verändert wird. Was aber bei der Programmentwicklung gut ist, kann bei der Programmausführung schlecht sein. Solche Programme werden größer und, insbesondere bei Schleifen, langsamer. Mit ergo! ist es nun aber möglich zum einen den Komfort, zum anderen beim fertigen Programm ein optimales Ergebnis zu haben.

Die Unterdrückung oder Hinzufügung von einzelnen Programmzeilen, -blocken und sogar -Prozeduren setzt den Programmierer hingegen in die Lage, mit einem Quelltext unterschiedliche Programmversionen verwalten zu können. Mögliche Anwendungsgebiete sind z.B. die Erstellung einer Demoversion, einer eingeschränkten Shareware-Version sowie der kompletten Vollversion mit nur einem Listing. Erst unter ergo! entscheidet man dann auf Knopfdruck. welche Version denn nun compiliert wird. Ebenso kann man natürlich mit Listings für verschieden Computersysteme verfahren, wenn man eine Software unter ATARI GFA-und DOS-GFA-BASIC gleichzeitig entwickelt.

Die Programmanalyse

Wie schon erwähnt, stellt ergo! auch umfangreiche Analysefunktionen zur Verfügung. Neben der Variablenreferenz, auf die man auch im Interpreter zugreifen kann, ist hier vor allem die Programmdokumentation zu erwähnen. Dem Programmierer wird am Bildschirm und deutlich besser noch über die Druckausgabe alles Wissenswerte über den Programmaufbau nahegebracht. Ob nun eine Auflistung aller Prozeduren, entweder nach Nummer oder nach Alphabet sortiert, die Auflistung aller Variablen mit möglichen Fehlernoder Unstimmigkeiten oder gar die Ausgabe des Listings als Baumdiagramm zur besseren Übersicht, die Qualität der Ausgabe ließ mich staunen. Verschiedene Schriftgrößen und die Möglichkeit des Umbruchs (mehrspaltig!) nutzen das Druckerpapier optimal aus. Für die gängigsten Drucker werden entsprechende Treiber mitgeliefert (9- & 24-Nadler, HP-Laser & -Deskjet, ATARI-Laser), sind aber auch veränderbar und durch Tesidrucke an ausgefallenere Druckertypen anzupassen. Druckersalat durch nicht druckbare Sonderzeichen im Listing gehören damit der Vergangenheit an. So vorhanden, läßt sich auch ein IBM-Zeichensatz nutzen. Ebenso überzeugend ist der Komplettausdruck des Listings. Paßgenau ggf. mit Kopf- und Fußzeile kann eingestellt werden, ob ein durchgehender oder ein Ausdruck unterteilt nach Prozeduren erfolgen soll. Verschiedene Programmelemente können dabei frei definierbar durch Fett- und Kursivschrift dargestellt werden.

Fazit

Trotz der Unzulänglichkeiten im technischen Bereich (bei einer weniger wichtigen Funktion stürzt das Programm sogar ganz ab) ist ergo! ohne Zweifel ein Programm mit sehr großen Nutzen. Zwar ist für den Gelegenheitsprogrammierer in erster Linie das umfangreiche Hilfesystem von Vorteil, ob dieser mit den anderen Eigenschaften dieses Programmes etwas anfangen kann, sei dahingestellt. Anders sieht der Fall für den Programmierer aus, der häufiger oder für größere Programme zum GFA-BASIC greift. Er wird sich wohl weniger an den Hilfsfunktionen gütlich tun. Für ihn wird vor allen Dingen die Druckausgabe. die Analyse und der Präprozessor von Interesse sein. Ebenso ist auch der Umweg über die LST-Datei, denn nur solche kann ergo! z.Zt. verarbeiten, letztendlich ein Zeitgewinn. Zu diesem Preis ist das Programm ein absolut empfehlenswertes Produkt.

Bezugsquellen:

Delite

Sonderdisk Nr. 84
MAXON-Computer GmbH
Schwalbacher Straße 52
W-6236 Eschborn

ergo!

Heim Verlag
Heidelberger Landstraße 194
W-6100 Darmstadt 13

Delite

Positiv:

sauberes GEM-Programm
umfangreiche Einstellungen für Compiler und Linker
sehr günstiger Preis

Negativ:

keine Online-Hilfe
kleiner Fehler in der Speicherverwaltung im Umgang mit Accessories

ergo!

Positiv:

sehr gutes Hilfesystem
ausgiebige Analysefunktionen gute Druckausgabe

Negativ:

nicht GEM-konform
läuft auf TTs nur im ST-RAM
Oliver Schildmann



Links

Copyright-Bestimmungen: siehe Über diese Seite
Classic Computer Magazines
[ Join Now | Ring Hub | Random | << Prev | Next >> ]