von Harald Schönfeld Während die Fangemeinde der "neuen" Programmiersprache QUICK immer größer wird, ist QUICK vielen CSM-Lesern sich- er eher unbekannt, denn bisher wurde man hier mit Informationen über diese Sprache nicht gerade überhäuft. Aus diesem Grund möchte ich diese Sprache von nun an in dieser Ecke auf Anregung von Ulf Petersen hin vorstel- len und auf ihre Fähigkeiten und Eigen- heiten hinweisen. Das QUICK-Programmier-System QUICK ist eine Compilersprache, d.h. daß man zunächst einen Quelltext schreibt, der dann vom Compiler in ein lauffähiges Programm übersetzt wird. Der Vorteil dieses Verfahrens ist, daß das entstehende Programm zu 100% aus Maschinensprache besteht. Da die Sprache immer so arbeitet, kann die Umsetzung in Maschinensprache natürlich besser vor sich gehen als bei anderen Verfahren. Bei Interpreter-Sprachen ist es ja öfters ein Glücksspiel, ob das Compilieren wirklich klappt. Zu QUICK gehören also mehrere Programme: -Der Editor zum Schreiben der Texte -Der Compiler zum Übersetzen -Die Shell zum Verbinden der beiden Wenn man das so liest, könnte man jetzt vermuten, das Ganze artet in ein ewiges Gelade aus. Dem ist aber nicht so, da alle 3 Programme gleichzeitig im Speicher vorliegen ! (Unbenötigte Teile werden hinters Betriebssystem kopiert). Der Sprachaufbau QUICK lehnt sich in seinem Konzept an andere Compilersprachen (besonders "C") an. So wie bei "C" oder PASCAL müssen alle Variablen deklariert werden, bevor sie benutzt werden können. Das hat den Vorteil, daß man mit verschiedenen Arten von Variablen hantieren kann. Standartmäßig sind das die Byte- und Word- ("2 Byte") Variablen. Außerdem können ARRAYs (eine Art String) de- klariert werden. Da Fließkommazahlen für die meisten Programmieraufgaben nicht nötig sind, wurden diese in den Grundwortschatz von Quick nicht aufge- nommen. Für BASIC-Freaks ist so etwas vielleicht kaum zu glauben, aber da die Fließkommazahlen der Hauptgrund für die Schneckengeschwindigkeit von BASIC sind, mußten sie unbedingt verbannt werden. Aber wie kann man sich dann helfen, wenn man eben doch mit SINUS & CO arbeiten will/muß ? Kein Problem ! QUICK ist durch Libraries (Biblio- theken) zu erweitern. Mit deren Hilfe kann man sich universale Unterprogramme erstellen, die auf Bedarf vom Compiler nachgeladen werden können. Eine Fließ- kommalibrary gehört u.a. zum Liefer- umfang. Ist ja klar... Noch ein Wort zu den Variablen. Dem aufmerksamen Leser könnte es schon aufgefallen sein: Für Bibliotheken braucht man natürlich "lokale" Variablen. (Für BASIC-Fundamentalis= ten:) Variablen, die nur im augenblicklichen Unterprogramm bekannt und vorhanden sind. Und natürlich sind auch Variablenübergaben beim Funktions- aufruf möglich. Es lebe die struktur- ierte Programmierung ! Die wird auch durch Blockbefehle wie REPEAT...UNTIL und WHILE...WEND unterstützt. Eine Einschränkung muß man jedoch machen: Das Schachteln von Funktionen ist in QUICK nicht möglich. Da ist PASCAL ein gutes Stück überlegen. Die Befehle In QUICK gibt es ca. 60 Befehle. Da- runter sind so vertraute wie PEEK und POKE, aber auch so einmalige wie MOUSE (ST-Maus abfragen), CUT (Grafik aus- schneiden), PASTE (Grafik einfügen) und DIGI (digitalisierten Sound abspielen). Eine besondere (und absolut einmalige) Stärke von QUICK ist jedoch, daß Ver- tical-Blank-Interrupts und Display- List-Interrupts automatisch erzeugt werden können. Man schreibt dazu ein ganz normales Unterprogramm, nur an- statt mit dem Befehl ENDPROC wird dieses mit ENDDLI oder ENDVBI beendet. Alles weitere erledigt QUICK. Um wie- viel farbenfroher wäre manches TURBO- Basic Spiel, wenn dort sowas möglich wäre... Auch die Benutzung der Player wurde vereinfacht, weil es einen Befehl zum schnellen Kopieren der Formdaten in den Playerbereich gibt. Und Assemblerfreaks können sich über Befehle wie ASL, LSR, INC, CALL, INLINE usw. freuen. Nach soviel Vorreden gibt's nun endlich ein einfaches Beispielprogramm: Lösche den Speicherbreich von $6000 bis $9000 (24576 bis 36864). In Basic sieht das so aus: 10 FOR I=24576 TO 36864 20 POKE I,0 30 NEXT I Das Programm verschlingt ca. 70 Sekunden (in TURBO Basic ca. 22 sek.) In QUICK sieht's etwas anders aus: WORD Variablen Deklaration Ä ADR Ü MAIN ADR=$6000 Wert zuweisen REPEAT POKE(ADR,0) ADD(ADR,1,ADR) Schleifenzähler+1 UNTIL ADR=$9000 Abbruchkriterium ENDMAIN Der Text ist zwar ein bißchen länger, dafür braucht das Programm aber nur 1,8 Sekunden Rechenzeit. Wem's noch zu langsam ist, dem sei der Befehl CLR() empfohlen: MAIN CLR($60,48) ENDMAIN Damit ist der Bereich in ca. 0,2 Sekun- den gelöscht. Aber selbst wenn man Betriebssystem- routinen benötigt (z.B. Daten auf Disk schreiben), ist QUICK schneller. Schreiben wir beispielsweise die Daten von 24576 bis 28672 in das File TEST.DAT auf der RAM-Disk: 10 OPEN #2,8,0,"D8:TEST.DAT" 20 FOR I=24576 TO 28672 30 ?#2 CHR$(PEEK(I)) 40 NEXT I 50 CLOSE #2 In BASIC kann man 40 Sekunden, in TURBO-Basic 18 Sekunden warten. Das QUICK-Programm sieht so aus: BYTE Ä CHR=200 Ü WORD Ä ADR Ü MAIN ADR=$6000 OPEN(2,8,0,"D8:TEST.DAT") REPEAT PEEK(ADR,CHR) BPUT(2,1,200) ADD(ADR,1,ADR) UNTIL ADR=$7000 CLOSE(2) ENDMAIN Das Ganze dauert ca. 4,5 Sekunden. Nun, diese Programme sind evtl. nicht besonders nützlich. Wie wär's also mit dem Sieb des Erathostenes, das zur Primzahlberechnung dient. Um die ersten 1890 Primzahlen zu berechnen, benötigt BASIC 363 Sekunden, TURBO-Basic 148 Sekunden und QUICK V1.6 ca. 6 Sekunden. Die neueste Version V2.0 tut's sogar in nur 5 Sekunden. Der Zeitvorteil ist hier noch deutlicher als bei den an- deren Beispielen ! Daran kann man sehen, daß die neuere Version V2.0, die seit ca. 6 Monaten zu haben ist, noch ein Stückchen schneller ist. Außerdem wurden ein paar Bugs beseitigt (Irren ist menschlich...), ein paar neue Befehle eingeführt und vor allem die Benutzung der RAM-Disk optimal ge- staltet. Ich hoffe, daß ich mit diesem Text das Interesse an QUICK auch unter den USER-MAG Lesern wecken konnte. Ich finde es nämlich immer wieder traurig, daß es Leute gibt, für die BASIC das Höchste ist, obwohl diese Sprache wirk- lich nur was für Gelegenheitspro- grammierer oder Anfänger sein sollte (Das sagt ja schon der Name: Beginners All Purpose ...). Wer seinen ATARI aus- reizen will sollte lieber QUICK (oder ACTION! oder Assembler, die schnellste Sprache, lernen). QUICK kam nicht zu spät (die Verkaufs- zahlen haben's gezeigt) und solange es lernwillige XL-User gibt ist auch der Zug fuer neue Sprachen nicht abgefahren - die BASIC-Gurus wollen bloß nichts neues lernen... Un damit sich jeder ein Bild über die Vorteile von Quick machen kann, befin- det sich auf der Rückseite der Disk eine Demo zu dieser Programmiersprache. Wer QUICK bestellen möchte, sollte sich unsere Rubrik "Sonderpreise für Abo- nennten" unbedingt durchlesen.