Las propiedades son la brújula del programador ✛ ✎

Original: "Accurate Programming: Thinking about programs in terms of properties"
arXiv:1109.0786 · 2011-09-05 · arXiv non-exclusive · análisis propio · 1 min
Un programa se puede verificar no con ejemplos, sino con reglas que siempre se cumplen.

El programador observa la función max, que devuelve el mayor de dos números. ¿Cómo asegurarse de que funciona? Se pueden escribir pruebas: max(2,3)=3, max(5,5)=5. Pero ¿y si en algún lugar profundo del código hay un error que solo se manifieste con el número 65536? En lugar de adivinar, se puede formular una regla: «el resultado nunca es menor que cada uno de los argumentos». Esa es una propiedad: debe ser cierta para cualquier entrada.

La biblioteca ScalaCheck genera automáticamente cientos de números aleatorios, los introduce en la propiedad y avisa si la regla se incumple. Así funcionan las propiedades como una brújula: no comprueban una única ruta, sino que marcan una dirección válida para cualquier camino. Por ejemplo, para la función sum (suma de una lista de números), la propiedad «si se añade un número positivo, la suma crece» detecta el error de desbordamiento que las pruebas normales no ven.

Las propiedades se pueden afinar, como se ajusta una brújula. Primero decimos: «el resultado es no negativo», pero esa regla la cumple incluso una función que siempre devuelve cero. Añadimos: «para una lista de un solo elemento, el resultado es 1», y el cero queda descartado. Paso a paso, las propiedades convergen hacia el único programa correcto.

La programación precisa consiste en que el desarrollador piense el código a través de sus propiedades. En lugar de hundirse en la niebla de la complejidad, sostiene una brújula de reglas verificables automáticamente. Esto hace que los programas sean más fiables y que modificarlos sea más seguro.

El nombre de la biblioteca ScalaCheck alude a la idea de verificación automática de propiedades, no a una 'comprobación de Scala'; es una herramienta para verificar propiedades en Scala.

En la serie 'Westworld', el comportamiento de los robots está determinado por reglas complejas, pero su corrección no está garantizada. La programación precisa podría ayudar a formular y verificar propiedades de comportamiento, previniendo fallos inesperados.

Científicos
Erwin SchrödingerHugh Everett IIIMax BornAlbert EinsteinJohn von NeumannAugustin-Louis Cauchy
Conceptos
exactitud automatización optimización precisión diagnóstica procesamiento del lenguaje natural tiempo real algoritmo cuántico diseño de fármacos código abierto convergencia aprendizaje automático simulación por computadora reconocimiento del habla medicina personalizada inteligencia artificial robótica cálculo clasificación solución exacta precisión