En la actualidad, la inteligencia artificial y los modelos de lenguaje extenso (LLMs) han generado un interés desmedido respecto a su capacidad para reemplazar tareas humanas complejas, incluyendo la programación de software. Sin embargo, una lectura atenta y fundamentada en la obra clásica de Peter Naur, "Programming as Theory Building", revela por qué esta perspectiva resulta, al menos por ahora, una ilusión. La programación no es simplemente la producción de código, sino un proceso intelectual profundo que implica construir y mantener una teoría acerca de cómo funciona un programa, algo que los LLMs aún no pueden lograr. La reflexión central de Naur se basa en una idea filosófica del concepto de "teoría" extraída del filósofo Gilbert Ryle, el cual explicita la diferencia entre poseer un conocimiento operativo y simplemente tener acceso a la información escrita. Ryle usa una analogía clara: quien construye un camino sabe el arduo trabajo que implicó hacerlo, mientras que caminar por ese camino es una actividad completamente distinta.
De manera semejante, construir una teoría es un proceso activo, lleno de decisiones, pruebas, ajustes y comprensión profunda, mientras que usar o leer esa teoría es solo reproducir o trasladar el conocimiento ya desarrollado. En el contexto de la programación, esto quiere decir que el programador no solo lee o produce código sino que encarna una teoría viviente del programa. Esta teoría no es un documento ni un fragmento de código, sino el acervo de conocimientos, explicaciones y razones que sustentan cada línea, módulo o arquitectura. Es lo que permite anticipar cómo cambios afectarán el sistema, discutir su diseño críticamente, responder a problemas en tiempo real y evolucionarlo según las necesidades cambiantes. Los LLMs, por otro lado, funcionan al procesar grandes corpus de información, aprendiendo patrones estadísticos del lenguaje y produciendo texto que simula el entendimiento.
Pueden generar fragmentos de código aparentemente bien estructurados y hasta explicar conceptos superficiales, pero no poseen una teoría auténtica. Su conocimiento es un producto de correlaciones aprendidas, no de una experiencia activa y razonada. No han trabajado con el software ni lo han construido; simplemente han viajado por una amplia base textual. En consecuencia, carecen de la sabiduría necesaria para entender el porqué detrás del código, las alternativas consideradas durante el desarrollo, o cómo manejar su evolución o corrección más allá de patrones formulados. Asimismo, creer que la programación se reduce a la producción de texto es un malentendido que permea muchas discusiones actuales.
Por supuesto, el código es el artefacto visible y tangible del trabajo, pero más allá de esto está el proceso mental de modelar un problema, concebir soluciones, anticipar comportamientos y formalizar ideas en instrucciones precisas. Este proceso es lo que hace que la programación sea una tarea humana compleja y creativa. Cuando se piensa en grandes programas, la necesidad de tener una teoría compacta y viva es aún más evidente. Naur señala que la adaptación, modificación y corrección en programas grandes solo pueden realizarse efectivamente si existe un equipo de programadores que están íntimamente ligados a la teoría subyacente al software, y que mantienen ese conocimiento activo con la continuidad necesaria. Sin esa teoría compartida, el software se vuelve opaco e inmanejable, un simple conjunto de instrucciones sin alma.
Por lo tanto, la idea de que los LLMs puedan reemplazar a los programadores humanos implica que estos modelos puedan construir o poseer teorías operativas de los programas, cosa que hasta ahora es imposible. Ellos pueden replicar patrones y dar la apariencia de que entienden, pero carecen de la esencia del conocimiento vivencial y explícito. El hecho de que estas máquinas produzcan código no significa que programen en sentido real, solo generan texto que parece código. Esto no es para negar el valor de las inteligencias artificiales en la programación, ya que pueden ser herramientas útiles para asistir, agilizar ciertas tareas repetitivas o generar código ejemplo, pero deben considerarse más como ayudas que como sustitutos. La tarea rica y compleja de diseñar sistemas, entender requerimientos cambiantes, integrar múltiples criterios y aprender de errores sigue siendo dominio natural de la mente humana.
Además, esta distinción crítica evita caer en una visión ingenua y tecnocrática que reduzca la programación a mera producción textual industrial. Tal concepción desestima el profundo conocimiento, colaboración y experiencia que constituye el desarrollo de software significativo y sostenible. Es fundamental también reflexionar sobre lo que implican las capacidades de aprendizaje, o "entrenamiento", que poseen los LLMs. Estos modelos no "trabajan" en los programas como lo hace un humano, no enfrentan problemas de diseño, no toman decisiones conscientes ni asumen responsabilidades epistemológicas. Su proceso es pasivo, acumulativo, y basado en datos, no en comprensión o creatividad genuina.
En suma, la enseñanza de Peter Naur nos invita a reconocer la programación como un proceso intelectual que involucra la construcción de teorías vivas y dinámicas que solo pueden surgir de la experiencia activa, la interacción continua y la reflexión profunda de programadores humanos. Cualquier visión que pretenda remplazar esta riqueza con modelos estadísticos sin conciencia ni comprensión sería, a lo mucho, una ilusión tecnológica pasajera. Entender esta diferencia es crucial para el futuro de la informática y del desarrollo de software, evitando falsas expectativas y fomentando una integración más madura y productiva entre humanos y máquinas. Mientras la inteligencia artificial continúa su avance, es imprescindible mantener presente que la verdadera programación es un arte y una ciencia humana, arraigada en el conocimiento y la teoría, y que por ello mismo está muy lejos de ser completamente reemplazada.