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


Acciones

Information

20 responses

4 02 2009
ppedrodom

Me parece muy interesante el inicio y el fin del post, ya que agregas tu punto de vista al tema. Los principios los desarrollaste pobremente, pudiendo extenderte mas en los mismos, como por ejemplo en el principio «claridad mejor que complejidad’, en que situación concreta pudieses aplicar este principio?.

4 02 2009
G10

>ppedrodom: Voy a iniciar diciendo que para este caso claridad al parecer la toman como una mezcla entre la misma claridad y la facildad, pues la contraponen a la complejidad. El mejor ejemplo que se me ocurre para la aplicación de este principio, son los mismos sistemas Unix, porque con relación al principio de Guarda los datos en archivos de texto plano, es lo más fácil y rápido de hacer, dandonos oportunidad de conocer su funcionamiento (del sistema) y la claridad para tener una idea de como y porque suceden las cosas cuando el sistema esta en funcionamiento, cosa que no seria posible si los datos estuvieran guardados/almacenados de una manera compleja como por ejemplo en documentos ilegibles.

4 02 2009
Joeljamh

Buen post ya que se ve que si investigaste sobre el tema ademas englosas todo lo que es la filosofia UNIX en fraces fundamentales donde encapsulan los conceptos claves que hacen que el conocimiento cresca. Los enfoques utilizados por las personas a las cuales haces referencia, nos dan ideas por las cuales hemos decidido ser desarrolladores de soluciones y sobre todo si vamos a hacer algo hay que hacerlo «bien» y eso nos hara diferentes y sobre todo alcanceremos la excelencia.

4 02 2009
Incoming

Pues se puede ver que esto de la filosofía nos ayuda a entender que son varios programas que interactúan entre si para poder trabajar bien y tener una mejor administracion de los recursos.

4 02 2009
Erick Orrego

Muy bueno el post, me gustó mucho que agregaste otros puntos que no encontré en otros posts, eso quiere decir que investigaste un poco mas :D… saludos!

4 02 2009
alex perex (alex negro)

Estuvo algo interesante tu bolg, y asi como dijo pedro, empezaste algo pobre, pero le diste seguimiento al desarrolo del tema, no cambiaste el estilo de la escritura, otra cosa, al principio Unix fue dividido en dos partes, o puntos de vista, La primera parte está formado por programas y servicios que han hecho del sistema UNIX Popular, y la otra es en si el sistema operativo la cual corren los programas de la primera parte.

4 02 2009
Masi Raymundo

Me parece muy interesante de que su filosofia sea mantener las cosas simples pero funcionales, es decir, una aplicacion enorme y compleja que no cumpla con sus objetivos de eficiencia y eficacia no sirve para nada. Es una buena filosofia a optar ya que nosotros vamos para profecionales. Investigaste muy bien, me gusto mucho.

4 02 2009
jorge el curioso

Pues a mi me parecio muy interesante, tambien recalco la opinión que das sobre los derivados o descendientes del Unix original, que se han desviado de sus principios. Aqui me gustaría observar que en ese tiempo la tecnología era otra, y por lo tanto, aunque la consola sea más eficiente, no quiere decir que sea más comoda en estos tiempos, en los que el diseño visual y el desarrollo rápido y automatizado andan de moda.

Con respeto a los principios en si, no creo que haya más que agregar, en lo cual difiero de pedrodoom. Claridad mejor que complejidad creo que no tiene espacio para otra interpretación más que para «claridad mejor que complejidad». Es un principio hoy muy de moda para programar: KIS. Keep It Simple! y no, no necesita explicación (porque hacerlo lo volvería complejo XD).

Muy aparte es como lo utilice o lo implemente cada quien, además de que tambien depende de la situación, por lo que no se podría dar un escenario preciso de donde utilizarla, lo que se refleja en tu respuesta: «voy a iniciar diciendo que para este caso claridad al parecer la toman …» ahí esta el detalle. Depende! Y quizá por eso mismo es que como decis, los descendientes del Unix se hayan desviado un poco de los principios originales, porque cada quien lo aplico a su manera … y por cierto, Microsoft tambien tenía su propio Unix … ahahaha… que habra pasado con eso??

