Los arquitectos observan miles de edificios durante su formación y estudian las críticas de esos edificios escritas por maestros. Al contrario, la mayoría de los desarrolladores de software sólo llegan a conocer bien un puñado de programas grandes (por lo general, programas que ellos mismos escribieron).

Nunca estudian los grandes programas de la historia. Como resultado, repiten los errores de los demás en lugar de basarse en los éxitos de los demás.

El objetivo de los autores de estos libros, es precisamente cambiar eso. En ellos, los programadores de cuatro docenas de aplicaciones de código abierto explican cómo está estructurado su software y por qué.

¿Cuáles son los componentes principales de cada programa? ¿Cómo interactúan? ¿Qué aprendieron sus constructores durante su desarrollo?

Al responder a estas preguntas, los colaboradores de estos libros brindan información única sobre cómo piensan.

Si eres un desarrollador junior y deseas saber cómo piensan tus compañeros más experimentados, estos libros son el lugar perfecto para comenzar, a pesar de que pueda ser un contenido algo desactualizado.

Si eres un desarrollador intermedio o senior y desea ver cómo sus compañeros han resuelto problemas complejos de diseño, estos libros también pueden ayudarte.


El contenido se encuentra en inglés, en principio, es bastante entendible mediante la traducción automática; aunque pueda haber alguna parte un poco extraterrestre. Lo que yo he revisado, me ha parecido bastante entendible.

El contenido de estos libros se encuentra bajo licencia Creative Commons Attribution 3.0 Unported, y se encuentran disponible para su compra en inglés tanto en papel como en PDF.

Lo más importante, es, que cualquier beneficio derivado de su venta será donado a Amnistía Internacional. Por ello, está página no contendrá anuncios, ¡Qué lo disfruten! 🤗


A continuación, un índice completo del contenido de los cuatros libros:

Introducción: La arquitectura de las Aplicaciones de Código Abierto I

La carpintería es un oficio exigente y las personas pueden pasar toda su vida aprendiendo cómo hacerlo bien. Pero la carpintería no es arquitectura: si nos alejamos de los tableros de madera y las juntas de inglete, los edificios en su conjunto deben diseñarse, y hacer eso es tanto un arte como un oficio o una ciencia.

La programación también es un oficio exigente, y las personas pueden pasar toda su vida aprendiendo cómo hacerlo bien. Pero la programación no es una arquitectura de software. Muchos programadores pasan años pensando (o luchando con) problemas de diseño más importantes:

¿Debería ser extensible esta aplicación? Si es así, ¿debería hacerse proporcionando una interfaz de scripting, a través de algún tipo de mecanismo de complemento, o de alguna otra manera? ¿Qué debería hacer el cliente, qué debería dejarse en manos del servidor? ¿Es “cliente-servidor” una forma útil de pensar en esta aplicación?

No se trata de cuestiones de programación, como tampoco de dónde poner las escaleras es una cuestión de carpintería.

La arquitectura de construcción y la arquitectura de software tienen mucho en común, pero hay una diferencia crucial. Mientras que los arquitectos estudian miles de edificios en su formación y durante sus carreras, la mayoría de los desarrolladores de software solo llegan a conocer bien un puñado de programas grandes.

Y la mayoría de las veces, esos son programas que ellos mismos escribieron. Nunca llegan a ver los grandes programas de la historia ni a leer críticas de los diseños de esos programas escritas por practicantes experimentados. Como resultado, repiten los errores de los demás en lugar de basarse en los éxitos de los demás.

Este libro es nuestro intento de cambiar eso. Cada capítulo describe la arquitectura de una aplicación de código abierto: cómo está estructurada, cómo interactúan sus partes, por qué está construida de esa manera y qué lecciones se han aprendido que se pueden aplicar a otros grandes problemas de diseño.

