domingo, noviembre 21, 2004

Potencia

Los números, esos conceptos abstractos que son portables, escalan fenomenalmente y cuando se estrujan unos con otros de alguna determinada manera pueden dar la potencia que les pidamos... tienen todo lo que un lenguaje de programación podría desear, todo menos naturalidad humana.

Si bien un programa puede hacerse correctamente, con una precondición, una postcondición y una derivación para obtener un resultado más que demostrado, los seres humanos nos guiamos por algo tan burdo y soez como la prueba y el error para completar una tarea así... para poder avanzar... En definitiva, convertir algo que podria ser una perfecta rama matemática en algo que dependa de la experiencia para tomar una rama asintótica hacia la perfección en el desarrollo.

Imaginémonos que ese paso del algoritmo a la computación se pudiese hacer naturalmente desde esos conceptos abstractos que determina el primero hasta lo efectivo, gracias a la creación del ser humano, de lo segundo. Significaría que el lenguaje utilizado para transformarlo es equivalente al lenguaje que utiliza el propio universo para funcionar. ¿No os habéis planteado alguna vez si de verdad estamos dentro de una máquina? O dicho de otro modo ¿Puede un programa de un computador hecho por nosotros darse cuenta de que existen unas normas que rige su funcionamiento?

Sería asombroso que un programilla se diese cuenta que si modifica ese salto que viene en 3 instrucciones podría realizar cosas que nunca ha hecho, porque su vida está dentro de un bucle que es dificil que tenga fin ya que se da una condición muy poco probable, o incluso un bucle infinito. De la misma forma, nosotros podriamos ver que si un determinado factor de código del universo se modificase, quiza la tierra dejaria de dar vueltas alrededor del sol para navegar en algun rumbo interesante, en vez de dar vueltas esperando a que algun evento rompa esta armonía.

El tema es ¿sería el lenguaje utilizado tan potente como para permitir eso? ¡Para eso y mucho más!

La función de Ackermann se define recursivamente:
A(m,n) =
= n + 1 <- m = 0
= A(m-1, 1) <- m>0 y n=0
= A(m-1, A(m, n-1)) <- m>0 y n>0

Con esta simpleza se define un monstruo capaz de fagotizar al propio Universo en tan solo un par de pasadas: A(4,2) es más grande que el número de partículas del Universo elevado a 200. A(5,2) no lo podríamos escribir en este Universo, no cabría fisicamente. Esto da que pensar sobre esa posibilidad de que las normas estaban antes que el Universo. No me imagino el desarrollo de un ente y que internamente tenga algo más grande que él mismo.

Al igual que el programilla le bastaría un salvar a esa determinada posición del salto para romper el bucle, nosotros podriamos introducir una modificación en los parámetros actuales para conseguir escapar, de la orbita, del ciclo, del dia a dia...

Sin embargo el pequeño programilla tiene un enorme problema. Nada de lo que le da vida le permite hacer eso, y aunque lo consiguiese hacer, con el más minimo error que tuviese, todo eso que le da la vida se la quitaría. ¿Será nuestro final de los tiempos una violación de segmento?