Jogo sobre ciência da computação 'Turing Complete'
(turingcomplete.game)- Turing Complete é um jogo focado na experiência de aprofundar a compreensão de conceitos de ciência da computação resolvendo problemas por conta própria
- O aprendizado começa com portas lógicas e avança criando outras portas usando apenas uma porta nand
- Depois, ao combinar memória e componentes, circuitos simples são expandidos para formas mais próximas da arquitetura de computadores real
- O computador que o jogador constrói tem como objetivo ser Turing complete, ou seja, uma estrutura capaz de calcular algoritmos como uma máquina de Turing
- No hardware criado diretamente pelo jogador, é possível montar instruções em assembly e resolver quebra-cabeças de programação baseados em código binário
Aprender ciência da computação por meio de um jogo
- Turing Complete é um jogo com temática de ciência da computação
- Foi pensado para pessoas que gostam da alegria de descobrir como resolver problemas e dos momentos em que passam a enxergar com mais profundidade conceitos que achavam já entender
- Está disponível na Steam em Play Turing Complete
Um fluxo de aprendizado que vai dos circuitos à arquitetura de computadores
-
Portas lógicas
- Portas lógicas são os blocos fundamentais da computação
- A base dos circuitos é aprendida criando as demais portas a partir de uma única porta nand
-
Componentes e memória
- Ao adicionar memória às portas lógicas, é possível criar componentes mais complexos
- Combinando esses elementos, a estrutura se expande até uma arquitetura de computador real
-
Arquitetura
- O computador montado pelo próprio jogador busca ser Turing complete
- Isso significa um computador capaz de calcular algoritmos como uma máquina de Turing
-
Assembly
- O computador é programado com código binário
- Criam-se instruções em assembly para simplificar esse processo e resolver quebra-cabeças de programação no hardware construído pelo próprio jogador
1 comentários
Opiniões no Hacker News
Sou uma pessoa simples: quando vejo Turing Complete no HN, deixo um comentário favorável :)
Comprei alguns anos atrás e joguei alguns níveis; depois deixei meu filho, então com 14 anos, avançar durante as férias de verão e o ajudei de vez em quando. No último nível, ele escreveu um programa na linguagem pseudo-assembly que o jogo ensinou, fazendo um computador que ele construiu do zero, a partir de portas lógicas, atravessar um labirinto aleatório usando a regra da mão direita. Esse jogo é realmente incrível.
Minha única reclamação é que, quando eu tinha essa idade, nem sequer existia um jogo parecido.
Continuo travando nos níveis em que a memória é introduzida; acho que meu cérebro não assimila bem o conceito de tick seguinte/anterior. Mesmo assim, há muitas dicas e soluções completas online, então, se necessário, dá para inserir a solução e passar para o próximo nível.
O jogo em si já estava quase pronto há mais de um ano, e o desenvolvedor vinha fazendo uma reimplementação completa para melhorar o desempenho e permitir a criação de CPUs mais complexas etc. Espero que nada quebre quando a atualização for lançada.
Recomendo muito.
[0] https://en.wikipedia.org/wiki/Rocky%27s_Boots
O que eu tinha feito era:
Mux(a=out, b=in, sel=load, out=muxOut)
DFF(in=muxOut, out=DFFOut)
A última linha deveria ser assim:
DFF(in=muxOut, out=DFFOut, out=out)
Ainda assim, Turing Complete parece o companheiro perfeito para NAND to Tetris. Só que parece ser vendido apenas na Steam; seria bom poder comprá-lo de forma independente.
Gosto muito de jogos desse gênero, então minha coleção de jogos relacionados na Steam vem crescendo aos poucos. Também há alguns fora da Steam, como nandgame.
Turing Complete está entre os bons; a simulação parece estável, e as missões ficaram bastante bem estruturadas depois da reformulação do período inicial de acesso antecipado.
Porém, a UI nem sempre é fluida, e falta orientação, então ele combina melhor com quem já passou por um processo parecido em outros simuladores.
Se você procura um jogo parecido que explique melhor os conceitos, recomendo Silicon Zeroes. No geral, ele parece um pouco menos polido, mas tem uma estrutura de história simpática, explica melhor o que cada nível pretende apresentar e, em especial, lida muito melhor com a resolução de problemas relacionados a clock.
Se você gosta mais da parte de pseudo-assembly do que da eletrônica, recomendo TIS100 ou Shenzhen I/O.
Se prefere puzzles bem feitos, Human Resource Machine talvez seja mais o seu estilo.
Esta notícia sobre Turing Complete também vale a pena ver: https://steamcommunity.com/app/1444480/eventcomments/3806156...
Depois de um ano sem atualizações, em agosto de 2023 saiu uma notícia dizendo “desculpem, uma grande nova atualização vem em breve!”, e desde então voltou ao silêncio.
Parece que o desenvolvedor ficou preso em uma reescrita em grande escala enorme, que está levando muito mais tempo do que o previsto.
Venho esperando para jogar de novo quando ele sair do acesso antecipado, mas tenho medo de acabar esperando para sempre.
A computação digital tem a vantagem da abstração. Você não precisa saber a lei de Ohm para pensar em portas lógicas.
Ao partir para computação analógica, inevitavelmente é preciso encontrar uma forma de ensinar matemática. As operações deixam de ser booleanas e passam a ser combinações de várias equações elétricas. Mesmo que seja matemática simples, é diferente do espírito típico dos jogos de programação.
Ainda assim, fico curioso se isso parece interessante e se seria algo que você jogaria.
https://store.steampowered.com/app/2124440/SIC1/
Lembro que joguei só alguns dos primeiros desafios de Human Resource Machine. Os puzzles pareciam fáceis demais, e o processo de resolvê-los também não era muito difícil, então não cheguei às fases mais avançadas.
Por coincidência, acabei de comprá-lo na promoção de inverno da Steam.
É um conceito interessante, mas precisa ser muito mais polido para se tornar um jogo de verdade ou uma ferramenta educacional independente.
Para quem já tem conhecimento na área, é ok; mas, para iniciantes, acho que seria uma experiência bem frustrante, porque ele simplesmente joga os problemas na sua frente com pouquíssima orientação, ensino ou preparação.
Também seria bom ter algum recurso para ajudar no layout dos circuitos. Quando você move ou gira componentes, eles se desconectam da fiação, e é preciso redesenhar manualmente cada fio. Mesmo depois de descobrir a lógica correta, ainda há bastante atrito para implementá-la.
Eu me diverti muito com este jogo, e ainda me divirto. Ele funciona melhor quando você consegue ficar um bom tempo jogando de uma vez só
Como em Factorio, quando você fica muito tempo sem jogar e volta, muitas vezes é mais divertido começar de novo do que continuar de onde parou. Ou então é só ficar no sandbox da etapa final
A UI poderia ser um pouco mais refinada, e há alguns anos está em andamento uma grande reestruturação de desempenho que ainda não foi lançada. Hoje em dia também há exportação para Verilog, mas não cheguei a usá-la direito
As peças adicionais desbloqueadas no fim do jogo deixam o sandbox realmente divertido. Também há um sistema de pontuação, que adiciona um elemento competitivo, mas ele só é desbloqueado bem depois do seu primeiro computador
Joguei bastante antes de decidir fazer um curso de ciência da computação na meia-idade, e graças a isso o conteúdo básico de arquitetura ficou muito fácil. Recomendo muito também como uma revisão divertida
Aqui, “diversão” quer dizer a diversão de mexer com lógica booleana em um ambiente amigável; se você não gosta dessa ideia, este “jogo” também não vai ser para você
Na empresa também usamos isso de verdade, e recomendo muito
Cerca de um ano atrás, eu e um colega fomos até o fim no nosso tempo livre e gostamos muito. Achei que seria perfeito para aprendizes de engenharia elétrica, porque no curso eles aprendem conceitos de lógica digital como portas, registradores, registradores de deslocamento e contadores, mas raramente têm muitas oportunidades de aplicá-los em projetos práticos
Além disso, por limitações de tempo, conteúdos derivados como programação em assembly já não são mais tão bem ensinados
Com um pouco de orientação externa adicional, este jogo realmente ajuda a motivar as pessoas a entender o funcionamento de componentes de lógica digital e a brincar com eles por conta própria. É ótimo que se possa chegar ao ponto de escrever uma linguagem assembly simples e resolver puzzles com ela, e isso também é uma grande motivação para os alunos
Quando abri a página pela primeira vez, pareceu uma cópia do Digital Logic Sim [1] de Sebastian Lague, mas, ao ver o vídeo, fiquei impressionado porque na verdade ele vai muito mais fundo. Então comprei. Espero ter tempo para mexer nele em breve
1: https://sebastian.itch.io/digital-logic-sim
Este jogo pode ser facilmente comparado a um semestre de fundamentos de engenharia da computação, mas me pareceu mais divertido, especialmente por causa do minigame de assembly
Na faculdade, havia uma tarefa de projetar instruções específicas para uma CPU virtual e outra de projetar certos circuitos, mas não eram projetos completos nem funcionais
Turing Complete foi divertido porque permite construir uma CPU pequena completa e criar sua própria arquitetura de conjunto de instruções, levando-a tão a fundo quanto quiser
Jogo parecido: https://nandgame.com/
Ainda assim, Turing Complete parece ter mais profundidade do que nand game
Comprei este jogo e o considero uma obra de arte
Não me formei em ciência da computação, mas trabalho como desenvolvedor há cerca de 15 anos. Muito do que há no jogo eu já conhecia de forma abstrata ou tinha experimentado com placas Arduino, pequenos projetos paralelos etc.
Mas isto é exatamente o currículo prático que as pessoas que gostam de fuçar em computadores sempre desejaram
Exapunks(https://www.zachtronics.com/exapunks/) também pode interessar. Ele me ensinou assembly melhor do que as aulas da faculdade