Desde que comencé en GNU/Linux, sobre el 2002, siempre se ha resaltado la filosofía con la que se fundamentó el sistema al que "copia", que es Unix.

La filosofía Unix se basa en algunos apartados básicos que todo buen informático debería de emplear en sus desarrollos, ya sea a nivel de sistemas o gestión. El uso de estas directivas, asegura que el trabajo, cuanto más pase el tiempo, más llevadero será.

Las directivas son, básicamente:

  • Escribe programas que hagan una sola cosa y la hagan bien: esto quiere decir que los programas deben de ser lo más atómicos posible y que se compruebe mucho su rendimiento y funcionamiento para hacerlo lo mejor posible.
  • Escribe programas que trabajen juntos: de nada sirve escribir programas que sirvan para una tarea específica y cuando esa tarea se modifique haya que reescribir todo el programa. Es mejor dividir el problema en varios programas y después desechar o reescribir solo uno de esos pequeños programas, cuando se necesite, o incluso hacer nuevos para completar.
  • Escribe programas que manejen flujos de texto, pues esa es la interfaz universal: todo lo que se hace con entrada y salida en formato texto es más fácil de enlazar con otros programas, así como reutilizarla en el pasado, presente y futuro.

En estos conceptos se basa la mayoría de software libre que existe, por lo que servidores como sendmail o postfix, se basan en pequeños servidores y/o programas que hacen partes de todo un proceso y, mediante sus ficheros de configuración, se pueden enlazar de una u otra forma, así como usar otros programas y/o servidores en lugar de los que vienen por defecto y, así, extender su funcionalidad.

Mike Gancarz escribió sobre la filosofía Unix unos puntos un poco más elaborados:

  • Lo pequeño es hermoso.
  • Haz que cada programa haga una sola cosa, pero que la haga bien.
  • Construye un prototipo lo antes posible.
  • Elige portabilidad sobre eficiencia.
  • Guarda los datos en archivos de texto plano.
  • Aprovecha funcionalidades del software.
  • Usa scripts de shell para aumentar la funcionalidad y portabilidad.
  • Evita interfaces de usuario captivas.
  • Haz de cada programa un filtro.

Esto no quiere decir que lo realizado sobre interfaces gráficas sea malo, o no respete estas premisas, puesto que muchas de estas interfaces hacen uso de programas que sí respetan al máximo estas premisas y que, favoreciendo la penúltima directiva escrita por Mike, permiten ver los comandos que ejecutan, junto con todos los argumentos.

Concluyendo, pensemos que el trabajo que se realiza día a día, no solo ese software que programamos por amor al arte, debe de sernos de utilidad, no solo en el momento en que nos lo piden para solucionar un problema dado, sino como caja de herramientas para la solución de miles de problemas que se deban de resolver en un futuro, quizás no muy lejano :-)

Vía: La filosofía UNIX