Entendiendo como aplicar el principio de la Navaja de Ockham en la informática

Hace poco, en plena clase respondí a un alumno diciendo: «acordate de la navaja de Ockham». Mi alumno -sorprendido- me respondió: «¿El qué?!?». La primera vez que escuché sobre el Principio de la navaja de Ockham, fue en 1996, durante una clase de 5to. año de Economía (o Contabilidad, ya no recuerdo bien como se llamaba la materia en 5to. año) de la profesora Cristina Romussi, en la escuela secundaria Joaquín V. González de Barracas (aquí en Argentina).

El principio de la vaja de Ockham -muy conocido en el ámbito económico y científico-, se aplica también a la informática (muchos de ustedes, ya deben conocerlo).

Este principio, básicamente se basa en que:

Ante dos o más explicaciones a un mismo hecho, la explicación más simple suele ser la más probable, pero no necesariamente verdadera.

En el ámbito de la Ingeniería de Software, la Navaja de Ockham se ve reflejada en el principio KISS (Keep it short and simple u originalmente, Keep it simple, stupid! pero este último, me desagrada. Pues no considero necesario insultar a alguien para explicar este principio).

Llevado a un enfoque más acercado a la administración de sistemas, el principio KISS también puede ser aplicado. Sin embargo, considero mucho simple de aplicar al mismísimo original principio de la Navaja de Ockham.

Muchas veces se lo explicas a alguien e inmediatamente te responde con un «Wow! ¡Qué bueno!» y sin embargo, continúa su vida sin aplicarlo. ¿No lo aplica por ser una persona testaruda? No. No lo aplica por desconocer la forma de implementarlo.

Y, para aprender a implementar este principio, nada mejor que un ejemplo:

Problema: Se debe contar la cantidad de apariciones de la palabra foo en el archivo .bar

Soluciones posibles:

#Opción #1:
grep foo .bar | wc -l

#Opción #2:
cat .bar | grep foo | wc -l

#Opción #3:
grep -c foo .bar

A primera vista ¿cuál es la solución más simple? Sin dudarlo, la número 3.

Y ¿cómo se llega a deducir que es la más probable? La respuesta está en el «qué se necesita». Si lo que necesito es «contar apariciones», el comando grep es el destinado a buscar dichas apariciones, mientras que wc con el argumento -l, está destinado a contar las líneas de un archivo. La más probable entonces, sigue siendo la más simple: la opción #3, porque grep ha sido pensado para satisfacer dicho objetivo. Entonces, la opción #3 podría ser la forma correcta.

Ahora, se debe tener en cuenta, que la simplicidad y probabilidad parten de una base ineludible: los conocimientos de quien debe hallar la solución.

Para encontrar una solución correcta, deben existir al menos dos alternativas.

Imagina que solo conoces las dos primeras opciones pero que desconoces la tercera:

#Opción #1:
grep foo .bar | wc -l

#Opción #2:
cat .bar | grep foo | wc -l

¿Cuál sería aquí la más simple? A primera vista, la opción #1. Y la convierte en más probable frente a la opción #2, el mismo principio que aplicamos anteriormente: el «qué necesito». Si lo que necesito es contar la cantidad de apariciones significa que no necesito «imprimir con cat» el archivo.

Pues solo requiero leerlo y para ello, existe grep. Frente a estas dos alternativas, la solución más correcta sería la opción #1. Sin embargo, el hecho de que el comando wc con el argumento -l esté destinado a contar las líneas en un archivo, DEBE hacerte suponer que si bien es la más correcta entre TUS opciones, aún debe existir una forma mucho más acertada. Si se dispone de tiempo, esa forma debería ser investigada. Y a esto se refiere el principio de la Navaja de Ockham cuando dictamina que no necesariamente será la verdadera.

2 ideas sobre “Entendiendo como aplicar el principio de la Navaja de Ockham en la informática”

Los comentarios están cerrados.

Sentimos molestarte con lo de las Cookies, pero es por imperativo legal. Puedes ver aquí la Política de Cookies, si continúas navegando te informo que la estás aceptando ;)    Ver
Privacidad