Programmieren in der Schule?

Wer sich einigermaßen auskennt, muss von Adrian Lobes Artikel Auf dem Lehrplan der Siliziumtalschule im FAZ-Feuilleton zu der Frage, welche Rolle Programmieren in der Schule spielen sollte, vermutlich nur das folgende Zitat lesen, um richtig einordnen zu können, wie ernst man die betreffenden Ausführungen nehmen sollte – oder eben nicht:

“In der binären Logik existieren keine Graubereiche und Schattierungen – es gibt nur Einsen und Nullen. Dabei heißt es doch immer, Kinder sollen lernen, zu nuancieren und abzuwägen.”

Zwei Sätze nur, und doch vollkommen ausreichend um zu etablieren, dass der Autor erstens herzlich wenig Ahnung von dem hat, was er da schreibt, und sich zweitens von diesem Defizit nicht abhalten lässt, weitgehende Schlüsse zu ziehen.

Im Geiste des Feuilletons könnte man sich im direkten Anschluss an eine Variation über die zwei Kulturen des C. P. Snow machen, oder darüber, wie eigentlich Leute ausgesucht werden, die immerhin ja in einem größeren und bekannteren deutschen Qualitätsmedium solche Artikel veröffentlichen dürfen.

Was lernt man denn nun beim Programmieren?

Ich verzichte darauf und beschäftige mich lieber mit dem programmieren lernen. Wir hatten beispielsweise  in den letzten sieben Wochen Praktikanten im Haus der Astronomie, Schüler/innen oder gerade mit der Schule fertig, und die mussten in ihrem Praktikum ordentlich programmieren – und sich die dafür nötigen Fähigkeiten in den meisten Fällen erst einmal aneignen. Ich persönlich habe in den letzten Jahren vor allem das Programmieren von Kleinsystemen wie Arduino oder Raspberry Pi neu für mich entdeckt, und dabei ganz eigene Erfahrungen gesammelt. Sprich: Insgesamt bin ich kein unbelecktes Blatt, wenn es darum geht, programmieren in seinen verschiedenen Ausprägungen zu lernen und, man kann schließlich nicht aus seiner Haut, über das Programmieren-lernen nachzudenken.

Damit direkt an des FAZ-Autors steile Thesen: Lernt man beim Programmieren “Solutionismus”, sprich: dass es für alle Probleme der Welt nur die geeignete App braucht? Meiner Erfahrung nach ist das Gegenteil der Fall. Wer selbst programmiert, sucht sich ja gerade nicht Apps anderer Leute heraus, sondern versucht selbst, den Computer zu bestimmten Dingen zu bringen. Und dürfte dabei schnell merken, dass das alles gar nicht so einfach ist, wie es manche Werbung vorgaukelt. Insbesondere bekommt man beim eigenen Programmieren ein Gefühl für den sonderbaren Zwiespalt, dass Computer einerseits in sehr begrenzter Weise intelligent, in anderer Hinsicht aber ausnehmend blöd sind.

Denkweisen

Dass die fundamentalen Nullen und Einsen des Computercodes dem Geist des angehenden Programmierers allein deswegen nicht schaden, weil man sie als normaler Programmierer niemals zu Gesicht bekommt, ist die eine Sache. Aber die Frage nach den Denkweisen finde ich hochinteressant – auch wenn ich aus eigener Erfahrung wieder zu genau den entgegengesetzten Schlüssen komme wie der FAZ-Artikel.

Computer sind, wie gesagt, ausnehmend blöd. Man muss ihnen haarklein auseinandersetzen, was sie tun solles. Und wenn sie etwas komplexeres tun sollen, dann muss man erst selbst einmal selbst genau durchdenken, was man da eigentlich will. Wenn meine Solarzelle der Sonnenbewegung folgen soll, was muss mein Mikrokontroller dazu wissen? Wie erkennt ein Mikrokontroller, ob sich die Teleskopkuppel dreht? Selbst solche einfachen Aufgaben muss man für die Computersteuerung noch vereinfachen. Und dazu erst einmal verstehen.

Das dürfte die fundamentale Denkweise sein, die man sich mit dem Programmieren aneignen muss: Wie man sich Modelle ausdenkt, die einfach genug sind, dass man sie programmieren kann, aber komplex genug, damit sie die wirkliche Welt (und ihre Störquellen) abbilden. Wer in diesem Spannungsfeld nicht nuanciert oder abwägt, schreibt in den Extremfällen sehr eleganten Code, den schon die kleinste Imperfektion der Wirklichkeit aus der Bahn wirft, oder aber unendlich lange Programme, deren Fähigkeit, auf noch den unwahrscheinlichsten Input angemessen zu reagieren, in keinem Verhältnis mehr zum Programmieraufwand steht.

All das ist eigentlich gar nicht so weit entfernt vom Handwerk der Politiker und Juristen, die versuchen, eine unüberschaubare Vielzahl von Alltagssituationen mit vergleichsweise wenigen Regeln in geordnete Bahnen zu lenken.

Eine andere Analogie: Beim Programmieren lernt man ähnlich viel über eine Sache, wie wenn man diese Sache einem darin nicht besonders bewanderten und insgesamt nicht besonders auffassungsschnellen Mitmenschen erklären muss – also sehr viel.

