Spielerisch Programmierlogik erlernen.

SierraX

Well-Known Member
Letztes Wochenende wurde ich von einem Kollegen auf ein Computerspiel aufmerksam gemacht.
In dem Spiel bekommt man Aufgaben... eine Hand voll "Befehlen"... um dann die Aufgaben zu lösen.

Hin und wieder tue ich mich recht schwer Programmierlogik zu verstehen... bin halt eher Admin als Programmierer...
ich finde gerade solche Aufgaben recht praktisch um mal das Hirn ein wenig mehr an zu strengen und um dass dann auch in den kleinen Tools die ich für mich selber schreibe verwenden zu können.

Das Spiel das ich meine ist "Human Resource Machine" gibt es auf alle Fälle für Mac, Windows, iOS und Android (auch für SteamPlay - das hab ich aber noch nicht gecheckt was das jetzt wirklich heisst). Leider ist es nicht kostenlos, so kostet es Mobil ~ 5€ und auf dem Rest ~10€.
Ich finde solche Spielideen klasse und hilfreicher als so manch anderes was sich dann Educational Game schimpft.
Spielt ihr das? Würdet ihr mehr von sowas wollen (ich definitiv ja)? Kennt ihr noch andere Spiele die solche Fertigkeiten fördern?
 
Ich habe in letzter Zeit ein paar sehr coole Spiele aus diesem Feld gespielt. Sortiert danach wie viel Spaß ich habe und auch wie schwierig es ist. Oben am Wenigsten, unten am Meisten - Plattformen sind nur die, die ich verwendet habe:

  • Gladiabots, kostenlos für Android: Das ist reine Programmierlogik. Man programmiert (graphisch) Bots.
  • Hacked, für Android, kostenlos: Eigentlich perfekt zum Lernen. Man bekommt Input und Output und muss eine Funktion schreiben, die das macht. Wenn's ums Lernen geht finde ich das Beste. Auch ein relativ gut gemachtes Interface.
  • CodeCombat für den Browser: Ein Strategiespiel, das recht nett ist und das viele Programmiersprachen unterstützt. Nette Grafiken, ein wenig ruckelig manchmal, aber schon ein Weilchen nicht mehr gespielt. Auch gratis.
  • Hackmud auf Steam & Co. (Windows, Linux, Mac) unterstützt: Kostet ca. 10 EUR. Mein absoluter Favorit. Eigentlich schon ein wenig für Fortgeschrittene. Man hat JavaScript und MongoDB. Es ist eben ein MUD (Multi User Dungeon, also ein Text-MMORPG). Macht Spaß, ist neu. Hoffe, dass die auch mal was anderes als den Unity-Client bekommen.
Ich habe auch viele andere Coding-Spiele gespielt, aber die waren eher unpolished oder relativ Monton oder viel zu sehr auf der Lern-Schiene, als dass es Spaß macht. Ist aber persönlicher Geschmack.
 
Nö, weil ich in meinem Arbeitsleben genug programmiere und in der Freizeit dann vielleicht noch Zeit für Ports und Miniprojekte aufbringe. Herauszufinden warum etwas nicht baut oder so funktioniert wie gedacht, ist mein Zeitvertreib. Mag zwar anstrengender sein, aber man lernt mehr(was man evtl. noch später gebrauchen kann) und gibt was zurück womit andere was anfangen können.
Diese Spiele hingegen zeigen Lösungen die keiner braucht, die mit richtiger Arbeit als Entwickler wenig zu tun haben. Selten sind die Probleme so kleinteilig, häufig äußert komplex und total versaut umgesetzt.
 
@darktrym Ich mag dir eigentlich nicht wirklich widersprechen, weil du im Großen und Ganzen recht hast.

Ich glaube aber, dass es zwei Dinge gibt, die daran vorbeigehen, warum man vielleicht trotzdem solche Spiele spielen will.

Programmierspiele können gut sein um ein Verständnis für Programmier-Logik zu bringen. Manche Leute brauchen genau das, haben bei vielen echten Projekten aber zu wenig Fokus drauf. Gerade als Programmieranfänger kann es hilfreich ein in einer Umgebung zu arbeiten, wo man sich nicht mit der Welt drumherum befassen muss.

