Visuelles Programmieren mit Scratch – nicht nur für Kinder!

Note for my English readers: You will find an English version of this blog post under Visual Programming with Scratch – not only for kids!

Vorbemerkung: Dies ist die ungekürzte Fassung meines Beitrags zum Buch Scratch Tales. Celebrating 10 Years of Imagining, Prgramming and Sharing with Scratch.

Als Scratch vor 10 Jahren erschien, war dies der Auslöser für ein bemerkenswertes Comeback der Programmiersprache Logo. Dieser Ansatz zur Programmierung mit grafischen Elementen fand schnell mehrere Nachahmer und Ableger mit Turtle Art, Blockly, Snap! – um nur ein paar zu nennen. Es ist weithin anerkannt, dass Scratch eine geeignete Programmierumgebung für (auch kleine) Kinder ist. Auf der anderen Seite wird diskutiert, ob Blocksprachen ernst genommen werden können, denn sie sehen eher wie ein Kinderspiel aus als wie eine Programmiersprache. Es wird oft argumentiert, dass nach einem Einstieg mit Scratch ein Übergang zu „richtigen“ Programmiersprachen, und als solche werden textbasierte Programmiersprachen verstanden, notwendig ist. Ich kann diese Meinung nicht teilen …

Zur Einordnung meines Standpunktes muss ich voraus schicken: Ich bin kein Informatiker und kein ausgebildeter Programmierer und ich bin kein Lehrer. Ich bin ein pensionierter Bildungs-Technologe mit einem wachsenden Interesse an der Programmierung von Projekten in verschiedenen Bereichen, wie Computer-Kunst, Simulationen und der Visualisierung von mathematischen Phänomenen. Das sind zwar alles keine großen, aber durchaus anspruchsvolle kleine Projekte.

Gleich zu Beginn meiner beruflichen Laufbahn hatte ich die Gelegenheit, die Sprache Logo sowie Paperts Ansatz des Konstruktionismus kennen zu lernen. Die Auseinandersetzung mit seiner Theorie sowie die Anwendung der Sprache Logo in Projekten der Lehrerausbildung hatte einen starken Einfluss auf meine weiteren Aktivitäten.

Beruflich war es für mich jedenfalls bei mehreren Gelegenheiten notwendig, computergestützte Projekte zu leiten oder sogar Teile selbst zu programmieren. So war es für mich unvermeidlich, mir grundlegende Programmierungskonzepte anzueignen und sie mit zu diesem Zeitpunkt aktuellen Programmiersprachen umzusetzen (von FORTRAN, BASIC bis Pascal). Es ist in diesem Zusammenhang auch anzumerken, dass ich insbesondere grafisch interaktive Problemlösewerkzeuge entwickelt habe (z.B. KOMPART für pharmakokinetische Kompartmentsysteme; GRIPS und MODUS zur Modellierung dynamischer Systeme). Diese Tools ermöglichten es Studenten (und professionellen Anwendern), dynamische Systeme ohne mathematische und programmiertechnische Barrieren zu modellieren und zu simulieren.

Dieser Ansatz basiert auf einer Tradition in den angewandten Wissenschaften. Es ist vielleicht kein Zufall, dass die visuelle Programmierung in Bereichen, in denen interdisziplinäre Kooperation üblich ist, besonders weit verbreitet ist und die Kommunikation über die Grenzen des Themas hinaus durch entsprechende Visualisierungen erfolgt. Beispiele sind LabView (Messtechnik), Vensim und iThink (Modellierung von dynamischen Systemen) oder iMODELER (Projektmanagement).

Der übliche Einstieg in die Programmierung mit textbasierten Programmiersprachen ist dagegen mit hohen Hürden verbunden – nicht nur für Kinder. Das gilt selbst bei einer bildungsorientierten Sprache wie Logo und um wie viel mehr in Produktionssystemen wie Java oder Python. Alle Anfänger müssen viele verschiedene Dinge gleichzeitig lernen: Syntax und Semantik der Befehle, die Formulierung von Algorithmen, den Umgang mit der Entwicklungsumgebung und dem Editor, den Umgang mit Fehlern und mehr. Am Anfang  sollten aber eigentlich die Konzepte der Programmierung im Vordergrund stehen. Professionelle Entwicklungsumgebungen verstellen oft den Blick auf das Wesentliche. Diese Hürde kann mit visuellen Programmierumgebungen deutlich reduziert werden.

Es gibt einige Studien (siehe z. B. Weintrop & Wilensky, 2017, Price & Barnes, 2015), die zeigen, dass die visuelle Programmierung den Einstieg in das Programmieren besonders für Anfänger mit wenig Vorkenntnissen erleichtert. Auch wenn visuelle Programmiersprachen oft nur als Vorläufer der „echten“ Programmierung akzeptiert werden (siehe z. B. Dorling & White, 2015), ist es doch zweifelhaft, ob die Mehrheit der an der Programmierung interessierten Personen die „richtigen“ Sprachen für die Entwicklung ihrer Anwendungen überhaupt braucht (Modrow, 2013). Eine Einschränkung von visuellen Sprachen kann darin gesehen werden, dass die grafische Implementierung komplexer Algorithmen mit vielen Symbolen schnell eine räumliche Grenze erreichen kann. Das wird auch als Deutschgrenze bezeichnet nach dem Informatiker L. Peter Deutsch: Mehr als 50 visuelle Elemente auf dem Bildschirm sind schwer zu verstehen. Glücklicherweise stehen in Scratch et al. strukturierende Elemente zur Verfügung, um Befehlsfolgen zusammenzufassen und so ein potentielles Raumproblem zu vermeiden oder deutlich zu lindern.

