Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

The New Hacker's Dictionary

.pdf
Скачиваний:
224
Добавлен:
10.08.2013
Размер:
1.62 Mб
Скачать

191

---

Node:brittle, Next:[1960]broadcast storm, Previous:[1961]bring X to its knees, Up:[1962]= B =

brittle adj.

Said of software that is functional but easily broken by changes in operating environment or configuration, or by any minor tweak to the software itself. Also, any system that responds inappropriately and disastrously to abnormal but expected external stimuli; e.g., a file system that is usually totally scrambled by a power failure is said to be brittle. This term is often used to describe the results of a research effort that were never intended to be robust, but it can be applied to commercial software, which (due to closed-source development) displays the quality far more often than it ought to. Oppose [1963]robust.

---

Node:broadcast storm, Next:[1964]brochureware, Previous:[1965]brittle, Up:[1966]= B =

broadcast storm n.

[common] An incorrect packet broadcast on a network that causes most hosts to respond all at once, typically with wrong answers that start the process over again. See [1967]network meltdown; compare [1968]mail storm.

---

Node:brochureware, Next:[1969]broken, Previous:[1970]broadcast storm, Up:[1971]= B =

brochureware n.

192

Planned but non-existent product like [1972]vaporware, but with the added implication that marketing is actively selling and promoting it (they've printed brochures). Brochureware is often deployed as a strategic weapon; the idea is to con customers into not committing to an existing product of the competition's. It is a safe bet that when a brochureware product finally becomes real, it will be more expensive than and inferior to the alternatives that had been available for years.

---

Node:broken, Next:[1973]broken arrow, Previous:[1974]brochureware, Up:[1975]= B =

broken adj.

1. Not working properly (of programs). 2. Behaving strangely; especially (when used of people) exhibiting extreme depression.

---

Node:broken arrow, Next:[1976]BrokenWindows, Previous:[1977]broken, Up:[1978]= B =

broken arrow n.

[IBM] The error code displayed on line 25 of a 3270 terminal (or a PC emulating a 3270) for various kinds of protocol violations and "unexpected" error conditions (including connection to a [1979]down computer). On a PC, simulated with `->/---', with the two center characters overstruck.

Note: to appreciate this term fully, it helps to know that `broken arrow' is

also military jargon for an accident involving nuclear weapons....

---

193

Node:BrokenWindows, Next:[1980]broket, Previous:[1981]broken arrow, Up:[1982]= B =

BrokenWindows n.

Abusive hackerism for the [1983]crufty and [1984]elephantine [1985]X environment on Sun machines; properly called `OpenWindows'.

---

Node:broket, Next:[1986]Brooks's Law, Previous:[1987]BrokenWindows,

Up:[1988]= B =

broket /broh'k*t/ or /broh'ket`/ n.

[rare; by analogy with `bracket': a `broken bracket'] Either of the characters < and >, when used as paired enclosing delimiters. This word originated as a contraction of the phrase `broken bracket', that is, a bracket that is bent in the middle. (At MIT, and apparently in the [1989]Real World as well, these are usually called [1990]angle brackets.)

---

Node:Brooks's Law, Next:[1991]brown-paper-bag bug,

Previous:[1992]broket, Up:[1993]= B =

Brooks's Law prov.

"Adding manpower to a late software project makes it later" -- a result of the fact that the expected advantage from splitting development work among N programmers is O(N) (that is, proportional to N), but the complexity and communications cost associated with coordinating and then merging their work is O(N^2) (that is, proportional to the square of N). The quote is from Fred Brooks, a manager of IBM's OS/360 project and author of "The Mythical Man-Month" (Addison-Wesley, 1975, ISBN 0-201-00650-2), an excellent early book on software engineering. The myth

194

in question has been most tersely expressed as "Programmer time is fungible" and Brooks established conclusively that it is not. Hackers have never forgotten his advice (though it's not the whole story; see [1994]bazaar); too often, [1995]management still does. See also [1996]creationism, [1997]second-system effect, [1998]optimism.

---

Node:brown-paper-bag bug, Next:[1999]browser, Previous:[2000]Brooks's Law, Up:[2001]= B =

brown-paper-bag bug n.

A bug in a public software release that is so embarrassing that the author notionally wears a brown paper bag over his head for a while so he won't be recognized on the net. Entered popular usage after the early-1999 release of the first Linux 2.2, which had one. The phrase was used in Linus Torvalds's apology posting.

---

Node:browser, Next:[2002]BRS, Previous:[2003]brown-paper-bag bug, Up:[2004]= B =

browser n.

A program specifically designed to help users view and navigate hypertext, on-line documentation, or a database. While this general sense has been present in jargon for a long time, the proliferation of browsers for the World Wide Web after 1992 has made it much more popular and provided a central or default techspeak meaning of the word previously lacking in hacker usage. Nowadays, if someone mentions using a `browser' without qualification, one may assume it is a Web browser.

---

195

Node:BRS, Next:[2005]brute force, Previous:[2006]browser, Up:[2007]= B

=

BRS /B-R-S/ n.

Syn. [2008]Big Red Switch. This abbreviation is fairly common on-line.

---

Node:brute force, Next:[2009]brute force and ignorance,

Previous:[2010]BRS, Up:[2011]= B =

brute force adj.

Describes a primitive programming style, one in which the programmer relies on the computer's processing power instead of using his or her own intelligence to simplify the problem, often ignoring problems of scale and applying naive methods suited to small problems directly to large ones. The term can also be used in reference to programming style: brute-force programs are written in a heavyhanded, tedious way, full of repetition and devoid of any elegance or useful abstraction (see also [2012]brute force and ignorance).

The [2013]canonical example of a brute-force algorithm is associated with the `traveling salesman problem' (TSP), a classical [2014]NP-hard problem: Suppose a person is in, say, Boston, and wishes to drive to N other cities. In what order should the cities be visited in order to minimize the distance travelled? The brute-force method is to simply generate all possible routes and compare the distances; while guaranteed to work and simple to implement, this algorithm is clearly very stupid in that it considers even obviously absurd routes (like going from Boston to Houston via San Francisco and New York, in that order). For very small N it works well, but it rapidly becomes absurdly inefficient when N increases (for N = 15, there are already 1,307,674,368,000 possible routes to consider, and for N = 1000 -- well, see [2015]bignum). Sometimes, unfortunately, there is no better general solution than brute force. See also [2016]NP-.

196

A more simple-minded example of brute-force programming is finding the smallest number in a large list by first using an existing program to sort the list in ascending order, and then picking the first number off the front.

Whether brute-force programming should actually be considered stupid or not depends on the context; if the problem is not terribly big, the extra CPU time spent on a brute-force solution may cost less than the programmer time it would take to develop a more `intelligent' 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.

---

197

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

198

[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.

---

199

Node:bucky bits, Next:[2060]buffer chuck, Previous:[2061]bubble sort, Up:[2062]= B =

bucky bits /buh'kee bits/ n.

1. obs. The bits produced by the CONTROL and META shift keys on a SAIL keyboard (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.

200

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

Соседние файлы в предмете Английский язык