Filosofía Unix

4 02 2009

Unix

Unix

Unix es un Sistema Operativo (SO) multitarea, portable y multi usuario, en un principio fue desarrollado en los laboratorios Bell de AT&T, razón por la cual fue concebido como un sistema en el que las cosas se tenían que realizar de manera eficiente, fácil, eficaz y lo más rapidamente posible, para aprovechar los recursos limitados existentes para su época y responder a las necesidades de cómputo que exige un laboratorio científico.

Con lo anterior expuesto, podemos entonces definir de lo que trata la Filosofía Unix.

Filosofía Unix

Es un conjunto de “pensamientos” o proposiciones que alguien podria catalogar como reglas, las que son aplicables al desarrollo de software en el ámbito Unix, se basa en la experiencia, simplicidad, reinvención y rapidez en el desarrollo. Estos son un conjunto de enunciados simples y básicos de ideas que se traducen en características que poseen los diferentes programas que corren en Unix, bueno a almenos con esa ideología se creó la filosofía Unix.

La Filosofía UNIX supone crear programas rápidos, simples, con poca intervención por parte del usuario, o en caso de necesitarla, esta se produzca al principìo o lo más mínima posible. Esta se acopla perfectamente a las necesidades de computación de los laboratorios cientificos, puesto que Unix fue originalmente desarrollado en uno de estos.

A continuación algunas premisas:

  • Que cada programa realice unicamente la tarea para la que fue creado y la haga bien.

  • Para llevar a cabo una nueva tarea escribe un programa nuevo. No compliques uno viejo añadiendo nueva funcionalidad.

  • Escribe tu programa teniendo en cuenta que su salida probablemente sea la entrada de otro programa.

  • Guarda los datos en archivos de texto plano. Si necesitas seguridad, confía en los permisos.

  • Usa nombres cortos y en minúscula.

  • En la manera de lo posible haz que el usuario suministre los datos por línea de comandos en la llamada.

  • Haz partes simples conectadas mediante interfaces limpias y bien definidas.

  • Céntrate en los datos.

  • Claridad mejor que complejidad. La solución más simple es frecuentemente la mejor.

  • Portabilidad mejor que eficiencia.

  • Piensa en paralelo. Hay otros procesos en el mundo, incluso instancias de tu mismo programa funcionando al mismo tiempo.

  • Hacer programas grandes, solo cuando se demuestre que no se puede realizar con uno pequeño.

  • Si no hay nada interesante que decir, que el programa mejor no diga nada.

  • Para cada problema existen múltiples soluciones.

  • Diseña pensando en el futuro (esta cercano). Esto nos ofrece compatibilidad y mayor tiempo de utilización.

  • Programa de abajo hacia arriba y de conocimiento pragmático.

  • Progama basado en el conocimiento Empírico o Experiencia.

  • No se encuentra en los métodos y las normas oficiales, sino en el medio-reflexivo implícito, el conocimiento.

En resumidas cuentas la filosofía Unix se puede describir como bien lo dice Doug Mcllroy:

“Escribe programas que hagan una cosa y la hagan bien, que trabajen en armonía con otros y que manejen flujos de texto, pues esta es una interfaz universal.” – Doug Mcllroy

La cual por lo general se abrevia a “Haz una cosa, hazla bien”.

Cabe mencionar que con el paso del tiempo (y estoy de acuerdo en eso) esta filosofía ha ido en decadencia en varios descendientes de Unix, esta filosfia se ha perdido y han apostado mas por la interacción visual con el usuario, un mal manejo de recursos y mas clicks antes que el uso de una consola. Aunque claro, estas afirmaciones son bastante cuestionables, pues es sabido que han sido uno de los medios por los cuales los sistemas basados en Unix (y por tanto en su filosofía) han podido abarcar mas mercado en la actualidad.

“Aquellos que no pueden entender UNIX, estan condenados a reinventarlo, pobremente.”

Henry Spencer, 1987

Imágen vista en:

drunix.net

Otros enlaces:

elsitiodetelecomunicaciones

thefuckingshit

wikipedia, Unix

Anuncios