Las descripciones están escritas por las personas que mejor conocen el software, personas con años o décadas de experiencia en el diseño y rediseño de aplicaciones complejas. Las aplicaciones en sí varían en escala, desde simples programas de dibujo y hojas de cálculo basadas en web hasta conjuntos de herramientas de compilación y paquetes de visualización de varios millones de líneas.

Algunos tienen solo unos pocos años, mientras que otros se acercan a su trigésimo aniversario. Lo que tienen en común es que sus creadores han pensado mucho en su diseño y están dispuestos a compartir esos pensamientos contigo.

Libro: La arquitectura de las Aplicaciones de Código Abierto I

     
Introducción Amy Brown y Greg Wilson  
1. Asterisco Russell Bryant
2. Audacia James Crook
3. El caparazón de Bourne-Again Chet Ramey
4. Berkeley DB Margo Seltzer y Keith Bostic
5. CMake Bill Hoffman y Kenneth Martin
6. Eclipse Kim Moir
7. Grafito Chris Davis
8. El sistema de archivos distribuido de Hadoop Robert Chansler , Hairong Kuang , Sanjay Radia , Konstantin Shvachko y Suresh Srinivas
9. Integración continua C. Titus Brown y Rosangela Canino-Koning
10. Jitsi Emil Ivov
11. LLVM Chris Lattner
12. Mercurial Dirkjan Ochtman
13. El ecosistema NoSQL Adam Marcus
14. Embalaje de Python Tarek Ziadé
15. Riak y Erlang / OTP Francesco Cesarini , Andy Gross y Justin Sheehy
dieciséis. Selenium WebDriver Simon Stewart
17. Enviar correo Eric Allman
18. SnowFlock Roy Bryant y Andrés Lagar-Cavilla
19. SocialCalc Audrey Tang
20. Telepatía Danielle Madeley
21. Mil pasec Alan Laudicina y Aaron Mavrinac
22. Violeta Cay Horstmann
23. VisTrails Juliana Freire , David Koop , Emanuele Santos , Carlos Scheidegger , Claudio Silva y Huy T. Vo
24. VTK Berk Geveci y Will Schroeder
25. Batalla por Wesnoth Richard Shimooka y David White
  Bibliografía  

Introducción: La arquitectura de las Aplicaciones de Código Abierto II

En la introducción al Volumen II de esta serie, escribimos:

La arquitectura de construcción y la arquitectura de software tienen mucho en común, pero hay una diferencia crucial. Mientras que los arquitectos estudian miles de edificios en su formación y durante sus carreras, la mayoría de los desarrolladores de software solo llegan a conocer bien un puñado de programas grandes … Como resultado, repiten los errores de los demás en lugar de aprovechar los éxitos de los demás … intente cambiar eso.

En el año transcurrido desde que apareció ese libro, más de dos docenas de personas han trabajado duro para crear la secuela que tienes en tus manos. Lo han hecho porque creen, como nosotros, que el diseño de software puede y debe enseñarse con el ejemplo, que la mejor manera de aprender a pensar como un experto es estudiar cómo piensan los expertos.

Desde servidores web y compiladores a través de sistemas de administración de registros médicos hasta la infraestructura que usa Mozilla para sacar a Firefox por la puerta, hay lecciones a nuestro alrededor. Esperamos que al recopilar algunos de ellos en este libro, podamos ayudarlo a convertirse en un mejor desarrollador.

  • Amy Brown y Greg Wilson

Libro: La arquitectura de las Aplicaciones de Código Abierto II

