Geschwindigkeit ist Trumpf: Der OMIKRON-Basic Compiler sticht

Der bekannte OMIKRON-Basic Interpreter, der allein schon der schnellste Basic-Interpreter für den ST ist, wurde nun mit dem Compiler bereichert. Dies macht es möglich, daß man mit Basic in Geschwindigkeitsbereiche Vordringen kann, die bisher nur der Sprache C Vorbehalten waren.

Ein Compiler muß her

Bei vielen Sprachen' handelt es sich ausschließlich um Compilersprachen, z. B. Pascal, C, Fortran oder Modula 2. Das hat zwar den Vorteil, daß das fertige Programm sehr schnell im Ablauf wird, doch dauert es natürlich einige Zeit, bis ein Programm fertig übersetzt ist. Ideal ist es natürlich, wenn man ein Programm auf einem Interpreter entwickelt, da es dort sofort läuft, man also die bei großen Programmen recht langen Übersetzungszeiten sparen kann, und es dann erst compiliert. Genau dies ist mit dem OMIKRON-Basic-Entwicklungspaket möglich. Dies ist momentan die eleganteste Möglichkeit, Programme zu entwickeln.

Die Zeit läuft: Compiler ★ 10 = Interpreter

Was schon beim Interpreter eine recht große Rolle spielte, nämlich die Ausführungszeiten eines Programms, nimmt bei einem Compiler eine noch größere Bedeutung ein. Die Leute von OMIKRON durften sich bei ihrem Interpreter bekanntlich nicht beklagen, denn er ist und bleibt der schnellste Interpreter für den Atari ST. Dennoch stellt der Compiler sein Mutterprogramm fast in den Schatten. Der erreichte Geschwindigkeitszuwachs beträgt im Durchschnitt rund den Faktor 10. Bei bestimmten Befehlen, besonders bei der Integerarithmetik, sind Faktoren von 20 oder mehr keine Seltenheit.

...und der Rest der Welt

Da es auch noch andere Compiler für den ST gibt, ist natürlich der direkte Vergleich mit ihnen von Interesse. Auf Bild 1 sehen Sie die gemessenen Zeiten von OMIKRON- und GFA-Basic im Vergleich mit dem Megamax C-Compiler. Das Ergebnis dürfte recht verblüffend sein, da der OMIKRON-Compiler sogar bessere Zeiten als der C-Compiler erreichte. Dazu muß man allerdings sagen, daß bei Megamax ohne Registervariablen gearbeitet wurde, da diese den Basic-Compilern noch unbekannt sind; OMIKRON-Basic steht diese Erweiterung demnächst ins Haus.

Da Benchmarktests immer etwas kritisch sind in Bezug auf das gleiche Zahlenformat, haben wir uns auf Long-Integer geeinigt, da z. B. bei Float schon allein das unterschiedliche Format keine genauen Schlüsse zuläßt. Daß Benchmarks in dieser Form, gerade zwischen verschiedenen Programmiersprachen, ohnehin nicht unum- # stritten sind, möchten wir hier nicht verschweigen. Im Vergleich mit dem direkten Basic-Konkurrenten (GFA-Basic) sieht man jedoch, daß der OMI-KRON-Basic-Compiler, wie schon der Interpreter, der schnellere ist. Das ist umso verwunderlicher, als der OMIKRON-Basic-Compiler, im Gegensatz zum GFA-Basic-Compiler, nicht in Assembler, sondern selbst in OMIKRON-Basic geschrieben wurde und sich schließlich selbst übersetzte.

Compiler < = > Interpreter?

Ein sehr wichtiger Punkt ist natürlich die Kompatibilität des Compilers zum Interpreter. Hier gibt es einige kleine Unterschiede, die sich allerdings auf das Dimensionieren von Feldern und Beachten des Zahlenformats bei Funktionsaufrufen beschränkt. Dies ist aber aufgrund eines optimalen Codes nicht anders machbar; ein Pascal-Compiler ist da wesentlich pingeliger. In solchen Fällen gibt der Compiler jedoch eine genaue Meldung aus, mit der man Fehler leicht ausbügeln kann.


Als Besonderheit des Compilers tritt in Erscheinung, daß er innerhalb des compilierten Programmes dynamische Felder verwalten kann, also im Programmablauf ein Feld redimensionieren (vergrößern und auch verkleinern) kann; eine praktische Eigenschaft, beispielsweise für Dateiverwaltungen.

