Heisenbug

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 21 de noviembre de 2016; las comprobaciones requieren 30 ediciones .

Heisenbug es un  término del argot utilizado en programación para describir un error de software que desaparece o cambia sus propiedades cuando se detecta. Esta palabra, a diferencia de la palabra " bug " ( error en inglés ), rara vez se usa en ruso. No es completamente idéntico, pero tiene un significado bastante cercano al término ruso: "error flotante".  

Los ejemplos pueden ser errores que aparecen en la versión final del programa pero que no son visibles en el modo de depuración o errores de temporización en una aplicación de subprocesos múltiples .

Origen del nombre

Este nombre es un juego de palabras y proviene del término “ principio de incertidumbre de Heisenberg ” de la mecánica cuántica , que a nivel cotidiano se entiende como un cambio inesperado en el objeto observado como consecuencia del propio hecho de la observación.

En una entrevista con ACM Queue [1] , Bruce Lindsay dice que él estaba presente cuando el término se usó por primera vez en el sentido de "lo miras y él desaparece" (comparar con las palabras de Heisenberg , quien dijo: "el cuanto más intensamente miras una cosa, menos atención prestas a otra cosa.

Posibles causas

Por lo general, estos son problemas de bajo nivel:

Errores del optimizador:

Métodos de lucha

Los Heisenbugs son muy difíciles de buscar, ya que aparecen en función de factores aleatorios y se reproducen de forma inestable (la complejidad de analizar el estado de un sistema multihilo también juega su papel). Por lo tanto, están tratando de cortarlos en la etapa de diseño, pensando en los procedimientos de sincronización.

Conceptos similares

Estas palabras, así como "heisenbag", prácticamente no se encuentran en ruso.

Borbag ​​( inglés  Bohr bug ) es un bicho que, a diferencia del Heisenbug, no desaparece y no cambia sus propiedades cuando intentas detectarlo, similar a la estabilidad del modelo de orbitales electrónicos de Niels Bohr . Un análogo similar en ruso es el error "estable" o "sostenible" [2] , "error sistemático".

Un  mandelbug es un insecto cuyo comportamiento es tan complejo que parece caótico [3] . El nombre proviene del nombre de Benoit Mandelbrot , el fundador de la geometría fractal . Sin embargo, vale la pena señalar (sobre un principio similar a la prueba de Turing ) que si no hay forma de separar un error cuyo comportamiento parece ser caótico y un error cuyo comportamiento es realmente caótico, entonces no tiene sentido distinguir entre un Mandelbug y un Heisenbug [4] . Algunos usan el término mandelbug para describir un error cuyo comportamiento no parece realmente caótico, pero es tan complejo que requiere reescribir el programa desde cero para solucionarlo. Un ejemplo de tal error es un error fundamental cometido en el diseño del sistema [5] .

Schroedinbug [6] ( eng.  schroedin bug  - en honor al experimento mental con el gato de Schrödinger ) es un error que no se manifiesta de ninguna manera, sino que surge repentinamente si alguien se tropieza con él en el código fuente o intenta usar el programa en condiciones inusuales y se da cuenta de que el sistema no podría funcionar en absoluto en presencia de dicho error. Después de eso, el programa deja de funcionar hasta que se soluciona el error. Aunque suene increíble, algunos programas contienen este tipo de errores.

El hindenbug [7] [8] ( ing.  hinden bug - por el nombre del desastre del dirigible Hindenburg ) es un error con consecuencias catastróficas, por ejemplo, la destrucción completa de datos.

El bugson de Higgs [8] [9] ( ing.  higgs-bugson - en honor a la partícula llamada bosón de Higgs ) es un error cuya existencia se predice (la mayoría de las veces, según datos indirectos o informes de un solo usuario), pero que es extremadamente difícil, si no imposible, reproducirse artificialmente en condiciones de desarrollo o prueba. El término también se puede utilizar en relación con un error que es evidente en el código (prueba matemática), pero que nunca se ha observado en condiciones reales.

Notas

  1. Bruce Lindsay. Una conversación con Bruce Lindsay  (inglés)  // ACM Queue: revista. - 2004. - Noviembre ( núm. 8 ). Archivado desde el original el 4 de febrero de 2022.
  2. El archivo de la jerga. Bohr-bug Archivado el 12 de enero de 2013 en Wayback Machine . 
  3. El diccionario del nuevo hacker. Archivado el 8 de septiembre de 2013 en Wayback Machine  .
  4. M. Grottke y KS Trivedi, Fallas de software, envejecimiento de software y rejuvenecimiento de software. Diario de la asociación de ingeniería de confiabilidad de Japón, edición 27, número 7, 2005, páginas 425-438.
  5. Michael Grottke, Kishor S. Trivedi, " Fighting bugs: remove, retry, replicate, and rejuvenate Archivado el 27 de marzo de 2010 en Wayback Machine "  . Computer, número 40, número 2, febrero de 2007, páginas 107-109, doi:10.1109/MC.2007.55
  6. El archivo de la jerga. Schroedinbug Archivado el 8 de septiembre de 2013 en Wayback Machine . 
  7. Hindenbug . wiki.c2.com. Consultado el 24 de octubre de 2019. Archivado desde el original el 8 de agosto de 2020.
  8. ↑ 12Matt Lynley . 20 divertidas frases de la jerga de programación que deberías usar cuando hables con ingenieros . Business Insider. Consultado el 24 de octubre de 2019. Archivado desde el original el 24 de octubre de 2019.
  9. Nueva jerga de programación . blog.codehorror.com. Consultado el 24 de octubre de 2019. Archivado desde el original el 4 de noviembre de 2019.