El
código está casi en todas partes. El advenimiento
de las computadoras modernas llegó en la década de 1940. En su rica
historia, la
programación permitió una mejor comunicación y condujo a avances en una
gran cantidad de industrias. Todo, desde los viajes espaciales hasta las
telecomunicaciones y la atención médica, ha sido revolucionado
y afectado por el código.
Además,
la programación puede enseñar valiosas lecciones de vida. Sin
embargo, en su pasado histórico, la programación (mala) ha llevado a
situaciones comprometedoras. Las instancias de una porción de código malo causaron desastres en un nivel mayor.
Los siguientes son 11 de los peores errores de programación en la historia
1. Error Y2K
El
error del año 2000, también conocido como Y2K Bug o Millennium Bug, era un problema de programación que predecía
causar un pandemónium en la computadora. En la década de los 90, la
mayoría de los programas informáticos enumeraban años de cuatro dígitos en una
versión abreviada. Entonces, en 1990, se leía 90, 1991, se escribía en 91,
etc. Al acortar los dígitos de cuatro dígitos a dos dígitos, los programadores ahorraron
valiosa memoria. Pero las computadoras no pudieron reconocer 2000
simplemente como 00. Aumentando aún más el problema, el 2000 fue un año
bisiesto. Ciertas aplicaciones de software no tuvieron en cuenta el día
adicional.
Muchos
temían que el Y2K pudiera derribar computadoras y productos electrónicos en
todo el mundo. Recuerdo mi primer reproductor de DVD con una brillante
pegatina “compatible con Y2K”. Mientras que el año 2000 llegó sin
problemas desde el lado del software, la actualización de computadoras y
aplicaciones en todas las industrias costó aproximadamente $300 mil
millones. Las computadoras no se bloquearon. La vida transcurrió
normalmente. Pero no sin una gran cantidad de dinero y trabajo, que según
los informes puede haber sido un desperdicio.
Por
qué es uno de los peores errores de programación: el pánico del año 2000 fue extremadamente costoso,
por una suma de $ 300 mil millones. Además, los recursos fueron
redirigidos para solucionar este posible problema.
Apareciendo
en la biblioteca OpenSSL, el error Heartbleed es una vulnerabilidad de
seguridad peligrosa. El protocolo Transport Layer Security (TLS)
emplea la biblioteca de cifrado OpenSSL. Debido a su uso generalizado en
TLS, Heartbleed se extendió rápidamente. Este error permite que
prácticamente cualquier persona en Internet pueda leer memoria en máquinas que
ejecutan iteraciones afectadas de OpenSSL. Se pueden leer hasta 64 kb de
memoria del sistema. Si bien el error Heartbleed fue revelado al público
en 2014, se descubrió en 2012.
La
validación de entrada incorrecta a causa de una comprobación de límites
faltantes dentro de la extensión de TLS provocó el error. Un
artículo de 2014 en The Register informó que el 1.5% de los sitios
más populares habilitados para TLS seguían siendo vulnerables al error
Heartbleed. Sin embargo, las implementaciones de TLS aparte de OpenSSL no
se modificaron. Por lo tanto, la versión de Windows de TLS y los servicios
de seguridad de red de Mozilla no se vieron afectados por el error
Heartbleed. Un parche finalmente resolvió el
problema con OpenSSL versión 1.0.1. Al agregar controles de
límites para evitar una lectura excesiva del búfer, el error Heartbleed se
parchó correctamente.
Por
qué es uno de los peores errores de programación: el error Heartbleed creó una gran amenaza para la
seguridad. El tiempo transcurrido entre el lanzamiento y el parche dejó
vulnerables a los sistemas afectados durante años. Cada vez que hay un
problema de vulnerabilidad de la computadora, esto crea una gran preocupación
de seguridad de datos.
World
of Warcraft una fue víctima de
un virus informático de otro tipo. En 2005, una plaga
digital se infiltró en algunos servidores de juegos. Miles de personajes
cayeron presos del virus de la sangre. El desarrollador
de WoW, Blizzard, presentó a Hakkar, el dios de la
Sangre. El enemigo considerable infectó a los personajes con sangre
corrupta. Mientras que la infección de la sangre originalmente tenía la
intención de afectar a los jugadores que se encontraban cerca del cuerpo de
Hakkar, la transferencia de jugador a jugador ocurría fuera del
reino. Esta forma no intencional de propagar el virus de la sangre
engendrado por las mascotas en el juego. Por otra parte, los personajes no
jugadores (NPC) se convirtieron en portadores.
Archimonde
se convirtió en el primer servidor infectado. Los personajes de bajo nivel
murieron instantáneamente. Incluso los personajes poderosos no duraron
mucho más. Aunque una falla en la codificación perpetúa el virus a través
de NPCs y mascotas, el virus no fue planeado para su lanzamiento fuera del
reino de Hakkar. Mientras miles de jugadores murieron, World of
Warcraft no cuenta con permamuerte. Blizzard corrigió el virus de la
sangre con reinicios del servidor. Pero no antes de que los cadáveres de
los jugadores ensuciaran el paisaje de WoW.
Por
qué es uno de los peores errores de programación: está bien, World of Warcraft podría no presentar
un problema de seguridad de datos o un escenario que ponga en peligro la vida,
pero los jugadores toman en serio su entretenimiento. Blizzard pasó horas
restableciendo los servidores. Curiosamente, el comportamiento de los
jugadores en el juego imitaba lo que podría suceder en una
epidemia del mundo real con brotes desenfrenados, pánico y un colapso de la
civilización.
4. Therac-25
Mientras que muchos errores
de programación causan vulnerabilidades o jugadores muertos en el juego, el
código malo realmente puede matar. El desastre de
Therac-25 ocurrió con la máquina de radioterapia Therac-25. Producido por
Atomic Energy of Canada, Therac-25 causó sobredosis de radiación accidental que
causaron la muerte de al menos seis pacientes. Las
investigaciones descubrieron que el software deficiente y el desarrollo
insuficiente del sistema causaban sobredosis de radiación. En gran parte,
esto se debió a la dificultad para realizar pruebas de software
automatizadas.
Las sobredosis de radiación
Therac-25 sirven como un recordatorio para crear un código que sea fácil de
probar. Las
máquinas que matan a los humanos pueden sonar como ciencia ficción, pero el
incidente de Therac-25 demuestra lo contrario. Pero esto fue realmente el
resultado de un error humano en la codificación que causó estos
problemas. Expertos como Nancy Leveson descubrieron que los programadores
inexpertos crearon un software defectuoso. Además, solo un programador
creó el software y se basó en el código de Therac-6 y Therac-20.
Por qué es uno de los peores
errores de programación: cada vez que hay pérdida de vidas
humanas, un error de programación es absolutamente uno de los peores ejemplos
de código incorrecto.
La NASA usa bastante
tecnología. Su sonda New Horizons emplea una CPU
PlayStation. VP de Arquitectura e Ingeniería de Soluciones en NVIDIA Marc
Hamilton escribe regularmente sobre el uso de hardware NVIDIA por
parte de la NASA. El cohete Mariner 1 se lanzó con una sonda espacial
programada para explorar Venus. Sin embargo, poco después del lanzamiento,
el cohete se desvió de su trayectoria de vuelo prevista. Mariner 1 fue
destruido poco después del despegue.
El error menor de un
programador causó el error Mariner 1. Aunque los informes difieren, los
signos indican que faltaba un script. Según los documentos de
archivo de la NASA, “el Mariner 1 Post Flight Review Board” determinó que la
omisión de un scritp en instrucciones codificadas por computadora en el
programa de edición de datos permitía la transmisión de señales de guía
incorrectas a la nave espacial”.
Por qué es uno de los peores
errores de programación: el error de Mariner 1 podría
haberse evitado fácilmente. Consejo: queridos desarrolladores, prueben su
software.
¿Puedes escucharme
ahora? No. El 15 de enero de 1990, más del 50 por ciento de la red
telefónica de la empresa estadounidense AT&T falló. En nueve horas, 75
millones de llamadas quedaron sin respuesta. Si bien los informes iniciales
culparon
a los hackers, el verdadero culpable fue mucho peor: una
actualización de software. Recuerda esto la próxima vez te quejes
de las actualizaciones de Windows 10. Un error en una sola línea
de código tumbó la red de AT& durante varias horas. Un interruptor se
reinició solo, pero el error significó que el segundo interruptor envió otro
mensaje. Esencialmente se inició un efecto dominó con la red repitiendo su
error. Finalmente, AT&T ideó una solución al reducir la carga de la
red. Los interruptores luego se reiniciaron.
A pesar de las pesadas
pruebas, una sola declaración paralizó la red. El programa se escribió en C. Una declaración de
interrupción dentro de una cláusula if permaneció anidada en una cláusula switch. La
gran interrupción de AT&T de 1990 parece ser un problema
simple. Muchas llamadas perdidas, o como sería el caso hoy en día un
montón de mensajes de texto perdidos, notificaciones de Instagram, Twitter y
Snapchat. Sin embargo, la falta de comunicación conllevaba enormes
impactos monetarios. Las compañías como American Airlines sufrieron
pérdidas financieras. American Airlines recibió dos tercios menos
de llamadas debido a la interrupción. La interrupción de 1990
persiste como un excelente ejemplo de por qué las pruebas son importantes. Además,
el corte de AT&T sirve como un recordatorio de la conexión inherente entre
la tecnología y la economía.
Por qué es uno de los peores
errores de programación: no solo la red de AT&T se vino
abajo, las varias horas que permaneció abajo crearon una caída financiera.
En 2003, un error de
software “mató” a 8,500 personas. El Centro médico St. Mary Mercy en Grand
Rapids, Michigan, informó erróneamente que muchos pacientes fallecieron con un
problema en su sistema de software de administración de pacientes. Este
desastre de código malo es bastante
inofensivo cuando se compara con las muertes de Therac-25, ya que en realidad
nadie murió. Aun así, leer sobre tu propia muerte es desconcertante,
especialmente cuando estás vivo.
Los informes de falsa muerte
no se limitaron a los pacientes. Esta correspondencia se envió a las
compañías de seguros y las oficinas de Seguridad Social. Debido a que el
Seguro Social y los proveedores de seguros aseguran que los pacientes elegibles
tengan Medicare, esto representó un gran problema.
Los empleados de St. Mary
Mercy informaron a los pacientes, las agencias gubernamentales y los
proveedores de seguros del error. En última instancia, el error de
programación no ganó mucha atención. No está claro si alguna vez se
corrigió el error de programación. Sin embargo, no surgieron más informes
de falsas muertes. El hospital St. Mary Mercy simplemente cambió el
software de administración del paciente.
Por qué es uno de los peores
errores de programación: Afortunadamente, nadie murió en
realidad. Pero el control de daños para garantizar la continuidad de la cobertura de salud era un desastre.
Michigan sufrió un error en
el procesamiento de datos entre 2003 y 2005. Durante ese tiempo, una falla en
la programación de computadoras causó la liberación anticipada de 23 presos al
reducir las condenas para los presos del estado de Michigan. Los reclusos
afortunados se beneficiaron de sentencias reducidas de 390 a 161 días. Si
bien cualquier terminación accidental de la pena de prisión es problemática,
afortunadamente estas fueron infracciones menores, como cargos por drogas y
malversación.
El software a menudo apunta
a automatizar procesos. Al reducir las tareas manuales, nuestras vidas son
teóricamente más fáciles. Sin embargo, este caso con los reclusos de
Michigan una vez más demuestra el valor de las pruebas de software. Un
error menor de programación conlleva ramificaciones masivas especialmente en
este ejemplo. Imagínate si los prisioneros liberados incursionaron en
crímenes más serios.
Por qué es uno de los peores
errores de programación: este incidente podría haber sido
mucho peor, pero la liberación temprana de prisioneros es aterradora.
Aunque el colapso de
Hartford Coliseum de 1978 costó una pérdida reportada de $90 millones, podría
haber sido sustancialmente peor. El Coliseo de Hartford colapsó varias
horas después de que los fanáticos dejaran el lugar. Su techo de acero
enrejado no pudo soportar el peso de la nieve mojada. Un edificio colapsó
debido a un error de programación simple. El programador del
software de CAD utilizado para diseñar el Hartford Coliseum no pudo
dar cuenta de múltiples variables. En cambio, el programador de software
supuso que los soportes de techo de acero solo se enfrentarían a la compresión
pura.
Los ingenieros enfrentan
muchos desafíos. Usar software debería facilitar su trabajo. Sin
embargo, no tener en cuenta varias variables conduce a inmensos
desafíos. Si bien puedes simplemente corregir un error en Minecraft,
el software CAD influye directamente en las estructuras del mundo real.
Por qué es uno de los peores
errores de programación: Bueno, al menos nadie
murió. Pero la devastación económica de una pérdida estimada de $90
millones es enorme.
En general, los
procesadores Intel ofrecen un mejor rendimiento que sus
contrapartes de AMD. Sin embargo, AMD ofrece una excelente relación precio/rendimiento. Pero
en 1994, los microprocesadores Pentium de Intel sufrieron un gran
problema. Las CPU 486DX y Pentium presentaban una unidad de coma flotante
(FPU). Esta FPU era un coprocesador matemático. Las CPU Intel de
generaciones anteriores procesaron las matemáticas con números enteros. Al
incluir una FPU integrada, esta nueva generación de chips Pentium prometió
cálculos numéricos significativamente más rápidos.
La FPU Pentium utilizó un
algoritmo radix 4 STR. La entrada incorrecta de información causó cálculos
ligeramente incorrectos. Pero incluso una variación menor puede significar
problemas masivos como los exhibidos en el caso del colapso de Hartford o
Therac-25. Cerca de cinco entradas de mil se quedaron fuera de las capacidades
de la división larga de Pentium. Intel afirmó oficialmente que un error de
secuencia de comandos causaba problemas de entrada de búsqueda. De
cualquier manera, las matemáticas de Pentium se atribuyen a un código
incorrecto.
Por qué es uno de los peores
errores de programación: algunas cifras significativas
pueden no parecer mucho, pero en casos de ingeniería o precisión de la atención
médica es esencial.
Un informe acaba de revelar que los accidentes fatales de estos aviones se debieron a la contratación de ingenieros no calificados, que cobraron menos de la mitad de lo que cobran ingenieros calificados.
Por qué es uno de los peores errores de programación: Accidentes que cobraron muchas vidas debido a situaciones que pudieron evitarse, conllevan que sea un gran error histórico.
Por qué es uno de los peores errores de programación: Accidentes que cobraron muchas vidas debido a situaciones que pudieron evitarse, conllevan que sea un gran error histórico.
Malo para el código: los errores de programación suceden
Se han producido errores de
programación desde el inicio de la codificación. A medida que el uso del
código en una variedad de campos continúe expandiéndose, esta tendencia
probablemente no desaparecerá pronto.
Hay muchos ejemplos de
errores de programación. Algunos son bastante inocuos como
un error de World of Warcraft. Otros dan como resultado
la muerte real (Therac-25) o imaginada (St. Mary Mercy). No dejes que
estos famosos ejemplos te impidan programar.
¿Qué ejemplos históricos de
errores de programación recuerdas?
la sonda new horizons usa un procesador Mongoose-V basado en un cpu de toshiba, nada que ver con nvidia ni playstation.
ResponderBorrar