Mit einem guten Lehrer fällt es nicht schwer, das Programmieren zu erlernen. Der Python-Editor Mu und der Kleincomputer BBC Micro:bit machen den Einstieg besonders leicht.
Python genießt einen guten Ruf als benutzerfreundliche Programmiersprache. Selbst Einsteiger erstellen damit in wenigen Minuten ihr erstes Programm. Experten schätzen die umfangreichen Bibliotheken, die komplexe Sachverhalte zügig bearbeiten und darstellen. Häufig realisieren Entwickler sogenannte Wrapper in Python. Dabei werden zeitkritische Routinen in einer Sprache wie C oder C++ geschrieben und maschinennah compiliert. Eine Python-Oberfläche regelt den Datenaustausch und hält die Module zusammen.
Der auf Python spezialisierte Editor Mu [1] stammt vom Software-Entwickler und Musiker Nicholas Tollervey. Er möchte Kindern und Jugendlichen Spaß am Schreiben von Programmen vermitteln. Seiner Überzeugung nach sollten bereits die ersten Schritte zu beeindruckenden Ergebnissen führen. Anders als Programme wie beispielsweise Scratch [2] möchte Mu auch den Weg in die professionelle Programmierung vorbereiten.
Aktuell liegt das Programm in der Version 1.0 vor, der Nachfolger 1.1 steht kurz vor der Freigabe [3]. Mu ist in Python geschrieben. Bei vielen Systemen gelingt die Installation über PIP (Listing 1). Das Widget-Toolkit Qt5 erkämpft sich allerdings gerade erst den Weg als Standard in die Python-Welt. Auf dem Raspberry Pi liegen noch nicht alle erforderlichen Bibliotheken vor. Möchten Sie nicht alles von Hand zusammenbauen, dann installieren Sie auf dem RasPi eine etwas eingeschränkte Version über Einstellungen | Empfohlene Software aus der Rubrik Programming. Der Aufruf erfolgt dann über das Anwendungsmenü unterhalb des Eintrags Entwicklung.
Listing 1
$ pip3 install mu-editor ### falls nur Python3 installiert ist: $ pip install mu-editor
Python-IDEs
Integrierte Entwicklungsumgebungen (IDEs) für Python decken ein breites Spektrum ab. Da man Python-Programme nicht kompilieren muss, sondern das System die Kommandos zur Laufzeit interpretiert, genügt bereits ein einfacher Texteditor wie zum Beispiel Geany [6], um lauffähige Python-Programme zu schreiben. Etwas mehr Komfort bietet die Python-eigene Umgebung Idle [7]: Sie stützt sich auf das Widget-Toolkit TkInter, das auf der Sprache Tcl/Tk basiert. Der hier vorgestellte Editor Mu [1] wendet sich an Programmieranfänger. Er adressiert eine ähnliche Zielgruppe wie das Programm Thonny [8], bringt aber zusätzlich eingebaute Module mit. Zumindest erwähnt sei an dieser Stelle auch TigerJython [9], eine einfache in Java geschriebene Entwicklungsumgebung. Profis nutzen Spyder [10] oder Pycharm [11], das als quelloffene Community-Version oder kommerziell als Professional Edition angeboten wird. Jupyter Notebook [12] nimmt eine Sonderrolle ein. Die Ein- und Ausgaben verwaltet ein (lokaler) Webserver, der die Ergebnisse sofort in einer druckfähigen HTML-Webseite ausliefert.
Der Mu-Editor im Einsatz
Beim ersten Start verweist Mu auf seine vier Betriebsmodi: Python3, Pygame Zero, BBC Micro:Bit und Adafruit Circuit. Die Auswahl der Modi geschieht über den ersten Button in der Menüleiste des Programms.
Der Modus Python3 bringt vieles von dem mit, was man sich von einer Entwicklungsumgebung erwartet, unter anderem auch eine Syntaxprüfung (Abbildung 1). Das obere Fenster nimmt den Quellcode auf. Nach Aufruf des Check-Buttons ergänzt Mu den Quellcode um Kommentare und hübscht ihn etwas auf.
In Entwicklerkreisen wurde heftig darüber diskutiert, ob Arbeitsumgebungen für Anfänger eine Autovervollständigung mitbringen sollten. In den Augen des Autors sollten sie es, um an die große Zahl möglicher Funktionen heranzuführen. Die Anzeige des Hilfetexts zur Funktion unterstützt dabei. So lernt man am Beispiel aus Abbildung 2, dass eine Print-Anweisung in Python 3 typischerweise mit einem Zeilenvorschub (\n) endet. Die Anweisung end = " " würde ihn durch ein Leerzeichen ersetzen und entspricht dem Komma in der Schreibweise von Python 2.
Der Knopf Debug lässt Anweisungen im Einzelschrittmodus durchlaufen und listet dabei alle Variablen mit ihren Werten auf. Die Abkürzung REPL steht für Read, Evaluate, Print, Loop, also eingeben, berechnen, ausgeben und neue Eingabe erwarten. Hinter dem gleichnamigen Button verbirgt sich eine interaktive IPython-Notebook-Umgebung. Sie kann die Ein- und Ausgaben im HTML-Format speichern, eventuell erzeugte Bilder muss man hingegen manuell abspeichern.
Spiele entwickeln mit Mu
Mu möchte angehende Programmierer schnell zu Erfolgserlebnissen führen und die Anwender nicht mit Verwaltungsangelegenheiten behelligen. Der zweite Modus – Pygame Zero – verdeutlicht das Konzept. Er integriert Pygame Zero [4], eine vereinfachte Version der Python-Bibliothek Pygame. Das Programmbeispiel in Listing 2 erklärt sich nahezu von selbst und funktioniert auf Anhieb (Abbildung 3).
Listing 2
alien = Actor('alien')
alien.topright = 0, 10
WIDTH = 500
HEIGHT = alien.height + 20
hit = False
def draw():
screen.clear()
alien.draw()
def update():
global hit
if hit:
pass
else:
alien.left += 2
if alien.left > WIDTH:
alien.right = 0
def on_mouse_down(pos):
global hit
if alien.collidepoint(pos):
print("Getroffen")
hit=True
sounds.eep.play()
alien.image = 'alien_hurt'
else:
print("Verpasst!")
Pygame ist ereignisgesteuert: Es verharrt in einer Dauerschleife und reagiert auf Eingaben, hier auf Mausklicks. Die erste Zeile des Demoprogramms legt das Bild einer Spielfigur fest. Das Programm setzt voraus, sie im Unterverzeichnis ~/mu_code/images/ als PNG-Bild zu finden. Mit der Definition des Canvas hält sich Pygame Zero nicht lange auf. Die Zuordnung der Größe an die zwei reservierten Variablen WIDTH und HEIGHT genügt.
Pygame Zero ruft die interne Funktion update() so oft auf wie möglich. Ist die Variable hit gesetzt, passiert nichts. Andernfalls führt das Programm das Männchen (den Actor mit der Bezeichnung alien) von links nach rechts über den Bildschirm. Die Aktualisierung des Bildschirms übernimmt die Funktion draw(). Damit nicht immer neue Spielfiguren erscheinen, löscht sie vorab die alte Darstellung.









