lunes, 2 de febrero de 2009

FILOSOFIA UNIX

UNIX

En nuestra vida informática, desde que nos adentramos al mundo de los sistemas operativos, hemos podido notar el reluciente nombre de “UNIX”, cosas como: “de ahí se baso el sistema operativo Linux”, “Ellos hablan de la simpleza en los programas”.

Para poder entender a este sistema operativo portable y multiusuario, debemos comprender los motivos por lo cual fue creado, y las bases que le dan sentido a la razón de ser.
Luego de chequear su historia, los programadores: Ken Thompson, Dennis Ritchie deseaban llegar al término de “programa transportable” luego de la creación de Unix se adaptaron a lo el Lenguaje C, el cual es portable y podía resumir milésimas líneas de código Assembler, tomaron la iniciativa para poder crear su sistema operativos en pequeños programas eficientes.

Filosofía UNIX.

Ken Thompson creo originalmente la “Filosofía Unix” para diseñar un sistema operativo, de características pequeñas pero operar el sistema con una interfaz limpia aplicada a servicios. 

Cuando se dio a conocer estos principios, se aclararon muchos aspectos para no tener una idea errónea del sistema.

La filosofía Unix no es un método formal de programación.

  • No utiliza la teoría de la computación para obtener “teóricamente un software perfecto”.
  • Su programación es de “abajo hacia arriba: bottom up”.
  • Es de conocimiento pragmático.
  • 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.

Aparte de las aclaraciones, hay colaboradores a la par de Ken Thompson, los cuales dieron una explicación explicita sobre las condiciones que se cumplen para Unix. Entre ellos tenemos a Doug McIlroy , creador de las Unix pipes(Tuberías de Unix):

  • Hacer que cada programa haga una cosa específica, y que lo haga de manera correcta, es mejor construir algo nuevo, que modificar programas viejos, en los cuales solo se atoran de pequeñas mejoras.
  • Se espera que la salida de cada programa para convertirse en la entrada a otro, esto permite conectar los programas que hacen cosas especificas para tener un mayor control sobre que pudo haber fallado.
  • No dudes en tirar las piezas sin sentido y luego reconstruirlas, esto permite la reusabilidad de código.
  • Utilice las herramientas en lugar de ayudar a trabajadores no calificados para aligerar una tarea de programación, incluso si tiene que desviarse para construir las herramientas y esperar para lanzar algunos de ellos después de que haya terminado de usarlos.
  • Escribir programas para manejar flujos de texto, ya que es una interfaz universal, lo cual permite la conexión con otros programas y poder obtener mejores resultados.
  • Escribir programas que trabajen de manera conjunta.

Todo lo anterior puede resumirse en la siguiente frase:
“Esta es la filosofía Unix: Escribir programas que hacen una cosa y hacerlo bien. Escribir programas para trabajar juntos. Escribir programas para manejar flujos de texto, ya que es una interfaz universal.”

Todos los colabores de Unix se unieron a la creación, también aportaron valores a los principios filosóficos, que luego de mucho tiempo se aplico a la forma de poder programar como en el lenguaje C, dando aspectos que podrían ayudar a programar en base a los principios filosóficos:

  • Regla de Modularidad: Escribe módulos o partes simples conectadas a través de interfaces los cuales comunican a otros programas.
  • Regla de Composición: Diseñar programas que se conectarán a otros programas, una salida del programa es la entrada de otro programa.
  • Imperio de la Robustez: La robustez es el hijo de la transparencia y la simplicidad.
  • Regla del Silencio: Cuando un programa no tiene nada sorprendente que decir, probablemente no tiene nada que decir.
  • Énfasis de la menor sorpresa: en lo que respecta en el diseño de la interfaz, no es necesario sorprender.

Una forma simple de ver la Filosofía UNIX

K.I.S.S. : Keep It Simple, Stupid
Es la manera de simplificada de Unix, en lo cual exige ser efectivos a tener exageradas interfaces notorias. Los puntos más importantes rondan en:

  • Todo lo que puede ser una fuente y destino-debe ser independiente de un filtro.
  • Lo pequeño es hermoso. Escribir programas que hacen lo menos es coherente con la realización del trabajo.

Ciertas invenciones en Unix
Me queda la duda de este video que encontré en youtube, pero ustedes dirán.


Fuentes:

http://www.unix.com/
http://www.geocities.com/v.iniestra/apuntes/unix.html
http://www.faqs.org/docs/artu/index.html
http://es.wikipedia.org/wiki/Unix#Historia
http://www.unix.org/
http://en.wikipedia.org/wiki/KISS_Principle