2 pontos por GN⁺ 2024-01-11 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2024-01-11
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.

    • Acho que Rocky's Boots (1982) [0] não era um jogo parecido com isso?
      [0] https://en.wikipedia.org/wiki/Rocky%27s_Boots
    • Travei exatamente do mesmo jeito ao projetar o chip de memória em NAND to Tetris. No fim, tive que olhar a resposta dessa parte e, pelo que vi, eu não estava muito longe da solução, mas não tinha entendido a sintaxe que funcionava.
      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.
    • Lembra TIS-100 e Shenzhen I/O, da Zachtronics.
  • 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.

    • Estou pensando em criar um jogo de computação analógica no estilo Zachtronics. No momento estou fazendo um simulador de circuitos, mas não sei se isso seria realmente divertido, nem se conseguirei encontrar uma forma de torná-lo divertido.
      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.
    • Se você já zerou TIS-100, mas quer uma experiência de assembly ainda mais entediante, publiquei na Steam um jogo gratuito de uma única instrução (subleq), o SIC-1.
      https://store.steampowered.com/app/2124440/SIC1/
    • Se você é fã da Zachtronics, também recomendo Opus Magnum e Exapunks. Em Exapunks, você precisa aprender uma nova linguagem meio parecida com assembly para dar ordens a agentes robóticos, e eu me diverti muito com ele.
      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.
    • Nesse gênero, MHRD também é excelente. Joguei várias vezes. Que bom saber que existem mais jogos parecidos: https://store.steampowered.com/app/576030/MHRD/
    • Fico me perguntando se existem jogos de um tipo parecido que ensinem machine learning ou deep learning.
  • 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.

    • Em um dos primeiros níveis há uma dica dizendo que, ao clicar duas vezes em um componente, você pode mover junto a fiação conectada ao componente. O clique duplo seleciona automaticamente não só o componente, mas também os nós de fiação conectados. Ainda assim, há espaço para melhorar a UI.
  • 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

    • TIS-100 também foi excelente. É até mais difícil do que assembly de verdade
    • Fico curioso para saber se você também jogou Shenzhen I/O