← ST-Computer 10 / 1987

APL 68000 - eine Zeichensprache

Software

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