Artikel: SmallBasic – Programmieren lernen ohne Ballast (mit der Leichtigkeit eines Schokoriegels)

SmallBasic – Programmieren lernen ohne Ballast (mit der Leichtigkeit eines Schokoriegels)

Von

SmallBasic ist der Name einer kleinen Programmiersprache, die vor ein paar Jahren von einem Entwickler bei Microsoft in Redmond erfunden wurde, und um die schnell eine weltweite Fangemeinde entstanden ist (SmallBasic gibt es inzwischen in 20 Landessprachen). SmallBasic ist kein typisches Microsoft-Produkt, sondern ein kleines, aber feines Programmierwerkzeug, das vor allem jungen Menschen den Einstieg in die Programmierung erleichtern soll.

Die Homepage von SmallBasic ist smallbasic.com, die URL der offiziellen Website bei Microsoft ist nicht ganz so leicht zu merken. Hier erfährt man alles (allerdings nur auf Englisch), was man über SmallBasic wissen möchte. Dazu gehört neben einem eBook im PDF-Format unter der Bezeichnung „SmallBasic_Curriculum“ auch ein umfangreicher Satz an PowerPoint-Folien, der zum Beispiel von Lehrern benutzt werden kann, die SmallBasic in ihrem Unterricht vorstellen möchten. Dieses Material ist aber auch hervorragend geeignet, sich den Umgang mit SmallBasic an einem Wochenende selbst beizubringen. Den Foliensatz gibt es inzwischen in mehreren Sprachen.

Auch wenn die erste Vorabversion von SmallBasic mit der Versionsnummer 0.5 von ihrem Autor Vijaye Raji bereits im Herbst 2008 freigegeben wurde, ist die Version 1.0 erst seit Juli dieses Jahres verfügbar (Vijaye hat Microsoft zwar Anfang 2011 verlassen, das Projekt wird vom SmallBasic-Team aber fortgeführt, so dass es mit hoher Wahrscheinlichkeit irgendwann eine Nachfolgeversion geben wird).

SmallBasic ist die Antwort auf den Umstand, dass es heutzutage keine Programmiersprache zu geben scheint, die dazu geeignet ist, Kindern die Grundlagen der Programmierung beizubringen. In der Anfangszeit der PC-Ära war es selbstverständlich, dass ein Computer eine Programmiersprache „eingebaut“ hatte, mit der sich dieser programmieren ließ. Wer in den 80er Jahren seinen C64 einschaltete, landete automatisch im (Microsoft) Basic-Interpreter, unter MS-DOS gab es anfangs GW-Basic und später QBasic, das mit MS-DOS 6.0 sogar eine einfache Benutzeroberfläche erhielt. Mit Windows 95 kam die in das Betriebssystem eingebaute Programmiersprache leider außer Mode, sieht man von Cmd.exe mit seinen Stapeldateien und dem später eingeführten Windows Scripting Host (WSH) ab, bei dem man wahlweise VBScript- oder JScript-Programme ausführen kann, die jedoch mit Notepad eingetippt werden müssen. Erst mit Windows 7 gibt es in Gestalt der Windows PowerShell wieder eine eingebaute Programmiersprache, die allerdings in erster Linie für die Systemadministration gedacht ist.

SmallBasic Benutzeroberfläche

Hinweis

Die Inspiration für die Entwicklung von SmallBasic kam dem Autor Vijaye Rajin nach dem Lesen des Artikels „Why Johnny can’t code“ – ein Essay über den Umstand, dass es im September 2008 aus der Sicht des Autors des Artikels sehr schwierig war, eine Programmiersprache zu finden mit deren Hilfe Kinder die Grundregeln des Programmierens hätten lernen können.

