robot de la enciclopedia para niños

Error de software para niños

Enciclopedia para niños

Un error de software, también conocido como fallo o bug (palabra en inglés que significa "bicho"), es un problema que ocurre en un programa de computadora o en un sistema informático. Este problema hace que el programa no funcione como se espera, produciendo un resultado no deseado.

Existen herramientas especiales llamadas depuradores (o debuggers en inglés) que ayudan a los programadores a encontrar y solucionar estos errores.

A lo largo de la historia, algunos errores de software han causado incidentes importantes. Por ejemplo, la máquina de radioterapia Therac-25 en los años 80, la destrucción de la sonda espacial Mariner 1 en 1962, o el cohete Ariane 5 501 en 1996. También hubo problemas con la red de AT&T en 1990, y los accidentes del Boeing 737 MAX en 2018 y 2019, que llevaron a que estos aviones no pudieran volar durante meses debido a fallos en su software.

En 2002, un estudio en Estados Unidos estimó que los errores informáticos costaban mucho dinero a la economía cada año.

¿De dónde viene la palabra "bug"?

Archivo:First Computer Bug, 1945
Foto que muestra el origen de la historia sobre el primer bug informático conocido.

Hay una historia muy conocida sobre el origen del término bug en la informática. El 9 de septiembre de 1947, la científica Grace Murray Hopper y su equipo en la Universidad de Harvard estaban trabajando en el ordenador Harvard Mark II. Descubrieron que un relé electromagnético (una especie de interruptor) no funcionaba bien. Al investigar, encontraron una polilla (un "bug" real) que se había metido en el relé y lo había atascado. Hopper pegó el insecto en su cuaderno de trabajo y escribió:

‘First actual case of bug being found.‘
‘Primer caso real de «bug» encontrado.’

Aunque esta historia es famosa, la palabra bug ya se usaba antes para referirse a problemas o fallos en máquinas. Por ejemplo, Thomas Alva Edison la usó en 1872 para hablar de defectos mecánicos o eléctricos. Es posible que Grace Hopper fuera la primera en asociarla directamente con los ordenadores, pero la palabra ya existía en el idioma inglés con ese significado de "problema".

Grace Hopper también usó el término debug (quitar el "bicho") para hablar de la depuración de errores en la programación. El primer uso registrado de debug en un contexto similar fue en 1945, en una revista de aeronáutica.

Tipos de errores comunes en la programación

Los errores de programación pueden ser muy variados. Aquí te mostramos algunos de los más comunes:

  • División por cero: Cuando un programa intenta dividir un número entre cero, lo cual es imposible en matemáticas.
  • Ciclo infinito: Cuando un programa se repite una y otra vez sin parar, porque no tiene una condición para terminar.
  • Problemas con números: Como cuando un cálculo da un número tan grande que el programa no puede guardarlo (desbordamiento) o tan pequeño que lo pierde (subdesbordamiento).
  • Usar una variable sin valor: Cuando un programador usa un espacio de memoria (una variable) sin haberle dado un valor inicial.
  • Errores al escribir: Pequeños fallos al teclear, como confundir el número "0" con la letra "O", o una coma con un punto.
  • Constantes "mágicas": Cuando se usa un número directamente en el código en lugar de darle un nombre claro. Esto hace que sea difícil cambiar ese número si es necesario.
  • Acceso a memoria no permitida: Cuando un programa intenta usar una parte de la memoria del ordenador que no le corresponde.
  • Pérdida de memoria: Cuando un programa usa memoria y luego no la libera, haciendo que el ordenador se quede sin espacio.
  • Desbordamiento de búfer: Cuando un programa intenta guardar más información de la que cabe en un espacio de memoria.
  • Bloqueo mutuo: Cuando dos partes de un programa se quedan esperando la una a la otra y ninguna puede avanzar.
  • Errores de sintaxis: Cuando el programador no sigue las reglas del lenguaje de programación, como olvidar un punto y coma.
  • Falta de comentarios: Cuando el código no está bien explicado, lo que dificulta que otros programadores (o incluso el mismo programador más tarde) entiendan cómo funciona y puedan corregirlo.
  • Condición de carrera: Cuando el resultado de un programa depende del orden en que ocurren ciertos eventos, y si no suceden en el orden esperado, se produce un error.

Problemas de instalación o diseño

Archivo:Computer Screen with software error at Gate 11 (SCL)
Pantalla de ordenador con error de software en la Puerta 11 del Aeropuerto de Santiago-Pudahel.

Los errores no solo ocurren en el código. También pueden surgir durante la instalación o por decisiones de diseño:

  • Bibliotecas compartidas: Cuando se eliminan o reemplazan archivos importantes que varios programas necesitan.
  • Conexión a internet: Si un programa asume que el usuario siempre tendrá internet, puede fallar si no es así.
  • Diseño para todos: Los programas deben ser fáciles de usar para todas las personas, incluyendo aquellas con daltonismo o dificultades para usar el ratón.
  • Requisitos del equipo: Un programa puede fallar si se diseña pensando que todos los ordenadores son muy potentes, sin considerar que muchos usuarios tienen equipos más sencillos.

Errores de compilación y ejecución

