Computer-Magazin-Archiv

Der Compiler zum GFA-BASIC

Man hat einen sehr schnellen BASIC-Interpreter, der bequem zu bedienen ist, einen mächtigen Befehlssatz hat und sehr kompakt ist. Läßt sich eine solche Sprache noch erweitern? Dafür gibt es jetzt einen Compiler: Wir testen für Sie den brandneuen Compiler für den GFA-BASIC-Interpreter.

Der GFA-BASIC-Interpreter ist nicht nur wegen seiner Struktur eine BASIC-Revolution (keine Zeilennummern, Programmstruktur, etc.), sondern auch wegen der für einen Interpreter ungewöhnlich schnellen Ausführung. Von einem Compiler verspricht man sich in der Regel eine Geschwindigkeitssteigerung beim Ablauf eines Programms. Das ist jedoch nicht der einzige wichtige Faktor: Ein BASIC-Programm wird mit dem Interpreter geschrieben und getestet, dann wird es compiliert - und schon braucht man den Interpreter nicht mehr. Zu dem Geschwindigkeitsgewinn kommt hinzu, daß man ein BASIC-compiliertes Programm einfach von DESKTOP aus starten kann, ohne den Interpreter vorzuladen.

Der freundliche Compiler

Der GFA-Compiler ist ein 2-Pass-Compiler, der BASIC-Programme, die mit dem GFA-BASIC-Interpreter geschrieben sind und die mit SAVE abgespeichert wurden, in Maschinenprogramme umwandelt. Ein integrierter Linker sorgt für die Einbindung der nötigen Routinen. Tatsächlich werden nur die benötigten Routinen eingebunden, so daß die Programme nicht unnötig lang werden. Die Bedienung des Compilers ist ebenso einfach wie die des Interpreters. Nach dem Start meldet sich ein Fenster mit den Einstellparametern. Man kann verschiedene Parameter anklicken, zum Beispiel, ob der Abbruch mit Break erlaubt ist oder nicht, das Aussehen der Fehlermeldung oder andere. Nach dem Anklicken des gewünschten Files wird das Programm compiliert. Der Compilier-Vorgang läuft recht flott; wir empfehlen trotzdem die Anwendung einer Harddisk oder einer Ramdisk.

Die Handhabung des Compilers ist so einfach gehalten, daß man bereits nach kurzem Lesen des mitgelieferten Handbuchs fertige Programme compilieren kann.

Compilierungszeit eines 56 KByte großen Files
Floppy Ram-Disk Hard-Disk
95 Sek. 40 Sek. 42 Sek.
Tabelle 1

In Sachen Geschwindigkeit

Wie erwähnt, ist der BASIC-Interpreter sehr schnell. In vielen Fällen, vor allem bei den Graphik-Funktionen, ist dieser Interpreter schneller als mancher Compiler. Deshalb ist nicht in allen Fällen eine bedeutende Geschwindigkeitssteigerung zu erzielen.

Viele Graphik-Funktionen des Interpreters (etwa RBOX, POLYLIVE oder PBOX) rufen fertige Routinen des VDISystems auf, so daß sie außerordentlich schnell laufen. Das Füllen des gesamten Bildschirms durch den Befehl FILL ist bei dem Interpreter ebensowenig meßbar wie beim Compiler. Versucht man )edoch, den Bildschirm durch POKE zu füllen (was allerdings nicht sehr sinnvoll ist), dann ist der Interpreter sehr langsam. Der gleiche Versuch mit einem compilierten Programm ergibt einen Geschwindigkeitsgewinn um den Faktor 3 bis 4, wie aus der Tabelle 2 zu ersehen ist.

Bei mathematischen Funktionen ist die Steigerung deutlicher. Wir haben die Benchmark-Tests, die auf der Interpreter-Diskette abgespeichert sind, compiliert und die Ergebnisse mit dem interpretierten Ablauf verglichen. Das Resultat entnehmen Sie bitte der vorliegenden Tabelle.

