The New Hacker's Dictionary - Eric S. Raymond (e book reader online txt) 📗
- Author: Eric S. Raymond
- Performer: 0262680920
Book online «The New Hacker's Dictionary - Eric S. Raymond (e book reader online txt) 📗». Author Eric S. Raymond
algorithm. Additionally, a more intelligent algorithm may imply more
long-term complexity cost and bug-chasing than are justified by the
speed improvement.
Ken Thompson, co-inventor of Unix, is reported to have uttered the
epigram "When in doubt, use brute force". He probably intended this as
a [2017]ha ha only serious, but the original Unix kernel's preference
for simple, robust, and portable algorithms over [2018]brittle `smart'
ones does seem to have been a significant factor in the success of
that OS. Like so many other tradeoffs in software design, the choice
between brute force and complex, finely-tuned cleverness is often a
difficult one that requires both engineering savvy and delicate
esthetic judgment.
Node:brute force and ignorance, Next:[2019]BSD, Previous:[2020]brute
force, Up:[2021]= B =
brute force and ignorance n.
A popular design technique at many software houses -- [2022]brute
force coding unrelieved by any knowledge of how problems have been
previously solved in elegant ways. Dogmatic adherence to design
methodologies tends to encourage this sort of thing. Characteristic of
early [2023]larval stage programming; unfortunately, many never
outgrow it. Often abbreviated BFI: "Gak, they used a [2024]bubble
sort! That's strictly from BFI." Compare [2025]bogosity.
Node:BSD, Next:[2026]BSOD, Previous:[2027]brute force and ignorance,
Up:[2028]= B =
BSD /B-S-D/ n.
[abbreviation for `Berkeley Software Distribution'] a family of
[2029]Unix versions for the [2030]DEC [2031]VAX and PDP-11 developed
by Bill Joy and others at [2032]Berzerkeley starting around 1977,
incorporating paged virtual memory, TCP/IP networking enhancements,
and many other features. The BSD versions (4.1, 4.2, and 4.3) and the
commercial versions derived from them (SunOS, ULTRIX, and Mt. Xinu)
held the technical lead in the Unix world until AT&T's successful
standardization efforts after about 1986; descendants including
Free/Open/NetBSD, BSD/OS and MacOS X are still widely popular. Note
that BSD versions going back to 2.9 are often referred to by their
version numbers alone, without the BSD prefix. See [2033]4.2,
[2034]Unix, [2035]USG Unix.
Node:BSOD, Next:[2036]BUAF, Previous:[2037]BSD, Up:[2038]= B =
BSOD /B-S-O-D/
Very commmon abbreviation for [2039]Blue Screen of Death. Both spoken
and written.
Node:BUAF, Next:[2040]BUAG, Previous:[2041]BSOD, Up:[2042]= B =
BUAF // n.
[abbreviation, from alt.fan.warlord] Big Ugly ASCII Font -- a special
form of [2043]ASCII art. Various programs exist for rendering text
strings into block, bloob, and pseudo-script fonts in cells between
four and six character cells on a side; this is smaller than the
letters generated by older [2044]banner (sense 2) programs. These are
sometimes used to render one's name in a [2045]sig block, and are
critically referred to as `BUAF's. See [2046]warlording.
Node:BUAG, Next:[2047]bubble sort, Previous:[2048]BUAF, Up:[2049]= B =
BUAG // n.
[abbreviation, from alt.fan.warlord] Big Ugly ASCII Graphic.
Pejorative term for ugly [2050]ASCII art, especially as found in
[2051]sig blocks. For some reason, mutations of the head of Bart
Simpson are particularly common in the least imaginative [2052]sig
blocks. See [2053]warlording.
Node:bubble sort, Next:[2054]bucky bits, Previous:[2055]BUAG,
Up:[2056]= B =
bubble sort n.
Techspeak for a particular sorting technique in which pairs of
adjacent values in the list to be sorted are compared and interchanged
if they are out of order; thus, list entries `bubble upward' in the
list until they bump into one with a lower sort value. Because it is
not very good relative to other methods and is the one typically
stumbled on by [2057]naive and untutored programmers, hackers consider
it the [2058]canonical example of a naive algorithm. (However, it's
been shown by repeated experiment that below about 5000 records
bubble-sort is OK anyway.) The canonical example of a really bad
algorithm is [2059]bogo-sort. A bubble sort might be used out of
ignorance, but any use of bogo-sort could issue only from brain damage
or willful perversity.
Node:bucky bits, Next:[2060]buffer chuck, Previous:[2061]bubble sort,
Up:[2062]= B =
bucky bits /buh'kee bits/ n.
obs. The bits produced by the CONTROL and META shift keys on a SAILkeyboard (octal 200 and 400 respectively), resulting in a 9-bit
keyboard character set. The MIT AI TV (Knight) keyboards extended this
with TOP and separate left and right CONTROL and META keys, resulting
in a 12-bit character set; later, LISP Machines added such keys as
SUPER, HYPER, and GREEK (see [2063]space-cadet keyboard). 2. By
extension, bits associated with `extra' shift keys on any keyboard,
e.g., the ALT on an IBM PC or command and option keys on a Macintosh.
It has long been rumored that `bucky bits' were named for Buckminster
Fuller during a period when he was consulting at Stanford. Actually,
bucky bits were invented by Niklaus Wirth when he was at Stanford in
1964-65; he first suggested the idea of an EDIT key to set the 8th bit
of an otherwise 7-bit ASCII character). It seems that, unknown to
Wirth, certain Stanford hackers had privately nicknamed him `Bucky'
after a prominent portion of his dental anatomy, and this nickname
transferred to the bit. Bucky-bit commands were used in a number of
editors written at Stanford, including most notably TV-EDIT and NLS.
The term spread to MIT and CMU early and is now in general use.
Ironically, Wirth himself remained unaware of its derivation for
nearly 30 years, until GLS dug up this history in early 1993! See
[2064]double bucky, [2065]quadruple bucky.
Node:buffer chuck, Next:[2066]buffer overflow, Previous:[2067]bucky
bits, Up:[2068]= B =
buffer chuck n.
Shorter and ruder syn. for [2069]buffer overflow.
Node:buffer overflow, Next:[2070]bug, Previous:[2071]buffer chuck,
Up:[2072]= B =
buffer overflow n.
What happens when you try to stuff more data into a buffer (holding
area) than it can handle. This problem is commonly exploited by
[2073]crackers to get arbitrary commands executed by a program running
with root permissions. This may be due to a mismatch in the processing
rates of the producing and consuming processes (see [2074]overrun and
[2075]firehose syndrome), or because the buffer is simply too small to
hold all the data that must accumulate before a piece of it can be
processed. For example, in a text-processing tool that [2076]crunches
a line at a time, a short line buffer can result in [2077]lossage as
input from a long line overflows the buffer and trashes data beyond
it. Good defensive programming would check for overflow on each
character and stop accepting data when the buffer is full up. The term
is used of and by humans in a metaphorical sense. "What time did I
agree to meet you? My buffer must have overflowed." Or "If I answer
that phone my buffer is going to overflow." See also [2078]spam,
[2079]overrun screw.
Node:bug, Next:[2080]bug-compatible, Previous:[2081]buffer overflow,
Up:[2082]= B =
bug n.
An unwanted and unintended property of a program or piece of hardware,
esp. one that causes it to malfunction. Antonym of [2083]feature.
Examples: "There's a bug in the editor: it writes things out
backwards." "The system crashed because of a hardware bug." "Fred is a
winner, but he has a few bugs" (i.e., Fred is a good guy, but he has a
few personality problems).
Historical note: Admiral Grace Hopper (an early computing pioneer
better known for inventing [2084]COBOL) liked to tell a story in which
a technician solved a [2085]glitch in the Harvard Mark II machine by
pulling an actual insect out from between the contacts of one of its
relays, and she subsequently promulgated [2086]bug in its hackish
sense as a joke about the incident (though, as she was careful to
admit, she was not there when it happened). For many years the logbook
associated with the incident and the actual bug in question (a moth)
sat in a display case at the Naval Surface Warfare Center (NSWC). The
entire story, with a picture of the logbook and the moth taped into
it, is recorded in the "Annals of the History of Computing", Vol. 3,
No. 3 (July 1981), pp. 285-286.
The text of the log entry (from September 9, 1947), reads "1545 Relay
70 Panel F (moth) in relay. First actual case of bug being found".This wording establishes that the term was already in use at the time
in its current specific sense -- and Hopper herself reports that the
term `bug' was regularly applied to problems in radar electronics
during WWII.
Indeed, the use of `bug' to mean an industrial defect was already
established in Thomas Edison's time, and a more specific and rather
modern use can be found in an electrical handbook from 1896 ("Hawkin's
New Catechism of Electricity", Theo. Audel & Co.) which says: "The
term `bug' is used to a limited extent to designate any fault or
trouble in the connections or working of electric apparatus." It
further notes that the term is "said to have originated in quadruplex
telegraphy and have been transferred to all electric apparatus."
The latter observation may explain a common folk etymology of the
term; that it came from telephone company usage, in which "bugs in a
telephone cable" were blamed for noisy lines. Though this derivation
seems to be mistaken, it may well be a distorted memory of a joke
first current among telegraph operators more than a century ago!
Or perhaps not a joke. Historians of the field inform us that the term
"bug" was regularly used in the early days of telegraphy to refer to a
variety of semi-automatic telegraphy keyers that would send a string
of dots if you held them down. In fact, the Vibroplex keyers (which
were among the most common of this type) even had a graphic of a
beetle on them (and still do)! While the ability to send repeated dots
automatically was very useful for professional morse code operators,
these were also significantly trickier to use than the older manual
keyers, and it could take some practice to ensure one didn't introduce
extraneous dots into the code by holding the key down a fraction too
long. In the hands of an inexperienced operator, a Vibroplex "bug" on
the line could mean that a lot of garbled Morse would soon be coming
your way.
Further, the term "bug" has long been used among radio technicians to
describe a device that converts electromagnetic field variations into
acoustic signals. It is used to trace radio interference and look for
dangerous radio emissions. Radio community usage derives from the
roach-like shape of the first versions used by 19th century
physicists. The first versions consisted of a coil of wire (roach
body), with the two wire ends sticking out and bent back to nearly
touch forming a spark gap (roach antennae). The bug is to the radio
technician what the stethoscope is to the stereotype medical doctor.
This sense is almost certainly ancestral to modern use of "bug" for a
covert monitoring device, but may also have contributed to the use of
"bug" for the effects of radio interference itself.
Actually, use of `bug' in the general sense of a disruptive event goes
back to Shakespeare! (Henry VI, part III - Act V, Scene II: King
Edward: "So, lie thou there. Die thou; and die our fear; For Warwick
was a bug that fear'd us all.") In the first edition of Samuel
Johnson's dictionary one meaning of `bug' is "A frightful object; a
walking spectre"; this is traced to `bugbear', a Welsh term for a
variety of mythological monster which (to complete the circle) has
recently been reintroduced into the popular lexicon through fantasy
role-playing games.
In any case, in jargon the word almost never refers to insects. Here
is a plausible conversation that never actually happened:
"There is a bug in this ant farm!"
"What do you mean? I don't see any ants in it."
"That's the bug."
A careful discussion of the etymological issues can be found in a
paper by Fred R. Shapiro, 1987, "Entomology of the Computer Bug:
History and Folklore", American Speech 62(4):376-378.
[There has been a widespread myth that the original bug was moved to
the Smithsonian, and an earlier version of this entry so asserted. A
correspondent who thought to check discovered that the bug was not
there. While investigating this in late 1990, your editor discovered
that the
Comments (0)