Bug (engineering)

Last updated

In engineering, a bug is a defect in the design, manufacture or operation of machinery, circuitry, electronics, hardware, or software that produces undesired results or impedes operation. It is contrasted with a glitch which may only be transient. Sometimes what might be seen as unintended or defective operation can be seen as a feature.

Contents

History

The Middle English word bugge is the basis for the terms "bugbear" and "bugaboo" as terms used for a monster. [1]

The term "bug" to describe defects has been a part of engineering jargon since the 1870s and predates electronic computers and computer software; it may have originally been used in hardware engineering to describe mechanical malfunctions. For instance, Thomas Edison wrote the following words in a letter to an associate in 1878:

It has been just so in all of my inventions. The first step is an intuition, and comes with a burst, then difficulties arise—this thing gives out and [it is] then that "Bugs"—as such little faults and difficulties are called—show themselves and months of intense watching, study and labor are requisite before commercial success or failure is certainly reached. [2]

This shows that using the word bugs was already widespread by 1870s.

In a comic strip printed in a 1924 telephone industry journal, a naive character hears that a man has a job as a "bug hunter" and gives a gift of a backscratcher. The man replies "don't you know that a 'bug hunter' is just a nickname for a repairman?" [3]

Baffle Ball, the first mechanical pinball game, was advertised as being "free of bugs" in 1931. [4] Problems with military gear during World War II were referred to as bugs (or glitches). [5] In the 1940 film, Flight Command , a defect in a piece of direction-finding gear is called a "bug".[ citation needed ] In a book published in 1942, Louise Dickinson Rich, speaking of a powered ice cutting machine, said, "Ice sawing was suspended until the creator could be brought in to take the bugs out of his darling." [6]

Isaac Asimov used the term "bug" to relate to issues with a robot in his short story "Catch That Rabbit", published in 1944.

A page from the Harvard Mark II electromechanical computer's log, featuring a dead moth that was removed from the device. First Computer Bug, 1945.jpg
A page from the Harvard Mark II electromechanical computer's log, featuring a dead moth that was removed from the device.

The term "bug" was used in an account by computer pioneer Grace Hopper, who publicized the cause of a malfunction in an early electromechanical computer. [7] A typical version of the story is:

In 1946, when Hopper was released from active duty, she joined the Harvard Faculty at the Computation Laboratory where she continued her work on the Mark II and Mark III. Operators traced an error in the Mark II to a moth trapped in a relay, coining the term bug. This bug was carefully removed and taped to the log book. Stemming from the first bug, today we call errors or glitches in a program a bug. [8]

Hopper did not find the bug, as she readily acknowledged. The date in the log book was September 9, 1947. [9] [10] [11] The operators who found it, including William "Bill" Burke, later of the Naval Weapons Laboratory, Dahlgren, Virginia, [12] were familiar with the engineering term and amusedly kept the insect with the notation "First actual case of bug being found." Hopper loved to recount the story. [13] This log book, complete with attached moth, is part of the collection of the Smithsonian National Museum of American History. [10]

The related term "debug" also appears to predate its usage in computing: the Oxford English Dictionary 's etymology of the word contains an attestation from 1945, in the context of aircraft engines. [14]

"It's not a bug, it's a feature"

Some user bugs work as the designer intended, reflecting a mismatch between the specifications and user expectations. Sometimes the behavior in question is written in user documentation or is billed as an undocumented feature, which is captured by the catchphrase "It's not a bug, it's a feature" (INABIAF). [15] This quip is recorded in The Jargon File dating to 1975 but dates to 1971 when PDP-8 programmer Sandra Lee Harris at Digital Equipment Corporation (DEC) made the distinction between issues to be fixed in the code for DEC's FOCAL interpreter and those to be documented or clarified in the user manual. [16]

Types

See also

Related Research Articles

Computer programming or coding is the composition of sequences of instructions, called programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of procedures, by writing code in one or more programming languages. Programmers typically use high-level programming languages that are more easily intelligible to humans than machine code, which is directly executed by the central processing unit. Proficient programming usually requires expertise in several different subjects, including knowledge of the application domain, details of programming languages and generic code libraries, specialized algorithms, and formal logic.

<span class="mw-page-title-main">Digital Equipment Corporation</span> U.S. computer manufacturer 1957–1998

