Des Kaisers neue Kleider oder: Lattice C im neuen Gewand


Seit kurzer Zeit ist der Lattice C Compiler von Metacomco in einer neuen verbesserten Version erhältlich. Es handelt sich dabei um die Version 3.04, die mir zum Test vorlag.

Zum Lieferumfang des Compilers gehören drei Disketten sowie ein über 600 Seiten starkes Handbuch. Das Paket stellt ein vollständiges C-Entwicklungssystem dar und, enthält alle nötigen Hilfsprogramme, wie:

Die neue Version des Compilers wurde um viele Details erweitert. So können nun Strukturen an Funktionen übergeben bzw. zurückerhalten werden und nicht nur Pointer auf diese. Außerdem wurden einige Beschränkungen der alten Version geändert. Der Compiler arbeitet in der neuen Version wesentlich flotter. Er kommt zwar nicht ganz an die Zeiten vom Megamax heran, aber man kann gut damit auskommen. Der Aufruf des Compilers gestaltet sich mittels eines Treiberprogramms (LC.TTP) relativ einfach. Es lassen sich jetzt auch Joker im Aufruf verwenden.

So compiliert das Kommando „LC F:s?“ alle Sourcedateien auf Drive F: deren Name mit ’s’ beginnt und 2 Zeichen lang ist. Die Angabe der Extension ist nicht nötig. Der Compiler-Treiber hängt für Sourcedateien immer den Prefix ’.C’ an. Der Compiler läßt sich auch über den alten Batch Prozessor vom Entwicklungssystem steuern z. B. mit folgendem Batch File:

	lc1.ttp -n %1
	lc2.ttp %1
	link.ttp %1 c -nolist
	wait

Alle Änderungen gegenüber früheren Versionen sind im Handbuch erwähnt, wo eine Tabelle zu finden ist, die Auskunft darüber gibt, wann man einzelne Object Module neu compilieren muß, damit sie mit den neuen Library Funktionen einwandfrei arbeiten. Die Libraries wurden auch erheblich erweitert. Der Umfang lässt keine Wünsche offen. So sind die schnellen Floating Point Routinen von Motorola (Motorola 68881 wird optional unterstützt) ebenso enthalten, wie viele vom Unix Betriebssystem bekannte Funktionen, für String- und Filehandling sowie alle Funktionen vom GEM-VDI bzw. GEM-AES. Zu den beiden letztgenannten ist allerdings eine kleine Unannehmlichkeit zu bemerken. Wie sicher viele von Ihnen wissen, arbeiten die GEM Funktionen auf dem ST mit Parametern einer Länge von 16 Bit. Bei den anderen gängigen Compilern für den ST wird für diese normalerweise der Datentyp ’int’ (Integer) benutzt. Beim Lattice C ist eine Variable vom Typ ’int’ nun aber 32 Bit lang, was die GEM Funktionen in arge Bedrängnis bringt und diese wiederum nicht selten mit einer Bombendrohungen auf diesen Mißstand aufmerksam machen. Wenn man aber seine Programme in Hinsicht auf Portabilität auslegt und in Anbetracht der Tatsache, daß unterschiedliche Computersysteme unterschiedliche Längen dieses Typs benutzen, ist diese Unzulänglichkeit leicht aus der Welt zu schaffen. Metacomco hat zu diesem Zweck eine Headerdatei mit einigen Definitionen zusammengestellt, die einem sehr hilfreich sind. Schreibt man statt ’int’ ’WORD’, bindet diese Headerdatei namens ’PORTAB.H’ mit ein, so nimmt alles seinem gewohnten Lauf. Gelingt es nicht, muß es nicht am Compiler. Diese Tatsache hat auch ihre guten Seiten. So waren sauber geschriebene Programme nach erfolgtem Compilerlauf und unter Verwendung des LATTICE C auf dem IBM PC sofort und ohne Änderungen lauffähig. Es ist ein guter Compiler, mit dem mir das Arbeiten sehr viel Spaß gemacht hat.

Der Compiler erzeugt ein Objectcode File, wahlweise im GST oder DRI Format, das mit dem Linker bearbeitet werden kann, ohne Umweg über den Assembler, wie z.B. beim Compiler von Digital Research. Dies wäre nicht möglich, denn ein Assembler wird nicht mitgeliefert. Um eigene Assembler Routinen zu erstellen und in C-Programme mit einzubinden, kommt man um die Anschaffung eines Assemblers (der Assembler der Firma GST sei hierzu empfohlen) nicht herum.

über den Linker sollen hier keinen großen Worte verloren werden. Es handelt sich um das Produkt von GST, das auch bei diversen anderen Sprachen sein Können schon unter Beweis gestellt hat, z.B. Prospero Pascal, Prospero Fortran sowie natürlich auch bei dem Pascal Compiler von Metacomco. Leider arbeitet der Linker nicht mit der Geschwindigkeit, die der neue C Compiler vorlegt.

