| • Science | • People | • Locations | • Timeline |
| Contents | ||
__NOTOC__ A kludge (or kluge) is a 'solution' for accomplishing a task, originally a mechanical one and usually an engineering one, which consists of various otherwise unrelated parts and mechanisms, cobbled together in a untidy or downright messy manner. A kludge is never elegant except ironically, nor, serviceability to the task at hand excepted, is it ever admirable. Despite this, it generally takes a skilled craftsman, someone intimately familar with the requirements of the desired task, the properties of the raw material at hand, and the ultimate operating environment, to produce a workaround monstrously clunky enough to be called a kludge.
There are reports that the term was in use as early as the 1940s in Britain, although the first usage listed by the Oxford English Dictionary is by J.W. Granholm in the American Datamation magazine in 1962:
The German word meant here is actually 'klug' (no e), and is more 'clever' or 'sly' than 'smart' or 'intelligent'.
In naval parlance, a kluge was usually a machine or process which worked perfectly ashore, but never aboard ship. The resulting inoperative machinery was regarded as so much clutter; a minor naval use of the word came to apply to clutter in general, especially as it might impede shipboard operations. Compare with Rube Goldberg's machines or Heath Robinson's.
In modern computing terminology, a kludge is a method of solving a problem, doing a task, or fixing a system (whether hardware or software) that is inefficient, inelegant, or unfathomable, but which nevertheless works. To kluge around
Something might be a kludge if it fails in corner casesA corner case is a problem or situation that occurs only outside of normal operating parameters--especially one that manifests itself when multiple environmental variables or conditions are simultaneously at extreme levels. For example, a stereo speaker m, but this is a less common sense as such situations are never, ever, expected to actually happen. (For some value of 'never', anyway.) More commonly, a kludge is a poorly working heuristicFor alternative uses, see heuristic In computer science, two fundamental goals are finding algorithms with provably good run times and with provably good, usually optimal, solution quality. A heuristic is an algorithm that gives up one or both of these go which was expected (hoped, dreamed for) to work well. An intimate knowledge of the context (ie, 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. For instance, "I can't believe you were able to kludge up something to make the system work with that brontosaurus printer of Smith's. Should have trashed it years ago. Wow!"