SmallBasic hätte das Zeug, die neue Windows-Programmiersprache zu werden, die keinen anderen Zweck erfüllt, als ihre Anwender in die Lage zu versetzen, kleine Befehlsfolgen einzugeben und zur Ausführung zu bringen. Ob es diese Rolle jemals einnehmen wird, ist zur Zeit noch ungewiss – in der ersten Vorabversion von Windows 8, die Microsoft im September 2011 freigab, ist SmallBasic noch nicht enthalten. Es wäre aber denkbar und wünschenswert, dass es bei einer künftigen Windows-Version als Zubehör enthalten ist.

Es ist wichtig, die Zielgruppe und damit auch die Absicht von SmallBasic richtig einzuordnen. SmallBasic soll Menschen, in erster Linie Kindern, einen Einstieg in die faszinierende Welt der Programmierung ermöglichen. Man kann kleine Programme schreiben – meistens werden es Spiele sein, die in erster Linie der Unterhaltung dienen. SmallBasic ist auch für Lehrer gedacht, die eine leicht zu installierende Programmiersprache für ihren Unterricht suchen, die auf jedem Windows-PC (ab Windows XP aufwärts) installiert werden kann.

Die Hauptzielgruppe dürften daher die 8- bis 15-Jährigen sein, für die eine Express Edition von Visual Studio noch etwas zu anspruchsvoll sein kann. Aber auch Ältere werden Spaß an der Einfachheit von SmallBasic finden. Wer erst einmal wissen möchte, was mit SmallBasic alles möglich ist, schaut sich die verschiedenen Beispielprogramme an, die nicht nur Microsoft zur Verfügung stellt. Dazu müssen die Befehle des Beispielprogramms lediglich per Copy&Paste in ein neues Fenster in SmallBasic eingefügt werden. Noch einfacher geht das Übernehmen fertiger Programme über einen Zugriffscode. Einfach auf den Button Importieren klicken, den Zugriffscode eingeben und mit OK bestätigen. Dadurch wird das SmallBasic-Programm über das Internet auf den Computer geladen und kann danach ausgeführt werden. Den Zugriffscode erhält man vom Autor des Programms, den dieser zum Beispiel auf seiner Homepage veröffentlicht.

Wer das einmal ausprobieren möchte, startet SmallBasic, klickt auf Importieren, gibt SOKO ein und bestätigt die Eingabe mit OK. Kurz danach werden die Programmbefehle für ein kleines Spiel geladen, das danach per F5 ausgeführt werden kann. Es ist ein Spiel, bei dem der Spieler Edelsteine durch ein kleines Steinlabyrinth in das Zielfeld bewegen muss. Das Spiel zeigt eindrucksvoll, was sich mit einer so einfachen Programmiersprache wie SmallBasic erreichen lässt. Dahinter steckt eine große Portion Kreativität und vor allem eine noch größere Portion Fleiß. Ein großes Kompliment an den (unbekannten) Autor des Spiels und natürlich an das SmallBasic-Team bei Microsoft.

SOKO

SmallBasic ist keine klassische Allzweck-Programmiersprache. Mit SmallBasic werden in erster Linie kleine Spiele programmiert oder kleine Programme, die einfache Berechnungen durchführen. Als Ausgabebereich stehen ein Textfenster und ein grafisches Fenster zur Verfügung, auf dem einfache Bedienelemente (im Wesentlichen eine TextBox und ein Button) und grafische Figuren (Kreise oder Rechteckte) und Bitmaps angezeigt werden können.

Hinweis

