Logo in der Schule

Unter dem Stichwort Programmieren für Alle ist eine Diskussion (wieder) aufgeflammt (u.a. ange-stossen von Douglas Rushkoff mit seinem Buch Program or be Programmed, 2011), wann und mit welchen Werkzeugen Grundkonzepte der Informatik vermittelt werden sollen. Dabei ist wohl weniger entscheidend, welche Programmiersprache eingesetzt wird. Den Anspruch kindgerechter Einführungen erheben z. B. Bücher zu Python (Briggs, 2013), Java (Eshel, 2011) oder Java Script (Strom, 2014). Wichtiger ist die Vermittlung zentraler Begriffe bzw. Konzepte der Informatik, wie  Algorithmus und Programm:

Computer sind Maschinen, die wir zur Erledigung bestimmter Aufgaben einsetzen können. Sie unterscheiden sich von den meisten anderen Maschinen insbesondere dadurch, dass die eigentlichen Maschinen (die Hardware) erst durch Programme und Daten (die Software) in ihrem Arbeitsablauf bestimmt und damit universell einsetzbar werden. Der Computer „tut“ nichts von selber, sondern wir müssen stets die entsprechenden Anweisungen in einer von der Maschine verwertbaren Form eingeben: als Programm.

Programme sind immer in einer Programmiersprache geschrieben. Jeder Computer „versteht“ allerdings letztlich nur seine eigene Maschinensprache. Maschinensprachen sind äußerst unanschaulich und nur für Spezialisten verständlich. Das Programmieren in Maschinensprache ist zeitaufwendig, umständlich und fehleranfällig. Für den Nicht-Spezialisten und zugeschnitten auf bestimmte Anwendungsfelder wurden deshalb höhere Programmiersprachen entwickelt, die Formulierungen zulassen, die den üblichen sprachlichen Darstellungsweisen wesentlich näher liegen.

Auch wenn uns eine solche höhere Programmiersprache zur Verfügung steht, kommen wir um wesentliche vorbereitende Arbeitsschritte nicht herum. Am Anfang steht das Problem, bei dessen Lösung wir uns vom Computer Hilfe erwarten. In der Denkpsychologie wird dann von einem Problem gesprochen, wenn wir von einem unerwünschten Anfangszustand zu einem erwünschten Zielzustand gelangen wollen, aber (zumindest augenblicklich) nicht über die Mittel verfügen, um den unerwünschten in den erwünschten Zustand zu überführen. Sind die Mittel im Prinzip bekannt und anwendbar, wird dagegen von einer Aufgabe gesprochen (Dörner, 1979, S. 10). So gesehen können wir dem Computer prinzipiell immer nur die Bearbeitung von Aufgaben übertragen.

Wir haben also diejenigen Teile der Problemstellung festzustellen, die wir als Aufgaben formulieren können, weil uns die Mittel und Wege bekannt sind, sie zu lösen. Wir können damit eine Abfolge eindeutig formulierter Anweisungen definieren, die die Lösung der Aufgabe bewirken. Wir sprechen dann von einem Algorithmus. Ist die Formulierung von Algorithmen möglich, sind auch die Chancen gestiegen, den Computer als Hilfsmittel nutzen zu können. Allerdings gibt es genügend Aufgaben, die sich der Abarbeitung durch den Computer entziehen.

Beim Programmieren, d.h. der Nutzung des Computers als Werkzeug zum Problemlösen, können wir (nach Ziegenbalg, 1984) stark vergröbernd drei Charaktere unterscheiden. Der erste Typ, der als Drauflosprogrammierer bezeichnet werden könnte, beginnt sofort ein Programm zu schreiben, kaum dass das Problem formuliert ist. Der zweite Typ, der als Systematiker bezeichnet werden könnte, hält nichts davon, sofort am Computer loszulegen, sondern er geht das Problem systematisch an. Der dritte Typ könnte schließlich als planend, gleichzeitig experimentierend vorgehender Ingenieur bezeichnet werden. Jeder dieser typisierten Charaktere kann durch bestimmte Programmierumgebungen gefördert oder gar provoziert werden. Durch den ersten Typ wird ein häufig mit BASIC-Systemen verbundener Arbeitsstil beschrieben. Der zweite Typ ist eher charakteristisch für das Arbeiten in Pascal-Systemen. Andere Programmierumgebungen – wie eben die Logo-Systeme – unterstützen dagegen durchaus die Arbeitsweise des dritten Typs.

Logo erlaubt einen deutlich leichteren Einstieg als das mit anderen gängigen Programmiersprachen möglich wäre. Deren Leistungsfähigkeit korrespondiert mit hoher Komplexität und schwerer Erlenbarkeit. Es gibt damit es aus meiner Sicht nach wie vor gute Gründe, in der Schule mit Logo zu arbeiten. Das Schweizer Projekt PrimaLogo empfieht Logo ausdrücklich für das Programmieren an Grundschulen.

Interaktivität: Die Interaktivität von Programmierumgebungen soll den Anwendern einen möglichst unmittelbaren Zugang zu allen Funktionen erlauben. Als interaktive Systeme stellen alle Logo Versionen deshalb Kommandos zur Verfügung, die auf Betriebssystemebene wirken, um einen Wechsel zwischen den verschiedenen Ebenen zu vermeiden.

