Bugs. They invade our cupboards. They make trails through our picnics. They hover in our gardens. One even made history for its power to cause the Mark II, an early mechanical computer, to malfunction.

The question is why did the term 'bug' come to be associated with computers and software? It's a topic swirling in controversy. There are plenty of tales. However, it seems we can either blame Ada Lovelace, the daughter of the famed poet, Lord Byron, for the origination of the use, or we can pin the term on Grace Hopper, a computer pioneer at Harvard's Computation Laboratory.

Ada Lovelace Portrait

Here are the two women's stories.

Thanks to a mother who encouraged her interest in mathematics and logic - totally unheard of in the first half of the 19th century - Ada Lovelace eventually came under the mentorship of Charles Babbage. Babbage had already conceptualized a machine capable of tabulating logarithms and trigonometric functions, but conflicts with his chief engineer and withdrawal of funding by the British government stalled construction of his apparatus.

Babbage transferred his efforts to a more generalized engine. Even though he never secured the funding to build his Analytical Engine either, Ada Lovelace described it so well in 1843 that Babbage's concept (developed between 1837 and 1840) clearly correlates to today's CPU in layout and design.

Lovelace's primary contribution to programming appears to be her translation of an Italian description of Babbage's Analytical Engine. She cited programs which Babbage had written in her notes. Some credit her with writing a program that the machine could use to calculate Bernoulli numbers. Others say the best she could do was "detect a bug in" a program Babbage wrote for her. In either case, her work preserved the knowledge of Babbage's Analytical Engine to this day.

Commodore Grace M. Hopper, USN

About 100 years later, along came Grace Hopper. She may not have coined the term, but she surely made it famous.

The date appears to be September 9, 1945. A test begins at 15:25. A problem occurs. A tech team member finds a moth in Relay 70 Panel F. Hopper is credited with saying, "First actual case of bug being found." The comment is recorded, though not by Hopper.

The etymology of the term "bug" predates computers. About 65 years earlier, Thomas Edison considered the challenges he faced during his inventive process 'bugs.' The term remained in use as the description for something that works without defect 60 years later. 1931 advertisements for the first mechanical pinball game claimed it was 'bug free.' It also appears telegraph operators had an ongoing joke years ago about the 'bugs' in the telephone cables. That was their name for the static in the line.

It's Engineering, Watson

The basis for the term 'bug' in computers, and the software that runs them, comes down to pure engineering jargon. It's a term meaning 'defect.' When you're trying to locate and resolve defects, it's called 'debugging.' That's a term the Oxford English Dictionary traces to a 1945 article in the Journal of the Royal Aeronautical Society. It appears no one thought of 'debugging' the pantry before then. At least not in print.

Bugs Have Proliferated

Computer bug

Bugs in software aren't all that different from those that infiltrate our homes. The richer or more complex the environment, the more potential for proliferation. Demands upon software and hardware have increased as our desire to do more at a faster pace continues to grow. The potential for 'bugs' or anomalies in execution has grown apace. If there weren't tools for detecting faulty execution of commands, not a smartphone or computer on the planet would stay operational.

That shows just how good a job of keeping pace with the complexity of today's multiple interfaces programmers are. They use software tools known as 'debuggers.' There are programming languages that make it easier to spot erratic behavior. There are even memory debugging tools that help identify memory corruption issues. So where bugs exist, there are exterminators to eradicate them.

So no matter how complex the interactions between apps and devices gets, programs need someone or something to work the glitches out.

Bugs Can Seem Malicious

It's interesting that in English, 'bug' can be the short version for bugbear. In the Middle Ages, a bugbear was a malicious spirit. Even if that's not the etymology behind the term computer 'bug,' it certainly fits. Every computer programmer knows the frustration of trying to find the unintentionally misplaced character or misspelled word that's breaking the program. Tools or not, some coding anomalies defy detection.

Bugs Are Not Malicious

Viruses inject code that infect computers and make them misbehave, while 'bugs' are defects in software or hardware. A virus replicates. Bugs do not.

Bug fix

Bugs Can't Be Ignored

However, just because a bug isn't malicious, doesn't mean it safe to ignore it. Hackers and malicious individuals can USE bugs to install a virus. That is why we have updates for the software on our computers, phones and even refrigerators.

The more devices connected to the internet, the more bugs are present. Hackers may use a bug in the code to gain access to a site so they can steal website traffic, or use a bug in a banking program to steal money. Even though bugs are not malicious in nature, their potential to be exploited makes them a high priority fix.

At PatraCompany, we recognize that being proactive when we find a bug in one of our custom applications is an essential component of offering custom programming and developing custom applications. You can't afford for us to leave you vulnerable to a malicious world. That's why we do everything we can to identify bugs before you do. We believe we should keep you safe.

PS - If you have any questions about securing your site against hackers or to ensure you don't have any vunerable code, please contact us.

Have a question CTA


wikipedia.org/wiki/Software_bug | wikipedia.org/wiki/Analytical_Engine | wikipedia.org/wiki/Ada_Lovelace#Work | computerworld.com | wikipedia.org/wiki/Debugging