APL 68000 - eine Zeichensprache

Neu für den ATARI-ST, aber auf Großrechnern, Minis und Supermicros (Workstations) weit verbreitet: APL. Hier ist der Test. Zur Einführung wird der Artikel in der ST 9/87 empfohlen, der die Programmiersprache APL allgemein vorstellt.

Ich halte es für eine gute (anglo-amerikanische) Sitte, zu Beginn des Artikels für zwei Klarstellungen zu sorgen: Zum Einen verdiene ich mit APL-Programmen seit 9 Jahren meine Brötchen und bin überzeugt, daß ohne APL die Brötchen kleiner ausfallen würden — ich bin also voreingenommen. Zum Anderen war ich zur Erstellung eines gründlichen Tests auf die Hilfe des deutschen Distributors angewiesen: Die gdat-mbH in Bielefeld war zum Beispiel als APL-Systemhaus so freundlich, die APL-Einschübe zu setzen. - Zeitschriftenverlage tun sich mit den Spezialzeichen schwer. Auch eine solche Kooperation könnte als Befangenheit ausgelegt werden. Andererseits sind von gdat Hinweise auf Fehler gekommen, die bei einem Test gemeinhin nicht auffallen. Zudem danke ich für die vergleichenden Benchmarks und für Hintergrundinformationen.

Das bisher einzige APL für den ATARI-ST heißt APL/68000. Dieses APL wird seit 1981 auf immer neuen Rechnern implementiert, denen nur eines gemeinsam ist: Eine CPU aus der 680xx-Serie von Motorola. Die Herstellerfirma MicroAPL in London hat bisher Anpassungen für Betriebssysteme wie UNIX, CPM/68k, TOS und MIRAGE, für Workstations wie die SUN, für Mehrplatzrechner (z. B. Hewlett Packard) und für „WIMP“-Rechner (Windows, Icons, Mäuse, Pull-down-Menüs) vorgenommen: APL/ 68000 gibt es u. a. für den MAC, die AMIGA und für den ST. Der „Rumpf“ des APL/68000 ist bei allen Maschinen weitgehend identisch, egal ob die Betriebssysteme multitasking-fähig sind oder nicht (das läßt für den ST hoffen). Lediglich das „Interface“ zur Außenwelt wird aktuell angepaßt.

Getestet wurde die Version 6.00A (Erstversion für den ATARI) sowie ein Vorabexemplar der Version 6.05. Letztere Version ist bei Erscheinen des Artikels nach Angaben des Distributors im Handel. Da ich von der ST-Computer in keinster Weise abhängig bin, darf ich sie wohl mal loben: Ich konnte APL/68000 ein halbes Jahr testen. Sie lesen also gewiß keinen Schnellschuß, sondern einen gründlichen Test. Dies ist einer so komplexen Programmiersprache wie APL nur angemessen.

„Speedy Gonzales“

Das APL/68000-ST kommt in einem professionell aufgemachten Schuber. Das Handbuch (ein Ringbinder im Format DIN-A5) ist in Englisch gehalten, kommt aber ohne „Fachchinesisch“ aus und ist hervorragend geschrieben. Es werden nicht nur alle Sprachelemente (mit Beispielen!) beschrieben, auch ein Index und ein Tutorial (sehr empfehlenswert) sind enthalten. Zusätzlich gibt es ein Manual für die ATARI-Implementation, worin die Besonderheiten der ST-Version beschrieben sind. Liebe zum Detail zeigt sich bei einer Kurzreferenz, die beim Programmieren immer dabei sein kann, ohne der Maus den Platz streitig zu machen. Eine (deutschsprachige) Einführung in die Besonderheiten von APL komplettiert das Paket. Eine (einseitige) Diskette mit dem APL gibt’s natürlich auch. Kein Kopierschutz oder ähnliche Bosheiten. Zudem legt gdat in der BRD eine eigene Disk bei, die einige Tools enthält. Besonders nützlich: der Feld-Editor für Anwenderprogramme.

Zusätzlich standen mir zwei Software-Pakete von gdat zur Verfügung: Ein Druckertreiber (APLPRINT) und ein Grafik-Workspace (Line Al). Diese Tools sind zwar bei der Arbeit mit APL ausgesprochen hilfreich, können aber in diesem Test aus Platzgründen nicht weiter berücksichtigt werden.