Digital Equipment Corporation, using the trademark Digital, was a major American company in the computer industry from the 1960s to the 1990s. The company was co-founded by Ken Olsen and Harlan Anderson in 1957. Olsen was president until he was forced to resign in 1992, after the company had gone into precipitous decline.

<span class="mw-page-title-main">Grace Hopper</span> American computer scientist, mathematician, and US Navy admiral (1906–1992)

Grace Brewster Hopper was an American computer scientist, mathematician, and United States Navy rear admiral. One of the first programmers of the Harvard Mark I computer, she was a pioneer of computer programming. Hopper was the first to devise the theory of machine-independent programming languages, and the FLOW-MATIC programming language she created using this theory was later extended by others to create COBOL, an early high-level programming language still in use today.

<span class="mw-page-title-main">DECSYSTEM-20</span> Type of mainframe computer

The DECSYSTEM-20 was a family of 36-bit Digital Equipment Corporation PDP-10 mainframe computers running the TOPS-20 operating system and was introduced in 1977.

<span class="mw-page-title-main">PDP-1</span> First computer made by Digital Equipment Corp

The PDP-1 is the first computer in Digital Equipment Corporation's PDP series and was first produced in 1959. It is famous for being the most important computer in the creation of hacker culture at the Massachusetts Institute of Technology, Bolt, Beranek and Newman and elsewhere. The PDP-1 is the original hardware for playing history's first game on a minicomputer, Steve Russell's Spacewar!

A software bug is an error, flaw or fault in the design, development, or operation of computer software that causes it to produce an incorrect or unexpected result, or to behave in unintended ways. The process of finding and correcting bugs is termed "debugging" and often uses formal techniques or tools to pinpoint bugs. Since the 1950s, some computer systems have been designed to detect or auto-correct various software errors during operations.

An undocumented feature is an unintended or undocumented hardware operation, for example an undocumented instruction, or software feature found in computer hardware and software that is considered beneficial or useful. Sometimes the documentation is omitted through oversight, but undocumented features are sometimes not intended for use by end users, but left available for use by the vendor for software support and development. Also, some unintended operation of hardware or software that ends up being of utility to users is simply a bug, flaw or quirk.

<span class="mw-page-title-main">Debugger</span> Computer program used to test and debug other programs

A debugger or debugging tool is a computer program used to test and debug other programs. The main use of a debugger is to run the target program under controlled conditions that permit the programmer to track its execution and monitor changes in computer resources that may indicate malfunctioning code. Typical debugging facilities include the ability to run or halt the target program at specific points, display the contents of memory, CPU registers or storage devices, and modify memory or register contents in order to enter selected test data that might be a cause of faulty program execution.

RT-11 is a discontinued small, low-end, single-user real-time operating system for the full line of Digital Equipment Corporation PDP-11 16-bit computers. RT-11 was first implemented in 1970. It was widely used for real-time computing systems, process control, and data acquisition across all PDP-11s. It was also used for low-cost general-use computing.

<span class="mw-page-title-main">LINC</span> Laboratory Instrument Computer (1962)

The LINC is a 12-bit, 2048-word transistorized computer. The LINC is considered by some to be the first minicomputer and a forerunner to the personal computer. Originally named the Linc, suggesting the project's origins at MIT's Lincoln Laboratory, it was renamed LINC after the project moved from the Lincoln Laboratory. The LINC was designed by Wesley A. Clark and Charles Molnar.

Incompatible Timesharing System (ITS) is a time-sharing operating system developed principally by the MIT Artificial Intelligence Laboratory, with help from Project MAC. The name is the jocular complement of the MIT Compatible Time-Sharing System (CTSS).

<span class="mw-page-title-main">Glitch</span> Short-lived fault in a computer system

A glitch is a short-lived fault in a system, such as a transient fault that corrects itself, making it difficult to troubleshoot. The term is particularly common in the computing and electronics industries, in circuit bending, as well as among players of video games. More generally, all types of systems including human organizations and nature experience glitches.

<span class="mw-page-title-main">DECtape</span>

DECtape, originally called Microtape, is a magnetic tape data storage medium used with many Digital Equipment Corporation computers, including the PDP-6, PDP-8, LINC-8, PDP-9, PDP-10, PDP-11, PDP-12, and the PDP-15. On DEC's 32-bit systems, VAX/VMS support for it was implemented but did not become an official part of the product lineup.

<span class="mw-page-title-main">PDP-9</span> 18-bit computer from Digital, 1966

