martes, 21 de noviembre de 2017

Los 10 peores errores de programación en la historia

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 10 de los peores errores de programación en la historia.

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.
Los 10 peores errores de programación en la historia
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 sangreEl 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. 

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.

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? Por favor comparte el post en las redes sociales.



Fuente: Makeuseof

No hay comentarios.:

Publicar un comentario

Tu opinión es importante para mí, porque me ayuda a mejorar. Si te gustó el articulo o tienes alguna sugerencia, déjame tu comentario con tu nombre para poder responderte tan pronto como pueda.