Los lenguajes de programación suelen tener dos tipos principales de errores:

  • Errores de compilación: Son problemas que impiden que el código que escribimos se convierta en un programa que el ordenador pueda entender y ejecutar. Es como si el programa tuviera faltas de ortografía que impiden que se lea.
  • Errores en tiempo de ejecución: Estos errores ocurren cuando el programa ya está funcionando. Son situaciones inesperadas, como intentar abrir un archivo que no existe o no tener permiso para acceder a algo. Un buen programador intenta prever estos problemas para que el programa pueda manejarlos sin bloquearse.

Por ejemplo, si un programa intenta abrir un archivo y no puede, en lugar de mostrar un mensaje de error confuso y bloquearse, debería informar al usuario de lo que pasó y ofrecerle una solución, como volver al menú principal.

Casos notables de errores de software

El problema del año 2000 (Y2K)

Archivo:Y2K Logo
Y2K

El problema del año 2000 (conocido como Y2K) fue una preocupación mundial. Muchos programas antiguos guardaban el año con solo dos dígitos (por ejemplo, "99" para 1999). Se temía que al llegar el año 2000, estos programas lo interpretaran como "00", es decir, como el año 1900. Esto podría haber causado muchos problemas en bancos, sistemas de transporte y otros servicios. Afortunadamente, se trabajó mucho para corregir los programas a tiempo y se evitaron problemas graves.

Knight Capital y el mercado de valores

En 2012, una empresa llamada Knight Capital sufrió un gran problema debido a un error en su software de comercio automático de acciones. Un técnico olvidó actualizar el software en uno de sus servidores. Cuando este servidor ejecutó el código antiguo, empezó a enviar millones de órdenes de compra y venta de acciones sin control, porque un contador de acciones no funcionaba correctamente. En solo 45 minutos, la empresa perdió una enorme cantidad de dinero. Este caso muestra cómo un pequeño error en un sistema automatizado puede tener consecuencias financieras muy grandes.

Los aviones Boeing 737 MAX

Archivo:WS YYC 737 MAX 1
Boeing 737 MAX 8

Entre 2018 y 2019, dos accidentes de aviones Boeing 737 MAX llevaron a que todos estos aviones fueran suspendidos de vuelo durante meses. La causa principal fue un fallo en un software llamado MCAS (Sistema de Aumento de Características de Maniobra). Este sistema, diseñado para ayudar a los pilotos, usaba la información de un solo sensor, lo que lo hacía vulnerable a errores. Si el sensor fallaba, el sistema podía hacer que el avión bajara la nariz de forma inesperada. Además, los pilotos no sabían de la existencia de este sistema ni cómo funcionaba, lo que complicó la situación. Este incidente tuvo un gran impacto en la aviación y en la empresa Boeing.

La máquina Therac-25

Archivo:Therac 25 Input Screen
Simulación de la pantalla de entrada de un Therac-25.
Archivo:Therac 25 Malfunction 54 8 sec
Simulación de la pantalla de entrada de un Therac-25 con el error 54.
Archivo:Desbordamiento Octeto Byte Overflow
Desbordamiento de una variable octeto (8 bits).

La Therac-25 era una máquina de radioterapia que tuvo varios accidentes entre 1985 y 1987. Estos accidentes causaron que algunos pacientes recibieran demasiada radiación, lo que tuvo consecuencias graves. La investigación mostró que los problemas no eran solo errores pequeños en el código, sino fallos en el diseño general del software y en las prácticas de desarrollo.

Uno de los errores más importantes ocurría cuando un operador tecleaba una secuencia específica de comandos muy rápido. Si esto sucedía en menos de 8 segundos, la máquina podía aplicar una radiación mucho más alta de lo normal. Esto se debía a un error llamado "condición de carrera", donde el orden en que se ejecutaban ciertas acciones en el software no era el esperado, y una variable numérica se desbordaba, haciendo que el sistema de seguridad no funcionara.

OpenSSL y Heartbleed

Archivo:Explicación simplificada de Heartbleed
Explicación simplificada del error «Heartbleed».

OpenSSL es un software muy importante que ayuda a proteger la información en internet, como cuando navegas por páginas seguras. En 2006, un error en una versión de OpenSSL hizo que los números "aleatorios" que generaba no fueran tan aleatorios, lo que comprometió la seguridad de muchas claves y datos encriptados.

Más tarde, en 2014, se descubrió otro fallo grave en OpenSSL llamado "Heartbleed" (hemorragia de corazón). Este error permitía a los atacantes leer la memoria de los servidores, lo que podía darles acceso a información muy importante, como las claves privadas que protegen las comunicaciones. Este fallo fue muy preocupante porque OpenSSL se usa en muchísimos sitios web y servicios en línea. Por ejemplo, en Canadá, se reportó el robo de información importante de usuarios debido a este error.

Los errores de software en la cultura popular

Los errores de software también han aparecido en películas y libros:

  • En la película "Brazil" (1985), un error en un apellido causado por una mosca que cae en una máquina de escribir lleva a la detención de una persona inocente. Esta historia se inspira en el caso real de la polilla en el ordenador Harvard Mark II.
  • La novela The Bug (2004) de Ellen Ullman trata sobre la búsqueda de un error de software muy escurridizo, apodado "El Bufón", que amenaza el futuro de una empresa.
  • La película canadiense Control Alt Delete (2008) es una comedia sobre un programador que intenta corregir errores para evitar los problemas del Y2K a finales de 1999.

Ver también

Véase también

Kids robot.svg En inglés: Software bug Facts for Kids

kids search engine
Error de software para Niños. Enciclopedia Kiddle.