Show logo
Explora todos los episodios

Hello, World

  |  Command Line Heroes Team  
Desarrollo y distribución de aplicaciones.
Historia de la tecnología

Command Line Heroes • • Command Line Heroes: segunda temporada: Hola, mundo

Command Line Heroes: segunda temporada: Hola, mundo

About the episode

Todos los lenguajes de programación se crearon para lograr algo que antes era imposible. Actualmente existen muchísimos, ¿pero cuáles realmente necesitas conocer?

En este episodio nos sumergiremos en la historia de los lenguajes de programación. Hablaremos de la genialidad de "Amazing Grace", también conocida como la Contralmirante Grace Hopper. A ella le debemos el que los desarrolladores no necesiten un doctorado en matemáticas para escribir sus programas en código informático. Nos acompañarán Carol Willing de Project Jupyter, exdirectora de la Python Software Foundation, y Clive Thompson, colaborador de la revista The New York Times Magazine y Wired, y que actualmente está escribiendo un libro sobre la manera de pensar de los programadores."

Command Line Heroes Team Red Hat original show

Suscribir

Subscribe here:

Listen on Apple Podcasts Listen on Spotify Subscribe via RSS Feed

Transcripción

Hello world. Hola, mundo. ¿Es señal o ruido? Todo el trabajo de los desarrolladores, las innumerables horas de codificación, estrés y pruebas, todo se reduce a esa pregunta: ¿se entiende nuestra señal? Hola. ¿O se pierde? ¿Es puro ruido? Esta es la segunda temporada de Command Line Heroes en español, un podcast original de Red Hat. En el episodio de hoy, vamos a hablar de la traducción. Veremos los lenguajes de programación: de dónde provienen y cómo elegimos cuáles aprender. Haremos un análisis profundo de las formas en que hablamos con nuestras máquinas. Cómo evolucionan esos lenguajes. Y cómo podemos usarlos para que nuestro trabajo cante. Quizás, quizás, quizás. Si eres desarrollador, tal vez sientas que tienes que ser políglota y dominar muchos lenguajes. Más te vale conocer Java. Y Python. Y Go, JavaScript, Node... Tienes que soñar en C++. Y quizás conocer los clásicos como COBOL, simplemente para aumentar tu credibilidad. Tal vez hasta te preocupen los nuevos, como Dart... Es agotador. Lo extraño es que las computadoras con las que nos comunicamos solo hablan un lenguaje: el lenguaje de las máquinas. Todos esos ceros y unos que andan volando por ahí, todos esos bits... A fin de cuentas, cada lenguaje que aprendemos es otro camino hacia el mismo lugar. Todo se reduce, sin importar qué tanto nos concentremos cuando estamos trabajando. Y eso es lo que hay que tener en cuenta a medida que comienza nuestra historia, porque vamos a empezar con el maravilloso momento en que una mujer dijo: "¿Sabes qué? Yo soy una persona. No hablo en bits, ni pienso en bits. Para programar quiero usar palabras". Ahora nos parece fácil, pero alguna vez la idea de que pudieras hablar con las computadoras a tu manera parecía una broma, y hasta un sacrilegio. La segunda temporada de Command Line Heroes en español aborda las cuestiones fundamentales que sustentan todo lo que hacemos. Y el héroe de este episodio es una mujer cuya trayectoria necesitas conocer si quieres comprender completamente nuestra realidad. Entonces te presento a la primera dama del software. Señoras y señores, es un gran placer presentar a la Comodoro Grace Mary Hopper. Gracias. Fui a Canadá para hablar en la Universidad de Guelph y tuve que pasar por migración en el Aeropuerto de Toronto. Le di mi pasaporte al oficial, que lo vio y me dijo: "¿De qué cuerpo militar es usted?" Y le dije: "De la Marina de los Estados Unidos". Me miró detenidamente. Y luego dijo: "Ha de ser de lo más antiguo que tienen". Acabamos de escuchar a la contralmirante Grace Hopper en 1985. En ese momento tenía 79 años de edad y dictaba su famosa conferencia en el M.I.T. Desde entonces era una leyenda. Es la madrina de los lenguajes de programación independientes. La que usó compiladores para que pudiéramos usar el lenguaje humano en lugar de símbolos matemáticos. Recibió la Medalla Nacional de Tecnología y, después de morir, la Medalla Nacional de la Libertad. Así que no era ninguna floja. La llamaban "Amazing Grace". Si alguien nació para ser programadora informática, era Grace. Escuchamos a Claire Evans, periodista tecnológica y autora de un libro llamado Broad Band, sobre las innovaciones de las mujeres en la tecnología. Evans describe los primeros momentos de las computadoras, con los que Grace Hopper se encontró en la década de 1940, cuando era una joven de las Reservas de la Marina y las computadoras eran del tamaño de una pequeña habitación. La vida de los primeros programadores era como un sacerdocio. Eran muy buenos para cosas muy aburridas; digo, hay que recordar que esto es antes de los compiladores, antes de los lenguajes de programación, cuando la gente realmente programaba al nivel de las máquinas, bit a bit. No cualquiera puede hacer ese tipo de cosas, se necesita mucha disciplina, y Grace la tenía. De inmediato se dio cuenta de que para las personas es muy limitante el tener que usar un lenguaje destinado a las máquinas. Es como si cada vez que tuvieras que caminar, tuvieras que decirle qué hacer a cada célula de tu cuerpo. Se puede, claro. Pero no es eficiente. Tenía que haber un atajo entre las intenciones humanas y la realidad de las máquinas. Y Grace Hopper iba a encontrarlo. Grace tenía esta increíble capacidad para ver patrones y abstracciones. Podía ver que muchas de las tareas que los programadores hacían una y otra vez podrían ser automatizadas. En 1951, Grace y su equipo crearon el primer compilador. Lo llamaron A-0. Y aunque el nombre no suena muy emocionante, fue revolucionario. Un compilador básicamente toma código escrito en un lenguaje que los humanos pueden entender y lo traduce al lenguaje máquina que las computadoras pueden procesar. Fue la primera vez que alguien hizo esto sistemáticamente. Imagínate el momento en que Grace demostró su compilador por primera vez. Sus colegas pensaron que estaba loca. Dijeron que las computadoras no podían entender inglés. Tenían una imagen muy sacrosanta de las computadoras. Pensaban que si la escribías en inglés, la contaminarías. Pero Grace persistió. Y en 1952, su equipo había creado el primer compilador que funcionaba completamente. Era el comienzo de una nueva era. Ahora, avancemos rápidamente hasta hoy. Tenemos cientos de lenguajes de programación. Algunos son generales, otros son muy específicos. Algunos son populares, otros son oscuros. Pero todos comparten ese ADN original que Grace Hopper ayudó a crear. Carol Willing es ingeniera de software de investigación y desarrolladora principal de Project Jupyter, y anteriormente fue directora de la Python Software Foundation. Lo que Grace Hopper entendió, y lo que sigue siendo cierto hoy, es que los lenguajes de programación no son solo herramientas técnicas. Son formas de pensar, formas de expresar ideas. Carol trabaja principalmente con Python, un lenguaje que es famoso por su legibilidad y simplicidad. Pero como nos recuerda, elegir un lenguaje de programación es más complejo de lo que podría parecer. Cuando eliges un lenguaje, no solo estás eligiendo una sintaxis. Estás eligiendo una comunidad, un ecosistema, una forma de resolver problemas. Estás eligiendo las herramientas que van a estar disponibles para ti. Y esa elección puede tener consecuencias enormes. El lenguaje que elijas puede determinar qué tan rápido puedes desarrollar, qué tan fácil es mantener tu código, e incluso qué tipos de problemas puedes resolver. Pero aquí hay algo interesante: a pesar de que tenemos todos estos lenguajes diferentes, muchos desarrolladores terminan conociendo varios. Y eso no es accidente. Clive Thompson es columnista de Wired y colaborador de The New York Times Magazine. Ha escrito extensamente sobre cómo piensan los programadores. Los programadores tienden a ser políglotas no porque tengan que serlo, sino porque quieren serlo. Cada lenguaje les da una nueva forma de pensar sobre los problemas. Es como aprender idiomas humanos. Cada nuevo idioma no solo te da nuevas palabras; te da nuevas formas de conceptualizar el mundo. Exactamente. Si solo sabes JavaScript, vas a pensar sobre los problemas de una manera muy específica. Pero si también sabes Haskell, o Rust, o APL, de repente tienes nuevas herramientas conceptuales. Y eso nos lleva a una pregunta interesante: ¿cómo evolucionan los lenguajes de programación? ¿Por qué siguen apareciendo nuevos lenguajes cuando ya tenemos tantos? La respuesta es que la tecnología sigue cambiando, y nuestras necesidades siguen evolucionando. Los lenguajes que funcionaban bien para las computadoras de los años 70 no necesariamente funcionan bien para los smartphones de hoy, o para la computación en la nube, o para la inteligencia artificial. Cada nuevo paradigma tecnológico crea nuevos desafíos, y a veces necesitas nuevas herramientas para abordar esos desafíos de manera efectiva. Por ejemplo, Go fue creado por Google para abordar los desafíos específicos de la computación distribuida a gran escala. Rust fue creado para sistemas que necesitan ser tanto rápidos como seguros. Swift fue creado para hacer que el desarrollo de aplicaciones móviles fuera más accesible. Pero no todos los lenguajes nuevos sobreviven. De hecho, la mayoría no lo hacen. ¿Qué determina si un lenguaje va a tener éxito o no? Hay varios factores. Primero, tiene que resolver un problema real que otros lenguajes no resuelven bien. Segundo, tiene que tener una comunidad que lo adopte y lo promueva. Y tercero, tiene que ser lo suficientemente fácil de aprender como para que la gente esté dispuesta a invertir el tiempo. Y luego está el factor de la adopción empresarial. Los lenguajes que son respaldados por grandes empresas - como Java por Sun/Oracle, o C# por Microsoft - tienden a tener una ventaja. Pero también hemos visto lenguajes que empezaron como proyectos individuales y se convirtieron en fenómenos globales. Python empezó como un proyecto de fin de semana de Guido van Rossum. JavaScript fue creado en 10 días por Brendan Eich. Lo que esto muestra es que no siempre puedes predecir qué lenguajes van a tener éxito. A veces, el timing es más importante que las características técnicas. Y eso nos lleva a una observación interesante sobre cómo los desarrolladores eligen qué lenguajes aprender. Por un lado, hay consideraciones prácticas. ¿Qué lenguajes usan en mi trabajo? ¿Qué lenguajes tienen buenas oportunidades de empleo? ¿Qué lenguajes tienen ecosistemas robustos? Pero por otro lado, hay consideraciones más personales. ¿Qué lenguajes me gusta usar? ¿Cuáles se sienten naturales para mí? ¿Cuáles me inspiran? Los mejores programadores que conozco eligen lenguajes por ambas razones. Están dispuestos a aprender lo que necesitan para el trabajo, pero también persiguen lenguajes que los emocionen intelectualmente. Y esa emoción intelectual es importante. Porque cuando estás realmente entusiasmado con un lenguaje, estás más dispuesto a profundizar, a explorar sus capacidades, a empujar sus límites. Langdon White, un desarrollador que ha trabajado con docenas de lenguajes diferentes a lo largo de su carrera, lo expresa así: Cada lenguaje tiene su propia personalidad, su propia forma de hacer que pienses sobre los problemas. Algunos son directos y pragmáticos. Otros son elegantes y expresivos. Algunos te obligan a ser muy explícito sobre lo que quieres. Otros te permiten ser más conciso. Y como cualquier herramienta, diferentes lenguajes son mejores para diferentes trabajos. No usarías un martillo para pintar una pared, y no usarías JavaScript para programar un sistema operativo. Pero aquí hay algo fascinante: a pesar de todas estas diferencias, todos estos lenguajes comparten ciertos patrones fundamentales. Todos tienen formas de almacenar datos, de tomar decisiones, de repetir acciones, de organizar código. Una vez que entiendes estos patrones fundamentales, aprender un nuevo lenguaje se vuelve mucho más fácil. Es como aprender un nuevo dialecto de un idioma que ya conoces. Y eso nos lleva de vuelta a Grace Hopper y su visión original. Ella entendió que los lenguajes de programación no son solo sobre hablar con las máquinas; son sobre permitir que los humanos expresen sus ideas de manera efectiva. Esa visión sigue siendo relevante hoy. Cada nuevo lenguaje, cada nueva característica, cada nuevo paradigma es un intento de cerrar la brecha entre lo que queremos decir y lo que podemos expresar en código. Y aunque las computadoras siguen hablando en ceros y unos, nosotros tenemos formas cada vez más sofisticadas de traducir nuestras intenciones humanas a instrucciones máquina. Pero con gran poder viene gran responsabilidad. Y a medida que nuestros lenguajes se vuelven más poderosos, también necesitamos ser más cuidadosos sobre cómo los usamos. Una de las cosas que he observado es que los programadores más experimentados no necesariamente usan las características más avanzadas de un lenguaje. A menudo, prefieren código que sea claro y fácil de entender, incluso si no es el más conciso o elegante. Porque al final del día, el código no es solo para las máquinas. También es para otros humanos que tendrán que leerlo, entenderlo, y modificarlo. Esa es una de las lecciones más importantes que puedes aprender como programador: tu código es comunicación. No solo le estás diciendo a la computadora qué hacer; le estás diciendo a futuros programadores - incluyéndote a ti mismo - qué quisiste hacer y por qué. Y eso nos lleva a una reflexión más amplia sobre el papel de los lenguajes de programación en nuestro mundo digital. Vivimos en un mundo cada vez más definido por software. Las aplicaciones que usamos, los sitios web que visitamos, los sistemas que ejecutan nuestras ciudades - todo está construido con código. Y ese código está escrito en lenguajes de programación. Las decisiones sobre qué lenguajes usar, cómo estructurar el código, qué prioridades enfatizar - todas estas decisiones técnicas tienen impactos reales en nuestras vidas. Por eso es importante que más gente entienda, al menos a un nivel básico, cómo funcionan los lenguajes de programación. No todos necesitan ser programadores, pero todos vivimos en un mundo programado. Y para aquellos de nosotros que sí escribimos código, tenemos una responsabilidad especial. Somos los traductores entre las intenciones humanas y la realidad digital. Grace Hopper entendió esto desde el principio. Su trabajo no era solo sobre hacer que las computadoras fueran más fáciles de programar; era sobre democratizar el acceso a la computación. Grace quería que más gente pudiera programar. Quería que fuera accesible para personas que no tenían doctorados en matemáticas. Ese era su sueño, y en muchos sentidos, se hizo realidad. Hoy, tenemos lenguajes como Scratch que permiten a los niños programar arrastrando bloques visuales. Tenemos lenguajes como Python que priorizan la legibilidad sobre la eficiencia. Tenemos herramientas de desarrollo que hacen que tareas complejas sean tan simples como hacer clic en un botón. Pero aún queda trabajo por hacer. La programación sigue siendo intimidante para muchas personas. Los lenguajes de programación siguen siendo diseñados principalmente por y para cierto tipo de personas. Una de las cosas en las que estamos trabajando en la comunidad Python es hacer que el lenguaje sea más inclusivo. No solo técnicamente, sino culturalmente. Queremos que más personas se sientan bienvenidas a aprender y contribuir. Y esa es quizás la lección más importante que podemos aprender de Grace Hopper: que la tecnología no es neutral, y que tenemos la responsabilidad de hacer que sea accesible para todos. Los lenguajes de programación son herramientas poderosas. Pueden automatizar tareas tediosas, resolver problemas complejos, y crear experiencias hermosas. Pero su verdadero poder viene de las personas que los usan. Y cuantas más personas diversas tengamos escribiendo código, más rico y más representativo será el mundo digital que estamos construyendo. Entonces, mientras seguimos desarrollando nuevos lenguajes, mientras seguimos empujando los límites de lo que es posible con código, recordemos el espíritu de Grace Hopper: que la programación debe ser para todos, no solo para los iniciados. Y recordemos que cada línea de código que escribimos es un acto de traducción - estamos tomando ideas humanas complejas y encontrando maneras de expresarlas en el lenguaje limitado pero poderoso de las máquinas. Es un desafío hermoso, y uno que evoluciona constantemente. Los lenguajes que usamos hoy serán diferentes de los que usaremos mañana. Pero los principios fundamentales - claridad, expresividad, accesibilidad - esos permanecerán. Porque al final, programar no es realmente sobre hablar con máquinas. Es sobre usar máquinas para amplificar la creatividad e inteligencia humana. Y esa conversación - entre humanos y máquinas, mediada por lenguajes de programación - es una de las más importantes de nuestro tiempo. Ahora, antes de terminar, quiero volver a esa curiosidad de la que hablaba Clive Thompson. Porque esa curiosidad es lo que impulsa la evolución de los lenguajes de programación. Los desarrolladores no solo aprenden lenguajes porque tienen que hacerlo para el trabajo. Los aprenden porque están genuinamente curiosos sobre diferentes formas de resolver problemas. Pero también hay lenguajes que nosotros mismos elegimos, lenguajes que se adaptan a nuestra personalidad. Y si quieres saber qué novedades están revolucionando las cosas, pregúntale a algún desarrollador cuál usa los fines de semana. Esta es otra parte de nuestra conversación: Entonces, pues... cuando le pregunto a la gente: "¿Qué haces en tu tiempo libre?" Responden con un montón de cosas extrañas. Y, pues, yo creo que en realidad es una de las cosas que... que son buenas y dignas de elogio del comportamiento de los desarrolladores, por... porque... tienden a ser personas muy curiosas. Conozco gente que pensó: "Voy a aprender Erlang, nada más por el puro gusto". Imagínate todos los proyectos en los que esas personas trabajan el fin de semana. Es casi como si el proyecto fuera secundario. Es como si el aprendizaje de la herramienta, el lenguaje, fuera lo más importante. Por eso lo hacen, en realidad. Eh... sí, exactamente. Por eso vemos a la gente repetir, una y otra vez, las calendarizaciones y las listas de tareas, porque es una forma muy rápida de descubrir qué hace el lenguaje y cómo funciona, y es casi como si no importara lo que se está desarrollando, siempre y cuando haya algo que desarrollar. Quieren saber lo que se siente pensar en ese lenguaje. ¿Va a ser fácil... va... a ser emocionante y armonioso, va a ser diferente de lo que me dan los lenguajes actuales? ¿Me va a abrir las puertas para que todo sea más sencillo? Entonces, cuando encontramos un nuevo lenguaje se forman nuevas posibilidades que pueden ser muy emocionantes. Emocionante por lo que nos permite imaginamos. Hace unos años, un desarrollador muy conocido de Ruby dio una charla muy buena en la que defendía la idea de que un lenguaje no... no necesitaba ser bonito para poder utilizarlo. Y su tesis, su argumento era que Ruby era muy emocionante porque era nuevo. Y hace unos años llegó a un punto en el que simplemente ya no necesitaba nada más. Estaba terminado. Era un lenguaje estable y maduro y, como resultado de esa madurez, pues ya no era tan emocionante como antes para los desarrolladores. Ya no es el juguete nuevo, así que poco a poco nos alejamos de él y empezamos a buscar el siguiente juguete nuevo. Entonces, en cierto aspecto, nuestra propia curiosidad casi puede matar un lenguaje, o hacer que caduque un poco, independientemente de que... sea bueno o malo. Sí, tienes toda la razón. De hecho, eh...la desventaja de esa profunda curiosidad, del deseo de aprender por sí solos que vemos en los desarrolladores, es que... seguido se ponen a buscar el juguete nuevo. Y cuando lo... cuando lo encuentran, lo usan para replicar cosas que ya se han hecho muy bien con otros lenguajes. Claro. Así es. La curiosidad es un beneficio y una trampa. Sí, no hay mejor manera de decirlo. A veces, nuestra curiosidad puede ser una trampa. Pero también es lo que impulsa la evolución de los lenguajes. Todos los lenguajes nuevos se crearon porque alguien dijo: "¿Y qué pasaría si...?" Nacen porque ese desarrollador quería hacer algo diferente. Quería una forma completamente nueva de decirlo. Y les voy a prometer algo. Yo creo que Grace Hopper merece una última palabra. Durante los próximos 12 meses, si cualquiera de ustedes dice que hay algo que "siempre se ha hecho así", me materializaré instantáneamente a su lado y los atormentaré durante 24 horas. A ver si puedo hacer que le den otra vuelta. Ya no podemos decir eso, es peligroso. La historia de Grace Hopper y el primer compilador nos recuerda que siempre hay una mejor manera de hacer las cosas, solo necesitamos encontrar las palabras correctas. E independientemente de lo abstractos que se vuelvan esos lenguajes, ya sea que estemos muy cerca o muy lejos de los unos y ceros del lenguaje informático, debemos estar seguros de que nuestra elección sea inteligente. Elegimos el lenguaje o incluso desarrollamos el lenguaje que nos ayuda a que nuestras intenciones se acerquen a la realidad. En el próximo episodio, seguiremos el complicado camino para realizar contribuciones de código abierto. ¿Cuáles son las dificultades de la vida real de los mantenedores? ¿Cómo hacemos el primer "pull request"? Te llevaremos por un recorrido de los aspectos básicos de las contribuciones. Command Line Heroes en español es un podcast original de Red Hat. Escúchalo gratis en Spotify, Apple Podcasts, Google Podcasts o donde más te guste. Hasta la próxima, sigan programando.

Sobre el podcast

Command Line Heroes

During its run from 2018 to 2022, Command Line Heroes shared the epic true stories of developers, programmers, hackers, geeks, and open source rebels, and how they revolutionized the technology landscape. Relive our journey through tech history, and use #CommandLinePod to share your favorite episodes.