A software bug is an error in a computer program. The term comes from hardware engineering, where a design flaw in a circuit or other product was called a "bug".
Effects of bugs
When undetected, software bugs can wreak havoc or just be mildly annoying. The most common bugs deal with memory allocation or pointer arithmetic. The program will place or look for information in the wrong location. This is the hardest type of error to detect, and is common in C and C++ programs. Java is not susceptible to this type of error, as all memory operations are handled and checked by the virtual machine.
The typical annoying software bug causes a program to "hang" (stop working or responding) or causes the entire computer to "freeze". Recent versions of Windows have become able to detect unresponsive programs and allow the user to terminate them; previous versions required the user to reboot the system, which usually involved a loss of unsaved work.
Some of the worst software errors include a faulty conversion of linear measurement which caused a Mars probe to crash into the planet (kilometers were confused with miles), and the Ariadne rocket which self-destructed because a test routine meant to run only when the rocket was stationary was permitted to run while the rocket was in flight.
Programmers are divided on whether design flaws should be classed with coding errors as "bugs", but customers consider them to be software defects. One such flaw permitted an airline pilot to pick the wrong airport code from a menu, whereupon the plane flew itself into the side of mountain. The flaw was in the total logic of the system, which should have alerted the pilot to his unwise choice or simply rejected it.
Anecdotes about the origin of the term
The idea that Grace Hopper found the first "bug" and that software bugs derive from her account of a moth stopping Harvard's Mark I computer is a popularly accepted myth within the computing community. However, in an article written for Byte Magazine about the myth, Oxford English Dictionary Editor Fred Shapiro notes that the OED details the appearance of the word "bug" in the context of an engineering defect as early as 1889.
In that year, the Pall Mall Gazette (March 11) reported that "Mr. Edison...had been up the two previous nights discovering a 'bug' in his phonograph--an expression for solving a difficulty, and implying that some imaginary insect has secreted itself inside and is causing all the trouble."
On November 18, 1878, Edison wrote to Theodore Puskas, "It has been just so in all my inventions. The first step is an intuition--and comes with a burst, then difficulties arise. This thing gives out and then that--"Bugs"--as such little faults and difficulties are called--show themselves and mo nths of anxious watching, study and labor are requisite before commercial success--or failure--is certainly reached" (Matthew Josephson, Edison: A Biography, John Wiley & Sons, 1992, page 198).
Shapiro also notes that the term 'bug' had entered public lexicography in 1934, with Webster's New International Dictionary defining a bug: "bug, n... 3. A defect in apparatus or its operation...Slang, U.S."
- ↑ Shapiro, Fred. (April 1994). The First Bug. Byte Magazine. Retrieved on 2007-05-10.
- Software engineering - An engineering discipline whose goal is, in part, the creation of reliable software.
- Software virus - Software which hides and replicates itself, often with the intention of damaging computer systems.