Spaß. Ja, es kann Spaß machen solche Spiele zu spielen, obwohl man Spaß an echten Projekten hat. Spiele sind ja immer Arbeit. Außerdem sind solche Spiele mehr Casual oder mehr für Unfug und manchmal sozialer.

Ich will dich nicht überzeuge, darktrym. Es ist nur so, dass ich bis vor kurzem die selbe Meinung zu solchen Spielen hatte, wie du und dass ich durch einen Arbeitskollegen dazu gekommen bin. Derzeit halte ich es ein wenig, wie mit Management und Simulationsspielen. Das ist Arbeit, aber irgendwie auch relaxend und vor allem lustig, wenn man es mit anderen spielt. Ich bilde mir nicht ein, dass ich dadurch lerne. Wenn jemand lernen kann, dann denke ich eher ganz, ganz am Anfang. Das ist übrigens auch meine Kritik an Programmieren in Unis oder Schulen, dass das gern mal an der Realität vorbeigeht, meines Erachtens noch mehr, als Spiele, weil man sich bei sowas viel mehr um praktische Ziele kümmert, aber gut, jedem das Seine.

Das beschreibt übrigens auch meinen Werdegang durch diese Spiele. Gladiabots ist ganz nett und habe ich mehr gefunden, weil jemand anderer programmieren lernen wollte und eben damit kämpfte, dass er zu viel auf einmal um die Ohren hatte und deshalb alles vermischt und nichts verstanden hatte.

Hacked wurde mir von einem Arbeitskollegen empfohlen. Ich meinte, dass ich gerne auch zu Hause an Projekten arbeite und in der Bahn (hatte einen langen Weg in die Arbeit) versucht habe Code zu lesen, was schon schwer ist und Programmieren ja unmöglich wäre. Dann meinte er das Interface ist cool und die Challenges spannend. Was mir daran gefallen hat ist, dass man Funktionen baut, die man weiter verwendet. Also man implementiert Array-Push und hat dann Array-Push. Sowas sollte man meiner Meinung nach im Unterricht machen. Außerdem ist das Interface gut und die Sprache echt.

CodeCombat ist was worüber ich gestolpert bin und ich fand es spannend, weil es mehrere Sprachen beherrscht hat und die das so gemacht haben, dass man Matches für andere lokal berechnet. Das war interessanter als das Spiel selbst. Damals war das übrigens noch nicht auf lernen ausgerichtet sondern quasi um Programmierer Jobs finden zu lassen. Die Prämisse war, dass der erste Platz wohl ein guter Programmierer ist. Theoretisch fand ich das zwar schön und gut, aber praktisch will man eher die Typen, die in der Freizeit echten Projekten nachgehen.

In meiner Jugend habe ich mir ein paar Open Source Programmierspiele angesehen. Aber die waren nichts für mich.

Hackmud finde ich interessant, weil es mehr auf das Spiel ausgelegt ist, die Community nett zu sein scheint und es auf der einen Seite voll das Programmierspiel ist, andererseits aber doch der Fokus auf dem Spiel liegt.
 
Du kannst da gern anderer Meinung sein, das gönn ich dir ausdrücklich, nur ist für mich der Aspekt Spiel zu wenig ausgearbeitet. Es ist ungefähr so als würde dein Nachbar von nebenan gern mal einen Bagger bedienen und du selbst als Baggerfahrer kennst den Alltag nur allzu genau.
 
Vielleicht nicht ganz. Spiele sind oft vereinfacht und involvieren Dinge, die man im Alltag nicht macht. Ich weiß, das kann man zwar nicht wirklich vergleichen, aber wenn ein Polizist oder jemand vom Militär Counter Strike spielt, dann ist das nicht komisch.

