3 points par GN⁺ 2024-07-25 | 2 commentaires | Partager sur WhatsApp
  • Un jeu où les enfants apprennent les combinaisons de pipes en enchaînant des commandes UNIX de base comme cat, grep, tail, head, wc, sort et uniq avec des cartes
  • Le principe suppose que les parents connaissent les commandes de base et montrent leur exécution réelle ; en l’absence d’environnement UNIX, il est possible d’utiliser jslinux dans le navigateur
  • Les joueurs créent une chaîne de commandes correspondant à l’objectif d’une carte de tâche, avec par exemple un pipeline comme cat 03.txt | sort | uniq -c | sort -n | tail -1
  • À chaque manche, le plus jeune joueur choisit le mode de victoire — chaîne la plus courte ou chaîne la plus longue — et le joueur qui termine la tâche en premier marque des points
  • Les PDF des cartes et le code sont disponibles publiquement pour impression et utilisation, et une extension plus difficile sur la Process Substitution est également proposée

Objectif du jeu de cartes et matériel

  • UNIX Pipe Card Game est un jeu de cartes qui apprend aux enfants à combiner des commandes UNIX avec des pipes
  • Les commandes couvertes dans le jeu de base sont cat, grep, tail, head, wc, sort et uniq
  • Les parents doivent montrer l’exécution des commandes sur un vrai ordinateur ; s’ils n’ont pas de système UNIX, ils peuvent utiliser jslinux dans le navigateur
  • Les ressources à imprimer soi-même et le code sont disponibles publiquement
  • L’extension plus difficile UNIX Pipe Game - Process Substitution couvre la substitution de processus ainsi que paste, tr, cut et bc

Déroulement d’une manche et exemple de chaîne de commandes

  • L’objectif de la manche d’exemple est d’afficher la ligne la plus fréquente dans un fichier
    • Lire le fichier avec cat
    • Trier les lignes avec sort
    • Compter les lignes en double avec uniq -c
    • Appliquer un tri numérique avec sort -n
    • Afficher la dernière ligne avec tail -1
  • Voici un exemple de chaîne de commandes qui résout cet objectif
    • cat 03.txt | sort | uniq -c | sort -n | tail -1
  • Le déroulement de base suit cet ordre
    • Le plus jeune joueur choisit le format de la manche
      • La personne qui crée la plus petite chaîne de pipes accomplissant la tâche gagne
      • La personne qui crée la plus grande chaîne de pipes accomplissant la tâche gagne
    • Le plus jeune joueur choisit une tâche parmi les cartes de tâche ; une même tâche ne peut pas être choisie deux fois
    • Les cartes sont mélangées et placées face cachée sur la table
    • Chaque joueur, dans le sens des aiguilles d’une montre, pioche la carte du dessus du paquet et tente d’accomplir la tâche
    • Le premier joueur à accomplir la tâche marque des points
    • La partie se termine lorsqu’il n’y a plus de tâches

Problèmes demandés par les cartes de tâche

  • Les exemples de tâches sont des objectifs pouvant être résolus par des combinaisons de commandes UNIX, comme sélectionner des lignes, rechercher des chaînes, compter des éléments ou contrôler la sortie
    • Afficher la deuxième ligne
    • Afficher l’avant-dernière ligne
    • Afficher la 7e ligne
    • Afficher la ligne la plus fréquente
    • Afficher la ligne la plus rare
    • Compter le nombre de lignes contenant "rises"
    • Afficher la première ligne contenant W
    • Compter le nombre de lignes contenant "in"
    • Afficher deux lignes aléatoires
    • Compter le nombre de mots des deux dernières lignes
    • Afficher les 7e et 8e lignes
    • Compter le nombre de lignes contenant !
    • Compter le nombre de lignes ne contenant pas !
    • Créer une chaîne de commandes qui n’affiche rien

