El artículo "Prolog Coding Horror" de Markus Trisha examina los principales errores que cometemos los programadores Prolog, identificando cuatro "horrores" fundamentales que debemos evitar. El primero es perder soluciones: usar constructos impuros como !/0, (->)/2 y var/1 puede hacer que nuestro programa deixe de reportar soluciones válidas, lo cual es especialmente grave porque no podemos recoveringlas de otra manera. El segundo horror es el estado global: modificar la base de datos con assertz/1 y retract/1 introduce dependencias implícitas que rompen la declaratividad. El tercer horror es la salida impura: imprimir directamente en la terminal en lugar de usar el toplevel impide razonar sobre los resultados y escribe pruebas difíciles. El cuarto horror es usar constructos de bajo nivel como (is)/2 en vez de restricciones modernas como CLP(FD). El artículo demuestra estos problemas con horror_factorial, que usa !/0 y produce solo una solución, mientras que n_factorial versión pura con restricciones genera todas las soluciones esperadas. La recomendación final es stays en el subconjunto puro y monotónico de Prolog, usando estructuras de datos clean, restricciones como dif/2 y meta-predicados como if_/3 para escribir código más general, mantenible y fácil de debuggear.
Los cuatro horrores que todo programador Prolog debe evitar
Fuentes:
Prolog Coding Horror