Beim Programmieren muss man aber sagen, dass man da dichter dran ist. Das ist der Grund warum ich von den oben genannten Spielen nur das letzte mag und länger als vielleicht eine Stunde gespielt habe. Das hat scheinbar mehr typische Community-Aspekte. Außerdem macht man da so Sachen, wie potentiell jemanden Code unterzujubeln um ihm oder ihr im Spiel zu schaden. Das ist für mich der "Shooter für den Polizist/Militär"-Teil. In eigenen Projekten versuche ich eher keinen Humbug und nichts böses zu machen.

Vereinfachte Programmierspiele hingegen, wie Gladiabots finde ich toll für Kinder. Du brauchst kein Englisch (zumindest, wenn das Spiel nicht auf englisch wäre ;)) und kannst trotzdem schon nah ran kommen. Mich hat das ein wenig an diese Lego Mindstorms Sache erinnert, nur viel günstiger, weil virtuell und kostenlos.

Ich habe deine Meinung deshalb erwähnt, weil ich letztes Jahr noch komplett deiner Meinung war, sogar in Hinblick auf so Simulations- und Tycoonspiele. Einfach weil Spiele wenn sie Spaß machen und nicht voll und ganz auf Humor oder Story basieren einfach Arbeit sind. Hatte da eine Diskussion von mir, kein ITler, der Factorio spielt. Ich habe ihm gesagt, dass das auch, wenn es kein Programmierspiel ist, sehr, sehr stark an Programmieren erinnert. Man macht eine Sache manuell und dann will man da automatisieren, dann baut man das so, dass man es einfach verwenden kann, dann fasst man das zusammen und automatisiert die Verwendung davon und zwischendurch optimiert man Sachen.

Da habe ich dann dein Argument verwendet, dass ich da auch an meinen Projekten arbeiten könnte, weil der Output da größer ist (nicht nur irgendwelche Punkte oder virtuelles Geld) und der Spaßfaktor recht ähnlich.

Also wollt' nur sagen, dass ich vor einem Jahr noch ungefähr das geschrieben hätte wie du und deine Meinung deshalb sehr gut verstehe und, dass du nicht denkst ich will dich von was überzeugen. :)
 
Wirklich lernen tut man erst etwas wenn man Widerstände überwindet und sich in die Sache hineindenkt. Zum Programmieren ist da m.E. jede interaktive Sprache mit REPL geeignet, und davon gibt es ja eine Menge, wenn es denn sein muss meinetwegen auch eine IDE. Spiele können m.E. bestenfalls Appetizer sein...
 
Ich glaube man muss zwischen "lernen zu programmieren" und "als Programmierer lernen" unterscheiden. Bei ersterem geht es darum das Mindest zu entwickeln, verstehen, wie Dinge zusammenspielen, etc. Beim Programmieren lernen (damit meine ich das erste Monat oder so) ist eigentlich so ziemlich alles wo du sowas wie Logik und Funktionen, bzw. alles wo man Variablen, Operatoren und so hat spannend. Ob da jetzt ein REPL, ein Intro in einem Buch, ein Spiel, meinetwegen auch Excel kommt vor allem auf die Person an. Ja, ich kenne Leute, die haben mit Excel und VB angefangen und entwickeln jetzt Treiber, Compiler, forschen an AIs.

REPLs sind unter anderem dazu da eine Sprache verstehen zu lernen.

Das Andere ist Erfahrung gewinnen. Das ist so, dass man verschiedene Projekte macht. Dazu muss man sich in einem Umfeld befinden, wo man tatsächlich echte Projekte machen kann. Das ist das warum alle immer sagen "such dir ein Projekt und bleib dran".

Wenn man sich jetzt Spiele her nimmt, dann kommt es glaube ich drauf an, wie offen das ist. Wenn das so ein Spiel ist, wo du entweder fixe Aufgaben hast oder du quasi immer das selbe tust, dann ist das so als würde man versuchen ITler (egal mal ob Admin oder sonst was) zu werden und bleibt ausschließlich in Word.

