Nosotros, los programadores - Robert C. Martin - E-Book

Nosotros, los programadores E-Book

Robert C. Martin

0,0

Beschreibung

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:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 644

Veröffentlichungsjahr: 2025

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Para Timothy Michael Conrad

Agradecimientos

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.

Sobre el autor

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

Índice de contenidos

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

Prólogo

```

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

Sobre este libro

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.

Parte I

Allanando el camino

¿Quiénes somos los programadores y por qué estamos aquí? ¿Y qué son esas máquinas que nos esforzamos tanto por dominar?

Parte II

Los gigantes

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.