Kludge

From Wikipedia, the free encyclopedia
  (Redirected from Hack (computer science))
Jump to: navigation, search
This article is about the workaround. For the American music magazine, see Kludge (magazine).
Part of the Miles Glacier Bridge, with a "kludgy" temporary fix to make the bridge usable after earthquake damage.

A kludge (or kluge) (klo̅o̅j) is a workaround or quick-and-dirty solution that is clumsy, inelegant, difficult to extend, and hard to maintain, yet an effective and quick solution to a problem. It is a rough synonym to the term "jury rig". This term is used in diverse fields such as computer science, aerospace engineering, internet slang, and evolutionary neuroscience.

Pronunciation and etymology[edit]

The present word has alternate spellings (kludge and kluge) and pronunciations (/ˈklʌ/ and /ˈkl/, rhyming with judge and stooge respectively), and several proposed etymologies.

In the Oxford English Dictionary (2nd ed., 1989), the kludge entry cites one source for this word's earliest recorded usage, definition, and etymology: Jackson W. Granholm's 1962 "How to Design a Kludge" article, which appeared in the American computer magazine Datamation.[1]

kludge /ˈkl/ Also kluge. [J. W. Granholm's jocular invention: see first quot.; cf. also bodge v., fudge v.][2]

'An ill-assorted collection of poorly-matching parts, forming a distressing whole' (Granholm); esp. in Computing, a machine, system, or program that has been improvised or 'bodged' together; a hastily improvised and poorly thought-out solution to a fault or 'bug'. …

Although the OED accepts Granholm's definition and credits him with the invention, there may be examples of its use before the 1960s but it is certainly a 20th century coinage.
A source of some confusion has been Granholm's jocular citation of the wholly fictitious lexicographer, Phineas Burling, of the firm "Fink and Wiggles" for Funk & Wagnalls as confirming the Germanic origins of the word. This has given rise to much spurious comment about its derivation from the German adjective "klug" meaning clever, which is unlikely for the following reasons:

  • There is no equivalent usage in the German language
  • Both pronunciations of the word contain the soft "g" which is not present in German
  • The word emerges in English only in the 20th century


It is more likely, therefore, that it derives from the mispronunciation of a European surname Kluge (be that German, Dutch or Scandinavian) as is plausibly described in the paper feeder story below.
Even if Burling's etymology were true, it is doubtful that the American Military or Computer engineers, who began using the term in the 20th century, could have been aware of a term, which had obviously fallen from use in East Anglia sometime in the preceding 400 years.

A phone call to Phineas Burling can be revealing. Phineas Burling is the Chief calligrapher with the Fink and Wiggles Publishing Company, Inc. Fink and Wiggles are, of course, the well known publishers of the NEW MULTILINGUAL DICTIONARY. According to Burling, the word "kludge" first appeared in the English language in the early fifteen-hundreds. It was imported into the geographic region of the lowlands between King's Lynn (then Bishop's Lynn) and the Isle of Ely by Dutch settlers arriving there to reclaim tidelands of the Wash as rutabaga fields. …

The word "kludge" is, according to Burling, derived from the same root as the German "klug" (Dutch kloog, Swedish Klag, Danish Klog, Gothic Klaugen, Lettish Kladnis and Sanskrit Veklaunn), originally meaning "smart" or "witty". In the typical machinations of language in evolutionary growth, the word "Kludge" eventually came to mean "not so smart" or "pretty ridiculous". Today the leading definition given by the NEW MULTILINGUAL is, "An ill-assorted collection of poorly-matching parts, forming a distressing whole."

It is in this latter sense that "Kludge" is used by computer hardware men. Today "kludge" forms one of the most beloved words in design terminology, and it stands ready for handy application to the work of anyone who gins up 110-volt circuitry to plug into the 220 VAC source. The building of a Kludge, however, is not work for amateurs. There is a certain, indefinable, masochistic finesse that must go into true Kludge building. The professional can spot it instantly. The amateur may readily presume that "that's the way computers are".[3]

This OED2 entry also includes the verb kludge "to improvise with a kludge or kludges" and kludgemanship "skill in designing or applying kludges".