Dann sind jetzt ein wenig die skriptbaren Spiele im kommen, die einigermaßen offen sind. Was das dann sein kann (aber nicht sein muss) ist eine Umgebung wo man sehr wohl Freiheiten hat. Ich würde das ein wenig mit so Leuten vergleichen, die zuerst ein Spiel gespielt haben, dann den Mapeditor entdeckt haben, dann die Skriptmäglichkeiten, dann Mods gemacht haben und dann Schritt für Schritt zum Spielentwickler wurden, später dann vielleicht auch irgendwas anderes.

Das kann dann schon ziemlich nah am Web-Developer dran sein. Der hat seinen Browser gehabt, wollte dann auch mal eine Website machen, hat sich mit HTML und CSS gespielt, hat dann was dynamisches machen wollen und JavaScript gelernt. Dann kamen PHP, Perl, Ruby, Python, Node.js, whatever und irgendeine Datenbank. Das können mitunter Leute sein, die sich eigentlich vor allem mit ihrem Browser auskennen und irgendein Framework kennen, dass alles für sie macht. Das sind nicht die klassischen Computer Science Leute und was Unix angeht kennen die vielleicht MacOS, wenn überhaupt. Sind auch Programmierer.

Und sobald du was hast was dir eine offene Umgebung für Skripting und vielleicht sowas, wie eine DB zur Verfügung stellt, dann bist du ziemlich schnell sehr frei mit dem was du machen kannst. Ich lehne mich jetzt weit raus, weil ich diese Dinge alle nicht so gut kenne, aber SecondLife, Hackmud und sogar dieses Zeug mit dem Leute in Mincecraft irgendwelche Dinge, wie programmierbare CPUs machen sind da schon recht nah an dem was man day to day macht dran.

Wenn man eine Turing-Complete Sprache, eine Art von Memory und so hat, kann man ja wenn man will einen Emulator für eine CPU oder ähnliches bauen. Und soweit ich weiß wurde das zumindest in diesen drei Spielen bereits gemacht. Würde diese Dinge jetzt nicht als Appetizer bezeichnen.

Ist halt die Frage wie sehr etwas eine Umgebung, ein Spiel, ein Programmierspiel oder sonst was ist.

Die Frage ist glaube ich eher warum man dass dann in einer Spiele-Umgebung macht. Aber das ist dann schon eher eine sehr philosophische Frage.

Widerstände überwinden kann auch heißen Dinge für etwas zu verwenden für das sie nicht gedacht waren, bzw. ist das relativ oft sogar der beste Weg, den Leute finden. In Spielen kann das schon spannend sein.

Es muss nicht immer Unix, Python und C sein. Manchmal fände ich das toll, aber so ist es einfach nicht.
 
Es muss nicht immer Unix, Python und C sein.
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 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.

Ich sehe es genau umgekehrt: man sollte den Einstieg möglichst einfach gestalten. Die Grundlagen der Programmierung sind keine Hexenwerk und schon auf niedrigem Niveau nützlich (z.B. bedingte Anweisung und Verzweigung in einer Tabellenkalkulation). Auch wenn ich als Softwareentwickler natürlich hin und wieder gerne den Standesdünkel vor mir hertrage, schließlich vollbringen wir Magie! :D

Wir als Gesellschaft bringen dem Nachwuchs schließlich auch sanft Englisch an den Schulen bei, wohl wissend, dass nur ein Bruchteil davon das Potenzial und Interesse hat, Simultanübersetzer für Mittelenglisch zu werden. ;)

Wir werden das hier nicht ausdiskutieren können, - und nichts gegen Spielen, aber dann richtig! :)

In diesem Fall kann ich noch das ebenso lehrreiche wie unterhaltsame SpaceChem empfehlen (läuft zumindest unter Linux; BSD habe ich noch nicht probiert).
 
Die Grundlagen der Programmierung sind keine Hexenwerk und schon auf niedrigem Niveau nützlich (z.B. bedingte Anweisung und Verzweigung in einer Tabellenkalkulation).
Dann lass sie ein ernsthaftes Problem mit Hilfe einer Tabellenkalkulation ernsthaft lösen, dann lernen sie die Vorzüge einer Tabellenkalkulation zu schätzen. Aber das ist dann kein Spiel, sondern eine Herausforderung der man sich stellen kann, oder eben auch nicht. Und das hat auch nichts mit Programmieren zu tun, denn zwischen Alternativen zu wählen und Konsquenzen zu übersehen gehört zu den elementaren menschlichen Kompetenzen die man in vielen Zusammenhängen lernt und lernen muss.

