Aus Linux-Magazin 04/2008

Aktueller Überblick über freie Software und ihre Macher

© Guillaume Morel, Fotolia

Python-Erfinder Guido van Rossum gilt als humorvoller Mensch, daher dürfte ihn auch der an seine Person angelehnte Name des Projekts Guido van Robot amüsieren. Wer Programmieren lernen oder es anderen beibringen möchte, findet mit der Software einen spielerischen Einstieg.

Wer sich mit der Programmiersprache Python beschäftigt, dem ist auch der Name Guido van Rossum ein Begriff, van Rossum ist der Schöpfer von Python. Doch wer ist Karel, der Roboter? Nun, in der Welt der Programmierer zumindest kein ganz Unbekannter.

Karels kleine Welt

Der Reihe nach. Den Roboter namens Karel erfand Richard Pattis vor fast 30 Jahren und stellte ihn 1981 im Buch “Karel the Robot, A Gentle Introduction for the Art of Programming” [1] der Öffentlichkeit vor. Der virtuelle Zeitgenosse hat das Glück, in einer einfachen Welt zu leben. In ihr bestehen die größten Probleme darin, Hindernisse in Form von Wänden zu umgehen und so genannte Beeper aufzulesen. Um seine Aufgaben zu erfüllen, ist er in einer Sprache mit überschaubarem Befehlssatz ohne Variablen programmierbar.

Die originale Karel-the-Robot-Programmiersprache basierte auf Pascal, doch es entstanden bereits zahlreiche Varianten, um Lernende mit Hilfe desselben Prinzips auch an andere Sprachen heranzuführen. Eine davon ist Guido van Robot, sie übernimmt die Geschichte vom simulierten, programmierbaren Roboter für die Einführung in Python. In Reminiszenz an den niederländischen Python-Erfinder Guido van Rossum [3] haben die studentischen Programmierer 2001 der Python-Lernsprache den Namen Guido van Robot [4] gegeben. Sie ist nun in Version 3.3 verfügbar.

Guido – der Roboter, nicht der Python-Erfinder – hört auf fünf Kommandos: »vor«, »linksum«, »nimm«, »gib« und »ruhe«. Da sie auch auf Deutsch zur Verfügung stehen, erschließt sich auch Englisch-Laien sofort, was sie bewirken. Im englischen Original heißen sie »move«, »turnleft«, »pickbeeper«, »putbeeper« und »turnoff«. Die ersten beiden Befehle veranlassen den Roboter zu Bewegungen nach vorne respektive einer Drehung nach links, »nimm« und »gib« lassen ihn Körner einsammeln und ablegen, »ruhe« beendet das Programm.

Außer den aufgeführten Imperativen gibt es wie in den meisten Programmiersprachen die Möglichkeit, Schleifen und bedingte Anweisungen auszuführen. Letztere erfolgen über »if«, »elif« und »else«, kontextabhängige Schleifen ermöglicht das Schlüsselwort »while«. Weiterhin sorgt der Befehl »do X« dafür, dass Guido den nachfolgenden Befehlsblock bedingungslos mehrfach durchläuft.

Blick auf die Umwelt

Um überhaupt auf seine Umwelt reagieren zu können, erforscht Guido van Robot seine Umgebung über 18 Testinstruktionen. Dazu gehören »vorn_frei«, »links_frei«, »rechts_frei« und »vorn_nicht_frei«, die die Existenz von Wänden bestimmen. Die Objekte, die auf der Spielfläche herumliegen, heißen im Englischen Beeper, in der deutschen Übersetzung Körner. Die Anweisungen »korn_da« und »korn_in_backentasche« sowie entsprechende Verneinungen geben über deren Vorkommen Auskunft. Etwas verwirrend ist, dass der Roboter in der deutschen Übersetzung als Hamster auftritt – doch wie die Schildkröte ist ja auch der Hamster in Anfänger-Pogrammieraufgaben ein alter Bekannter.

Die letzte verbleibende Kategorie von Tests enthält die Kommandos »blickrichtung_nord« und »blickrichtung_nicht_nord« sowie Varianten, in denen »nord« durch eine der drei anderen Himmelsrichtungen ersetzt wird. Typische Guido-van-Robot-Anweisungen sehen zum Beispiel so aus:

if korn_da:
  nimm
elif vorn_frei:
  vor

Für Einsteiger besonders attraktiv an Guido van Robot ist, dass die Umgebung eine eigene Oberfläche mitbringt, die aus »Code Editor«, »World Editor« und dem Bereich »Guido\’s World« besteht. Darin beobachten Python-Einsteiger während des Programmablaufs ihren Hamster (siehe Abbildung 1).

Abbildung 1: Guido van Robot vereinfacht den Einstieg in die Welt des Programmierens mit einer Lernoberfläche und einer eigenen Sprache auf Basis von Python.

