GUI-Programmierung leicht gemacht mit Basic

Aus LinuxUser 11/2012

GUI-Programmierung leicht gemacht mit Basic

© Paolo De Santis, 123RF

Einfacher Zugang

Um ansprechende Programme zu entwickeln, braucht es keinen Vollprofi, der Programmiersprachen mit der Muttermilch aufgesogen hat: Mit einem Basic-Dialekt kommt im Prinzip jeder schnell zu einem ordentlichen Ergebnis.

In der Ära der Home-Computer entwickelten viele Anwender im Privatbereich kleine Applikationen und gaben diese weiter. Der Grund dafür lag schlicht darin, dass jedes ausgelieferten Gerät als Programmiersprache einen (meist fest im ROM verdrahteten) Basic-Dialekt mitbrachte. Der zeichnete sich dadurch aus, dass er mehr oder weniger einfach und schnell zu erlernen war.

Mittlerweile hat sich der Irrglaube verbreitet, dass GUI-Anwendungen unter Linux heutzutage nur in C++ oder mit komplexen Skriptsprachen umzusetzen seien – vorzugsweise von Profis, die Kenntnisse über den Zugriff auf diverse Bibliotheken besitzen. Das stimmt so aber nicht: Es gibt für diesen Zweck eine Vielzahl passender Sprachen, darunter mehrere Abkömmlinge von Basic.

Gambas

In den 90er Jahren war der französische Programmierer Benoît Minisini von der Microsoft-Programmiersprache Visual Basic fasziniert und abgestoßen zugleich.

Ihn begeisterte der Gedanke einer einfach zu erlernenden Sprache, mit Anwender die Programme nicht ausschließlich durch Schreiben von Codezeilen entwickeln, sondern stattdessen die Oberfläche mit dem Mauszeiger zeichnen und nur noch die Logik, mit der die GUI-Elemente auf Aktionen reagieren, auf konventionellem Wege schreiben.

Bei näherem Hinsehen kam Minisini jedoch zu dem Schluss, dass Visual Basic unlogische Sprachkonzepte enthielt und fehlerhaft war. So entwickelte er ein eigenes Basic mit visuellem GUI-Designer und veröffentlichte es 1999 als freie Software – Gambas [1] war geboren.

In den langen Jahren der Entwicklung hat sich rund um Gambas eine Community gebildet, die das Projekt mit Patches, Dokumentationen und Ports unterstützt. Die Linux-Version gilt als sehr ausgereift und läuft auf verschiedenen Prozessorarchitekturen, darunter x86 und x86_64, aber auch auf dem ARM-Prozessor des Raspberry Pi. Der Windows-Port – er benötigt eine Cygwin-Installation – befindet sich ebenso wie die Version für Mac OS X noch in einem frühen Stadium der Entwicklung.

Die Installation

Unter den meisten Distributionen richten Sie Gambas direkt über den Paketmanager ein. Nicht alle liefern jedoch in ihren Repositories die neueste Version. Den Vogel schießt dabei Ubuntu ab, das selbst für “Precise Pangolin” in seinen Paketquellen statt des aktuellen Gambas 3 lediglich das veraltete Gambas 2 führt (Abbildung 1).

Abbildung 1: Ubuntu-Benutzer sollten die Paketquellen um einen PPA-Eintrag erweitern, ansonsten installiert der Paketmanager eine völlig veraltete Gambas-Version.

Abbildung 1: Ubuntu-Benutzer sollten die Paketquellen um einen PPA-Eintrag erweitern, ansonsten installiert der Paketmanager eine völlig veraltete Gambas-Version.

Um Gambas 3 zu erhalten, fügen Sie den Paketquellen daher das Gambas-3-PPA hinzu. Dazu geben Sie in einem Terminalfenster Zeile 1 aus Listing 1 ein. Nach der Eingabe des Passworts aktualisieren Sie die Paketlisten (Zeile 2). Nun stehen die Pakete für Gambas 3 zur Installation bereit (Zeile 3).

Listing 1

$ sudo add-apt-repository ppa:nemh/gambas3
$ sudo apt-get update
$ sudo apt-get install gambas3

Einstieg in die Sprache

Nach dem Start von Gambas empfängt Sie ein übersichtlicher, deutschsprachiger Assistent. Die über [F1] abrufbare Hilfe dagegen ist überwiegend in Englisch gehalten und fällt knapp aus. Die IDE schlägt zunächst vor, eines der Beispielprogramme zu betrachten. Einsteigern hilft das durchaus beim Erlernen der Sprache. Alternativ wählen Sie einen Projekttyp aus (Abbildung 2), etwas ein GTK-Programm oder ein Spiel, das für Grafik und Sound auf Simple Direct Layer (SDL) setzt.

