3 Punkte von GN⁺ 2024-07-25 | 2 Kommentare | Auf WhatsApp teilen
  • Ein Spiel, bei dem Kinder Pipe-Kombinationen lernen, indem sie grundlegende UNIX-Befehle wie cat, grep, tail, head, wc, sort und uniq als 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, sort und uniq verwendet
  • 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
  • Das schwierigere Erweiterungspaket UNIX Pipe Game - Process Substitution behandelt Prozesssubstitution sowie paste, tr, cut und bc

Ablauf einer Runde und Beispiel für eine Befehlskette

  • Das Ziel der Beispielrunde ist, die häufigste Zeile in einer Datei auszugeben
    • Mit cat wird die Datei gelesen
    • Mit sort werden die Zeilen sortiert
    • Mit uniq -c wird die Anzahl doppelter Zeilen gezählt
    • Mit sort -n wird numerisch sortiert
    • Mit tail -1 wird die letzte Zeile ausgegeben
  • 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

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 W ausgeben
    • 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

 
GN⁺ 2024-07-25
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.pdf
    Falls 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 W zu 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.

    • Wer gerne alte Kommentare liest: Es gibt auch einen Show-HN-Thread von vor ein paar Jahren: https://news.ycombinator.com/item?id=33222687
    • Wirklich großartig.
      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.
    • Als früherer Käufer würde ich außerdem gern um ein Cognitive-Bias-Deck bitten, basierend auf https://www.designhacks.co/products/cognitive-bias-codex-pos...
    • Ich werde heute Abend nach der Nachtschicht ein paar bestellen.
      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.
    • Ich habe vor ein paar Monaten je ein Exemplar aller gerade erhältlichen Decks bestellt.
      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.

    • Ich denke, das hängt stark vom Kind und von den Eltern ab. Ich bringe es meiner Tochter bei, seit sie 10 ist, und versuche jeden Tag, etwas mit ihr zusammen zu machen. Den Fortschritt kann man hier sehen: https://github.com/jackdoe/programming-for-kids/blob/master/...
      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 explorer auf cmd.exe umgestellt, sodass direkt die Eingabeaufforderung erschien, und sie sollte selbst herausfinden, wie man das wieder repariert. Ich habe auch Schatzsuchen gebaut, bei denen sie mit dir, cd usw. 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.
    • Bei Kindern weiß ich es nicht, aber ich habe Studierende gesehen, die buchstäblich keine andere Computing-Plattform als iOS bedienen konnten.
      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, perl usw. aufgewachsen sind, steigt der Schwierigkeitsgrad bei einem Spiel auf die geringste Zahl an Pipes sofort

    • Das liegt daran, dass die Punkteberechnung die Anzahl der Pipes zählt. Es könnte besser sein, stattdessen die Zeichenzahl zu zählen.
      Oder man spielt im Sinne des Spiels und lernt jedes Tool für seinen eigentlichen Zweck.
      Für schnelle einmalige Verarbeitung verwendet man oft awk/sed und arbeitet im Großen und Ganzen mit einem ähnlichen Denkmodell. Man erstellt einen Eingabestream, formt die Daten mit sed in Datensätze um, verarbeitet die Datensätze mit awk und glättet anschließend die Ausgabe mit Dingen wie sort/uniq.
      In vielen Fällen können sed und awk einander ersetzen, aber dann dauert es länger, sich das im Kopf vorzustellen, und es ist auch schwerer wiederzuverwenden
  • In 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

    • Wir haben gespielt, bis alle Karten aufgebraucht waren
  • Die Leute, die auf uuoc bestehen, kommen bestimmt gleich
    Mit einem vorangestellten cat wird es einfacher, am Anfang der Pipeline noch etwas hinzuzufügen

  • Dass 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 | sort ist der Verlierer, und tr < file.txt a-z A-Z | sort ist 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

    • Tut mir leid :( Ich nutze PostNL, und tatsächlich ist es noch teurer; bei Sendungen außerhalb der EU mache ich meistens Verlust.
      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
    • Ein komplett digitales Gut in Europe auf Papier zu drucken, es dann auf ein Schiff zu laden und langsam bis nach Canada zu schicken, ist schon ein ziemlich seltsames Konzept
    • 12 Euro für nachverfolgbare interkontinentale Post ist ein ziemlich üblicher Preis
    • Man kann es auf Wunsch selbst drucken, und es scheint auch klar zu sein, dass bei diesem Preis inklusive Versand aus Europe kaum etwas übrig bleibt
 
unsure4000 2024-07-25

Kostet 8.000 ₩. Falls jemand ein Exemplar hat, bitte ich um einen Erfahrungsbericht.