Zusätzlich weist er noch Optionen auf, mit denen man in Regionen Vordringen kann, die einem Basicprogrammierer bisher fremd waren.

Das Zauberwort 'Multitasking’

Der im Interpreter bereits bestehende ’ON TIMER GOSUB’-Befehl wurde verfeinert: Er springt im Interpreter nach Ablauf einer bestimmten Zeit und nach Vollendung eines Befehls in eine Prozedur, führt diese aus und kehrt von dort in das Hauptprogramm zurück. Da dieser Sprung aber nur nach jedem vollendeten Basic-Befehl möglich wurde, konnte die Interruptroutine nicht gleichmäßig angesprungen werden. Bei INPUT beispielsweise war der Interrupt blockiert und bei zeitaufwendigen Befehlen (z. B. SORT, MAT INV) erfolgte er mit viel Verspätung. Im Compiler ist es nun möglich, auch mitten in einem solchen Befehl in das Unterprogramm zu verzweigen. Damit lassen sich Echtzeit-Anwendungen erstellen, die sich durch nichts aufhalten lassen.

Die Steuerworte, die die Optionen festlegen, können während des Programmablaufs verändert werden. Dadurch kann man Unterbrechungen (z. B. Ctrl-C von der Tastatur oder eigene Interruptroutinen) auf bestimmte Programmteile beschränken.

Anleitung

Die Anleitung enthält die möglichen Fehlermeldungen und sagt, wie man sie behebt. Ferner werden dort einige Tricks beschrieben, um Programme noch zu beschleunigen. Ein weiterer Pluspunkt der Anleitung ist, daß sie einige interne Informationen gibt, beispielsweise die Speicherverwaltung des Compilers, was besonders fortgeschrittene Programmierer interessieren dürfte.

Der Interpreter

Die Leistungsfähigkeiten eines Compilers sind natürlich auch stark von denen des Interpreters abhängig, deshalb wollen wir ihn hier kurz beschreiben.

OMIKRON-Basic arbeitet mit oder ohne Zeilennummern, ganz nach eigenem Geschmack, erlaubt pascalähnliche, strukturierte Programmierung durch Prozedur- und mehrzeilige Funktionsaufrufe mit Parameterhin- und rückgabe. Trotz der vielen, den Basic-Standard ergänzenden Befehle ist OMIKRON-Basic noch kompatibel zu M-Basic, d. h. man kann diese Programme einfach überspielen und kann, was vor allem für Anfänger wichtig ist, mit gängigen Lehrbüchern arbeiten.

In Sachen Genauigkeit ist OMIKRON-Basic mit seinen doppelt genauen Zahlenformaten bei allen Operationen (19 Stellen) bisher unübertroffen. Im mathematischen Bereich glänzt es durch seine Vielzahl von Befehlen, die einerseits den kompletten trigonometrischen und hyperbolischen Bereich abdecken und andererseits dem Anwender Befehle für Matritzen-Berechnung zur Verfügung stellen, mit denen die Programmablaufgeschwindigkeit wesentlich vergrößert wird.

Alle GEM-Befehle sind in einer Bibliothek eingebaut, d. h. man kann genauso programmieren wie in C.

Fazit

Der Compiler hält das, was man von ihm erhoffte. Nach kurzer Einarbeitungszeit zeigten sich keine Probleme mit dem Übersetzen von Basic-Source-files in Assembler-Programme. Die Geschwindigkeit der übersetzten Programme stellt manche andere Compilersprache in den Schatten und läßt fast die Frage aufkommen, ob man Betriebssysteme demnächst, wenn schon in C statt Assembler, nicht auch in Basic schreiben könnte.

Die neuen, Multitasking betreffenden Optionen des Compilers bereichern das Paket um eine weitere interessante Anwendungsmöglichkeit.

Bleibt zu sagen, daß der OMIKRON Basic-Interpreter zusammen mit dem Compiler das beste Basic-Entwicklungssystem für den Atari ST darstellt.

(HS)

Preis: 159,- DM

OMIKRON-Software Erlachstr. 15 D-7534 Birkenfeld 2 Tel. 07082/53 86



Aus: ST-Computer 09 / 1987, Seite 64

Links

Copyright-Bestimmungen: siehe Über diese Seite