Jedenfalls entdeckte ich nach meinem Ruhestand wieder meine Liebe zur Kunst und zur Programmierung. Und mit Scratch (und seinen Abkömmlingen) habe ich die Werkzeuge gefunden, die mir den unproblematischen Wiedereinstieg erlaubten und die Nutzung meiner bisherigen Erfahrungen in der Entwicklung von Lernumgebungen. Für meine eigenen Anwendungsfelder (Computerkunst, Visualisierungen, Simulationen) sehe ich auf jeden Fall keine zwingende Notwendigkeit, andere Werkzeuge zu benutzen.

Mittlerweile bin ich engagiert, älteren Leuten (60+, so genannte Silver Surfer) zu helfen, Zugang zum Computer und zum Internet zu bekommen. Einige von ihnen sind sogar daran interessiert, Programmieren zu lernen, häufig einfach als intellektuelle Herausforderung oder um an aktuellen Entwicklungen teilzunehmen und ihre Rolle als reine Verbraucher zu überwinden. Ich habe gelernt, dass es in diesem Fall besonders wichtig ist, einem lernerzentrierten Design zu folgen und motivierende Themen aufzugreifen. Geeignete Ausgangspunkte sind individuelle Hobby-Projektideen (wie in meinem Fall die ComputerKunst) und diese zu implementieren.

Ein solcher Ansatz bildet ein Gegengewicht zu üblichen Einführungen zur Programmierung, die oft an einem Mangel an adressatenspezifischer Sprache und Beispielen leiden. Die Verwendung Visueller Programmierung mit Scratch ist bestens geeignet, Frustrationen mit Software-Installationen und Konfigurationen und Fehleranalysen zu vermeiden (siehe Guo, 2017). Für meine Adressaten ist es besonders wichtig, dass sie sich auf die Entwicklung der Algorithmen konzentrieren können.

Meine Erfahrung und meine Schlussfolgerung ist also, dass Scratch nicht nur für Kinder geeignet ist, sondern auch für Adressaten am anderen Ende der Alterspyramide! Ich bin neugierig, was die Entwicklung von Scratch et al. uns in den nächsten 10 Jahren in dieser Hinsicht noch bringen wird.

10 Jahre konzeptblog

konzeptblog2006Fast hätte ich mein eigenes Jubiläum verpasst! Heute vor genau 10 Jahren habe ich den ersten Beitrag im konzeptblog frei geschaltet. Das war der Beginn des Aufbaus meiner eigenen Webpräsenz, die sich inzwischen in die Website (als Startseite), dazu konzeptblog, SoftwareMuseum, Programmieren für Alle und seit Januar 2015 noch Digital Art ausdifferenziert hat. Weiterlesen

Lesetipp: Mit Scratch Programmieren lernen – aus Büchern

Die Frage, ob und wann und mit welchen Konzepten und Inhalten ein #PflichtfachInformatik eingeführt werden sollte, ist höchst umstritten. Ich rechne damit jedenfalls in absehbarer Zukunft nicht. Umso mehr hat mich interessiert, welche Bücher es denn gibt, um Kinder und Jugendliche an das Programmieren und mehr – im Sinne von informatischem Denken (CT: Computational Thinking) – heran zu führen.

Für diese Zielsetzung wird als Programmiersprache der Wahl sehr oft Scratch genannt. Scratch ist eine visuelle Programmierumgebung in der Tradition von Logo, konzipiert und entwickelt am MIT Media Lab unter der Leitung von Mitchel Resnick. Neben einer niedrigschwelligen grafischen Benutzerobefläche bietet Scratch Programmierkonzepte zur Vermittlung der Grundlagen des CT, also der Fähigkeit, Problemstellungen für die Lösung mit Hilfe des Computers aufzubereiten, u.a. mit Iteration, bedingten Anweisungen, Variablen und Listen, Prozeduren, Rekursion, Parallelverarbeitung. Weiterlesen

Roboter für Alle!

Als Befürworter von Programmieren für Alle, und das möglichst früh, habe ich mich über die vielen – vor allem der visuellen – Programmierumgebungen gefreut, die (auch ganz) jungen Adressaten einen Zugang dazu ermöglichen. Ich erwähne nur Scratch und daran anknüpfende Alternativen (wie Snap!, Turtle Art, Blockly, App Inventor) aber auch Greenfoot oder BlueJ. Daneben gibt es seit einiger Zeit verstärkte Bemühungen, das Programmieren mit der Steuerung von Robotern, Sensoren und Aktoren zu verbinden. Damit soll einerseits die Motivation gesteigert werden, denn dadurch sind spannende Projekte realisierbar, bei denen „sich etwas tut“, andererseits sind so Anknüpfungspunkte an aktuelle realweltliche Fragestellungen gegeben. Ergebnis ist ein ganzer „Roboterzoo“ und dieser Beitrag ist ein Versuch, für mich ein bisschen Ordnung in der unübersichtlichen „Artenvielfalt“ zu schaffen. (auf die Seite Educational Robots bin ich leider erst nach Abfassen dieses Beitrags aufmerksam gemacht worden. Dank an Thorsten Leimbach!). Weiterlesen

