martes, 29 de enero de 2013

Principio de la navaja de Ockham


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).


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:


  1. Opción #1: grep foo .bar | wc -l
  2. Opción #2: cat .bar | grep foo | wc -l
  3. 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:


  1. Opción #1: grep foo .bar | wc -l
  2. 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.

No hay comentarios:

Publicar un comentario