Abbildung 2: Gambas bietet gleich nach dem Start die Möglichkeit, ein Projekt mit allen spezifischen Parametern anzulegen.

Abbildung 2: Gambas bietet gleich nach dem Start die Möglichkeit, ein Projekt mit allen spezifischen Parametern anzulegen.

Bei einer GUI-Applikation klicken Sie die Programmfenster unkompliziert mit der Maus zusammen (Abbildung 3). Das klappt ähnlich intuitiv wie in einem Malprogramm. Rechts unten finden Sie die benötigten Elemente, die Sie im mittleren Bereich des Programmfensters platzieren. Rechts oben definieren Sie die Eigenschaften der jeweiligen Komponente, bei einem Button etwa den Text und den dazu zu verwendenden Font.

Abbildung 3: Mit dem GUI-Designer von Gambas gelingt es im Nu, einen Dialog zu gestalten.

Abbildung 3: Mit dem GUI-Designer von Gambas gelingt es im Nu, einen Dialog zu gestalten.

Um die hinter der Oberfläche stehende Logik des Programms zu schreiben, gilt es die Programmiersprache zu erlernen. Hierfür steht zum einen die englische Anleitung in Form eines Wikis [2] bereit. Für Anfänger empfiehlt es sich hingegen, das deutschsprachige, gut verständliche Wikibook zu Gambas [3] zur Hand zu nehmen.

Dieses legt zwar eine alte Version zugrunde, hilft aber trotzdem ein Grundverständnis für die Programmiersprache zu schaffen. Danach genügt es oft, zum Nachschlagen die aktuelleren Infos der englischen Seite zu verwenden. Der Ansatz, ein deutsches Buch zur aktuellen Version zu erstellen [4], steckt noch in den Anfängen. Manchen mag diese Art des Lernens liegen; andere Benutzer schreckt es unter Umständen ab, sich die Informationshäppchen selbst im Netz zusammensuchen müssen.

Ein gedrucktes Buch zu Gambas existiert auf dem hiesigen Markt nicht. Sie haben jedoch die Möglichkeit, Fragen auf der Mailingliste Gambas-Users [5] oder im deutschen Gambas-Forum [6] zu stellen. Fortgeschrittene finden insbesondere auf der Mailingliste schnell Informationen, für Einsteiger dürfte der Austausch von Nachrichten allerdings unübersichtlich wirken oder gar unverständlich bleiben.

Die Sprache selbst ist objektorientiert angelegt, der Sprachumfang fällt moderat aus. Es existieren jedoch einige sogenannte “Komponenten”, also Erweiterungen für bestimmte Anwendungszwecke – zum Beispiel um mit wenig Aufwand auf Datenbanken zuzugreifen oder Videos abzuspielen.

BlitzMax

Die Sprache BlitzMax blickt ebenfalls auf eine lange Entwicklungsgeschichte zurück. Das Vorgängerprodukt Blitz Basic erschien vor rund 20 Jahren. Damals lag der Einsatzzweck vorwiegend im einfachen Entwickeln von Computerspielen.

Nach mehreren Entwicklungszyklen der Sprache, die unter diversen Namen auf den Markt kamen, wie zum Beispiel Blitz Plus, erschien 2004 die erste Version von BlitzMax. Diese bietet in ihrer derzeitigen Fassung modernere Elemente sowie Möglichkeiten zum Entwickeln von GUI-Anwendungen über die Grenzen von Plattformen hinweg.

Es existieren Versionen für Linux, Windows und Mac OS X. Erstere beide laufen auf x86 und x86_64, letztere berücksichtigt zusätzlich die ältere PowerPC-Generation. Andere Prozessorfamilien, wie etwa die inzwischen recht verbreiteten ARM-Architektur, unterstützt die Sprache nicht.

Erste Schritte

Wer BlitzMax ausprobieren möchte, sieht sich mit einer gewöhnungsbedürftigen Produktpolitik konfrontiert: Für jede Plattform außer Linux existieren Demo-Versionen zum Ausprobieren der Sprache. Benutzer des freien Betriebssystems hingegen müssen ohne Testmöglichkeit direkt die Vollversion für 80 Euro erwerben.

Zwar enthält die Homepage den Hinweis, die Linux-Demo sei “momentan nicht verfügbar”, doch dieser steht schon seit der Veröffentlichung der ersten Version im Jahre 2004 dort. Wer den Kaufpreis investiert, erhält immerhin ohne Zusatzkosten die Lizenzen der Programmversionen für alle anderen Betriebssysteme hinzu – für die Crossplattform-Entwicklung von Anwendungen auf derselben Codebasis ist das durchaus interessant.