Einfachheit: Bei der Arbeit wird zwischen Direkt- und Programmiermodus unterschieden. Im Direktmodus wird ein(e) Befehl(sfolge) sofort analysiert und ausgeführt. Im Programmiermodus werden Befehlsfolgen beim Verlassen des integrierten Editors auf ihre syntaktische Korrektheit untersucht. Somit ist ein leichter Übergang zwischen der Phase des Eingebens und der Programmausführung gegeben.

Erweiterbarkeit: Der Sprachumfang des Systems kann durch die Zusammenfassung mehrerer einzelner Befehle erweitert werden. In der Informatik wird dann von Prozeduren (mit Namen versehenen Befehlsfolgen) gesprochen.

Parameterübergabe: Prozeduren können – ebenso wie den meisten Grundworten – Zahlenwerte übergeben werden.


Rekursion: Als ein sehr mächtiges Konzept hat sich in der Informatik die Rekursion erwiesen: Eine Prozedur kann sich selber aufrufen. Dieses Konzept erlaubt oft verblüffend einfache Lösungen für komplexe Fragestellungen, ist aber nicht ganz einfach zu verstehen.

Listenverarbeitung: Listen sind eine geordnete Zusammenfassung von einzelnen Datenobjekten zu einem neuen Datenobjekt. Als Listenelemente können Wörter, Zahlen oder wiederum Listen fungieren, auf die Standardprozeduren angewandt werden können.

Vollständigkeit: Zum Schreiben von Programmen oder Programmteilen steht ein integrierter Editor zur Verfügung.

Automatische Formatierung: Alle Logo-Versionen besitzen einen integrierten Editor, in dem die Programmzeilen teilweise automatisch formatiert werden. Die optische (farbliche) Gestaltung erleichtert das Verständnis der Programmstrukturen.


Fehlermeldungen: Werden im Direkt- oder Programmiermodus bei der Überprüfung der Befehle syntaktische Fehler festgestellt, so wird eine kontextabhängige Fehlermeldung zurückgegeben, mit Markierung der Fehlerstelle innerhalb des Codes.

Hilfen: Es steht optional eine ausführliche Hilfefunktion zur Verfügung.

Hinzu kommt, dass Logo reich ist an Metaphern, wodurch es für den Einsatz bereits an der Grundschule besonders geeignet ist (Kohler, Spannagel & Klaudt, 2008):

  1. Es gibt Objekte, z.B. kybernetische Tiere (die Schildkröte).
  2. Diese haben Fähigkeiten und können etwas tun (Prozeduren/Funktionen).
  3. Sie haben ein Wissen über sich und ihre Umgebung (Datenhaltung).
  4. Man kann Aufträge bzw. Befehle an sie senden (Prozeduren).
  5. Man kann Anfragen stellen, die sie beantworten (Funktionen).
  6. Man kann für sie eine Umgebung (Mikrowelt) entwickeln und ihr Verhalten verändern (Programmieren)

Ein Vorzug von Logo ist weiterhin, dass es nicht nur leicht erlernbar ist, sondern auch den Übergnag zu sehr komplexen, für die Informatik zentralen Fragestellungen erlaubt. Brian Harvey zeigt das eindrucksvoll in seinen drei Bänden Computer Science Logo Style (Harvey, 1997). Er zeigt u.a. wie mit Logo Parser und Compiler für BASIC geschrieben oder Fragen der Künstlichen Intelligenz bearbeitet werden können.

Zitierte Literatur:
Briggs, J. (2013). Python kinderleicht! Heidelberg: dpunkt Verlag.
Dörner, D. (1979). Problemlösen als Informationsverarbeitung. Stuttgart: Kohlhammer.
Eshel, E. (2011). Kids Can Program Too!: Java Edition. CreateSpace Independent Publishing.
Harvey, B. (1997). Computer Science Logo Style Vol. 1: Symbolic Computing. Cambridge, Mass.: The MIT Press. Online-Version unter http://www.cs.berkeley.edu/~bh/v1-toc2.html
Harvey, B. (1997). Computer Science Logo Style Vol. 2: Advanced Techniques. Cambridge, Mass.: The MIT Press. Online-Version unter http://www.cs.berkeley.edu/~bh/v2-toc2.html
Harvey, B. (1997). Computer Science Logo Style Vol. 3: Beyond Programming. Cambridge, Mass.: The MIT Press. Online-Version unter http://www.cs.berkeley.edu/~bh/v3-toc2.html
Kohler, T., Spannagel, C. & Klaudt, D. (2008). Räumliches Denken mit Logo: Eine Einführung in der Grundschule. Notes on Educational Informatics – Section B: Classroom Experiences 3 (1), pp. 29-43. Ludwigsburg: Institut für Mathematik und Informatik. Download unter https://www.ph-ludwigsburg.de/8827.html
PrimaLogo – Programmieren an Primarschulen: http://primalogo.ch
Strom, C. (2014). Kids programmieren 3D-Spiele mit JavaScript. Köln: O‘Reilly.
Ziegenbalg, J. (1984). Programmiersprachen als Träger informatischer Grundideen. MNU 37, 7/1984, S. 404-415. Download beim Autor