2 puntos por GN⁺ 2024-01-11 | 1 comentarios | Compartir por WhatsApp
  • Turing Complete es un juego enfocado en la experiencia de resolver problemas por cuenta propia para comprender más a fondo conceptos de ciencias de la computación
  • El aprendizaje comienza con compuertas lógicas y avanza construyendo otras compuertas usando solo compuertas nand
  • Después, al combinar memoria y componentes, se amplían circuitos simples hasta acercarlos a una arquitectura de computadora real
  • La computadora que construye el jugador tiene como objetivo ser Turing complete, es decir, una estructura capaz de calcular algoritmos como una máquina de Turing
  • En el hardware creado por uno mismo se construyen instrucciones en ensamblador y se resuelven rompecabezas de programación basados en código binario

Una forma de aprender ciencias de la computación con un juego

  • Turing Complete es un juego centrado en las ciencias de la computación
  • Está pensado para quienes disfrutan descubrir cómo resolver problemas y de esos momentos en que miran con más profundidad conceptos que creían ya entender
  • Está disponible en Steam como Play Turing Complete

Un recorrido de aprendizaje que va de los circuitos a la arquitectura de computadoras

  • Compuertas lógicas

    • Las compuertas lógicas son los bloques básicos del cálculo
    • Se aprende la base de los circuitos construyendo las demás compuertas a partir de una sola compuerta nand
  • Componentes y memoria

    • Sobre las compuertas lógicas se puede añadir memoria para crear componentes más complejos
    • Al combinar estos elementos, se extienden hasta formar una arquitectura de computadora real
  • Arquitectura

    • La computadora ensamblada por uno mismo busca ser Turing complete
    • Esto se refiere a una computadora capaz de calcular algoritmos como una máquina de Turing
  • Ensamblador

    • La computadora se programa con código binario
    • Se crean instrucciones en ensamblador para simplificar este proceso y resolver rompecabezas de programación en el hardware construido por uno mismo

