Por qué importa el conocimiento profundo de los lenguajes de programación en la era de la IA

Fuentes: Why care about programming languages

En la era de la generación de código asistida por inteligencia artificial, se ha extendido la percepción de que el dominio profundo de los lenguajes de programación ha quedado obsoleto. ¿Para qué invertir años en entender sus matices si una IA puede producir código en cualquier lenguaje bajo demanda? Un desarrollador expuso recientemente esa duda al autor del artículo, Eduardo Bellani, argumentando que preocuparse por los lenguajes resulta inútil. La respuesta que ofrece el texto parte de una tesis central: el valor de un lenguaje de programación no reside en su sintaxis ni en sus herramientas, sino en las ideas que encarna sobre cómo estructurar el pensamiento, gestionar la complejidad y resolver problemas. Estas ideas, sostiene, permanecen vigentes con independencia de quién o qué genere el código. El artículo repasa una selección de conceptos profundos extraídos de distintos lenguajes: el borrow checker de Rust, que obliga a razonar sobre propiedad y tiempos de vida; las typeclasses de Haskell, que ofrecen polimorfismo con principios claros; el sistema de módulos de SML y OCaml, que facilita organizar programas grandes de forma desacoplada; la distinción entre identidad e igualdad en lenguajes orientados a objetos; el álgebra relacional detrás de SQL; la lógica de predicados de primer orden de Prolog; la manipulación de memoria expuesta por arrays y punteros en C; las extensiones sintácticas de Lisp, base de la metaprogrammación; las funciones de orden superior en lenguajes funcionales; los tipos algebraicos de SML, Haskell y otros, que permiten modelar dominios con precisión; las estructuras de datos persistentes e inmutables de Clojure; y la polimorfismo de filas de OCaml, que permite tipado estático en registros extensibles. Cada uno de estos conceptos representa una forma distinta de pensar la computación y amplía el repertorio del programador para abordar problemas. Cuando se comprende el borrow checker, argumenta el texto, se piensa de otra manera sobre la gestión de recursos en cualquier entorno; cuando se interiorizan los tipos algebraicos, se modelan los dominios con más precisión; cuando se manejan funciones de primera clase, se descubren oportunidades de abstracción que otros no ven. Estas ideas trascienden cualquier lenguaje o herramienta concreta y constituyen el fundamento conceptual que permite evaluar el código generado por IA, elegir abstracciones adecuadas y diseñar sistemas que se mantengan mantenibles al crecer. En la era de la IA, concluye el artículo, comprender estos conceptos resulta más relevante que nunca, porque separan a quienes se limitan a pedir prompts de quienes verdaderamente saben construir software.