Jogo de cartas de pipes do Unix
(punkx.org)- É um jogo em que crianças aprendem combinações com pipes ao conectar em cartas comandos UNIX básicos como
cat,grep,tail,head,wc,sorteuniq - Parte do princípio de que os pais conheçam os comandos básicos e mostrem a execução real; se não houver um ambiente UNIX, é possível usar o jslinux no navegador
- Os jogadores montam cadeias de comandos de acordo com o objetivo da carta de tarefa, usando como exemplo pipelines como
cat 03.txt | sort | uniq -c | sort -n | tail -1 - Em cada rodada, o jogador mais novo escolhe se vence a cadeia mais curta ou a cadeia mais longa, e quem completar a tarefa primeiro ganha pontos
- Os PDFs das cartas e o código estão disponíveis para imprimir e usar, e também há uma expansão mais difícil de Process Substitution
Objetivo do jogo de cartas e materiais necessários
- UNIX Pipe Card Game é um jogo de cartas para ensinar crianças a combinar comandos UNIX com pipes
- Os comandos usados no jogo básico são
cat,grep,tail,head,wc,sorteuniq - Os pais devem mostrar a execução real dos comandos no computador, e, se não houver um sistema UNIX, é possível usar o jslinux no navegador
- Os materiais para impressão e o código estão disponíveis publicamente
- unix-pipe-cards.pdf: PDF das cartas
- unix-pipe-box.pdf: PDF da caixa
- unix-pipe-game: código
- A expansão de versão mais difícil, UNIX Pipe Game - Process Substitution, aborda substituição de processo e
paste,tr,cut,bc
Exemplo de rodada e cadeia de comandos
- No exemplo de rodada, o objetivo é imprimir a linha mais frequente de um arquivo
- Ler o arquivo com
cat - Ordenar as linhas com
sort - Contar linhas duplicadas com
uniq -c - Aplicar ordenação numérica com
sort -n - Exibir a última linha com
tail -1
- Ler o arquivo com
- A cadeia de comandos de exemplo para resolver esse objetivo é a seguinte
cat 03.txt | sort | uniq -c | sort -n | tail -1
- O fluxo básico da partida segue esta ordem
- O jogador mais novo escolhe o formato da rodada
- Ganha quem montar a menor cadeia de pipes que complete a tarefa
- Ganha quem montar a maior cadeia de pipes que complete a tarefa
- O jogador mais novo escolhe uma tarefa da carta de tarefa, e a mesma tarefa não pode ser escolhida duas vezes
- As cartas são embaralhadas e colocadas viradas para baixo sobre a mesa
- Cada jogador compra a carta do topo do baralho no sentido horário e tenta completar a tarefa
- O primeiro jogador a completar a tarefa ganha pontos
- Quando não houver mais tarefas, o jogo termina
- O jogador mais novo escolhe o formato da rodada
Problemas exigidos pelas cartas de tarefa
- Os exemplos de tarefa consistem em objetivos que podem ser resolvidos com combinações de comandos UNIX, como seleção de linhas, busca de strings, contagem e controle de saída
- Exibir a segunda linha
- Exibir a penúltima linha
- Exibir a 7ª linha
- Exibir a linha mais frequente
- Exibir a linha menos frequente
- Contar quantas linhas contêm
"rises" - Exibir a primeira linha que contém
W - Contar quantas linhas contêm
"in" - Mostrar duas linhas aleatórias
- Contar o número de palavras das duas últimas linhas
- Exibir a 7ª e a 8ª linhas
- Contar quantas linhas contêm
! - Contar quantas linhas não contêm
! - Criar uma cadeia de comandos que não exiba nada
2 comentários
Opiniões no Hacker News
Criei esses baralhos de cartas (https://punkx.org/) para ensinar minha filha, e até agora eles têm funcionado muito bem
Em especial, os de pipes Unix, linguagem de máquina 4917 (https://punkx.org/4917/) e ponteiros (https://punkx.org/c-pointer-game/) foram bons; o baralho de Python eu uso só umas 10 cartas
Talvez você também goste do jogo de tabuleiro sobre buffer overflow em assembly RISC-V https://punkx.org/overflow/, e, dependendo do nível da criança, também dá para jogar uma versão de cobras e escadas com goto: https://punkx.org/overflow/build/snakes-and-ladders.pdf
Se você tem filhos, recomendo imprimir também https://punkx.org/panic/. Ele traz pegadinhas que cabem em uma carta de pôquer, como pressionar backspace ou espaço aleatoriamente a cada 30 segundos, ou pressionar W aleatoriamente se o Minecraft estiver aberto
Estou doando muitos baralhos para professores e escolas; se tiver interesse, é só me mandar um e-mail
PS: vou ficar em London por mais uma semana, então, se você pedir agora, o envio vai atrasar, mas em compensação vou colocar mais 1 ou 2 baralhos no pacote
Além disso, o baralho de expansão de pipes Unix é todo sobre substituição de processos; não acho que seja útil para crianças, mas acho os quebra-cabeças bons
Uma coisa que me chamou a atenção é que o jogo tem tarefas como “imprimir a segunda linha” e “imprimir a sétima linha”, mas ambas as linhas estão vazias. Então, estritamente falando, um
grepque não casa com nada também poderia ser uma resposta corretaFiquei curioso: queria saber como você lida com a impressão. Você mesmo produz, usa impressão sob demanda ou faz pedidos em volume e envia por conta própria? Sempre acho interessante ver como alguém opera a venda de produtos físicos em pequena escala
Minhas filhas ainda são novas demais para usá-los, mas acho os baralhos excelentes e estou ansioso pelo dia em que vou tirá-los da gaveta, daqui a uns 8 anos
Fico me perguntando se as crianças de hoje conseguem realmente entender esse tipo de coisa
Não tenho filhos e não convivo com crianças, então espero que entendam como uma pergunta sincera
A parte difícil é ter que competir com Snapchat e Google/Meta pela atenção dela. A escola também a deixa bastante cansada, e os streaks do Snapchat são realmente irritantes. Quanto mais amigos ela tem, mais streaks precisa manter; chega a precisar enviar umas 400 mensagens por dia, sem fim
Ensinei a ela que 100.000 desenvolvedores, psicólogos, gerentes de produto etc. vão trabalhar todos os dias pensando em como extrair o máximo de valor da atenção dela. Por isso, ela precisa estar sempre consciente do que o “algoritmo” a leva a fazer
Ela entendeu pipes Unix bem rápido, mas não os usa com frequência. Ainda assim, captou a ideia de que um programa lê a saída de outro, e entender a linha de comando também não foi tão difícil
Usei vários truques, porém. Por exemplo, no PC Windows dela, troquei o shell de
explorerparacmd.exe, para que ao inicializar aparecesse direto o prompt de comando, e deixei que ela explorasse e consertasse por conta própria. Também criei uma caça ao tesouro no sistema de arquivos, usandodir,cdetc. para encontrar arquivos, e no jogo Bandit de https://overthewire.org/wargames/bandit/ eu a recompensava com Robux a cada nível concluídoQuero ensinar como os computadores funcionam e como fazer o computador executar o que você quer. O que é um registrador, o que é uma instrução, o que é um programa e um processo — em outras palavras, o básico do básico
No processo, também ensino como dividir problemas, como pensar e, acima de tudo, como aprender. Tento ensinar a essência das coisas, para que não haja mistério entre o ato de apertar uma tecla e uma letra aparecer na tela, ou a forma como o ChatGPT prevê a próxima palavra. Agora estou fazendo um jogo de tabuleiro de rede neural recorrente com 3 neurônios, um jogo para ensiná-la a contar: https://punkx.org/move-37/rnn.pdf
No fim das contas, não sei se importa tanto assim o que você ensina a uma criança
Em uma aula, colegas tiveram que começar explicando conceitos como arquivos e pastas
Sinceramente, não acho isso tão ruim. Acho que computadores vão seguir um caminho parecido com o dos carros. A maioria das pessoas vai saber só o mínimo necessário para operar a coisa, e o conhecimento mais profundo ficará para entusiastas e especialistas
Então, mesmo que o interior dos computadores fique mais complexo, o modo comum de uso deve se tornar cada vez mais reduzido
Para jogar, definitivamente vou precisar corrigir o processamento de pipes em https://exaequos.com
Se você jogar o jogo do menor número de pipes com alguém que cresceu usando
awk,perletc., a dificuldade sobe na horaOu então dá para jogar no espírito do jogo, aprendendo cada ferramenta para o propósito original dela
Para processamentos rápidos e pontuais, usa-se muito
awk/sed, geralmente com um modelo mental parecido. Algo como criar um fluxo de entrada, transformar os dados em registros comsed, processar os registros comawke depois refinar a saída comsort/uniqEm muitos casos,
sedeawkpodem substituir um ao outro, mas fazer isso torna mais demorado visualizar a solução na cabeça e mais difícil reutilizá-laNas regras diz que o jogador que concluir a tarefa primeiro vence a rodada, mas fico curioso para saber como funciona o formato de cadeia de pipes mais longa
Acho que o pessoal que dá prêmio de
uuocjá já apareceColocar
catna frente simplifica acrescentar algo no início do pipelineAdoro o fato de poder imprimir por conta própria
Estou pensando se imprimo agora mesmo na impressora do escritório
O bom desse jogo é que quem conhece UUoC ganha
cat file.txt | tr a-z A-Z | sorté perdedor, etr < file.txt a-z A-Z | sorté vencedorO frete para o Canada ser US$ 19 parece meio exagerado
Fico curioso se há alguém na região de Greater Vancouver querendo fazer um pedido em grupo
Mesmo assim, cada baralho tem um PDF, então dá para imprimir por conta própria em uma gráfica local. Se não imprimir a caixa, deve sair mais barato
Imprimir em papel A4 e recortar com tesoura também não é um grande problema. Na verdade, às vezes até ajuda ao explicar para alguém com caneta e papel
Nesse caso, a caixa é https://punkx.org/unix-pipe-game/unix-pipe-box.pdf e as cartas são https://punkx.org/unix-pipe-game/unix-pipe-cards.pdf
Está por 8.000₩. Se alguém tiver uma cópia, por favor compartilhe suas impressões.