Die Installation gestaltet sich unkompliziert: Nach dem Bezahlen der Kaufversion laden Sie ein Archiv von der Hersteller-Homepage [7] herunter und entpacken es in ein beliebiges Verzeichnis. Gegebenenfalls müssen Sie aus dem Standard-Repository der Distribution noch weitere Pakete installieren, eine beiliegende Textdatei nennt die entsprechenden Abhängigkeiten.

Nun haben Sie die Möglichkeit, die Entwicklungsumgebung über den Konsolen-Befehl MaxIDE zu starten. Anschließend empfiehlt es sich, die Font-Größe über File | IDE Options an die Bildschirmauflösung anzupassen (Abbildung 4). IDE und Online-Hilfe sind komplett in Englisch verfasst. Zwar besteht theoretisch im Optionen-Dialog die Möglichkeit zur Auswahl einer anderen Sprachdatei, das Archiv enthält aber nur eine für Englisch.

Abbildung 4: Bei BlitzMax empfiehlt es sich, die Font-Größe der IDE anzupassen.

Abbildung 4: Bei BlitzMax empfiehlt es sich, die Font-Größe der IDE anzupassen.

Konzept & Community

Die Sprache hat eine rege Community. Im Forum des Herstellers [8] finden sich zahlreiche Einträge, allein die Sektion zum Programmieren von grafischen Oberflächen enthält über 6000 Threads. Ferner finden sich dort einige Tutorials für diverse Einsatzfälle des Basic-Dialekts. Daneben stellen emsige Nutzer eigene Module bereit, also Bibliotheken mit neuen Funktionen, wie zum Beispiel für SQL-Zugriffe.

Daneben existiert ein herstellerunabhängiges, deutschsprachiges Portal zu BlitzMax [9]. Dieses fällt zwar nicht so umfangreich aus wie jenes des Herstellers, doch hier reagieren die Mitglieder ebenso schnell auf Fragen.

Die Original-Entwicklungsumgebung enthält keinen GUI-Designer wie Gambas. Sie haben also keine Möglichkeit, die Oberfläche einer neuen Applikation mit dem Mauszeiger zusammenzuklicken. Dazu müssen Sie zu den Produkten von Drittanbieter greifen, die nach der Designphase den passenden Code generieren. Solche Tools gibt es jedoch in der Regel nur für Windows oder Macintosh, unter Wine lassen sie sich nur begrenzt zum Laufen bringen. Daher gilt es also unter Linux die Oberfläche komplett von Hand zu programmieren.

Das fällt jedoch leichter als gedacht: So bewirkt die kurze Programmzeile aus Listing 2, dass das Fenster, das Sie mit MeinFenster referenzieren, einen Button mit dem Label MeinButton enthält. Darüber hinaus enthält die Zeile Angaben zur Position sowie der Breite und Höhe. Es existiert ein Zusatz, um dies über das objektorientierte Paradigma zu realisieren. Dabei legen Sie Objekte an, die auf Ereignisse (“Events”) reagieren – im Fall eines GUI-Objekts also beispielsweise auf einen Mausklick.

Listing 2

Local MeinButton:TGadget = CreateButton("Klick Mich!",140,60,80,40,MeinFenster)

Objektorientiertes Programmieren, das in Gambas zum Mittel der Wahl gehört, empfiehlt sich vor allem, um bei größeren Projekten besser den Überblick behalten und diese besser warten zu können. Jedoch legt Objektorientierung für Programmiereinsteiger unter Umständen die Hürde etwas höher.

Das Denken in Objekten fällt beim Gestalten einer Oberfläche noch relativ einfach. Bei abstrakteren Problemen wird es für den Einsteiger allerdings unter Umständen schwierig, das Handeln des Programms in Objekte zu fassen, anstatt einfach nur mit den Programmzeilen nacheinander dem Computer zu vermitteln, was er als nächstes tun sollte. Der letztgenannte und eigentlich für Basic typische Ansatz, das imperative Programmieren, steht in BlitzMax zwar je nach verwendeter Bibliothek bereit – konsequent kommt er jedoch nur in Purebasic zum Einsatz.

Purebasic

Vor 12 Jahren erschien die erste Version von Purebasic. Seitdem erhält sie kontinuierlich Updates für die Plattformen Linux, Windows und Mac OS X. Für jedes dieser Systeme steht auch eine Demoversion bereit [10], deren einzige Beschränkung darin besteht, dass der erstellt Quellcodes maximal 800 Zeilen lang werden darf.