2 commentaires

 
GN⁺ 2024-07-25
Avis sur Hacker News
  • J’ai créé ces jeux de cartes (https://punkx.org/) pour apprendre des choses à ma fille, et jusqu’ici ça marche plutôt bien.
    Les jeux Unix pipes, langage machine 4917 (https://punkx.org/4917/) et pointeurs (https://punkx.org/c-pointer-game/) sont particulièrement bons ; pour le jeu Python, on n’utilise qu’une dizaine de cartes.
    Vous aimerez peut-être aussi le jeu de plateau sur les dépassements de tampon en assembleur RISC-V https://punkx.org/overflow/, et selon le niveau de l’enfant, il y a aussi un jeu de serpents et échelles avec des goto : https://punkx.org/overflow/build/snakes-and-ladders.pdf
    Si vous avez des enfants, je recommande aussi d’imprimer https://punkx.org/panic/. Il contient des farces qui tiennent sur une carte de poker, par exemple appuyer aléatoirement sur Retour arrière ou Espace toutes les 30 secondes, ou appuyer aléatoirement sur W si Minecraft est ouvert.
    Je donne beaucoup de jeux à des enseignants et à des écoles, donc si cela vous intéresse, envoyez-moi un e-mail.
    P.-S. : je suis encore à London pendant une semaine, donc si vous commandez maintenant, l’expédition sera retardée, mais en échange j’ajouterai un ou deux jeux de cartes supplémentaires dans le colis.
    Au passage, l’extension du jeu Unix pipes porte entièrement sur la substitution de processus ; je ne pense pas que ce soit utile aux enfants, mais les puzzles sont corrects.

    • Pour ceux qui aiment lire d’anciens commentaires, il y a aussi le fil Show HN d’il y a quelques années : https://news.ycombinator.com/item?id=33222687
    • Vraiment génial.
      Une chose m’a sauté aux yeux : dans le jeu, il y a des objectifs comme « afficher la deuxième ligne » ou « afficher la septième ligne », mais ces deux lignes sont vides. Donc, strictement parlant, un grep qui ne trouve aucune correspondance pourrait aussi être une bonne réponse.
    • En tant qu’ancien acheteur, j’aimerais demander la création d’un jeu de cartes sur les biais cognitifs basé sur https://www.designhacks.co/products/cognitive-bias-codex-pos...
    • Je vais en commander quelques-uns ce soir après mon shift.
      Par curiosité, j’aimerais savoir comment vous gérez l’impression. Vous les fabriquez vous-même, c’est de l’impression à la demande, ou vous commandez en gros puis expédiez vous-même ? Je trouve toujours intéressant de voir comment on gère la vente de petits produits physiques.
    • Il y a quelques mois, j’ai commandé un exemplaire de chaque jeu en vente.
      Mes filles sont encore trop jeunes pour les utiliser, mais je trouve ces jeux excellents et j’ai hâte de les ressortir dans environ 8 ans.
  • Je me demande si les enfants d’aujourd’hui peuvent vraiment comprendre ce genre de choses.
    Je n’ai pas d’enfants et je ne côtoie pas d’enfants, donc j’aimerais que ma question soit prise comme une vraie question sincère.

    • Je pense que cela dépend beaucoup de l’enfant et des parents. J’enseigne à ma fille depuis qu’elle a 10 ans, et j’essaie de faire quelque chose avec elle tous les jours. On peut suivre l’avancement ici : https://github.com/jackdoe/programming-for-kids/blob/master/...
      La difficulté, c’est que je dois rivaliser avec Snapchat et Google/Meta pour capter son attention. L’école l’épuise aussi pas mal, et les streaks de Snapchat sont vraiment pénibles. Plus elle a d’amis, plus elle a de streaks à maintenir ; elle doit envoyer quelque chose comme 400 messages par jour, et ça ne s’arrête jamais.
      Je lui explique que 100 000 développeurs, psychologues, responsables produit, etc. vont travailler chaque jour en réfléchissant à la manière d’extraire le maximum de valeur de son attention. Donc je lui dis qu’elle doit rester constamment consciente de ce que « l’algorithme » la pousse à faire.
      Elle a compris assez vite les pipes Unix, mais ne les utilise pas souvent. Elle a tout de même saisi l’idée qu’un programme peut lire la sortie d’un autre programme, et comprendre la ligne de commande n’a pas été si difficile.
      J’ai toutefois utilisé plusieurs dispositifs. Par exemple, sur son PC Windows, j’ai remplacé le shell explorer par cmd.exe pour qu’au démarrage elle arrive directement à l’invite de commandes, puis je l’ai laissée explorer et réparer elle-même. J’ai aussi créé une chasse au trésor dans le système de fichiers où il fallait utiliser dir, cd, etc. pour trouver des fichiers, et je la récompensais en Robux à chaque niveau terminé dans le jeu Bandit de https://overthewire.org/wargames/bandit/.
      Je veux lui apprendre comment fonctionne un ordinateur, et comment faire faire à un ordinateur ce qu’on veut. Ce que sont les registres, les instructions, les programmes et les processus — bref, les bases de chez bases.
      En chemin, je lui apprends aussi à découper les problèmes, à réfléchir et surtout à apprendre. J’essaie de lui enseigner le cœur des choses, pour qu’il n’y ait pas de mystère entre le fait d’appuyer sur une touche et de voir un caractère apparaître à l’écran, ou la manière dont ChatGPT prédit le mot suivant. En ce moment, je crée un jeu de plateau de réseau neuronal récurrent à 3 neurones qui apprend à compter : https://punkx.org/move-37/rnn.pdf
      Au final, je ne suis pas sûr que ce qu’on enseigne à un enfant soit si important que ça.
    • Je ne sais pas pour les enfants, mais j’ai vu des étudiants qui ne savaient littéralement pas utiliser un appareil informatique autre qu’iOS.
      En cours, mes collègues devaient commencer par expliquer des notions comme les fichiers et les dossiers.
      Honnêtement, je ne trouve pas ça si grave. Les ordinateurs vont probablement suivre une trajectoire similaire à celle des voitures. La plupart des gens ne connaîtront que le strict minimum nécessaire pour manipuler l’objet, et les connaissances plus approfondies resteront l’affaire des passionnés et des professionnels.
      Donc, même si l’intérieur des ordinateurs devient plus complexe, les usages courants vont sans doute se réduire de plus en plus.
  • Pour jouer, il faudrait vraiment corriger le traitement des pipes sur https://exaequos.com

  • Si vous jouez au jeu du nombre minimal de pipes avec quelqu’un qui a grandi avec awk, perl, etc., la difficulté augmente immédiatement

    • C’est parce que le mode de calcul du score compte le nombre de pipes. Il vaudrait peut-être mieux compter le nombre de caractères
      Sinon, conformément à l’esprit du jeu, on peut jouer en apprenant chaque outil pour son usage d’origine
      Pour les traitements rapides et ponctuels, on utilise beaucoup awk/sed, avec en général un modèle de pensée assez similaire. On crée un flux d’entrée, on met les données sous forme d’enregistrements avec sed, on traite ces enregistrements avec awk, puis on peaufine la sortie avec des choses comme sort/uniq
      Dans bien des cas, sed et awk peuvent se remplacer l’un l’autre, mais procéder ainsi prend plus de temps à se représenter mentalement et rend la réutilisation plus difficile
  • Les règles disent que le joueur qui termine la tâche en premier gagne la manche, mais je me demande comment fonctionne le format la plus longue chaîne de pipes

    • Nous, nous avons joué jusqu’à ce qu’il n’y ait plus de cartes
  • Ceux qui décernent le prix uuoc ne devraient pas tarder à arriver
    Mettre cat au début simplifie l’ajout de quelque chose en amont du pipeline

  • J’adore le fait qu’on puisse l’imprimer soi-même
    Je me demande si je ne vais pas l’imprimer tout de suite sur l’imprimante du bureau

  • Ce qui est bien avec ce jeu, c’est que la personne qui connaît UUoC gagne
    cat file.txt | tr a-z A-Z | sort est perdant, et tr < file.txt a-z A-Z | sort est gagnant

  • 19 $ de frais de livraison pour le Canada, ça me paraît un peu excessif
    Je me demande s’il y a des gens dans le Grand Vancouver intéressés par une commande groupée

    • Désolé :( J’utilise PostNL, et en réalité c’est encore plus cher ; la plupart des envois hors UE se font à perte
      Cela dit, chaque deck dispose d’un PDF, donc vous pouvez l’imprimer vous-même dans une imprimerie de quartier. Ce sera moins cher si vous n’imprimez pas la boîte
      L’imprimer simplement sur du papier A4 et le découper aux ciseaux ne pose pas vraiment de problème. Ça aide même parfois quand on veut l’expliquer à quelqu’un avec un stylo et du papier
      Dans ce cas, la boîte est ici : https://punkx.org/unix-pipe-game/unix-pipe-box.pdf et les cartes ici : https://punkx.org/unix-pipe-game/unix-pipe-cards.pdf
    • C’est une idée assez étrange que de prendre des ressources entièrement numériques, de les imprimer sur papier en Europe, puis de les mettre sur un bateau pour les envoyer lentement jusqu’au Canada
    • 12 euros pour un courrier intercontinental avec suivi, c’est un tarif assez standard
    • On peut l’imprimer soi-même si on veut, et il semble aussi clair qu’à ce prix, avec l’expédition depuis l’Europe, il ne reste quasiment rien
 
unsure4000 2024-07-25

C’est 8 000 ₩. Si quelqu’un a un exemplaire, merci de partager votre avis.