¿y cómo se sabe que van a aparecer 0´s indefinidamente o en algún momento van a dejar de aparecer y en vez de un número no computable es un número con muchos ceros? Además, necesitaríamos memoria infinita. Si nuestro cerebro funciona como un ordenador, evidentemente no podemos reconocer todos los números no computables, pero sí algunos de ellos. O si queréis ser un poco más explicitos, como sabe un ordenador que la constante de Chaytin no es computable, por ejemplo?
El ordenador no sabe más que lo que se le programa. Los lenguajes utilizados, como C, Python, etc.., son programas sobre los que a la vez se programa; por decirlo en lenguaje “moderno”, son una aplicación, lenguajes de alto nivel.
El ordenador, por dentro, funciona en el lenguaje de nivel más bajo, a base de unas celdillas que se cargan o no se cargan eléctricamente dando lugar a números binarios. El centro de operaciones es la “pila de máquina” y es donde se almacenan los valores de los registros (en forma de número binario). El registro principal, que se llama acumulador, va cargando y descargando bits para “contar”. Para los cálculos existen unos indicadores llamados “flags”; uno de estos “flags” es el indicador de arrastre, que hace algo así como llevar la cuenta de las “llevadas” al sumar y al hacer todo tipo de operaciones. Cuando hay un desbordamiento, el indicador de arrastre pasa de valer cero a 1 y el resultado de la operación se guarda en el acumulador mediante una orden “push” (“meter dato”); esta es la mecánica básica que usa el ordenador para calcular un número. Si no hay “sitio” para guardar nada, puede provocar o bien un bloqueo (en el que la pantalla se queda estática y del que sólo se puede salir desenchufando y volviendo a empezar) o unos “jumps” (saltos) encadenados de forma que los registros se cargan y descargan cíclicamente sin fin; salvo corte de fluido eléctrico, que es la única manera de recuperar el control. Y esto (según el programa que estemos haciendo y en qué dirección de memoria acabe) a veces se puede ver como una sucesión de filas de ceros pasando por la pantalla (en “scroll”); personalmente lo vi muchas veces cuando intenté programar alguna cosa en código máquina con el Spectrum.
Un bucle infinito es eso, y nunca llega a ser infinito porque alguna vez alguien desconectará el ordenador, pero, si no, sí sería infinito.
En cuanto a la constante de Chaitin, por lo leí hace mucho, es imposible que sea generada entera por un programa porque el programa tendría que ser prácticamente infinitamente largo, así que, supongo, llega un momento en el que el ordenador no puede sacar más decimales debido a que al programa no le “caben”, no ya al ordenador; pero no me acuerdo bien y no he vuelto a leer sobre el tema. Lo que es seguro es que ante esa situación el programa no sabe nada; se puede quedar colgado o puede parar y devolver el control siempre y cuando se haya programado para eso.