Nachdem Sie das korrekte Archiv für die Linux-Version (je nach vorliegendem Rechner 32 oder 64 Bit) heruntergeladen und entpackt haben, rufen Sie in einem Terminal das enthaltene Skript checkinstall.sh auf. Es untersucht, ob alle benötigten Pakete installiert sind. Fehlt etwas, schlägt es einen passenden Aufruf von Apt-get vor, der die fehlenden Komponenten nachinstalliert.

Anschließend tragen Sie die Zeilen aus Listing 3 in die Startdatei (bei der Bash in die ~/.bashrc) der verwendeten Shell ein.

Um diese Änderungen zu aktivieren, geben Sie folgendes im Terminal ein:

$ source .bashrc

Listing 3

export PUREBASIC_HOME=Installationsverzeichnis
export PATH=$PUREBASIC_HOME/compilers:$PATH

Die Installationsanleitung des Herstellers weist allerdings eine Lücke auf, was Ubuntu betrifft: Für diese Distribution müssen Sie noch einen Symlink setzen. Listing 4 zeigt den entsprechenden Befehl für die 32-Bit- (Zeile 1) und 64-Bit-Varianten (Zeile 2).

Listing 4

$ sudo ln -s /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16 /usr/lib/libstdc++.so.6
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16 /usr/lib/libstdc++.so.6

Sie starten nun die IDE über den Aufruf purebasic in einem Terminal. Es empfiehlt sich, die Sprache der Entwicklungsumgebung und der Online-Hilfe via File | Preferences | General | Language | Deutsch auf Deutsch umzustellen (Abbildung 5). Sollte an dieser Stelle die deutsche Sprache nicht auftauchen, haben Sie sehr wahrscheinlich das Verzeichnis in der Variable PUREBASIC_HOME falsch gesetzt.

Abbildung 5: In den Spracheinstellungen stellen Sie die Purebasic-IDE auf Deutsch um.

Abbildung 5: In den Spracheinstellungen stellen Sie die Purebasic-IDE auf Deutsch um.

Gut dokumentiert

Die Dokumentation gehört zu den Stärken von Purebasic. Die Applikation bietet zu jedem Befehl ausführliche Erläuterungen, die Sie über [F1] abrufen (Abbildung 6). Ferner steht das offizielle Referenzhandbuch als PDF zum Download bereit [11].

Abbildung 6: Die Online-Hilfe von Purebasic liefert zu allen Befehlen eine kurze Erläuterung.

Abbildung 6: Die Online-Hilfe von Purebasic liefert zu allen Befehlen eine kurze Erläuterung.

Außerdem existiert ein gedrucktes Buch mit einer anschaulichen Einführung in Purebasic, dass allerdings schon etwas in die Jahre gekommen ist. Inzwischen steht es aber kostenlos unter einer Creative-Commons-Lizenz bereit. Freiwillige bringen es regelmäßig auf den neusten Stand [12]. All die Quellen liegen wohlgemerkt auf deutsch vor.

Vor wenigen Jahren hat ein hiesiger Distributor (die Software stammt eigentlich aus Frankreich) Purebasic auf CD-ROM im Einzelhandel vertrieben, weswegen es hierzulande recht verbreitet ist und eine Vielzahl an Tutorials und Foreneinträgen [13] existieren.

Wie bereits weiter oben angedeutet, verzichtet Purebasic auf Objektorientierung. Dies ermöglicht Anfängern zunächst einen schnellen Einstieg in die Sprache. Jedoch gerät das rein imperative Programmieren bei größeren Projekten potenziell unübersichtlich.

Dafür lassen sich kleinere Programme schnell verstehen und fallen sehr kompakt aus. Die folgende Zeile sorgt beispielsweise dafür, dass sich ein Fenster mit dem Anzeigetext Hallo Welt! und der Titelzeile Begrüßung öffnet:

MessageRequester("Begrüßung","Hallo Welt!");

Wer seine GUI-Fenster ähnlich wie bei Gambas mit der Maus erstellen möchte, benötigt das Tool Visual Designer. Es liegt zwar der Windows-Version bei, dem Linux-Archiv jedoch unverständlicherweise nicht. Alle anderen Elemente der IDE sind über die Grenzen der Betriebssysteme hinweg identisch.

Als Workaround kann man die Windows-Demoversion von Purebasic herunterladen und die Datei VisualDesigner.exe unter Linux mittels Wine ausführen. Die vom Programm generierten Quellcodes laufen unter Linux ohne Einschränkungen.

