3 puntos por GN⁺ 2024-07-25 | 2 comentarios | Compartir por WhatsApp
  • Es un juego donde los niños aprenden a combinar pipes enlazando como cartas comandos básicos de UNIX como cat, grep, tail, head, wc, sort y uniq
  • Parte de la idea de que un adulto conozca los comandos básicos y muestre cómo ejecutarlos en la práctica; si no hay un entorno UNIX, se puede usar jslinux en el navegador
  • Los jugadores construyen cadenas de comandos según el objetivo de la carta de tarea, y como ejemplo usan pipelines como cat 03.txt | sort | uniq -c | sort -n | tail -1
  • En cada ronda, el jugador más joven elige si gana la cadena más corta o la cadena más larga, y quien complete primero la tarea obtiene puntos
  • El PDF de las cartas y el código están publicados para imprimirlos y usarlos directamente, y también hay una expansión más difícil de Process Substitution

Objetivo del juego de cartas y materiales necesarios

  • UNIX Pipe Card Game es un juego de cartas para enseñarles a los niños cómo combinar comandos UNIX con pipes
  • Los comandos que se usan en el juego base son cat, grep, tail, head, wc, sort y uniq
  • Un adulto debe mostrar cómo ejecutar los comandos en una computadora real, y si no hay un sistema UNIX, se puede usar jslinux en el navegador
  • Los materiales para imprimir y el código están publicados
  • La expansión más difícil, UNIX Pipe Game - Process Substitution, trata sobre sustitución de procesos y paste, tr, cut y bc

Desarrollo de la ronda y ejemplo de cadena de comandos

  • En la ronda de ejemplo, el objetivo es imprimir la línea más frecuente de un archivo
    • Leer el archivo con cat
    • Ordenar las líneas con sort
    • Contar las líneas duplicadas con uniq -c
    • Aplicar orden numérico con sort -n
    • Imprimir la última línea con tail -1
  • La cadena de comandos de ejemplo para resolver ese objetivo es la siguiente
    • cat 03.txt | sort | uniq -c | sort -n | tail -1
  • El flujo básico del juego sigue este orden
    • El jugador más joven elige el formato de la ronda
      • Gana quien arme la cadena de pipes más corta que complete la tarea
      • Gana quien arme la cadena de pipes más larga que complete la tarea
    • El jugador más joven elige una tarea de la carta de tareas, y no se puede elegir la misma tarea dos veces
    • Se barajan las cartas y se colocan boca abajo sobre la mesa
    • Cada jugador roba la carta superior del mazo en sentido horario e intenta completar la tarea
    • El primer jugador que complete la tarea obtiene puntos
    • Cuando ya no quedan tareas, el juego termina

Problemas que piden las cartas de tarea

  • Los ejemplos de tareas consisten en objetivos que pueden resolverse combinando comandos UNIX, como seleccionar líneas, buscar cadenas, contar cantidades o controlar la salida
    • Imprimir la segunda línea
    • Imprimir la penúltima línea
    • Imprimir la séptima línea
    • Imprimir la línea más frecuente
    • Imprimir la línea menos frecuente
    • Contar cuántas líneas contienen "rises"
    • Imprimir la primera línea que contiene W
    • Contar cuántas líneas contienen "in"
    • Mostrar dos líneas aleatorias
    • Contar las palabras de las últimas dos líneas
    • Imprimir la séptima y la octava línea
    • Contar cuántas líneas contienen !
    • Contar cuántas líneas no contienen !
    • Crear una cadena de comandos que no imprima nada

