La programación de coincidencias , a veces denominada "programación aleatoria", es un enfoque del desarrollo de software en el que el programador resuelve un problema de forma iterativa, realizando pequeños cambios ( permutaciones ) y probando cada cambio para ver si se comporta como se desea.
Este enfoque a veces parece atractivo cuando el programador no comprende completamente el código y cree que uno o más pequeños cambios pueden conducir a un código correcto.
Por ejemplo, el siguiente ejemplo de código C (diseñado para buscar y copiar una secuencia de dígitos de una cadena grande) tiene varios problemas:
char * búfer = "123abc" ; char destino [ 10 ]; int i = 0 ; int j = 0 ; intl = strlen ( búfer ) ; mientras ( yo < l ) { if ( es un dígito ( búfer [ i ])) { destino [ j ++ ] = búfer [ i ++ ]; } ++ yo ; } destino [ j ] = '\0' ; printf ( "%s \n " , destino );Pero esto no da el resultado correcto. Para una cadena inicial dada, imprime "13" mientras que el resultado correcto es "123". Un programador que no ve el problema estructural podría saltar en un comando y decir: "Sí, eso es un incremento de uno adicional". Elimina la línea "++i", pero el programa se repite durante la prueba. "Vaya, aumento incorrecto". El comando se vuelve a poner en su lugar y se elimina mediante la variable de incremento posterior i en la línea de arriba:
if ( es un dígito ( búfer [ i ])) { destino [ j ++ ] = búfer [ i ]; }Durante la prueba, el código ahora produce la respuesta correcta, "123". Sin embargo, dado que el programador no se ha molestado en comprender completamente el código, persisten los siguientes problemas:
Si bien la solución será apropiada para un determinado conjunto de entradas, no es correcta para todas esas entradas y los comentarios sobre dicho código persistirán con el tiempo.