„Echte“ APLer hassen Handbücher. Sie legen einfach los. Diskette einschieben und APL.PRG angeklickt - kurze Ladezeit - voil: Eine GEM-Applikation. Mit eigenem Fenster, Menübalken usw. - Schön! Erste Tests mit Programmen, die ich vom IBM-PC übernommen habe, frustrieren mich: War’s das schon? Das Ding ist entweder unglaublich schnell, oder es simuliert nur. Na warte. Der ST hat keinen Mathe-Chip (im Gegensatz zu meinem alten PC). Bei Fließkomma-Arithmetik in gewohnter APL-Präzision kommt der Bursche bestimmt in’s Schwitzen? - Pech gehabt. Das Biest rennt wie verrückt. Eine Stoppuhr muß her. Tausend Integers sortieren. Ich tippe die fünf Zeichen ein, drücke RETURN - Fertig! Mein Daumen war nicht schnell genug. Ich kombiniere: APL/ 68000 ist blitzschnell.

Die Benchmarks bestätigen diesen Eindruck. Nicht nur, daß APL (unter Berücksichtigung der höheren Rechengenauigkeit) mit dem GFA-Basic mithalten kann. Ein solcher Vergleich hinkt immer, wenn man an die vielen Sprachelemente denkt, die in keiner anderen Sprache eingebaut sind. Nein, der wirkliche Hammer ist, daß es APL auf dem ST mit einer reinen Softwarelösung mit dem Arithmetik-Prozessor des PC aufnehmen kann. Das zeugt von sorgfältiger Codierung. Nur bei der Potenz-Funktion muß jemand bei Micro APL einen schlechten Tag gehabt haben.

Dem Paket liegt auch eine Fehlerliste bei. Angesichts dessen, daß es kaum fehlerfreie Programme gibt, ist diese Praxis lobenswert. Da gdat an alle registrierten Benutzer die Version 6.05 verschickt, sobald sie freigegeben ist, erhält jeder APL-Eigner eine komplette Fehlerkorrektur und einige neue Features: gegen Porto. So ein Nulltarif ist angesichts der meist kleineren Bugs sehr nobel. Andere Softwarehäuser sollten sich daran ein Beispiel nehmen. Der einzige Bug, der mich nachhaltig nervte, betraf einen gelegentlichen Ausstieg des Rechners bei dem Versuch, einen Workspace zu laden.

Bombensicher

Apropos Bomben: Der ATARI ist ja in dieser Disziplin ein echter Anarchist. Aber außer in dem eben beschriebenen Fall konnte ich unter APL keinerlei Abstürze provozieren. APL ist von Haus aus so konzipiert, daß ein Benutzer von den Ärgernissen des Betriebssystems abgeschirmt bleibt. APL/68000 unter GEM bildet da keine Ausnahme. Ich bin bezüglich dessen, was der ST gemeinhin bei der Programmentwicklung an Tretminen bereithält, regelrecht fahrlässig geworden. APL/68000 hält das aus. Erste Versuche mit Version 6.05 zeigten absolut keine Fehler mehr. Und das will was heißen: Ich habe immerhin einige hundert Kilobytes an Programmen auf dem ST unter APL laufen lassen.

Per Mausklick ist auch ein Editor erreichbar, der für die üblicherweise sehr kurzen APL-Funktionen (Modu-le) mehr als ausreichend ist. Die „CCP“-Fähigkeiten (Cut, Copy, Paste) sind sehr hilfreich. Leider lassen sich mit diesem Editor keine Variablen bearbeiten. Diese Fähigkeit hatte ich auf einem APL für PC’s doch sehr zu schätzen gelernt. Zwar ist eine diesbezügliche Erweiterung geplant, aber ein Termin steht laut gdat noch nicht fest.

# Technische Daten des APL/68000-ST

Verfügbarer Arbeitsspeicher (DWA): 725k
(bei 1040ST. Allg.: RAM abzüglich ca.275k)

Numerischer Darstellungsbereich:
von ~3.59538626972463 E 308
bis 3.59538626972463 E 308

Darstellgenauigkeit ([]PP): <=15 Nachkommastellen

Vergleichstoleranz, relativ (DCT): >1E~307

Genauigkeit des Timers (DTS): 20 msek.