Klein, aber oho – die neuen Raspberry Minicomputer

Seit kurzem ist meine Hardware-Ausstattung um zwei Geräte angewachsen, den PiZero und den Raspberry Pi 3. Beides sind Einplatinencomputer der Raspberry Pi Foundation, die 2012 mit dem Raspberry Pi Model A den Grundstein für eine kleine Rechnerfamilie gelegt hat: Noch 2012 folgte Model B, 2013 dann Model A+ und B+, Februar 2015 dann Raspberry Pi 2 Model B, November 2015 der Pi Zero und Februar 2016 nun der Raspberry Pi 3, jeweils mit immer verbesserten Ausstattungsmerkmalen.
PiZeroraspberry3Pi Zero (links), Pi 3 (rechts)

Das Arbeiten mit Computern habe ich vor knapp 50 Jahren mit der Abgabe von Lochkartenstapeln für Großcomputer (Telefunken TR 440) begonnen, gefolgt von Lochkartenstreifen an Minicomputern (DEC PDP 11) und ab 1980 auch im Privatbesitz (mit einem KISS, dem direkt vermarkteten Vorläufermodell des ersten deutschen 8-Bit Bürocomputers, dem Triumph Adler Alphatronic PC), dann mit Tastatur, aber natürlich noch ohne Maus. Obwohl ich die Entwicklung seither immer an entsprechend modernen Geräten persönlich miterleben konnte, bin immer wieder beeindruckt von den Leistungen der Ingenieure, die uns heute nun also diese leistungsfähigen Winzlinge bescheren. Denn ergänzt um Fernseher als Monitor, USB-Tastatur und Maus, habe ich mit den Raspberrys vollwertige Computer mit Speicher satt, GUI und Netzzugang, Office-Paket, Webbrowser und zahlreichen Programmierumgebungen. Weiterlesen

(Mein) Online Lernen 2015

Im Jahr 2015 habe ich an insgesamt vier MOOCs mitgemacht bzw. (um präziser zu sein) mich angemeldet. Am Jahresanfang waren es der MOOC 2015 Digitales Lernen in der Grundschule – Tablets von Lehrern sinnvoll eingesetzt, durchgeführt von 20 Studierenden der Universität Hildesheim unter der Leitung von Prof. Dr. Joachim Griesbaum, sowie die Online-Fortbildung für Lehrerinnen und Lehrer zum Einsatz mobiler Endgeräte, durchgeführt vom Karlsruher Institut für Technologie. Mir ist klar, dass ich nicht unbedingt Adressat dieser Angebote war, dennoch fand ich beide inhaltlich und methodisch etwas dürftig. Ich werde deshalb auch nicht näher darauf eingehen (wer es nachprüfen will, findet die Hildesheimer Materialien noch in einem Wiki. Der KIT-Kurs ist leider nicht mehr online).

Erst vor kurzem sind zwei weitere meiner MOOCs zu Ende gegangen: „Making“ – Kreatives digitales Gestalten mit Kindern bei iMOOx und The Beauty and Joy of Computing (CS Principles), Part 2 bei edX. Bei beiden hatte ich inhaltliches Interesse (an der Maker-Bewegung beim ersten, am Programmieren mit Snap! beim zweiten Kurs), ohne das Bedürfnis dabei ein Zertifikat zu erwerben. Diese beiden Kurse haben mir verdeutlicht, wie „normal“ für mich der Zugang zu Online-Lernmaterialien inzwischen geworden ist. Weiterlesen

Visuelles Programmieren

Weil ich mich gerade intensiver mit der visuellen Programmierumgebung Snap! befasse (vgl. Künstliche Kunst), war ich sehr gespannt auf das LOG IN-Themenheft Visuelles Programmmieren. Konkret gibt es dazu sechs Artikel, so den Beginn einer Serie zum objektorientierten Programmieren mit SQUEAK/SMALLTALK (obwohl das momentan schon eher wieder ein Dasein am Rande fristet) von Rüdeger Baumann, die grafische Programmierung von Robotern mit GRAPE und AtoCC zur Erstellung von Zustandsübergangstabellen für die Simulation von Automaten. Für mich sind interessenbedingt die beiden Artikel von Eckart Modrow zu Snap! am ergiebigsten. Was fehlt, sind Einschätzungen und Beispiele zu den spannenden Entwicklungen rund um Scratch, App Inventor, Blockly, BeetleBlocks und und und … Da wäre in einem Doppelheft mehr zum Themenschwerpunkt nötig und möglich gewesen. Weiterlesen