Das Entwickeln von Crossplattform-Anwendungen mit exakt identischem Quellcode funktioniert überraschend gut: Sofern Sie einen Font verwenden, den es auf allen Ziel-Betriebssystemen gibt, sieht eine Anwendung mit derselben Codebasis unter Linux und Windows sehr ähnlich aus und verhält sich auch auf gleiche Weise.

Fazit

Für Einsteiger in Sachen Programmierung eignet sich vermutlich Purebasic am ehesten: Hier existieren eine ausführliche und leicht verständliche Dokumentation sowie zahlreiche Einführungen. Ferner lässt sich das Konzept des imperativen Programmierens schnell erlernen. Zudem funktioniert das Entwickeln mit derselben Code-Basis über Plattformgrenzen hinweg mit Purebasic verhältnismäßig gut. Zwar fällt unangenehm auf, dass der Visual Designer ausschließlich als Windows-Software existiert – allerdings läuft er fehlerfrei unter Wine. Für größere Projekte allerdings erscheint es angeraten, eine objektorientierte Sprache zu verwenden.

Gambas fügt sich am besten in den Linux-Gedanken ein: Als freie Software liegt es den gängigen Distributionen gleich bei. In der neuesten Version macht die Software selbst mit ihren Assistenten einen durchdachten Eindruck, bei der Dokumentation hakt es aber. Der versierte Anwender, der möglicherweise bereits in anderen Programmiersprachen entwickelt hat, steht vermutlich nicht vor allzu großen Problemen, wenn er sich durch Mailinglisten wühlt, um an eine Information zu kommen. Einsteiger dürften dabei jedoch das Nachsehen haben: Sie benötigen eher eine vorstrukturierte und didaktisch motivierende Dokumentation.

Eine weitere objektorientierte Alternative findet sich mit BlitzMax. Ärgerlich nur, dass der Hersteller für Linux keine Demo-Version bereitstellt. So muss man für stolze 80 Euro die Katze im Sack kaufen, einen GUI-Builder vom Hersteller gibt es auch nicht. Positiv fällt auf, dass sich auch um diesen Dialekt im Laufe der Zeit eine Community gebildet hat, die an Tutorials und Tools arbeitet. Ein Blick in die Foren des Herstellers und die Quellcodes der Beispiele hilft bei der Entscheidung, ob das Konzept von BlitzMax für das eigene Vorhaben taugt oder eine der beiden Alternativen die bessere Wahl darstellt.

Basic-Dialekte im Vergleich

Name Gambas Blitzmax Purebasic
Preis kostenlos 80 Euro 79 Euro
Aktuelle Version 3.3.1 (September 2012) 1.48 (April 2012) 4.61 (Mai 2012)
Lizenz GPLv2+ proprietär proprietär
Demoversion nein ja
Plattform (voll unterstützt) Linux, FreeBSD Linux, Windows, Mac OS X (Intel+PPC) Linux, Windows, Mac OS (Intel+PPC)
Plattform eingeschränkt unterstützt) OpenBSD, Mac OS X, NetBSD, Solaris, Windows Amiga OS
Paradigma objektorientiert objektorientiert mit imperativen Anteilen imperativ
GUI-Builder ja nein ja (Wine)

Glossar

Basic

Kürzel für “Beginner’s All-purpose Symbolic Instruction Code”, zu deutsch etwa “Allgemeine symbolische Programmiersprache für Anfänger”. Basic entstand 1964 an einem US-College als leicht zu erlernende Programmiersprache für Studenten.

Infos

[1] Gambas: http://gambas.sourceforge.net/de/main.html

[2] Offizielles Gambas-Wiki: http://www.gambasdoc.org/help?v3

[3] Älteres Gambas-Buch: http://de.wikibooks.org/wiki/Gambas

[4] Neues Gambas-Buch (im Aufbau): http://www.gambas-buch.de

[5] Mailingliste Gambas-Users: https://lists.sourceforge.net/lists/listinfo/gambas-user

[6] Deutsches Gambas-Forum: http://www.gambas-club.de

[7] Bezugsquelle Blitzmax: http://www.blitzbasic.com/Products/_index_.php

[8] Offizielles Blitzmax-Forum: http://www.blitzbasic.com/Community/forums.php

[9] Deutsches Blitzmax-Forum: http://www.blitzforum.de/forum/index.php

[10] Purebasic-Demoversionen: http://purebasic.com/download.php

[11] Referenz-Handbuch Purebasic: http://www.purebasic.com/german/documentation/PureBasic.pdf

[12] Purebasic-Buch für Anfänger: http://www.purearea.net/pb/download/PureBasicBuch.pdf

[13] Deutsches Purebasic-Forum: http://forums.purebasic.com/german/

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 11/2012 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben