Das ist schon richtig! Die Frage ist aber wie funktioniert lernen ? Natürlich fällt beim Spielen quasi nebenher ein wenig ab, aber damit die Verdrahtungen in der Birne (aka neuronale Strukturen) tatsächlich modifiziert werden, also wirklich gelernt wird, ist einiges mehr notwendig. Ich halte es für einen Irrtum das man meint den Menschen einen leichten/einfachen Weg bahnen zu müssen damit sie etwas neues lernen, das schafft nur Illusionen und bereitet zukünftige Frustrationen vor.
Wir werden das hier nicht ausdiskutieren können, - und nichts gegen Spielen, aber dann richtig!
Ich rede nicht von nebenher... Es ging mir in dem Fall darum, dass du auf einem Computer Assemler machen kannst, auf deinem OS C, auf deinem Browser JavaScript und wenn du dein REPL aufmachst, kannst du genau sogut dein ich weiß nicht was, Second Life aufmachen und hast dann deine C#-style Umgebung oder dein Hackmud und dein JavaScript und MongoDB und keine Ahnung, was das bei Minecraft ist. Aber programmieren ist überall das Selbe. Du sagst ja auch nicht, dass ein C-Programm auf Windows oder Unix einfach ist, aber auf dem anderen nicht.
Ob der Compiler/Interpreter in einer IDE, in einem Spiel, auf lokal oder Remote oder in einem Spiel läuft ist in vielen Fällen komplett egal, wenn ich auf jedem davon meinen SNES-Emulator bauen kann.
Ich denke sogar, dass Leute, die sich an sowas anpassen können sind wahrscheinlich besser dran, als die, die ständig in der selben Eclipse-Umgebung aus dem Studium arbeiten, einfach weil es dann Perspektivenwechsel gibt. Ist so ähnlich, wie wenn man nur eine Plattform, eine Programmiersprache, ein Framework oder eine IDE kennt.
Rede hier explizit nicht von Sachen, wo du keine Turing-Complete Sprache voll nutzen kannst.
Ob du dein Programm jetzt für Geld, für Ansehen in einer Community, für deinen Home Server, für Punkte in eine Spiel, für Weltherrschaft, einen guten Zweck oder sonst was schreibst ändert ja von sich aus nichts am Lernprozess.
Klar, es gibt da auch die Sachen, wo nur vorgegeben wird, dass man programmiert. Das meinte ich mit diesem "mal nur rein Logik verstehen".
Es kommt halt immer drauf an, was man tatsächlich macht. Es würde ja auch niemanden einfallen zu sagen, dass die Aufgabenstellung im Mathebuch kein Mathe ist, weil es nur ein imaginäres Problem ist, egal ob in der ersten Schulstufe mit Äpfeln und Birnen oder an der Uni mit Graphentheorie. Und da machst du genau das Selbe: "Stell dir vor du wärst ein Bauer mit drei Äpfeln" oder "Stell dir mal vor, du wärst ein Handelsreisender". Da kann ich ja einen anderen Hintergrund genau so bauen. Gerade als Programmierer kann es ja durchaus sein, dass man ständig in andere Rollen schlüpfen muss. Da hat man seinen Open Source Key Value Store, managed ein paar Pakete und basteltet Plugins für seinen E-Mail-Client und Privat sein Webgame und spielt sich mit dem Raspberry Pi, dann hat mein sein Amateuerfunkzeug, schreibt da unterschiedlichste Sachen, eine GUI für das eine und macht vielleicht noch was mit SDR, beruflich schreibt man vielleicht Programme für die Verwaltung im Krankenhaus, vielleicht verdient man was mit Wordpress-Plugins dazu, macht überall noch ein paar Skripts für den Admin-Teil und anstatt danach Quake zu spielen, loggt man sich mit seinen Freunden in Minecraft oder Second Life ein und kommt auf die blöde Idee da den Z8-Emulator zu emulieren oder ein Skript, das so tut als wäre es ein kleines Spiel im Spiel, aber in Wirklichkeit das Geld klaut. Meinst du, dass so jemand nicht super in Übung bleibt und auf sehr gute Ideen kommt?
Aber es ist ja so, wenn man etwas kreatives macht oder etwas, wo man sich inspirieren lassen kann und vor allem wo man ungebunden ist, dann kann man sehr gut lernen. Klar, du wirst nichts davon haben, wenn du Programmierer bist und dann ein Logikspiel spielst, dass vorgibt, du würdest echt programmieren. Das Einzige was diese Dinge durchaus erreichen können ist dir den Irrglauben zu nehmen, dass da irgendeine Magie passiert. Ich glaube dafür sind sie auch da. Dann gibt es eben die Sachen, die quasi graphisches Programmieren sind. Meist sind die sehr eingeschränkt. Dass ist dann wie Lego Mindstorms klicki bunti vs NQC (ist ein C-Dialekt) oder wie irgendwelche Bausätze vs Arduios. Das sind dann mehr so relativ offene Dinge, die turing complete DSLs sind. Was ich nett an den Dingen finde ist, dass die ständig irgendwie gehacked werden und was was nicht der Domain der DSL spricht gemact wird. Und dann gibt es Dinge wo Programmierung das Spiel erweitert. Das ist dann sowas, was die Meisten von Second Life und solchen Dingen kennen. Das können aber auch Map-Editoren sein. Diese Dinge werden dann meist recht aufgebohrt und Leute bauen dann auf die ein oder andere Art Dinge, die Bugs und Sicherheitslücken ausnutzen.
Bei letzterem sehe ich keinen Unterschied zu anderen Arten von Programmierung. Oder eben vereinfacht ausgedrückt: Wenn du die Tools hast dein eigenes REPL, deinen Emulator zu bauen und das tust, dann ist es keine Illusion, sondern Fakt, das du Programmierer bist. Dass du das in einem einigermaßen obskuren System gemacht hast ändert nichts dran.
Genau das ist der Grund warum viele Leute, die sich damit beschäftigen Programmierung zu lehren mit Spielen befassen. Viele Leute stellen sich Programmierung am Anfang falsch vor und verstehen ganz, ganz grundlegende und einfache Konzepte nicht. Da geht's jetzt nicht darum ein besserer Programmierer zu sein, sondern darum einen Aha-Effekt zu provozieren. Das ist dann wieder so wie in Mathe. Manche stellen sich Dinge bildlich oder geometrisch vor, andere haben so ihre Standardbeispiele, die sie auf alles anwenden, wieder andere brechen alles auf ein paar Basisfunktionen runter um Dinge zu verstehen und konnten bestimmte grundlegenden Dinge am Anfang nur so verstehen. Klar mittel- und langfristig ist das egal, aber nur weil ich das Glück hatte, das jemand mal meinte "ach, such dir einfach was, was du machen willst, nimm dir ein Buch als Referenz und bau's einfach" und ich hatte das Glück dass Bücher das Richtige für mich sind und ich vor allem auch das richtige Buch für mich gefunden habe heißt das nicht, dass es für alle so laufen muss.
Ich stimme übrigens komplett mit dem "Verdrahtungen modifizieren" komplett zu. Denke das ist der Grund, warum alles ständig sagen "nimm ein Projekt und bleib dabei". Das tu ich auch. Wo ich ein wenig widersprechen mag ist, dass ich denke, das zum einen ganz am Anfang eben dieser Aha-Effekt getriggert werden muss. Das ist bei jedem ein wenig anders. Und die, wenn ich das richtig verstanden habe implizite Behauptung, dass man das in Spielen generell keine großen Hürden hat. Da stimme ich dir nur bei simpel gestrickten Dingen zu, also quasi, man hat ein Werkzeug und ein fixes Ziel und das war's, also sowas wie Level und dann ist man durch. In dem Fall, da stimme ich dir zu, wenn du denkst, das ist Programmieren und da gibts sogar Leute, die schließen mit dem Bachelor in Informatik ab und sind noch immer so gestrickt, die werden wenn sie Programmierer werden viel, viel Frustration erleben. Nur können Spiele auch so gestrig sein, dass sie dir einen Vollen Interpreter zur Verfügung stellen. Das ist dann quasi Python, nur dass man sich zu Referenzen zu Schlagen und Schlageineiern noch ein wenig mehr überlegt hat und statt REPL und Package Manager vielleicht noch ein wenig mehr dabei ist, vielleicht sogar noch mehr, als bei Smalltalk-Umgebungen. Manche sagen dann, dass das kein Spiel mehr sei (zumindest meinten das wenn ich mich recht an damals erinnere manche Leute über Second Life zum Beispiel - strapaziere das nur, weil das damals durch die Medien geisterte), aber je nachdem wie man das anlegt ist und bleibt es ein Interpreter mit Zusätzen und vielleicht ein paar Limitierungen. Solang das Ganze turing-complete bleibt würde ich das allerdings als echtes Programmieren ansehen, egal wie exotisch das sonst ist und ob man das jetzt zum Spaß und Zeitvertreib oder zum Erlangen der Weltherrschaft macht.