Für alle Programmierprofis: SmallBasic basiert auf dem .NET Framework 2.0. SmallBasic-Programme können daher nur auf Windows-PCs ausgeführt werden, auf denen die .NET-Laufzeitumgebung bereits installiert ist (bei Windows Vista und Windows 7 ist sie von Anfang an dabei). Ein SmallBasic-Programm wird beim Ausführen in eine Exe-Datei kompiliert, die auch außerhalb der kleinen SmallBasic-Programmierumgebung ausgeführt werden kann. Per Voreinstellung werden alle Exe-Dateien im SmallBasic-Verzeichnis unter %userprofile%\documents abgelegt. SmallBasic basiert auf einer Assembly mit dem Namen SmallBasicLibrary.dll (im Programmverzeichnis C:\Program Files (x86)\Microsoft\Small Basic unter 64-Bit-Windows bzw. C:\Program Files\Microsoft\Small Basic unter 32-Bit-Windows). Wer also wissen möchte, was eine SmallBasic-Methode genau macht, muss diese nur in IL-Spy (ein Freeware-Tool, das den Programmcode einer Assembly anzeigt) laden. SmallBasic lässt sich sehr einfach durch Klassen erweitern, die theoretisch beliebige Funktionalitäten hinzufügen können. Eine Assembly-Bibliothek muss dazu lediglich eine Klasse enthalten, die mit einem Attribut deklariert ist, und die im Lib-Unterverzeichnis des SmallBasic-Verzeichnisses abgelegt wird (falls das Verzeichnis noch nicht existiert, muss es angelegt werden), damit sie nach dem nächsten Start von SmallBasic zur Verfügung steht. Eine kurze Anleitung gibt es unter den folgenden beiden Links:

Für das Erstellen einer solchen Assembly-Bibliothek genügen die Express Editionen von Visual Basic oder Visual C#.

Hinweis

Bei SmallBasic werden alle „Spezialbefehle“ über Klassen zur Verfügung stellt. Am Anfang gibt es 20 Klassen, die insgesamt über 100 „Befehle“ zur Verfügung stellen. Durch SmallBasic-Erweiterungen lässt sich dieser Befehlssatz jedoch erweitern (Beispiele). Ein kleiner Nachteil einer solchen Erweiterung ist jedoch, dass ein SmallBasic-Programm, das diese Erweiterung verwendet, natürlich nur dort funktioniert, wo die Erweiterung zuvor geladen wurde. Das einfache Laden des Programms durch Importieren und Eingabe der Codenummer ist dann nicht mehr möglich.

Wer als angehender und ambitionierter Programmierer mehr machen möchte, als mit SmallBasic möglich zu sein scheint, verwendet anstelle von SmallBasic die Programmiersprache Visual Basic, die Microsoft in Gestalt von Visual Basic 2010 Express Edition kostenlos zur Verfügung stellt. Ein SmallBasic-Programm kann innerhalb von SmallBasic in ein Visual Basic-Projekt konvertiert werden. Es kann danach mit Visual Basic 2010 Express Edition weiterbearbeitet und ausgeführt werden.

Bei SmallBasic steht die Einfachheit im Mittelpunkt. Die Programmiersprache umfasst lediglich 13 Befehlswörter und 20 Klassen (der Umstand, dass es bei Visual Basic knapp 100 Befehlswörter und mehrere Tausend Klassen gibt macht den Unterschied zwischen SmallBasic und einer „richtigen“ Programmiersprache deutlich). Es gibt weder Datentypen, noch Klassen oder andere Sprachelemente, die in praktisch allen modernen Programmiersprachen selbstverständlich sind. Es gibt nur globale Variablen (eine Variable ist überall innerhalb des Programms ansprechbar) und es gibt einen Goto-Befehl, mit dem die Programmausführung an einer anderen Stelle des Programms fortgesetzt wird.

Hinweis

Bei SmallBasic werden die Begriffe Objekt und Klasse weitgehend austauschbar verwendet, obwohl zwischen ihnen streng genommen ein kleiner Unterschied besteht. Eine Klasse ist nur die Definition, ein Objekt wird auf der Grundlage einer Klasse im Arbeitsspeicher angelegt. Es kann mehrere Objekte von einer Klasse geben, die Instanzen genannt werden, und die alle ihren eigenen Arbeitsspeicher belegen und daher unterschiedliche Daten aufnehmen können. Diese Feinheiten spielen bei SmallBasic aber keine Rolle. Es gibt nur Klassen, die innerhalb von SmallBasic aber manchmal auch Objekte genannt werden. In dieser Einführung wird der Begriff Klasse verwendet.

