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/12/06 18:49] peronfilosofia_unix [2021/12/12 02:39] peron
Línea 3: Línea 3:
 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 elaboran 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.+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.
  
-Su sentido práctico se basa fundamentalmente en ofrecer herramientas concebidas para un único propósito. A través de ellas se puede trabajar en comunidadLas aplicaciones están ingeniadas especialmente pensando en su uso cooperativo con otras aplicaciones.+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 > "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
Línea 15: Línea 15:
 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. 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]]+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