Juego de cartas de pipes de Unix
(punkx.org)- 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,sortyuniq - 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,sortyuniq - 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
- unix-pipe-cards.pdf: PDF de las cartas
- unix-pipe-box.pdf: PDF de la caja
- unix-pipe-game: código
- La expansión más difícil, UNIX Pipe Game - Process Substitution, trata sobre sustitución de procesos y
paste,tr,cutybc
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
- Leer el archivo con
- 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
- El jugador más joven elige el formato de la ronda
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
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.
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
grepque no coincida con nada también podría ser una respuesta correcta.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.
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.
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
exploreracmd.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 usandodir,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.
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,perly similares, la dificultad sube de inmediatoO 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 usasedpara convertir los datos en forma de registros, se procesan los registros conawky luego se pule la salida con algo comosort/uniqEn muchos casos
sedyawkpueden reemplazarse entre sí, pero hacerlo así tarda más en visualizarse en la cabeza y también dificulta más la reutilizaciónLas 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
Parece que pronto llegarán los que dan el premio
uuocPoner
catal principio hace más simple agregar algo al inicio del pipelineMe 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 | sortes perdedor, ytr < file.txt a-z A-Z | sortes ganadorQue 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
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
Cuesta 8,000₩. Si alguien tiene una copia, por favor comparta su opinión.