Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
La leyenda del software Robert C. Martin ("Uncle Bob") se sumerge en el mundo de la programación, explorando la vidade los pioneros revolucionarios que crearon los cimientos de la informática moderna. Desde Charles Babbage y Ada Lovelace a Alan Turing, Grace Hopper y Dennis Ritchie, Martin pone el foco sobre las figuras cuyo brillo y perseverancia cambiaron el mundo. Esta narración repleta de recuerdos ofrece una historia humana rica llena de perspectivas técnicas para desarrolladores y examina las innovaciones en la programación que dieron forma a la informática a nivel de bits y de bytes. Al conectar estos logros técnicos con las historias humanas que hay tras ellos, Martin ofrece a los lectores una visión poco habitual de las luchas y los triunfos de las personas que hicieron posible la tecnología moderna. Depresión, fracaso y ridículo, estos pioneros se enfrentaron a todo eso y sus vidas se entrelazan con la evolución de la propia computación a medida que el campo evolucionó desde sus orígenes humildes a las inteligencias artificiales basadas en la nube de la actualidad. Con el crecimiento de la IA, Martin también explora cómo esta tecnología está transformando el futuro de la programación y los desafíos éticos que surgen con ella. Para programadores, codificadores y cualquiera que esté fascinado por la intersección entre las personas y las máquinas, esta guía sobre la historia, la humanidad y la tecnología detrás del código que mueve el mundo actual es una lectura fascinante y esencial.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 644
Veröffentlichungsjahr: 2025
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Para Timothy Michael Conrad
Una vez más, debo dar las gracias a la gente de la editorial que tanto ha trabajado para publicar este libro: Julie Phifer, Harry Misthos, Julie Nahil, Menka Mehta y Sandra Schroeder. Y gracias también al equipo de producción que ha pulido el contenido: Maureen Forys, Audrey Doyle y Chris Cleveland, entre otros. Siempre es un placer trabajar con ellos.
Gracias a Andy Koenig y Brian Kernighan por ayudarme a hacer conexiones.
Un agradecimiento especial a Bill y John Ritchie por compartir su conocimiento sobre su hermano Dennis (DMR).
Gracias a Michael Paulson (alias The name is ThePrimeagen) por su fantástico prólogo.
Gracias a Tom Gilb por su hospitalidad, conocimiento y uno de los epílogos más entretenidos que he leído nunca.
Gracias a Grady Booch, Martin Fowler, Tim Ottinger, Jeff Langr, Tracy Brown, John Kern, Mark Seeman y Heather Kanser por revisar el manuscrito cuando todavía era un borrador. Me ayudaron a mejorarlo mucho.
Como siempre, gracias a mi maravillosa y preciosa mujer, el amor de mi vida, y mis cuatro espectaculares hijos y diez nietos igual de espectaculares. Ellos son mi vida, lo de escribir sobre software lo hago solo por diversión.
Por último, doy gracias porque mi vida es perfecta, vivo en el paraíso.
Robert C. Martin (Uncle Bob) es programador desde 1970. Es el fundador de Uncle Bob Consulting, LLC y cofundador con su hijo Micah Martin de Clean Coders, LLC. Martin ha publicado decenas de artículos en revistas profesionales y es orador habitual en congresos internacionales y ferias comerciales. Ha escrito y editado numerosos volúmenes, incluidos Designing Object-Oriented C++ Applications Using the Booch Method; Pattern Languages of Program Design 3; More C++ Gems; Extreme Programming in Practice; Agile Software Development: Principles, Patterns, and Practices; UML for Java Programmers; Código limpio; El limpiador de código y Diseño funcional. Principios, patrones y prácticas. Líder en la industria de desarrollo de software, Martin fue durante tres años jefe de redacción de The C++ Report y fue el primer presidente de la Alianza Ágil.
© Foto del autor cortesía de Robert C. Martin
Agradecimientos
Sobre el autor
Prólogo
Prefacio
Cronología
Sobre este libro
Parte I. Allanando el camino
1. ¿Quiénes somos?
¿Por qué estamos aquí?
Parte II. Los gigantes
2. Babbage: el primer ingeniero informático
El hombre
Tablas
Hacer tablas
Diferencias finitas
La visión de Babbage
La Máquina Diferencial
Notación mecánica
Trucos de salón
La muerte de la máquina
El argumento de la tecnología
La Máquina Analítica
Símbolos
Ada: la condesa de Lovelace
¿La primera programadora?
Los buenos mueren jóvenes
Un final mixto
La realización de la Máquina Diferencial 2
Conclusión
Referencias
3. Hilbert, Turing y Von Neumann: los primeros arquitectos computacionales
David Hilbert
Gödel
Nubes de tormenta
John von Neumann
Alan Turing
La arquitectura Turing-von Neumann
La máquina de Turing
El viaje de Von Neumann
Referencias
4. Grace Hopper: la primera ingeniera de software
La guerra y el verano de 1944
Disciplina: 1944-1945
Subrutinas: 1944-1946
El simposio: 1947
El UNIVAC: 1949-1951
La ordenación y el inicio de los compiladores
Alcohol: Aproximadamente 1949
Compiladores: 1951-1952
Los compiladores de tipo A
Lenguajes: 1953-1956
COBOL: 1955-1960
Mi diatriba sobre COBOL
Un éxito rotundo
Referencias
5. John Backus: el primer lenguaje de alto nivel
John Backus, el hombre
Luces de colores que hipnotizan
Speedcoding y el 701
Necesidad de velocidad
La división del trabajo
Mi diatriba sobre FORTRAN
ALGOL y todo lo demás
Referencias
6. Edsger Dijkstra: el primer científico computacional
El hombre
El ARRA: 1952-1955
El ARMAC: 1955-1958
El algoritmo de Dijkstra: el camino mínimo
ALGOL y el X1: 1958-1962
La oscuridad creciente: 1962
El ascenso de la ciencia: 1963-1967
Ciencia
Semáforos
Estructura
Demostración
Matemáticas: 1968
Programación estructurada: 1968
El argumento de Dijkstra
Referencias
7. Nygaard y Dahl: el primer OOPL
Kristen Nygaard
Ole-Johan Dahl
SIMULA y OO
SIMULA I
Referencias
8. John Kemeny: el primer lenguaje “popular”. BASIC
El hombre, John Kemeny
El hombre, Thomas Kurtz
La idea revolucionaria
Imposible
BASIC
Tiempo compartido
Los chicos de los ordenadores
Escape
El profeta ciego
¿Simbiosis?
Profecías
A través de un cristal oscuro
Referencias
9. Judith Allen
El ECP-18
Judith Schultz
Una carrera estelar
Referencias
10. Thompson, Ritchie y Kernighan
Ken Thompson
Dennis Ritchie
Brian Kernighan
Multics
PDP-7 y Space Travel
Unix
PDP-11
C
K&R
Persuasión
Software tools
Conclusión
Referencias
Parte III. El codo de la curva
11. Los sesenta
ECP-18
Lo que hacen los padres
12. Los setenta
1969
1970
1973
1974
1976
Control de versiones del código fuente
1978
1979
Referencias
13. Los ochenta
1980
Administrador de sistemas
La pCCU
1981
La DLU/DRU
El Apple II
Productos nuevos
1982
Xerox Star
1983
Dentro del Macintosh
BBS
C en Teradyne
1984-1986: VRS
Core War
1986
Craft Dispatch System (CDS)
Datos etiquetados por campos
Máquinas de estados finitos
OO
1987-1988: El Reino Unido
Referencias
14. Los noventa
1989-1992: Clear Communications
Usenet
Uncle Bob
1992: The C++ Report
1993: Rational Inc.
1994: ETS
Columna en The C++ Report
Patrones
1995-1996: Primer libro, conferencias, clases y Object Mentor Inc.
Principios
1997-1999: The C++ Report, UML y las empresas puntocom
Libro 2: Principios de diseño
1999-2000: Programación extrema
Referencias
15. El milenio
2000: XP Leadership
2001: Desarrollo ágil y colapso(s)
2002-2008: Vagar por el desierto
Código limpio
2009: SICP y croma
Vídeo
cleancoders.com
2010-2023: Videos, artesanía y profesionalidad
El descarrilamiento del desarrollo ágil
Más libros
La pandemia de COVID-19
2023: La meseta
Referencias
Parte IV . el futuro
16. Los lenguajes
Tipos
Lisp
17. La IA
El cerebro humano
Redes neuronales
Crear redes neuronales no es programar
Modelos de lenguaje grandes
La disrupción de los modelos de X grandes
18. El hardware
La ley de Moore
Núcleos
La nube
La meseta
Ordenadores cuánticos
19. La web
20. La programación
La analogía de la aviación
Principios
Métodos
Disciplinas
Ética
Referencias
Epílogo
Reflexiones sobre el contenido
Anécdotas e historias personales
Reflexiones sobre el contenido
Perspectiva del autor del epílogo
Discusión sobre futuras tendencias
Llamadas a la acción o pensamientos para concluir
Referencias
Glosario de términos
Reparto de actores secundarios
Créditos
```
vim .
```
Cinco caracteres simples inician mi editor de texto favorito. No es un editor de texto cualquiera, es NeoVim. La experiencia actual de NeoVim incluye combinaciones de teclas, LSP, resaltado de sintaxis, diagnóstico de errores en el editor y mucho más. Con toda esa personalización, NeoVim se inicia en solo unos milisegundos y permite la edición de archivos en lo que parece un instante. Incluso con miles de archivos, los LSP enseguida informan del estado del proyecto y los errores se cargan en menús de corrección rápida para una navegación veloz. Un par de pulsaciones del teclado me permiten crear e iniciar o ejecutar pruebas. ¡Mi ordenador produce código a partir de un inglés simple a través de la IA! Además, esa misma IA puede escribir código junto a mí mientras tecleo, lo que proporciona grandes cantidades de código (muy cuestionable) en un abrir y cerrar de ojos. Todo esto suena impresionante. La experiencia con NeoVim es maravillosa, fluida y rapidísima. Sin embargo, utilizar NeoVim se considera primitivo y, según algunos, vulgar. “¡Ludita!”, gritan algunos desarrolladores si alguien elige utilizar NeoVim y dedicar tiempo a configurar su editor cuando existen entornos que ya vienen con todo incluido. ¡IntelliJ soporta acciones que mi mente NeoVim ni siquiera puede comprender!
Le cuento todo esto porque es impactante. No, no es impactante que yo use lo que algunos llamarían tecnologías anticuadas. No es impactante que los ingenieros de software discutan sobre sus preferencias; eso es lo normal. Lo que me deja atónito de verdad es cómo el poder absoluto de la edición es mundano para nosotros, los ingenieros. Un mero parpadeo en la rutina diaria de la programación, las reuniones y los mensajes Slack. La edición de texto es ordinaria. La autocompleción, el resaltado de sintaxis, los documentos fiables (a veces) son solo cosas que esperamos. Antes de los editores de texto, los ingenieros pasaron décadas sin un lenguaje de alto nivel, más tiempo incluso sin el resaltado de sintaxis y prácticamente 70 años sin LSP para proporcionar herramientas de autocompleción y refactorización en casi cualquier lenguaje. La edición de texto es, en verdad, una maravilla de la humanidad.
Además de vivir en el pasado con mi editor de texto, también me encanta leer sobre el pasado. Los “auténticos programadores” que podían sincronizar su código con la memoria de tambor magnético para conseguir unas velocidades de lectura óptimas. ¡Lo que daría por ver a uno de esos grandes expertos artesanos en acción! Quizá solo sea la nostalgia, pero las aventuras pasadas parecen más grandiosas, los descubrimientos más relevantes y el trabajo más significativo. En Nosotros, los programadores, he tenido la oportunidad de recorrer ese pasado junto a los creadores de cada salto significativo en la historia de la informática. He podido ver las cenas organizadas por Charles Babbage, que inspiraba y aterrorizaba a sus invitados con la Máquina Diferencial, ese monstruo mecánico gigante que tintineaba y rechinaba cuando producía lo que entonces debía parecer magia. Es probable que ver la Máquina Diferencial en acción fuese similar a lo que experimentamos con nuestro primer prompt de un LLM o autocompleción de Copilot. Estoy seguro de que habríamos oído a algún comensal exclamar: “¡Las máquinas pueden pensar de verdad!”. He podido sentir la presión de los equipos trabajando día y noche y la necesidad urgente de una computación mejor durante los cálculos críticos de la Segunda Guerra Mundial que permitieron la existencia de la bomba atómica. No, no tenían sillas Herman Miller ni escritorios elegantes. ¡Es que ni siquiera tenían monitor ni teclado! Y, aun así, consiguieron lo inimaginable y cambiaron el curso de la historia. Nosotros, los programadores es uno de los relatos más cautivadores de la historia de la informática.
Me sorprendería mucho conocer a un programador que no hubiese escuchado nunca el nombre de Uncle Bob o no estuviese familiarizado con su trabajo. Es muy prolífico en nuestra industria. Durante muchos años, yo solo lo conocía por el nombre, su foto de perfil de Twitter y sus trabajos destacados sobre el código limpio y la filosofía ágil. En mi mente, era el avatar de AbstractBuilderFactory. Todo eso cambió cuando empezamos a interactuar en Twitter, lo que dio lugar a correos electrónicos, llamadas de teléfono e incluso un podcast. A través de estos intercambios, toda mi perspectiva cambió. Robert C. Martin es muchísimo más de lo que me llevaron a pensar mis estudios universitarios. Es pragmático y está dispuesto a hacer concesiones cuando es necesario. Durante y después de nuestro podcast, uno de los comentarios más frecuentes era: “¡Se ríe y sonríe mucho!”. Esto da testimonio de su carácter y de una vida bien vivida. Es un ingeniero de software genuino y alguien de quien todos podemos aprender.
Personalmente, estoy cansado de las discusiones interminables sobre espacios en blanco, editores de texto y las comparaciones entre la programación orientada a objetos y la programación funcional que se propagan por X en 280 caracteres o menos. Lo que me parece interesante es quién creó las tecnologías tras los argumentos que nos han formado a muchos de nosotros. Nosotros, los programadores ofrece algo que es mucho más significativo, una conexión con el pasado y esperanza para el futuro, y Uncle Bob es, quizá, el mediador perfecto para esta historia.
—The name is ThePrimeagen
Antes de empezar, hay algunas consideraciones sobre el libro y el autor que creo que debería tener en cuenta:
•En el momento de escribir esto, llevo 60 años siendo programador, aunque quizá el periodo entre los 12 y los 18 años debería contarse de otra manera. Aun así, desde 1964 hasta hoy, he participado de la mayor parte de la “era informática”. He visto y vivido muchos de los acontecimientos importantes e incluso fundacionales de este ámbito, así que lo que está a punto de leer está escrito por alguien que forma parte de un (cada vez más) reducido grupo de pioneros en este campo. Y, aunque no puede decirse que ese grupo esté entre los más pioneros de los pioneros, sí podemos afirmar que aquellos nos pasaron el testigo.
•Este trabajo abarca dos siglos. Muchos no reconocerán los nombres y las ideas mencionadas en la narración de estas historias, perdidos en las sombras del tiempo. Por tanto, al final del libro, hay un “Glosario de términos” y un “Reparto de personajes secundarios”.
•El “Glosario de términos” contiene una descripción de la mayoría del hardware mencionado en el texto. Si ve un ordenador o un dispositivo que no reconoce, pruebe a buscarlo ahí.
•El “Reparto de personajes secundarios” es un listado de las personas mencionadas en las siguientes páginas. Se trata de una lista bastante larga pero demasiado corta al mismo tiempo. Nombra solo a algunas de las personas que tuvieron una influencia directa o indirecta en la industria de la programación informática. Algunas de las personas mencionadas en el libro se han perdido en la bruma del tiempo y la niebla de los motores de búsqueda de Internet. Eche un vistazo a esos nombres y se asombrará de quiénes aparecen ahí. Vuelva a mirar y se dará cuenta de que la lista apenas roza la superficie. Mire de nuevo los nombres y las fechas en las que esas personas fallecieron. En realidad, la mayoría de ellas nos dejaron hace poco.
¿Quiénes somos los programadores y por qué estamos aquí? ¿Y qué son esas máquinas que nos esforzamos tanto por dominar?
La informática tiene una larga historia y tendemos a olvidarla e ignorarla. Pero, en realidad, son los gigantes que vinieron antes que nosotros los que nos dieron ejemplo de cómo actuar de forma ética en nuestra profesión.
—Kent Beck, 2023 (en referencia al reciente fallecimiento de Barry Dwolatzky)
Aquí, en la parte II, voy a entretenerle con relatos sobre algunos de esos gigantes. Las historias que voy a contar hablan de programadores que lograron un alto nivel de grandeza y tuvieron un efecto profundo en nuestra industria. Esas historias describirán algunos de los desafíos técnicos y personales a los que se enfrentaron. Mi objetivo con estos relatos es dar a conocer a estas personas a un nivel más personal y a un nivel más técnico.
La parte personal debería convencerle de que estas personas eran humanas, como usted y como yo. Sentían dolor y alegría, como usted y como yo. Cometían errores, como usted y como yo. Y superaron obstáculos y disfrutaron de éxitos, como usted y como yo.
La parte técnica está aquí porque usted es programador, y solo un programador puede entender de verdad los retos técnicos a los que se enfrentaron estas personas. Mi objetivo es que aprenda a respetar los logros de estos individuos a un nivel profundo, un nivel que solo un colega programador podría apreciar.
Hay muchos pioneros del pasado que no he incluido en esta parte. Su omisión no se debe a una falta de grandeza o valía, sino a que, por cuestiones de tiempo y espacio, he tenido que elegir. Espero haber escogido bien.
