The origin of bug, loop and patch

Bug, loop and patch - these words have been part of programmer lingo for decades. On my recent trip to the US east coast I stumbled across their origin:

The Harvard Mark I aka the IBM Automatic Sequence Controlled Calculator!

The Harvard Mark I

This amazing machine was one of the first programmable computers. I’ll tell you more about this monolith at the end of the post.

“Loop”

The Harvard Mark I Loop

The original (mechanical) loop. The program is a long paper tape with holes punched in and runs in this loop. Conditional branching is not supported (no gotos, jumps); you just have one long while (true).

“Patch”

The Harvard Mark I Loop

See the actual patch. A correction is made by literally patching a piece of the tape and punching new holes in. Fix your code with duct tape!

“Bug”

The Harvard Mark I Loop

The classic! This “bug” was found on a Mark II mechanical component, so not really a program error. It must have been working on my machine.

More..

Tidbits I found interesting:

The machine is on display at the Harvard University Science Center (where I took these photos). Hope you enjoyed this as much as I did.