Im Folgenden werden nun noch kurz die wichtigsten Tools (Hilsfprogram-me) vorgestellt, die dem Paket beiliegen.

Das Menu + Programm

Es handelt sich hierbei um eine Shell, mit der der Compiler sehr einfach gesteuert werden kann. Die Inbetriebnahme des Systems mit Hilfe dieses Programmes gestaltet sich sehr einfach. Es lassen sich alle wichtigen Parameter einstellen und abspeichern, die bei jedem Neustart automatisch geladen werden, so daß man stets seine eigene Shell zur Verfügung hat. Die Voreinstellungen auf der mitgelieferten Disk sind so ausgelegt, daß man ohne Änderungen sofort loslegen kann. Für Neulinge in Sachen 'Lattice C’ ist im Handbuch ein kompletter Ablauf eines Edit-Compile-Linkprozesses (eines sogenannten „Turn Around“) abgedruckt, den man Schritt für Schritt nachvollziehen kann, um zu sehen wie der Compiler und Linker arbeitet. Auch fertige Programme lassen sich von der Shell aus starten, ohne diese verlassen zu müssen. Bei aller Einfachheit, die diese Shell bietet, dürfen zwei Dinge nicht vergessen werden, die mir bei der Benutzung unangenehm auffielen. Zum einem lassen sich die einzelnen Funktionen der Shell ’nur’ mit der Maus erreichen, was den Arbeitsfluß doch etwas bremst.

Den zweiten Punkt entdeckte ich, nachdem ich verzweifelt versucht hatte, die Shell über Tastaturkommandos zum Arbeiten zu bringen. Ich weiß ’ Man lese zuerst das Handbuch dann...’, naja ich bin halt ein ungeduliger Mensch. Nachdem ich also in der Shell einige Tastenkombinationen getestet hatte und nun wieder den Editor startete, wurden doch tatsächlich die in der Shell gedrückten Tasten in den Sourcecode übernommen. Da der Editor, wie wir später noch feststellen werden, im Gegensatz zu der Shell sehr gut über Tastatur gesteuert werden kann, können nun die seltsamsten Dinge passieren. Man stelle sich vor: es werden statt Buchstaben Befehle für 'Zeilen löschen’ übergeben. Die Folge war ein verstümmelter Source Code. Mit dieser Tasache läßt es sich aber gut leben wenn man weiß, daß Tastaturbe-fehle in der Shell nicht wirken und man diese auch nicht mehr benutzen wird.

Da wir nun schon den Editor angesprochen haben, soll er hier auch ausführlich beschrieben werden. Es handelt sich dabei um einen voll in GEM integrierten Editor, mit maximal vier Arbeitsfenstern. Alle Fenster sind frei über den Bildschirm verschiebbar, ganz so wie man es auch von anderen GEM-Programmen gewohnt ist. Die Bedienung gestattet eine Steuerung über die Menüleisten, sowie über Ta-sten-Kommandos. Die Stärken des Editors sind dann auch diese Kommandos, die sich aus sogenannten 'einfachen Befehlen’ zusammensetzen und auf den Funktionstasten gespeichert werden können. Ein Beispiel soll dies erklären:

Angenommen sie wollen den Editor mit der Taste F10 dazu veranlassen, drei Zeilen zu löschen und dann die Arbeit zu beenden. Sie tippen dazu folgendes Kommando:

	FN10=/D;D;D;Q/

Wird anschließend die Taste F10 gedrückt, führt der Editor das Gewünschte aus. Jeder kann sich nun selbst ausmalen, was man mit diesen Funktionen alles anstellen kann. Natürlich lassen sich auch alle Einstellungen abspeichern, so daß sie nach einem Neustart wieder zur Verfügung stehen.

Im großen und ganzen läßt es sich mit dem Editor recht gut arbeiten. Die verfügbaren Funktionen sind ausreichend und arbeiten alle mit angemessener Geschwindigkeit. Einzig und allein das 'Scrolling’ kann in Bezug auf die Geschwindigkeit nicht mithalten. Auch ein dadurch bedingtes störendes Nachlaufen des Cursors ist festzustellen. (In diesen Sachen bin ich wohl doch zu sehr von anderen Programmeditoren verwöhnt.)

Das RCS

Bei dem im System enthaltenen Re-source Construction Set handelt es sich um das Programm von Kuma in der Version 1.2. Eine Beschreibung hierüber erübrigt sich, da schon ein Test in der Mai-Ausgabe der ST Computer erschien. Etwas darf aber nicht vergessen werden. Das RCS-Programm verträgt sich nicht mit den neuen Atari Computern der Mega-Serie. Man kann nur hoffen, daß dieser Fehler bald beseitigt wird, und das Programm allen Usern zur Verfügung steht.

Der Debugger

