BRS /B-R-S/ n.
Syn. Big Red Switch.
This abbreviation is fairly common on-line.
Node:brute force, Next:brute force and
ignorance, Previous:BRS,
Up:= 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 brute force and
ignorance).
The canonical example of a
brute-force algorithm is associated with the `traveling salesman
problem' (TSP), a classical 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 bignum). Sometimes, unfortunately, there
is no better general solution than brute force. See also NP-.
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 ha ha
only serious, but the original Unix kernel's preference
for simple, robust, and portable algorithms over 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:BSD,
Previous:brute force,
Up:= B =
brute force and ignorance n.
A popular design technique at many software houses -- 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 larval stage programming;
unfortunately, many never outgrow it. Often abbreviated BFI:
"Gak, they used a bubble
sort! That's strictly from BFI." Compare bogosity.
Node:BSD, Next:BSOD, Previous:brute force and ignorance,
Up:= B =
BSD /B-S-D/ n.
[abbreviation for `Berkeley Software Distribution'] a family
of Unix versions for the DEC VAX and PDP-11
developed by Bill Joy and others at 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 4.2, Unix, USG
Unix.
Node:BSOD, Next:BUAF, Previous:BSD,
Up:= B =