Revisión bibliográfica: El Arte de Programar en

Anuncio
LinuxFocus article number 313
http://linuxfocus.org
Revisión bibliográfica: El Arte de
Programar en Unix.
Abstract:
La presente revisión bibliográfica tratará de mostrar una perspectiva
clara y concisa de los temas centrales del libro que para la fecha en la que se
lee esto, debe estar listo para su venta.
by Edgar Hernández
Zúñiga.
<edgar(en)linuxfocus.org>
About the author:
AquÃ- deberÃ-a escribir un
poco de mi pero no hay
tiempo para ello.
La revisión se basó en la versión 0.87 del libro, ejemplar previo a la
publicación que se me hizo llegar para evaluarlo antes de su publicación,
en el transcurso de la realización de este artÃ-culo me di cuenta de que la
amplitud del tema que trata, aunado a la calidad de la manera en la que lo
hace, quizá merecerÃ-a un artÃ-culo más para continuar exponiendo
ampliamente las caracterÃ-sticas del libro, espero que sea asÃ-.
TÃ-tulo
El Arte de Programar en UNIX.
revisado:
TÃ-tulo original: The Art of UNIX Programming.
Autor(es):
Eric S. Raymond.
Thompson, Kernighan, McIlroy, Arnold, Bellovin, Korn,
Colaboraciones:
Gettys, Packard, Lesk, Feldman, McKusick, Spencer.
Páginas:
550 en esta versión.
_________________ _________________ _________________
Introducción
Eric S. Raymond, conocido por todos por La Catedral y El Bazar, realiza un trabajo excepcional. Este libro
será publicado en breve pero puede encontrarse en lÃ-nea y es, de hecho, con base en esa gran recopilación
1/6
de información basada en horas y horas de investigación y procesos que se nos permite tener una visión
general de muchas de las tecnologÃ-as y elementos que conforman a los sistemas Unix y a algunos de sus
derivados, por la que se ha conseguido llevar a la imprenta este libro.
El trabajo de Eric S. Raymond se ve apoyado de gran manera por la colaboración de grandes nombres, entre
ellos Ken Thompson, Brian Kernighan y Dennis Ritchie; curiosamente son el primero y último de quienes
acepta haber recibido la motivación para realizar este trabajo.
El libro se encuentra dividido en cuatro partes esenciales:
• Contexto
• Diseño
• Implementación
• Comunidad
Cada una de estas partes contiene diversos temas que van desde Conceptos básicos de la filosofÃ-a Unix
perteneciente al Contexto, hasta Mejores prácticas para trabajar con desarrolladores de Código Abierto,
pasando por conceptos de Modularidad, Diseño de protocolos para aplicaciones, Transparencia,
Minilenguajes y Complejidad en Diseño y Lenguajes y Herramientas en la parte que corresponde a la
Implementación. Además de todo esto, cada vez que se hace necesario se muestra un ejemplo práctico
que permite al lector incrementar la compresión de la lectura.
Muy a mi pesar, ya que disfruto más de hacer una revisión profunda de los libros que solamente citar el
contenido y dar una breve opinión, pero teniendo en cuenta que para los lectores pueda ser útil, añadÃ- el
Ã-ndice general del libro. Nuestro siguiente artÃ-culo será de un análisis más profundo del libro.
Tabla de contenido
I. CONTEXTO.
1. FilosofÃ-a.
¿Cultura? ¿Qué cultura?
La durabilidad de Unix.
El caso en contra del aprendizaje de la cultura Unix.
Qué está mal en Unix.
Qué está bien en Unix.
Conceptos básicos de la filosofÃ-a Unix.
La filosofÃ-a Unix en una lección.
Aplicando la filosofÃ-a Unix.
La actitud también cuenta.
2. Historia.
OrÃ-genes e historia de Unix, 1969−1995.
OrÃ-genes e historia de los hackers, 1961−1995.
El movimiento de Código Abierto: 1998 en adelante.
Las lecciones de historia Unix.
3. Contrastes.
2/6
Elementos de estilo del sistema operativo.
Comparaciones de sistemas operativos.
Qué hay alrededor.
II. DISEÑO.
4. Modularidad.
Encapsulación y tamaño óptimo de los módulos.
Compactación y ortogonalidad.
Bibliotecas.
Unix y los lenguajes orientados a objetos.
Codificación para la modularidad.
5. Textualidad.
La importancia de ser textual.
Metaformatos para archivos de datos.
Diseño de protocolos de aplicación.
Metaformatos de protocolo de aplicación.
6. Transparencia.
Algunos casos de estudio.
Diseñando para la transparencia y el descubrimiento.
Diseñando para la sustentabilidad.
7. Programación múltiple.
Control de separación de la complejidad para ajustar el rendimiento.
TaxonomÃ-a de los métodos IPC en Unix.
Problemas y metódos a evitar.
Procesos de particionamiento a nivel diseño.
8. Minilenguajes.
TaxonomÃ-a de los lenguajes.
Aplicando minilenguajes.
Diseñando minilenguajes.
9. Transformación.
Programación de control de datos.
Generando código ad−hoc.
10. Configuración.
¿Qué deberÃ-a ser configurable?
Dónde están las configuraciones.
Archivos de control de arranque.
Variables de ambiente.
Opciones de la interfaz de comandos.
Cómo escoger entre los métodos de configuración.
Al romper estás reglas.
11. Interfaces.
Aplicación de la regla: La menor sorpresa.
Historia del diseño de la interfaz Unix.
3/6
Evaluando diseños de interfaz.
Compensaciones entre CLI y las interfaces visuales.
Transparencia, expresividad, y configurabilidad.
Patrones de diseño de la interfaz Unix.
Aplicando los patrones de diseño de la interfaz Unix.
El navegador web como front end universal.
El silencio es de oro.
12. Optimización.
No solamente hagas algo, ¡manténlo!.
Medir antes de optimizar.
Lo no adecuado es considerado dañino.
Rendimiento de procesamiento contra latencia.
13. Complejidad.
Hablando de complejidad.
Una historia de cinco editores..
El tamaño indicado para un editor.
El tamaño indicado del software.
III. IMPLEMENTACIÓN.
14. Lenguajes.
Cornucopia de lenguajes Unix.
C, ¿por qué no?
Lenguajes interpretados y estrategias mixtas.
Evaluaciones de lenguajes.
Tendencias para el futuro.
Escogiendo un conjunto de herramientas para X.
15. Herramientas.
Un sistema operativo amistoso con el desarrollador.
Escogiendo un editor.
Generadores de código para propósitos especiales.
Usando make en otras partes además de C/C++.
Sistemas de control de versiones.
Depuración durante el tiempo de ejecución.
Perfilar.
Emacs como front end universal.
16. Reuso.
La historia de J. Random Newbie.
Transparencia como llave del reuso.
Del reuso al Código Abierto.
Las mejores cosas de la vida son abiertas.
¿En dónde debo mirar?.
¿Cuáles son los temas en el uso de software de Código Abierto?
Temas de licenciamiento.
IV. COMUNIDAD.
4/6
17. Portabilidad.
Cornucopia de lenguajes Unix.
Evolución de C.
Estándares Unix.
Especificaciones como DNA, código comp RNA.
Programando para la Portabilidad.
Internacionalización.
Portabilidad, estándares abiertos y Código Abierto.
18. Documentación.
Conceptos de documentación.
El estilo Unix.
El zoológico de los formatos de documentación Unix.
El caos actual y las posibles opciones.
La herramienta DocBook.
Cómo escribir documentación Unix.
19. Código Abierto.
Unix y Código Abierto.
Mejores prácticas para trabajar con desarrolladores de Código Abierto.
La lógica de las licencias: Cómo escoger una.
Porqué debes usar una licencia estándar.
Variedades en el licenciamiento de Código Abierto.
20. A futuro.
Esencia y accidente en la tradición Unix.
Problemas en el diseño de Unix.
Problemas en el ambiente de Unix.
Problemas en la cultura de Unix.
Razones para creer.
A. Glosario de abreviaciones.
B. Referencias.
C. Contribuidores.
Cultura y filosofÃ-a Unix
Como mencionaba antes, además de un opinión personal acerca del libro, creo que se puede tomar una
amplia ventaja de realizar una análisis sistemático que permita mostrar tanto el contenido del libro como
una idea clara del mismo para aquellos que quizá no podrán leerlo completamente.
Para quienes cuentan con experiencia en el mundo Unix, asi como algunos sistemas operativos derivados en
mayor o menor grado de este, no es nada raro escuchar el término: FilosofÃ-a, Unix es una filosofÃ-a,
además de un cultura es un modo de vida, un modo de hacer las cosas, una manera en la cual se consigue un
esquema completamente distintivo de programación, por ejemplo.
Unix está basado en una poderosa filosofÃ-a de diseño que le ha permitido, desde su nacimiento en 1969,
ser una referencia para la creación de gran cantidad de sistemas operativos.
5/6
Lo básico de la filosofÃ-a Unix
La filosofÃ-a Unix, iniciada evidentemente por Ken Thompson entre su confusión por diseñar un sistema
operativo pequeño pero altamente capaz y sus lecciones aprendidas de diversas fuentes, no puede
determinarse como un método formal de diseño, está basada completamente en la experiencia.
En el libro encontrarás grandes temas para estudio, una de las partes de las cuales se puede tomar provecho
es aquella en la que se nos motiva a abstraernos a fin de mantener en mente algunas de las siguientes ideas
básicas que forman parte de la filosofÃ-a Unix:
Modularidad: Escribir partes de código pequeñas pensando en conectarlas a través de interfaces.
Composición: Diseñar programas que se conectarán a otros programas.
EconomÃ-a: El tiempo del programador es caro, consérvalo.
Optimización: Realiza un prototipo antes de pulir. Ponlo a trabajar antes de que pienses en optimizarlo.
Extensibilidad: Diseña para el futuro, porque llegará antes de lo que te imaginas.
Conclusión y recomendaciones
Es, y sin temor a equivocarme un libro excelente. Eric Steven Raymond, hace un gran trabajo de
recopilación y con un estilo verdaderamente bueno añadido a las referencias usadas para la creación de
este libro, como: El entorno de programación Unix de Kernighan y Pike, La filosofÃ-a Unix de Gancarz y, El
programador pragmático de Hunt y Thomas entre otros, consigue hacer necesaria su lectura, el libro está
dirigido a todos aquellos programadores que novatos, desean adquirir la experiencia necesario para mejorar,
asÃ- como para programadores que ajenos a Unix conocen de lenguajes como C, C++ y Java.
Tiene una bibliografÃ-a extensa que permite ampliar horizontes si asÃ- se desea y un tema que en particular
disfruté fue el de estándares para la creación de documentación y sistemas de control de versiones.
Espero generar un artÃ-culo que continúe con este para hacer un análisis más profundo del libro,
mientras, me despido esperando que hayan disfrutado esta breve introducción.
Webpages maintained by the LinuxFocus Editor
team
© Edgar Hernández Zúñiga.
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
Translation information:
es −−> −− : Edgar Hernández Zúñiga. <edgar(en)linuxfocus.org>
2005−01−10, generated by lfparser_pdf version 2.51
6/6
Descargar