Datentypen: Character (8 Bit)
Boolean (1 Bit)
Integer (32 Bit)
Reals (IEEE, 64 Bit)

Größe von Variablen:
nur durch verfügbaren Arbeitsspeicher begrenzt

Anzahl der Dimensionen: maximal 8

Größe einer Dimension: unbegrenzt

Rekursionstiefe (Stack): nur durch verfügbaren Arbeitsspeicher begrenzt

Symbol-Table: maximal 6021 Einträge

APL.PRG V.6.05 (auf Disk): 118k
APL.RSC (auf Disk): 3,5k
Belegter Diskspace (incl. Bibliotheken): 275,8k

Betriebsarten:
monochrom (640 x 400)
4-farbig (640 x 200)
16-farbig (320 x 200)

Die APL-Befehle bestehen aus „Icons“, die auf älteren Systemen oft nur schwer zu erreichen waren: Tastatur und Bildschirm gaben oft nur die herkömmlichen ASCII-Zeichen her. Schon bei den Umlauten wurde es schwierig.

Der ST zeigt sich hier von seiner besten Seite. Alle APL-Zeichen sind auf dem Bildschirm darstellbar, die Tastatur läßt sich (mit CONTROL/TAB oder unter Programmkontrolle) zwischen der vom PC bekannten APL-Tastatur und dem (deutschen) Tastenlayout umschalten. Der APL-Zeichensatz enthält sämtliche europäischen Sonderzeichen, das komplette ASCII-Repertoire und viele ATARI-Symbole (wer hat eigentlich schon mal das „Pfeifenmännchen“ gebraucht?). Die APL-Belegung läßt sich mit Tastaturaufklebern markieren. Sie gehören zum Lieferumfang. In der neuen Version kann man sogar beide Zeichensätze (16x8; 8x8) als Bitmaps lesen und verändern.

# Systemfunktionen

Für jedes APL gibt es Spracherweiterungen. Sie werden "Systemfunktionen" bzw. "Systemvariablen" genannt und beginnen mit einem Manche, wie '□IO', gibt es in jedem System (damit wird festgelegt, ob APL beim Zählen mit 0 oder mit 1 anfangen soll). Hier gibt es aber nur eine (höchst unvollständige) Übersicht bezogen auf Spezialitäten des APL/68000.

□A Alphabet (Großbuchstaben)
□a Alphabet (Kleinbuchstaben)
□BOX - zur Umwandlung von Matrizen in Vektoren mit Delimitern, und umgekehrt (gültig für Zeichen und Zahlen!)
□CC "Console Control" - Geräteunabhängige Bildschirmfunktionen
□D "Digits" (Ziffern 0-9)
□DBR "Delimited Blank Removal" - Entfernen überflüssiger Leerzeichen
□DR - zur Kontrolle oder zum Ändern der(internen) Daten-Repräsentation
□FMT - dient der Tabellenformatierung (mit Tabs, Texteinschüben, Rundung etc.)
□M Liste der Monate
□OV Overlay-Funktion.Damit lassen sich unterschiedliche Variablen (auch mit verschiedenen Strukturen und: Text und Zahlen gemischt!) sowie Funktionen in eine einzige Variable stecken bzw. wieder herausholen. □SS Funktion zum Suchen (wahlweise mit Ersetzen) von Zeichenketten in Vektoren. Es können mehrere Begriffe gleichzeitig gesucht/ersetzt werden.
□W Liste der Wochentage

Wie gesagt, es handelt sich nur um eine kleine Auswahl. Es fehlen etwa die Funktionen zur Fehlerdiagnose, Trace- und Stop-Funktionen und viele mehr.

Abb. 2

APL/68000 besteht aus einem „Superset“, einer Ubermenge, des APL.SV. Letzteres ist derzeit eine Art „Industriestandard“ (made by IBM). Damit ist das APL des ST bestens für Büro-Anwendungen gerüstet, wo meist Kompatibilität zu bestehender Software gefordert ist. Und APL selbst ist (nach Cobol und Fortran) der Industriestandard. Fragen Sie mal „Big Blue“ IBM! - „Superset“ heißt: da ist mehr drin. Stimmt. Es ist etwa möglich, auch Textstrukturen zu sortieren. Die Kriterien sind beliebig. Die Funktionen „Komprimieren“ und „Expandieren“ sind erweitert: APL/68000 läßt als linkes Argument auch Integer-Elemente zu. Für das maßstäbliche Vergrößern/ Verkleinern von Bitmaps keine unwesentliche Erleichterung. Und neben dem ’Format’-Befehl und der System-Funktion ’QUAD-FMT’ gibt es eine Cobol-ähnliche ’ALPFLA’-Funktion, die für zusätzlichen Komfort bei der Anzeige von Tabellen sorgt. Kommentare können am Ende jeder Funktionszeile stehen. Mehrere unabhängige Ausdrücke in einer Zeile sind möglich.

