Por @Alvy — 4 de diciembre de 2018

MarbleComplete

MarbleComplete es un poco difícil de explicar y resumir, pero básicamente podríamos decir es código para construir y simular circuitos de carreras de canicas con dibujos en código ASCII que tienen la propiedad de ser un sistema Turing completo.

Según he podido ver la idea se inspira en el artículo Marble Runs and Turing Machines y una presentación en una conferencia sobre el tema de Neil Bickford.

Si el MarbleComplete que ha desarrollado en Python Aaron Janse y publicado en Github te suena un poco a chino, descompongámoslo, que resulta mucho más comprensible:

  • Los circuitos de carreras de canicas seguro que los conoces porque circulan en vídeos y son a cual más emocionante o interesante. Normalmente se construyen con piezas de madera, aunque también sirve la arena de playa o cualquier otro invento estilo máquina de Rube Goldberg. La fuerza de la gravedad es la que proporciona el movimiento. En los más ingeniosos, según las canicas llegan a las intersecciones y mecanismos pueden tomar unos u otros caminos, dependiendo de cómo se diseñen. Hay quien ha conseguido que cuenten en binario, realicen sumas y otras tareas sencillas.
  • Los circuitos de canicas se pueden dibujar en forma de gráficos de arte ASCII. Los ASCII son los caracteres básicos «de antes de los emojis», básicamente letras, números, rayas y signos de puntuación, que reemplazan –con un poco de imaginación, eso sí– a canales, bifurcaciones y cruces. Por ejemplo en MarbleComplete la «o» simboliza la canica y las barras verticales «|», horizontales «–» y diagonales «/» y «\» dibujan los caminos. Luego la cosa se complica con conmutadores, que son flechas que cambian de dirección cuando las canicas pasan sobre ellos, puertas que se abren y cierran y un sistema de Entrada/Salida (IO) para leer y escribir datos en una especie de «papel/memoria».
  • Finalmente, los sistemas Turing completo son un concepto de la teoría de la computación que define aquellos sistemas que pueden emular a una máquina de Turing universal (que es aquella «capaz de hacer cualquier cálculo», al menos en teoría). Simplificándolo mucho, podríamos decir que los ordenadores convencionales –pero también algunos «ordenadores raros» como los que se pueden construir con el Juego de la Vida, el juego Little Big Planet o Minecraft– son sistemas Turing completos, de modo que podrían emular a cualquier otra máquina de Turing universal, y viceversa. Como PowerPoint o Windows también son en sí sistemas Turing completos, podrías (en teoría, porque en la práctica sería muy lento) calcular una hoja Excel en Windows dentro de un mundo de Minecraft… Y gracias a este «invento» también ahora con un circuito de canicas dibujado con en caracteres ASCII.

Práctico no será, pero mola un montón.

Turing Blocks

En el artículo de Bickford se explica cómo construir los esquemas básicos en Mathematica y algo sobre la relación del Juego de la vida y el Castor afanoso como sistemas Turing completos en relación con estos circuitos de canicas.

Según sus cálculos, un circuito relativamente sencillo para emular un procesador convencional de un portátil con 4 GB de RAM requeriría –debido a las limitaciones físicas– un circuito de carreras de canicas de un tamaño equivalente a la quinta parte del diámetro del Sol (!) y realizaría una operación cada 3 años, a la lentísima velocidad de 0,00000000388 Hz. Pero la propia masa del circuito generaría su propia gravedad, por lo que las canicas quizá se quedaran pegadas y no llegaran a «bajar». Pero como bien dice el autor «lo importante es que al ser Turing completo podría calcular cualquier cosa». Dándole tiempo, claro.

Compartir en Flipboard Publicar / Tuitear Publicar