Zusätzlich drängen sich Parallelen zu den Argumenten für Latein als schulische Fremdsprache auf, eben jene Sprache fördere Sorgfalt, Klarheit und Disziplin im Denken. Genau so kann man auch für das Programmieren argumentieren: Auf unterster Ebene wird, wer nicht sorgfältig arbeitet, sein Programm alleine aufgrund nicht enden wollender Fehlermeldungen nicht zum Laufen bekommen. Auf höherer Ebene wird, wer das zu lösende Problem nicht hinreichend durchdacht hat, direkte Erfahrungen damit sammeln, dass allein der Umstand, dass ein Computer im Spiel ist, keine Patentlösung bedeutet. Man kommt in realistischen Situationen nicht darum herum, die Grundlagen dessen zu verstehen, was man da programmiert. Wo Computer zur Lösung eines Problems eingesetzt werden, war in der Regel mehr menschliches Denken im Einsatz, als man das ohne eigene Programmiererfahrung annehmen würde. Mit allen Vor- und Nachteilen.

Komplex kann jeder

Was beim Programmieren übrig blieb: Ausschnitt aus einem Python-Programm mit zwei Importen und einer längeren Funktionsdefinition
Programmausschnitt: Wenn, dann nur solange beeindruckend, bis man selbst mal so etwas geschrieben hat.

Sieht man als Programmieranfänger das erste Mal ein seitenlanges Programm, ist das erst einmal überwältigend. So etwas komplexes zu schaffen, dass bringt man selbst doch niemals zustande! Und doch sitzt man dann am Ende der ersten Woche da und schaut auf die eigenen seitenlangen Programme zurück.

Und weiß, dass das Schreiben seitenlanger Programme allein noch keine Kunst ist, sondern es im Gegenteil viel mehr Nachdenken erfordert, das Programm kürzer und übersichtlicher zu machen.

Kürze und Übersichtlichkeit wiederum, plus nachvollziehbare Dokumentation in Form von Kommentaren im Programmcode, weiß man insbesondere dann zu schätzen, wenn das Programm eben nicht tut, was es soll, und man sich auf die Fehlersuche begibt. Die Fehlersuche vermittelt oft eine gehörige Portion an Bescheidenheit – abgeleitet entweder auf dem Fehler, den man da fabriziert hat, oder aber auch daraus, wie bzw. dass man einen einfachen Fehler erst beim sechsten Durchlesen desselben Quelltexts hat finden können. Und sie vermittelt eine gehörige Portion Skepsis gegenüber Software, auf die man sich verlassen können sollte – etwa bei der Steuerung wichtiger und gefährlicher Abläufe in Verkehr oder Medizin. Wer selbst programmiert hat, bekommt einen ganz anderen Blick auf die Programmierer, von derem Code dann eben nicht nur die Auswertung bestimmter astronomischer Datenreihen abhängt, sondern das Leben bzw. die Gesundheit/Unversehrtheit von Menschen.

Big data is nothing.

Im diesjährigen Sommerpraktikum hatte ich keine konkreten astronomischen Aufgaben vorbereitet, sondern den Praktikanten weitgehend selbst überlassen, was sie erforschen wollten. Ich hatte ihnen dazu gezeigt, wie sie an astronomische “Big data” herankommen, beispielsweise an die Katalogdaten von Millionen Galaxien im Sloan Digital Sky Survey und an astronomische Originalbilder wie sie zu tausenden im wissenschaftlichen Archiv der Europäischen Südsternwarte verfügbar sind.

Dass soviele astronomischen Daten für jede/n frei zugänglich sind, ist eine tolle Sache. Aber Zugriff auf die Daten zu haben heißt noch lange nicht, damit auch etwas vernünftiges anfangen zu können. Für eine Reihe unserer Praktikanten bestand die Herausforderung genau darin: die Physik und Astronomie, die hinter den Beobachtungsdaten steckt, soweit zu verstehen und die Daten auf diesem Verständnis aufbauend zu analysieren.

Wer diese Erfahrung selbst gemacht hat, dürfte sich in Zukunft nicht blenden lassen, wenn “Big data” in irgendeiner Form Schlagzeilen macht, sondern wird vermutlich direkt zurückfragen, was/wie man denn vorhabe, die vielen Daten zu analysieren – und welche Erkenntnisse man realistischer Weise erwarten könne, daraus abzuleiten. Big data an und für sich sagt herzlich wenig aus.

Ein erweiterter Werkzeugkasten

Die bislang genannten Erfahrungen sind wichtig, um Bedeutung und Grenzen der Informationstechnik besser einschätzen zu können und die Widerstandskraft gegen übertriebene Heils- oder Unheilsversprechen zu stärken. Das stärkste Argument dafür, dass Programmieren darüber hinaus eine Kulturtechnik ist, wenn auch sicher nicht auf dem gleichen elementaren Niveau wie lesen und schreiben, sind die möglichen Anwendungen. Programmieren ist ja nicht gleich Informatik, sondern eröffnet Werkzeuge, wie sie in vielen Wissenschaften Usus und auch für das sonstige Leben als mündige/r Bürger/in nützlich sind.

Der größte Nutzen des Programmierens beginnt dort, wo man mit dem Taschenrechner nicht mehr weiterkommt und wo kommerzielle Software nicht flexibel genug ist. Ich persönlich nutze in der Regel direkt die Programmiersprache Python, wenn ich Daten verarbeiten, grafisch darstellen, statistisch oder anderweitig analysieren will.