Introducción Amy Brown y Greg Wilson  
1. Arquitectura web escalable y sistemas distribuidos Kate Matsudaira
2. Ingeniería de lanzamiento de Firefox Chris AtLee , Lukas Blakk , John O’Duinn y Armen Zambrano Gasparnian
3. FreeRTOS Christopher Svec
4. GDB Stan Shebs
5. El compilador de Glasgow Haskell Simon Marlow y Simon Peyton-Jones
6. Git Susan Potter
7. GPSD Eric Raymond
8. Dynamic Language Runtime y Iron Languages Jeff Hardy
9. ITK Luis Ibáñez y Brad King
10. GNU Mailman Barry Varsovia
11. matplotlib John Hunter y Michael Droettboom
12. MediaWiki Sumana Harihareswara y Guillaume Paumier
13. Moodle Tim Hunt
14. nginx Andrey Alexeev
15. MPI abierto Jeff Squyres
dieciséis. OSCAR Jennifer Ruttan
17. Processing.js Mike Kamermans
18. Marioneta Luke Kanies
19. PyPy Benjamin Peterson
20. SQLAlchemy Michael Bayer
21. Retorcido Jessica McKellar
22. Yesod Michael Snoyman
23. Yocto Elizabeth Flanagan
24. ZeroMQ Martín Sústrik
  Bibliografía  

Introducción: El rendimiento de las Aplicaciones de Código Abierto

Es un lugar común decir que el hardware de las computadoras es ahora tan rápido que la mayoría de los desarrolladores no tienen que preocuparse por el rendimiento. De hecho, Douglas Crockford se negó a escribir un capítulo para este libro por esa razón:

Si tuviera que escribir un capítulo, sería sobre anti-desempeño: la mayor parte del esfuerzo invertido en la búsqueda del desempeño es en vano. No creo que eso sea lo que estás buscando.

Donald Knuth hizo lo mismo hace treinta años:

Deberíamos olvidarnos de las pequeñas eficiencias, digamos alrededor del 97% del tiempo: la optimización prematura es la raíz de todos los males.

Pero entre los dispositivos móviles con potencia y memoria limitada, y los proyectos de análisis de datos que necesitan terabytes de proceso, un número creciente de desarrolladores no necesitan para hacer su código más rápido, sus estructuras de datos más pequeños, y sus tiempos de respuesta más cortos.

Sin embargo, aunque cientos de libros de texto explican los conceptos básicos de los sistemas operativos, las redes, los gráficos por computadora y las bases de datos, pocos (si los hay) explican cómo encontrar y arreglar cosas en aplicaciones reales que son simplemente demasiado lentas.

Esta colección de casos de estudio es nuestro intento de llenar ese vacío. Cada capítulo está escrito por desarrolladores reales que han tenido que hacer que un sistema existente sea más rápido o que han tenido que diseñar algo para que sea rápido en primer lugar.

Cubren muchos tipos diferentes de software y objetivos de rendimiento; lo que tienen en común es una comprensión detallada de lo que sucede realmente, cuándo y cómo encajan las diferentes partes de las aplicaciones grandes.

Nuestra esperanza es que este libro, al igual que su predecesor, La arquitectura de aplicaciones de código abierto, lo ayudará a convertirse en un mejor desarrollador al permitirle mirar por encima de los hombros de estos expertos.

  • Tavish Armstrong

Libro: El rendimiento de las aplicaciones de código abierto

Introducción Tavish Armstrong  
1 Redes de alto rendimiento en Chrome Ilya Grigorik
2 De SocialCalc a EtherCalc Audrey Tang
3 Ninja Evan Martín
4 Analizar XML a la velocidad de la luz Arseny Kapoulkine
5 MemShrink Kyle Huey
6 Aplicación de patrones de principios de optimización a herramientas de implementación y configuración de componentes Doug C. Schmidt , William R. Otte y Aniruddha Gokhale
7 Infinispan Manik Surtani
8 Talos Clint Talbert y Joel Maher
9 Zotónico Arjan Scherpenisse y Marc Worrell
10 Secretos del rendimiento de la red móvil Bryce Howard
11 Deformación Kazu Yamamoto , Michael Snoyman y Andreas Voellmy
12 Trabajando con Big Data en Bioinformática Eric McDonald y C. Titus Brown

Introducción 500 Líneas o Menos