Zugaben

APL ist eine „nackte“ Sprache. Streng genommen gehören weder ein Dateisystem noch irgendwelche Interfaces zum Rechner zur Sprachdefinition -APL ist zwar eine Sprache, aber nicht unbedingt eine Computersprache. Die Güte einer Sprachversion hängt daher nicht unwesentlich von den gebotenen „Extras“ ab. Dazu gehören neben einem Dateisystem alle Systemfunktionen und Systemvariablen. Beim ATARI ist zudem die Grafik-Unterstützung von Interesse - wo doch APL mit seinen Bitmaps und trigonometrischen Funktionen wie geschaffen ist für visuelle Anwendungen.

Aber der Reihe nach: Das Dateisystem des APL/68000 ist hervorragend. So einfach habe ich noch nie mit meinen Daten umspringen können (siehe Kasten). In Kombination mit den APL-Künsten bezüglich der Listenverarbeitung ist selbst bei komplexen Anwendungen ein separates Datenbankpaket nicht mehr nötig. Meine Datenbank heißt APL.

Grundsätzlich werden bei Systemfunktionen zwei unterschiedliche Wege beschritten. Die Einen, nicht schüchtern, packen rein, was immer gerade nützlich erscheint. Die Anderen sind eher vorsichtig, um größtmögliche Kompatibilität zu anderen Systemen zu wahren. MicroAPL zählt eher zur letzteren Sorte. Sicherlich ist alles enthalten, was ich von IBM-Rechnern her kenne. Die sparsamen Erweiterungen sind aber auf jeden Fall vom Feinsten: Keine Spielereien, sondern Hilfsmittel, bei denen sich mir nur noch die Frage stellt, warum „die Anderen“ sie nicht haben. Am wichtigsten: Die Funktion zum Suchen und Ersetzen in Characterstrings und die Funktion zum Umwandeln von Matrizen in platzsparende Strings (mit Delimitern) und umgekehrt.

Abb. 3

Die Funktionen zur Fehlerbehandlung sind sehr ausgefeilt. In meinen umfangreichen Anwenderprogrammen konnte ich auftretende Programmfehler nicht nur (unmerklich für den Benutzer) registrieren, sondern meist auch, dank detaillierter Information über Lokalisierung und Art des Fehlers, reparieren.

Für die Anbindung des APL an den ATARI gibt es eine Reihe von Bibliotheken (Workspaces), die im Lieferumfang enthalten sind. Alertboxen, Menüs und Dialogboxen sind mit Hilfe von Coverfunktionen sehr einfach zu handhaben. Stundenlange Sitzungen mit dem Resource-Construction Set entfallen. Auch die VDI-Funktionen stehen zur Verfügung. Hier sind meine Eindrücke etwas zwiespältig: Zum Erstellen von Geschäftsgrafiken, Diagrammen und Kurven sind die Coverfunktionen hervorragend geeignet, da sie sehr bequem zu handhaben sind (kein Stochern in den Kontrollstrukturen). Für CAD-Anwendungen ist aber der Overhead zu groß. Das ist ausgesprochen schade, gerade weil APL an sich für rechenintensive Applikationen wie geschaffen ist.

Abb. 5

Nach Angaben von gdat wird es zwei Lösungen geben: MicroAPL arbeitet an einer Dokumentation der internen Schnittstelle zum VDI. Direkter Zugriff auf dieses Interface beschleunigt die Grafik auf VDI-Speed. Das konnte ich eigenhändig testen. Außerdem gibt es bei gdat einen Set von Funktionen, die direkt auf den Line-A Variablen operieren. Damit sind Geschwindigkeitsprobleme bei der Grafik pass. -Aber der Blitter spielt mit, wenn er soll.