Wenn wir über die Schule reden, wäre es natürlich sinnvoll, das Werkzeug Programmieren gleich mit den Kulturtechniken zusammen zu lehren, die nötig sind, um zu verstehen, was und wie man da überhaupt grafisch darstellt oder analysiert – und welche Interpretationen daraus ableitbar sind. In meinen Beiträgen Ein kritischer Blick auf die globale Temperaturentwicklung (2013) und Klimaerwärmungspause: einige Diagramme vs. deutlich weniger als tausend Worte (2015) hatten ja sowohl die via Python aus den öffentlich verfügbaren Daten erstellbaren Temperaturkurven als auch verschiedene Mittelungskurven und deren Interpretation die zentrale Rolle gespielt. Ob man in den Daten eine Erwärmungspause sieht oder nicht hängt direkt vom Wissen über das Erstellen und Lesen solcher Diagramme ab. Sprich: solche Kulturtechniken sind unter anderem wichtig, wenn man politische Entscheidungen zu einem zentralen Thema unserer Tage und dessen wissenschaftlichen Hintergrund verstehen möchte.

Der FAZ-Autor pervertiert dies zu der Aussage, Programmieren im Unterricht lehre, “man könne alle Probleme der Welt in Zahlen beschreiben und mit einer Formel lösen”. Nein, sicher nicht, weder ersteres noch letzteres. Aber um diejenigen Probleme der Welt, zu denen wir Zahlen und Daten besitzen, richtig einschätzen zu können, braucht man ein entsprechendes Grundverständnis und einen persönlichen Werkzeugkasten, wie sie Programmier-Unterricht, eingebettet in den wissenschaftlichen Kontext, liefern kann.

Es kommt auf die Umsetzung an

Natürlich kommt es auf die Umsetzung an. Die hier genannten wichtigen Erfahrungen kann man nur machen, wenn der Informatikunterricht, in dessen Kontext in der Schule selbst programmiert wird, bestimmte Voraussetzungen erfüllt: Nicht nur vorgekaute Häppchen-Aufgaben, sondern größere eigene Projekte sollten die Schüler/innen programmieren; sonst bekommt man kein rechtes Gefühl für die Schwierigkeiten und Probleme. Programmieren als Werkzeug sollte nicht von den wissenschaftlichen Anwendungen getrennt werden – nicht als “jetzt machen wir Informatik!” von den anderen Wissenschaften abgekapselt, sondern als Werkzeug eingesetzt, und gelehrt nicht nur als pures Programmieren, sondern zusammen mit den wichtigsten wissenschaftsübergreifenden Techniken zur Datenanalyse.

Dann kann Programmieren im Unterricht beides: zum einen Fähigkeiten vermitteln, die einer Reihe der Schüler/innen dann tatsächlich den Weg zu einer Karriere in der Informationstechnik oder in den vielen Berufen ebnen, in denen Datenanalyse eine Rolle spielt – zum anderen es den restlichen Schüler/innen ermöglichen, die Entwicklungen in diesen Bereichen kritisch zu begleiten, aber eben nicht blind-kritisch, sondern mit geeignetem Hintergrundwissen und auf der Basis eigener Erfahrungen.

 

 

 

 

Avatar-Foto

Markus Pössel hatte bereits während des Physikstudiums an der Universität Hamburg gemerkt: Die Herausforderung, physikalische Themen so aufzuarbeiten und darzustellen, dass sie auch für Nichtphysiker verständlich werden, war für ihn mindestens ebenso interessant wie die eigentliche Forschungsarbeit. Nach seiner Promotion am Max-Planck-Institut für Gravitationsphysik (Albert-Einstein-Institut) in Potsdam blieb er dem Institut als "Outreach scientist" erhalten, war während des Einsteinjahres 2005 an verschiedenen Ausstellungsprojekten beteiligt und schuf das Webportal Einstein Online. Ende 2007 wechselte er für ein Jahr zum World Science Festival in New York. Seit Anfang 2009 ist er wissenschaftlicher Mitarbeiter am Max-Planck-Institut für Astronomie in Heidelberg, wo er das Haus der Astronomie leitet, ein Zentrum für astronomische Öffentlichkeits- und Bildungsarbeit, seit 2010 zudem Leiter der Öffentlichkeitsarbeit am Max-Planck-Institut für Astronomie und seit 2019 Direktor des am Haus der Astronomie ansässigen Office of Astronomy for Education der Internationalen Astronomischen Union. Jenseits seines "Day jobs" ist Pössel als Wissenschaftsautor sowie wissenschaftsjournalistisch unterwegs: hier auf den SciLogs, als Autor/Koautor mehrerer Bücher und vereinzelter Zeitungsartikel (zuletzt FAZ, Tagesspiegel) sowie mit Beiträgen für die Zeitschrift Sterne und Weltraum.

