Logo: Geos Online Print Archiv
G.O.P.A. - Geos Online Print Archiv
26.04.2024 Archiv  #  Recherche  #  Links  #  Kontakt  #  Gästebuch  #  Impressum

Index
Register
Login

Die Anzeige des Archivs erfolgt grafisch. Ändern

GeoBasic im Vergleich zu anderen Programmiersprachen

Autor: Jürgen Heinisch

Eine kleine Gegenüberstellung der verschiedenen Programmiersprachen aus Sicht eines Anfängers in Sachen Geos Programmierung.
Der vollständige Artikel inklusive aller Quelltexte und zahlreicher farbiger Bildschirmfotos ist als Upload "programm.zip" im Dateibereich des GUC Web Servers sowie in der GeoBox zu finden. Nach Erscheinen dieser GUP wird der Artikel ferner als HTML Seite online auf unserem Web Server zur Verfügung stehen.

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.
GOC Dateien sind Quellcodes für das GEOS SDK (Software Development Kit).

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
Eine Interpretersprache, die mit MS DOS 6.x und einigen früheren Versionen ausgeliefert wurde. In Windows 95 findet man es auf der CD im Verzeichnis: \OTHER\OLDMSDOS.

C++
Ein Hochsprache auf Compilerbasis. Dabei benutze ich nicht den Borland C++ 3.1 sondern den Zortech C++ Compiler in einer Demoversion. Diese liegt dem Buch C++ Lernen vom Tom Swan, Systhema Verlag GmbH bei. Das 670 Seiten starke Lehrbuch kostet DM 98,-.

IZL 2.0 Interpreter
Der Interpreter IZL wurde von Feras Information Technologies ursprünglich entwickelt, um Programme für den Zoomer schreiben zu können. Der Zoomer ist ein Kleinstrechner (PDA) mit fest eingebautem GEOS System. Das Interpretersystem wurde aber weiterentwickelt, so daß Programme für das Desktop GEOS System und dem HP OmniGo 100/120 entwickelt werden können. Der HP OmniGo ist ein gegenüber dem Zoomer weiterentwickelter PDA.

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
Ab der Version NewDeal 3.0 wird eine visualisierte Interpreter-Programmiersprache mitgeliefert. In der aktuellen Betaversion kann NewBasic schon getestet werden. Mit NewBasic entwickelte Programme sind nur über NewBasic ausführbar. In späteren Versionen sollen aus NewBasic direkt echte GEOS Anwendungen compiliert werden können.

GeoBasic
GeoBasic Mit der ebenfalls visuellen Interpreter-Programmiersprache GeoBasic wird eine direkte Konkurrenz zu NewBasic entwickelt. GeoBasic Programm sind nicht direkt von GEOS aus ausführbar. Es muß immer zunächst GeoBasic geladen, dann die Programmdatei nachgeladen und gestartet werden. Das besondere an GeoBasic ist die Erzeugung von GOC Dateien.
GeoBasic wird von Edward Di Geronimo Jr. entwickelt.

GEOS SDK
Das SDK ist letztlich die maschinennaheste Programmierung für GEOS Programme. Dabei wird mit der Programmiersprache GOC (Geos Objekt Code) eine Mischung zwischen C++ und dem von Geoworks entwickeltem GEOS UI (Geos User Interface) benutzt. Mit dem SDK entwickelte Programme liegen nach der Compilierung als .geo Dateien vor und sind direkt ausführbar.
Zur vollständigen Arbeit mit dem SDK ist zusätzlich zu diesem noch ein Borland C++ 3.0 Compiler (oder eine höhere Version) notwendig. Zum testen der Programme, insbesondere zur Fehlerfindung, kann mit einem zweiten per Nullmodem angeschlossenen Computer gearbeitet werden.

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
Compiler: C++, SDK


Die Vergleiche ...

QBasic
Um unser Beispielprogramm in QBasic zu erstellen sind, nur wenige Zeilen notwendig:

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++
Um unser Beispielprogramm in C++ zu erstellen, sind wie bei QBasic nur wenige Zeilen notwendig:

