filosofia_unix

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
Próxima revisiónAmbos lados, revisión siguiente
filosofia_unix [2021/08/03 14:46] peronfilosofia_unix [2021/12/12 02:39] peron
Línea 1: Línea 1:
-====== Filosofía UNIX ======+====== Filosofía Unix ======
  
 +Es una filosofía de programación orientada a buscar un entorno de trabajo interdependiente, en el cual se elaboran pequeñas aplicaciones capaces de operar en conjunto con otras.
  
-Es una filosofía de programación orientada a buscar un entorno de trabajo interdependiente, en el cual se realicen pequeñas aplicaciones capaces de operar en conjunto con otras.+Fomenta el **concepto estético minimalista** según lo cual "lo simple es hermoso", e intenta transportarlo al arte de la programación y al diseño de sistemas de cómputo.
  
-Es fundamental para ofrecer herramientas pensadas para programar generar bases de infraestructura computada sobre la que pudiese trabajarse en comunidad.+Su sentido práctico se basa fundamentalmente en ofrecer herramientas simples transparentes creadas para un único propósito. Estas características implican robustez para trabajar en comunidad, ya que Las aplicaciones están pensadas especialmente pensando en su uso cooperativo con otras aplicaciones.
  
-Entre los conceptos se encuentra el de "todo es un archivo""procesos cooperativos", "fronteras internas", "atributos de fichero y estructuras de datos""formatos de archivos binarios".+"Lo que queríamos preservar no era sólo un buen entorno para programarsino mas bien un sistema alrededor del cual pudiese formarse una [[pubnix|comunidad]]. Sabíamos por propia experiencia que la esencia del cómputo comunal en función del acceso remoto a [[tiempo de cómputo compartido|sistemas  de tiempo compartido]] no implica únicamente escribir programas desde una [[terminal de computadora|terminal]] en lugar de utilizar conmutadoressino asegurar una comunicación cercana"Dennis Ritchie
  
-"Lo que queríamos preservar no era sólo un buen entorno para programarsino un sistema alrededor del cual se pudiese formar una [[pubnix|comunidad]]. Sabíamos por propia experiencia que la esencia del cómputo comunal en función del acceso remoto a [[tiempo de cómputo compartido|sistemas  a tiempo compartido]] no implica únicamente escribir programas en una [[terminal de computadora|terminal]] en lugar de utilizar conmutadoressino que implica asegurar una comunicación cercana"Dennis Ritchie+Entre los preceptos filosóficos Unix se encuentra el de "todo es un archivo""procesos cooperativos", "fronteras internas", "atributos de fichero y estructuras de datos""formatos de archivos binarios".
  
-Mas adelante se agregó el concepto [[cliente]]-[[servidor]]+Al contar con un punto de vista resultadista, se privilegia el intercambio de cadenas de texto simple, ya que se la considera una interfaz universal y de fácil transformación y procesamiento.  
 + 
 +El concepto de "caños" o //pipes// en Unix ha sido una mecánica de trabajo altamente influyente. Permite llevar a cabo a nivel [[interpretes_de_comandos|intérprete de comandos]] un trabajo cooperativo entre distintas aplicaciones. En la práctica esto permite utilizar el caracter **|** para encaminar los resultados de texto de un programa (//salida//) y oficiarlas como objeto (//entrada//) a otro. De esta manera se pueden estructurar nuevos trabajos de manera creativa. 
 + 
 +Mas adelante se agregó el concepto [[cliente]]-[[servidor]]
 + 
 +==== Reglas de Diseño de programación UNIX ==== 
 + 
 +Consisten en algunas reglas técnicas concernientes a la elaboración de programas en sistemas similares a Unix. 
 + 
 +  - **Regla de Modularidad**: Escribir partes simples conectadas por interfaces limpias. 
 +  - **Regla de Claridad**: Claridad es mejor que inteligencia. 
 +  - **Regla de Composición**: Diseña programas que se conecten con otros programas. 
 +  - **Regla de Separación**: separa políticas de mecanismos, interfases de motores. 
 +  - **Reglas de Simplicidad**: diseña buscando simplicidad, agrega complejidad sólo cuando debas hacerlo. 
 +  - **Regla de parsimonia**: Escribe programas grandes sólo cuando es claro por demostración que nada mas podrá resolverlo. 
 +  - **Regla de Transparencia**: diseña para visibilidad, para hacer el depurado y la inspección muy fácil. 
 +  - **regla de Robustez**. Robustez es la unión de transparencia y simplicidad. 
 +  - **Regla de Representación**: Divide el conocimiento en datos, de modo que la lógica del programa pueda ser estúpida y robusta. 
 +  - **Regla de la menor sorpresa**: Al diseñar interfases, siempre haz lo menos sorprendente. 
 +  - **Regla de Silencio**: Cuando el programa no tiene nada que decir, que no diga nada. 
 +  - **Regla de Reparación**. Cuando falle, que falle ruidosamente y tan rápido como sea posible. 
 +  - **Regla de Economía**: Tiempo de programación es cado, ahorrala en preferencia al tiempo de procesamiento. 
 +  - **Regla de generación**: Evita hacking a mano; escribe programas que escriban programas. 
 +  - **Regla de optimización**: Prototipea antes de pulir. Haz que funcine antes de optimizarlo. 
 +  - **Regla de Diversidad**: Desconfía de "la única manera verdadera"
 +  - **Regla de extensibilidad**: Diseña para el futuro, pero será más pronto que lo pensado. 
 + 
 +> "Cuando estés en duda, emplea la fuerza bruta". Ken Thomson.
  • filosofia_unix.txt
  • Última modificación: 2022/03/28 16:29
  • por peron