28 Kommentare

  1. Feuilletonisten schreiben auch heute noch für Bildungsbürger, deren Bildungsbegriff viele Dinge einschliesst (bis hin zu Harry Potter und Rockmusik), wo aber zugleich zuverlässig alles naturwissenschaftlich/ mathematische ausgeschlossen oder mindestens negativ bewertet wird, was sich dann in binären Empfehlungen wie Balett, Musikunterricht und Basteln ja, Programmieren, Experimentieren und (naturwissenschaftlich) Forschen nein niederschlägt. Dies mein Urteil zum geistigen Umfeld (Täterumfeld?), in dem der oben erwähnte “Nullen-Und-Einsen”- Autor beheimatet ist.

    Dass die Welt in Palo Alto eine ganz andere ist mit ganz anderen Leuten als deutschen Bildungsbürgern zeigt im Kontrast dazu der ArtikelSchulen im Silicon Valley: Der Sternenhimmel ist das Ziel, nicht die Versetzung. Dort liest man zum Programmieren in der Vor- und Grundschule:

    Natürlich hat Malina hier angefangen, das Programmieren zu lernen. Ihre Lehrerin hat uns Eltern mit einem Passwortzugang zu einer App versorgt, mit der Fünfjährige spielerisch die Grundprinzipien der Programmiersprache Java lernen können. Malina liebt diese App, sie verbringt viele Stunden zu Hause damit. Im Nachmittagsangebot unserer Schule enthalten sind – gegen Bezahlung – zudem Kurse in Design Thinking und 3-D-Druck. Ich bin nicht davon überzeugt, dass Grundschulkinder all das schon wirklich lernen müssen. Aber ich habe inzwischen begriffen, dass Technikversiertheit hier genauso dazugehört, wie Waldorfschulen und das Basteln in Deutschland.

    Malinas Schuljahr in Palo Alto hat unserer ganzen Familie klargemacht, dass das Silicon Valley weniger ein Ort auf der Landkarte als vielmehr eine Geisteshaltung ist: Es gibt immer eine Gelegenheit, etwas Neues und hoffentlich Besseres zu erfinden.

    Ich denke schon, dass Deutschland etwas mehr Silicon-Valley Geist brauchen könnte und dass Feuilletonisten wie Adrian Lobes (der “Nullen-Und-Einsen”- Autor) zu einer Gattung gehören, die nicht unter Artenschutz gestellt werden muss sondern ruhig aussterben darf.

  2. Ja, sehr schöner Artikel, jeder Satz scheint richtig, Programmieren ist ein Handwerk, ein guter Handwerker, gerne, aber nicht notwendigerweise auch mit passender (Hochschul-)Ausbildung, “irgendwas mit Ingenieur” vielleicht, kann gute Ergebnisse – im Programmieren – erzielen, so zumindest die überraschende Erfahrung des Schreibers dieser Zeilen.

    Die schlechte Nachricht aber bleibt, dass die Software-Entwicklung, auch die hobbyartige, das Frickeln sozusagen, schwierig ist und nicht jeder kann und nicht jeder können muss.

    Merkwürdige bis grausame Aussagen vom ‘studierten Politikwissenschaftler’…

    MFG
    Dr. Webbaer

  3. Boolsche Algebra, dann Addierwerke (Halb- und Volladdierer), dann Kodierungstheorie, dann Kommunikationsmodell, dann Turingmaschine und dann noch ein wenig Pascal programmieren ist minimale Voraussetzung, um die heutige Welt der Computer begreifen zu können.

    Wer das nicht versteht muss den Rechner als magische Black-Box betrachten und wird folglich dem Aberglauben verfallen. Insofern dient all dies der Aufklärung junger Menschen und wird hoffentlich an jeder Schule in ausreichendem Umfang unterrichtet.

    • Da kann man natürlich immer fragen, wie tief man gehen muss/soll. Ich fände bereits High-Level-Programmieren sehr sinnvoll, solange man dabei die Probleme/Grenzen kennenlernt.

  4. Programmieren ist ein kreativer Prozess der auf Logik aufbaut. Die Programmiersprache ist hierbei lediglich ein Werkzeug um einem kreativen Entfaltungsdrang Ausdruck zu verleihen. Im Vordergrund sollte die Lust an der Umsetzung einer Anwendung stehen, dann stimmt auch die Motivation programmieren lernen zu wollen. Das Programmieren an Schulen sollte daher aus meiner Sicht eine Option sein, derer sich der Schüler bei Interesse bedienen kann.

    • Das Programmieren an Schulen sollte daher aus meiner Sicht eine Option sein, derer sich der Schüler bei Interesse bedienen kann.

      Die ‘Option’ war das Wort, das Ihr Kommentatorenfreund weiter oben nicht gefunden hat.

      Und jetzt ist hier doch noch etwas Kritisches zum dankenswerterweise bereit gestellten WebLog-Artikel eingefallen:
      Die Datenanalyse darf gerne schulisch draußen bleiben, sie ist sozusagen eine Spezialität mathematischer Art, die nicht in die Software-Entwicklung hineinspielen muss.

      MFG + schönes Wochenende noch,
      Dr. Webbaer

    • Nur Optionen zu bieten, die die Schüler/innen bei bestehendem Interesse wählen können, reicht meiner Meinung nach nicht aus. Manchmal merkt man erst, dass etwas interessant ist, wenn man sich etwas näher damit auseinandersetzen musste – was man dem eigentlichen ursprünglichen Interesse folgend nicht getan hätte.

      • @ Markus Pössel :

        “Software” meint regelmäßig, dass geschäftliche Vorhaben oder “Realvorhaben” mit den Mitteln der IT unterstützt werden, gerade auch: unternehmerische; Sie kriegen das in viele Schüler nicht rein, es wird oder muss insofern im schulischen Unterricht dazu kommen, dass irgendwelche IT-gestützten trivialen Rechenvorgänge geübt werden und irgendwelche Message-Boxen hochkommen.
        Insofern fand Ihr Kommentatorenfreund, der Ihnen in dieser Sache natürlich x-mal nähersteht als die hier ein wenig in die Mangel genommene Kraft des FAZ-Feuilletons, die genannte Optionalität angebracht.

        MFG + schönes Wochenende noch, danke für Ihre Arbeit,
        Dr. Webbaer

  5. Eine sehr wirksame Motivation für das Programmieren ist das Abgeben von mühsamen oder langweiligen Arbeiten an den Computer.
    Konrad Zuse sagte so etwas ähnliches.
    Die Mandelbrot-Menge mit der Hand auszurechnen stelle ich mir ebenfalls mühsam vor.
    Ich habe im Jahre 1980 mit Microsoft MBASIC begonnen, mit einem Intel-8080-Prozessor, ein Beckman DU-8 Spektralphotometer zu steuern, Daten zu übernehmen, und diese Daten rechnerisch auszuwerten.
    Das alles wurde vorher mühsam mit der Hand gemacht, was mich wenig begeistert hat.
    Die Faulheit fördert eben die Intelligenz.

  6. Programmieren bedeutet für mich unter anderem
    – Die Option Ideen und ganze Gedankenwelten selber zu realisieren
    – Die Option Vorgänge zu automatisieren oder zu simulieren
    – Die Option selber Bausteine (Bibliotheken, Klassensysteme) für grösseres zu schaffen oder bestehende Bausteine für eigens zu nutzen.

    Ich möchte das im folgenden etwas ausarbeiten
    Girls just wanna have fun
    Programmieren als kreativer Prozess ist an und für sich schon wertvoll. Wenn ein Kind oder Schüler mit einer Programmiersprache und einer entsprechenden Softwarebibliothek selber Computerspiele programmieren kann, dann bereitet das im Erfolgsfall das Gefühl ein “Schöpfer” zu sein. Das erhöht das Selbstwertgefühl, schafft Lust auf mehr, macht dem kleinen “Schöpfer” aber vielleicht auch bewusst wie weit er noch von “Profis” entfernt ist.
    Programmieren ist verwandt mit Mathe, wenn man Mathe als Wissenschaft vom Unendlichen auffasst
    Schon der Grundschüler ist mit dem “Rechenunterricht” mit dem Unendlichen konfrontiert. Er begreift schnell, dass es mehr als die Zahlen 1 bis 100 gibt mit denen er zuerst rechnet, er ahnt schon sehr früh, dass es nicht nur unendlich viel Zahlen, unendlich viel Punkte, sondern auch (fast) unendlich viele Aufgaben gibt in denen es gilt, richtig mit diesen Zahlen und Punkten zu operieren. Die Mathematik zähmt das Unendliche indem sie Aussagen macht, die für unendlich viele Fälle gelten (“funktionieren”). Ein Programmierer zähmt das Unendliche, indem er für (fast) unendlich viele verschiedene Eingabedaten eine Funktion anbietet, die ein Resultat liefert.
    Programmieren liesse sich meiner Ansicht nach sehr gut in ein elektronisches Mathematiklehrmittel integrieren. Auf Grundschulniveau könnte ein in das Lehrmittel integrierter Taschenrechner (Python hat schon einen “Taschenrechnermodus”) für Grundrechenoperationen benutzt werden, den man um eigene Formeln erweitern kann, wobei der Schüler die Formeln selber programmiert, selber ausprobiert und selbst verwaltet (Projektordner). Geometrische Sachverhalte könnten mit eingebetten Computerprogrammen animiert werden, die Graphiken ausgeben. Auch auf höherer Ebene könnte der Matheunterricht von Computerprogrammen begleitet werden. Warum nicht ein (selbstgeschriebenes?) Programm verwenden, das symbolisch ableitet oder numerisch integriert? Die Integration von Computerprogrammen in ein Mathelehrmittel könnte offen sein in dem Sinn, dass jede mathematische Animation im Quellcode einsehbar und auch veränderbar ist.

    Programme simulieren die Welt
    Eine Physik-Engine simuliert in Computerspielen oft die physikalische Welt, so dass Objekte und Figuren sich “richtig” verhalten.
    Doch warum sollten Pysik-Engines nicht auch in der Schule für didaktische Zwecke eingesetzt werden. So könnte ein Schüler etwa die Tragfähigkeit und die Schwachpunkte einer selber am Computer konstruierten oder modifizierten Brücke “testen”. Im Werkunterricht könnte er die Brücke dann mit Materialien bauen oder 3D-Drucken.

    Fazit: Programmieren erlaubt die Realisation von eigenen Gedankenwelten mit selbst gewählten Primitiva (Bausteinen) mit der Option alles bis zum letzten Gedankenstein selbst zu schaffen oder auch auf bestehende Bausteine einzusetzen.

    • Im übrigen noch ein Kompliment an den Autor eine Referenz an C.P.Snow und seine Zwei Kulturen in den Text aufzunehmen.
      Schon 1959 also wurde die Kluft zwischen geisteswissenschaftlich-literarischer Kultur und naturwissenschaftlich-technischer Kultur als so tief empfunden, dass sie unüberwindbar erscheint. Schon 1959 betrachtete C.P.Snow die geisteswissenschaftlich-literarische Kultur als rückwärtsgewandt und pessimistisch. Heute – im Jahr 2016 – ist das noch genauso, oder sogar noch ausgeprägter. Inzwischen hat die Menschheit sogar einen Ort gefunden, der die naturwissenschaftliche-technische Kultur , den damit verbundenen Optimismus und die damit verbundenen Zukunftshoffnungen verkörpert: Silicon-Valley. Wie gut C.P.Snow mit seinen 2 Kulturen auch ein gesellschaftliches Umfeld beschreibt, das in verschiedenen Ländern verschieden wirkt zeigt sich beispielsweise in Astrid Maiers Erfahrungsbericht mit Silion Valley wo sie folgende Schlussätze schreibt:

      Mir ist es egal, ob meine Tochter eines Tages tatsächlich Erfinderin, Sängerin oder etwas ganz anderes wird, solange sie dabei glücklich ist. Aber ich werde nach unserer Rückkehr alles versuchen, um ihr – und anderen Kindern – zu helfen, auch in Deutschland weiter so selbstsicher, wagemutig, und technikverliebt zu bleiben wie ihre neuen Freunde in ihrer Grundschule in Palo Alto.

    • ‘Programmieren’ ist angewandte Formalwissenschaft.
      Abgesteifter formuliert geht es idR darum (geschäftliche) Prozesse mit den Mitteln der IT zu unterstützen, zuvor: nachzubauen [1], die in der Realwelt dem erkennenden Subjekt unterliegen, ‘Programmieren’ ist kein Selbstzweck, es macht auch keinen Spaß.
      ‘Programmieren’ ist insofern darum bemüht wirtschaftlichen Erfolg zu generieren; wer ein Unternehmen tätigt, muss insofern (früher oder später) Software entwickeln, um wirtschaftlich erfolgreich sein oder bleiben zu können.

      Markus Pössel war im dankenswertweise bereit gestellten WebLog-Eintrag so freundlich auf eine grundsätzlich andere und eher ungewöhnliche ‘Programmier’-Anwendung zu verweisen, auf die Datenanalyse.

      So etwas ist aber eine Kunst für sich, eher im Mathematischen angesiedelt, nichtsdestotrotz soll natürlich auch interessierten Schülern diesbezügliche Möglichkeit angedeutet werden.
      Es ist sozusagen mit den Mitteln des ‘Programmierens’ zweifach möglich “reich” zu werden, A) indem (geschäftliche) Prozesse möglichst sinnhaft unterstützt werden B) indem Datenlagen der Theoretisierung zugeführt werden können, die Theorie bedingt bekanntlich die Beschreibung, die Erklärung und die Prädiktion.
      Prädiktion kann auch “reich” machen.

      MFG
      Dr. Webbaer

      [1]
      Hier liegt schon ein besonderer Reiz, wenn es darum geht Realprozesse nachzubauen und mit den Mitteln der IT zu unterstützen.
      Der Webbaer hat hier in der Vergangenheit schon Aufgaben gegeben, wie bspw. eine Schule zu modellieren, mit den Mitteln der relationalen Datenhaltung, das ERM meinend, SQL und so.
      Dies zwingt Lernende in die Rolle des Denkers, des Philosophen, der Entitäten zu erkennen und in der Folge zu modellieren hat: Jeder gute Software-Entwickler ist demzufolge nicht nur guter Handwerker, oder andersherum, sondern auch zumindest ein brauchbarer Philosoph.

      • Ergänzung zum Thema “Programmieren im Rahmen anderer Tätigkeiten”: In vielen heutigen Berufsfeldern kann Programmieren (und ähnliches) Teil der Arbeit sein. Wer Excell-Sheets aufbaut oder SQL-Anfragen frei erstellt gehört schon einmal am Rande dazu.
        Auch “Richtiges” Programmieren gibt es in bestimmten Berufsfeldern. Ich denke da vor allem an die Statistiker, die explorativ arbeiten. Schon in der zweiten Hälfte des 20. Jahrhunderts gab es eine Statistiker-Programmiersprache: APL. Heute aber ist es die Programmiersprache “R” welche von Statistikern sehr häufig eingesetzt wird – so häufig, dass sie im Programmiersprach-Ranking-Index TIOBE vom August 2016 an 17.Stelle auftaucht (noch vor der Google-Entwicklersprache “Go”). Die Programmiersprache Python hält sich schon längere Zeit auf Platz 5. Sie wird von vielen Naturwissenschaftlern eingesetzt und wurde von einem Mathematiker erfunden. Sie dient auch oft als eingebettete Sprache in per Skript erweiterbaren Programmen.

        • @ Herr Holzherr :

          Zu Ihrem Bonuskommentar dieser Bonuskommentar:

          Auch „Richtiges“ Programmieren gibt es in bestimmten Berufsfeldern.

          Was ist “richtiges” Programmieren, vs. “frickeln”?
          Vorschlag:
          Es muss Datenhaltung (oft sog. RDBMSe) geben und sie umgebende Logik, auch: Dienste, das sog. Back-end, Logik, die der Anschauung dient, das sog. Front-End, eine dbzgl. Trennung der Schichten und last but not least eine angemessene Fehlerbehandlung und ein Sicherheits- / Rechte- / Autorisierungssystem.
          Zudem eine bestimmte Organisation der Entwickler, Rollen meinend, wobei Entwickler mehrere Rollen übernehmen dürfen, im Extremfall darf ein Entwickler alle Rollen übernehmen.

          Dies wäre aus Sicht Ihres Kommentatorenfreundes ganz rudimentär formuliert “richtiges” Programmieren.
          Abfragen an Datenbanken, irgendwelche Taschenrechnerfunktionalität im Browser zu entwickeln oder Daten zu analysieren eher nicht.

          MFG
          Dr. Webbaer

    • Sie, Dr.Webbaer neigen dazu, Begriffe, ja die ganze Welt über einmal festgezurrte Definitionen zu verstehen und anderen dann so zu erklären. Deshalb bemühen sie gerne etymologische Bedeutungsherleitungen und vor Jahrzehnten einmal gültige Einschätzungen (Zitat: “Programmieren‘ ist angewandte Formalwissenschaft. Abgesteifter formuliert geht es idR darum (geschäftliche) Prozesse mit den Mitteln der IT zu unterstützen, zuvor: nachzubauen”).
      Nur sind sie damit praktisch aus dem Leben geschieden, denn im Leben und lebendigen Gebrauch ändern sich die Bedeutungen von Worten/Begriffen und ändert sich auch der Einsatz von Mitteln. Mein Sohn, der Physik studiert hat, verwendete während dem Studium praktisch täglich die in Computer Algebra Systemen eingebauten Skriptsprachen und programmierte auch zum Spass an Computerspielen herum.
      Heute programmieren viele gelegentlich, z.b. auch im Rahmen von wissenschaftlichen Arbeiten, um Daten auszuwerten oder Daten aus einem riesigen Bestand herauszufiltern, wenn diese Daten gewisse Kriterien erfüllen. Programmieren von Geschäftsprozessen um Geld damit zu verdienen ist heute nur noch eine Anwendung des Programmierens unter vielen.

      • Vielleicht hat Ihr Kommentatonfreund ein zu freudloses Verhältnis zum ‘Programmieren’, korrekt, für’s Studium wird die Kunst des ‘Programmierens’ oft benötigt und vielleicht macht es dem einen oder anderen auch Spaß Spiele oder anderes zu entwickeln, hobbymäßig, sofern diese Zeiten nicht vorbei sind.
        Die Eymologie bleibt aber wichtich,
        MFG + eine schöne Woche, Herr Holzherr,
        Dr. Webbaer

  7. Ganz, ga-anz am Rande notiert, bei diesem Bildchen, das dem hiesigen werthaltig-kritischen Beitrag vorangeht, ‘Programmier’-Code meinend, visualisiserten, wird der Schreiber dieser Zeilen zunehmend grau, je länger er hinschaut, will i.p. Parameters, Praefices und Namensgebungen aber nicht noch grauer werden, als er ohnehin ist.

    MFG + schöne Woche noch,
    Dr. Webbaer

  8. Ich stimme diesem Beitrag fast überall zu, insbesondere was die Geisteshaltung dahinter betrifft und die Haltung zum Programmieren. Programmieren ist für mich wie wohl auch für den Autor eine neue Kulturtechnik, ein neuer Zugang zur Welt, der es möglich macht neues zu schaffen und das was andere schon geschaffen haben zu nutzen.

    Einen Einwand hätte ich aber in Bezug auf das Kapitel “Big data is nothing”: Der Ausdruck “Big Data” wie er im Zusammenhang mit den Google zur Verfügung stehenden Nutzerdaten oder den von den CERN-Detektoren gelieferten Petabytes von Messdaten pro Woche genutzt wird meint mehr als die Auswertung von grossen Datenmengen. Vielmehr geht es um überraschende Schlüsse, die sich durch raffinierte statistische Analysen aus diesen Datenmengen ableiten lassen. In den Begriffsbereich “Big Data” gehören Anekdoten wie diejenige von der Schülerin, die plötzlich Werbung für Schwangerschaftsprodukte erhielt ohne dass eine Schwangerschaft irgend jemanden, weder den Eltern noch der Betreffenden selbst bekannt war. Die “Diagnose” war allein aufgrund ihres Kaufverhaltens gestellt worden und die Werbung erhielt sie erst nachdem die aus dem Kaufverhalten abgeleitete Wahrscheinlichkeit einen Schwellwert überschritten hatte.

    “Big Data” spielt auch bei der Auswertung der CERN-Messungen eine Rolle. Dort hat sich im sogenannten Kaggle-Challenge gezeigt, dass Machine-Learning-Algorithmen erstaunliches leisten können, wenn sie auf solch grosse Datensätze wie die von den CERN-Detektoren gelieferten, angesetzt werden. Hier eine Aussage aus dem obigen Foliensatz:

    – ML [Machine Learning] played a key role in the discovery of the Higgs boson (15% increase in sensitivity in the keyH!channel in CMS

    Ein Physiker, der ebenfalls am Kaggle-Test teilnahm, aber sein Fachwissen und nicht Machine-Learning für die Suche verwendete schrieb dazu:

    The final results seem to reinforce the idea that the machine learning experience is vastly more important in a similar contest than the knowledge of the subject.
    { Lubos Motl, string theorist, placed 8t}

    Big Data verbinde ich deshalb mit fortgeschrittenen statistischen Methoden und Methoden wie Machine Learning. Erst das macht den Unterschied.

    • ‘Big data is nothing.’ scheint Ihrem Kollegenfreund, werter Herr Hozherr, schon korrekt angemerkt, auch die Implikationen betreffend.
      Sie bauen nun irgendwie i.p. Machine-Learning aus, was Ihnen unbenommen bleiben soll, Luboš ist ein wenig exaltiert, was nicht Aussagen herabsetzen soll, auch Satan höchstpersönlich kann und wird gelegentlich recht haben, aber -aus philosophischer Sicht- benötigt Lernen bestimmtes Interesse und Intention, die zwar Maschinen beigebracht werden kann, dann aber anderes Lernen meinen muss.

      Hmm, es geht jetzt vom ‘Programmieren’ hier womöglich, ganz womöglich, ein wenig weg, ‘Programmmieren’ meint bestimmte Übung und Schriftlichkeit, die an Interessen derjenigen Subjekte gebunden bleiben muss, die dbzgl. anleitend sind, dafür geeignete Automobile oder andere Geräte meinend, ein Computer ist sozusagen ein Automobil.

      MFG
      Dr. Webbaer

      • Klar ist “big data ” für sie nothing, Dr. Webbaer, denn sie nehmen den Begriff “big data” wörtlich anstatt (z.B.) in der Wikipedia nachzuschauen wo man unter Big data liest.

        characteristics of big data:[20][21]
        Volume: big data doesn’t sample; it just observes and tracks what happens
        Velocity: big data is often available in real-time
        Variety: big data draws from text, images, audio, video; plus it completes missing pieces through data fusion
        Machine Learning: big data often doesn’t ask why and simply detects patterns[22]
        Digital footprint: big data is often a cost-free byproduct of digital interaction[21][23]

        • Ergänzung: Das Machine Learning Experiment Kaggle angewendet auf die LARGE HADRON COLLIDER-Daten, zeigt folgendes:
          – “big data” bezieht sich meist auf einen riesigen, schwach strukturierten oder verborgen strukturierten Datenstrom: Beim LHC bestehen die Daten aus den Primär-,Sekundär und Tertiärkollisionen von Teilchen
          – Die Auswertung sucht nach Mustern in diesem Datenstrom. Beim LHC ist es das Muster eines Higgs-Zerfalls. Dieses Muster kann vorausberechnet werden. Es verbirgt sich aber in den Daten wie sich der Taschendieb in der Menge verbirgt.

          • Ergänzung++: Die Mustersuche in Big-Data-Strömen ist oft sehr allgemein und benötigt kein “Fachwissen”, also beispielsweise kein astronomisches Wissen (um den Bezug zum Text Markus Pössels herzustellen). Das astronomische Wissen steckt dagegen in den Primärmustern, die eventuell künstlich erzeugt werden. Wenn das zu suchende Muster aber einmal festgelegt ist, braucht es kein Fachwissen mehr.
            Im Artikel Higgs Boson Machine Learning liest sich das so:

            The goal of the Higgs Boson Machine Learning Challenge is to explore the potential of advanced machine learning methods to improve the discovery significance of the experiment. No knowledge of particle physics is required. Using simulated data with features characterizing events detected by ATLAS, your task is to classify events into “tau tau decay of a Higgs boson” versus “background.”

        • @ Herr Holzherr :

          “Big Data” wird auch hier in nicht unüblichem Sinne verstanden, allerdings ist Ihr Kommentatorenfreund hier wenig hoffnungsfroh, was Maschinen-Lernen und ähnliche Maßnahme betrifft diesen Daten Sinn zu entlocken.
          Es mag schon sein, dass es sich bei Daten der Wissenschaft anbietet Wettbewerbe auszuschreiben, um in der Gewinnung von Evidenz besser zu werden, etwas grundsätzlich Neues sieht er hier nicht, “Big Data” war und bleibt ihm vor allem auch Marketing-Sprech, das in Teilen auch der Wissenschaftskommunikation dient, was nicht schlecht sein muss, vgl. auch mit SETI.

          MFG
          Dr. Webbaer (der Sie als zäh recherchierenden und gegenrednerischen “alten Knochen” zu schätzen weiß)

  9. Big Data Reloaded
    die Python-Bibliothek AstroML hat als Zielpublikum Python-Programmierer unter den Astronomen, die mittels Machine Learning und Data Mining astronomische Datensammlungen untersuchen wollen.
    Geworben wird mit:

    The goal of astroML is to provide a community repository for fast Python implementations of common tools and routines used for statistical data analysis in astronomy and astrophysics, to provide a uniform and easy-to-use interface to freely available astronomical datasets.

    Dieser Ansatz, nämlich die Bereistellung von Python-Bibliotheksmodulen für astronomisches Data Mining und Machine Learning auf astronomischen Daten scheint mir sinnvoll, denn kaum ein Astronom verfügt wohl über ein grosses Data Mining und Machine Learning – Wissen. Allerdings will ich damit nicht für diese Bibliothek werben, zumal einige Kommentatoren (im Netz) nicht so viel vom Buch halten, auf dem das ganze basiert. Das heisst aber nicht, dass der Ansatz falsch ist. Es braucht oft mehrere Anläufe bis die richtigen Tools vorhanden sind.

  10. Danke, das war für mich als Vom-Programmieren-noch-keine-Ahnung-Haber erhellend. Für die Frage, ob ich mich selbst damit beschäftigen sollte und für die Frage, ob (meine) Schüler oder auch meine Kinder Erfahrungen damit sammeln sollten. Beste Grüße, Monika Wegner

  11. Sehr schön er Beitrag. Ich finde es gut, dass Du das Thema Programmierung beleuchtest. Es gibt unterschiedliche Plattformen, wo man kostenlos programmieren kann. Wir nutzen Scratch zu Hause, das ist eeine kostenlose Programmiersprache für Kinder. Hierzu haben wir uns etwas Lektüre (https://kinderprogrammieren.de/buch/5-buecher-fuer-kinder-scratch-programmierung/ ) besorgt, um konkret mit Hilfe von Anleitungen unterschiedliche Projekte umzusetzen. Das Buch mit der Maus finden wir am besten. Probiert es gerne mal aus. LG Steffi K.

Schreibe einen Kommentar