#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
Um unser Beispielprogramm in IZL zu erstellen, wird gegenüber QBasic und C++ schon deutlich mehr Aufwand betrieben. Dennoch liegt die gesamte Programminformation als ASCII-Text vor.

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.
Während bei QBasic und C++ die Eingaben zeilenweise nacheinander abgefragt wurden, sind in einem Programm mit grafischer Oberfläche in einem einfachen Programm alle Objekte schon zu erkennen. Die Zahlen werden beliebig eingegeben und per Klick auf den Schalter AKTION ausgerechnet.
Das Listing ist noch relativ einfach. Zunächst werden die notwendigen Variablen definiert, dann der Knopf, bei dessen Anklicken die Berechnung ausgeführt wird. Anschließend folgen die Felder für die Beschriftung, Ein- und Ausgabe der Zahlen.
Die Funktion AKTION wird ausgeführt, wenn der Knopf AKTION gedrückt wird. In dieser Funktion steckt die Addition der Zahlen und die Ausgabe der Summe.

NewBasic
Bei NewBasic wird es schon etwas unübersichtlicher. Während der Programmentwicklung gibt es verschiedene Arbeitsschritte. Dies ist das Einfügen von Objekten auf der Programmfläche, das Definieren bzw. Verändern der Eigenschaften der Objekte entsprechend der Wünsche des Programmierers und das Einfügen der Programmaktionen, wie es auf die angebotenen Eingabemöglichkeiten des Anwenders reagieren soll.

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.
Ein ausgewähltes Objekt wird einfach in das Programmfeld (Zahl) geklickt und kann wie ein Objekt in NewDraw frei plaziert werden.

NewBasic 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.
Per Klick auf RUN in dem Basisprogrammteil von NewBasic Builder wird das Programm gestartet.

GeoBasic
GeoBasic Bild 1 Die Arbeit mit GeoBasic unterscheidet sich nicht grundsätzlich von NewBasic. Vieles ist ähnlich. Leider lassen sich die mit GeoBasic erstellten Programme nicht wirklich ausführen. Zwar kann man Eingaben bei Zahlen und Textfeldern vornehmen, aber eine echte Aktion, die eine Funktion ausführt, kann nicht ausgelöst werden.
Das Basisprogramm GeoBasic hat zwei wichtige Menüpunkte, die zur Programmentwicklung beitragen: File und Object.

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.

ZOOMGeoBasic Bild 2 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 !
Bleibt noch der Eingangs erwähnte Menüpunkt "File - Write Source Code ..." zu untersuchen. Wird dieser Menüpunkt angeklickt, so erstellt GeoBasic einen Quellcode in GOC, in dem alle Objekte, die installiert wurden, beschrieben werden.

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.
Insbesondere die Möglichkeit, mit GeoBasic die gewünschten Objekte zu erzeugen und in eigenen SDK Projekten beliebig einzusetzen, macht GeoBasic schon in der v0.3 zu einem wertvollen Werkzeug.

GEOS SDK
Wer das SDK einsetzen will. benötigt zu den anfangs genannten Voraussetzungen auch ein CD ROM Laufwerk und ca. 70 MB freien Platz in seinem Rechner. Die Installation von der CD aus ist recht einfach. Alle Dateien werden in einem Unterverzeichnis PCGEOS gespeichert.

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:
Die Dateien aus BORLAND\BIN kopieren nach PCGEOS\BIN. Die Dateien aus BORLAND\INCLUDE kopieren nach PCGEOS\INCLUDE. Die Dateien aus BORLAND\INCLUDE\SYS kopieren nach PCGEOS\INCLUDE\SYS.

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.

2. Stufe:

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.

SDK 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

 

 

 




Dieser Artikel ist Bestandteil von:

Ausgabe 57

! - - - - - M I C R O F I L M - - - - - ! | Editorial | Zeitplan Jahreshaupttreffen ´98 | Hobbytronik Computershow in Dortmund | Regio Gruppen im Internet | News Regio Baden | 64´er Infos | TextPrint | Aktuelles ... im April | Cebit ´98 | Nachtrag zum Cebit Bericht | ND Icon Collection | GeoBook E-Mail unter NDO Beta 3 | GeoBasic im Vergleich zu anderen Programmiersprachen | Artikel gesucht! | Organisation des Omnigo Startbildschirms | NewDeal und Werbung | Aktuell - weitere NewDeal Produkte lieferbar ...


Kurzlink hierhin: http://geos-printarchiv.de/2757


Letzte Änderung am 01.11.2019