|
|
08.05.2024 | Archiv # Recherche # Links # Kontakt # Gästebuch # Impressum |
Index Login Die Anzeige des Archivs erfolgt grafisch. Ändern |
GeoBasic im Vergleich zu anderen ProgrammiersprachenEine kleine Gegenüberstellung der verschiedenen Programmiersprachen aus Sicht eines Anfängers in Sachen Geos Programmierung. Im Oktober, zeitgleich mit dem Beginn des Jahreshaupttreffens beim Geos User Club (JHT97), erschien die erste Beta-Version von GeoBasic. Da ich zu diesem Zeitpunkt schon mit NewBasic erste Testprogramme erstellt hatte, wollte ich natürlich sofort Vergleiche anstellen. Schon nach den ersten Gehversuchen stellte ich fest, daß GeoBasic eine sehr brauchbare Funktion enthält: es erstellt GOC Dateien. Leider stellte sich ebenso schnell heraus, daß die von GeoBasic erzeugten GOC Quellcodes nicht direkt geeignet sind, um daraus für das SDK compilierbare Programme zu erhalten. Aber diese Eigenschaft, daß GeoBasic GOC Dateien erzeugen konnte, hatte mich noch am ersten Abend auf dem JHT97 dazu veranlaßt, mein SDK erneut zu installieren. Mit einigen Hilfen von Wilfried Konczynski und Falk Rehwagen gelang mir endlich der Einstieg in das Programmieren mit dem SDK. Inzwischen liegt mit dem Programm Formaldehydansatz mein erstes Werk vor. Bis zu meinem vorläufigen Ziel, das Programm Eisprung.IZL in ein mit dem SDK erstelltes GEOS Programm umzusetzen, ist es allerdings noch ein weiter Weg. Der unter anderem durch die im folgenden beschriebenen Tests unterbrochen wird. Dann erreichte mich am 31.12.97 die aktuelle GeoBasic Beta-Version 0.3. Diese mußte natürlich sofort untersucht werden und so entstand Anfang '98 die Idee, einige Programmiersprachen miteinander zu vergleichen. Mit allen Programmiersprachen teste ich immer erst ein sehr einfaches Programm. Dabei geht es darum, zwei Zahlen einzugeben und diese miteinander zu addieren und das Ergebnis auszugeben. Die Aufgabe wurde an folgende Programmiersprachen gestellt: QBasic C++ IZL 2.0 Interpreter IZL Programme liegen in zwei Formaten vor. Zum einen *.IZL; dies ist eine reine ASCII Textdatei mit dem Quellcode, welcher von IZL ausgeführt werden kann. IZL kann aus diesem IZL Code eine "IZT" Datei erstellen. Diese Tokendatei (speziell für IZL compilierte Datei) kann auch von IZL ausgeführt werden und hat den Vorteil wesentlich, schneller abzulaufen. NewBasic GeoBasic GEOS SDK Der Unterschied zwischen zeilenorientierten Programmiersprachen wie QBasic, C++ und IZL zu einer visualisierten Programmiersprache wie NewBasic oder GeoBasic wird beim arbeiten schnell erkennbar. Aus einer Werkzeugkiste nimmt man sich beliebige vordefinierte Objekt wie Zahlen, Textfelder, Schalter u.a.m. und klebt diese per Mausklick in die Programmoberfläche ein. Der Unterschied zwischen Programmiersprachen auf Interpreterbasis und Compilerbasis wird in der Ausführung der Programme deutlich. Compilierte Programme können direkt unter GEOS gestartet werden, wie z. B. NewWrite. Dagegen müssen Programme auf Interpreterbasis immer von dem dazugehörigen Interpreter zunächst geladen und gestartet werden. Interpreter: QBasic, IZL, NewBasic, GeoBasic
QBasic INPUT "Zahl 1: ", zahl1 INPUT "Zahl 2: ", zahl2 ergebnis = zahl1 + zahl2 PRINT "Ergebnis: ", ergebnis Die Bildschirmausgabe sieht dabei folgendermaßen aus: C:\ Zahl 1: 5 Zahl 2: 4 Ergebnis: 9 C:\ Es ist leicht zu erkennen, wie das Programm funktioniert. In wenigen Minuten ist es erstellt und getestet. Natürlich alles ohne grafische Benutzeroberfläche. C++ #include <stream.hpp> main() { int zahl1, zahl2, ergebnis; cout << "Zahl 1: "; cin >> zahl1; cout << "Zahl 2: "; cin >> zahl2; ergebnis = zahl1 + zahl2; cout << "Ergebnis: "; cout << ergebnis; { Die Bildschirmausgabe sieht dabei genauso wie bei QBasic aus: C:\ Zahl 1: 5 Zahl 2: 4 Ergebnis: 9 C:\ Es ist leicht zu erkennen, wie das Programm funktioniert. In wenigen Minuten ist es erstellt und getestet. Natürlich alles ohne grafische Benutzeroberfläche, siehe QBasic. IZL 2.0 variables; zahl1 = 0; zahl2 = 0; ergebnis = "0"; end; button aktion; display "Aktion"; end; label zahl1label; display "Zahl 1: "; value zahl1value; display zahl1; label zahl2label; display "Zahl 2: "; value zahl2value; display zahl2; label etextlabel; display "Ergebnis : "; label ezahllabel; display "0"; function aktion; get zahl1value, zahl1; get zahl2value, zahl2; ergebnis = zahl1 + zahl2; put ezahllabel, ergebnis; end; Die Bildschirmausgabe entspricht dabei schon dem für GEOS typischen Aussehen in Form der bekannten grauen Fenster und Dialogboxen. NewBasic NewBasic speichert seine Programme in der Form DATEI.BAS ab. Die Dateinamenerweiterung BAS wird auch von QBasic benutzt. Dennoch sind NewBasic Programme nicht von QBasic ausführbar. Eventuelle Änderungen sind einfacher in NewBasic selbst möglich, nicht im ASCII Quelltext. Das laufende Programm unterscheidet sich nicht wesentlich von der IZL Version. Quelltext fehlt aufgrund der Länge, siehe Einleitung oben. Bei der Entwicklung von NewBasic Programmen arbeitet man mit mehreren Abteilungen des Programms gleichzeitig. Zunächst ist da das Basisprogramm NewBasic Builder. Die Werkzeugkiste (Toolbox) wird immer sofort eingeblendet. Diese bietet gegenüber den hier dargestellten Funktionen noch weitere Werkzeuge. Diese werden angezeigt, wenn man auf den Knopf BASIC UI klickt. Für unser Programm reichten aber diese Funktion mit den wesentlichen Objekten aus. Es wurden lediglich die Objekte: button, label und number benutzt. Soll die Eigenschaft eines Objekts verändert werden, wird aus dem Menü Windows die Ausgabe "Component Properties ..." gestartet. Nach der Definition der Objekte müssen noch die Funktionen definiert werden. Also die Aufgabe des Programms, wenn auf den Knopf AKTION klickt. Um diese einzugeben, wird zweimal auf den Knopf AKTION geklickt. Dadurch wird ein Editor aufgerufen. Durch Klicken auf "Components: aktionsknopf" und "Events: pressed" erscheint der Inhalt im Editor. Natürlich nur, wenn er vorher schon eingegeben wurde. Man kann leicht erkennen, daß die Berechnung der Ergebniszahl nicht wesentlich von der Verfahrensweise in IZL abweicht. GeoBasic Im Menüpunkt File ist die entscheidende Funktion zum Erzeugen des GOC Object Codes enthalten. Das Menü Object dient zum Einstellen der Eigenschaften zu den Objekten und dem Einfügen neuer Objekte. Zum Einfügen neuer Objekte steht, ähnlich wie bei NewBasic, eine ganze Auswahl zur Verfügung. Nachdem die Objekte eingefügt und plaziert sind, werden die Eigenschaften eingestellt. An dieser Stelle ist die Aufgabe und Leistungsfähigkeit von GeoBasic Beta 2 in der Version 0.3 eigentlich beendet. Nun deutet Beta und V0.3 schließlich auf einen sehr frühen Entwicklungsstand. Entsprechend kann man in Zukunft noch einiges erwarten. Allerdings ist da noch ein wichtiger Menüpunkt! GOC Source Code ..., erzeugt durch GeoBasic ! In der aktuellen Version enthält der Source Code einige kleine Fehler. Dem erfahrenen SDK Programmierer fallen diese gleich auf. Dem Einsteiger werden sie aber Probleme machen. Die Fehlerbereiche sind in unserem Beispiel-Listing fett markiert. Man kann schnell erkennen, daß der Entwickler von GeoBasic hier nur ein paar Flüchtigkeitsfehler übersehen hat. Dies wird in späteren Version sicherlich korrigiert sein. Quelltext fehlt aufgrund der Länge, siehe Einleitung oben. Auch nach Korrektur der Fehler im Source Code kann die GOC Datei nicht sinnvoll mit dem SDK zu einem Programm compiliert werden. Dazu fehlen noch einige Angaben und eine zweite Datei, die für jedes mit dem SDK entwickelte Programm notwendig ist. Diese Datei, das ".GP" File, enthält die Kopfdaten zu jedem Geosprogramm, wie z. B. den Programmnamen und Informationen über das zu verwendende Icon. In dem obenstehenden Beispiel wurden die Fehler aus dem Source Code von GeoBasic korrigiert und die zum Compilieren mit dem SDK notwendigen Ergänzungen eingefügt. Die entsprechenden Stellen sind fett markiert. Beim Lesen des Listing kann man so leicht die Stelle finden, an welcher die Befehle zum Ausführen einer AKTION bei dem entsprechenden Knopf eingefügt wurde. Zum Ende des Listing ist die Methode (Funktion) zu finden, welche die Berechnung der Zahlensumme ausführt. Aus der gezeigten Umsetzung des von GeoBasic erstellten Quellcodes läßt sich also einiges anfangen. Zwar kann man mit GeoBasic noch nicht direkt den kompletten Source Code in GOC und GP erstellen, jedoch ist der Ansatz schon gut nutzbar. GEOS SDK Es gibt kein gedrucktes Handbuch, es sei denn, man kauft es zusätzlich zur CD für etwa $250 Dollar. Allerdings befindet sich die gesamte Dokumentation in zweifacher Form auf der CD. Zum einen als ASCII Datei und zum andern als PDF Datei für das Windows Programm Acrobat Reader, welches ebenfalls mitgeliefert wird. Der zusätzlich notwendige Borland Compiler ist gleichfalls leicht zu installieren. Man benötigt allerdings nicht das komplette Paket. Es reicht der PreCompiler voll aus. Von meinem Borland C++ 3.1 benötige ich gerade mal 1,2 MB. Die Dateien habe ich zusätzlich mit in die entsprechenden Verzeichnisse des SDK kopiert. Die beiden Verzeichnisse BIN und INCLUDE müssen mit in die gleichnamigen Verzeichnisse unter PCGEOS eingebunden werden: Nach einer Anpassung der AUTOEXEC.BAT kann schon das erste Beispiel compiliert werden. Einmal muß der PATH erweitert werden durch Hinzufügen des Verzeichnisses, in dem das SDK und der Borland C++ installiert wurden. Zweitens sind Umgebungsvariablen zu definieren: SET GEOSDIR=C:\NEWDEAL SET ROOT_DIR=C:\PCGEOS Wird mit einem zweiten Computer zur Fehlersuche (debuggen) gearbeitet, sind noch weitere Einträge notwendig. Diese sollen hier aber nicht von Interesse sein. Der Compiler von Borland benutzt eine Konfigurationsdatei: TURBOC.CFG. In dieser steht lediglich eine Zeile mit folgendem Inhalt: -IC:\PCGEOS\INCLUDE Für unser Testprogramm zu GeoBasic habe ich ein Verzeichnis C:\SDK\BASIC angelegt. In diesem liegen die beiden Dateien BASIC.GOC und BASIC.GP Zum Compilieren ruft man den DOS Bildschirm auf und wechselt in dieses Verzeichnis. Insgesamt sind 3 Stufen beim compilieren einer GEOS Anwendung auszuführen. 1. Stufe: C:\SDK\BASIC>mkmf Don´t forget to run "pmake depend" C:\SDK\BASIC>_ Nach der Eingabe von mkmf und dessen Ausführung erfolgt die oben stehende Meldung, welche auf die zweite auszuführende Stufe hinweist. C:\SDK\BASIC>pmake depend C:\SDK\BASIC>_ Ist alles in Ordnung, erfolgen einige Systemmeldungen und am Ende erscheint wieder der Prompt. Fehlermeldung sind deutlich sichtbar. 3. Stufe C:\SDK\BASIC>pmake -n C:\SDK\BASIC>_ Ist alles in Ordnung, erfolgen einige Systemmeldungen und am Ende erscheint wieder der Prompt. Fehlermeldung sind deutlich sichtbar. Sind keine Fehlermeldungen aufgetaucht, ist unsere Anwendung fertig compiliert und kann unter GEOS gestartet werden. In dem Verzeichnis sind neben der erzeugten Anwendung noch einige weitere Dateien erzeugt worden. Diese können gelöscht werden, wenn die Anwendung nicht weiter entwickelt wird. Sind aber noch Änderungen am Programm notwendig, so tun wir dies mit einem Texteditor und compilieren erneut. Nun reicht aber die 3. Stufe der Compilierung aus. Um die 3stufige Compilierung etwas weniger aufwendig zu gestalten, können die 3 Befehle "mkmf", "pmake depend" und "pmake -n" in einer Batch Datei zusammengefaßt werden. Dazu habe ich mir die Datei COMP.BAT erstellt und in dem Verzeichnis C:\PCGEOS\BIN abgespeichert: mkmf pmake depend pmake -n Nun reicht am DOS Prompt die Eingabe von COMP aus, um die Compilierung zu starten. C:\SDK\BASIC>comp Wurden Änderungen am Quellcode vorgenommen, so reicht die 3. Stufe der Compilierung aus. C:\SDK\BASIC>pmake -n Wurden wesentliche Änderungen am Quellcode vorgenommen und sollen die während der Compilierung erzeugten zusätzlichen Dateien gelöscht werden, kann dies mit der schon vorhandenen Batchdatei CLEAN.BAT ausgeführt werden. Diese Datei steht im Verzeichnis: C:\PCGEOS \BIN\ C:\SDK\BASIC>clean PMAKE kann zwei verschiedene Arten der Geos Anwendungen erzeugen. Neben dem schon gezeigten Beispiel kann pmake auch ohne den Parameter -n ausgeführt werden. C:\SDK\BASIC>pmake Auf diese Weise entsteht eine "Error Checking" (EC) Version. Diese dient zum Austesten des Programms in Verbindung mit einem zweiten Rechner. Mit der geschilderten Verfahrensweise sollten die meisten Anwender nun in der Lage sein, daß SDK und Borland C++ so in Betrieb zu nehmen, daß mindestens alle Beispielprogramm, welche dem SDK auf der CD beiliegen, compiliert und getestet werden können.
Jürgen Heinisch
Kurzlink hierhin: http://geos-printarchiv.de/2757 |
Letzte Änderung am 01.11.2019 |