Informatik/Programmieren ist - wie Mathematik auch - eine Abstraktion von allen möglichen Inhalten, die Sprachen und andere Werkzeuge sind nur die handwerkliche Seite der Sache. Das hat also etwas mit Denken zu tun. Und wie jedes Handwerk erfordert es Zeit und Mühe und Unterordnung unter die Regeln der Sache. Erst wenn man das hinter sich hat kann man damit spielen - wie mit Mathe auch, - und dann macht es auch Spass.
Wir als Gesellschaft bringen dem Nachwuchs schließlich auch sanft Englisch an den Schulen bei, wohl wissend, dass nur ein Bruchteil davon das Potenzial und Interesse hat, Simultanübersetzer für Mittelenglisch zu werden. ;)
Sanft ? :) Vielleicht in der 1. oder 2. Klasse wenn da schon englisch gelernt wird. Aber sonst? Angetrieben von Noten und ernsthaften Ermahnungen von Lehren und Eltern macht man aus der Not eine Tugend und findet vielleicht sogar Spass daran. Aber mit Spielen hat das nichts zu tun. Das sind pädagogische Illusionen die verbreitet werden um die Abrichtung der nachwachsenden Generation zu rechtfertigen (kann man auch milder ausdrücken).

Ernsthaft lernen tut man dann etwas wenn man es braucht oder wirklich will, und dann braucht man kein Spielzeug sondern vernünftiges Werkzeug, gute Dokumentationen und bei Bedarf Leute denen man auch 'dumme' Fragen stellen kann und die in der Lage sind einem etwas zu verklickern. Alles kein Hexenwerk! Wer meint das spielend erlernen zu können, sollte es besser gleich lassen. Das ist vergebliche Liebesmüh...
 
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. ;)
 
Wo ich ein wenig widersprechen mag ist, dass ich denke, das zum einen ganz am Anfang eben dieser Aha-Effekt getriggert werden muss.
Yep, das leidige Thema das gemeint wird man müsste die Leute motivieren. Warum? Zu was ? Man kann auch gut leben ohne programmieren (oder was auch immer) gelernt zu haben. Wenn aber jemand von sich aus motiviert ist, sollte man ihm die geeignetsten Werkzeuge zur Verfügung stellen und vielleicht ein wenig an die Hand nehmen und weiterhelfen wenn Fragen auftreten. Das ist alles. Alles weitere ist dann seine Sache.

Klar sollte aber sein dass dann wenn die Schwelle allzu niedrig ist, nicht die Freude entsteht eine anspruchsvollere Sache bewältigt zu haben was dann zu weiterer Motivation beiträgt. Das ist ein rekursiver Zirkel der dann weiter trägt. Sicherlich ist es aber auch so dass eine allzu hohe Einstiegsschwelle demotivierend wirkt was frustriert und möglicherweise zum Abbruch führt. Das Problem ist wie immer das richtige Maß zu finden und das kann individuell durchaus unterschiedlich sein.
 
Erstmal eine Voranmerkung, die ich gestern Abend noch hätte schreiben sollen: Ich weiß, ich argumentiere jetzt pro Spiele. Mir geht's darum wozu sie nützlich sein können und was in solchen Spiel möglich ist. Ich will nicht, dass sich jetzt jemand denkt, dass er sein Buch oder so wegwerfen kann und stattdessen einfach das Spiel spielt und dann am FreeBSD-Kernel rumbastelt, aber ich hoffe mal das wissen Leute selbst.

