Una polilla en un relé, un cohete que explota por un número demasiado grande, una sonda perdida por mezclar unidades y un lenguaje que se hizo en diez días. Estos son algunos datos curiosos de la historia de la programación y del desarrollo de software.
- 1947
El primer «bug» era una polilla de verdad
El 9 de septiembre de 1947, el equipo del ordenador Harvard Mark II encontró una polilla atrapada entre los contactos de un relé. La pegaron con cinta en el cuaderno de registro junto a la nota «First actual case of bug being found»: el primer caso real de bug. La palabra ya se usaba antes para hablar de fallos (Edison la empleaba en el siglo XIX), pero esa página es la más famosa de la historia de la depuración.
- 1843
El primer programa se escribió para una máquina que nunca existió
Ada Lovelace publicó en 1843, en sus notas a un artículo sobre la Máquina Analítica de Charles Babbage, un método paso a paso para calcular los números de Bernoulli: la famosa «Nota G». Se considera el primer programa publicado. La máquina nunca llegó a construirse.
- 1946
Los primeros programadores del ENIAC fueron seis mujeres
Kay McNulty, Betty Jennings, Betty Snyder, Marlyn Wescoff, Fran Bilas y Ruth Lichterman programaron el ENIAC sin lenguajes ni manuales: conectando cables e interruptores a partir de los planos de la máquina. Durante décadas, en las fotos se las describió como modelos.
- 1969
El Apolo 11 llegó a la Luna con unos 4 KB de memoria
El ordenador de guiado del Apolo tenía 2,048 palabras de memoria de trabajo (unos 4 KB) y 36,864 de memoria fija (unos 72 KB). Esa memoria fija era «memoria de cuerda»: el programa se tejía a mano, pasando hilos por dentro o por fuera de pequeños anillos magnéticos. Un 1 o un 0 era un hilo que pasaba o no por un anillo.
- 1969
El software del alunizaje se salvó a sí mismo
Durante el descenso del Apolo 11 saltaron las alarmas 1202 y 1201: el ordenador estaba sobrecargado. El software, diseñado por el equipo de Margaret Hamilton en el MIT, estaba preparado para eso: descartaba las tareas menos importantes y seguía con las vitales. El alunizaje continuó.
- 1972
«Hello, world» tiene más de 50 años
La costumbre de que el primer programa en un lenguaje escriba «hello, world» viene de Brian Kernighan, que lo usó en un tutorial del lenguaje B en 1972 y lo popularizó en 1978 con el libro The C Programming Language.
- 1971
La @ del correo la eligió un programador porque no se usaba para nada
Ray Tomlinson envió en 1971 el primer correo entre dos ordenadores de ARPANET. Para separar el usuario del nombre de la máquina buscó un símbolo del teclado que no apareciera en los nombres: la arroba.
- 1970
Para muchos ordenadores, el tiempo empezó el 1 de enero de 1970
Unix guarda las fechas como los segundos que han pasado desde la medianoche (UTC) del 1 de enero de 1970, la «época Unix». Por eso una fecha mal guardada a veces aparece como 1970. Puedes probarlo con nuestro conversor de fechas Unix.
- 2038
Hay otro «efecto 2000» con fecha: el 19 de enero de 2038
Los sistemas que guardan esos segundos en un entero de 32 bits con signo se quedarán sin números a las 03:14:07 (UTC) del 19 de enero de 2038: el contador dará la vuelta y la fecha saltará a diciembre de 1901. Los sistemas actuales usan 64 bits, pero quedan muchos aparatos antiguos.
- 2000
El efecto 2000 sí fue un problema, y se arregló a tiempo
Muchos programas guardaban el año con dos cifras para ahorrar memoria, así que 2000 se convertía en 1900. Se invirtieron cientos de miles de millones de dólares en revisarlos. Que el 1 de enero de 2000 casi no pasara nada fue mérito de ese trabajo, no una prueba de que el riesgo fuera inventado.
- 1996
Un número demasiado grande hizo explotar un cohete
El primer Ariane 5 se autodestruyó el 4 de junio de 1996, unos 40 segundos después de despegar. Un programa reutilizado del Ariane 4 convertía un número decimal de 64 bits en un entero de 16 bits; con la velocidad del nuevo cohete el valor no cabía y el sistema de guiado falló. Los números en el ordenador tienen sus trampas.
- 1999
Una sonda se perdió en Marte por mezclar unidades
La Mars Climate Orbiter de la NASA se perdió en 1999 porque el software de tierra calculaba en unidades inglesas (libras-fuerza) y el de a bordo esperaba unidades del sistema métrico. La sonda entró en la atmósfera de Marte demasiado baja.
- 1986
El primer virus para PC llevaba el teléfono de sus autores
Brain, de 1986, se considera el primer virus para PC de IBM. Lo escribieron dos hermanos de Lahore (Pakistán), Basit y Amjad Farooq Alvi, y dentro del código dejaron sus nombres, la dirección de su tienda de informática y su número de teléfono.
- 1991
Linux nació como «solo un pasatiempo»
El 25 de agosto de 1991, Linus Torvalds anunció en un foro de Usenet que estaba haciendo un sistema operativo gratuito, «solo un pasatiempo, no será grande ni profesional como GNU». Hoy Linux funciona en la mayoría de los servidores de internet, en los teléfonos Android y en todas las supercomputadoras de la lista TOP500.
- 2005
Git se escribió en unas semanas
En abril de 2005, el núcleo de Linux se quedó sin su herramienta de control de versiones, BitKeeper, al retirarse su licencia gratuita. Linus Torvalds empezó entonces a escribir Git, y en pocos días el propio Git ya guardaba su código fuente.
- 1991
La primera página web sigue en línea
Tim Berners-Lee publicó en el CERN la primera página web en 1991. El CERN la volvió a poner en su dirección original, info.cern.ch, donde todavía se puede visitar.
- 1995
JavaScript se hizo en unos diez días
Brendan Eich creó en Netscape la primera versión de JavaScript en unos diez días de mayo de 1995. Se llamó Mocha, después LiveScript y al final JavaScript, un nombre de marketing para aprovechar la fama de Java: los dos lenguajes no tienen casi nada que ver.
- 1991
Java se iba a llamar Oak
James Gosling bautizó su lenguaje como Oak («roble») por el árbol que veía desde su despacho en Sun Microsystems. Al descubrir que ya había una marca registrada con ese nombre, el equipo eligió Java, como el café.
- 1991
Python no se llama así por la serpiente
Guido van Rossum le puso el nombre por el grupo de humor británico Monty Python, cuyo programa Monty Python’s Flying Circus estaba leyendo cuando empezó el lenguaje. La propia documentación de Python lo cuenta. Si quieres empezar con él, tenemos un curso de Python.
- 2002
Firefox se llamó Phoenix y luego Firebird
El navegador de Mozilla nació en 2002 como Phoenix. Por conflictos con otras marcas pasó a llamarse Firebird en 2003 y, por el mismo motivo, Firefox en 2004.
- 1959
COBOL tiene más de 65 años y sigue moviendo dinero
COBOL se diseñó en 1959 para programas de empresa y todavía funciona en bancos y administraciones. En abril de 2020, en plena pandemia, el gobernador de Nueva Jersey pidió voluntarios que supieran COBOL para atender el sistema de prestaciones por desempleo.
- 2016
Borrar 11 líneas de código rompió media internet
En marzo de 2016, un programador retiró de npm su paquete left-pad, una función de 11 líneas que rellena un texto con espacios por la izquierda. Miles de proyectos dependían de él, a veces sin saberlo, y dejaron de compilar, entre ellos herramientas tan usadas como Babel. npm tuvo que restaurarlo.
- 2014
Heartbleed: un fallo de una comprobación que faltaba
En 2014 se descubrió en OpenSSL, la biblioteca que cifra buena parte del tráfico de internet, un fallo que permitía pedir a un servidor hasta 64 KB de su memoria en cada mensaje: el programa no comprobaba que la longitud que pedía el cliente fuera la real. Así funciona el cifrado de una conexión, en HTTPS por dentro.
- 1999
Explicarle el código a un pato de goma funciona
El libro The Pragmatic Programmer (1999) popularizó la «depuración con pato de goma»: explicar el código línea por línea a un pato de juguete. Al tener que contarlo en voz alta, uno suele darse cuenta del error antes de terminar.
- 2017
Los que usan espacios ganaban más que los que usan tabuladores
Un análisis de la encuesta de Stack Overflow de 2017 encontró que los programadores que sangran el código con espacios declaraban sueldos más altos que los que usan tabuladores, incluso comparando el mismo país, lenguaje y experiencia. Nadie ha explicado por qué; lo seguro es que la discusión entre espacios y tabuladores no se acaba.
- 1952
A Grace Hopper le dijeron que los ordenadores solo sabían hacer cuentas
En 1952, Grace Hopper terminó el A-0, considerado el primer compilador: un programa que traduce instrucciones a código de máquina. Contaba que tenía un compilador funcionando y nadie quería usarlo, porque le decían que los ordenadores solo servían para hacer cálculos. Años después, su trabajo llevó a COBOL.
- 1960s
Grace Hopper regalaba nanosegundos
Para explicar por qué los ordenadores y los satélites no podían ir más rápido, Grace Hopper repartía en sus charlas trozos de cable de unos 30 cm: la distancia que recorre la luz en un nanosegundo, una milmillonésima de segundo. Cuando le pedían un microsegundo, enseñaba un rollo de casi 300 metros.
- 1958
La palabra «software» la popularizó un estadístico
John Tukey, estadístico de Princeton y de los Laboratorios Bell, escribió «software» en un artículo de 1958, el uso impreso más antiguo que se conoce con el sentido actual. Años antes, en 1947, había acortado binary digit a «bit», la palabra que Claude Shannon hizo famosa en 1948.
- 1962
Uno de los primeros videojuegos se programó en un ordenador del MIT
Spacewar!, de 1962, lo escribieron Steve Russell y otros estudiantes del MIT para el ordenador PDP-1: dos naves que se disparan alrededor de una estrella que las atrae. Se copió de laboratorio en laboratorio y es uno de los primeros videojuegos de ordenador.
- 1980
El primer «huevo de Pascua» fue una protesta
Atari no ponía el nombre de los programadores en sus juegos. Warren Robinett escondió en Adventure (1980), para la Atari 2600, una sala secreta con el texto «Created by Warren Robinett». Así nació la costumbre de esconder sorpresas en los programas, los easter eggs.
- 1999
Los primeros emoji medían 12 × 12 píxeles
Shigetaka Kurita diseñó en 1999 para la operadora japonesa NTT DoCoMo un juego de 176 emoji de 12 × 12 píxeles. Hoy están en la colección del Museo de Arte Moderno de Nueva York (MoMA), que los adquirió en 2016.
- 1985
Un fallo de software en una máquina de radioterapia causó muertes
Entre 1985 y 1987, la máquina de radioterapia Therac-25 dio sobredosis masivas de radiación a seis pacientes; varios murieron. La causa principal fue una condición de carrera: si el operador escribía la configuración muy deprisa, el software no se enteraba del cambio. Es uno de los casos más estudiados en ingeniería de software.
- 1988
El primer gusano de internet vino de un estudiante
El 2 de noviembre de 1988, Robert Tappan Morris, estudiante de Cornell, soltó un programa que se copiaba solo de ordenador en ordenador. Un fallo hizo que se reprodujera mucho más de lo previsto y dejó lentas o inservibles miles de máquinas, en torno a una décima parte de internet según las estimaciones de entonces. Fue el primer condenado por la ley de fraude informático de EE. UU.
- 2012
Una actualización mal hecha costó $460 millones USD en 45 minutos
El 1 de agosto de 2012, Knight Capital instaló código nuevo en su sistema de órdenes de bolsa y reactivó por error una función vieja que llevaba años sin usarse. En los primeros 45 minutos de la sesión envió millones de órdenes que nadie había pedido y perdió más de $460 millones USD, según la SEC. La empresa tuvo que venderse.
- 2024
La NASA reprogramó una nave a 24,000 millones de kilómetros
Desde noviembre de 2023, la Voyager 1, lanzada en 1977, enviaba datos sin sentido por un chip de memoria averiado. En abril de 2024, los ingenieros partieron en trozos el código afectado y lo guardaron en otras partes de la memoria. Cada orden tardaba unas 22 horas y media en llegar.
Fuentes
- Computer History Museum: «First Instance of Actual Computer Bug Being Found»
- Notas de Ada Lovelace a la Máquina Analítica (texto completo)
- Python: preguntas frecuentes, «Why is it called Python?»
- CERN: la primera página web
- ESA: informe de la comisión de investigación del Ariane 501
- NASA: Mars Climate Orbiter
- Pro Git: breve historia de Git
- npm: kik, left-pad y npm
- Heartbleed
- Stack Overflow: espacios, tabuladores y sueldos
- SEC: la multa a Knight Capital por el fallo de 2012
- NASA JPL: la Voyager 1 vuelve a enviar datos (2024)
