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


20 comentarios:

Anónimo dijo...

Pues muy buen post este, muy interensante la filosofía de Unix, y también en el video podemos apreciar que es un sistema bastante simple como su misma filosofía lo indica, también se sabe que es uno de los sistemas operativos más seguros que hay, muy buen sistema, seguro, simple, estable y portable, y esas son unas de muchas caracteristicas que tiene, buen post este.

yylex dijo...

lo relevante o mejor dicho esencial del Unix es sexy es la parte de...

finger; gasp; mount;
fsck; more; yes;
gasp; umount;

y lo demás es puro adorno o más bien, por necesidad :o :S :d jajaja

ta bueno el post, seguiré leyendo tu blog...

saludos

yylex dijo...

btw, ya me dieron ganas de pizza, sólo carita da ese cuate, voy a hacer mi propio programa jajajaja

Unknown dijo...

Me parce un excelente blog, muy ameno y completo. Me gusto sobre todo la variedad de tópicos con los que se toca el tema y las imágenes, sobre todo los acrónimos, muy interesante, me gustó bastante. Ojalá pongás otro. Orale

Billy Munoz dijo...

como desis la filosofia unix no es un metodo formal de programacion en si , pero se enfoca en la simplicidad que es uno de sus principios básicos. y es interesante como de una filosofia pudo ayudar a muchas personas a crear SO. Basados en esta filosofia, y que ahora en la actulidad esta impulsando dia a dia a crear mejores programas.

Eliabd dijo...

Buen post, me gusta eso de "algo que solo haga una cosa", ya teniendo en monton solo los agrupamos y formamos un programa. Estas ideas concuerdan mucho con los estudios de analisis y diseño de software, esa parte de modularidad es muy aplicable porque se hacen los programas individuales con entradas y salidas definidas y asi las salidas de un programa se vuelven entradas de otros, y asi se logra facilitar la intregracion de los modulos.

Unknown dijo...

Me gusta mucho el post, y como se enfoco a la filosofia de Unix y me gusto mucho eso de "Lo pequeño es hermoso. Escribir programas que hacen lo menos es coherente con la realización del trabajo." ya que de que sirve tener una super interfaz si no sirve como Windowws Vista que es todo disque muy bonito "" y que no sirve, la verdad yo no he utilizado Unix pero si linux y es uno de los mejores por no decir lo mejor asi que lo que dice aqui para mi es muuuuuuy relevante y es un muy buen resumen de la filosofia y no es tedioso.

Anónimo dijo...

Claro y al grano, me gustó lo que escribiste, una pequeña definición sin extenderte demasiado.
Me parece relevante y muy simple (valga la redundancia) lo de K.I.S.S., mantener todo tan simple como se pueda, eso nos da rapidez en el desarrollo, y facilidad en el entendimiento global.

Anónimo dijo...

Un post muy interesante, me pareció muy acertado poner lo de los valores que le dieron a los principios. Te falto explicar en que parte de Unix podemos ver reflejados al menos un principio.

Incoming dijo...

Buen contenido, me llama mucho la atención lo del concepto de KISS puesto que si realmente hay sistemas operativos (uno en específico) que trae un montos de cosas que realmente no sirven para nada, que mejor que tener tu sistema operativo y realmente acoplarlo a tus necesidades y de esta manera tener una mejor administración de recursos.

Erick dijo...

Felicidades por tu post, no tengo ninguna duda al respecto. Con lo del video, si es cierto, inclusive hay sistemas en Estados Unidos para ordenar pizza por la televisión, no me extrañaría que se pudiera hacer desde linux, saludos!

TheAlex dijo...

Buen tema este de la filosofia de Unix, y los conceptos que mencionas, como KISS y el video estan de acuerdo al tema tratado.

otra cosa, me he dado cuenta que este tema (filosofia de Unix)mencionarlo, unicamente es el inicio a una historia que fundamenta mejoras en el diseño de programas o modulos, que son aplicables en metodologias de desarrollo de SW.

Williams Castillo dijo...

Cada vez que se lee algo con respecto a buenas practicas de programacion se aprende algo nuevo, la filosofia me gusta mucho, y el trabajo en este blog tambien, buen resumen

Masi dijo...

Muy bien resumido el tema, conciso y completo. Me parece muy bonitos los ejemplos graficos para dar a entender tu punto de vista. Es hasta cierto punto increible que una filosofia se haya convertido en algo tan grande que unio a muchos programadores alrededor del mundo para dar origen a este S.O.

Unknown dijo...

buen post, la verdad que desde el principio de la carrera, hemos comido mucho de los sistemas operativos de codigo abierto, pero hay mucha informacion que pasamos por alto, y solo nos enfocamos en realizar nuestros proyectos y dejamos a un lado los conceptos basicos, gracias por el post

Pablo Paniagua dijo...

Al igual que lo he hecho en otros blogs, pues te comento que yo agregaria diferencias con otros sistemas (windows, mac, etc), y tambien ventajas y desventajas, especificaciones tecnicas del kernel, etc.

MaRio_Cass dijo...

Buen post. Me intereso mucho la parte de:

“Escribir programas que hacen una cosa y hacerlo bien. Escribir programas para trabajar juntos."

De esto salen 2 conceptos muy importantes SIMPLICIDAD y COMUNICACION, que a mi criterio, es la clave para desarrollar y/o entender no solo Programas sino tambien Sistemas.

Anónimo dijo...

Un post muy informativo :) lo que me pareció mas interesante fue:
'No utiliza la teoría de la computación para obtener “teóricamente un software perfecto”'
teoricamente un software perfecto..., considerando el código abierto, al tomar esto que posteaste, tiene aun más sentido el hecho de poder modificar el código, para hacerle mejoras al mismo y agregarle cosas que en su momento se requieran. En cuanto el video, solo puedo decir que le dió un buen toque a el post =)

Anónimo dijo...

Buenísimo lo de la parte del video, el contenido de igual forma, solo tengo una duda, en que momento surgen las filosofías Unix? o mejor dicho en que año se dan a conocer y en que momento se aplicaron?

Anónimo dijo...

Il semble que vous soyez un expert dans ce domaine, vos remarques sont tres interessantes, merci.

- Daniel