¿Cuál es la corrección de errores de programa de computadora más creativa?

Todos hemos escuchado sobre la búsqueda binaria . Al ser un algoritmo tan útil, se ha incluido en STL de C ++ y en Java SDK, por ejemplo.

Sin embargo, en la implementación del SDK de Java de la búsqueda binaria Arrays.binarySearch() , hubo un pequeño error. Al calcular el medio, que se hizo de esta manera: Middle = (Left + Right) / 2; la parte (Left + Right) podría desbordarse para valores grandes.

Para evitar el desbordamiento, el medio se puede calcular utilizando este ‘truco’: Middle = Left + (Right - Left) / 2;

Simple, pero efectivo!

EDITAR:

  • Joshua Bloch es quien escribió la búsqueda binaria del JDK. Aquí está su publicación de blog sobre el error mencionado anteriormente: Blog de investigación: Extra, Extra
  • El informe de error: JDK-5045582 (coll) binarySearch () falla para un tamaño superior a 1 << 30

Un error común que podría introducirse en un programa está en las expresiones if / else. La mayoría de los lenguajes (por ejemplo, C, C ++, Java, etc.) le permiten escribir sentencias if / else dentro de las ramas if o else sin usar llaves (‘{‘, ‘}’), si solo tiene un comando en esa rama.

Sin embargo, cuando alguien extiende un programa existente y desea agregar otro comando a una rama if / else, es muy probable que se olvide de agregar llaves.

Por ejemplo, tiene este simple código:

if(a == b)
System.out.println("a == b ");
else
System.out.println("a != b ");

y en un momento posterior, es posible que desee asignar el valor de a + 1 a b, si no son iguales:

if(a == b)
System.out.println("a == b ");
else
System.out.println("a != b ");
b = a+1;

Se ve bien, ya que el espacio está bien y se ve como lo que deseaba, sin embargo, ¡esto no es lo que quería!

Mi consejo es usar siempre llaves, incluso si tiene un solo comando en sus ramas.

No estoy seguro si califica exactamente, pero hace muchos años yo era la única persona con habilidades de TI en la empresa para la que trabajaba. Esto significaba que yo era todo, desde sysadmin hasta desarrollador de aplicaciones … y todo lo que realmente sabía era un poco de codificación y cómo ser tenaz.
De todos modos, una de las chicas con las que trabajé tenía problemas con su PC: el micrófono interno emitía pitidos a intervalos aparentemente aleatorios. Intenté todo lo que pude para solucionarlo: rem, google no era tan rico como lo es ahora.
Al final, desarmé la máquina y pinché el diafragma del micrófono con una punta afilada. Problema resuelto.

Solo estoy adivinando, porque no estaba allí. Pero yo diría en primer lugar: cualquier corrección de errores que hizo Ada Lovelace. Seguido por cualquier corrección de errores de Grace Hopper. En un sólido tercer lugar: cualquier corrección de errores por parte de los equipos de desarrollo Apollo de la NASA. Cuando hay vidas involucradas, pone una nueva perspectiva sobre los errores y las soluciones.

¡El botón Deshacer en el escritorio de Gmail!

Gmail tuvo un retraso inherente de aproximadamente 7 segundos, durante el cual el correo electrónico se mantuvo en los servidores de Gmail. En lugar de optimizar el código, los programadores de Google convirtieron este retraso en una función, simplemente agregando un botón.

¡Definitivamente la corrección de errores más creativa (y que salva vidas)!

More Interesting

¿Cuáles son los institutos creíbles y estándar en Bangalore para obtener capacitación en pruebas de software?

¿Qué le disgusta del estado actual de la programación? Tenga en cuenta que no solicito problemas en lenguajes específicos, como Java o Haskell, sino más información sobre lo que no le gusta de nuestras herramientas actuales y la forma en que programamos.

¿Puedo solicitar una visa 457 como ingeniero de software cuando tengo 2 años de experiencia en Victoria? ¿Y vale la pena?

Actualmente soy estudiante y pronto me uniré a Facebook como ingeniero de software junior. ¿Cómo debo preparar mi conocimiento para tener un buen comienzo en la empresa?

¿Cómo funciona Erply con el hardware POS cuando está basado en un navegador?

¿Cuál es el mejor software para limpiar el sistema y aumentar el rendimiento?

¿Qué es exactamente un SDK?

¿A qué estudios avanzaría después de B.Sc en ingeniería de software?

Plataforma Java, Edición Enterprise: ¿Qué se entiende por 'agrupación de conexiones' y 'patrón de diseño de fábrica DAO' en Java?

En la compañía de software, ¿es necesario escribir un documento de diseño para cada componente que escriba?

¿Qué tan importante es el inglés para los programadores?

¿Qué es un equipo de desarrollo ágil?

¿Cuál es el futuro del desarrollo de software para cualquier empresa?

¿Es costoso ser un hacker?

¿Cuáles son los temas candentes que se están investigando actualmente para las pruebas de software en el mundo?