Buen post, algo geek, pero de ahuevo…

Saludos

4 02 2009
You Jen

Justo en el punto, creo que con tus propios puntos de vista agregaste informacion vital, con la informacion investigada tambien me agrada que este a grandes rasgos, porque tambien mucho texto lo desanima a uno, y ademas los puntos son sencillos y faciles de captar.

5 02 2009
Jorge Luis Arroyo

este tema tiene mucha importancia en nuestra carrera, ya que resume la forma ideal o el pensamiento que cada programador deberia tener al momento de comenzar un proyecto de este tipo, y en realidad es muy simple, todo lo que se programa debe ser facil de comprender, y debe tener una tarea especifica, sin tanto relleno, ya que solo lo hace mas lento, ademas, por lo menos en mi caso, el uso de archivos planos ha sido pan de cada dia, en los proyectos de la U como en el ambito laborar y asi cada uno de los puntos citados en este post, deben ser tomados en cuenta para la vida…

5 02 2009
Alexander Lemus

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, esta filosofia es muy cierta, ya que existen muchos programas que no toman en cuanta la eficiencia ni la portabilidad y solo son gasto de memoria, o mal funcionamiento que al momento de desechalas no dejan igual el sistema operativo anfitrion, mientras que si se hacen programas peque;os, portatiles y que sean capaces de interactuar de una manera natural, se estaria avanzando mucho en la tecnologia, lo que a mi parecer debe implementarse, son standares mas definidos en este ambito para que sea mas facil acomplar nuevos modulos a programas ya existentes

5 02 2009
Jorge Luis Arroyo Perez

en realidad esta filosofia tiene muchisima razon, en nuestros proyectos siempre prentendemos hacer maravillas, sin tomar en cuenta la simplicidad que esta debe tener, y aunque en realidad esta en decadencia, ya que muchos sistemas operativos que antes se basaban en ello, siempre hay otros que dan la cara por ello…

5 02 2009
b3@

Me gustó como describiste en tu post de que trata la filosofía, la parte de crear cosas funcionales y sencillas me trajo a la mente MOSCOW (most, should, could y would) aunque esto no es de SO sino de AyD, creo que se relacionan un poco ya que nos dice que no importa que solamente se realice el 20% del proyecto, pero que éste cumpla con el 80% de la funcionalidad del mismo, esto me lleva de vuelta a… sencillez, pero funcionalidad… le diste muy buena redaccion al post

5 02 2009
GerSoftWare

Interesante, ya que abarcás un punto de vista distinto, más orientado a la parte de la construcción y las características del software. Como te referiste a la parte de simplicidad, portabilidad y eficiencia, bien caería en este punto la eterna pero sana rivalidad entre los entornos de escritorio de GNU/Linux, cada uno con sus particularidades, ventajas y desventajas: por ejemplo, se habla bastante de que KDE es un entorno demasiado recargado (en cuanto a los elementos que se muestran en pantalla) y que consume muchos recursos en comparación con entornos como GNOME, Xfce u otros (he tenido la oportunidad de probar Xfce en lo personal me parece bastante ligero y funcional).

Siguiendo este contexto, podríamos seguir para largo con otros tipos de aplicaciones de software.

Muy buena publicación G10.

Saludos.

12 02 2009
G10

Muchas gracias a todos por sus comentarios, ojala y haya sido de su agrado esta entrada.

13 02 2009
tuxtor

Este parece que es un post de la clase del Pedro xD

13 02 2009
G10

@tuxtor: Simon… como que conoces sus mañas.
jajaja

14 02 2009
Victor Orozco (tuxtor) - 200512079

@G10: de que otra forma podriamos ver a patojo hablando bien de UNIX, si dicen que hasta obliga a sus pupilos a usar un C++ no estandar :@

11 06 2011
La filosofía UNIX « - BrainStormOverride -

[…] Leído en el Blog de G10 […]

7 06 2012
miguel angel ulloa

esta muy buena esta parte de este blog sobre la filasofia de unix esta de muy importancia sobre todos la parte cientifica que abarca lo mas importante!

Deja un comentario