Este es el cuarto volumen de la serie Arquitectura de aplicaciones de código abierto , y el primero en no incluir las palabras “aplicaciones de código abierto” en ninguna parte del título.

Los primeros tres volúmenes de la serie trataban de grandes problemas que los grandes programas tenían que resolver. Para un ingeniero que está al principio de su carrera, puede ser un desafío comprender y desarrollar programas que sean mucho más grandes que unos pocos miles de líneas de código, por lo que, si bien puede ser interesante leer sobre problemas importantes, también pueden ser un desafío. para aprender.

500 líneas o menos se centra en las decisiones de diseño que los programadores toman en lo pequeño cuando están construyendo algo nuevo. Los programas sobre los que leerá en este libro se escribieron desde cero para este propósito (aunque varios de ellos se inspiraron en proyectos más grandes en los que los autores habían trabajado anteriormente).

Antes de leer cada capítulo, le recomendamos que primero piense en cómo podría resolver el problema. ¿Qué consideraciones de diseño o limitaciones crees que el autor va a considerar importantes? ¿Qué abstracciones esperas ver? ¿Cómo cree que se va a descomponer el problema? Luego, al leer el capítulo, intente identificar qué le sorprendió. Esperamos que aprenda más haciendo esto que simplemente leyendo cada capítulo de principio a fin.

Escribir un programa útil en menos de 500 líneas de código fuente — sin recurrir a trucos baratos — es un ejercicio desafiante en sí mismo; escribir uno para que se lea con fines pedagógicos cuando se traduce nítidamente en un libro impreso es aún más difícil. Como tal, los editores ocasionalmente se han tomado libertades con algunos de los formatos de fuente al portarlos al libro. La fuente original de cada capítulo se puede encontrar en el codesubdirectorio de su carpeta de proyecto.

Esperamos que las experiencias de los autores de este libro le ayuden a salir de su zona de confort en su propia práctica de programación.

  • Michael DiBernardo

Libro: 500 Líneas o Menos

Introducción Michael DiBernardo  
1 Blockcode: un conjunto de herramientas de programación visual Dethe Elza
2 Un sistema de integración continua Malini Das
3 Agrupación por consenso Dustin J. Mitchell
4 Contingente: un sistema de construcción completamente dinámico Brandon Rhodes y Daniel Rocco
5 Un rastreador web con asyncio Coroutines A. Jesse Jiryu Davis y Guido van Rossum
6 Dagoba: una base de datos de gráficos en memoria Dann Toliver
7 DBDB: Base de datos de camas para perros Taavi Burns
8 Un marco web basado en eventos Leo Zovic
9 Un programador de Flow Shop Dr. Christian Muise
10 Una base de datos inspirada en la arqueología Yoav Rubin
11 Hacer sus propios filtros de imagen Cate Huston
12 Un intérprete de Python escrito en Python Allison Kaptur
13 Un modelador 3D Erick Dransch
14 Un modelo de objeto simple Carl Friedrich Bolz
15 Reconocimiento óptico de caracteres (OCR){:target=”_blank” rel=”nofollow,noreferrer”} Marina Samuel
16 Un podómetro en el mundo real Dessy Daskalov
17 La política del mismo origen Eunsuk Kang, Santiago Perez De Rosso y Daniel Jackson
18 Un muestreador de rechazo Jessica B. Hamrick
19 Hoja de cálculo web Audrey Tang
20 Análisis estático Leah Hanson
21 Un motor de plantillas Ned Batchelder
22 Un servidor web simple Greg Wilson

Relacionados

▷ 11 Mejores cursos gratis de linux y software libre

▷ ¿Qué es la Free Software Foundation?

🛒 Los Mejores Chollos de Amazon, ¡Agrégalos a tu Lista de Deseos!

Fuente: AOSA BOOK

La arquitectura de las Aplicaciones de Código Abierto: 4 Libros Completos Gratis