La IA escribe código cada vez más rápido, pero ¿cómo podemos demostrar que realmente es fiable?

Los LLM ya pueden generar funciones rápidamente, crear proyectos e incluso llevar a cabo refactorizaciones complejas del código.

Pero siempre persiste un problema: que el código parezca razonable y funcione no significa que sea correcto en todos los casos.

Este es también un riesgo que suele pasar desapercibido en la programación con IA.

Que una función supere las pruebas solo demuestra que se comporta correctamente con las entradas que ya se han probado. Los errores de verdad pueden esconderse en entradas excepcionales, casos límite y combinaciones complejas de estados.

Entonces, ¿cómo se puede aumentar aún más la fiabilidad?

Una vía importante es la verificación formal (Formal Verification).

No consiste simplemente en escribir más pruebas, sino en expresar las propiedades que debe cumplir un programa mediante especificaciones matemáticas rigurosas y, después, usar razonamiento lógico o herramientas de verificación para demostrar que el programa satisface esos requisitos dentro de las condiciones y el alcance especificados.

La diferencia entre ambas se puede entender así:

* Pruebas: comprueban si hay problemas en los escenarios seleccionados.
* Verificación formal: intenta ofrecer una demostración rigurosa de la corrección respecto de propiedades definidas con claridad.

Por supuesto, la verificación formal tampoco es infalible. Las demostraciones solo son válidas para las especificaciones, los supuestos y el alcance de verificación definidos. Si los requisitos tienen problemas o el modelo de verificación no contempla el entorno real, aún pueden quedar riesgos.

En el futuro, un flujo de trabajo ideal para los agentes de programación debería permitir que la IA genere código y que, después, herramientas de verificación automatizadas comprueben sus propiedades clave, para que los problemas detectados se corrijan y se vuelvan a verificar.

Esto es especialmente importante en los sistemas financieros, los compiladores, los sistemas operativos y el software crítico para la seguridad, donde el coste de un error puede ser muy elevado.

La IA se encarga de acelerar el desarrollo; los mecanismos de verificación, de garantizar la corrección. Una programación con IA verdaderamente fiable no debería limitarse a mostrar lo rápido que escribe código, sino también explicar por qué merece nuestra confianza.