Unix-Pipe-Kartenspiel
(punkx.org)- Ein Spiel, bei dem Kinder Pipe-Kombinationen lernen, indem sie grundlegende UNIX-Befehle wie
cat,grep,tail,head,wc,sortunduniqals Karten aneinanderreihen - Es setzt voraus, dass Eltern die Grundbefehle kennen und ihre tatsächliche Ausführung zeigen; ohne UNIX-Umgebung kann im Browser jslinux verwendet werden
- Die Spieler bauen Befehlsketten passend zum Ziel der Aufgabenkarten und verwenden dabei beispielsweise eine Pipeline wie
cat 03.txt | sort | uniq -c | sort -n | tail -1 - In jeder Runde legt der jüngste Spieler fest, ob die kürzeste Kette oder die längste Kette gewinnt, und der Spieler, der die Aufgabe zuerst löst, erhält Punkte
- Die Karten-PDFs und der Code sind öffentlich verfügbar und können zum Selbstausdrucken genutzt werden; zusätzlich gibt es ein schwierigeres Process-Substitution-Erweiterungspaket
Ziel des Kartenspiels und benötigte Materialien
- Das UNIX Pipe Card Game ist ein Kartenspiel, das Kindern beibringt, wie man UNIX-Befehle mit Pipes kombiniert
- Im Grundspiel werden die Befehle
cat,grep,tail,head,wc,sortunduniqverwendet - Eltern sollten die Befehle auf einem echten Computer ausführen und vorführen; falls kein UNIX-System verfügbar ist, kann im Browser jslinux genutzt werden
- Materialien zum Selbstausdrucken und der Code sind öffentlich verfügbar
- unix-pipe-cards.pdf: Karten-PDF
- unix-pipe-box.pdf: Box-PDF
- unix-pipe-game: Code
- Das schwierigere Erweiterungspaket UNIX Pipe Game - Process Substitution behandelt Prozesssubstitution sowie
paste,tr,cutundbc
Ablauf einer Runde und Beispiel für eine Befehlskette
- Das Ziel der Beispielrunde ist, die häufigste Zeile in einer Datei auszugeben
- Mit
catwird die Datei gelesen - Mit
sortwerden die Zeilen sortiert - Mit
uniq -cwird die Anzahl doppelter Zeilen gezählt - Mit
sort -nwird numerisch sortiert - Mit
tail -1wird die letzte Zeile ausgegeben
- Mit
- Eine Beispiel-Befehlskette zur Lösung dieser Aufgabe ist:
cat 03.txt | sort | uniq -c | sort -n | tail -1
- Der grundlegende Ablauf ist wie folgt
- Der jüngste Spieler wählt das Rundenformat
- Es gewinnt, wer die kleinste Pipe-Kette baut, die die Aufgabe löst
- Es gewinnt, wer die größte Pipe-Kette baut, die die Aufgabe löst
- Der jüngste Spieler wählt eine Aufgabe von einer Aufgabenkarte; dieselbe Aufgabe darf nicht zweimal gewählt werden
- Die Karten werden gemischt und verdeckt auf den Tisch gelegt
- Jeder Spieler zieht im Uhrzeigersinn die oberste Karte vom Stapel und versucht, die Aufgabe zu lösen
- Der Spieler, der die Aufgabe zuerst löst, erhält Punkte
- Wenn keine Aufgaben mehr übrig sind, endet das Spiel
- Der jüngste Spieler wählt das Rundenformat
Probleme, die die Aufgabenkarten verlangen
- Die Beispielaufgaben bestehen aus Zielen wie Zeilenauswahl, Stringsuche, Zählen und Ausgabesteuerung, die sich durch Kombination von UNIX-Befehlen lösen lassen
- Die zweite Zeile ausgeben
- Die vorletzte Zeile ausgeben
- Die 7. Zeile ausgeben
- Die häufigste Zeile ausgeben
- Die seltenste Zeile ausgeben
- Die Anzahl der Zeilen mit
"rises"zählen - Die erste Zeile mit
Wausgeben - Die Anzahl der Zeilen mit
"in"zählen - Zwei zufällige Zeilen anzeigen
- Die Anzahl der Wörter in den letzten zwei Zeilen zählen
- Die 7. und 8. Zeile ausgeben
- Die Anzahl der Zeilen mit
!zählen - Die Anzahl der Zeilen ohne
!zählen - Eine Befehlskette erstellen, die nichts ausgibt
2 Kommentare
Hacker-News-Kommentare
Ich habe diese Kartendecks (https://punkx.org/) erstellt, um meiner Tochter etwas beizubringen, und bisher haben sie ziemlich gut funktioniert.
Besonders gut waren Unix-Pipes, 4917-Maschinensprache (https://punkx.org/4917/) und das Pointer-Deck (https://punkx.org/c-pointer-game/); vom Python-Deck benutze ich nur etwa 10 Karten.
Vielleicht gefällt ihr auch das Brettspiel zum Thema Buffer Overflow in RISC-V-Assembly https://punkx.org/overflow/, und je nach Niveau des Kindes geht auch Schlangen und Leitern mit
goto: https://punkx.org/overflow/build/snakes-and-ladders.pdfFalls ihr Kinder habt, empfehle ich auch, https://punkx.org/panic/ auszudrucken. Es enthält lauter Spielereien, die auf eine Pokerkarte passen, zum Beispiel alle 30 Sekunden zufällig Backspace oder Leertaste zu drücken oder, wenn Minecraft geöffnet ist, zufällig
Wzu drücken.Ich spende viele Decks an Lehrkräfte und Schulen; bei Interesse einfach eine E-Mail schicken.
P.S.: Ich bin noch eine Woche in London. Wenn ihr jetzt bestellt, dauert der Versand zwar länger, dafür lege ich 1–2 zusätzliche Decks ins Paket.
Noch als Ergänzung: Das Unix-Pipe-Erweiterungsdeck besteht komplett aus Process Substitution. Ich halte es nicht für besonders nützlich für Kinder, aber die Rätsel sind ganz gut.
Eine Sache ist mir aufgefallen: Im Spiel gibt es Aufgaben wie „zweite Zeile ausgeben“ oder „siebte Zeile ausgeben“, aber beide Zeilen sind leer. Streng genommen könnte also auch ein
grep, das nichts findet, als richtige Antwort gelten.Mich würde interessieren, wie du den Druck organisierst. Machst du das selbst, per Print-on-Demand oder bestellst du große Mengen und verschickst sie selbst? Ich finde es immer spannend, wie der Verkauf kleiner physischer Produkte organisiert wird.
Meine Töchter sind noch zu jung dafür, aber ich finde die Decks großartig und freue mich schon darauf, sie in etwa acht Jahren hervorzuholen.
Ich frage mich, ob Kinder heutzutage so etwas tatsächlich verstehen können.
Ich habe keine Kinder und bin auch kaum in ihrer Nähe, also bitte als aufrichtige Frage verstehen.
Das Schwierige ist, dass ich mit Snapchat und Google/Meta um ihre Aufmerksamkeit konkurrieren muss. Die Schule macht auch ziemlich müde, und Snapchat-Streaks sind wirklich lästig. Je mehr Freunde sie hat, desto mehr Streaks muss sie aufrechterhalten, sodass sie am Ende rund 400 Nachrichten am Tag verschicken muss, und das hört nie auf.
Ich bringe ihr bei, dass jeden Tag 100.000 Entwickler, Psychologen, Produktverantwortliche und andere zur Arbeit gehen und darüber nachdenken, wie sie möglichst viel Wert aus ihrer Aufmerksamkeit ziehen können. Deshalb soll sie sich ständig bewusst machen, wozu der „Algorithmus“ sie bringen will.
Unix-Pipes hat sie ziemlich schnell verstanden, auch wenn sie sie nicht oft benutzt. Trotzdem hat sie das Konzept erfasst, dass ein Programm die Ausgabe eines anderen Programms liest, und auch die Kommandozeile zu verstehen war nicht so schwer.
Ich habe allerdings verschiedene Tricks eingesetzt. Zum Beispiel habe ich auf ihrem Windows-PC die Shell beim Booten von
exploreraufcmd.exeumgestellt, sodass direkt die Eingabeaufforderung erschien, und sie sollte selbst herausfinden, wie man das wieder repariert. Ich habe auch Schatzsuchen gebaut, bei denen sie mitdir,cdusw. Dateien im Dateisystem finden musste, und bei https://overthewire.org/wargames/bandit/s Bandit-Spiel gab es für jedes geschaffte Level Robux als Belohnung.Ich möchte ihr beibringen, wie Computer funktionieren und wie man Computer dazu bringt, das zu tun, was man will. Was Register sind, was Instruktionen sind, was Programme und Prozesse sind – sozusagen die absoluten Grundlagen.
Dabei bringe ich ihr auch bei, Probleme zu zerlegen, zu denken und vor allem zu lernen. Ich versuche, ihr das Wesen der Dinge zu zeigen, sodass es kein Mysterium mehr ist, wie nach einem Tastendruck Text auf dem Bildschirm erscheint oder wie ChatGPT das nächste Wort vorhersagt. Im Moment arbeite ich an einem Brettspiel mit einem rekurrenten neuronalen Netz aus drei Neuronen, das das Zählen beibringt: https://punkx.org/move-37/rnn.pdf
Am Ende bin ich mir nicht einmal sicher, ob es so wichtig ist, was man einem Kind beibringt.
Im Unterricht mussten Mitstudierende ihnen sogar Konzepte wie Dateien und Ordner erklären.
Ehrlich gesagt finde ich das gar nicht so schlimm. Ich glaube, Computer gehen einen ähnlichen Weg wie Autos. Die meisten werden nur noch das absolute Minimum wissen, das man zur Bedienung braucht, und tieferes Wissen bleibt Enthusiasten und Fachleuten vorbehalten.
Deshalb wird die allgemeine Art, Computer zu benutzen, wohl immer schmaler, auch wenn ihr Innenleben komplizierter wird.
Um das Spiel zu spielen, sollte man die Pipe-Verarbeitung auf https://exaequos.com unbedingt reparieren.
Wenn man gegen Leute spielt, die mit
awk,perlusw. aufgewachsen sind, steigt der Schwierigkeitsgrad bei einem Spiel auf die geringste Zahl an Pipes sofortOder man spielt im Sinne des Spiels und lernt jedes Tool für seinen eigentlichen Zweck.
Für schnelle einmalige Verarbeitung verwendet man oft
awk/sedund arbeitet im Großen und Ganzen mit einem ähnlichen Denkmodell. Man erstellt einen Eingabestream, formt die Daten mitsedin Datensätze um, verarbeitet die Datensätze mitawkund glättet anschließend die Ausgabe mit Dingen wiesort/uniq.In vielen Fällen können
sedundawkeinander ersetzen, aber dann dauert es länger, sich das im Kopf vorzustellen, und es ist auch schwerer wiederzuverwendenIn den Regeln steht, dass der Spieler, der die Aufgabe zuerst abschließt, die Runde gewinnt, aber ich frage mich, wie das Format längste Pipe-Kette funktioniert
Die Leute, die auf
uuocbestehen, kommen bestimmt gleichMit einem vorangestellten
catwird es einfacher, am Anfang der Pipeline noch etwas hinzuzufügenDass man es selbst ausdrucken kann, ist wirklich großartig
Ich überlege gerade, es sofort auf dem Bürodrucker auszudrucken
Das Gute an diesem Spiel ist, dass jemand gewinnt, der UUoC kennt
cat file.txt | tr a-z A-Z | sortist der Verlierer, undtr < file.txt a-z A-Z | sortist der Gewinner$19 Versand nach Canada wirkt etwas überzogen
Ich frage mich, ob es im Großraum Vancouver Leute gibt, die eine Sammelbestellung machen wollen
Trotzdem enthält jedes Deck ein PDF, also kann man es auch selbst in einem lokalen Copyshop drucken. Wenn man die Box nicht druckt, dürfte es günstiger sein.
Man kann es auch einfach auf A4-Papier ausdrucken und mit der Schere ausschneiden, das ist kein großes Problem. Es hilft sogar, wenn man es jemandem mit Stift und Papier erklärt.
In diesem Fall ist die Box https://punkx.org/unix-pipe-game/unix-pipe-box.pdf und die Karten sind https://punkx.org/unix-pipe-game/unix-pipe-cards.pdf
Kostet 8.000 ₩. Falls jemand ein Exemplar hat, bitte ich um einen Erfahrungsbericht.