Tabelle 1 stellt die SmallBasic-Befehlswörter in einer Übersicht vor. Dass diese Wörter nicht als Befehle bezeichnet werden, liegt daran, dass einzelne Wörter wie to oder step nur im Zusammenhang mit einem anderen Befehl verwendet werden können. Auch ein endfor ist streng genommen kein Befehl, sondern die Ergänzung zum for-Befehl.

Befehl Bedeutung
else Leitet im Zusammenspiel mit dem if-Befehl einen Alternativzweig ein, der ausgeführt wird, wenn die auf den if-Befehl folgende Bedingung den Wert False besitzt.
elseif Prüft vor der Ausführung des else-Befehls eine weitere Bedingung.
endfor Beendet eine for-Schleife.
endif Beendet einen if-/else-Befehl.
endsub Beendet eine Subroutine.
endwhile Beendet eine while-Schleife.
for Leitet eine Programmschleife mit einer festgelegten Anzahl an Durchläufen ein.
goto Setzt die Ausführung des Programms bei der angegebenen Sprungmarke fort.
if Leitet eine Entscheidung ein, die auf einem True-/False-Wert basiert.
sub Leitet eine Subroutine ein. Sie fasst Befehle unter einem Namen zusammen.
while Leitet eine Programmschleife ein, bei der die Anzahl an Wiederholungen von einer Abbruchbedingung abhängig ist.
to Legt den Endwert einer for-Schleife fest.
step Legt die Schrittweite bei einer for-Schleife fest.

Tabelle 1: Die SmallBasic-Schlüsselwörter in der Übersicht

Tabelle 2 zeigt die fest eingebauten Klassen mit ihren „Mitgliedern“ (Eigenschaft, Methode oder Ereignis – diese Begriffe werden in einem Folgeartikel noch genauer erklärt).