Der Debugger in dem System nennt sich DEBUG+ und ist ein symbolischer Debugger mit LINK-LOADER. Was ist ein Link Loader? Im Handbuch wird er wie folgt beschrieben: „Ein Link Loader ist ein Programm, das beim Einlesen der Objektmodule diese im Speicher des Rechners zusammen mit Libraryfunktionen zu einem ausführbaren Programm zusammenlinkt“. Es ist eigentlich eine feine Sache, denn man kann nun seinen Source compilieren und dann ohne Linkvorgang sofort das Objektmodul im Debugger starten. Diese Tatsache verkürzt die Programmentwicklung drastisch, da die langen Linkzeiten entfallen. Ansonsten kennt der Debugger alle Befehle, die zum Aufspüren der Bugs nötig sind. Alle Befehle hier aufzuführen ginge zu weit. Um an die Symbolnamen zu kommen, die man im Sourcecode vergeben hat, muß man allerdings den Linker darüber in Kenntnis setzen, daß man mit diesen arbeiten möchte. Dies geschieht über die Direktive debug’, die in die Linker-Commandline zu schreiben ist.

Eine weitere Zugabe zum Paket besteht aus einem Make Utility, kurz MAKE genannt. All diejenigen, die schon mal mit dem UNIX Betriebssystem gearbeitet haben, werden sich an dieses nützliche Utility, zur Entwicklung von Programmen, das aus mehreren Object-Modulen besteht, sicher erinnern. Für alle anderen sei hier nochmals auf die Funktionsweise eines solchen Programms hingewiesen.

Bei der Entwicklung eines großen Programms teilt man den Sourcecode in einzelne Teile auf, auch Module genannt. Man tut dies aus mehreren Gründen. Ich möchte hier nur zwei davon nennen. Zum einem kann man Funktionen, die zusammengehören in einem Modul halten, z. B. alle Funktionen zur Ein-Ausgabe oder alle Grafik Funktionen. Dies erhöht den Überblick über das Programm. Man stelle sich nur vor, man suche in einem Sourcecode von über 1 MByte Umfang, eine Funktion, die z. B. einen Kreis zeichnet. Hat man sich das Programm in Module unterteilt führt eine Suche im Grafik Modul (wahrscheinlich) zum Erfolg. Der zweite wichtige Punkt besteht darin, die Compiler-Zeiten zu verkürzen. Fertigestellte und getestete Module müssen nur einmal compiliert werden bevor sie - mittels Linker - zum fertigen Programm zusammengebunden werden.

Die Aufgabe eines Make Utility besteht nun darin zu überwachen, welche Module geändert wurden und nur die geänderten neu zu compilieren, um danach wieder alles zusammenzulinken. Das Make Programm überwacht dies mit Hilfe der Datums- und Zeitangaben, die mit den einzelnen Files auf Disk geschrieben werden. Dies setzt natürlich eine immer richtig eingestellte Systemuhr voraus. Um ein einwandfreies Funktionieren zu gewährleisten, müssen in einem sogenannten make-file die Abhängigkeiten von Source und Object Modulen untereinander definiert werden. Im Handbuch ist hierüber ein großer Abschnitt mit vielen Beispielen vorgesehen, der die Handhabung der Make sehr detailliert behandelt.

Fazit

Das LATTICE C-Entwicklungssystem stellt eine professionelle Implementation der Sprache C auf dem Atari ST dar, der damit mehr denn je das Klischee eines Homecomputers verliert. Die Verfügbarkeit des LATTICE C Compilers auf anderen Computer-Systemen ist wirklich von Vorteil für all diejenigen, die sich gelegentlich mit Portabilitätsproblemen herumschlagen müssen.

Alle nötigen Hilfsmittel (vom Assembler einmal abgesehen) sind enthalten, die Funktionen des Atari Betriebssystem sind außerdem leicht erreichbar. Einer Entwicklung professioneller Software steht also nichts mehr im Wege. Was mir besonders gefiel, waren der sehr umfangreiche Compiler mit allen Libraries, der leistungsfähige Debugger sowie das ausgezeichnete Handbuch in deutscher Sprache, das sich stark an die englische Version anlehnt, aber tadellos übersetzt wurde und sehr übersichtlich aufgebaut ist. Einzig und allein die Tatsache, daß der Leser aufgrund des dünnen Papiers schon auf der Vorderseite erahnen kann was auf der Rückseite auf ihn zukommt, schmälerte bei mir die Begeisterung, die aufkam als ich das Buch in den Händen hielt. Dies mag sicher eine Preisfrage sein und hier haben sich Metacomco und der Vertreiber, es handelt sich um G. Knupe GmbH + Co KG Dortmund, was sehr erfreuliches einfallen lassen, kostet doch das gesamte Paket nur DM 298,- und ist nicht zuletzt auch dadurch eine ernsthafte Konkurrenz zu bereits erhältlichen Compiler Paketen.

(HJR)

G.Knupe GmbH + Co KG Postfach 354 4600 Dortmund 1



Aus: ST-Computer 10 / 1987, Seite 124

Links

Copyright-Bestimmungen: siehe Über diese Seite