 Unser nächster Sprecher ist Mike Sperger, er ist CEO und CTO von Active Group, organisiert die jährliche Bob-Konferenz, eine Entwicklungskonferenz und ein Experte in Funktionalprogrammierung. Er erzählt uns über der Programmierunterricht in High School und anderen Schulen, er teilt seine Einsichten und wie Veränderungen in Kultur und Werkzeugen für die Zukunft von Software Entwicklung beitragen können. Viel Spaß beim Vortrag. Mike, die Bühne ist dir. Danke. Hat sie gesagt 20 Jahre? Also ich bin älter als das. Danke, dass ihr so lange wach bleibt. Ich bin jetzt groß. Ich erzähle mal über das Großwerden. Also ich habe den Informatikenabschluss, dann vor vielen Jahren habe ich einen PhD gemacht und jetzt habe ich eine Softwarefirma und tatsächlich Verantwortung, aber ich will jetzt über die Vergangenheit sprechen und damals 1983, als ich mit Hacking angefangen habe, also bzw. ich war nicht da, aber das war eine Zeit von 1c3. Also da wurde über die Computerrevolution geschrieben, die in den 80er Jahren kommen sollte und viel über das wir heute diskutieren war schon damals ein Diskussionsthema. Computersicherheit, Data Governance, das war alles schon damals in den Medien. Aber gewisse Dinge waren auch anders. Also das ist hier ein deutsches Nachrichtenmagazin und ein Artikel über Computer im Kinderzimmer und nicht alle hatten ein Computer damals. Ein Kind wie ich damals, der interessiert war an Computern, hatte halt keinen, aber man konnte in ein Elektronikfachhandel gehen und die hatten rein und rein von Homecomputern eingerichtet, angestellt, parat für Kinder, um damit zu spielen. Also ihr erinnert euch vielleicht nicht, aber damals gab es viele verschiedene Typen von Homecomputern, es gab kein Internet, es gab wenig Literatur über Programmierung, also das heißt, wir mussten eigentlich das alles durch Pröbeln rausfinden. Also wir hatten nicht wirklich eine Methodologie, wie Programmierung funktioniert. Also sprühen mir etwas vor ein paar Jahre, ich sah das sehr geekig aus, ich hatte meinen eigenen Computer, war wahrscheinlich der zweite oder dritte, den ich hatte. Als ich dann Austauschstudent war in den USA, haben Sie mich Präsident vom Computerclub da gemacht an der Uni. Und das war so das erste Mal wirklich Unterricht zu geben in 1988. Also mein erster Computerkurs, den ich gegeben habe vor 30 Jahren, dann habe ich den Intro-Kurs für Informatiker an der Uni Tübingen gemacht und dann habe ich viel professionelle Training sonst so gemacht. Also ich bin so ein zwanghafter Lehrer eigentlich sozusagen. Ja, meine Mitarbeiter, meine Freunde, meine Kinder, die mussten das so ein Programmier-Kurs von mir auch alle aushalten. Also damals, als wir rausfinden wollten, wie man so Computer hackt, weil halt darüber gab es wenig Literatur, haben wir uns auch nach Vorbildern umgeschaut. Also John Draper zum Beispiel, weil, auch bekannt als Captain Crunch, weil der hat mit einer Pfeife aus einer Conflakes-Packung halt das Telefonsystem gehackt. Also es ist nicht bekannt dafür, dass er software geschrieben hat, ein erster Word-Verarbeitungsprogramm, das heißt Easy Writer, und er hat geschrieben über, ja, hier seinen großen Output beim Programmieren. Also er hat im Programm, wenn da irgendwie 2 plus 2 größt, gleich 5 ist, dann hat er eine Ausnahme gemacht im Programm, das 2 plus 2 4 ist einsorten. Also das kennt ihr ja, wenn immer und immer mehr spezielle Fälle eingefügt werden im Programmierung. Also natürlich in 1985 haben wir es selbst rausgefunden, aber da kam die Hacker-Bibel raus und da wurde sich schon Gedanken gemacht über wie man Kindern in Zukunft Computer beibringt und es hatte da ein Artikel zu mir mal da rein und ich denke, ich habe sicher schon viele Diskussionen gehabt über wie man Programmieren beibringt, anfängern und oft geht es da um welche Programmiersprache geeignet ist. Damals waren es ein bisschen andere Sprachen, es gab Basic, Pascal, Basic hatte die Reputation, dass es Spaghetti-Code macht, Fourth is Event, Logo und C und damals ein prominenter Professor in der Informatik, also sagte, solange ihr nicht im Basic schreibt, ist es okay, also weil das verhindert, dass ihr Spaghetti-Code schreibt. Wie wir jetzt wissen, das stimmt halt nicht. Also ich habe sicher viel scheiß Code gelesen, nicht im Basic. So, was wir dann tatsächlich auch feststellen müssen, so langsam ist, dass die Einschläge langsam näher kommen, dass wir zum Beispiel das Mirei erbordnet hatten, dass sich durch IOT-Geräte verbreitet hat und so viele Internet-Dienstanbieter zum Stehen gebracht hat, dann gab es Hard Bleeds zum Beispiel aufgrund von einem Buffer-Ware-Flow in OpenFSL, der NC geschrieben ist, dann gab es Equal Facts, wo viele Social Security-Number in den Internet sind und tatsächlich vielleicht interessanter die Cloudbleed Vulnerability, die Account-Informationen als Teil vom Webcash schlägen würde. Das heißt, man musste nicht mal irgendwelche speziellen Sicherheitsfragen oder sowas beantworten, sondern die wurden einfach durch den Cash gelegt. Und hier noch etwas, das jetzt schon ziemlich alt ist, der BTX-Hack, was tatsächlich einer der Grundungssteine war beim Cash-Computer-Club, wo ein Computer in einer Bank ausgelesen werden konnte und Geld von dieser Bank auf ein Konto des Clubs überwiesen werden konnte. Und das heißt, dass heute fühlt sich eigentlich gar nicht so viel anders an, als wie es damals war. Und eigentlich hätten wir ein bisschen fortschritten haben sollen. Aber ja, bereits 1986 gab es dieses Buch und ich habe natürlich die allerfurchtbarste Programmiersprache gewählt, so im Rückblick, mit Blick auf die aktuellen Vulnerabilität, die es hier so gibt. Aber das ist schon eine ganze Zeit her, nämlich 1986. Also das heißt, man würde denken, heute sind die Dinge anders. Und manche von euch waren vielleicht heute in dem Talk über das BOP-System, wo es darum geht, oder wo das hier der Sprache ist, Kindern Programmieren beizubringen. Aber es nutzt einen Gamification-Ansatz, um Kindern die Programmiersprache näherzubringen. Das heißt, ein BOP-Programmet wird immer tatsächlich C++. Und es gibt tatsächlich auch viele Webseiten, wo Einsteiger Koden lernen können. Hier gibt es zum Beispiel die Seite startcoding.de von einigen Institutionen gefördert. Und ihr könnt sehen, dass sich manche auf bestimmte Programmiersprachen fokussieren, scratch, Python und so weiter. Und wenn ihr Deutsch lesen könnt, sagt das spielerische Arrhengehensweise. Das heißt, ein spielerischer Ansatz um Programmieren zu lernen. Und das wird tatsächlich sehr häufig verwendet. Wenn man zum Beispiel zum Kidspace läuft, dann findet man einen abschneidigen Takt. Und das wählt auch ein relativ verspielten Ansatz für verschiedene Programmiersprachen. Und wenn man sich es genau anschaut, dann fehlt da tatsächlich überall ein methodischer Ansatz bei der ganzen Art. Sondern es ist verspielt. Und der Grund für die ganze Geschichte, denke ich, ist, dass wenn man Programmieren leert, dann kann man sehr leicht das Gefühl vermitteln, dass Programmieren einfacher ist. Zum Beispiel in LED blinken lassen und die Schüler sehen, dass etwas passiert. Es ist einfach. Und man hat schnell das Erfolg, dass er liebt, ich mag funktionale Programmierungen. Es ist nicht so einfach. Aber man findet tatsächlich überall Gruppen oder Menschen, die sich dafür interessieren und das gerade zu sagen. Und wenn man tatsächlich schon 30 Jahre dabei ist bei der Lehre, dann kommt man irgendwann zum Schluss, dass es tatsächlich für egal welches Thema oder egal welchen Ansatz Leute gibt, die das Thema mögen. Man kommt dann auch irgendwann zu dem Punkt, oder zu der Erkenntnis, dass es zwar immer irgendwelche Schäden gibt, aber es gibt manchmal auch einen Gruppen oder viele in der Gruppe, die keine Schäden sind. Und die mögen das vielleicht, aber man hat den tatsächlich dann nichts für beigebracht. Und über die Jahre hatte ich zahlreiche Möglichkeiten herausfinden, warum das manchmal der Fall ist, warum Lehrer manchmal nicht erfolgreich ist. Wenn man zum Beispiel, wenn man eigentlich egal welche Ressourcen zum Programmieren lernen, raus sucht, findet man häufig Ansätze, die an irgendwelchen Beispielen die Themen vermitteln. Das heißt zum Beispiel hier Java, die einfache Art und Weise lernen und das heißt direkt nach der Einführung kommt ein konkretes Beispiel, ein konkretes Programmlisting und der Text ist im Prinzip einfach nur ein Kommentar um das Programm drum herum. Und die Erwartung ist, dass man von dem Beispiel, das man gesehen hat, dass einige Eigenschaften oder Bausteine Programmiersprache zeigt, weil Schleifen und so weiter, dass man daraus diese Techniken auf neue Probleme anwenden kann. Und meiner Erfahrung nach funktioniert das nicht für die große Anzahl der Schüler, die eben keine Schäden sind. Und ja, als ich mir so angeschaut habe, was so in anderen Bereichen verwendet wird, dann bin ich zum Schluss gekommen, dass sie ganz andere Ansätze verwenden. Das hier ist ein Bild von 1987 in meinem Austausch, ja in der USA, von meiner Englischlehrerin. Und sie hat dieses Papier ausgegeben. Und da gab es uns eine Anleitung, wie man eine Erörterung schreibt. Das ist hier der zweite Abschnitt, der Hauptteil. Also da gibt es irgendwie, man entwickeln Teil seiner Theorie, man hat die Transitionen, Themensätze und so weiter. Also das erklärt die Funktion jedes einzelnen Satzes in der Erörterung. Also das ist ein sehr, sehr strikte Regelwerk. Also wenn du erst Deutschland kommst, die mögen z.B. Autorität nicht so. Also ich war da halt ein Rebell. Ich mochte das überhaupt nicht. Und ich brauche da über ein Jahr, um festzustellen, dass das wirklich eine sinnvolle Art ist, eine Erörterung zu schreiben. Das ist jetzt eine Methodologie, wie man etwas macht und diese Methodologie ist sehr nützlich, wenn man das beibringen will. Und ihr sagt es vielleicht, ja, wir haben Methodologien in der Softwareentwicklung. Also ich meine, wir haben z.B. objektorientierte Programmierung, die sehr prinziplastig ist. Aber ich muss euch sagen, ich habe sehr viel schlechten objektorientierten Code auch schon gesehen. Also mein objektorientiertes Programmierung hat verkrabselter Zustand, hat Polyformophismus, hat Vererbung. Vererbung ist ganz, ganz schlimm, weil es so viele verschiedene Anwendungen, Arten gibt, das anzuwenden. Und eigentlich, man sollte eigentlich nur eine Art haben, das anzuwenden. Sonst machten es Leute auf die falsche Art. Das haben auch empirische Stune gezeigt. Und ja, das sieht dann halt irgendwie so aus z.B. Es soll jetzt nicht irgendwie eine Kritik an der Hackerkultur grundsätzlich sein, dass Dinge so aussehen. Also hier gibt es Dinge da draußen, die so aussehen, die ganz toll sind. Aber das ist halt keinen Ersatz nach irgendwie solider Methodologie. Also vor vielen Jahren dachte ich, da muss es irgendwie eine andere Lösung geben. Und bin mit Matthias Velleisen zusammengekommen. Da ist ein befreundeter deutscher Bürokrat, der aber in der USA lebt. Und der hat ein Buch geschrieben, Wie man Programme designen. Also ihr könnt euch das auch online runterladen. Also wir haben die deutsche Version übersetzt, und die heißt dein Programm. Das ist auch ein gratis Buch. Der grundsätzliche Ansatz da ist, wir wollen systematisch sein über mit allem. Also wir wollen systematische, feste Pläne zu jedem Teilschritt von Programmierung machen. Und das nennen wir Design-Kochrezepte. Design-Muster. Also ich werde euch jetzt ein konkretes Beispiel machen. Also Matthias war damals in Texas und ein klassisches Beispiel ist halt so Tote Tiere auf dem Texas Highway. Also gibt es Armadillos links und Klapperschlangen rechts und in der Mitte der Highway und die Autobahn. Also fangen wir mal mit Armadillos an. Im Rahmen dieser Anwendung beschreiben wir mal Armadillo mit diesen Eigenschaften. Er hat diese Eigenschaften, es ist lebendig oder tot und es hat ein Armadillo, hat ein bestimmtes Gewicht. Also ich mache das hier ganz einfach, dieses systematische Entwicklungsprozess. Also ich sage dir, wenn du deine Daten beschreibst, mit Worten wie es hat diese Eigenschaft oder es besteht aus diesen Teilen, dann habt ihr mit zusammengesetzten Daten zu tun, aggregierten Daten. Also es ist wichtig, dass wir dem Namen geben, compound data. Also wenn du merkst, dass du mit compound data zu tun hast, dann kannst du das in deinen Code abbilden. Das hier ist ein System, das heißt Dr. Rackford, das ist eine Programmierumgebung für Anfänger und da sieht man hier ein kleines Programmschnipsel da oben und also das Programmschnipsel hier wurde von einem Anfänger geschrieben effektiv. Hier wurde Armadillo mit Dillo abgekürzt und das heißt, wenn wir mit Dillos was machen, also der Datentyp heißt Dillo, wenn wir mit compound data umgehen, brauchen wir ein Konstruktor, den nennen wir MakeDillo, später sehen wir dann, dass wir noch irgendwie einen Weg brauchen um Dillos von anderen zu unterschreiben, das nennt wir Predicate, aber das kommt später noch und hier in der Datendefinition sind die Kommentare im Gelb, also dann sieht man hier, Armadillo hat zwei Bestandteile, also das heißt man braucht zwei Gatter Funktionen, die heißen Dillo Alive und Dillo Wait, also die Klammern ignorieren wir mal in dieser Präsentation. Noch was hier, da unten steht Language, also Sprache, Dr. Rackford kann viele verschiedene Programmiersprache machen, diese bestimmte Sprache heißt die Macht der Absachsion und das ist eine Sprache halt für Anfänger. Wenn man das hat, diese Definition des Datentypes, dann kann man den Konstruktor einfach aufrufen, um ein Beispiel zu machen. Also das sind zwei Beispielarmadillos, da sieht man hier MakeDillo, Rautetee, das heißt True und 10 heißt, ja okay, das heißt True, das heißt der ist am Leben und 10 steht für 10 Kilogramm und dann gibt es einen anderen Armadillo, hier ist Alive false, also der ist wahrscheinlich tot und der ist 12 Kilo. Okay, und hier nennen wir noch den ersten D1 und den zweiten D2. Ja, und dann einen Ansatz über diese Funktionen, die wir definiert haben, aber zu reden, heißen Signaturen oder, ja, man könnte fast sagen Typ Signaturen, aber das ist nicht ganz dasselbe, das heißt dann zum Beispiel diese Konstruktorfunktion ist MakeDillo und in Funktionalen, wo wir mitsparen, wird das meiste in Priefix Notation geschrieben, sondern das heißt es gibt Boolean als Typ und eine Nummer und das sind die beiden Parameter und das produziert dann ein Dilloo-Objekt und dann gibt es diese Getterfunktionen, also Dilloo Alive nimmt ein Dilloo und produziert einen Boolean und dann gibt es Dillowate das nimmt auch wieder ein Dilloo und produziert eine Nummer und warum ist das relevant für unser Beispiel auf dem Texas Highway, also in Texas werden die Tiere von Autos überfahren und hier dieses Programm simuliert diesen Prozess, das heißt das Grüne mit dem Simüklern vorne dran ist ein Kommentar, das heißt wir werden jetzt ein Armadillo überfahren und wir schreiben die Funktion Armadillo überfahren, die ein Dilloo nimmt und ein Dilloo zurückgibt und das heißt ein Dilloo ist nicht nur ein Dilloo, sondern ein Dilloo repräsentiert den Zustand von Dilloo bevor es überfahren ist und after ist und nachdem es überfahren wurde und das heißt, das sind tatsächlich jetzt alles Elemente von der Vorlesung, die wir hier hätten und ich gehe da jetzt einfach noch sehr schnell rüber so, das heißt Check-Expect überprüft dass nachdem wir den Armadillo überfahren haben dass es dann tot ist und immer noch 10 Kilo wiegt genau wie vorher und dass wenn wir einen toten Armadillo überfahren haben dann bleibt er tot und wiegt immer noch viel wie vorher von der Signatur oben drüber wissen wir schon wie die Funktion heiß und wie viele Argumente sie hat und das heißt, wir können relativ mechanisch ein sogenanntes Skeleton schreiben, ein Skeleton wir definieren etwas das Run over Dilloo heißt also überfahre den Armadillo und Lambda sagt dass es eine Funktion ist und es nimmt ein Argument und das sieht dann folgendermaßen aus wir können tatsächlich noch mehr Sachen relativ mechanisch machen denn ein Dilloo ist der sogenannte Compound Data und das heißt, wir müssen tatsächlich meistens die einzelnen Komponenten von dieser Compound Data aufrufen um damit irgendwas in Fertus zu machen das heißt, wir müssen wahrscheinlich den Konstruktor vom Dilloo aufrufen oben den Ausgehenden, also den Rückgabewert zu konstruieren und das heißt, diesen ganzen Kram kann man sehr mechanisch hinschreiben und das ist tatsächlich ziemlich mechanisch und man kann dann relativ leicht die fehlenden Teile einfügen und es hat uns eben nicht wirklich interessiert wie der Armadillo vorher gelebt hat sondern wir machen das eben so und das Wichtige, was wir sehen, ist, dass es ein relativ bäukratischer Prozess ist, dieses Programm zu produzieren und das heißt, obwohl das der mechanische ist, ermöglicht es, dass alle Fortschritt machen Okay, dann machen wir halt hier das gleich noch mit Klapperschlangen, eine Klapperschlange, dicke und eine Länge dann setz die hier eine Datendefinition wir können wieder diese Absichtserklärung machen, dass man Radelschlangen überfahren kann dann gibt es ein paar Testfälle hier und wenn man die überfährt, dann werden sie flacher das heißt, die dicke geht nach Null und das Wichtige hier ist jetzt, also ich meine wenn wir auf der Autobahn sind, dann überfahren wir einfach das nächste Tier, das da ist also da sind wir eigentlich interessiert daran an Tieren also ein Tier gibt es zwei Beispiele dafür eben den Amadillo oder die Klapperschlange also eines dieser halt und das hier ist ein Beispiel für Mixdata wenn man so ein Fall hat von Tier ist entweder das oder das oder das, also gemischte Daten und da gibt es wieder einen fixen Ablaufplan wie man damit umgeht man nimmt ein Typ, der es mixt und besteht aus Dillon Rattlesnake also wenn wir jetzt eine Funktion überfahren Tieren machen, dann heißt das jetzt es geht von Animal zu Animal dann hat sie auch zwei Testbeispiele und naja, denkt daran eben es gibt ja diese zwei Typen von Tier und dann sieht das hier so aus also man muss die separat abhandeln also es verschien, wenn man über ein Dillon fährt oder über eine Klapperschlange also man macht diese Prädikatsfunktion also wenn das Tier A ein Dillon ist oder halt eine Klapperschlange muss die separat behandelt werden ich weiß nicht ob ihr das gesehen habt ich habe jetzt auch das sehr schnell gemacht und viele Dinge ausgelassen das ist ein sehr pyrokratischen Prozess und wenn man das zum ersten Mal ließ, denkt man so das ist so langweilig dann macht man irgendwie diesen Gesichtsausdruck und wenn man das mit einem Studierenden übt dann werden sie relativ schnell so weil die Studierenden lernen dass man mit diesem Ansatz halt eine funktionierendes Programm selber schreiben kann und dann machen sie diesen Ausdruck aber es hat sehr, sehr lange gebraucht diesen Ansatz zu machen naja, es ist ja seit den, Matthias ist schon seit den 90ern dran ich seit 2001 also man muss so wirklich einen Absatz, Ansatz nehmen um das beizubringen dann muss man wirklich testen wie gut das funktioniert also ihr müsst und es reicht auch nicht zu messen wie populär das ist es reicht nicht die Studenten zu fragen fragen mögt ihr das da gibt es eine große Bandbreite von Dingen die nicht erfolgreich funktioniert haben aber die Leute haben es trotzdem gern also das heißt diese Prozesse haben wir ja sehr, sehr oft iteriert und wir haben die folgenden Einsichten erhalten es ist sehr wichtig, dass man bürokratischen Ansatz zu Programmierungen hat das nennen wir eben Design Recipes, Design Rezepte es ist hilfreich, dass man Programmiersparen hat die spezifisch für Anfänger oder für Lerner Design sind und man braucht eine Programmierumgebung die für Anfänger ist und ihr könnt auf die Seite gehen die heißt Programm by Design und da fährt ihr noch viel Informationen über das Jahr und das ist wirklich viel Arbeit gebraucht zu dieser Erkenntnis zu kommen und also es reicht nicht einfach eure professionelle Programmierspare zu nehmen und die euren Kindern vorzuwerfen also ja jetzt geht es ums Aufwachsen also beziehungsweise dieser Slide ums Runterwachsen also wir beisprachen wie C++ oder sonst unsicheren Sprachen die wir gerne verwenden, wenn wir Exploids machen und jetzt sehen wir endlich Dinge wie Rust und RTS die kommen weil es halt wirklich nur wie man diesen bürokratischen, systematischen Ansatz mit Funktionalen Sprachen macht und die Dinge die wir gemacht haben sind Typen getrieben also wir haben angeschaut dass unsere Daten organisiert sind und haben das Programm so aufgebaut rund um unsere Datenschritte ob man jetzt statisch typisierter Sprache braucht oder nicht, ist eigentlich da nicht so wichtig aber der Zukunft wollen wir uns öfter sehen dass man eben halt eine Spezifikation hinschreibt von was wir Typen man hat und dass gewisse Teile es kurz daraus generiert werden also wenn ihr Programmieren beibringt dann so umfassend zu sein und alle mitzunehmen ist sehr wichtig also es geht wirklich darum nicht nur dass die Leute mögen sondern dass man wirklich Wissen und Kompetenz vermittelt und der einzige Ansatz den ich das sehe ist ein systematischen Ansatz also das Deutsche nennt das vielleicht bürokratisch und überraschende Weise machen das sogar Leute wie Schelden und also ich meine nach all den Exploids die wir gesehen haben müssen wir halt auf Korrektheit Schwerpunkt legen Herzlichen Dank Mike für diese Präsentation wir haben noch 2 oder 3 Minuten für Fragen please go to the mics 1, 2, 3 ah, we have one there Hi, am I gone? Yes So coming from a lot of the software development world aus der Softwareentwicklung sehe ich das der praktischen Sicht hast du schon mal irgendwelche Erfahrungen mitgemacht damit wenn Leute unter Codereview oder sowas lernen kurz zu schreiben hast du da irgendwelche Lehrerfahrungen? Ich denke es ist wertvoll aber es reicht einfach leider nicht die Schelden auf dieser Welt schaffen es von alleine sich programmieren beizubringen und die können auch aus diesem Lernen von Beispielen lernen aber dieser Ansatz dass von teaching by example ist einfach nicht konstruktiv also ich meine es hilft einem seine gewisse Fähigkeiten zu üben so zu reflektieren aber in meiner Fange nach ist es sehr sehr wichtig dass man darauf besteht dass wenn man Methodologien beibringt dass man Leuten Schritten beibringt den sie folgen können Ja, dem würde ich zustimmen aber wenn man sich anschaut dass die Entspielung funktioniert und mit Codereview und diesen ganzen Sachen hast du irgendwelche Meinungen dazu wie man Leuten in diesem Prozess Dinge beibringen kann? Also für Anfänger war meine Erfahrung dass es eben nicht so gut funktioniert es ist üblich, dass man irgendwie sagt, dass man Leuten verschiedene Ansätze beibringt dass man dann sagt, das ist ok das ist vielleicht ein bisschen besser und in meiner Erfahrung nach ist es ein Großteil der Studierenden wenn man das als das Hauptparatigma braucht um Leuten was beizubringen dann machen sie Nulllösungen also das heißt es ist wirklich wichtig dass man darauf besteht dass sie eine richtige Lösung lernen und später kann man immer noch weiter aufbauen Ich hoffe es ist eine kurze Frage vielen Dank für den Vortrag ich fand es sehr interessant heute darüber nachdenken was relativ populär unter jungen Leuten ist es Arduino das heißt es ist mit C und C++ und häufig sehr schlechter C-Code und C++-Code den die Leute produzieren wie würdest du das was du heute Abend erzählt hast in so einer Plattform anwenden? Also ich denke ich würde die Lehrsprachen auf einem Arduino zum Laufen kriegen dass mit so mittleren Sprachen könnte das sogar möglich sein aber wie du sagst da gibt es halt viel schlechter C-Code der auf Arduinos läuft ich sehe die Attraktivität von dem Ansatz aber es ist nicht der Ansatz den ich mag und ja Scratch wäre da auch keine wirkliche Lösung thanks for your questions ja das war's mit der Übersetzung von problem von ploy und problem