Klasse Bedeutung
Array Diese Klasse steht für mehrere Werte, die unter einen Namen zusammengefasst werden. Die einzelnen Werte werden über eine Zahl oder einen Namen angesprochen, der Index genannt wird.
Clock Erlaubt einen Zugriff auf die Systemuhr, die unter anderem die aktuelle Uhrzeit zur Verfügung stellt.
Controls Über diese Klasse lassen sich einfache Bedienelemente (eine TextBox und eine mehrzeilige TextBox für die Eingabe und ein Button für das Auslösen einer Aktion auf dem Fenster) anordnen.
Desktop Diese Klasse repräsentiert den Windows-Desktop und ermöglicht die Höhe und Breite des Desktopfensters abzufragen (etwa, wenn eine Zeichenoperation über den gesamten Bildschirm durchgeführt werden soll). Außerdem kann über diese Klasse das Hintergrundbild des Desktops gesetzt werden.
Dictionary Diese interessante Klasse bietet einen Zugriff auf ein Online-Wörterbuch zum Nachschlagen von Wortdefinitionen (allerdings nur in Englisch).
File Diese Klasse erlaubt einen (eingeschränkten) Zugriff auf das lokale Dateisystem des Computers. Sie besitzt Methoden-Mitglieder wie ReadLine und WriteLine für das Lesen und Schreiben von Textdateien.
Flickr Die Klasse erlaubt einen sehr einfachen Zugriff auf das Foto-Portal Flickr im Internet. Über ihre Methoden-Mitglieder GetPictureOfMoment und GetRandomPicture werden zufällig ausgewählte Bilder abgerufen.
GraphicsWindow Über diese umfangreiche Klasse wird das Grafikfenster des Programms angesprochen. Es gibt die Eigenschaften BackgroundColor, BrushColor, PenColor, FontSize oder Title, die alle Eigenschaften des Fensters darstellen, und Methoden-Mitglieder (Operationen) wie Show, Hide, Clear und FillEllipse. Mit KeyDown, KeyUp, MouseMove usw. gibt es auch Events, mit denen sich auf Eingaben und Aktionen des Benutzers reagieren lässt.
ImageList Die Klasse bietet die LoadImage-Methode, mit der sich eine Bitmap laden lässt, so dass sie später über einen Namen im Programm angesprochen und über die DrawImage-Methode der GraphicsWindow-Klasse im Grafikfenster angezeigt werden kann. Es werden verschiedene Formate wie BMP, PNG, JPEG und GIF unterstützt (aber leider keine animierten GIFs – bei diesen wird nur der erste Frame angezeigt).
Math Diese Klasse klingt für Mathematik-geplagte Schüler vielleicht nicht besonders attraktiv, doch keine Sorge, sie stellt lediglich ein paar „harmlose“ Funktionen wie Log, Sin, Power oder GetRandomNumber als Methoden-Mitglieder und die Eigenschaft Pi zur Verfügung.
Mouse Über diese Klasse erfährt man, an welcher Position sich der Mauszeiger (bezogen auf die Bildschirmkoordinaten) befindet.
Network Über diese Klasse und ihre DownloadFile-Methode wird eine Datei aus dem Internet geladen oder über GetWebPageContent der Inhalt einer Webseite abgerufen und als Zeichenkette zurückgegeben.
Program Diese Klasse steht für das SmallBasic-Programm als Ganzes und bietet Mitglieder wie Directory (Pfad des Programmverzeichnisses) und End, mit dem das Programm vorzeitig beendet wird.
Shapes Mit dieser Klasse werden einfache geometrische Figuren wie Rechtecke und Kreise zum Grafikfenster hinzugefügt. Diese Figuren lassen sich auch rotieren, animieren (zwischen bei Punkten bewegen) und in ihrer Größe verändern.
Sound Die Methoden-Mitglieder (Operationen) dieser Klasse spielen eingebaute Systemtöne und Sounddateien ab.
Stack Diese Klasse stellt eine einfache Datensammelstelle in Gestalt eines Stapels zur Verfügung, zu der sich per PushValue-Methode Werte hinzufügen lassen, und von der per PopValue der oberste Wert des Stapels abgerufen wird.
Text Mit dieser Klasse werden einfache Textoperationen wie das Zusammensetzen einer Zeichenkette aus mehreren Teilzeichenketten oder das Herausziehen einer Teilzeichenkette aus einer größeren Zeichenkette durchgeführt.
TextWindow Die Klasse ist mit ihren Methoden-Mitgliedern für Textein- und ausgaben zuständig. Über Eigenschaften werden Einstellungen beim Textfenster vorgenommen, die zum Beispiel die Hintergrundfarbe betreffen.
Timer Dies ist eine interessante Klasse, denn über ihre Interval-Eigenschaft lässt sich ein Zeitintervall festlegen, durch das in regelmäßigen Abständen ein Tick-Ereignis (Event) ausgelöst wird, in dessen Verlauf zuvor festgelegte Befehle ausgeführt werden können.
Turtle Die Klasse repräsentiert eine Schildkröte, die über Methoden-Mitglieder (Operationen) wie Move oder Turn über die Programmausgabefläche bewegt wird. Damit lassen sich zum Beispiel Zeichenoperationen auf eine natürliche Art und Weise durchführen.

Tabelle 2: Die SmallBasic-Klassen im Überblick

SmallBasic lernen

SmallBasic lernst Du am besten durch Ausprobieren kleiner Beispiele. Microsoft stellt eine kleine Einführung auf Englisch in einer PDF-Datei mit dem Namen IntroducingSmallBasic.pdf zur Verfügung, die sich im SmallBasic-Programmverzeichnis befindet (sie fasst eine Serie von Blog-Einträgen des Microsoft-Mitarbeiters Paul Cornell zusammen). Von Georg Schumann gibt es ein Buch mit dem Namen SmallBasic for Kids (erschienen bei MITP). Eine Einführung in die Programmierung mit SmallBasic, die keine Wünsche mehr offen lassen sollte, erhältst Du aber auch in weiteren Artikeln dieser mehrteiligen Serie, die im Laufe der nächsten Wochen erscheinen werden.