Ein weiterer Workspace dient dem Zugriff auf das TOS-Dateisystem. Die darin enthaltenen Funktionen haben es mir gestattet, mit Ist Word editierte Texte einzulesen, um sie unter APL weiter zu „behandeln“ und mit einer Adressdatei zu verknüpfen, die doch einiges mehr kann als Ist Mail. Auch DEGAS-Bilder (monochrom) konnten problemlos gelesen, verarbeitet und wieder abgelegt werden. Mit den APL-Sprachkünsten ist es eine reine Freude, Zeichnungen zu mischen, zu manipulieren (Drehen, Spiegeln ...), oder etwa Ausschnittsvergrößerungen herzustellen.

Zukunftssicher

Manchen Entwickler überkommt der nackte Horror, wenn er an die Übertragung seiner Programme auf andere Rechner denkt. APL ist da recht angenehm: Es gibt Interpreter für alle gängigen Rechner, vom Micro bis zum Mainframe. Durch Coverfunktionen lassen sich maschinenabhängige Stellen leicht isolieren. Wenn Sie mal Lust auf die SUN (Workstation unter UNIX) verspüren, sollten Sie die rechnerunabhängige Systemfunktion QUAD-CC benutzen: Selbst auf einem seriellen Terminal läuft Ihre Software ohne Änderungen. Interessanter ist allerdings die Portierung auf MAC oder AMIGA. Haben Sie schon mal eine Dialogbox für den ST entworfen, die sofort auf dem MAC läuft? Oder eine Geschäftsgrafik auf die AMIGA portiert? - Ich konnte mich davon überzeugen, daß beide Fälle möglich sind, ohne auch nur ein Zeichen im Code zu verändern.

Und die Zukunft auf dem ST? APL/ 68000 läuft nach Angaben von MicroAPL auf allen Modellen, vom alten 260-ST bis hin zum Mega-ST mit Blitter und 4 Megabytes RAM, sowie in allen Auflösungen. Da MicroAPL grundsätzlich keine unsauberen Tricks verwendet, hat kein ST-Besitzer Ärger mit neuen TOS-Versionen zu befürchten. Ein Test mit dem Mega-ST (4 Mb, neues TOS) verlief einwandfrei. Und da schon APL-Versionen für die CPU 68020 (mit Coprozessor-Unterstützung) existieren, ist auch für kommende ATARI-Entwicklungen vorgesorgt.

Abb. 6

Der ST ist (dank GEM) leicht zu benutzen. Mit APL ist er nun auch leicht zu programmieren. Es soll Väter geben, die ihren schulpflichtigen Kindern einen ST nur unter der Bedingung hinstellen, mit APL zu arbeiten. Das könnte sich nämlich über eingesparte Nachhilfestunden schnell bezahlt machen. Für die Lösung von ad hoc-Problemen ist APL sowieso die Sprache der Wahl, und im Profi-Bereich hat APL seinen Platz im sogenannten „Prototyping“ sowie bei Anwendungen, die flexibel und anpassungsfähig sein müssen. Und ein MUSS ist APL immer dort, wo es auf kurze Entwicklungszeiten ankommt. Ein Run-Time System ist kostenlos verfügbar. Damit ist die letzte Hürde für die Verbreitung professioneller Software gefallen.

Ich kann dem APL/68000-ST in der Version 6.05 bescheinigen, daß es alle Ansprüche erfüllt, die von einer professionellen Programmiersprache verlangt werden. Angesichts der vielen Features, die bei anderen Sprachen zu den Extras zählen (oder nicht existieren), ist der Preis von DM 428,- als „billig“ zu bezeichnen. Es sollte mich wundern, wenn dieses APL nicht binnen kürzester Zeit vom Geheimtip zum Massenschlager avanciert. - Eigentlich schade um den Hauch von Exklusivität, den ich beim Gebrauch von APL auf dem ST bisher genießen konnte.

Name: APL/68000-ST
Hersteller: MicroAPL Ltd., London
Preis: ca. DM 298,-

Bezugsquelle:
gdat mbH
Stapelbrede 39
48 Bielefeld 1

Abb. 4

Wolfgang Thomas
Aus: ST-Computer 10 / 1987, Seite 66

Links

Copyright-Bestimmungen: siehe Über diese Seite