The Jargon File (a.k.a. The New Hacker's Dictionary), which is a glossary of computer programmer slang maintained by Eric S. Raymond, differentiates kludge from kluge and cites usage examples predating 1962.

kludge

1. /kluhj/ n. Incorrect (though regrettably common) spelling of kluge (US). These two words have been confused in American usage since the early 1960s, and widely confounded in Great Britain since the end of World War II.
2. [TMRC] A crock that works. (A long-ago Datamation article by Jackson Granholme [sic] similarly said: "An ill-assorted collection of poorly matching parts, forming a distressing whole.")

3. v. To use a kludge to get around a problem. "I've kludged around it for now, but I'll fix it up properly later."[4]

This Jargon File entry notes kludge apparently derives via British military slang from Scots cludge or cludgie[5][6] meaning "a common toilet", and became confused with U.S. kluge during or after World War II.

kluge: /klooj/ [from the German 'klug', clever; poss. related to Polish & Russian 'klucz' (a key, a hint, a main point)]

1. n. A Rube Goldberg (or Heath Robinson) device, whether in hardware or software.
2. n. A clever programming trick intended to solve a particular nasty case in an expedient, if not clear, manner. Often used to repair bugs. Often involves ad-hockery and verges on being a crock.
3. n. Something that works for the wrong reason.
4. vt. To insert a kluge into a program. "I've kluged this routine to get around that weird bug, but there's probably a better way."

5. [WPI] n. A feature that is implemented in a rude manner.[4]

This entry notes kluge, which is now often spelled kludge, "was the original spelling, reported around computers as far back as the mid-1950s and, at that time, used exclusively of hardware kluges". The Jargon File gives possible etymologies from naval slang (cf. jury rig) or printing equipment.

First, kluge "was common Navy slang in the WWII era for any piece of electronics that worked well on shore but consistently failed at sea". A 1947 article in the New York Folklore Quarterly recorded the classic shaggy dog story "'Murgatroyd the Kluge Maker' then current in the Armed Forces, in which a 'kluge' was a complex and puzzling artifact with a trivial function."[7]

Second, the "Kluge paper feeder" was an automatic paper feeder for printing presses, which was first manufactured by Brandtjen and Kluge in 1919. It supposedly had a Rube Goldberg machine reputation, and was "temperamental, subject to frequent breakdowns, and devilishly difficult to repair — but oh, so clever!"

The Jargon File further includes kluge around "to avoid a bug or difficult condition by inserting a kluge", kluge up "to lash together a quick hack to perform a task". After Granholm's 1962 "How to Design a Kludge" article popularized the kluge variant kludge, both were interchangeably used and confused. The Jargon File concludes:

The result of this history is a tangle. Many younger U.S. hackers pronounce the word as /klooj/ but spell it, incorrectly for its meaning and pronunciation, as 'kludge'. … British hackers mostly learned /kluhj/ orally, use it in a restricted negative sense and are at least consistent. European hackers have mostly learned the word from written American sources and tend to pronounce it /kluhj/ but use the wider American meaning! Some observers consider this mess appropriate in view of the word's meaning.

Other suggested folk etymologies or backronyms for kludge or kluge is from klumsy, lame, ugly, dumb, but good enough, or klutzy, lashup, under, going, engineering.[citation needed]

Recapitulation[edit]

The term kluge as an overly complicated or obscure contraption dates back at least to 1947, as evidenced by the article in the New York Folklore Quarterly,[7] but the term must have been in use long before that for the story to have any sense. The following purports to be a summary of the original article that is somewhat more complete than the one quoted above:

On being drafted into the navy, Murgatroyd gave his profession as "kluge maker".

Not wanting to seem ignorant, the clerk simply wrote this down. Whenever Murgatroyd was asked what he was doing, he said he was making a kluge, and actually he was one of the world's best kluge makers. Not wanting to seem ignorant, his superiors kept giving him commendations and promotions, until he reached the dizzy heights of commodore.

One day the admiral came to inspect the ship. When Murgatroyd explained he was a kluge maker, the admiral asked him what a kluge was – the first person ever to do so. Murgatroyd said it was hard to explain, but he would make one so the admiral could see what it was. After a couple of days, he returned with a complex object.

"Interesting," said the admiral, "but what does it do?"

In reply, Murgatroyd dropped it over the side of the ship. As the thing sank, it went "kluge".[1]

Another hypothesis for the origin of the term dates back to 1907, "when John Brandtjen convinced two young machinists from Oslo, Norway named Abel and Eneval Kluge to service and install presses for his fledgling printing equipment firm" (see external link, history of the Kluge Platen Press). In 1919, the brothers invented an automatic feeder for printing presses which, by 1929, allowed Brandtjen and Kluge to move into a 3-story building in St. Paul, MN. The Kluge brothers continued to innovate, and the company still exists as of 2011.

While the automatic feeder was a success, unverified sources claim that it developed a reputation for being temperamental, prone to breakdowns, and difficult to repair. Given that the feeder bore the Kluge name, it seems reasonable that it became a byword for overly complex mechanical contraptions. The Free Online Dictionary of Computing (FOLDOC) claims that the term kluge "was used in connection with computers as far back as the mid-1950s and, at that time, was used exclusively of *hardware* kluges".[2] The fact that it was originally applied only to hardware again points back to the paper feeder as the original source of the term. FOLDOC goes on to say, "TMRC and the MIT hacker culture of the early 1960s seems to have developed in a milieu that remembered and still used some WWII military slang (see also foobar). It seems likely that 'kluge' came to MIT via alumni of the many military electronics projects run in Cambridge during the war (many in MIT's venerable Building 20, which housed TMRC until the building was demolished in 1999)." This would explain the terms introduction into the software community.

This explanation would then point to the source of the term as a Norwegian surname, with no connection to German.

The term kludge would then seem to have separate origins, possibly in Britain. The terms tended to merge because of their similar pronunciations and meanings. However, kluge seems to have the sense of overly complicated, while kludge has only the sense of poorly done.

Cf. German Klōß, diminutive Klößchen clod, Low Saxon klut, klute, Dutch kluit [3], perhaps related to Low German diminutive klütje "dumpling, clod", Danish Jutland dial. klyt "piece of bad workmanship, kludge",[8] and Standard Danish kludder "mess, disorder".

In aerospace engineering[edit]

In aerospace design a kludge was a temporary design using separate commonly available components that were not flight worthy in order to proof the design and enable concurrent software development while the integrated components were developed and manufactured. The term was in common enough use to appear in a fictional movie about the US space program.[9]

Perhaps the ultimate kludge was the first US space station, Skylab. Its two major components, the Saturn Workshop and the Apollo Telescope Mount, began their development as separate projects (the SWS was kludged from the S-IVB stage of the Saturn 1B and Saturn V launch vehicles, the ATM was kludged from an early design for the descent stage of the Apollo Lunar Module). Later the SWS and ATM were folded into the Apollo Applications Program, but the components were to have been launched separately, then docked together in orbit. In the final design, the SWS and ATM were launched together, but for the single-launch concept to work, the ATM had to pivot 90 degrees on a truss structure from its launch position to its on-orbit orientation, clearing the way for the crew to dock its Apollo Command/Service Module at the axial docking port of the Multiple Docking Adapter.

The Airlock Module's manufacturer, McDonnell Douglas, even recycled the hatch design from its Gemini spacecraft and kludged what was originally designed for the conical Gemini Command Module onto the cylindrical Skylab Airlock Module. The Skylab project, managed by the National Aeronautics and Space Administration's Marshall Space Flight Center, was seen by the Manned Spacecraft Center (later Johnson Space Center) as an invasion of its historical role as the NASA center for manned spaceflight. Thus, MSC personnel missed no opportunity to disparage the Skylab project, calling it "the kludge".[citation needed]

In computer science[edit]

In modern computing terminology, a kludge (or often a "hack") is a solution to a problem, doing a task, or fixing a system that is inefficient, inelegant, or even unfathomable, but which nevertheless (more or less) works. To kludge around something is to avoid a bug or some difficult condition by building a kludge, perhaps relying on properties of the bug itself to assure proper operation. It is somewhat similar in spirit to a workaround, only without the grace. A kludge is often used to change the behavior of a system after it is finished, without having to make fundamental changes. Sometimes the kludge is introduced in order to keep backwards compatibility, but often it is simply introduced because the kludge is an easier alternative. That something was often originally a crock, which is why it must now be hacked to make it work. Note that a hack might be a kludge, but that 'hack' could be, at least in computing, ironic praise, for a quick fix solution to a frustrating problem.[10]

A kludge is often used to fix an unanticipated problem in an earlier kludge; this is essentially a kind of cruft.

Something might be a kludge if it fails in corner cases, but this is a less common sense as such situations are not expected to come up in typical usage. More commonly, a kludge is a poorly working heuristic which was expected to work well. An intimate knowledge of the context (i.e., problem domain and/or the kludge's execution environment) is typically required to build a corner case kludge. As a consequence, they are sometimes ironically praised.

An anecdotal example of a kludge involved a computer part supposedly manufactured in the Soviet Union during the 1960s. The part needed slightly delayed receipt of a signal to work. Rather than setting up a timing system, the kludge was to make the internal wires extra-long, increasing the distance and thus increasing the time the electrical signal took to reach its destination.

A variation on this use of kludge is evasion of an unknown problem or bug in a computer program. Rather than continue to struggle to find out exactly what is causing the bug and how to fix it, the programmer may hack the problem by the simple kludge of writing new code which compensates. For example, if a variable keeps ending up doubled in a certain code area, add code which divides by two when it is used, after the original code has been executed.

In computer networking, use of NAT (Network Address Translation) (RFC 1918) or PAT (Port Address Translation) to cope with the shortage of IPv4 addresses is an example of a kludge. Another common example are quickstarts like those shipped with Microsoft Office, OpenOffice.org, RealPlayer, QuickTime and Adobe products, in which a bloated program that normally takes a long time to load is kept in memory to reduce the delay in starting it.

In FidoNet terminology, the term "kludge" refers to a piece of control data embedded inside a message.

In evolutionary neuroscience[edit]

The kludge or kluge metaphor has been adapted in fields such as evolutionary neuroscience, particularly in reference to the human brain.

The neuroscientist David Linden discusses how intelligent design proponents have misconstrued brain anatomy.

The transcendent aspects of our human experience, the things that touch our emotional and cognitive core, were not given to us by a Great Engineer. These are not the latest design features of an impeccably crafted brain. Rather, at every turn, brain design has been a kludge, a workaround, a jumble, a pastiche. The things we hold highest in our human experience (love, memory, dreams, and a predisposition for religious thought) result from a particular agglomeration of ad hoc solutions that have been piled on through millions of years of evolution history. It's not that we have fundamentally human thoughts and feelings despite the kludgy design of the brain as molded by the twists and turns of evolutionary history. Rather, we have them precisely because of that history.[11]

The research psychologist Gary Marcus's book Kluge: The Haphazard Construction of the Human Mind compares evolutionary kluges with engineering ones like manifold vacuum-powered windshield wipers – when you accelerated or drove uphill, "Your wipers slowed to a crawl, or even stopped working altogether."

For instance, the vertebrate eye's retina that is installed backward, facing the back of the head rather than the front. As a result, all kinds of stuff gets in its way, including a bunch of wiring that passes through the eye and leaves us with a pair of blind spots, one in each eye.[12]

Other uses[edit]

In the science fiction television series Andromeda, genetically engineered human beings called Nietzscheans use the term disparagingly to refer to genetically unmodified humans.

In John Varley's 1985 short story "Press Enter_" the antagonist, a reclusive hacker with unprecedented access to many electronic databases, adopts the identity Charles Kluge.

See also[edit]

References[edit]

  1. ^ Robina Mapstone (7 June 1973), Computer Oral History Collection, Jackson Granholm (PDF), Smithsonian National Museum of American History 
  2. ^ This OED2 defines these two kludge cognates as bodge "to patch or mend clumsily" and fudge "to fit together or adjust in a clumsy, makeshift, or dishonest manner".
  3. ^ Jackson W. Granholm (February 1962). How to Design a Kludge. Datamation. pp. 30–31. 
  4. ^ a b Eric S. Raymond. "The Jargon File". Retrieved 2 November 2010. 
  5. ^ SND Cludgie
  6. ^ SND Cludie
  7. ^ a b Agnes Nolan Underwood (Winter 1947). Folklore from G. I. Joe, New York Folklore Quarterly. III, No. 4. New York Folklore Society. pp. 285–297. 
  8. ^ Hansen, Aage (1926). "Et par etymologier". In Knudsen, Gunnar; Kristensen, Marius. Danske Studier (in Danish) (Nordisk Forlag): 90. Retrieved 22 December 2011. 
  9. ^ Marooned (film). 1969. Dialog between space crew and Ted approximately 30 minutes into the movie, following capsule power down. Ted says, "I'm in Huntsville kludging up a simulator of the XRV." The film was based on the 1964 novel of the same name.
  10. ^ Kidder, Tracey (1982). The Soul of a New Machine. Avon. ISBN 978-0-380-59931-8. 
  11. ^ Linden, David J. (2007). The Accidental Mind: How Brain Evolution Has Given Us Love, Memory, Dreams, and God. Belknap Press. pp. 245–246. ISBN 0-674-02478-8. 
  12. ^ Marcus, Gary (2008). Kluge: The Haphazard Construction of the Human Mind. Houghton Mifflin Co. pp. 4–5. ISBN 0-618-87964-1. 

External links[edit]