filosofia_unix

¡Esta es una revisión vieja del documento!


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.

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 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 comunidad. Sabíamos por propia experiencia que la esencia del cómputo comunal en función del acceso remoto a sistemas de tiempo compartido no implica únicamente escribir programas desde una 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 y 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 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.

Conceptos de McIrloy

  1. Regla de Modularidad: Escribir partes simples conectadas por interfaces limpias.
  2. Regla de Claridad: Claridad es mejor que inteligencia.
  3. Regla de Composición: Diseña programas que se conecten con otros programas.
  4. Regla de Separación: separa políticas de mecanismos, interfases de motores.
  5. Reglas de Simplicidad: diseña buscando simplicidad, agrega complejidad sólo cuando debas hacerlo.
  6. Regla de parsimonia: Escribe programas grandes sólo cuando es claro por demostración que nada mas podrá resolverlo.
  7. Regla de Transparencia: diseña para visibilidad, para hacer el depurado y la inspección muy fácil.
  8. regla de Robustez. Robustez es la unión de transparencia y simplicidad.
  9. Regla de Representación: Divide el conocimiento en datos, de modo que la lógica del programa pueda ser estúpida y robusta.
  10. Regla de la menor sorpresa: Al diseñar interfases, siempre haz lo menos sorprendente.
  11. Regla de Silencio: Cuando el programa no tiene nada que decir, que no diga nada.
  12. Regla de Reparación. Cuando falle, que falle ruidosamente y tan rápido como sea posible.
  13. Regla de Economía: Tiempo de programación es cado, ahorrala en preferencia al tiempo de procesamiento.
  14. Regla de generación: Evita hacking a mano; escribe programas que escriban programas.
  15. Regla de optimización: Prototipea antes de pulir. Haz que funcine antes de optimizarlo.
  16. Regla de Diversidad: Desconfía de “la única manera verdadera”.
  17. 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.1639276621.txt.gz
  • Última modificación: 2021/12/12 02:37
  • por peron