Jahrelang gab es für die Atari-Computer nur den Atari-Pascal-Compiler. Inzwischen locken zwei interessante Alternativen.
Spätestens seit dem Erscheinen von Turbo-Pascal ist Pascal eine der wichtigsten Sprachen im Bereich der Mikrocomputer geworden. Die Besitzer von Atari XL/XE-Computern hatten jedoch bis vor kurzem in diesem Bereich keine große Auswahl: Es gab lediglich das Atari-Pascal, das zwar vom Sprachumfang her sehr leistungsfähig, in der täglichen Anwendung jedoch umständlich zu benutzen ist, vor allem wegen der sehr langen Compilierzeiten. Das führt beim Programmieren zu (unerwünscht) vielen Kaffeepausen, da es durchs vorkommen kann, daß für das Compilieren und Linken eines mittelgroßen Programms zehn Minuten benötigt werden. Außerdem sind mehrere Schritte erforderlich, um in lauffähiges Programm zu erhalten:
Dieses Konzept ist zwar bei größeren Computern sinnvoll und verbreitet, aber bei den verhältnismäßig langsamen Atari-Laufwerken ist es eine Qual.
Der dritte entscheidende Grund, er eine weite Verbreitung von Pascal verhindert, ist, daß unbedingt zwei Diskettenlaufwerke notwendig sind, um damit zu arbeiten und die hat nun mal nicht jeder. Seit kurzem bieten sich Atari-Beutzern, die in den Kreis der Pascalprogrammierer eintreten wollen, zwei Alternativen: Kyan-Pascal und Draper-Pascal. Draper-Pascal wird auf einer geschützten Diskette geliefert, die in leicht modifiziertes Atari- DOS sowie diverse Systemprogramme und Quelltext-Dateien enthält. Wenn man die Diskette bootet, erscheint das Hauptmenü mit folgenden Unterpunkten:
1 - Run Program
2 - Disk Directory
3 - Compile Program
4 - Edit A Program
5 - Exit To Dos
6 - List A File
7 - Trace On
Dieses Menü steuert alle Grundfunktionen des Programms:
Mit »Run Program« wird ein bereits compiliertes Programm ausgeführt. Über Punkt 3 gelangt man zum Compiler. Dieser übersetzt die Quellprogramme in den sogenannten P-Code (dazu später mehr). Über den nächsten Punkt gelangt man in den Draper-Editor, mit dem die Pascal- Programmtexte (Quelltexte) geschrieben und auf Diskette gespeichert werden. Punkt 6 erlaubt es, eine beliebige Textdatei, wie zum Beispiel ein Pascal-Programm, auf dem Bildschirm auszugeben. Die Trace-Funktion macht sich bei der Fehlersuche in einem Programm nützlich, denn damit werden während des Programmablaufs bestimmte Systeminformationen zur späteren Begutachtung gespeichert. So kann man im nachhinein den Ablauf des Programms genau verfolgen.
Das gesamte Pascal-Programm, auch das Hauptmenü, läuft unter Kontrolle des sogenannten Supervisors. Er besteht hauptsächlich aus einem umfangreichen Maschinensprache-Programm, das den vom Compiler erzeugten P-Code interpretiert. Außerdem bietet er die oben genannte Trace-Funktion und einiges mehr.
Die Benutzung der verschiedenen Teile des Programms gestaltet sich sehr bequem. Wenn man beispielsweise vom Editor in den Compiler wechselt, um das geschriebene Programm zu compilieren, braucht der zuletzt verwendete Dateiname nicht erneut eingegeben zu werden; man darf aber einen neuen Namen wählen. Sehr bequem ist auch, daß man mit einem einzigen Tastendruck von einem Programmteil in den nächsten gelangt. Von dieser Bedienungsfreundlichkeit könnte sich Atari-Pascal eine Scheibe abschneiden. Interessanterweise entfällt beim Draper-Pascal eine Link-Prozedur wie die von Atari-Pascal. Das reduziert die Compilationszeit erheblich. Man hat zwar nicht die Funktion, vorcompilierte Bibliotheken in das Programm einzubinden, aber das läßt sich leicht durch die Include-Funktion des Compilers ersetzen, die Textfiles von der Diskette in das gerade compilierte Programm einfügt.
Der Compiler von Draper-Pascal ist laut Dokumentation selbst in Draper-Pascal geschrieben. Im Gegensatz zu einem sogenannten »Native-Code«- oder »M-Code«Compiler, der die Pascal- Programme direkt in die Maschinensprache des betreffenden Computers übersetzt, erzeugt der Draper-Compiler (genau wie Atari-Pascal) den schon erwähnten P-Code (P wie Pseudo), den man sich als eine an Pascal-Bedürfnisse optimal angepaßte Maschinensprache eines imaginären Prozessors vorstellen kann. Da dieser P-Code vom Computer nicht direkt ausgeführt werden kann, muß der P-Code noch von einem speziellen Programm, hier dem Supervisor, interpretiert werden. Dieses Konzept ist bei den Profis sehr beliebt, da es die Übertragung der Pro- grammiersprache auf andere Computer erleichtert. Da der Compiler immer denselben P-Code erzeugt, kann dieser direkt auf den anderen Computer übernommen werden; lediglich der P- Code-Interpreter muß für den jeweiligen Prozessor neu geschrieben werden. Andere Programmiersprachen (beispielsweise C), die mit demselben P-Code arbeiten, lassen sich ebenso ohne Änderung übertragen.
Derartige Compiler erzeugen zwar meist einen kompakteren Code als vergleichbare M-Code- Compiler, durch die notwendige Interpretierung während der Laufzeit des Programms verringert sich jedoch die Ausführungsgeschwindigkeit. Bei einem Benchmarktest mit dem Primzahlenprogramm »Sieb des Eratosthenes« schnitt Draper-Pascal sogar besonders schlecht ab; es ist rund fünfmal langsamer als dasselbe Programm in Atari-Pascal (von Kyan-Pascal gar nicht zu reden) und nur rund doppelt so schnell wie das (interpretierte) Atari-Basic-Programm (von einem Vergleich mit Turbo-Basic wollen wir hier Abstand nehmen). Das oft mißbrauchte »Sieb« ist sicher kein allgemeiner Maßstab für die Geschwindigkeit einer Programmiersprache, gibt aber immerhin einen Anhaltspunkt.
Die Compilationszeit von Draper-Pascal ist deutlich kürzer als bei Atari-Pascal, jedoch etwas länger als bei Kyan-Pascal. In der Tabelle sind alle Werte zusammengefaßt. Noch ein Wort zum Editor: Auch dieser ist in Draper-Pascal geschrieben und der Source-Code sogar auf der Diskette enthalten, so daß man den Editor (mit dem nötigen Fachwissen) seinen persönlichen Ansprüchen anpassen kann. Die Benutzung gestaltet sich dank Menüsteuerung für den Anfänger zwar einfacher als bei MEDIT, dem Editor von Atari-Pascal, oder dem Kyan- Editor, dafür ist er aber auch nicht so schnell und leistungsfähig. Das liegt vor allem daran, daß er zeilennummernorientiert arbeitet (die Zeilennummern werden jedoch nicht mit auf Diskette gespeichert), was bei einer Sprache wie Pascal eigentlich ein Unding ist. So muß man, um eine Zeile zu ändern, extra ins Menü gehen, die entsprechende Funktion anwählen und auch noch die richtige Zeilennummer im Kopf haben. Für den Fortgeschrittenen ist diese Prozedur eher lästig.
Mit dem Draper-Pascal läßt sich sicherlich leichter arbeiten als mit Atari-Pascal. Wenn man jedoch ein kritisches Auge auf die Sprache selbst lenkt, erkennt man, daß dies mit einigen Einbußen bezahlt wird. Draper-Pascal hält sich an keinen Standard, während Atari- und Kyan- Pascal den ISO-Standard vollständig erfüllen und darüber hinaus zusätzliche Funktionen bieten, die zum größten Teil Computer-spezifisch sind (zum Beispiel Grafikprozeduren). Solche zusätzlichen Prozeduren kennt Draper-Pascal zwar auch, dafür fehlen einige der wichtigsten und komfortabelsten Eigenschaften und Datenstrukturen der Pascal-Sprache:
Wer sich ein wenig mit Pascal auskennt, weiß, daß dies einschneidende Einschränkungen sind, die die Programmierung »ernsthafter« Anwendungen fast unmöglich machen. Der Fairneß halber sei aber gesagt, daß einige der zusätzlichen Prozeduren und Funktionen des Draper-Pascal sehr nützlich sind.
Mit der Benutzung dieser nicht standardgemäßen Eigenschaften opfert man jedoch einen der größten Vorteile einer Hochsprache wie Pascal: die Portabilität auf andere Computer-Systeme, was freilich auch für Atari- und Kyan-Pascal gilt.
Ein anderes Problem (oder besser Ärgernis) ist, daß einige Kleinigkeiten in der Syntax anders sind als im Standard-Pascal. So muß zum Beispiel bei Arrays der Index in runder statt, wie üblich, in eckigen Klammern geschrieben werden. Für jemanden, der an »normales« Pascal gewöhnt ist, kann die Suche nach einem solchen Fehler ein frustriere des Erlebnis sein, zumal die Fehlermeldungen, die der Compiler aus gibt, keinen Hinweis auf solche Dinge enthalten.
Das mitgelieferte Handbuch ist in Englisch und zudem recht knapp gehalten. Es erhebt nicht den Anspruch, ein Pascal-Lehrbuch zu sein.
Das Kyan-Pascal ist seit kurzem auch für Atari-Besitzer erhältlich und läuft unter DOS 2.5 auf Atari Computern mit mindestens 64 KByte (800XL und 130XE, nicht jedoch Atari 800) und mit mindestens eine Diskettenstation. Wenn man eine 130XE besitzt, kann man die zusätzlichen 64K als RAM-Disk benutzen was die Ladezeiten der recht lange Systemprogramme (der Compiler belegt knapp 300 Sektoren) erheblich verkürzt.
Kyan-Pascal erfüllt den Standard vollständig und hat auch sonst einiges zu bieten. Assembler- Sourcetextcode läßt sich beispielsweise direkt in den Pascal-Text einfüge Das eröffnet dem fortgeschrittene Programmierer fantastische Möglichkeiten, da er zeitkritische Routinen direkt in Maschinensprache schreiben und so deren Geschwindigkeit und die Vorteile des strukturierten Programmierens vereinen kann. Der Assembler ist erstaunlicherweise sogar recht leistungsfähig; er bietet, außer Makros, fast alles, was auch ein »richtiger« Assembler kann. Die Direktiven und Opcodes entsprechen dem Rockwell Standard.
Der Compiler selbst ist im Unterschied zu den anderen behandelt Systemen ein Native-Code- Compiler. Die erzeugten Objekt-Datei laufen unter DOS 2.5; es ist nicht notwendig, jedesmal in die Pascal-Umgebung zu gehen. Da der Hersteller mit dem Kauf des Pakets eine Lizenz zur Weitergabe der Runtime-Library gibt, steht auch der kommerziellen Nutzung eines selbstgeschriebenen Programmes nichts im Wege. Ein Supervisor oder etwas ähnliches wird nicht benötigt. Außerdem sind sowohl der Compiler als auch der erzeugte Code sehr schnell, wie man in der Tabelle sehen kann. Hier schlägt Kyan-Pascal, wenn man von der RAM-Disk compiliert, sogar Turbo-Pascal (auf einem mit 4 MHz getakteten CP/M-Computer). Der Compiler verfügt auch noch über einige nicht standardgemäße Funktionen: Mit »INCLUDE« wird, wie in Draper-Pascal, eine andere Quelltextdatei in den Text eingebunden. Das ist ein ausreichender Ersatz für die fehlende Funktion, vorcompilierte Pascal- Programme zusammenzubinden, wie sie beispielsweise Atari-Pascal bietet. Die Anweisung »CHAIN« erlaubt den Overlay-Betrieb: Vom laufenden Programm aus wird ein anderes gestartet. Dabei lassen sich sogar Parameter übergeben.
Jetzt noch ein paar Bonbons für Pascal-Freaks: »DISPOSE« gibt mit NEW auf dem Heap reservierten Speicherplatz wieder frei, die Funktion »SEEK« verwaltet RandomAccess-Files und mit »ASSIGN« werden Pointer bestimmte Adressen zugeordnet (wichtig für die Maschinenprogrammierer). Auch »GOTO« ist erlaubt.
Außerdem befinden sich auf der Programm-Diskette noch einige Include-Dateien, die Stringfunktionen sowie Grafik- und Soundprozeduren enthalten. Die arithmetische Genauigkeit von Kyan-Pascal ist mit 13 Stellen größer als die der anderen Programme (8 Stellen). Die Kyan-Pascal-Benutzeroberfläche erweist sich als nicht ganz so komfortabel wie die von Draperoder Turbo-Pascal, ist jedoch besser als die von Atari-Pascal. Das Programm ist nicht Menü-, sondern Kommandogesteuert.
Der Editor ist für den, der schon mit Turbo-Pascal gearbeitet hat, schnell zu beherrschen, denn er hal dieselbe Wordstar-ähnliche Bedienerführung. Für den eingefleischten Atarianer ist es jedoch nachteilig, daß die Atari-Steuertasten zum Teil nicht mehr ihre normale Funktion haben. Eine Zeile wird zum Beispiel nicht mehr wie gewohnt mit SHIFT-DELETE, sondern mit CTRL- Y gelöscht. Doch sonst verfügt der Editor über alle üblichen Funktionen wie Suchen/Ersetzen, Einfügen/Löschen etc.
Dem Programm ist ein relativ umfangreiches »Tutorial Manual« (in Englisch) beigefügt, das jedoch Grundkenntisse in der Computerei voraussetzt, Wer über diese Grundkenntnisse verfügt, kann damit Pascal lernen. Wer jedoch mit Begriffen wie »Variable«, »String« oder »Array« nichts anfangen kann, dem sei angeraten, sich zusätzlich ein Pascal-Lehrbuch zuzulegen. Im Vergleich der drei Programme hinterläßt das 198 Mark teure Draper-Pascal gemischte Gefühle. Einerseits fällt es durch eine sehr komfortable Benutzeroberfläche auf und benötigt nur ein Diskettenlaufwerk, andererseits ist ernsthaftes Arbeiten aufgrund der Unvollständigkeit der Sprache schwierig. Auch zum Lernen ist es wegen der knappen Dokumentation und des nicht standardgemäßen Sprachumfangs weniger geeignet als seine beiden Konkurrenten. Das Kyan-Pascal, zweifellos das leistungsfähigste Pascal für die 8Biter von Atari, eignet sich auch für professionelles Arbeiten. Es ist allerdings mit 298 Mark das teuerste der drei Programme. Aber auch das etwas angegraute Atari-Pascal ist noch erwägenswert, vorausgesetzt, man hat etwas Geduld und die entsprechende Hardware (mindestens zwei Diskettenlaufwerke, möglichst eine RAM-Disk zur Beschleunigung). Es wird nämlich inzwischen zum konkurrenzlos günstigen Preis von 72 Mark angeboten.
Zeiten für das Primzahlenprogramm | ||
Name | Laufzeit | Compilationszeit |
---|---|---|
Atari-Pascal | 8 sec. | 180 sec. |
Kyan Pascal | 4 sec. | 29 sec. |
Draper-Pascal | 43 sec. | 44 sec. |
Programm | Vorteile | Nachteile |
Draper-Pascal | sehr bedienerfreundlich keine Linkprozedur erforderlich kurze Compilationszeit |
erzeugt relativ langsame Programme Editor nicht sehr leistungsfähig Sprache hält sich an keinen Standard knappe Dokumentation |
Kyan Pascal | sehr kurze Compilationszeit Sprach-Standard wird eingehalten Assembler-Einbindung erzeugt sehr schnelle Programme viele Zusatzfunktionen 13stellige Arithmetik umfangreiches Handbuch |
Benutzeroberfläche nicht komfortabel 298 Mark teuer |
Atari Pascal | großer Sprachumfang günstiger Preis (72 Mark) |
lange Compilierzeiten zwei Diskettenlaufwerke erforderlich |