2 comentarios

 
GN⁺ 2024-07-25
Opiniones de Hacker News
  • Hice estos mazos de cartas (https://punkx.org/) para enseñarle a mi hija y, hasta ahora, han funcionado bastante bien.
    En particular, estuvieron buenos Unix pipes, lenguaje de máquina 4917 (https://punkx.org/4917/) y el mazo de punteros (https://punkx.org/c-pointer-game/); del mazo de Python solo uso unas 10 cartas.
    También podría gustarles el juego de mesa sobre buffer overflow con ensamblador RISC-V https://punkx.org/overflow/, y según el nivel del niño, también se puede jugar al juego de serpientes y escaleras con goto https://punkx.org/overflow/build/snakes-and-ladders.pdf.
    Si tienen hijos, también recomiendo imprimir https://punkx.org/panic/. Trae travesuras que caben en una carta de póker; por ejemplo, presionar aleatoriamente backspace o espacio cada 30 segundos, o presionar W al azar si Minecraft está abierto.
    Estoy donando muchos mazos a maestros y escuelas, así que si les interesa pueden enviarme un email.
    P. D.: Voy a estar en Londres una semana más, así que si hacen un pedido ahora el envío se va a retrasar, pero a cambio voy a incluir 1 o 2 mazos extra en el paquete.
    Además, el mazo de expansión de Unix pipes trata por completo de sustitución de procesos; no creo que sea útil para niños, pero los puzzles me parecen buenos.

    • Para quienes disfrutan leer comentarios antiguos, también hay un hilo de Show HN de hace unos años: https://news.ycombinator.com/item?id=33222687
    • Está realmente genial.
      Algo que noté es que en el juego hay tareas como “imprimir la segunda línea” e “imprimir la séptima línea”, pero ambas líneas están vacías. Así que, estrictamente, un grep que no coincida con nada también podría ser una respuesta correcta.
    • Como comprador anterior, quisiera pedir que también hagan un mazo de sesgos cognitivos basado en https://www.designhacks.co/products/cognitive-bias-codex-pos....
    • Esta noche, después de terminar el retrabajo, voy a pedir algunos.
      Me da curiosidad saber cómo manejan la impresión: si las hacen ustedes mismos, si es impresión bajo demanda, o si hacen pedidos grandes y envían ustedes. Siempre me interesa cómo se opera la venta de productos físicos a pequeña escala.
    • Hace unos meses pedí uno de cada mazo que estaba a la venta.
      Mis hijas todavía son demasiado chicas para usarlos, pero creo que los mazos son excelentes y me entusiasma la idea de sacarlos dentro de unos 8 años.
  • Me pregunto si los niños de hoy realmente pueden entender este tipo de cosas.
    No tengo hijos ni suelo estar cerca de niños, así que espero que se tome como una pregunta sincera.

    • Creo que depende mucho del niño y de los padres. Le estoy enseñando a mi hija desde que tenía 10 años y trato de hacer algo con ella todos los días. Se puede ver el progreso aquí: https://github.com/jackdoe/programming-for-kids/blob/master/...
      Lo difícil es que tengo que competir con Snapchat y Google/Meta por la atención de mi hija. La escuela también la deja bastante agotada, y las rachas de Snapchat son realmente molestas. Cuantos más amigos tiene, más rachas tiene que mantener, así que termina enviando unos 400 mensajes al día, y no se acaba nunca.
      Le enseño que 100.000 desarrolladores, psicólogos, product managers, etc. van a trabajar todos los días pensando cómo extraer el máximo valor de su atención. Por eso le digo que tiene que estar siempre consciente de lo que el “algoritmo” la hace hacer.
      Entendió los Unix pipes bastante rápido, aunque no los usa seguido. Aun así, captó la idea de que un programa lee la salida de otro programa, y entender la línea de comandos tampoco fue tan difícil.
      Eso sí, usé varios recursos. Por ejemplo, en su PC con Windows cambié el shell de explorer a cmd.exe, para que al arrancar apareciera directamente el símbolo del sistema, y dejé que explorara y lo arreglara por su cuenta. También armé una búsqueda del tesoro en el sistema de archivos usando dir, cd, etc. para encontrar archivos, y la recompensaba con Robux por cada nivel que superaba en el juego Bandit de https://overthewire.org/wargames/bandit/.
      Quiero enseñarle cómo funciona una computadora y cómo hacer que la computadora haga lo que uno quiere. Qué es un registro, qué es una instrucción, qué son un programa y un proceso; por decirlo así, lo más básico de lo básico.
      En el proceso también le enseño a dividir problemas, a pensar y, sobre todo, a aprender. Intento enseñarle el núcleo de las cosas para que no haya misterio entre el proceso por el cual al presionar una tecla aparece una letra en la pantalla y la forma en que ChatGPT predice la siguiente palabra. Ahora estoy haciendo un juego de mesa de una red neuronal recurrente de 3 neuronas, un juego para enseñarle a contar: https://punkx.org/move-37/rnn.pdf
      Al final, no estoy seguro de que sea tan importante qué se le enseña a un niño.
    • No sé los niños, pero sí he visto universitarios que literalmente no saben usar un dispositivo de cómputo que no sea iOS.
      En clase, mis colegas tenían que empezar explicando conceptos como archivos y carpetas.
      Sinceramente, no lo veo tan mal. Creo que las computadoras van a seguir un camino parecido al de los autos. La mayoría solo va a saber lo más básico necesario para manipular el objeto, y el conocimiento más profundo quedará para aficionados y profesionales.
      Por eso, aunque el interior de las computadoras se vuelva más complejo, parece que las formas comunes de uso se irán reduciendo cada vez más.
  • Para jugar, definitivamente habría que arreglar el manejo de pipes en https://exaequos.com.

  • Si juegas a usar la menor cantidad de pipes con gente que creció usando awk, perl y similares, la dificultad sube de inmediato

    • Eso es porque la forma de calcular el puntaje cuenta la cantidad de pipes. Quizá sería mejor contar caracteres
      O bien, se puede jugar según la intención del juego: aprender cada herramienta para su propósito original
      Para procesamientos rápidos de una sola vez se usan mucho awk/sed, y por lo general se resuelven con un modelo mental parecido. Se arma un stream de entrada, se usa sed para convertir los datos en forma de registros, se procesan los registros con awk y luego se pule la salida con algo como sort/uniq
      En muchos casos sed y awk pueden reemplazarse entre sí, pero hacerlo así tarda más en visualizarse en la cabeza y también dificulta más la reutilización
  • Las reglas dicen que gana la ronda el jugador que complete primero la tarea, pero me da curiosidad cómo funciona el formato de la cadena de pipes más larga

    • Nosotros jugamos hasta que se acabaron las cartas
  • Parece que pronto llegarán los que dan el premio uuoc
    Poner cat al principio hace más simple agregar algo al inicio del pipeline

  • Me encanta que se pueda imprimir directamente
    Estoy pensando si imprimirlo ahora mismo en la impresora de la oficina

  • Lo bueno de este juego es que gana quien conoce UUoC
    cat file.txt | tr a-z A-Z | sort es perdedor, y tr < file.txt a-z A-Z | sort es ganador

  • Que el envío a Canadá cueste $19 me parece un poco excesivo
    Me pregunto si habrá alguien en Greater Vancouver que quiera hacer un pedido grupal

    • Perdón :( Uso PostNL y en realidad es más caro; en la mayoría de los envíos fuera de la UE pierdo dinero
      De todos modos, cada mazo tiene un PDF, así que puedes imprimirlo tú mismo en una imprenta local. Si no imprimes la caja, debería salir más barato
      Imprimirlo en papel A4 y recortarlo con tijeras tampoco es un gran problema. De hecho, hasta puede ayudar cuando se lo explicas a alguien con pluma y papel
      En este caso, la caja está en https://punkx.org/unix-pipe-game/unix-pipe-box.pdf y las cartas en https://punkx.org/unix-pipe-game/unix-pipe-cards.pdf
    • Es una idea bastante extraña tomar activos completamente digitales, imprimirlos en papel en Europa y luego subirlos a un barco para enviarlos lentamente hasta Canadá
    • 12 euros por correo intercontinental con seguimiento es un precio bastante estándar
    • También parece claro que, si quieres, puedes imprimirlo tú mismo, y que con este precio casi no queda margen si además se envía desde Europa
 
unsure4000 2024-07-25

Cuesta 8,000₩. Si alguien tiene una copia, por favor comparta su opinión.