@rubricanis Du hast mich falsch verstanden: Nicht Leute sollen getriggert werden zu programmieren, sondern wenn ich jemanden etwas erkläre, lehre oder sonst was und es ist mal egal, ob ich das im Unterricht in einem Artikel oder sonst wie du, dann brauchst du gewisse Aha-Effekte. Um nicht zu abstrakt zu sein ein Beispiel aus der Programmierung. Ich weiß, das Leute, gerade wenn sie schon vor der Schule/Uni eigenständig programmiert oder geskriptet haben manchmal ein Problem mit dem ersten Kontakt mit objektorientierter Programmierung mit Klassen haben. Da hilft es häufig zu wissen, was die davor programmiert haben, weil dann kann man eventuell was vergleichbares nehmen. Häufig reicht es schon einfach das richtige Vokabular zu verwenden. Mein Favorit ist sowas, wie: Objekt, vs Hash, vs dict, vs Tabelle/Metatabelle. Wenn man ein paar richtige Worte in Erklärungen findet, dann triggert man ein Verständnis. Ich stimme dir zu, dass nicht jeder Programmierer werden sollte, aber ich stimme dir nicht zu wenn du sagst, dass man nur auf eine, richtige Art unterrichten oder lernen kann.

In anderen Worten: "Die geeignetsten Werkzeuge" sind nicht für jeden die Selben. Die basieren sehr, sehr stark auf den vorangegangenen Erfahrungen einer Person. Bei mir zum Beispiel war es so, dass ich einfach nicht mit den langsamen, vereinfachten Erklärungen eines Lehrers konnte. Ich habe Programmierung, genauso wie Mathe immer direkt aus dem referenzartigen Buch gelernt. Ich lerne auch jetzt lieber aus Referenzen, Standards, Specs, etc. als aus tutorialisierten Sachen.

Was ich eher schlimm finde, ist dieses vorkauen von Sachen, sowas wie Command-Listings zu geben oder Code-Beispiel in der Programmierung. Also quasi, das was Stackoverflow ist. Ich glaube das macht Leute passiv und führt dazu, dass sie Dinge tun, die sie nicht verstehen.

Allerdings habe ich mich mal mit jemanden unterhalten, der das erforscht und offenbar ist das einfach nur ein weiterer Typ von lernen. Manche brauchen das einfach am Anfang, um immer zusehen, wo das Puzzleteil gerade hinkommen würde. Ich glaube zwar trotzdem noch, dass Stackoverflow sehr stark fördernd für Faulheit ist, aber eben nicht nur.

Motivation oder anderen Dinge Mögen im Weg stehen, aber daran kann ich erstmal nichts ändern, wenn ich jemanden was erkläre und ich mag mir auch nicht einbilden, dass nur weil jemand anders an die Sache ran gegangen ist als ich damals, dass es falsch ist oder deshalb in zehn Jahren ein schlechter Programmierer sein wird. Das grenzt an Wahrsagerei, denn für die Wenigsten läuft die Programmiererkarriere oder irgendeine andere linear und mit einer perfekten Lernkurve.


Im Übrigen rede ich auch niemanden ein, dass er oder sie programmieren sollen, sondern, wenn dass sie sich trauen sollen, wenn sie sich's überlegen. Aber meist nicht mal das. Ich hab's ehrlich gesagt gerne auch viel mit Menschen, die absolut garnichts mit Technik am Hut haben meine Freizeit zu verbringen. Ich würde es jetzt rein egoistisch nicht gern sehen, wenn Leute plötzlich alle Programmierer werden.

Insofern verstehe ich dein Argument, dass man keinesfalls jemanden dazu bringen sollte was zu lernen, was er oder sie nicht aus Eigenmotivation nicht. Aber ehrlich gesagt denke ich, dass das sowieso nicht funktioniert. Schau dir mal an, bei wie vielen Leuten Schule dazu führt sich von allem was mit Mathe und Logik zu tun hat fern zu halten.

Man mag zwar ein paar siebenjährige kurz begeistern, genauso wie für jede andere Wissenschaft, wo man eine Exkursion macht, aber zwei Wochen später ist das bei den Meisten ohnehin kein Thema mehr und wenn doch, dass ist da womöglich eine gewisse Motivation da.
 
Zurück
Oben