Abbildung 1: Guido van Robot vereinfacht den Einstieg in die Welt des Programmierens mit einer Lernoberfläche und einer eigenen Sprache auf Basis von Python.

Selbst definiert

Wem die vorhandenen Instruktionen nicht genügen, der schreibt auf deren Basis neue. Dazu leitet das Schlüsselwort »define Name« einen Definitionsblock ein, der neben einfachen Anweisungen auch Schleifen und Bedingungen enthalten kann. Ein Beispiel für einen Schritt zurück:

define zurück:
  do 2:
    linksum
  vor
  do 2:
    linksum

Was Guido van Robot jetzt noch fehlt, ist die Umgebung, durch die ihn sein Programm leiten soll. Zum Umfang des Softwarepakets gehören daher die drei Welten »boring«, »escape1« und »maze1«. Erstere erfüllt durch das Fehlen jeglicher Grenzen zwar humanistische Ideale, ihre völlige Ereignislosigkeit macht sie zum Testen eigener Algorithmen allerdings ungeeignet.

Eher in Frage kommt »escape1«. Diese Welt besteht aus einem Raum mit einem Ausgang. Ihn möglichst schnell zu finden stellt schon eher eine lehrreiche Programmieraufgabe dar. Die dritte Umgebung ist, wie der Name »maze1« andeutet, ein kleines Labyrinth, in dem Guido sogar auf einen ersten Beeper stößt. Wer an seinen Hamster höheren Ansprüche stellt, entwirft schnell eigene Welten. Der World Editor nimmt dazu den Befehl »WALL« oder »Wand« entgegen.

Ähnlich legt man mit Hilfe der Kommandos »Hamster« oder »Robot« die Startposition von Guido van Robot fest. Um ihn mit Nahrung zu versorgen, legt der Weltenbauer über »Korn« oder »Beepers« noch nummerierte Körner aus. Auch bei denen bestimmen die ersten beiden Argumente die Position des Objekts. Es folgt eine beliebige Zahl, mit der das Programm das Korn beschriftet.

Stehen Welt und Roboterprogramm bereit, lässt der Button »Führe aus« den Hamster starten. Dabei hebt der Code-Editor immer die gerade ausgeführte Zeile hervor, sodass Schleifendurchläufe und bedingte Anweisungen nachvollziehbar sind. Falls alles zu schnell geht, lässt die Schaltfläche »Schritt« die Instruktionen einzeln durchgehen.

Spaß muss sein

Wer Python oder andere Programmiersprachen kennt und einigermaßen beherrscht, kommt auch mit Guido van Robot und seinen zahlreichen Verwandten auf Anhieb klar. Einen gewissen Spaßfaktor hat die Programmierung des Roboters aber auch für hartgesottene Programmierer. Der geringe Aufwand, mit dem er sich durch kleine Welten manövrieren lässt, führt zu schnellen Erfolgserlebnissen.

Natürlich eignet sich Guido van Robot besonders für den Zweck, für den das Projekt eigentlich gedacht ist: Wer es noch nicht getan hat, erhält damit Gelegenheit, sich in die Programmierung spielerisch einzuleben, und findet Zugang zur Trend-Sprache Python. So führt das Projekt auf originelle Weise interessierte Laien in die Welt der Coder ein.

Gebratene Bananen mit Speck

Originelle Ideen kommen besser an als das allzu Gewohnte. Das gilt auch für die Küche. Wie wäre es daher mal mit gebratener Banane mit Speck? Der leckere Snack für zwischendurch schmeckt in vielen Varianten.

Den Grundstock für eigene Experimente bilden zwei bis drei Bananen, etwa 100 Gramm Bauchspeck ein paar Butterflocken und ein scharfes Gewürz. Das kann schwarzer Pfeffer sein, wer etwas mehr Schärfe verträgt, nimmt stattdessen Cayennepfeffer.

Zur Zubereitung die Bananen der Länge nach halbieren und dann in etwa sieben Zentimeter lange Streifen schneiden. Mit Pfeffer bestreuen und mit Speck umwickeln. Unter dem Grill leicht knusprig braten. Wer es noch exotischer möchte, kann die Happen nach dem Braten noch mit Zimt oder Curry bestreuen und mit Honig beträufeln. Ein Bett aus Brunnenkresse setzt einen interessanten geschmacklichen Kontrast. Als Getränke passen Sherry oder Campari. (pkr)

Infos

[1] Richard E. Pattis, “Karel the Robot”: [http://www.mtsu.edu/~untch/karel/book.html]

[2] Python: [http://www.python.org]

[3] Guido van Rossum: [http://www.python.org/~guido]

[4] Guido van Robot: [http://gvr.sourceforge.net]

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben