El colapso de la “Mente de Von Neumann”

Recientemente terminé de leer dos artículos fundamentales de Pablo E. Martínez López (a.k.a. “Fidel”): ‘Programar es mucho más que solamente secuenciar comandos’, **** y ‘Reflexiones sobre la naturaleza de la Computación**’ (**uno de ellos, con varios otros autores). En estos trabajos, los autores clarifican cómo la esencia del cómputo es, en realidad, previa a la existencia de las máquinas y critican la visión limitada de la programación como una simple sucesión de instrucciones. La lectura de ambos textos me inspiró a reflexionar sobre una crisis silenciosa que atraviesa nuestra industria: el estancamiento en un pensamiento puramente secuencial — la ‘Mente de Von Neumann’ — en un mundo que ya es profundamente semántico.
Pensamiento Operacional vs. Denotacional
Históricamente, hemos caído en una trampa conceptual. Como bien señala Martínez López citando a Dijkstra, confundir las Ciencias de la Computación con el estudio de las máquinas es como referirse a la cirugía como la “Ciencia de los Bisturíes”. La industria del software ha persistido en esta visión, construyendo una disciplina entera sobre el acto de “secuenciar comandos” para una máquina física (aunque ahora sean virtuales), e ignorando que el verdadero objeto de estudio son los procedimientos mecánicos para resolver problemas, independientemente de quién o qué los ejecute.
Pero es notable que estamos viviendo el colapso de este paradigma. La “Mente de Von Neumann” — aquella que ve el software como una lista de instrucciones mecánicas — ya no es suficiente para la complejidad que enfrentamos hoy. Si bien seguimos programando como si estuviéramos moviendo palancas en un tablero físico, el software moderno es demasiado complejo para el razonamiento secuencial:
- Concurrencia y Distribución: en un sistema distribuido, el “paso a paso” es una mentira. No hay un reloj único. Solo puedes razonar sobre el sistema si entiendes qué representa el dato y qué propiedades se mantienen (denotación), no en qué orden exacto llegan los paquetes.
- La deuda técnica del “efecto”: la mayoría de los bugs en producción son efectos colaterales no deseados. La industria está empezando a notar que es más caro arreglar un estado mutado accidentalmente que utilizar heramientas más abstractas (que muchas provienen de Semántica Denotacional).
GenAI: El fin del “Picacódigo”
La llegada de la Inteligencia Artificial Generativa ha acelerado este colapso. Hoy, una máquina puede generar secuencias de comandos a una velocidad que ningún humano puede igualar. Pero aquí reside el riesgo: estos sistemas basados en aprendizaje automático no expresan las reglas de transformación de forma explícita, sino mediante parámetros internos ajustados automáticamente que resultan opacos para la comprensión humana. En otras palabras, si dejamos que las IAs generen código (el cómo), estamos delegando la secuencia de comandos a una “caja negra” probabilística.
El mayor problema en este caso es que no podemos verificar grandes volúmenes de líneas de código imperativo generado por una IA para asegurar que es correcto, completo y seguro. Y desde hace décadas sabemos que la única forma de garantizar este tipo de cuestiones sobre código producido por máquinas es mediante Métodos Formales. Dicho de otro modo, en este caso necesitamos que la IA nos entregue una prueba de que su código “denota” cierta la función F, y que F cumple con cierto contrato o propiedades deseables.
No obstante, si seguimos viendo el software como una simple secuencia de comandos, seremos incapaces de verificar el código producido por la IA. No podemos simplemente “parchar” o “editar” líneas de una caja negra. Y este es el punto en el que creo que la industria va a saltar al paradigma denotacional. No por amor a la matemática, sino por pánico a la IA incontrolada.
El Giro Denotacional: Los Programas son Descripciones Computables
No va a ser una revolución donde todos escriban sus programas en lenguajes como Haskell de la noche a la mañana. Va a ser una “toma de rehenes” por parte de los compiladores y mecanismos de chequeo estático:
- Lenguajes Híbridos: Ya lo vemos en Rust, Swift o incluso el moderno C#. Se están volviendo “funcionales por defecto” en su manejo de datos.
- Infraestructura como Código (IaC): Herramientas como Terraform o Kubernetes son puramente denotacionales (describen el “estado deseado”, no los comandos para llegar allí). El desarrollador ya está haciendo denotación sin saberlo.
- Tipado Dependiente: Probablamente necesitemos que el tipo de una función sea su especificación completa.
Estas herramientas, por mencionar algunas, no son nuevas, e involucran volver a las raíces teóricas de la computación si queremos entenderlas en profundidad. Y de este modo, un programa no se piensa como una receta para el procesador, sino una descripción de la solución en un lenguaje preciso y formal.
Un Llamado a la Ingeniería de Cómputo
La industria va a cambiar, pero lo va a llamar de otra forma. Lo llamarán “Seguridad”, “Escalabilidad” o “Soberanía de Datos”. Pero en el fondo, será la victoria de la Semántica sobre la Ejecución.
Estamos pasando de ser “recetarios de cocina” a ser “arquitectos de invariantes”. El problema es que muchos programadores todavía creen que su trabajo es pelar papas, cuando en realidad deberían estar diseñando el concepto de “nutrición”.
Si queremos sobrevivir y prosperar en la era de la GenAI, debemos dejar de ser “secuenciadores” para convertirnos en arquitectos de modelos universales. Debemos adoptar métodos que nos permitan razonar sobre lo que el código es (su denotación) y no solo sobre lo que el código hace (su ejecución).
La potencia de una máquina de hoy es, en términos de capacidad de cómputo, igual a la de hace cien años; solo es más rápida. Lo que realmente ha evolucionado — y lo que debe seguir evolucionando — es nuestra capacidad para expresar soluciones complejas de forma robusta, mantenible y, sobre todo, humana.
Es hora de dejar de mirar el bisturí y empezar a preocuparnos por la salud del sistema. El futuro del software no se escribirá línea por línea; se describirá modelo a modelo.
El fin de la artesanía es el inicio de la Ciencia y la Ingeniería
En última instancia, el colapso de la “Mente de Von Neumann” no representa el fin de la programación, sino su mayoría de edad. Durante décadas, nos conformamos con ser traductores de baja fidelidad entre la necesidad humana y el pulso del silicio, atrapados en la microgestión de registros y punteros, u objetos y variables, o servicios y registros de bases de datos, que en esencia son lo mismo. Hoy, la IA generativa ha venido a reclamar ese rol de traductor, recordándonos que si nuestra única propuesta de valor es “picar” secuencias de comandos, sean cuales fueren los efectos que éstos produzcan, ya somos obsoletos.
El cambio hacia lo denotacional no es un lujo académico; es el único camino para no perder las riendas de un mundo digital que ya no cabe en una ejecución paso a paso. La victoria de la Semántica sobre la Ejecución significa que dejaremos de ser esclavos del “cómo” para convertirnos en maestros del “qué”.
Como bien nos advierte Martínez López, la computación siempre fue algo más que máquinas. Es la arquitectura de la lógica, el diseño de invariantes y la búsqueda de la verdad formal en un mar de datos.
Si el futuro del software va a ser escrito por máquinas, nuestra responsabilidad es ser los autores de las leyes que rigen a esas máquinas. Es hora de soltar el bisturí, levantar la mirada del monitor y empezar a diseñar, de una vez por todas, la salud del sistema. Porque en la era de la inteligencia artificial, el programador que solo sabe sumar líneas es un artesano del pasado; pero el que sabe describir mundos es el ingeniero del futuro.
El código ya no es el destino. El código es solo el rastro que deja el pensamiento.
Publicado también en Medium