The word bug signifies a small insect. In the world of IT however, it is used to describe an error in software programming which partly (minor error) or fully (major error) compromises the software’s correct functioning.
Bug free software does not exist and that is why companies which develop software periodically release updates to correct them and improve their performance. In rare cases, the term bug can also refer to malfunctions or defects relating to hardware (a memorable example is the first Pentium microprocessor which was unable to calculate decimal values accurately).
The first bug in history
Although the term bug became official in the 1892 Standard Electrical Dictionary, the use of the term in IT can be traced to an amusing anecdote from 1947. It was September 9th and a young US Marine Grace Hopper was working with some colleagues on the Mark II (one of the first electromechanical computers).
In those days, computers were housed in enormous cabinets and contained huge electronic components. It was during the development of Harvard’s Computing Laboratory that one of Hopper’s colleagues began to report abnormal activity by the machine, which was making unexplained errors.
The team subsequently decided to disassemble the computer piece by piece in order to identify the origin of the problem. To the amazement of all present, it was discovered that the calculation errors had been caused by a small moth which had got stuck between two relays.
An entry in the official computer logbook for 9th September 1947 (currently stored at the Smithsonian National Museum of American History) clearly states: ‘First actual case of a bug being found’, with the dead moth taped to the page. This was the historic moment when the term ‘bug’ took on its modern meaning.
For a more thorough perspective however, it should be mentioned that bugs (although not mentioned in those terms) were already known in previous eras. In 1844, Ada Lovelace observed that it would be impossible to create ‘program cards’ for the Analytical Engine without errors, while in a letter to a friend dated 1878, Thomas Alva Edison referred to minor technical faults or difficulties as little bugs.
Programming thousands of lines of code is no easy task and the occurrence of a few errors during the writing up of the emergent code is only to be expected. There are many bug typologies which vary according to the nature of the error:
- Syntax errors are one of the most common and may be caused by mistakes when typing a key word (spelling error) or by the incorrect use of key symbols for the programming language used. This kind of error is usually easy to fix;
- Logic errors occur during the algorithm design phase due to an incorrect interpretation of the logical processes needed to resolve a particular problem. This kind of error often requires the modification of an entire section of code;
- Runtime errors happen when the program is operating and despite the code and logic being correct, an error arises. The problem results from attempts to write in areas of the memory where this is not permitted. Resolution of such errors is complex and requires in-depth analysis.
Although there are programming methods and guidelines designed to reduce the frequency of such errors, program checking is carried out using debugging. This procedure consists of a combination of procedures, aimed at reproducing the bug in order to identify its origin and enable fixing.
Translated by Joanne Beckwith