Gambas: Schwierigkeiten
zurück zu Gambas
Schwierigkeiten mit Gambas
Die Inflation der Befehle
[Bearbeiten]Wer den Übergang von Basic am C64, zu GWBasic und QBasic unter Dos erlebt hat, dem fiel es relativ leicht auf Visual Basic umzusteigen. Die Version VB 3.0 war ( und ist) sehr stabil. Sie ist kompakt und hat ein sehr gut funktionierendes Hilfesystem mit Beispielprogrammen für jeden einzelnen Befehl. Die Zahl der Basicbefehle blieb in diesen Sprachen ziemlich konstant, nur die Art der Programmierung änderte sich und wurde komfortabler und übersichtlicher.
Schon VB 6 und um so mehr VB.Net sind für Anfänger weitaus schwieriger zu erlernen. Woran liegt das und was kann man als Gambaseinsteiger für Schlussfolgerungen daraus ziehen?
Meines Erachtens liegt es an der Inflation der vielen Möglichkeiten und Befehle, die einen Anfänger überfordern.
Ein Anfänger beim Programmieren braucht schnelle Erfolgserlebnisse. Mit relativ kleinen, leicht verstehbaren Programmbeispielen sollte er schon ganz gut brauchbare Ergebnisse erreichen. Dabei muß sein Wortschatz an Programmbefehlen erst wachsen. Er muß lernen, mit den neuen Befehlen umzugehen und sie sicher zu gebrauchen. Was sind grundlegende, sehr häufig gebrauchte Befehle und auf welche Befehle kann man am Anfang verzichten? Hier muß die Programmiersprache Gambas noch verbessert werden . Es sollte eine Statistik über die Häufigkeit der Befehle geben. Hilfreich wäre auch eine Einschätzung von erfahrenen Programmierern, welche Befehle von Ihnen häufig genutzt werden und welche anfangs verzichtbar sind.
Meines Erachtens sind folgende Befehle sehr wichtig:
DIM , AS , Print , = , & , FOR TO, NEXT, ME.Close. IF THEN, TRUE, FALSE
Fangen Sie mit diesen an und versuchen Sie sie gut zu verstehen.
Funktionen und Prozeduren
[Bearbeiten]Dem Anfänger bieten Prozeduren und Funktionen erhebliche Probleme, Dabei sind Prozeduren noch einfach zu verstehen, denn es werden keine Werte übergeben. Jedes Unterprogramm ist eine Prozedur. Der Rahmen eines Unterprogrammes wird in Gambas wie auch in VB automatisch erstellt wenn man in der Formularansicht auf das grafische Objekt klickt. In diesen Rahmen kann man dann seinen Code für das Unterprogramm eingeben.
Funktionen sind etwas schwieriger zu verstehen. Ist man den alten Spagetticode von Uraltbasic mit Gotos und Rücksprüngen gewohnt, dann fällt es einem anfangs schwer eine Aufgabe an ein Unterprogramm zu übergeben und dazu dessen Namen zu nutzen. Im Unterschied zu einer Prozedur wird in einer Funktion aber noch mindestens ein Wert mitübergeben. Man muß also wissen wie die Prozedur heißt , wie man sie aufruft, wie der Wert heißt den man beim Aufruf mitübergibt und wie der Wert heißt , der aus der Funktion wieder herauskommt. Als Anfänger ist man versucht ohne Funktionsaufrufe auszukommen und das Problem ohne Funktion zu codieren. Das erscheint am Anfang verständlicher. Es ist aber in jedem längeren Programm unökonomisch. Wohl oder übel muß man sich an Funktionen gewöhnen, denn sie erleichtern das Programmierleben ungemein.
Siehe auch http://www.madeasy.de/7/prgmini.htm#funk
Die Objektorientierte Programmierung ( OOP )
[Bearbeiten]Der Nutzen der objektorientierten Programmierung bleibt dem Anfänger leider oft zu lange verborgen. OOP macht das Programmieren anfangs unnötig kompliziert, bis man endlich begreift, dass die OOP vor allem dazu dient nicht immer wieder dasselbe neu programmieren zu müssen, wenn es schon einmal erarbeitet wurde.
Die Grafische Bedienoberfläche erleichtert es einem am Anfang auf die OOP Methode zu verzichten, obwohl eigentlich die vielen grafischen Werkzeuge die idealen Beispiele für Objekte und Klassen sind.
Denken Sie daran: Jede Programmiersprache hat ein paar grundlegende ("primitive") Datentypen , wie z.B. Zahlen, Buchstaben und Logische Datentypen.
z.B.
- boolean
- byte
- short
- int
- long
- float
- double
- char
- string
Diese einfachen Datentypen können nun miteinander kombiniert werden. So entstehen zusammengesetzte Datentypen wie Arrays, Strukturen oder auch Klassen.
Auch für diese komplexen Datentypen können nunmehr Variablen deklariert werden, und im Fall von Klassen heißen die Variablen Objekte.
Merke:
- Klassen sind zusammengesetzte Datentypen.
- Objekte sind die Daten, die man in diese zusammengesetzten Datentypen hineinschreibt.
Beispiel:
- Der Befehlsbutton in der Werkzeugkiste ist eine Klasse.
- Setzt man einen Commandbutton auf eine Form dann ist dieser spezielle Befehlsknopf zusammen mit seinen Eigenschaften ein Objekt.
Public, Private, Static
[Bearbeiten]Gegenüber den alten Basicversionen erscheinen in Gambas ( wie auch in VB6 oder VB.Net) die Befehle Public, Private, Static etc.. Es sind sogenannte Zugriffsbeschränkungen bei Zugriffen auf Klassen. Der Sinn dieser Zugriffsmodifizierer bleibt einem am Anfang verborgen.
Es gibt (keine) globale Variablen wie unter VB
[Bearbeiten]Unter VB kann man sich einfach eine globale Variable zb in einem Modul global.bas definieren und dann zb Text von einer Form zur anderen kopieren, wenn man diese globale Variable nutzt. Das geht unter Gambas nicht so einfach. Benoit Minisini ist da ziemlich streng und will uns zu einem sauberen Programmierstil erziehen.
Zitat: There is no such thing as a project-wide global variable in Gambas. As a workaround, consider making a class called Global and declaring your global variables as static public variables in that class, and then referring to them as Global.variablename in your project. It's still poor programming practice but at least they'll be identified as global variables whenever you use them ;)
Benoit Minisini mag sie nicht. Aber sie sind möglich und m.E. auch ganz praktisch. Siehe Gambas:_Form#Globale_Variablen_in_Gambas
Wünschenswert wäre ein interaktives Lernprogramm
[Bearbeiten]Vielleicht ist es auch wünschenswert , für die einzelnen Befehle kleine Lektionen zu entwickeln, die zunächst den Befehl erklären und dann in einem Übungsteil, die gelernten Erkenntnisse abfragen. Diese Lektionen kann man dann zur Wiederholung und bei Bedarf immer wieder einmal durcharbeiten. Legendär und didaktisch hervorragend war das Lernprogramm, welches bei den ersten Dosversionen der Textverarbeitung Word mitgeliefert wurde. So ein schönes interaktives Lernprogramm in Gambas, am besten selbst in Gambas programmiert und Internet basiert wäre ideal. Die Lektionen sollten, dabei nicht länger als 3 - 5 Minuten zur Bearbeitung dauern.
Ein Beispiel für ein schönes interaktives Lernprogramm der Sprache Java steht hier: http://www.gailer-net.de/tutorials/java/java-toc.html
Da Gambas auch mit Java verwandt ist, kann man es durchaus auch nutzen um Gambas zu verstehen.
Gambas light
[Bearbeiten]Vielleicht sollte es für Anfänger eine Lightversion von Gambas geben. Mit einigen wenigen Basisbefehlen und Basiswerkzeugen.
Nachteile von Gambas
[Bearbeiten]Gambas ist noch nicht so weit verbreitet.
Cplusplus und Java sind die meist genutzten erwachsenen Programmiersprachen. PHP, Perl und andere Scriptsprachen werden auch viel genutzt. Gambas bietet sich für die große Zahl der Visual Basic Programmierer an, die Open Source programmieren wollen und Linux und KDE nutzen.
Einen weiteren Nachteil sollte man nicht verschweigen. Bis jetzt gibt es keine portierbaren EXE Files. Gambasprogramme laufen zwar als compilierte Programme sehr gut. Aber auf dem Rechner muß eine Gambasumgebung aufgespielt sein. Eine einfache VBRUN.DLL, wie unter Windows, existiert noch nicht. Das wird sich aber sicher bald ändern.