The PDP-9, the fourth of the five 18-bit minicomputers produced by Digital Equipment Corporation, was introduced in 1966. A total of 445 PDP-9 systems were produced, of which 40 were the compact, low-cost PDP-9/L units.

The Harvard Mark II, also known as the Aiken Relay Calculator, was an electromechanical computer built under the direction of Howard Aiken at Harvard University, completed in 1947. It was financed by the United States Navy and used for ballistic calculations at Naval Proving Ground Dahlgren. Computer pioneers Edmund Berkeley and Grace Hopper worked together under Aiken to build and program the Mark II

In computer programming jargon, a heisenbug is a software bug that seems to disappear or alter its behavior when one attempts to study it. The term is a pun on the name of Werner Heisenberg, the physicist who first asserted the observer effect of quantum mechanics, which states that the act of observing a system inevitably alters its state. In electronics, the traditional term is probe effect, where attaching a test probe to a device changes its behavior.

A hardware bug is a defect in the design, manufacture, or operation of computer hardware that causes incorrect operation. It is the counterpart of software bugs which refer to flaws in the code which operates computers, and is the original context in which "bug" was used to refer to such flaws. Intermediate between hardware and software are microcode and firmware which may also have such defects. In common usage, a bug is subtly different from a "glitch" which may be more transient than fundamental, and somewhat different from a "quirk" which may be considered useful or intrinsic. Errata may be published by the manufacturer to reflect such unintended operation, and "errata" is sometimes used as a term for the flaws themselves.

A metaphorical extension is the "extension of meaning in a new direction" through the popular adoption of an original metaphorical comparison.

<span class="mw-page-title-main">Software feature</span> Distinguishing characteristic of a program

In software, a feature is an identifiable characteristic of a computer program.

In computer programming and software development, debugging is the process of finding and resolving bugs within computer programs, software, or systems.

References

  1. Computerworld staff (September 3, 2011). "Moth in the machine: Debugging the origins of 'bug'". Computerworld. Archived from the original on August 25, 2015.
  2. Edison to Puskas, 13 November 1878, Edison papers, Edison National Laboratory, U.S. National Park Service, West Orange, N.J., cited in Hughes, Thomas Parke (1989). American Genesis: A Century of Invention and Technological Enthusiasm, 1870-1970. Penguin Books. p. 75. ISBN   978-0-14-009741-2.
  3. Cy Meyn, Hattie the Hello Girl, The Mountain States Monitor Vol. XIX, No. 1 (Jan, 1924), Mountain States Telephone and Telegraph Co.; page 34, bottom.
  4. "Baffle Ball". Internet Pinball Database. (See image of advertisement in reference entry)
  5. "Modern Aircraft Carriers are Result of 20 Years of Smart Experimentation". Life. June 29, 1942. p. 25. Archived from the original on June 4, 2013. Retrieved November 17, 2011.
  6. Dickinson Rich, Louise (1942), We Took to the Woods, JB Lippincott Co, p. 93, LCCN   42024308, OCLC   405243, archived from the original on March 16, 2017.
  7. FCAT NRT Test, Harcourt, March 18, 2008
  8. "Danis, Sharron Ann: "Rear Admiral Grace Murray Hopper"". ei.cs.vt.edu. February 16, 1997. Retrieved January 31, 2010.
  9. "Bug Archived March 23, 2017, at the Wayback Machine ", The Jargon File, ver. 4.4.7. Retrieved June 3, 2010.
  10. 1 2 "Log Book With Computer Bug Archived March 23, 2017, at the Wayback Machine ", National Museum of American History, Smithsonian Institution.
  11. "The First "Computer Bug", Naval Historical Center. But note the Harvard Mark II computer was not complete until the summer of 1947.
  12. IEEE Annals of the History of Computing, Vol 22 Issue 1, 2000
  13. James S. Huggins. "First Computer Bug". Jamesshuggins.com. Archived from the original on August 16, 2000. Retrieved September 24, 2012.
  14. Journal of the Royal Aeronautical Society. 49, 183/2, 1945 "It ranged ... through the stage of type test and flight test and 'debugging' ..."
  15. Nicholas Carr. "'IT'S NOT A BUG, IT'S A FEATURE.' TRITE—OR JUST RIGHT?". Wired.
  16. FOCAL Programming Manual for PDP-8, PDP-8/S, PDP-8/I, LAB-8, LINC-8 (PDF). Digital Equipment Corporation. 1968. DEC-08-AJAB-D.