1 comentarios

 
GN⁺ 2024-01-11
Opiniones de Hacker News
  • Soy una persona simple: cuando veo Turing Complete en HN, dejo un comentario favorable :)
    Lo compré hace unos años y jugué algunos niveles; después dejé que mi hijo, que en ese entonces tenía 14 años, avanzara durante las vacaciones de verano, ayudándolo de vez en cuando. En el último nivel, escribió un programa en el lenguaje tipo ensamblador que enseña el juego para que una computadora que él mismo había construido desde compuertas lógicas atravesara un laberinto aleatorio usando la regla de la mano derecha. Este juego es realmente increíble.
    Mi única queja es que cuando yo tenía esa edad ni siquiera existía algo parecido.
    Me sigo trabando en los niveles donde se introduce la memoria; parece que mi cerebro no asimila bien el concepto de tick siguiente/anterior. Aun así, hay muchas pistas y soluciones completas en línea, así que si hace falta puedes poner la solución y pasar al siguiente nivel.
    El juego en sí estaba casi terminado hace más de un año, y el desarrollador ha estado reimplementándolo por completo para mejorar el rendimiento y permitir construir CPU más complejas, entre otras cosas. Espero que no se rompa nada cuando publique la actualización.
    Muy recomendado.

    • Creo que Rocky's Boots (1982) [0] era un juego parecido a este.
      [0] https://en.wikipedia.org/wiki/Rocky%27s_Boots
    • Me trabé exactamente de la misma forma al diseñar el chip de memoria en NAND to Tetris. Al final tuve que mirar la respuesta para esa parte y, aunque resultó que no estaba tan lejos de la solución, no entendía la sintaxis que hacía que funcionara.
      Lo que yo había hecho era:
      Mux(a=out, b=in, sel=load, out=muxOut)
      DFF(in=muxOut, out=DFFOut)
      La última línea tenía que ser así:
      DFF(in=muxOut, out=DFFOut, out=out)
      De todos modos, Turing Complete parece el complemento perfecto para NAND to Tetris. El problema es que parece venderse solo en Steam; me gustaría poder comprarlo de forma independiente.
    • Me recuerda a TIS-100 y Shenzhen I/O, de Zachtronics.
  • Me encantan los juegos de este género, así que mi colección de juegos relacionados en Steam va creciendo poco a poco. También hay algunos que no están en Steam, como nandgame.
    Turing Complete es de los buenos: la simulación parece estable y, después de la reestructuración del período inicial de acceso anticipado, las misiones también están bastante bien diseñadas.
    Dicho eso, la UI no siempre es fluida, y le falta orientación, así que encaja mejor con alguien que ya haya pasado por procesos similares en otros simuladores.
    Si buscas un juego similar que explique mejor los conceptos, recomiendo Silicon Zeroes. En general se siente un poco menos pulido, pero tiene una estructura narrativa simpática, explica mejor qué intenta introducir cada nivel y, en particular, maneja mucho mejor la resolución de problemas relacionados con el reloj.
    Si disfrutas más la parte tipo ensamblador que la electrónica, recomiendo TIS100 o Shenzhen I/O.
    Si prefieres acertijos bien hechos, puede que Human Resource Machine vaya más con tus gustos.
    Esta noticia sobre Turing Complete también vale la pena: https://steamcommunity.com/app/1444480/eventcomments/3806156...
    Después de un año sin actualizaciones, en agosto de 2023 publicaron algo como “¡perdón, pronto llega una gran actualización nueva!”, y desde entonces volvió el silencio.
    Parece que el desarrollador quedó atrapado en una gran reescritura de escala enorme y está tardando mucho más de lo esperado.
    He estado esperando a que salga de acceso anticipado para volver a jugarlo, pero me preocupa terminar esperando para siempre.

    • Estoy pensando en hacer un juego de computación analógica al estilo Zachtronics. Por ahora estoy creando un simulador de circuitos, pero no sé si realmente será divertido ni si podré encontrar la forma de hacerlo divertido.
      La computación digital tiene la ventaja de la abstracción. No necesitas saber la ley de Ohm para pensar en compuertas lógicas.
      Si pasas a la computación analógica, necesariamente tienes que encontrar una forma de enseñar matemáticas. Las operaciones ya no son booleanas, sino combinaciones de varias ecuaciones eléctricas. Aunque sean matemáticas simples, no tienen la misma vibra que un juego de programación típico.
      Aun así, me pregunto si suena interesante y si valdría la pena jugarlo.
    • Si ya terminaste TIS-100 pero quieres una experiencia de lenguaje ensamblador más tediosa, subí a Steam un juego gratuito de una sola instrucción (subleq), SIC-1.
      https://store.steampowered.com/app/2124440/SIC1/
    • Si eres fan de Zachtronics, también recomiendo Opus Magnum y Exapunks. En Exapunks tienes que aprender un nuevo lenguaje parecido al ensamblador para dar órdenes a agentes robóticos, y me divertí muchísimo.
      Recuerdo haber probado solo los primeros desafíos de Human Resource Machine. Los acertijos me parecieron demasiado fáciles y el proceso de resolverlos tampoco era muy difícil, así que no llegué a las partes finales.
    • En este género, MHRD también es excelente. Lo jugué varias veces. Me alegra saber que hay más juegos similares: https://store.steampowered.com/app/576030/MHRD/
    • Me pregunto si existen juegos similares que enseñen machine learning o deep learning.
  • Justo lo compré recién durante las ofertas de invierno de Steam.
    Es un concepto genial, pero necesita mucho más pulido para convertirse en un buen juego o en una herramienta educativa independiente.
    Está bien para alguien con conocimientos relacionados, pero para principiantes creo que sería una experiencia bastante frustrante: te lanza problemas casi sin orientación, enseñanza ni preparación.
    También me gustaría que hubiera funciones para ayudar con el diseño de circuitos. Si mueves o rotas componentes, se desconectan de los cables y tienes que volver a dibujar cada cable manualmente, uno por uno. Incluso después de descubrir la lógica correcta, hay bastante fricción para implementarla.

    • En uno de los primeros niveles hay un consejo que dice que si haces doble clic en un componente puedes moverlo junto con los cables conectados al componente. Al hacer doble clic, se seleccionan automáticamente no solo el componente, sino también los nodos de cableado conectados. Aun así, la UI todavía tiene margen para mejorar.
  • Este juego me pareció muy divertido, y todavía me divierte. Se disfruta más cuando puedes dedicarle bastante tiempo de una sola vez.
    Como con Factorio, si vuelves después de una pausa larga, muchas veces es más divertido empezar de nuevo que retomar la partida. O simplemente puedes quedarte en el sandbox de la etapa final.
    La UI podría pulirse un poco más, y desde hace algunos años hay en marcha una gran reestructuración de rendimiento que todavía no se ha lanzado. Hoy en día también tiene exportación a Verilog, pero no la he usado en serio.
    Las piezas adicionales que se desbloquean más adelante hacen que el sandbox sea realmente divertido. También hay un sistema de puntuación que agrega un elemento competitivo, pero se desbloquea mucho después de tu primera computadora.
    Jugué mucho este juego antes de decidir, ya en la mediana edad, estudiar una carrera de ciencias de la computación, y gracias a eso los temas básicos de arquitectura me resultaron muy fáciles. También lo recomiendo mucho como repaso entretenido.
    Aquí, “diversión” significa divertirse manipulando lógica booleana en un entorno amable, así que si esa idea no te gusta, este “juego” probablemente tampoco sea para ti.

  • En la empresa también lo usamos de verdad, y lo recomiendo mucho.
    Hace alrededor de un año lo terminé junto con un colega en nuestro tiempo libre y nos encantó. Pensamos que sería perfecto para aprendices de ingeniería eléctrica, porque en el plan de estudios aprenden conceptos de lógica digital como compuertas, registros, registros de desplazamiento y contadores, pero rara vez tienen muchas oportunidades de aplicarlos en proyectos reales.
    Además, por limitaciones de tiempo, contenidos derivados como la programación en ensamblador ya casi no se enseñan bien.
    Con un poco de orientación adicional externa, este juego ayuda muchísimo a motivar a la gente a entender cómo funcionan los componentes de lógica digital y a experimentar con ellos directamente. Es excelente que puedas llegar hasta escribir un lenguaje ensamblador simple y resolver rompecabezas con él, y eso también motiva mucho a los estudiantes.

  • Cuando abrí la página por primera vez, parecía una copia de Digital Logic Sim [1] de Sebastian Lague, pero al ver el video me impresionó que en realidad va mucho más profundo. Así que lo compré. Ojalá tenga tiempo de probarlo pronto.
    1: https://sebastian.itch.io/digital-logic-sim

  • Este juego se puede comparar fácilmente con un semestre de fundamentos de ingeniería en computación, pero se sintió especialmente más divertido gracias al minijuego de ensamblador.
    En la universidad había una tarea para diseñar un conjunto específico de instrucciones para una CPU ficticia y otra para diseñar un circuito específico, pero no eran diseños completos ni funcionales.
    Turing Complete fue divertido porque te permite construir una CPU pequeña completa y crear tu propia arquitectura de conjunto de instrucciones, llevándola tan lejos como quieras.

  • Un juego similar: https://nandgame.com/
    Aunque Turing Complete parece tener más profundidad que nand game.

  • Compré este juego y lo considero una obra de arte.
    No estudié ciencias de la computación, pero llevo unos 15 años trabajando como desarrollador. Muchas de las cosas que contiene el juego las conocía de forma abstracta o las había tocado con placas Arduino, pequeños proyectos paralelos y cosas por el estilo.
    Pero esto es, tal cual, el currículum práctico que la gente a la que le gusta trastear con computadoras venía deseando.

  • Exapunks(https://www.zachtronics.com/exapunks/) también podría interesarte. Me enseñó ensamblador mejor que las clases de la universidad.

    • TIS-100 también fue excelente. De hecho, es más difícil que el ensamblador real.
    • Me pregunto si también probaste Shenzhen I/O.