Indicar técnicas de testing a agentes de IA no mejora la calidad del código

Un experimento reciente evaluó si indicar a los agentes de codificación que utilizasen técnicas concretas de pruebas o verificación —como desarrollo dirigido por pruebas (TDD), métodos formales, fuzzing o pruebas basadas en propiedades— mejoraba la corrección de sus implementaciones. La prueba reuti

Las dos caras de la abstracción en diseño de sistemas: ocultar o reducir

En ingeniería de software se utiliza la palabra "abstracción" para designar dos prácticas muy distintas que suelen confundirse. Un análisis publicado por el blog técnico Muratbuffalo distingue entre la abstracción de modularidad, herencia de la carrera de ciencias de la computación, y la abstracción

Las especificaciones formales no existen para la mayoría del software

Artículo explicativo sobre por qué los métodos formales de verificación no pueden aplicarse de forma generalizada al software actual. El autor parte de una hipótesis central: una vez que se dispone de una especificación formal de calidad, verificar un sistema resulta costoso pero no difícil; el verd

Reexaminando los argumentos contra la verificación formal, 50 años después

El artículo repasa los argumentos del clásico paper de 1979 'Social Processes and Proofs of Theorems and Programs', que sostenía que la verificación formal de programas estaba abocada al fracaso, y los contrasta con la situación actual. En 1979, los autores defendían que las demostraciones matemátic

Por qué los métodos formales siguen sin usarse en la industria del software

Los métodos formales —herramientas matemáticas para especificar y verificar software— apenas se utilizan fuera de nichos académicos y de alta seguridad. Un análisis extenso repasa las razones históricas y estructurales de esta baja adopción y propone una mirada más matizada que los tópicos habituale

Por qué Rocq es más adecuado que Lean para verificación de programas

En un artículo técnico extenso, un investigador especializado en verificación formal argumenta por qué Rocq sigue siendo, en su práctica diaria, una herramienta más adecuada que Lean para la verificación de programas, aunque concede que Lean ha ganado tracción en la formalización de matemáticas, sob

Contraejemplos en sistemas de tipos: una colección de casos sutiles

Counterexamples in Type Systems es una obra de referencia compilada por Stephen Dolan —con colaboraciones reconocidas de Andrej Bauer, Leo White y Jeremy Yallop— que reúne treinta y un contraejemplos cuidadosamente seleccionados para ilustrar los puntos delicados, las trampas y las excepciones de lo

Culturas del software: cinco enfoques para entender la programación

El libro 'Cultures of Programming', del investigador Tomáš Petříček, propone analizar la historia de la programación a través de cinco culturas entrelazadas: matemática, hacker, ingenieril, de gestión y humanista. Cada una define una mirada distinta sobre el software: como objeto matemático demostra

PICK: validación humana de especificaciones generadas por IA

El auge de la IA generativa en programación exige métodos formales que garanticen que los sistemas automáticos produzcan las soluciones realmente deseadas. Esos métodos requieren especificaciones matemáticas, un terreno que la mayoría de programadores domina peor que el código. Investigadores del bl

Verus: Nueva herramienta verifica código Rust

Investigadores han presentado Verus, una nueva herramienta diseñada para verificar la corrección del código escrito en Rust. El objetivo principal es asegurar la funcionalidad completa de código de sistemas de bajo nivel, basándose en principios de lenguajes de verificación existentes como Dafny, Bo

Fallece Tony Hoare: Legado de un pionero de la informática

Este artículo conmemora la vida y obra de Tony Hoare, un pionero de la informática, fallecido recientemente a los 92 años. Hoare no solo fue un académico brillante, sino también un programador y gerente con experiencia en la industria, lo que influyó en su enfoque práctico y elegante de la resolució

Software: Simplifican la gestión de dependencias

El manejo de dependencias en el desarrollo de software es un problema omnipresente. Cada lenguaje de programación y sistema operativo tiene su propio gestor de paquetes (como `npm` para JavaScript, `pip` para Python, `apt` para Debian/Ubuntu, etc.), cada uno con sus propias reglas y peculiaridades p