filosofia_unix

Diferencias

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

Enlace a la vista de comparación

Próxima revisión
Revisión previa
Próxima revisiónAmbos lados, revisión siguiente
filosofia_unix [2021/07/18 20:55] – creado 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 y generar bases de infraestructura computada sobre la que pudiese trabajarse en comunidad.+Su sentido práctico se basa fundamentalmente en ofrecer herramientas simples y 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. 
 + 
 +> "Lo que queríamos preservar no era sólo un buen entorno para programar, sino 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 conmutadores, sino 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 estructuras de datos", "formatos de archivos binarios"
 + 
 +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