Auch eine Sortier-Routine, die auf dem Interpreter sehr langsam läuft, wird in der compilierten Version recht schnell. Freilich ist der Geschwindigkeitsfaktor nicht allein von dem Compiler abhängig. Wenn schon im Interpreter umständlich programmiert wird, kann auch der beste Compiler den Code nicht optimieren, und das fertige Programm wird nicht wesentlich schneller. Da ist zum Beispiel der Fall der Nutzung von Integerarithmetik. Da der Compiler die Integerarithmetik effizient benutzt, ist zu empfehlen, immer dort, wo ganzzahlige Variablen benötigt werden, nur Zahlen des Typs Integer zu verwenden.

Wie groß wird ein compiliertes Programm?

Die Programme in GFA-BASIC sind in der Regel nicht gerade klein. Ein compiliertes Programm wird noch länger. Man darf nicht vergessen, daß der Compiler viele Routinen einfügen muß. Auch hier spielt die Art und Weise, wie man in BASIC programmiert, eine große Rolle. Bei kürzeren Programmen ist, wie bei allen Compilern, das Resultat etwas schockierend. Etwas umfangreichere Programme dagegen werden nicht übermäßig groß.

Über den Autor

Entwickler des GFA-BASIC-Interpreters und des Compilers ist Frank Ostrowski. Mit 26 Jahren ist er schon eine Legende, wenn es um SoftwareEntwicklung im deutschen Raum geht. In rund einem Jahr schrieb er Interpreter und Compiler. Auf seinem Schreibtisch bei der GFA-Systemtechnik wimmelt es von abgedruckten Source-CodeListen seines GFA-Compilers. Trotz seiner unbestreibaren Fähigkeiten und dem verdienten Ruhm bleibt er gelassen bei seiner Arbeit. Mit Sicherheit werden ATARI-Besitzer noch mehr von diesem jungen Programmierer hören.

Fazit

Der GFA-BASIC Compiler ist sicher eines der interessantesten Produkte, die es für den ATARI ST gibt. Für alle BASIC-Programmierer, die ihre Programme vermarkten möchten, ist dieser Compiler ein Muß. Für diejenigen, die nur für sich selbst programmieren, bietet er den Vorteil, daß nach Erstellen und Testen eines Programms der Interpreter nicht immer geladen werden muß. Wir können allen BASICProgrammierern dieses Programm mit gutem Gewissen empfehlen. Außerdem sind Interpreter und Compiler ohne weiteres als BASIC-Entwicklunp paket geeignet.

(MM)


Bildschirm füllen durch direktes Poken
Mit For...Next Schleife
Interpreter Compiler
Mit Integer : 10,96 Sek. Mit Integer : 3,55 Sek.
Mit Fließk. : 13,27 Sek. Mit Fließk. : 4,33 Sek.
Mit Repeat...Until Schleife
Interpreter Compiler
Mit Integer : 21,51 Sek. Mit Integer : 3,38 Sek.
Mit Fließk. : 23,02 Sek. Mit Fließk. : 6,03 Sek.
Tabelle 2

BENCHMARKS
BenchmarkInterpreterCompiler
1 0,04 Sek. 0,02 Sek.
2 0,042 Sek. 0,015 Sek.
3 1,17 Sek. 0,215 Sek,
4 1,08 Sek. 0,215 Sek.
5 1,16 Sek. 0,24 Sek.
6 1,585 Sek. 0,35 Sek.
7 2,16 Sek. 0,475 Sek.
3 3,08 Sek. 2,17Sek.
Tabelle 3

Länge eines Files
File Interpreter Compiler
Beispiel 1 264 Byte 4339 Byte
Beispiel 2 1370 Byte 8747 Byte
Beispiel 3 56409 Byte 86740 Byte

Kontakt Artikel-Archiv | Links

Copyright-Bestimmungen: siehe "Über diese Seite