Free On-line Dictionary of Computing

	FOLDOC is a searchable dictionary of acronyms, jargon,
	programming languages, tools, architecture, operating systems,
	networking, theory, conventions, standards, mathematics,
	telecoms, electronics, institutions, companies, projects,
	products, history, in fact anything to do with computing.

	This dictionary is Copyright Denis Howe 1993, 1997.

	Permission is granted to make and distribute verbatim copies
	of this dictionary or modified versions or translations into
	another language, provided that every such copy or derived
	work carries the above copyright notice and is distributed
	under terms identical to these.  Individual definitions from
	this dictionary may be used without restriction provided no
	more than twenty are used in any one work.

	Please refer to the dictionary as "The Free On-line Dictionary
	of Computing, http://wombat.doc.ic.ac.uk/, Editor Denis Howe"
	or similar.

	The dictionary has been growing since 1985 and now contains
	over 11000 definitions totalling more than four megabytes.
	Entries are cross-referenced to each other and to related
	resources elsewhere on the net.  It services around 5000
	queries per day.

	Where {LaTeX} commands for certain non-{ASCII} symbols are
	mentioned, they are described in their own entries.  "\" is
	also used to represent the Greek lower-case lambda used in
	{lambda-calculus}.  Cross-references to other entries look
	{like this}.  Note that not all cross-references actually lead
	anywhere yet, but if you find one that leads to something
	inappropriate, please let me know.  Dates after entries
	indicate when that entry was created, updated or first
	date-stamped.  They do not imply that it was up-to-date at
	that time.

	You can search the latest version of the dictionary by {WWW}
	(URL http://wombat.doc.ic.ac.uk/).  If you find an entry that
	is wrong or inadequate please let me know.

	See {Pronunciation} for how to interpret the pronunciation
	given for some entries.

	Denis Howe <dbh@doc.ic.ac.uk> +44 (171) 606 7080 x8161

	(09 Dec 1996)

Acknowledgements

	Many thanks to the hundreds of contributors, and especially to
	the {Guest Editors (editors.html)}, mirror site maintainers
	and the maintainers of the following resources from which some
	entries originate:

	Mike Sendall's STING Software engineering glossary
	<sendall@dxpt01.cern.ch>, 13 Oct 1993,

	Bill Kinnersley's {Language List
	(http://cuiwww.unige.ch/langlist)} v2.2, 15 Jan 1994,

	Mark Hopkins' catalogue of Free Compilers and Interpreters
	v6.4, 28 Feb 1994,

	The on-line hacker {Jargon File} v3.0.0, 27 Jul 1993,

	Internet Users' Glossary (RFC 1392, FYI 18), Jan 1993.

	John Cross's computer glossary, 01 Nov 1994.

	John Bayko's Great Microprocessors of the Past and Present,
	v4.0.0, 18 Aug 1994.

	{Electronic Commerce Dictionary}.

	(01 Aug 1997)

"

	{double quote}

%

	{percent}

,

	{comma}

0

	{zero}

0/1 knapsack problem

	<application> The {knapsack problem} restricted so that the
	number of each item is zero or one.

	(13 Mar 1995)

100BaseT

	<networking> Any of several 100 {MBps} {CSMA/CD} {Ethernet}
	standards for {twisted pair} cables, including: 100BaseTx (100
	Mbps over two-pair {Cat5} or better cable), 100BaseT4 (100
	Mbps over four-pair {Cat3} or better cable), 100BaseT2 (in
	committee; 100 Mbps over two-pair Cat3 or better cable).  All
	are standards (or planned standards) under {IEEE} {802.3}.

	(07 Jan 1997)

10base2

	<networking> (Or "cheapernet") The variant of {Ethernet} that
	uses thin {coaxial} cable (RG-58 or similar), as opposed to
	"full spec" {10base5} yellow cable.  The "10" means 10 {Mbps},
	"base" means "baseband" as opposed to RF, and "2" means a
	maximum single cable length of 200m.

	(14 Nov 1995)

10base5

	<networking> The original "full spec" variant of {Ethernet},
	using a thick {coaxial} cable ("yellow cable").  The "10"
	means 10 {Mbps}, "base" means "baseband" as opposed to RF, and
	"5" means a maximum single cable length of 500m.

	Compare {10base2}, {10baseT}.

	(11 Nov 1995)

10BaseT

	<networking> A variant of {Ethernet} which allows stations to
	be attached via {twisted pair} cable.

	(24 Jan 1995)

120 reset

	<jargon> /wuhn-twen'tee ree'set/ (After 120 volts, US mains
	voltage) To cycle power on a computer in order to reset or
	unjam it.

	Compare {Big Red Switch}, {power cycle}.

	(23 Nov 1994)

1-2-3

	{Lotus 1-2-3}

1394

	{High Performance Serial Bus}

1541

	{Commodore 1541}

1581

	{Commodore 1581}

16550

	<hardware> A version of the 16450 {UART} with a 16-byte {FIFO}
	buffer.  Now revised to the 16550A.

	(24 Jan 1995)

16 bit

	<architecture, programming> Using {words} containing sixteen
	{bits}.  This adjective often refers to the number of bits
	used internally by a computer's {CPU}.  E.g. "The {Intel 8086}
	is a sixteen bit processor".  Its external {data bus} or
	{address bus} may be narrower.  The term may also refer to the
	size of an instruction in the computer's {instruction set} or
	to any other item of data.

	See also {16-bit application}.

	(13 May 1996)

16-bit application

	<operating system> Software for {MS-DOS} or {Microsoft
	Windows} which originally ran on the 16-bit {Intel 8088} and
	{80286} {microprocessors}.  These used a {segmented address
	space} to extend the range of addresses from what is possible
	with just a 16-bit address.  Programs with more than 64
	kilobytes of code or data therefore had to waste time
	switching between {segments}.  Furthermore, programming with
	segments is more involved than programming in a {flat address
	space}, giving rise to {warts} like {memory models} in {C} and
	{C++}.

	Compare {32-bit application}.

	(06 Apr 1996)

1802

	<processor> An 8-bit {microprocessor} currently manufactured
	as CDP1802 by {HARRIS Semiconductor}.  It has been around for
	ten years at least and is ideally suited for {embedded}
	applications.  Some of its features are: 8-bit parallel
	organisation with bidirectional {data bus} and {multiplexed
	address bus}; static design -- no minimum clock frequency;
	bit-programmable output port; four input pins which are
	directly tested by branch instructions; flexible programmable
	I/O mode; single-phase clock, with on-chip oscillator; 16 x 16
	register matrix to implement multiple {program counters},
	pointers, or {registers}

	(21 Nov 1995)

1TBS

	One True Brace Style.

	See {indent style}.

	(25 Jan 1995)

1.TR.6

	<networking, protocol> A {control channel protocol} for
	{ISDN}.  It is a national {standard} in Germany but is being
	replaced by {Euro-ISDN}.

	(27 Mar 1995)

2

	<convention, character> In names of translation software,
	infix 2 often represents the word "to" with the connotation
	"translate to", as in {dvi2ps} ({DVI} to {PostScript}),
	int2string (integer to string) and {texi2roff} ({Texinfo} to
	[nt]{roff}).

	(25 Jan 1995)

20-GATE

	<language> An algebraic language for the {G-20}, developed at
	{Carnegie} around 1965.

	(27 Feb 1995)

2780

	{Binary Synchronous Transmission}

2B1D

	{2B+D}

2B1Q

	{two-binary, one-quaternary}

2B+D

	<communications> Two {bearer channels}, one {data channel}.

	See {basic rate interface}.  Note that the "B" in "{BRI}"
	stands for "basic", while the "B" in "2B+D" stands for
	"bearer".

	(31 Mar 1997)

2.PAK

	<language> An {artificial intelligence} language with
	{coroutine}s.

	["The 2.PAK Language: Goals and Description", L.F. Melli, Proc
	IJCAI 1975].

	(25 Jan 1995)

320xx

	<processor> A series of {microprocessors} from {National
	Semiconductor}.  The 320xx processors have a {coprocessor}
	interface which allows coprocessors such as {FPU}s and {MMU}s
	to be attached in a chain.

	The 320xx was the predecessor of the {Swordfish} processor.

	[Details?]

	(17 Nov 1994)

3270

	{IBM 3270}

32-bit application

	<architecture, operating system> {IBM PC} software that runs
	in a 32-bit {flat address space}.

	The term {32-bit application} came about because {MS-DOS} and
	{Microsoft Windows} were originally written for the {Intel
	8088} and {80286} {microprocessors}.  These are {16 bit}
	microprocessors with a {segmented address space}.  Programs
	with more than 64 kilobytes of code and/or data therefore had
	to switch between {segments} quite frequently.  As this
	operation is quite time consuming in comparison to other
	machine operations, the application's performance may suffer.
	Furthermore, programming with segments is more involved than
	programming in a flat address space, giving rise to some
	complications in programming languages like "{memory models}"
	in {C} and {C++}.

	The shift from 16-bit software to 32-bit software on {IBM PC}
	{clones} became possible with the introduction of the {Intel
	80386} microprocessor.  This microprocessor and its successors
	support a segmented address space with 16-bit and 32 bit
	segments (more precisely: segments with 16- or 32-bit address
	offset) or a linear 32-bit address space.  For compatibility
	reasons, however, much of the software is nevertheless written
	in 16-bit models.

	{Operating system}s like {Microsoft Windows} or {OS/2} provide
	the possibility to run 16-bit (segmented) programs as well as
	32-bit programs.  The former possibility exists for {backward
	compatibility} and the latter is usually meant to be used for
	new software development.

	See also {Win32s}.

	(11 Dec 1995)

3780

	{Binary Synchronous Transmission}

386

	{Intel 80386}

386BSD

	<operating system> A {free software} version of the {BSD Unix}
	{operating system} originally derived from the generally
	available parts of the "{Berkeley Net Release/2}".  William
	Jolitz played a key rle and there have been many
	contributors.  Many new and innovative features have been
	added to 386BSD since its original release in June 1992.  An
	unofficial patchkit, available from many {anonymous FTP}
	archives, solves many of the problems associated with 386BSD
	Version 0.1.  In addition, many common Unix packages have been
	ported.

	386BSD has been superseded by {FreeBSD} and {NetBSD}.

	{FAQ
	(http://www.cis.ohio-state.edu/hypertext/faq/usenet/386bsd-faq/part1/faq.html)}.

	(15 Feb 1995)

386SPART.PAR

	<operating system> (Or "{WIN386.SWP}") 386SPART.PAR is a
	{hidden file} created by {Windows 3.1} for use as {virtual
	memory} {swap file}.  It is generally found in the {root
	directory}, however it may appear elsewhere (typically in the
	WINDOWS directory).  Its size depends on how much virtual
	memory you have set up under (Control Panel) Enhanced under
	Virtual Memory.  If you move or delete this file Windows will
	complain the next time you start it with a Swap File error.

	{Windows 95} uses a similar file, except it is named
	WIN386.SWP, and the controls for it are located under Control
	Panel - System - Performance tab - Virtual Memory.

	(28 May 1996)

3Com

	<company, networking> A manufacturer of {local area network}
	equipment.  They merged with {Convergent Technologies} in
	March 1986 to become {Convergent, Inc.}.

	(25 Jan 1995)

3DO

	<company, games, standard> A set of specifications created and
	owned by the 3DO company, which is a partnership of seven
	different companies.  These specs are the blueprint for making
	a 3DO Interactive Multiplayer and are licensed to hardware and
	software producers.

	A 3DO system has an {ARM60} 32-bit {RISC} {CPU} and a graphics
	engine based around two custom designed graphics and animation
	processors.  It has 2 Megabytes of {DRAM}, 1 Megabyte of
	{VRAM}, and a double speed {CD-ROM} drive for main storage.

	The {Panasonic} 3DO system can run 3DO Interactive software,
	play audio CDs (including support for CD+G), view {Photo-CD}s,
	and will eventually be able to play {Video CD}s with a special
	add-on {MPEG}1 {full-motion video} cartridge.  Up to 8
	{controller}s can be {daisy-chain}ed on the system at once.  A
	keyboard, mouse, light gun, and other peripherals may also
	some day be hooked into the system, although they are not
	currently available (December 1993).  The 3DO can display
	{full-motion video}, fully {texture map}ped 3d landscapes,
	all in 24-bit colour.  {Sanyo} and {AT&T} will also release
	3DO systems.  Sanyo's in mid 1994 and AT&T in late 1994.

	There will be a 3DO add-on cartridge based on the {PowerPC} to
	enable the 3DO to compete with {Sony}'s {Playstation} console
	and {Sega}'s {Saturn} console, both of which have a higher
	specification than the original 3DO.  The add-on is commonly
	known as the M2 or Bulldog.  It should hit the shops by
	Christmas 1995 and will (allegedly) do a million flat shaded
	polygons per second.

	{(http://www.3do.com/)}

	{Usenet} newsgroup: {news:rec.games.video.3do}.

	(13 Dec 1994)

3GL

	{third generation language}

3Station

	<computer, networking> The archtypal {diskless workstation},
	developed by Bob Metcalfe at {3Com}.

	[Features?  Dates?]

	(27 Mar 1995)

404

	<abuse> Someone who's clueless.  From the {World-Wide Web}
	message "404, URL Not Found" meaning that the document you've
	tried to access can't be located.

	"Don't bother asking him...he's 404, man".

	(17 Apr 1997)

4.2BSD

	{Berkeley System Distribution}

431A

	<hardware> The type of plug which fits a standard "type 600"
	{British Telecom} telephone socket.

	(25 Jan 1995)

4510

	<processor> A {65CE02} with two {6526}s.

	Used in the {Commodore 65}.

	(06 Apr 1996)

473L Query

	<language> An English-like {query language} for the US Air
	Force {473L} system.

	[Sammet 1969, p. 665].

	["Headquarters USAF Command and Control System Query
	Language", Info Sys Sci, Proc 2nd Congress, Spartan Books
	1965, pp.57-76].

	(31 Oct 1994)

486

	{Intel 486}

486SX

	{Intel 486SX}

4GL

	{fourth generation language}

51forth

	<language> A subroutine-{threaded} {Forth} for the {8051} by
	Scott Gehmlich.  It comes with source and documentation.

	{(ftp://smis-novell-1.massey.ac.nz/giovanni/51forth.zip)}

	(03 Apr 1993)

56kbps

	<communications> (56,000 bit/s) The data capacity of a normal
	single channel digital telephone channel in North America.
	The figure is derived from the bandwidth of 4 kHz allocated
	for such a channel and the 16 bit encoding (4000 times 16 =
	64000) used to change analog signals to digital, minus the
	8000 bit/s used for signalling and supervision.

	There are currently (Oct 1997) two rival {modem} designs
	capable of achieving this rate.  [What are they?]

	(30 Oct 1997)

56k line

	<communications> A digital connection (possibly a {leased
	line}, possibly switched) capable of carrying 56,000 bit/s.

	Compare {DS0}.

	(18 Dec 1995)

586

	What {Intel}'s {Pentium} was not called.

5th Glove

	<hardware, virtual reality> A {data glove} and flexor strip
	kit (5th Glove DFK) sold by {Fifth Dimension Technologies} for
	$495 ($345 for the left-handed version, $45 for each extra
	flexor strip).  The DFK provides a data glove, a flexon strip
	(with an elbow or knee-joint sensor), an interface card,
	cables, and KineMusica software.  The package uses flexible
	optical-bending sensing to track hand and arm movement.  The
	glove can be used with 5DT's ultrasonic tracking system, the
	5DT Head and Hand tracker ($245), which can track movement
	from up to two metres away from the unit's transmitter.

	(06 Feb 1998)

6.001

	<education> /siks dub*l oh wun/, /dub*l oh wun/ or rarely
	/siks dub*l oh fun/ {MIT}'s introductory computer class for
	majors, known for its intensity.  Developed by {Gerald
	Sussman} and {Hal Abelson}, the course is taught in {Scheme}
	and introduces {recursion}, {higher-order function}s,
	{object-oriented programming} and much more.  Students who
	grasp the {meta}circular {interpreter} gain entry into the
	{Knights of the Lambda-Calculus}.  6.001 has been exported to
	several other colleges, sometimes successfully.  The textbook,
	"Structure and Interpretation of Computer Programs", written
	with Julie Sussman is a classic that can be found on the
	shelves of many computer scientists, whether they took the
	course or not.  Legendary characters from the class, problem
	sets, and book include the wise Alyssa P. Hacker, Ben
	Bitdiddle, Lem E. Tweakit and Eva Lu Ator, the careless Louis
	Reasoner and {Captain Abstraction}.

	(22 Nov 1994)

610

	<communications> The standard type of two-wire wall socket and
	plug used for telephones in Australia.

	[Other countries?  Full name?]

	(26 Jun 1997)

6309

	{Hitachi 6309}

64 bit

	<architecture> A term describing a computer architecture based
	around an {ALU}, {registers}, and {data bus} which are 64
	{bit}s wide.

	64-bit processors are quite common in 1996, e.g. {Digital}
	{Alpha}, versions of {Sun} {SPARC}, {MIPS}, {IBM} {AS/4000}.
	the {PowerPC} and {Intel} are expected to move to 64 bits at
	their next generation - {PPC 620} and {Intel P7}.

	A 64-bit {address bus} allows the processor to address 18
	million {gigabytes} as opposed to the mere 4 gigabytes allowed
	with 32 bits.  There are in 1996 already {hard disks} which
	can hold over 4GB.  Floating point calculations can also be
	more accurate.

	A 64-bit {OS} is needed as well to take advantage of the CPU.
	In 1986 there are only a few 64-bit operating systems,
	including {OS/400}, {Digital} {Unix}, {Solaris} (partialy).  A
	32-bit OS can run on a 64-bit CPU.

	(23 Dec 1996)

6502

	<hardware> An eight bit {microprocessor} designed by {MOS
	Technologies} around 1975 and made by {Rockwell}.

	Unlike the {Intel 8080} and its kind, the 6502 had very few
	{register}s.  It was an 8-bit processor, with 16-bit {address
	bus}.  Inside was one 8-bit data register ({accumulator}), two
	8-bit {index register}s and an 8-bit {stack pointer} (stack
	was preset from address 256 to 511).  It used these index and
	stack registers effectively, with more {addressing mode}s,
	including a fast zero-page mode that accessed memory locations
	from address 0 to 255 with an 8-bit address (it didn't have to
	fetch a second byte for the address).

	The 6502 also had undocumented instructions.

	Back when the 6502 was introduced, {RAM} was actually faster
	than {CPU}s, so it made sense to optimize for RAM access
	rather than increase the number of registers on a chip.

	The 6502 was used in the {BBC Microcomputer}, {Apple II},
	{Commodore}, {Apple Computer} and {Atari} {personal
	computer}s.  {Steve Wozniak} described it as the first chip
	you could get for less than a hundred dollars (actually a
	quarter of the {6800} price).

	The {65816} is an expanded version of the 6502.

	There is a 6502 {assembler} by Doug Jones <jones@cs.uiowa.edu>
	which supports {macro}s and conditional features and can be
	used for linkage editing of object files.  It requires
	{Pascal}.

	See also {cross-assembler}, {RTI}, {Small-C}.

	(31 Oct 1994)

650x

	<hardware> A family of {microprocessor}s from {MOS
	Technologies}, based on the design of the {Motorola 6800}
	(introduced around 1975).  The family included the {6502} used
	in several early {personal computer}s.

6510

	<processor> An enhanced version of the {6502}.  The 6510 was
	used in the {Commodore 64}.

	[More details?]

	(29 Oct 1995)

65816

	<processor> An expanded version of the {6502}, with which it
	is compatible.  It has 16-bit {index register}s and {stack
	pointer}, a 16-bit direct page register and a 24-bit {address
	bus}.  Used in later models of the {Apple II}.

	(31 Oct 1994)

6800

	{Motorola 6800}

68000

	{Motorola 68000}

68020

	{Motorola 68020}

68030

	{Motorola 68030}

68040

	{Motorola 68040}

68050

	{Motorola 68050}

68060

	{Motorola 68060}

6809

	{Motorola 6809}

680x0

	{Motorola 680x0}

686

	<processor> {Pentium Pro} or possibly {Cyrix 6x86}.

	(26 May 1997)

68HC11

	{Motorola 68HC11}

6x86

	{Cyrix 6x86}

754

	{IEEE Floating Point Standard}

80186

	{Intel 80186} or compatible.

80188

	{Intel 80188} or compatible.

802.2

	{IEEE 802.2}

802.3

	{IEEE 802.3}

80286

	{Intel 80286} or compatible.

8031

	{as31}

80386

	{Intel 80386} or compatible.

80486

	{Intel 486} or compatible.

8051

	<processor> See {CAS 8051 Assembler}, {as31}, {51forth}.

	[What is an 8051?]

	(26 Jan 1995)

8080

	{Intel 8080}

8086

	{Intel 8086}

8088

	{Intel 8088}

80x86

	{Intel 80x86} or compatible.

822

	{RFC 822}

82430FX

	{Triton I}

82430HX

	{Triton II}

82430MX

	{Mobile Triton}

82430VX

	{Triton VX}

8514

	{eXtended Video Graphics Array}

88000

	{Motorola 88000}

88open

	<body> A consortium with the aim of creating a multi-vendor
	open computing environment based on the {Motorola 88000}
	{RISC} processor family.

	(26 Jan 1995)

8-bit clean

	{eight bit clean}

8N1

	<jargon> Common shorthand for "eight data bits, no {parity},
	one {stop bit}", the most common configuration for {serial
	line}s, e.g. {RS-232}.

	(31 Jan 1995)

8 Queens Problem

	{Eight Queens Puzzle}

8 Queens Puzzle

	{Eight Queens Puzzle}

8x86

	{Intel 80x86}

90-90 Rule

	{Ninety-Ninety Rule}

9PAC

	<tool> 709 PACkage.

	A {report generator} for the {IBM 7090}, developed in 1959.

	[Sammet 1969, p.314. "IBM 7090 Prog Sys, SHARE 7090 9PAC Part
	I: Intro and Gen Princs", IBM J28-6166, White Plains, 1961].

	(07 Feb 1995)

:-)

	{emoticon}

;

	{semicolon}

=

	{equals}

@

	{commercial at}

A#

	<language> /A sharp/ A separable component of Version 2 of the
	{AXIOM*} computer algebra system.  It provides a programming
	language with an {optimising compiler}, an {intermediate code}
	{interpreter}, and a library of data structures and
	mathematical {abstraction}s.  The compiler produces
	{stand-alone executable} programs, {object} libraries in
	{native} {operating system} formats, {portable} {bytecode}
	libraries, {C} and {Lisp} {source code}.

	The A# programming language has support for {object-oriented}
	and {functional programming} styles.  Both types and functions
	are {first class} values that can be manipulated with a range
	of flexible and composable {primitive}s and user programs.
	The A# language design places particular emphasis on
	compilation for efficient {machine code} and portability.

	Ports have been made to various 16, 32, and 64 bit
	architectures: {RS/6000}, {SPARC}, {DEC Alpha}, {i386},
	{i286}, {Motorola 680x0}, {S 370}; several {operating
	system}s: {Linux}, {AIX}, {SunOS}, {HP/UX}, {Next}, {Mach} and
	other {Unix} systems, {OS/2}, {DOS}, {Microsoft Windows},
	{VMS} and {CMS}; {C} compilers: {Xlc}, {gcc}, {Sun},
	{Borland}, {Metaware} and {MIPS} C.

	(07 Feb 1995)

A-0

	<language> (Or A0) A language for the {UNIVAC I} or II, using
	{three-address code} instructions for solving mathematical
	problems.  A-0 was the first language for which a {compiler}
	was developed.  It was produced by {Grace Hopper}'s team at
	{Remington Rand} in 1952.  Later internal versions were A-1,
	A-2, A-3, AT-3.  AT-3 was released as {MATH-MATIC}.

	["The A-2 Compiler System", Rem Rand, 1955].

	[Sammet 1969, p. 12].

	(03 Dec 1995)

a1

	<language> Address 1 code.

	An a1 code {interpreter}, by Matthew Newhook
	<matthew@engr.mun.ca> was used to test compiler output.  It
	requires {gcc} 2.4.2 or higher and is portable to computers
	with {memory segment} protection.

	{(ftp://ftp.cs.mun.ca/pub/a1)}

	(19 Jul 1994)

A1 security

	{Orange Book}

A20 handler

	<software, storage> {IBM PC} memory manager software providing
	{HMA}.  {XMM}s usually provide this functionality.  Named
	after the 21st address line (A20), controlling the access to
	HMA.

	(10 Jan 1996)

a56

	<language> An {assembler} for the {Motorola} {DSP56000} and
	{DSP56001} {digital signal processor}s by Quinn Jensen
	<jensenq@qcj.icon.com>.  Version 1.1 is available from an
	{alt.sources} archive or {(ftp://wuarchive.wustl.edu/)}.

	(10 Aug 1992)

AADL

	{Axiomatic Architecture Description Language}

AAL

	{ATM Adaptation Layer}

AAP

	{Association of American Publishers}

AAP DTD

	<standard> A {DTD} for a standard {SGML} document type for
	scientific documents, defined by the {Association of American
	Publishers}.

	(08 Nov 1994)

aard

	<tool> A tool to check memory use for {C++} programs.  It
	tracks the state of each byte of memory in the {heap} and the
	{stack}.  The state can be one of Undefined, Uninitialised,
	Free or Set.  The program can detect invalid transitions
	(i.e. attempting to set or use undefined or free storage or
	attempting to access uninitialised storage).

	In addition, the program keeps track of heap use through
	{malloc} and {free} and at the end of the run reports memory
	blocks that were not freed and that are not accessible
	(i.e. {memory leak}s).

	The tools works using a spliced-in {shared library} on
	{SPARC}s running {C++} 3.0.1 under {SunOS} 4.X.

	{(ftp://wilma.cs.brown.edu/pub/aard.tar.Z)}

	E-mail: Steve Reiss <spr@cs.brown.edu>.

	[Why "aard"?]

	(13 Oct 1994)

AARP probe packets

	<networking> {Packets} sent out on a nonextended {AppleTalk}
	network to discover whether a randomly selected node ID is
	being used by any node.  If not, the sending node uses the
	node ID.  If so, it chooses a different ID and sends more AARP
	probe packets.

	[What does AARP stand for?]

	(03 May 1997)

A&B

	<communications> A {bit signaling procedure} used in most {T1}
	transmission facilities where one bit from every sixth frame
	of each of 24 T1 {subchannels} is used for carrying
	{supervisory signaling}.

	[What does it stand for?  Is this the same as "{bit
	robbing}"?]

	(05 May 1997)

abbrev

	<jargon> /*-breev'/, /*-brev'/ Common abbreviation for
	"abbreviation".

	(27 Feb 1995)

ABC

	1. <language> An {imperative} language and programming
	environment from {CWI}, Netherlands.  It is interactive,
	structured, high-level, and easy to learn and use.  It is a
	general-purpose language which you might use instead of
	{BASIC}, {Pascal} or {AWK}.  It is not a systems-programming
	language but is good for teaching or prototyping.

	ABC has only five data types that can easily be combined;
	strong typing, yet without declarations; data limited only by
	memory; refinements to support top-down programming; nesting
	by indentation.  Programs are typically around a quarter the
	size of the equivalent {Pascal} or {C} program, and more
	readable.

	ABC includes a programming environment with {syntax-directed}
	editing, {suggestion}s, {persistent variable}s and multiple
	workspaces and {infinite precision} arithmetic.

	An example function words to collect the set of all words in a
	document:

	   HOW TO RETURN words document:
	      PUT {} IN collection
	      FOR line in document:
	         FOR word IN split line:
	            IF word not.in collection:
	               INSERT word IN collection
	      RETURN collection

	{Interpreter}/{compiler}, version 1.04.01, by Leo Geurts,
	Lambert Meertens, Steven Pemberton <Steven.Pemberton@cwi.nl>.
	ABC has been ported to {Unix}, {MS-DOS}, {Atari}, {Macintosh}.

	{Home (http://www.cwi.nl/cwi/projects/abc.html)}

	{FTP eu.net (ftp://ftp.eu.net/programming/languages/abc)},
	{FTP nluug.nl (ftp://ftp.nluug.nl/programming/languages/abc)},
	{FTP uunet (ftp://ftp.uu.net/languages/abc)}.

	Mailing list: <abc-list-request@cwi.nl>.

	E-mail: <abc@cwi.nl>.

	["The ABC Programmer's Handbook" by Leo Geurts, Lambert
	Meertens and Steven Pemberton, published by Prentice-Hall
	(ISBN 0-13-000027-2)].

	["An Alternative Simple Language and Environment for PCs" by
	Steven Pemberton, IEEE Software, Vol. 4, No. 1, January 1987,
	pp. 56-64.]

	(09 Feb 1995)

	2. <language> Argument, Basic value, C?.

	An {abstract machine} for implementation of {functional
	language}s and its intermediate code.

	[P. Koopman, "Functional Programs as Executable
	Specifications", 1990].

	(09 Feb 1995)

ABC ALGOL

	<language> An extension of {ALGOL 60} with arbitrary data
	structures and user-defined operators, for {symbolic
	mathematics}.

	["ABC ALGOL, A Portable Language for Formula Manipulation
	Systems", R.P. van de Riet, Amsterdam Math Centrum 1973].

	(28 Oct 1994)

ABCL/1

	<language> An Object-Based Concurrent Language.

	The language for the {ABCL} {MIMD} system, written by Akinori
	Yonezawa <matsu@is.s.u-tokyo.ac.jp> of Department of
	Information Science, {Tokyo University} in 1986.  ABCL/1 uses
	{asynchronous} {message passing} to {object}s.  It requires
	{Common Lisp}.  Implementations in {KCL} and {Symbolics Lisp}
	are available from the author.

	{(ftp://camille.is.s.u-tokyo.ac.jp/)}

	E-mail: <abcl@is.s.u-tokyo.ac.jp>.

	["ABCL: An Object-Oriented Concurrent System", A. Yonezawa ed,
	MIT Press 1990].  (23 May 1990).

	(09 Feb 1995)

ABCL/c+

	<language> A {concurrent} {object-oriented} language, an
	extension of {ABCL/1} based on {C}.

	["An Implementation of An Operating System Kernel using
	Concurrent Object Oriented Language ABCL/c+", N. Doi et al in
	ECOOP '88, S. Gjessing et al eds, LNCS 322, Springer 1988].

	(08 Nov 1994)

ABCL/R

	<language> A {reflective} subset of {ABCL/1}, written in
	ABCL/1 by Yonezawa of {Tokyo Institute of Technology} in 1988.

	{(ftp://camille.is.s.u-tokyo.ac.jp/pub/abclr)}

	["Reflection in an Object-Oriented Concurrent Language",
	T. Watanabe et al, SIGPLAN Notices 23(11):306-315 (Nov 1988)].

	(08 Nov 1994)

ABCL/R2

	<language> An {object-oriented}, {concurrent}, {reflective}
	language based on {Hybrid Group Architecture}. ABCL/R2 was
	produced by <masuhara@is.s.u-tokyo.ac.jp>,
	<matsu@is.s.u-tokyo.ac.jp>, <takuo@is.s.u-tokyo.ac.jp>,
	<yonezawa@is.s.u-tokyo.ac.jp>, at the {Tokyo Institute of
	Technology} in 1992.

	As a reflective language, an ABCL/R2 program can dynamically
	control its own behaviour, such as {scheduling} policy, from
	within a user-program.  This system has almost all functions
	of {ABCL/1} and is written in {Common Lisp}.

	{(ftp://camille.is.s.u-tokyo.ac.jp/pub/abclr2/)}

	(28 Jan 1993)

abduction

	<logic> The generation of hypotheses to explain observations
	or conclusions.  Applications include fault diagnosis, plan
	formation and {default reasoning}.

	Both the {semantics} and the implementation of abduction can
	be reduced to those for {deduction}.  {Negation as failure} in
	{logic programming} can both be given an abductive
	interpretation and also can be used to implement abduction.
	The abductive semantics of negation as failure leads naturally
	to an {argumentation}-theoretic interpretation of default
	reasoning in general.

	[Better explanation?  Example?]

	(08 Nov 1994)

ABEND

	<jargon> /o'bend/, /*-bend'/ ABnormal END.  Abnormal
	termination (of {software}); {crash}; {lossage}.  Derives from
	an error message on the {IBM 360}; used jokingly by hackers
	but seriously mainly by {code grinder}s.  Usually capitalised,
	but may appear as "abend".  Hackers will try to persuade you
	that ABEND is called "abend" because it is what system
	operators do to the computer late on Friday when they want to
	call it a day, and hence is from the German "Abend" =
	"Evening".

	(08 Nov 1994)

ABI

	{Application Binary Interface}

ABLE

	<language> A simple language for accountants.

	["ABLE, The Accounting Language, Programming and Reference
	Manual," Evansville Data Proc Center, Evansville, IN, Mar
	1975].

	[Listed in SIGPLAN Notices 13(11):56 (Nov 1978)].

	(08 Nov 1994)

ABM

	{Asynchronous Balanced Mode}

ABNF

	{Augumented Backus-Naur Form}

abort

	<programming> To terminate a program or {process} abnormally
	and usually suddenly, with or without {diagnostic}
	information.  "My program aborted", "I aborted the
	transmission".  The noun form in computing is "abort", not
	"abortion", e.g. "We've had three aborts over the last two
	days".

	If a {Unix} {kernel} aborts it is known as a {panic}.

	(07 Jan 1997)

ABP

	<networking> A {data link layer} protocol.

	[What does it stand for?]

	(15 Jun 1996)

ABR

	{automatic baud rate detection}

abscissa

	<mathematics> The x coordinate on an (x, y) graph; the input of
	a function against which the output is plotted.

	y is the "{ordinate}".

	See {Cartesian coordinates}.

	(08 Jul 1997)

ABSET

	<language> An early {declarative language} from the
	{University of Aberdeen}.

	["ABSET: A Programming Language Based on Sets", E.W. Elcock et
	al, Mach Intell 4, Edinburgh U Press, 1969, pp.467-492].

	(08 Nov 1994)

absolute path

	<file system> A {path} relative to the {root directory}.  Its
	first character must be the {pathname separator}.

	(21 Nov 1996)

absolute pathname

	<file system> A {pathname} relative to the {root directory}.

	(21 Nov 1996)

abstract class

	<programming> In {object-oriented programming}, a {class}
	designed only as a parent from which sub-classes may be
	derived, but which is not itself suitable for instantiation.
	Often used to "abstract out" incomplete sets of features which
	may then be shared by a group of sibling sub-classes which add
	different variations of the missing pieces.

	(08 Nov 1994)

abstract data type

	<programming> (ADT) A type whose internal form is hidden
	behind a set of {access function}s.  Objects of the type are
	created and inspected only by calls to the access functions.
	This allows the implementation of the type to be changed
	without requiring any changes outside the {module} in which it
	is defined.

	Abstract data types are central to {object-oriented
	programming} where every {class} is an ADT.

	A classic example of an ADT is a {stack} data type for which
	functions might be provided to create an empty stack, to
	{push} values onto a stack and to {pop} values from a stack.

	(22 Feb 1995)

abstract interpretation

	<theory> A partial execution of a program which gains
	information about its {semantics} (e.g. control structure,
	flow of information) without performing all the calculations.
	Abstract interpretation is typically used by compilers to
	analyse programs in order to decide whether certain
	optimisations or transformations are applicable.

	The objects manipulated by the program (typically values and
	functions) are represented by points in some {domain}.  Each
	abstract domain point represents some set of real
	("{concrete}") values.

	For example, we may take the abstract points "+", "0" and "-"
	to represent positive, zero and negative numbers and then
	define an abstract version of the multiplication operator, *#,
	which operates on abstract values:

		*# | + 0 -
		---|------
		+  | + 0 -
		0  | 0 0 0
		-  | - 0 +

	An interpretation is "safe" if the result of the abstract
	operation is a safe approximation to the abstraction of the
	concrete result.  The meaning of "a safe approximation"
	depends on how we are using the results of the analysis.

	If, in our example, we assume that smaller values are safer
	then the "safety condition" for our interpretation (#) is

		a# *# b# <= (a * b)#

	where a# is the abstract version of a etc.

	In general an interpretation is characterised by the {domain}s
	used to represent the basic types and the abstract values it
	assigns to constants (where the constants of a language
	include primitive functions such as *).  The interpretation of
	constructed types (such as user defined functions, {sum type}s
	and {product type}s) and expressions can be derived
	systematically from these basic domains and values.

	A common use of {abstract interpretation} is {strictness
	analysis}.

	See also {standard interpretation}.

	(08 Nov 1994)

abstraction

	1. Generalisation, ignoring or hiding details.  Examples are
	{abstract data type}s (the representation details are hidden),
	{abstract syntax} (the details of the {concrete syntax} are
	ignored), {abstract interpretation} (details are ignored to
	analyse specific properties).

	2. <programming> Parameterisation, making something a function
	of something else.  Examples are {lambda abstraction}s (making
	a term into a function of some variable), {higher-order
	function}s (parameters are functions), {bracket abstraction}
	(making a term into a function of a variable).

	Opposite of {concretisation}.

	(08 Nov 1994)

abstract machine

	1. <language> A processor design which is not intended to be
	implemented as {hardware}, but which is the notional executor
	of a particular {intermediate language} (abstract machine
	language) used in a {compiler} or {interpreter}.  An abstract
	machine has an {instruction set}, a {register set} and a model
	of memory.  It may provide instructions which are closer to
	the language being compiled than any physical computer or it
	may be used to make the language implementation easier to
	{port} to other {platform}s.

	A {virtual machine} is an abstract machine for which an
	{interpreter} exists.

	Examples: {ABC}, {Abstract Machine Notation}, {ALF}, {CAML},
	{F-code}, {FP/M}, {Hermes}, {LOWL},
	{Christmas}, {SDL}, {S-K reduction machine}, {SECD}, {Tbl},
	{Tcode}, {TL0}, {WAM}.

	2. <theory> A procedure for executing a set of instructions in
	some formal language, possibly also taking in input data and
	producing output.  Such abstract machines are not intended to
	be constructed as {hardware} but are used in thought
	experiments about {computability}.

	Examples: {Finite State Machine}, {Turing Machine}.

	(13 Mar 1995)

Abstract Machine Notation

	<language> (AMN) A language for specifying {Abstract Machine}s
	in the {B-Method}, based on the mathematical theory of
	{Generalised Substitution}s.

	(13 Mar 1995)

abstract syntax

	<language> A {compiler}'s internal representation of a program
	will typically be specified by an abstract syntax in terms of
	categories such as "statement", "expression" and "identifier".
	The syntax is abstract in two senses: it is independent of
	machine-oriented structures and encodings and also independent
	of the source syntax ({concrete syntax}) of the language being
	compiled (though it will often be very similar).  A {parse
	tree} is similar to an abstract syntax tree but it will
	typically also contain features such as parentheses which are
	syntactically significant but which are implicit in the
	structure of the {abstract syntax tree}.

	(08 Nov 1994)

Abstract Syntax Notation 1

	<language, standard> (ASN.1) An {ISO}/{ITU-T} {standard}
	language for the description of data, defined in 1988.  {ITU}
	TS X.208, {ISO} 8824.

	{Basic Encoding Rules} (BER) provide a universal (contiguous)
	{concrete} representation of the data values whose {abstract
	syntax} is described in ASN.1.  ASN.1 and BER facilitate the
	exchange of structured data between {application program}s
	over networks by describing data structures in a way that is
	independent of machine architecture and implementation
	language.

	{OSI} {Application layer} {protocol}s such as {X.400} {MHS}
	{electronic mail}, {X.500} directory services and {SNMP} use
	ASN.1 to describe the {PDU}s they exchange.  ASN.1 is used by
	the {National Center for Biotechnology Information}.

	[M. Sample et al, "Implementing Efficient Encoders and
	Decoders for Network Data Representations", IEEE Infocom 93
	Proc, v.3, pp. 1143-1153 (Mar 1993).  Available from Logica,
	UK].

	See also {snacc}.

	(30 Nov 1994)

abstract syntax tree

	<compiler> (AST) A data structure representing something which
	has been parsed, often used as a {compiler} or {interpreter}'s
	internal representation of a program while it is being
	optimised and from which {code generation} is performed.  The
	range of all possible such structures is described by the
	{abstract syntax}.

	(08 Nov 1994)

Abstract-Type and Scheme-Definition Language

	<language> (ASDL) A language developed as part of {Esprit}
	project {GRASPIN}, as a basis for generating {language-based
	editor}s and environments.  It combines an {object-oriented}
	type system, syntax-directed translation schemes and a
	target-language interface.

	["ASDL - An Object-Oriented Specification Language for
	Syntax-Directed Environments", M.L. Christ-Neumann et al,
	European Software Eng Conf, Strasbourg, Sept 1987, pp.77-85].

	(19 Feb 1996)

Abstract Windowing Toolkit

	<graphics> (AWT) {Java}'s {platform}-independent {windowing},
	graphics, and user-interface {toolkit}.

	["Java in a Nutshell", O'Reilly].

	[On-line documentation?]

	(23 Apr 1996)

ABSYS

	<language> An early {declarative language} from the
	{University of Aberdeen} which anticipated a number of
	features of Prolog.

	["ABSYS: An Incremental Compiler for Assertions", J.M. Foster
	et al, Mach Intell 4, Edinburgh U Press, 1969, pp. 423-429].

	(08 Nov 1994)

ACA

	{Application Control Architecture}

ACAP

	{Application Configuration Access Protocol}

Accelerated Graphics Port

	<hardware> (AGP) A bus specification by {Intel} which gives
	low-cost 3D {graphics cards} faster access to {main memory}
	than the usual PCI bus.

	AGP operates at 133 {MHz} compared to PCI's 66 Mhz.  AGP
	allows for efficient use of {frame buffer} memory, thereby
	helping 2D graphics performance as well.

	AGP provides a coherent memory management design which allows
	scattered data in system memory to be read in rapid bursts.
	AGP reduces the overall cost of creating high-end graphics
	subsystems by using existing system memory.

	(09 Nov 1997)

accelerator

	<hardware> Additional hardware to perform some function faster
	than is possible in software running on the normal {CPU}.
	Examples include {graphics accelerator}s and {floating-point
	accelerator}s.

	(08 Nov 1994)

Accent

	<language> A very high level interpreted language from
	{CaseWare, Inc.} with strings and tables.  It is {strongly
	typed} and has remote function calls.

	(08 Nov 1994)

accept

	<library, networking> {Berkeley} {Unix} networking {socket}
	library routine to satisfy a connection request from a remote
	{host}.  A specified socket on the local host (which must be
	capable of accepting the connection) is connected to the
	requesting socket on the remote host.  The remote socket's
	socket address is returned.

	{Unix manual pages}: accept(2), connect(2).

	(08 Nov 1994)

Acceptable Use Policy

	<networking> (AUP) Rules applied by many {transit network}s
	which restrict the use to which the network may be put.  A
	well known example is {NSFNet} which does not allow commercial
	use.  Enforcement of AUPs varies with the network.

	(08 Nov 1994)

acceptance testing

	<programming> Formal testing conducted to determine whether a
	system satisfies its acceptance criteria and thus whether the
	customer should accept the system.

	(10 May 1996)

Access

	1. <language> An English-like query language used in the
	{Pick} {operating system}.

	2. <database, product> {Microsoft Access}.

	(08 Nov 1994)

Access Control List

	<networking> (ACL) A list of the services available on a
	{server}, each with a list of the {host}s permitted to use the
	service.

	(08 Nov 1994)

access method

	<networking> Software in an {SNA} processor that controls the
	flow of information through a {network}.  Generally, the way
	that network devices access the network medium.

	[Which {layer}?]

	(05 May 1997)

access permission

	{permission}

access time

	<hardware, storage> The average time interval between a
	storage peripheral (usually a {disk drive} or {semiconductor}
	memory) receiving a request to read or write a certain
	location and returning the value read or completing the write.

	(14 Jun 1997)

ACCLAIM

	<project> A European Union {ESPRIT} {Basic Research Action}.

	[What's it about?]

	(08 Nov 1994)

Accounting File

	<operating system> A file which holds records of the resources
	used by individual jobs.  These records are used to regulate,
	and calculate charges for, resources.  An entry is opened in
	the accounting file as each job begins.

	(08 Dec 1996)

accounting management

	<networking> The process of identifying individual and group
	access to various network resources to ensure proper access
	capabilities ({bandwidth} and security) or to properly charge
	the various individuals and departments.  Accounting
	management is one of five categories of {network management}
	defined by {ISO} for management of {OSI} {networks}.

	(05 May 1997)

ACCU

	{Association of C and C++ Users}

accumulator

	<processor> In a {central processing unit}, a {register} in
	which intermediate results are stored.  Without an
	accumulator, it would be necessary to write intermediate
	results to {main memory} and read them back.  Access to main
	memory is slower than access to the accumulator which usually
	has direct paths to and from the arithmetic and logic unit
	(ALU).

	Modern CPUs usually have many registers, all or many of which
	can be used as accumulators.  For this reason, the term
	"accumulator" is somewhat archaic.  Use of it as a synonym for
	"register" is a fairly reliable indication that the user has
	been around for quite a while and/or that the architecture
	under discussion is quite old.  The term in full is almost
	never used of microprocessor registers, for example, though
	symbolic names for arithmetic registers beginning in "A"
	derive from historical use of the term "accumulator" (and not,
	actually, from "arithmetic").  Confusingly, though, an "A"
	register name prefix may also stand for "address", as for
	example on the {Motorola} {680x0} family.

	2. <programming> A register, memory location or variable being
	used for arithmetic or logic (as opposed to addressing or a
	loop index), especially one being used to accumulate a sum or
	count of many items.  This use is in context of a particular
	routine or stretch of code.  "The FOOBAZ routine uses A3 as an
	accumulator."

	(02 Mar 1995)

ACE

	1. {Advanced Computing Environment}.

	2. {Adaptive Communication Environment}.

ACF

	{Advanced Communications Function}

ACF/NCP

	{Advanced Communication Function/Network Control Program}

ACIA

	{Asynchronous Communications Interface Adapter}

ACID

	<programming> A {mnemonic} for the properties a transaction
	should have to satisfy the {Object Management Group}
	{Transaction Service} specifications.  A transaction should be
	{Atomic}, its result should be Consistent, Isolated
	(independent of other transactions) and Durable (its effect
	should be permanent).

	The {Transaction Service} specifications which part of the
	{Object Services}, an adjunct to the {CORBA} specifications.

	(15 May 1997)

ACIS

	<graphics> Andy, Charles, Ian's System.

	A {geometric engine} that most {CAD} packages now use.  ACIS
	uses a sophisticated {object-oriented} approach for modelling,
	the data is stored in {boundary representation}.  Acis is
	owned by {Spatial Technologies}.

	[How does this differ from "solid modelling"?].

	(21 Mar 1996)

ACK

	1. <character> /ak/ The {mnemonic} for the ACKnowledge
	character, {ASCII} code 6.

	2. <communications> A message transmitted to indicate that
	some data has been received correctly.  Typically, if the
	sender does not receive the ACK message after some
	predetermined time, or receives a {NAK}, the original data
	will be sent again.

	(07 Jan 1997)

ACL

	1. {Access Control List}.

	2. {Association for Computational Linguistics}.

	3. A Coroutine Language.

	A {Pascal}-based implementation of {coroutine}s.

	["Coroutines", C.D. Marlin, LNCS 95, Springer 1980].

	(08 Nov 1994)

ACM

	1. <body> {Association for Computing Machinery}.

	2. <communications> {addressed call mode}.

	(07 May 1997)

ACME

	<company, jargon> /ak'mee/ 1. A Company that Makes Everything.
	The {canonical} imaginary business.  Possibly also derived
	from the word "acme" meaning "highest point".

	2. A program for {MS-DOS}.

	[What does it do?]

	(08 Nov 1994)

ACOM

	<language> An early system on the {IBM 705}.

	[Listed in CACM 2(5):16 (May 1959)].

	(08 Nov 1994)

Acorn Archimedes

	{Archimedes}

Acorn Computer Group

	<company> A holding company for {Acorn Computers} Limited,
	Acorn Australia, Acorn New Zealand, Acorn GmbH and {Online
	Media}.  Acorn Computer Group owns 43% of {Advanced RISC
	Machines} Ltd.

	(08 Nov 1994)

Acorn Computers Ltd.

	<company> A UK computer manufacturer, part of the {Acorn
	Computer Group} plc.  Acorn was founded 5th December 1978, on
	a kitchen table in a back room.  Their first creation was an
	electronic slot machine.  After the {Acorn System 1}, 2 and 3,
	Acorn launched the first commercial {microcomputer} - the
	{ATOM} in March 1980.  In April 1981, Acorn won a contract
	from the {BBC} to provide the {PROTON}.  In January 1982 Acorn
	launched the {BBC Microcomputer} System.  Seven out of ten
	microcomputers bought for UK schools were BBC Micros.

	The Acorn Computer Group went public on the Unlisted
	Securities Market in September 1983.  In April 1984 Acorn won
	the Queen's Award for Technology for the BBC Micro and in
	September 1985 {Olivetti} took a controlling interest in
	Acorn.  The {Master} 128 Series computers were launched in
	January 1986 and the BBC {Domesday} System in November 1986.

	In 1983 Acorn began to design the Acorn RISC Machine (ARM),
	the first low-cost, high volume {RISC} processor chip (later
	renamed the {Advanced RISC Machine}).  In June 1987 they
	launched the {Archimedes} range - the first 32-bit {RISC}
	based {microcomputer}s - which sold for under UKP 1000.  In
	February 1989 the R140 was launched.  This was the first
	{Unix} {workstation} under UKP 4000.  In May 1989 the A3000
	(the new {BBC Microcomputer}) was launched.

	In 1990 Acorn formed {Advanced RISC Machines} Ltd. (ARM) in
	partnership with {Apple Computer, Inc.} and {VLSI} to develop
	the ARM processor.  Acorn has continued to develop {RISC}
	based products.

	With 1992 revenues of 48.2 million pounds, Acorn Computers is
	the premier supplier of {information technology} products to
	UK education and has been the leading provider of 32-bit RISC
	based {personal computers} since 1987.  Acorn works with
	industry partners, users and software developers to provide
	products for the education, consumer, publishing and
	international markets.

	{Usenet} newsgroups: {news:comp.sys.acorn},
	{news:comp.sys.acorn.announce}, {news:comp.sys.acorn.tech},
	{news:comp.binaries.acorn}, {news:comp.sources.acorn},
	{news:comp.sys.acorn.advocacy}, {news:comp.sys.acorn.games}.

	{Acorn's FTP server (ftp://ftp.acorn.co.uk/)}

	E-mail: <customer.services@acorn.co.uk>.

	{HENSA software archive
	(http://micros.hensa.ac.uk/micros/arch.html)}.  {Richard
	Birkby's Acorn page (http://www.csv.warwick.ac.uk/~phudv/)}.
	{RiscMan's Acorn page (http://www.geko.com.au/riscman/)}.
	{Acorn On The Net (http://www.stir.ac.uk/~rhh01/Main.html)}.
	{"The Jungle" by Simon Truss
	(http://www.csc.liv.ac.uk/users/u1smt/u1smt.html)}.

	(31 Oct 1994)

Acorn RISC Machine

	<processor> The original name of the {Advanced RISC Machine}.

	(07 Mar 1995)

ACOS

	<language> A {BBS} language for {PRODOS 8} on {Apple II}.
	{Macos} is a hacked version of ACOS.

	(08 Nov 1994)

acoustic coupler

	<hardware, communications> A device used to connect a {modem}
	to a telephone line via an ordinary handset.  The acoustic
	coupler converts electrical signals from the {modem} to sound
	via a loudspeaker, against which the mouthpiece of a telephone
	handset is placed.  The earpiece is placed against a
	microphone which converts sound to electrical signals which
	return to the modem.  The handset is inserted into a
	sound-proof box containing the louspeaker and microphone to
	avoid interference from ambient noise.

	Acousitic couplers are now rarely used since most modems have
	a direct electrical connection to the telephone line.  This
	avoids the signal degradation caused by conversion to and from
	audio.  Direct connection is not always possible, and was
	actually illegal in the United Kingdom before {British
	Telecom} was privatised.  BT's predecessor, the General Post
	Office, did not allow subscribers to connect their own
	equipment to the telephone line.

	(08 Nov 1994)

ACP

	{Algebra of Communicating Processes}

Acrobat

	<text, product> A product from {Adobe Systems}, for
	manipulating documents stored in {Portable Document Format}.
	Acrobat provides a {platform}-independent means of creating,
	viewing, and printing documents.

	{Acropolis: the magazine of Acrobat publishing
	(http://www.acropolis.com/acropolis)}.

	(21 Apr 1995)

acronym

	<jargon> An identifier formed from some of the letters (often
	the initials) of a phrase and used as an abbreviation.  {This
	dictionary} contains a great many acronyms; see the contents
	page for a list.

	See also {TLA}.

	(15 Mar 1995)

ACSE

	{Association Control Service Element}

ACT

	{Annual Change Traffic}

ACT++

	<language> A {concurrent} extension of {C++} based on
	{actor}s.

	["ACT++: Building a Concurrent C++ With Actors", D.G. Kafura
	TR89-18, VPI, 1989].

	(08 Nov 1994)

Act1

	<language> An {actor} language descended from {Plasma}.

	["Concurrent Object Oriented Programming in Act1",
	H. Lieberman in Object Oriented Concurrent Programming,
	A. Yonezawa et al eds, MIT Press 1987].

	(08 Nov 1994)

Act2

	<language> An {actor} language.

	["Issues in the Design of Act2", D. Theriault, TR728, MIT AI
	Lab, June 1983].

	(08 Nov 1994)

Act3

	<language> A high-level {actor} language by {Carl Hewitt}.  A
	descendant of {Act2} which provides support for automatic
	generation of {customer}s and for {delegation} and
	{inheritance}.

	["Linguistic Support of Receptionists for Shared Resources",
	C. Hewitt et al in Seminar on Concurrency, S.D. Brookes et al
	eds, LNCS 197, Springer 1985, pp. 330-359].

	(08 Nov 1994)

Actalk

	<language> A {Smalltalk}-based {actor} language developed by
	J-P Briot in 1989.

	["Actalk: A Testbed for Classifying and Designing Actor
	Languages in the Smalltalk-80 Environment", J-P. Briot, Proc
	ECOOP '89, pp. 109-129].

	(08 Nov 1994)

Actis

	<programming> An approach to integrated {CASE} by {Apollo}.

	(08 Nov 1994)

activation record

	<compiler> (Or "data frame", "stack frame") A data structure
	containing the variables belonging to one particular {scope}
	(e.g. a procedure body), as well as links to other activation
	records.

	Activation records are usually created (on the {stack}) on
	entry to a block and destroyed on exit.  If a procedure or
	function may be returned as a result, stored in a variable and
	used in an outer scope then its activation record must be
	stored in a {heap} so that its variables still exist when it
	is used.  Variables in the current {scope} are accessed via
	the {frame pointer} which points to the current activation
	record.  Variables in an outer scope are accessed by following
	chains of links between activation records.  There are two
	kinds of link - the {static link} and the {dynamic link}.

	(07 Mar 1995)

active DBMS

	<database> A conventional or passive {DBMS} combined with a
	means of event detection and condition monitoring.  Event
	handling is often rule-based, as with an {expert system}.

	(08 Nov 1994)

Active Language I

	<tool, mathematics> An early interactive mathematics system
	for the {XDS 930} at the {University of California at
	Berkeley}.

	["Active Language I", R. de Vogelaere in Interactive Systems
	for Experimental Applied Mathematics, A-P 1968].

	(08 Nov 1994)

active matrix display

	<hardware> A type of {liquid crystal display} where each
	display element (each {pixel}) includes an active component
	such as a {transistor} to maintain its state between scans.

	Contrast {passive matrix display}.

	(09 Dec 1995)

Active Monitor

	<networking> A process in an {IBM} {token ring} network which
	ensures a token is present on the ring, removes circulating
	frames with unknown or invalid destinations, and performs
	introductions between machines on the ring.

	(18 Jun 1996)

active object

	<programming> An {object} that encompasses its own {thread of
	control}.

	[What does this mean?]

	(08 Nov 1994)

Active Reconfiguring Message

	<hardware> (ARM) An efficient mechanism which allows
	reconfiguration of the hardware logic of a system according to
	the particular data received or transmitted.

	In ARM each message contains extra information in a
	Reconfiguring {Header} in addition to the data to be
	transferred.  Upon arrival of the message the Reconfiguring
	Header is extracted, decoded and used to perform on-the-fly
	hardware reconfiguration.  As soon as the hardware has been
	reconfigured the data information of the message can be
	processed.

	[In what contect is this term used?]

	(06 Jun 1997)

Active Server Pages

	<World-Wide Web, programming> (ASP) A {scripting} environment
	for {Microsoft Internet Information Server} in which you can
	combine {HTML}, scripts and reusable {ActiveX} {server}
	components to create dynamic {web pages}.

	IIS 4.0 includes scripting engines for {Microsoft Visual
	Basic} Scripting Edition ({VBScript}) and {Microsoft JScript}.
	{ActiveX} scripting engines for {Perl} and {REXX} are
	available through third-party developers.

	{ASP (http://www.microsoft.com/iis/guide/whatisasp.asp)}.

	{ASP in IIS 4
	(http://www.microsoft.com/iis/guide/deploy.asp?A=2&B=4)}.

	(10 Feb 1998)

ActiveX

	<World-Wide Web> {Microsoft}'s answer to {Java}.  ActiveX is a
	stripped down implementation of {OLE} designed to run over
	slow {Internet} links.

	[Details?  URL?]

	(09 Apr 1996)

ACT ONE

	<language, specification> A specification language.

	["An Algebraic Specification Language with Two Levels of
	Semantics", H. Ehrig et al, Tech U Berlin 83-03 Feb 1983].

	(08 Nov 1994)

Actor

	<language> An {object-oriented} language for {Microsoft
	Windows} written by Charles Duff of the {Whitewater Group} ca.
	1986.  It has {Pascal}/{C}-like {syntax}.  Uses a
	{token-threaded} {interpreter}.  {Early binding} is an option.

	["Actor Does More than Windows", E.R. Tello, Dr Dobb's J
	13(1):114-125 (Jan 1988)].

	(08 Nov 1994)

actor

	1. <programming> In {object-oriented} programming, an {object}
	which exists as a {concurrent} process.

	2. <operating system> In {Chorus}, the unit of resource
	allocation.

	(08 Nov 1994)

Actors

	<theory> A model for {concurrency} by {Carl Hewitt}.  Actors
	are autonomous and concurrent {object}s which execute
	asynchronously.  The Actor model provides flexible mechanisms
	for building parallel and distributed software systems.

	["Laws for Communicating Parallel Processes", C. Hewitt et al,
	IFIP 77, pp. 987-992, N-H 1977].

	["ACTORS: A Model of Concurrent Computation in Distributed
	Systems", Gul A. Agha <agha@cs.uiuc.edu>, Cambridge Press, MA,
	1986].

	(12 Jun 1995)

Actra

	<language> A {multi-processor} {exemplar}-based {Smalltalk}.

	[LaLonde et al, OOPSLA '86].

	(08 Nov 1994)

Actus

	<language> {Pascal} with parallel extensions, similar to the
	earlier {Glypnir}.  It has parallel constants and {index
	set}s.  Descendants include {Parallel Pascal}, {Vector C} and
	{CMU}'s language {PIE}.

	["A Language for Array and Vector Processors," R.H. Perrott,
	ACM TOPLAS 1(2):177-195 (Oct 1979)].

	(08 Nov 1994)

AD

	{Administrative Domain}

Ada

	<language> (After {Ada Lovelace}) A {Pascal}-descended
	language, designed by Jean Ichbiah's team at {CII Honeywell}
	in 1979, made mandatory for Department of Defense software
	projects by the Pentagon.  The original language was
	standardised as "Ada 83", the latest is "{Ada 95}".

	Ada is a large, complex, {block-structured} language aimed
	primarily at {embedded} applications.  It has facilities for
	{real-time} response, {concurrency}, hardware access and
	reliable run-time error handling.  In support of large-scale
	{software engineering}, it emphasises {strong typing}, {data
	abstraction} and {encapsulation}.  The type system uses {name
	equivalence} and includes both {subtype}s and {derived type}s.
	Both fixed and {floating-point} numerical types are supported.

	{Control flow} is fully bracketed: if-then-elsif-end if,
	case-is-when-end case, loop-exit-end loop, goto.  Subprogram
	parameters are in, out, or inout.  Variables imported from
	other packages may be hidden or directly visible.  Operators
	may be {overloaded} and so may {enumeration} literals.  There
	are user-defined {exception}s and {exception handler}s.

	An Ada program consists of a set of packages encapsulating
	data objects and their related operations.  A package has a
	separately compilable body and interface.  Ada permits
	{generic package}s and subroutines, possibly parametrised.

	Ada programming places a heavy emphasis on {multitasking}.
	Tasks are synchronised by the {rendezvous}, in which a task
	waits for one of its subroutines to be executed by another.
	The conditional entry makes it possible for a task to test
	whether an entry is ready.  The selective wait waits for
	either of two entries or waits for a limited time.

	Ada is often criticised, especially for its size and
	complexity, and this is attributed to its having been designed
	by committee.  In fact, both Ada 83 and Ada 95 were designed
	by small design teams to be internally consistent and tightly
	integrated.  By contrast, two possible competitors, {Fortran
	90} and {C++} have both become products designed by large and
	disparate volunteer committees.

	See also {Ada/Ed}, {Toy/Ada}.

	{Home of the Brave Ada Programmers
	(http://lglwww.epfl.ch/Ada/)}.  {Ada FAQs
	(http://lglwww.epfl.ch/Ada/FAQ/)} (hypertext), {text only
	(ftp://lglftp.epfl.ch/pub/Ada/FAQ)}.

	{(http://wuarchive.wustl.edu/languages/ada/)},
	{(ftp://ajpo.sei.cmu.edu/)},
	{(ftp://stars.rosslyn.unisys.com/pub/ACE_8.0)}.

	E-mail: <adainfo@ajpo.sei.cmu.edu>.

	{Usenet} newsgroup: {news:comp.lang.ada}.

	{An Ada grammar (ftp://primost.cs.wisc.edu/)} including a
	lex scanner and yacc parser is available.  E-mail:
	<compilers-server@iecc.cambridge.ma.us>,
	<masticol@dumas.rutgers.edu>.

	Another {yacc} {grammar} and {parser} for {Ada} by Herman
	Fischer is {here
	(ftp://wsmr-simtel20.army.mil/PD2:<ADA.EXTERNAL-TOOLS>GRAM2.SRC)}.

	An {LR parser} and {pretty-printer} for {Ada} from NASA is
	available from the {Ada Software Repository}.  Michael Feldman
	<mfeldman@seas.gwu.edu> referred to this package in
	comp.compilers, he also has a yacc grammar for ada.

	{Adamakegen} generates {makefile}s for {Ada} programs.

	["Reference Manual for the Ada Programming Language", ANSI/MIL
	STD 1815A, US DoD (Jan 1983)].  Earlier draft versions
	appeared in July 1980 and July 1982.  ISO 1987.

	(23 Jan 1995)

Ada++

	<language> An {object-oriented} extension to {Ada},
	implemented as an Ada {preprocessor}.  Obsoleted by {Ada 95}
	which includes object-oriented features.

	(19 Sep 1995)

Ada 83

	<language> The original {Ada}, as opposed to {Ada 95}.

	(13 Mar 1995)

Ada 95

	<language> A revision and extension of {Ada} (Ada 83) begun in
	1988 and completed in 1 Dec 1994 by a team lead by Tucker Taft
	of {Intermetrics}.  The printed standard was expected to be
	available around 15 Feb 1995.

	Additions include {object-orientation} ({tagged type}s,
	{abstract type}s and {class-wide type}s), hierarchical
	libraries and synchronisation with shared data (protected
	types) similar to {Orca}.  It lacks {multiple inheritance} but
	supports the construction of multiple inheritance type
	hierarchies through the use of {generic}s and {type
	composition}.

	{GNAT} aims to be a free implementation of Ada 95.

	You can get the standard from the {Ada Joint Program Office
	(ftp://ajpo.sei.cmu.edu/public/)}, {Ada Information
	Clearinghouse (ftp://sw-eng.falls-church.va.us/public/)}.

	E-mail: Chris Anderson <anderson@uv4.eglin.af.mil> (Ada 95
	Project Manager).

	["Introducing Ada 9X", J.G.P. Barnes, Feb 1993].

	(19 Jan 1995)

Ada 9X

	<language> The working title for {Ada 95} before its adoption
	as an {ISO} {standard}.

	(19 Jan 1995)

ADABAS

	<database> A {relational database} system by {Software AG}.
	While it was initially designed for large {IBM} {mainframe}
	systems (e.g. {S/370} in the late 1970s), it has been ported
	to numerous other {platform}s over the last few years such as
	several flavors of {Unix} including {AIX}.

	ADABAS stores its data in tables (and is thus "relational")
	but also uses some non-relational techniques, such as
	{multiple value}s and {periodic group}s.

	(30 Oct 1995)

Ada/Ed

	<language, education> An {interpreter}, editor and run-time
	environment for {Ada}, intended as a teaching tool.  It does
	not have the capacity, performance or robustness of commercial
	Ada compilers.  Ada/Ed was developed at {New York University}
	as part of a long-range project in language definition and
	software prototyping.

	AdaEd runs on {Unix}, {MS-DOS}, {Atari ST} and {Amiga}.
	Version 1.11.0a+.  It handles nearly all of {Ada 83} and was
	last validated with version 1.7 of the {ACVC} tests.  Being an
	interpreter, it does not implement most {representation
	clause}s and thus does not support systems programming close
	to the machine level.

	A later version is known as {GW-Ada}.

	E-mail: Michael Feldman <mfeldman@seas.gwu.edu>.

	{(ftp://ftp.wustl.edu/amiga/languages/ada)},
	{(ftp://cnam.cnam.fr/pub/Ada/Ada-Ed)}.  {For Amiga
	(ftp://cs.nyu.edu/pub/adaed)}.

	{RISC OS (ftp://micros.hensa.ac.uk/micros/arch/riscos/c/c052)}
	(E-mail: <adaed@arcangel.demon.co.uk>).

	(18 Aug 1994)

Adaline

	<architecture> Name given by Widrow to {adaptive linear
	neuron}s, that is {neuron}s (see {McCulloch-Pitts}) which
	learn using the {Widrow-Huff Delta Rule}.  See also
	{Madaline}.

	(14 Mar 1995)

Ada Lovelace

	<person> (1811-1852) The daughter of Lord Byron, who became
	the world's first programmer while cooperating with {Charles
	Babbage} on the design of his mechanical computing engines in
	the mid-1800s.

	The language {Ada} was named after her.

	(20 Sep 1995)

ADAM

	{A Data Management system}

Adamakegen

	<tool> A program that generates {makefile}s for {Ada}
	programs.  Adamakegen was written by Owen O'Malley
	<omalley@porte-de-st-ouen.ics.uci.edu>.  It requires {Icon}
	and runs under {Verdix} and {SunAda}.  The current version is
	2.6.3.

	{(ftp://spare.ics.uci.edu/ftp/pub/arcadia/)}

	(02 Mar 1993)

ADAMO

	<database> A data management system written at CERN based on
	the {Entity-Relationship model}.

	(14 Mar 1995)

Ada-O

	<language> An {Ada} subset developed at the {University of
	Karlsruhe} in 1979, used for {compiler} {bootstrapping}.  It
	lacks {overloading}, {derived type}s, {real number}s, tasks
	and {generic}s.

	["Revised Ada-O Reference Manual", G. Persch et al, U
	Karlsruhe, Inst fur Infor II, Bericht Nr 9/81].

	(14 Feb 1995)

Adaplan

	<language> A {functional database} language based upon
	{Backus}' {FP} language.

	[Erwig&Lipeck, Proc. DBPL-3, 1991].

	(07 May 1995)

Adaplex

	<language, database> An extension of {Ada} for {functional
	database}s.

	["Adaplex: Rationale and Reference Manual 2nd ed", J.M. Smith
	et al, Computer Corp America, Cambridge MA, 1983].

	(14 Feb 1995)

Ada Programming Support Environment

	<tool, project> (APSE) A program or set of programs to support
	software development in the Ada language.

	[Examples?]

	(30 Jun 1997)

ADAPT

	<language> A subset of {APT}.

	[Sammet 1969, p. 606].

	(14 Feb 1995)

Adaptable User Interface

	<tool, product> (AUI, Oracle Toolkit) A toolkit from {Oracle}
	allowing applications to be written which will be portable
	between different {windowing systems}.  AUI provides one {call
	level interface} along with a resource manager and editor
	across a range of "standard" {GUI}s, including {Macintosh},
	{Microsoft Windows} and the {X Window System}.

	(16 Mar 1995)

adaptive answering

	<communications> A feature which allows a {faxmodem} to answer
	the telephone and decide whether the incoming call is a fax or
	data call.  Most {Class 1} faxmodems do this.  The
	{U.S. Robotics} Class 1 implementation however seems not to do
	it, it must be set to answer as either one or the other.

	(16 Mar 1995)

Adaptive Communication Environment

	<communications, tool> A {C++} wrapper library for
	communications from the {University of California at Irvine}.

	(16 Mar 1995)

Adaptive Digital Pulse Code Modulation

	<communications> (ADPCM) A {compression} technique.

	ADPCM is used on the {Sony} minidisk.

	[Details?]

	(02 Nov 1994)

adaptive learning

	<algorithm> (Or "{Hebbian} learning") Learning where a system
	programs itself by adjusting weights or strengths until it
	produces the desired output.

	(16 Mar 1995)

adaptive routing

	{dynamic routing}

Adaptive Simulated Annealing

	<language> (ASA) A language interface to a {neural net}
	simulator(?) by Lester Ingber <ingber@cco.caltech.edu>.
	Version 1.53.

	{(ftp://ftp.caltech.edu/pub/ingber/)}

	Mailing list: <asa-8request@alumni.caltech.edu>.

	(14 Nov 1993)

Adaptor

	<tool> Automatic DAta Parallelism TranslatOR.

	A source to source transformation tool that transforms {data
	parallel} programs written in {Fortran 77} with {array}
	extensions, parallel loops, and layout directives to parallel
	programs with explicit {message passing}.  ADAPTOR generates
	{Fortran 77} host and node programs with message passing.  The
	new generated source codes have to be compiled by the compiler
	of the parallel computer.

	Version 1.0 runs on {CM-5}, {iPCS/860}, {Meiko CS1}/CS2, {KSR
	1}, {SGI}, {Alliant} or a network of {Sun}s or {RS/6000}s.

	{(ftp://ftp.gmd.de/gmd/adaptor/adp_1.0.tar.Z)}.  E-mail:
	Thomas Brandes <brandes@gmdzi.gmd.de>.

	(01 Jun 1993)

Ada Semantic Interface Specification

	<language> (ASIS) An intermediate representation for {Ada}.

	E-mail: <sblake@thomsoft.com>.

	See also {Diana}.

	(15 Feb 1995)

Ada Software Repository

	<language> A collection of {Ada} programs?

	{Home (http://wuarchive.wustl.edu/languages/ada/asr/)}.

	(06 Jan 1995)

ADC

	{Analog to Digital Converter}

ADCCP

	{Advanced Data Communications Control Protocol}

A/D converter

	{Analog to Digital Converter}

AD/Cycle

	<tool, product> Application Development cycle.

	A set of {SAA}-compatible {IBM}-sponsored products for program
	development, running on workstations accessing a central
	repository on a {mainframe}.  The stages cover requirements,
	analysis and design, production of the application, building
	and testing and maintenance.  Technologies used include code
	generators and {knowledge based system}s as well as languages
	and debuggers.

	(24 Oct 1994)

ADD 1 TO COBOL GIVING COBOL

	<humour, language> (From COBOL's equivalent syntax to C's C++)
	A tongue-in-cheek suggestion by Bruce Clement for an
	{object-oriented} {COBOL}.

	[SIGPLAN Notices 27(4):90-91 (Apr 1992)].

	(17 Mar 1995)

ADDD

	<tool> A Depository of Development Documents.

	A {public domain} Software Engineering Environment from {GMD}
	developed as part of the {STONE} project.

	(03 Feb 1995)

additive

	<mathematics> A function f : X -> Y is additive if

	 for all Z <= X
	 f (lub Z)  =  lub { f z : z in Z }

	(f "preserves {lub}s").  All additive functions defined over
	{cpo}s are {continuous}.

	("<=" is written in {LaTeX} as {\subseteq}, "lub" as \sqcup ).

	(03 Feb 1995)

address

	1. <networking> {e-mail address}.

	2. <networking> {Internet address}.

	3. <networking> {MAC address}.

	4. <storage, programming> An unsigned integer used to select
	one fundamental element of storage, usually known as a {word}
	from a computer's {main memory} or other storage device.  The
	{CPU} outputs addresses on its {address bus} which may be
	connected to an {address decoder}, {cache controller}, {memory
	management unit}, and other devices.

	While from a hardware point of view an address is indeed an
	integer most {strongly typed} programming languages disallow
	mixing integers and addresses, and indeed addresses of
	different data types.  This is a fine example for {syntactic
	salt}: the compiler could work without it but makes writing
	bad programs more difficult.

	(01 Jul 1997)

address bus

	<processor> The connections between the {CPU} and memory which
	carry the {address} from/to which the CPU wishes to read or
	write.  The number of bits of address bus determines the
	maximum size of memory which the processor can access.

	See also {data bus}.

	(22 Mar 1995)

addressed call mode

	<communications> (ACM) A mode that permits control signals and
	commands to establish and terminate calls in {V.25bis}.

	(07 May 1997)

addressing mode

	1. <processor, programming> One of a set of methods for
	specifying the {operand}(s) for a {machine code} instruction.
	Different processors vary greatly in the number of addressing
	modes they provide.  The more complex modes described below
	can usually be replaced with a short sequence of instructions
	using only simpler modes.

	The most common modes are "register" - the operand is stored
	in a specified {register}; "absolute" - the operand is stored
	at a specified memory address; and "{immediate}" - the operand
	is contained within the instruction.

	Most processors also have {indirect addressing} modes, e.g.
	"register indirect", "memory indirect" where the specified
	register or memory location does not contain the operand but
	contains its address, known as the "{effective address}".  For
	an absolute addressing mode, the effective address is
	contained within the instruction.

	Indirect addressing modes often have options for pre- or post-
	increment or decrement, meaning that the register or memory
	location containing the {effective address} is incremented or
	decremented by some amount (either fixed or also specified in
	the instruction), either before or after the instruction is
	executed.  These are very useful for {stack}s and for
	accessing blocks of data.  Other variations form the effective
	address by adding together one or more registers and one or
	more constants which may themselves be direct or indirect.
	Such complex addressing modes are designed to support access
	to multidimensional arrays and arrays of data structures.

	The addressing mode may be "implicit" - the location of the
	operand is obvious from the particular instruction.  This
	would be the case for an instruction that modified a
	particular control register in the CPU or, in a {stack} based
	processor where operands are always on the top of the stack.

	2. In {IBM} {System 370}/{XA} the addressing mode bit controls
	the size of the {effective address} generated.  When this bit
	is zero, the CPU is in the 24-bit addressing mode, and 24 bit
	instruction and operand effective addresses are generated.
	When this bit is one, the CPU is in the 31-bit addressing
	mode, and 31-bit instruction and operand effective addresses
	are generated.

	["IBM System/370 Extended Architecture Principles of
	Operation", Chapter 5., 'Address Generation', BiModal
	Addressing].

	(30 Mar 1995)

address mask

	<networking> (Or "subnet mask") A {bit mask} used to identify
	which bits in an {IP address} correspond to the {network
	address} and {subnet} portions of the address.  This mask is
	often referred to as the subnet mask because the network
	portion of the address can be determined by the {class}
	inherent in an IP address.  The address mask has ones in
	positions corresponding to the network and subnet numbers and
	zeros in the host number positions.

	(21 Mar 1996)

address resolution

	<networking> Conversion of an {Internet address} into the
	corresponding physical address ({Ethernet address}).  This is
	usually done using {Address Resolution Protocol}.

	The {resolver} is a library routine and a set of processes
	which converts {hostnames} into {Internet addresses}, though
	this process in not usually referred to as {resolution}.  See
	{DNS}.

	(09 Apr 1996)

Address Resolution Protocol

	<networking, protocol> (ARP) A method for finding a {host}'s
	{Ethernet address} from its {Internet address}.  The sender
	broadcasts an ARP {packet} containing the {Internet address}
	of another host and waits for it (or some other host) to send
	back its Ethernet address.  Each host maintains a {cache} of
	address translations to reduce delay and loading.  ARP allows
	the Internet address to be independent of the Ethernet address
	but it only works if all hosts support it.

	ARP is defined in {RFC 826}.

	The alternative for hosts that do not do ARP is {constant
	mapping}.

	See also {proxy ARP}, {reverse ARP}.

	(20 Mar 1995)

address space

	<operating system> 1. The range of addresses which a processor
	can access.  This usually depends on the width of the
	processor's {address bus} and address {register}s.  Address
	space may refer to either {physical address} or {virtual
	address}.

	2. The range of {physical address}es or {virtual address}es
	allocated to a process.

	(12 May 1995)

Address Strobe

	<storage> (AS) One of the input signals of a memory device,
	especially {semiconductor} memory, which is asserted to tell
	the memory device that the {address} inputs are valid.  Upon
	receiving this signal the selected memory device starts the
	memory access (read/write) indicated by its other inputs.

	It may be driven directly by the {processor} or by a {memory
	controller}.

	(02 Oct 1996)

ADELE

	<language> A language for specification of {attribute
	grammar}s, used by the {MUG2} {compiler compiler}.

	["An Overview of the Attribute Definition Language ADELE",
	H. Ganziger in GI3, Fachesprach "Compiler-Compiler",
	W. Henhapl ed, Munchen Mar 1982, pp.22-53].

	(23 Jan 1995)

ADES

	<language> An early system on the {IBM 704}.

	Version: ADES II.

	[Listed in CACM 2(5):16 (May 1959)].

	(20 Mar 1995)

ad hoc

	Contrived purely for the purpose in hand rather than planned
	carefully in advance.  E.g. "We didn't know what to do about
	the sausage rolls, so we set up an ad-hoc committee".

	(25 Mar 1995)

ad-hockery

	<jargon> /ad-hok'*r-ee/ (Purdue) 1. Gratuitous assumptions
	made inside certain programs, especially {expert system}s,
	which lead to the appearance of semi-intelligent behaviour but
	are in fact entirely arbitrary.  For example, {fuzzy-matching}
	of input tokens that might be typing errors against a symbol
	table can make it look as though a program knows how to spell.

	2. Special-case code to cope with some awkward input that
	would otherwise cause a program to fail, presuming normal
	inputs are dealt with in some cleaner and more regular way.
	Also called "ad-hackery", "ad-hocity" (/ad-hos'*-tee/),
	"ad-crockery".

	See also {ELIZA effect}.

	(05 Jan 1995)

ad-hoc polymorphism

	{overloading}

Aditi

	<database, project> The Aditi Deductive Database System.  A
	multi-user {deductive database} system from the Machine
	Intelligence Project at the {University of Melbourne}.  It
	supports base {relation}s defined by {fact}s (relations in the
	sense of {relational database}s) and {derived relation}s
	defined by {rule}s that specify how to compute new information
	from old information.

	Both base relations and the rules defining derived relations
	are stored on disk and are accessed as required during query
	evaluation.  The rules defining derived relations are
	expressed in a {Prolog}-like language, which is also used for
	expressing queries.

	Aditi supports the full structured data capability of Prolog.
	Base relations can store arbitrarily nested terms, for example
	arbitrary length lists, and rules can directly manipulate such
	terms.  Base relations can be indexed with {B-tree}s or
	multi-level signature files.

	Users can access the system through a {Motif}-based query and
	database administration tool, or through a command line
	interface.  There is also in interface that allows {NU-Prolog}
	programs to access Aditi in a transparent manner.  Proper
	{transaction processing} is not supported in this release.

	The beta release runs on {SPARC}/{SunOS4}.1.2 and
	{MIPS}/{Irix}4.0.

	E-mail: <aditi@cs.mu.oz.au>.

	(17 Dec 1992)

adjacency

	<networking> A relationship between selected neighboring
	{routers} and {end nodes} for the purpose of exchanging
	routing information.  Adjacency is based upon the use of a
	common media segment.

	[Better explanation?]

	(07 May 1997)

adjacent

	<networking> A description of {SNA} {nodes} that are connected
	to a given node with no intervening nodes.  In {DECnet} and
	{OSI}, adjacent nodes are nodes that share a common segment
	({Ethernet}, {FDDI}, {Token Ring}).

	(07 May 1997)

ADL

	1. <games> {Adventure Definition Language}.

	2. <language> {Ada} Development Language.

	R.A. Lees, 1989.

	3. <programming> {API} Definition Language.

	A project for Automatic Interface Test Generation.

	(17 Nov 1995)

AdLog

	<language> A language which adds a {Prolog} layer to {Ada}.

	["AdLog, An Ada Components Set to Add Logic to Ada",
	G. Pitette, Proc Ada-Europe Intl Conf Munich, June 1988].

	(21 Mar 1995)

ADM

	<language> A picture {query language}, extension of {Sequel2}.

	["An Image-Oriented Database System", Y. Takao et al, in
	Database Techniques for Pictorial Applications, A. Blaser ed,
	pp. 527-538].

	(21 Mar 1995)

ADMD

	{Administration Management Domain}

admin

	{system administrator}

Administration Management Domain

	<networking> (ADMD) An {X.400} {Message Handling System}
	{public service carrier}.  The ADMDs in all countries
	worldwide together provide the X.400 {backbone}.  Examples:
	{MCImail} and {ATTmail} in the U.S., {British Telecom}
	{Gold400mail} in the U.K.

	See also {PRMD}.

	[RFC 1208].

	(07 May 1997)

administrative distance

	<networking> A rating of the trustworthiness of a {routing}
	information source.  In {Cisco} {routers}, administrative
	distance is a number between 0 and 255 (the higher the value,
	the less trustworthy the source).

	[Algorithm?]

	(07 May 1997)

Administrative Domain

	<networking> (AD) A collection of {host}s and {router}s, and
	the interconnecting network(s), managed by a single
	administrative authority.

	(24 Nov 1994)

Adobe

	{Adobe Systems, Inc.}

Adobe Systems, Inc.

	<company> A California {font} foundry and {software} house.
	Adobe created the {PostScript} {page description language} and
	wrote the {Blue Book}, {Green Book}, {Red Book} and {White
	Book} on it.  They also developed {PDF}.  Adobe took over
	{Frame Technology Corporation} in late 1995/early 1996.

	{Home (http://www.adobe.com/)}.

	E-mail: <postmaster@adobe.com>.

	Address: Silicon Valley, California, USA.

	(13 Dec 1996)

Adobe Type Manager

	<text, tool, product> (ATM) Software that produces
	{PostScript} {outline font}s on screen and paper.  There are
	version s that run under {Microsoft Windows} and on the
	{Macintosh}.

	[What font features does it support?]

	(01 Feb 1995)

ADPCM

	{Adaptive Digital Pulse Code Modulation}

ADS

	An {expert system}.

ADSL

	{Asymmetric Digital Subscriber Line}

ADSP

	{AppleTalk Data Stream Protocol}

ADSU

	{ATM Data Service Unit}

ADT

	{abstract data type}

Advanced Communication Function/Network Control Program

	<networking> (ACF/NCP) The primary {SNA} {network control
	program}.  ACF/NCP rides in the {communications controller}
	and interfaces with the SNA {access method} in the {host
	processor} to control network communications.

	[Communication or Communications?  Is ACF/NCP one of the {ACF}
	products?]

	(07 May 1997)

Advanced Communications Function

	<networking> (ACF) A group of {SNA} products that provide
	{distributed processing} and resource sharing.

	[Communication or Communications?]

	(07 May 1997)

Advanced Computing Environment

	<body> (ACE) A consortium to agree on an {open} architecture
	based on the {MIPS R4000} chip.  A computer architecture ARCS
	will be defined, on which either {OS/2} or {Open Desktop} can
	be run.

	(03 Feb 1995)

Advanced Data Communications Control Protocol

	<protocol> An {ANSI} {standard} {bit-oriented} {data link}
	control {protocol}.

	(07 May 1997)

Advanced Interactive eXecutive

	<operating system> (AIX) {IBM}'s version of {Unix}, taken as
	the basis for the {OSF} {standard}.

	{Usenet} newsgroup: {news:comp.sys.unix.aix}.

	(24 Nov 1994)

Advanced Micro Devices, Inc.

	<company> (AMD) The fifth-largest, US manufacturer of
	{integrated circuit}s, founded in 1969.  AMD focuses on the
	personal and networked computation and communications market.
	They produce {microprocessor}s, {embedded processor}s and
	related peripherals, memories, {programmable logic device}s,
	circuits for telecommunications and networking applications.

	AMD has 12000 employees in the USA and elsewhere and
	manufacturing facilities in Austin, Texas; Aizu-Wakamatsu,
	Japan; Bangkok, Thailand; Penang, Malaysia; and Singapore.

	AMD made the {AMD 2900} series of {bit-slice} {TTL} components
	and make clones of the {Intel 80386} and {Intel 486}
	{microprocessor}s.

	{Home (http://www.amd.com/)}

	Address: Sunnyvale, CA, USA.

	(27 Feb 1995)

Advanced Network Systems Architecture

	<networking> (ANSA) A "{software bus}" based on a model for
	distributed systems developed as an {ESPRIT} project.

	{Home (http://www.ansa.co.uk/)}

	(01 Apr 1996)

Advanced Peer-to-Peer Networking

	<networking, product> (APPN) IBM data communications support
	that routes data in a network between two or more {APPC}
	systems that need not be adjacent.

	(03 Feb 1995)

Advanced Power Management

	<hardware> (APM) A feature of some displays, usually but not
	always, on {laptop computers}, which turns off power to the
	display after a preset period of inactivity to conserve
	electrical power.  Monitors with this capability are usually
	refered to as "green monitors", meaning environmentally
	friendly.

	Not to be confused with a {screen blanker} which is {software}
	that causes the display to go black (by setting every {pixel}
	to black) to prevent {burn-in}.

	(25 Aug 1997)

Advanced Program-to-Program Communications

	<networking, product> (APPC) An implementation of the {IBM}
	{SNA}/{SDLC} {LU6.2} {protocol} that allows interconnected
	systems to communicate and share the processing of programs.

	(03 Feb 1995)

Advanced Research Projects Agency

	<body> (ARPA) An agency of the US Department of Defense
	responsible for the development of new technology for use by
	the military.  ARPA was its original name, then it was known
	as DARPA (for Defense) and now it is ARPA again.  It was
	responsible for funding development of {ARPANET} (which grew
	into the {Internet}), the {Berkeley} version of {Unix} and
	{TCP/IP}.

	{Home (http://www.arpa.mil/)}

	[When was it renamed?]

	(18 Jan 1995)

Advanced Research Projects Agency Network

	<networking> (ARPANET) A pioneering longhaul {wide area
	network} funded by {ARPA}.  It became operational in 1968 and
	served as the basis for early networking research, as well as
	a central {backbone} during the development of the {Internet}.
	The ARPANET consisted of individual {packet switching}
	computers interconnected by {leased line}s.  {Protocol}s used
	include {FTP} and {telnet}.  It has now been replaced by
	{NSFnet}.

	[1968 or 1969?]

	(17 Nov 1994)

Advanced Revelation

	<database> (AREV) A {database development environment} for
	{personal computers} available from {Revelation Software}
	since 1982.  Originally based on the {PICK} {operating
	system}, there are over one million users worldwide in 1996.

	(12 Dec 1996)

Advanced RISC Computing Specification

	<standard, hardware> (ARC) The baseline hardware requirements
	for an {ACE}-compatible system.

	(16 Jan 1995)

Advanced RISC Machine

	<processor> (ARM, Originally {Acorn} RISC Machine).  A series
	of low-cost, power-efficient 32-bit {RISC} {microprocessors}
	for embedded control, computing, {digital signal processing},
	{games}, consumer {multimedia} and portable applications.  It
	was the first commercial RISC microprocessor (or was the {MIPS
	R2000}?) and was licensed for production by {Asahi Kasei
	Microsystems}, {Cirrus Logic}, {GEC Plessey Semiconductors},
	{Samsung}, {Sharp}, {Texas Instruments} and {VLSI Technology}.

	The ARM has a small and highly {orthogonal} {instruction set},
	as do most RISC processors.  Every instruction includes a
	four-bit code which specifies a condition (of the {processor
	status register}) which must be satisfied for the instruction
	to be executed.  Unconditional execution is specified with a
	condition "true".

	Instructions are split into load and store which access memory
	and arithmetic and logic instructions which work on
	{registers} (two source and one destination).

	The ARM has 27 registers of which 16 are accessible in any
	particular processor mode.  R15 combines the {program counter}
	and processor status byte, the other registers are general
	purpose except that R14 holds the {return address} after a
	{subroutine} call and R13 is conventionally used as a {stack
	pointer}.  There are four processor modes: user, {interrupt}
	(with a private copy of R13 and R14), fast interrupt (private
	copies of R8 to R14) and {supervisor} (private copies of R13
	and R14).  The {ALU} includes a 32-bit {barrel-shifter}
	allowing, e.g., a single-{cycle} shift and add.

	The first ARM processor, the ARM1 was a prototype which was
	never released.  The ARM2 was originally called the Acorn RISC
	Machine.  It was designed by {Acorn Computers Ltd.} and used
	in the original {Archimedes}, their successor to the {BBC
	Micro} and {BBC Master} series which were based on the
	eight-bit {6502} {microprocessor}.  It was clocked at 8 MHz
	giving an average performance of 4 - 4.7 {MIPS}.  Development
	of the ARM family was then continued by a new company,
	{Advanced RISC Machines Ltd.}

	The {ARM3} added a {fully-associative} on-chip {cache} and
	some support for {multiprocessing}.  This was followed by the
	{ARM600} chip which was an {ARM6} processor {core} with a
	4-kilobyte 64-way {set-associative} {cache}, an {MMU} based on
	the MEMC2 chip, a {write buffer} (8 words?) and a
	{coprocessor} interface.

	The {ARM7} processor core uses half the power of the {ARM6}
	and takes around half the {die} size.  In a full processor
	design ({ARM700} chip) it should provide 50% to 100% more
	performance.

	In July 1994 {VLSI Technology, Inc.} released the {ARM710}
	processor chip.

	{Thumb} is an implementation with reduced code size
	requirements, intended for {embedded} applications.

	An {ARM800} chip is also planned.

	{AT&T}, {IBM}, {Panasonic}, {Apple Coputer}, {Matsushita} and
	{Sanyo} either rely on, or manufacture, ARM 32-bit processor
	chips.

	{Usenet} newsgroup: {news:comp.sys.arm}.

	(05 Aug 1997)

Advanced RISC Machines Ltd.

	<company> (ARM) A company formed in 1990 by {Acorn Computers}
	Ltd., {Apple Computer, Inc.} and {VLSI Technology} to market
	and develop the {Advanced RISC Machine} {microprocessor}
	family, originally designed by Acorn.

	ARM Ltd. also designs and licenses peripheral chips and
	supplies supporting software and hardware tools.  In April
	1993, Nippon Investment and Finance, a Daiwa Securities
	company, became ARM's fourth investor.  In May 1994 Samsung
	became the sixth large company to have a licence to use the
	ARM processor core.

	The success of ARM Ltd. and the strategy to widen the
	availability of RISC technology has resulted in its chips now
	being used in a range of products including the {Apple
	Newton}.  As measured by an independent authority, more ARM
	processors were shipped than {SPARC} chips in 1993.  ARM has
	also sold three times more chips than the {PowerPC}
	consortium.

	{Home (http://www.systemv.com/armltd/index.html)}

	E-mail: armltd.co.uk.

	Address: Advanced RISC Machines Ltd.  Fulbourn Road, Cherry
	Hinton, Cambridge CB1 4JN, UK.

	Telephone: +44 (1223) 400 400.  Fax: +44 (1223) 400 410.

	(03 Nov 1994)

Advanced Software Environment

	<programming> (ASE) An {object-oriented} {application support
	system} from {Nixdorf}.

	(12 Sep 1995)

Advanced Technology Attachment

	<storage, hardware, standard> (ATA, AT Attachment) {ANSI}
	group X3T10's official name for the {disk drive} interface
	{standard} commonly known as {Integrated Drive Electronics}
	(IDE).

	{(http://www.symbios.com/x3t10/)}.

	(21 Mar 1996)

Advanced Technology Attachment Interface with Extensions

	<storage, standard> (ATA-2) A proposed (May 1996 or earlier?)
	{standard} from {X3T10} (document 948D rev 3) which extends
	the {AT Attachment} interface while maintaining compatibility
	with current {IBM PC} {BIOS} designs.

	{Marketroids} call ATA-2 "Fast ATA" or "Fast ATA-2" since the
	main changes are increased interface speed.  Optional support
	for power saving modes and removable devices is also in the
	standard.

	(16 Oct 1996)

Advanced WavEffect

	<multimedia, hardware> (AWE) The kind of synthesis used by the
	{EMU 8000} music synthesizer {integrated circuit} found on the
	{SB AWE32} card.

	(15 Dec 1996)

ADVENT

	<games> /ad'vent/ The prototypical computer {Adventure} game,
	first implemented by Will Crowther for a {CDC} computer
	(probably the 6600?) as an attempt at computer-refereed
	fantasy gaming.

	ADVENT was ported to the {PDP-10}, and expanded to the
	350-point {Classic} puzzle-oriented version, by Don Woods of
	the {Stanford Artificial Intelligence Laboratory} (SAIL).  The
	game is now better known as Adventure, but the {TOPS-10}
	{operating system} permitted only six-letter filenames.  All
	the versions since are based on the SAIL port.

	David Long of the {University of Chicago} Graduate School of
	Business Computing Facility (which had two of the four
	{DEC20}s on campus in the late 1970s and early 1980s) was
	responsible for expanding the cave in a number of ways, and
	pushing the point count up to 500, then 501 points.  Most of
	his work was in the data files, but he made some changes to
	the {parser} as well.

	This game defined the terse, dryly humorous style now expected
	in text adventure games, and popularised several tag lines
	that have become fixtures of hacker-speak: "A huge green
	fierce snake bars the way!"  "I see no X here" (for some noun
	X).  "You are in a maze of twisty little passages, all alike."
	"You are in a little maze of twisty passages, all different."
	The "magic words" {xyzzy} and {plugh} also derive from this
	game.

	Crowther, by the way, participated in the exploration of the
	Mammoth & Flint Ridge cave system; it actually *has* a
	"Colossal Cave" and a "Bedquilt" as in the game, and the "Y2"
	that also turns up is cavers' jargon for a map reference to a
	secondary entrance.

	See also {vadding}.

	[Was the original written in FORTRAN?]

	(01 Apr 1996)

Adventure Definition Language

	<language, games> (ADL) An {adventure} game language
	{interpreter} designed by Ross Cunniff <cunniff@fc.hp.com> and
	Tim Brengle in 1987.  ADL is semi-{object-oriented} with
	{Lisp}-like {syntax} and is a superset of {DDL}.  It is
	available for {Unix}, {MS-DOS}, {Amiga} and {Acorn}
	{Archimedes}.

	{(ftp://ftp.uu.net/usenet/comp.sources.games/volume2)},
	{(ftp://ftp.wustl.edu/systems/amiga/fish/fish/f0/ff091)}.

	(20 Mar 1995)

ADVSYS

	<language, games> An {adventure} game language designed by
	David Betz in 1986.  ADVSYS is {object-oriented} and
	{Lisp}-like.

	{(ftp://ftp.uu.net/usenet/comp.sources.games/volume2)}

	(20 Mar 1995)

AE

	{Application Executive}

AED

	{Automated Engineering Design}

AEGIS

	<operating system> A {Unix} variant that was used on {Apollo}
	{workstations} before Apollo was bought by {Hewlett Packard}.
	AEGIS has some advantages over standard {BSD} or {System V}
	Unix.  It includes faster file access and a richer command
	set; there are commands to find out which {process} is running
	on a particular node, which process is locking a particular
	file, etc.

	(25 Feb 1997)

Aegis

	<programming, tool> A {CASE} tool for project change
	management, from the {GNU} project.

	(27 Mar 1995)

Aeolus

	<language> A {concurrent} language with {atomic transaction}s.

	["Rationale for the Design of Aeolus", C. Wilkes et al, Proc
	IEEE 1986 Intl Conf Comp Lang, IEEE 1986, pp.107-122].

	(27 Mar 1995)

AEP

	{Application Environment Profile}

aeroplane rule

	"Complexity increases the possibility of failure; a
	twin-engine aeroplane has twice as many engine problems as a
	single-engine aeroplane."

	By analogy, in both software and electronics, the rule that
	simplicity increases robustness.  It is correspondingly argued
	that the right way to build reliable systems is to put all
	your eggs in one basket, after making sure that you've built a
	really *good* basket.

	See also {KISS Principle}.

	(04 Apr 1995)

AES

	{Application environment specification}

AESOP

	{An Evolutionary System for On-line Programming}

AFAC

	<language> An early system on the {IBM 704}.

	[Listed in CACM 2(5):16 (May 1959)].

	(04 Apr 1995)

AFAIK

	<chat> as far as I know.

affine transformation

	<mathematics> A {linear transformation} followed by a
	{translation}.  Given a {matrix} M and a {vector} v,

	  A(x) = Mx + v

	is a typical affine transformation.

	(10 Apr 1995)

AFIPS

	{American Federation of Information Processing Societies}

AFJ

	{April Fool's Joke}

AFK

	<chat> away from keyboard.

aflex

	<tool> A {Lex}-like {scanner generator} that produce {Ada}
	output from IRUS (Irvine Research Unit in Software).  aflex
	comes with {ayacc}.

	Version 1.2a.

	Mailing list: <irus-software-request@ics.uci.edu>.

	{(ftp://liege.ics.uci.edu/pub/irus/aflex-ayacc_1.2a.tar.Z)}

	(06 Jan 1993)

AFNOR

	<body, standard> Association Francaise pour la Normalisation.

	The French national {standard}s institute, a member of {ISO}.

	(14 Dec 1994)

AFP

	{Appletalk Filing Protocol}

AFS

	{Andrew File System}

AFUU

	{Association Franaise des Utilisateurs d'Unix}

agent

	<networking> In the {client-server} model, the part of the
	system that performs information preparation and exchange on
	behalf of a {client} or {server}.  Especially in the phrase
	"intelligent agent" it implies some kind of automatic process
	which can communicate with other agents to perform some
	collective task on behalf of one or more humans.

	(09 Apr 1995)

aggregate type

	<programming> A data {type} composed of multiple elements.  An
	aggregate can be homogeneous (all elements have the same type)
	e.g. an {array}, a list in a {functional language}, a string
	of characters, a file; or it can be heterogeneous (elements
	can have different types) e.g. a {structure}.  In most
	languages aggregates can contain elements which are themselves
	aggregates. e.g. a list of lists.

	See also {union}.

	(23 Mar 1996)

aggregation

	<programming> A composition technique for building a new
	{object} from one or more existing objects that support some
	or all of the new object's required interfaces.

	(07 Jan 1996)

AGL

	<programming> (Atelier de Genie Logiciel) French for {IPSE}.

	(07 Jan 1997)

AGM Theory for Belief Revision

	<artificial intelligence> (After the initials of the authors
	who established the field - Alchourron, Makinson and
	Gardenfors).  A method of {belief revision} giving minimal
	properties a revision process should have.

	[Reference?]

	(20 Mar 1995)

AGORA

	<language> A distributed {object-oriented language}.

AGP

	{Accelerated Graphics Port}

AGP graphics

	{Accelerated Graphics Port}

A Hardware Programming Language

	<language> (AHPL) A {register}-level language by Hill and
	Peterson, some of whose operators resemble {APL}.

	HPSIM2 is a function-level simulator, available from Engrg
	Expt Sta, {University of Arizona}.

	["Digital Systems: Hardware Organization and Design", F. Hill
	et al, Wiley 1987].

	(26 Jan 1995)

AHDL

	{Analog Hardware Design Language}

AHPL

	{A Hardware Programming Language}

AI

	{artificial intelligence}

AIA

	{Application Integration Architecture}

AI-complete

	<artificial intelligence, jargon> /A-I k*m-pleet'/ (MIT,
	Stanford: by analogy with "{NP-complete}") A term used to
	describe problems or subproblems in {artificial intelligence},
	to indicate that the solution presupposes a solution to the
	"strong AI problem" (that is, the synthesis of a human-level
	intelligence).  A problem that is AI-complete is, in other
	words, just too hard.

	See also {gedanken}.

	(12 Apr 1995)

AID

	{Algebraic Interpretive Dialogue}

AIDA

	<language> 1. A {functional} dialect of {Dictionary APL} by
	M. Gfeller.

	["APL Arrays and Their Editor", M. Gfeller, SIGPLAN Notices
	21(6):18-27 (June 1986) and SIGAPL Conf Proc].

	2. An intermediate representation language for {Ada} developed
	at the {University of Karlsruhe} in 1980.  AIDA was merged
	with {TCOL.Ada} to form {Diana}.

	["AIDA Introduction and User Manual", M. Dausmann et al, U
	Karlsruhe, Inst fur Inform II, TR Nr 38/80].

	["AIDA Reference Manual", ibid, TR Nr 39/80, Nov 1980].

	(12 Apr 1995)

AIDS

	<jargon> /aydz/ A* Infected Disk Syndrome ("A*" is a
	{glob} pattern that matches, but is not limited to, {Apple
	Computer}), this condition is quite often the result of
	practicing unsafe {SEX}.

	See {virus}, {worm}, {Trojan horse}, {virgin}.

	(13 Apr 1995)

AIDX

	<abuse, operating system> /aydkz/ A derogatory term for
	{IBM}'s perverted version of {Unix}, {AIX}, especially for the
	AIX 3.? used in the {IBM RS/6000} series (some hackers think
	it is funnier just to pronounce "AIX" as "aches").  A victim
	of the dreaded "hybridism" disease, this attempt to combine
	the two main currents of the Unix stream ({BSD} and {USG
	Unix}) became a monstrosity to haunt system administrators'
	dreams.  For example, if new accounts are created while many
	users are logged on, the load average jumps quickly over 20
	due to silly implementation of the user databases.

	For a quite similar disease, compare {HP-SUX}.  Also, compare
	{Macintrash} {Nominal Semidestructor}, {Open DeathTrap},
	{ScumOS}, {sun-stools}.

	(13 Apr 1995)

AIFF

	{Audio IFF}

AI koan

	<humour> /A-I koh'an/ One of a series of pastiches of Zen
	teaching riddles created by {Danny Hillis} at the {MIT AI Lab}
	around various major figures of the Lab's culture.

	See also {ha ha only serious}, {mu}.

	In reading these, it is at least useful to know that {Marvin
	Minsky}, {Gerald Sussman}, and Drescher are {AI} researchers
	of note, that {Tom Knight} was one of the {Lisp machine}'s
	principal designers, and that {David Moon} wrote much of Lisp
	Machine Lisp.

					 * * *

	A novice was trying to fix a broken Lisp machine by turning
	the power off and on.

	Knight, seeing what the student was doing, spoke sternly: "You
	cannot fix a machine by just power-cycling it with no
	understanding of what is going wrong."

	Knight turned the machine off and on.

	The machine worked.

					 * * *

	One day a student came to Moon and said: "I understand how to
	make a better garbage collector.  We must keep a reference
	count of the pointers to each cons."

	Moon patiently told the student the following story:

	     "One day a student came to Moon and said: `I understand
	     how to make a better garbage collector...

	[Pure reference-count garbage collectors have problems with
	circular structures that point to themselves.]

					 * * *

	In the days when Sussman was a novice, Minsky once came to him
	as he sat hacking at the PDP-6.

	"What are you doing?", asked Minsky.

	"I am training a randomly wired neural net to play
	Tic-Tac-Toe", Sussman replied.

	"Why is the net wired randomly?", asked Minsky.

	"I do not want it to have any preconceptions of how to play",
	Sussman said.

	Minsky then shut his eyes.

	"Why do you close your eyes?", Sussman asked his teacher.

	"So that the room will be empty."

	At that moment, Sussman was enlightened.

					 * * *

	A disciple of another sect once came to Drescher as he was
	eating his morning meal.

	"I would like to give you this personality test", said the
	outsider, "because I want you to be happy."

	Drescher took the paper that was offered him and put it into
	the toaster, saying: "I wish the toaster to be happy, too."

	(08 Feb 1995)

AIMACO

	{AIr MAterial COmmand compiler}

Aimnet

	<networking, company> An {Internet} {access provider} for
	individuals and corporations.  They provide {dial-up}, {SLIP},
	{PPP} and {shell account}s as well as {ISDN}.

	{Home (http://www.aimnet.com/)}

	Address: Cupertino, CA 95014, USA.

	Telephone: +1 (408) 253 0900

	(08 Feb 1995)

AIr MAterial COmmand compiler

	<language> (AIMACO) A modification of {FLOW-MATIC}.  AIMACO
	was supplanted by {COBOL}.

	[Sammet 1969, p. 378].

	(20 Feb 1995)

AIX

	{Advanced Interactive eXecutive}

AKC

	{Ascending Kleene Chain}

AKCL

	{Austin Kyoto Common Lisp}

AKL

	{Andorra Kernel Language}

AL

	1. {Assembly Language}.

	2. {artificial life}.

Aladdin Systems

	<company> The developers of the {stuffit} file archiving and
	{compression} utility for the {Macintosh}.

	(01 Mar 1995)

ALADIN

	1. <language> {A Language for Attributed Definitions}.

	2. <tool> An interactive mathematics system for the {IBM 360}.

	["A Conversational System for Engineering Assistance: ALADIN",
	Y. Siret, Proc Second Symp Symb Algebraic Math, ACM Mar 1971].

	(13 Apr 1995)

ALAM

	<language> A language for {symbolic mathematics}, especially
	General Relativity.

	See also {CLAM}.

	["ALAM Programmer's Manual", Ray D'Inverno, 1970].

	(28 Oct 1994)

A-language

	<language> An early {ALGOL}-like {surface syntax} for {Lisp}.

	["An Auxiliary Language for More Natural Expression--The
	A-language", W. Henneman in The Programming Language LISP,
	E.C. Berkeley et al eds, MIT Press 1964, pp.239- 248].

	(28 Oct 1994)

A Language Encouraging Program Hierarchy

	<language> (ALEPH) A language developed in about 1975.

	["On the Design of ALEPH", D. Grune, CWI, Netherlands 1986].

	(27 Feb 1997)

A Language for Attributed Definitions

	<language> (ALADIN) A language for formal specification of
	{attributed grammar}s.  ALADIN is the input language for the
	{GAG} compiler generator.  It is {applicative} and {strongly
	typed}.

	["GAG: A Practical Compiler Generator", Uwe Kastens
	<uwe@uni-paderborn.de> et al, LNCS 141, Springer 1982].

	(14 Apr 1995)

A Language with an Extensible Compiler

	<language> (ALEC) A language Implemented using {RCC} on an
	{ICL 1906A}.

	["ALEC - A User Extensible Scientific Programming Language",
	R.B.E. Napper et al, Computer J 19(1):25-31].

	(19 Apr 1995)

Alan Kay

	<person> The leader of the Software Concepts Group at {Xerox}
	{Palo Alto Research Centre} which developed {Smalltalk}, the
	pioneering {object-oriented programming} system, in 1972.

	(24 Nov 1994)

Alan M. Turing

	{Alan Turing}

Alan Turing

	<person> Alan M. Turing, 22/3? June 1912 - 7 June 1954.  A
	British mathematician, inventor of the {Turing Machine}.
	Turing also proposed the {Turing test}.  Turing's work was
	fundamental in the theoretical foundations of computer
	science.

	Turing studied at {King's College London} and was a graduate
	student at {Princeton University} from 1936 to 1938.  While at
	Princeton Turing published "On Computable Numbers", a paper in
	which he conceived an {abstract machine}, now called a {Turing
	Machine}.

	Turing returned to England in 1938 and during World War II, he
	worked in the British Foreign Office.  He masterminded
	operations at {Bletchley Park}, UK which were highly
	successful in cracking the Nazis "Enigma" codes during World
	War II.  Some of his early advances in computer design were
	inspired by the need to perform many repetitive symbolic
	manipulations quickly.  Before the building of the {Colossus}
	computer this work was done by a roomful of women.

	In 1945 he joined the {National Physical Laboratory} in London
	and worked on the design and construction of a large computer,
	named {Automatic Computing Engine} (ACE).  In 1949 Turing
	became deputy director of the Computing Laboratory at
	Manchester where the {Manchester Automatic Digital Machine},
	the worlds largest memory computer, was being built.

	He also worked on theories of {artificial intelligence}, and
	on the application of mathematical theory to biological forms.
	In 1952 he published the first part of his theoretical study
	of morphogenesis, the development of pattern and form in
	living organisms.

	Turing was gay, and died rather young, not for the reason
	that's common today, but under mysterious circumstances.  He
	was arrested for violation of British homosexuality statutes
	in 1952.  He died of potassium cyanide poisoning while
	conducting electrolysis experiments.  An inquest concluded
	that it was self-administered but it is now thought by some to
	have been an accident.

	There is an excellent biography of Turing by Andrew Hodges,
	subtitled "The Enigma of Intelligence" and a play based on it
	called "Breaking the Code".  There was also a popular summary
	of his work in Douglas Hofstadter's book "Gdel, Escher,
	Bach".

	(10 May 1995)

A-law

	<standard> The {ITU-T} {standard} for {nonuniform quantising
	logarithmic compression}.

	[Equation?]

	(21 Feb 1995)

ALC

	1. {Assembly Language Compiler}.

	2. {Airline Line Control}.

	(05 Feb 1997)

Alcool-90

	<language> An {object-oriented} extension of {ML} with
	run-time {overloading} and a type-based notion of {modules},
	{functors} and {inheritance}.  It is built on {CAML Light}.

	{(ftp://ftp.inria.fr/lang/alcool)}

	E-mail: <Francois.Rouaix@inria.fr>.

	(18 Apr 1995)

ALCOR

	<language> A subset of {ALGOL}.

	[Sammet 1969, p. 180].

	(18 Apr 1995)

Aldat

	<language> A {database} language, based on {extended algebra}.

	[Listed by M.P. Atkinson & J.W. Schmidt in a tutorial in
	Zurich, 1989].

	(19 Apr 1995)

ALDES

	{ALgorithm DEScription}

ALDiSP

	{Applicative Language for Digital Signal Processing}

ALEC

	{A Language with an Extensible Compiler}

ALEF

	<language> A programming language from {Bell Labs}.  ALEF
	boasts few new ideas but is instead a careful synthesis of
	ideas from other languages.  The result is a practical general
	purpose programming language which was once displacing {C} as
	their main implementation language.  Both {shared variables}
	and {message passing} are supported through language
	constructs.

	A {window system}, {user interface}, {operating system}
	network code, {news reader}, {mailer} and variety of other
	tools in {Plan 9} are now implemented using ALEF.

	(13 Feb 1997)

ALEPH

	1. <language> {A Language Encouraging Program Hierarchy}.

	2. <tool> A system for formal {semantics} written by Peter
	Henderson ca. 1970.

	[CACM 15(11):967-973 (Nov 1972)].

	(15 Dec 1994)

Aleph

	<text, language> ["Aleph: A language for typesetting", Luigi
	Semenzato <luigi@cs.berkeley.edu> and Edward Wang
	<edward@cs.berkeley.edu> in Proceedings of Electronic
	Publishing, 1992 Ed. Vanoirbeek & Coray Cambridge University
	Press 1992].

	(15 Dec 1994)

aleph 0

	<mathematics> The {cardinality} of the first {infinite}
	{ordinal}, {omega} (the number of {natural numbers}).

	Aleph 1 is the cardinality of the smallest {ordinal} whose
	cardinality is greater than aleph 0, and so on up to aleph
	omega and beyond.  These are all kinds of {infinity}.

	The {Axiom of Choice} (AC) implies that every set can be
	{well-ordered}, so every {infinite} {cardinality} is an aleph;
	but in the absence of AC there may be sets that can't be
	well-ordered (don't posses a {bijection} with any {ordinal})
	and therefore have cardinality which is not an aleph.

	These sets don't in some way sit between two alephs; they just
	float around in an annoying way, and can't be compared to the
	alephs at all.  No {ordinal} possesses a {surjection} onto
	such a set, but it doesn't surject onto any sufficiently large
	ordinal either.

	(29 Mar 1995)

Alex

	<language> 1. A {polymorphic} language being developed by
	Stephen Crawley <sxc@itd.dtso.oz.au> of Defence Science & Tech
	Org, Australia.  Alex has {abstract data type}s, {type
	inference} and {inheritance}.

	2. <language> An {ISWIM}-like language with {exception
	handling}.

	["An Exception Handling Construct for Functional Languages",
	M. Brez et al, in Proc ESOP88, LNCS 300, Springer 1988].

	3. <tool> A {scanner generator}.  {Alexis} is its input
	language.

	["Alex: A Simple and Efficient Scanner Generator", H.
	Mossenbock, SIGPLAN Notices 21(5), May 1986].

	(15 Dec 1994)

Alexis

	<language> Alex Input Specification.

	The input language for the {scanner generator} {Alex}.

	(23 Apr 1995)

ALF

	{Algebraic Logic Functional language}

Alfl

	<language> A lazy function language.  A {weakly typed}, {lazy}
	{functional language} developed by Paul Hudak
	<hudak-paul@cs.yale.edu> of Yale in 1983.  Alfl is implemented
	as a {Scheme} {preprocessor} for the {Orbit} compiler, by
	transforming laziness into {force}-and-{delay}.

	["Alfl Reference Manual and Programmer's Guide", P. Hudak,
	YALEU/DCS/RR322, Yale U, Oct 1984].

	See also {ParAlfl}.

	(24 Apr 1995)

algebra

	1. <mathematics> A loose term for an {algebraic structure}.

	2. <logic> A {vector space} that is also a {ring}, where the
	vector space and the ring share the same addition operation
	and are related in certain other ways (see below).

	For example, the set of 2x2 {matrices} with {real numbers} as
	entries, with the usual operations of addition and matrix
	multiplication, and the usual scalar multiplication.  Another
	example is the set of all {polynomials} with real
	coefficients, with the usual operations.

	In more detail, we have:

	(1) an underlying {set},

	(2) a {field} of {scalars},

	(3) an operation of scalar multiplication, whose input is a
	scalar and a member of the underlying set and whose output is
	a member of the underlying set, just as in a {vector space},

	(4) an operation of addition of members of the underlying set,
	whose input is an {ordered pair} of such members and whose
	output is one such member, just as in a vector space or a
	ring,

	(5) an operation of multiplication of members of the
	underlying set, whose input is an ordered pair of such members
	and whose output is one such member, just as in a ring.

	This whole thing constitutes an `algebra' iff:

	(1) it is a vector space if you discard item (5) and

	(2) it is a ring if you discard (2) and (3) and

	(3) for any scalar r and any two members A, B of the
	underlying set we have r(AB) = (rA)B = A(rB).  In other words
	it doesn't matter whether you multiply members of the algebra
	first and then multiply by the scalar, or multiply one of them
	by the scalar first and then multiply the two members of the
	algebra.  Note that the A comes before the B because the
	multiplication is in some cases not commutative, e.g. the
	matrix example.

	Another example (an example of a {Banach algebra}) is the set
	of all {bounded} {linear operators} on a {Hilbert space}, with
	the usual {norm}.  The multiplication is the operation of
	{composition} of operators, and the addition and scalar
	multiplication are just what you would expect.

	Two other examples are {tensor algebras} and {Clifford
	algebras}.

	[I. N. Herstein, "Topics_in_Algebra"].

	(28 Feb 1997)

ALGEBRAIC

	<language> An early system on {MIT}'s {Whirlwind}.

	[CACM 2(5):16 (May 1959)].

	(24 Jan 1995)

algebraic

	<theory> In {domain theory}, a {complete partial order} is
	algebraic if every element is the {least upper bound} of some
	{chain} of {compact} elements.  If the set of compact elements
	is {countable} it is called {omega-algebraic}.

	[Significance?]

	(25 Apr 1995)

algebraic data type

	<programming> (Or "sum of products type") In {functional
	programming}, new types can be defined, each of which has one
	or more {constructor}s.  Such a type is known as an algebraic
	data type.  E.g. in {Haskell} we can define a new type,
	"Tree":

		data Tree = Empty | Leaf Int | Node Tree Tree

	with constructors "Empty", "Leaf" and "Node".  The
	constructors can be used much like functions in that they can
	be (partially) applied to arguments of the appropriate type.
	For example, the Leaf constructor has the functional type Int
	-> Tree.

	A constructor application cannot be reduced (evaluated) like a
	function application though since it is already in {normal
	form}.  Functions which operate on algebraic data types can be
	defined using {pattern matching}:

		depth :: Tree -> Int
		depth Empty	 = 0
		depth (Leaf n)	 = 1
		depth (Node l r) = 1 + max (depth l) (depth r)

	The most common algebraic data type is the list which has
	constructors Nil and Cons, written in Haskell using the
	special syntax "[]" for Nil and infix ":" for Cons.

	Special cases of algebraic types are {product type}s (only one
	constructor) and {enumeration type}s (many constructors with
	no arguments).  Algebraic types are one kind of {constructed
	type} (i.e. a type formed by combining other types).

	An algebraic data type may also be an {abstract data type}
	(ADT) if it is exported from a {module} without its
	constructors.  Objects of such a type can only be manipulated
	using functions defined in the same {module} as the type
	itself.

	In {set theory} the equivalent of an algebraic data type is a
	{discriminated union} - a set whose elements consist of a tag
	(equivalent to a constructor) and an object of a type
	corresponding to the tag (equivalent to the constructor
	arguments).

	(23 Nov 1994)

Algebraic Interpretive Dialogue

	<language> (AID) A version of {Joss} II for the {PDP-10}.

	["AID (Algebraic Interpretive Dialogue)", DEC manual, 1968].

	(12 Apr 1995)

Algebraic Logic Functional language

	<language> (ALF) A language by Rudolf Opalla
	<opalla@julien.informatik.uni-dortmund.de> which combines
	{functional programming} and {logic programming} techniques.

	ALF is based on {Horn clause} logic with equality which
	consists of {predicate}s and Horn clauses for {logic
	programming}, and functions and equations for {functional
	programming}.  Any functional expression can be used in a
	{goal} literal and arbitrary predicates can occur in
	conditions of equations.  ALF uses {narrowing} and
	{rewriting}.

	ALF includes a compiler to {Warren Abstract Machine} code and
	{run-time support}.

	{(ftp://ftp.germany.eu.net/pub/programming/languages/LogicFunctional)}

	["The Implementation of the Functional-Logic Language ALF",
	M. Hanus and A. Schwab].

	(08 Oct 1992)

Algebraic Manipulation Package

	<mathematics, tool> (AMP) A {symbolic mathematics} program
	written in {Modula-2}, seen on {CompuServe}.

	(19 Oct 1994)

Algebraic Specification Language

	1. <language> (ASL)

	["Structured Algebraic Specifications: A Kernel Language",
	M. Wirsing, Theor Comput Sci 42, pp.123-249, Elsevier 1986].

	2. <language> (ASF) A language for equational specification of
	{abstract data types}.

	["Algebraic Specification", J.A. Bergstra et al, A-W 1989].

	(13 Dec 1995)

algebraic structure

	<mathematics> Any formal mathematical system consisting of a
	set of objects and operations on those objects.  Examples are
	{Boolean algebra}, numerical algebra, set algebra and matrix
	algebra.

	[Is this the most common name for this concept?]

	(25 Feb 1997)

Algebra of Communicating Processes

	<theory> (ACP)

	Compare {CCS}.

	["Algebra of Communicating Processes with Abstraction",
	J.A. Bergstra & J.W. Klop, Theor Comp Sci 37(1):77-121 1985].

	[Summary?]

	(08 Nov 1994)

ALGOL

	{ALGOL 60}

ALGOL 58

	<language> An early version of {ALGOL 60}, originally known as
	"{IAL}".

	["Preliminary report - International Algebraic Language", CACM
	1(12):8, 1958].

	[Details?  Relationship to ALGOL 60?]

	(05 Mar 1997)

ALGOL 60

	<language> ALGOrithmic Language 1960.

	A portable language for scientific computations.  ALGOL 60 was
	small and elegant.  It was {block-structured}, nested,
	{recursive} and {free form}.  It was also the first language
	to be described in {BNF}.

	There were three {lexical} representations: hardware,
	reference, and publication.  The only structured data types
	were {arrays}, but they were permitted to have lower bounds
	and could be dynamic.  It also had {conditional expressions};
	it introduced :=; if-then-else; very general "for" loops;
	switch declaration (an array of statement labels generalising
	{FORTRAN}'s {computed goto}).  Parameters were {call-by-name}
	and {call-by-value}.  It had {static} local "own" variables.
	It lacked user-defined types, character manipulation and
	{standard I/O}.

	See also {EULER}, {ALGOL 58}, {ALGOL 68}, {Foogol}.

	["Report on the Algorithmic Language ALGOL 60", Peter Naur
	ed., CACM 3(5):299-314, May 1960].

	(25 Jan 1995)

ALGOL 60 Modified

	<language>

	["A Supplement to the ALGOL 60 Revised Report", R.M. DeMorgan
	et al, Computer J 19(4):364].

	[SIGPLAN Notices 12(1) 1977].

	An erratum in [Computer J 21(3):282 (Aug 1978)] applies to
	both.

	(25 Jan 1995)

ALGOL 60 Revised

	<language> (Or "Revised ALGOL 60") A revision of {Algol 60}
	which still lacked {standard I/O}.

	["Revised Report on the Algorithmic Language ALGOL 60", Peter
	Naur ed, CACM 6(1):1-17 (Jan 1963)].

	[Sammet 1969, p.773].

	(25 Jan 1995)

ALGOL 68

	<language> An extensive revision of {ALGOL 60} by Adriaan van
	Wijngaarden et al.  ALGOL 68 was discussed from 1963 by
	Working Group 2.1 of {IFIP}.  Its definition was accepted in
	December 1968.

	ALGOL 68 was complex, and posed difficulties for both
	implementors and users.  It featured {structural equivalence};
	automatic type conversion ("{coercion}") including
	{dereferencing}; {flexible arrays}; generalised loops
	(for-from-by-to-while-do-od), if-then-elif-fi, an integer case
	statement with an 'out' clause; {skip} and {goto} statements;
	blocks; procedures; user-defined operators; {procedure
	parameters}; {concurrent} execution (cobegin/coend);
	{semaphores}; generators "heap" and "loc" for {dynamic
	allocation}.  It had no {abstract data types} or {separate
	compilation}.

	(01 May 1995)

ALGOL 68C

	<language> A variant of {ALGOL 68} developed by S. Bourne and
	Mike Guy of {Cambridge University} in 1975 and used as the
	implementation language for the {CHAOS} OS for the {CAP}
	{capability} computer.  ALGOL 68C was ported to the {IBM 360},
	{VAX}/{VMS}, and several other {platforms}.

	(02 May 1995)

ALGOL 68-R

	<language> A restriction of {ALGOL 68} permitting {one-pass
	compilation}, developed at the Royal Signals Radar
	Establishment, Malvern, Worcester, UK in April 1970.

	{Identifiers}, modes and operators must be declared before
	use.  There is no {automatic proceduring} and no
	{concurrency}.  It was implemented in {ALGOL 60} under {GEORGE
	3} on an {ICL 1907F}.

	["ALGOL 68-R, Its Implementation and Use", I.F. Currie et al,
	Proc IFIP Congress 1971, N-H 1971, pp. 360-363].

	(03 May 1995)

ALGOL 68 Revised

	<language> A significant simplification of {ALGOL 68}.

	["Revised Report on the Algorithmic Language ALGOL 68," A. Van
	Wijngaarden et al, Acta Informatica 5:1-236, 1975, also
	Springer 1976, and SIGPLAN Notices 12(5):1-70, May 1977].

	(03 May 1995)

ALGOL 68RS

	<language> An extension of {ALGOL 68} supporting {function
	closures} by the Royal Signals Radar Establishment, Malvern
	UK.  It has been ported to {Multics} and {VAX}/{VMS}.

	(04 May 1995)

ALGOL 68S

	<language> A subset of {ALGOL 68} allowing simpler
	compilation, intended mainly for numerical computation.  It
	was rewritten in {BLISS} for the {PDP-11}, and later in
	{Pascal}.  It is available as {shareware} from Charles Lindsey
	<chl@cs.man.ac.uk>.

	Version 2.3 runs on {Sun3} under {SunOS} 4.x and {Atari} under
	{GEMDOS} (or potentially other computers supported by the
	{Amsterdam Compiler Kit}).

	["A Sublanguage of ALGOL 68", P.G. Hibbard, SIGPLAN Notices
	12(5), May 1977].

	(04 May 1995)

ALGOL C

	<language> A variant of {ALGOL 60} developed by Clive Feather
	of {Cambridge University} ca. 1981.  ALGOL C added
	{structures} and {exception} handling.  It was designed for
	beginners and students.

	(24 Nov 1994)

ALGOL D

	<language>

	["A Proposal for Definitions in ALGOL", B.A. Galler et al,
	CACM 10:204-219, 1967].

ALGOL N

	<language> A successor to {ALGOL 60} proposed by Yoneda.

	(24 Nov 1994)

ALGOL W

	<language> A derivative of {ALGOL 60}.  It introduced {double
	precision}, {complex numbers}, bit strings and dynamic data
	structures.  It is parsed entirely by {operator precedence}
	and used the {call-by-value-result} calling convention.

	["A Contribution to the Development of Algol", N. Wirth, CACM
	9(6):413-431, June 1966].

	["ALGOL W Implementation", H. Bauer et al, TR CS98, Stanford
	U, 1968].

	(24 Nov 1994)

ALGOL X

	<language> A proposed successor to {ALGOL 60}, a "short-term
	solution to existing difficulties".  Three designs were
	proposed, by {Wirth}, Seegmuller and van Wijngaarden.

	[Sammet 1969, p. 194].

	(07 May 1995)

ALGOL Y

	<language> A proposed successor to {ALGOL 60}, a "radical
	reconstruction".  Originally a language that could manipulate
	its own programs at {run-time}, it became a collection of
	features that were not accepted for {ALGOL X}.

	(09 May 1995)

algorithim

	<spelling> Misspelling of "{algorithm}".

	(25 Feb 1997)

algorithm

	<algorithm, programming> A detailed sequence of actions to
	perform to accomplish some task.  Named after an Iranian
	mathematician, Al-Khawarizmi.

	Technically, an algorithm must reach a result after a {finite}
	number of steps, thus ruling out {brute force} search methods
	for certain problems, though some might claim that brute force
	search was also a valid (generic) algorithm.  The term is also
	used loosely for any sequence of actions (which may or may not
	terminate).

	(06 Apr 1996)

ALgorithm DEScription

	<language> (ALDES) ["The Algorithm Description Language
	ALDES", R.G.K. Loos, SIGSAM Bull 14(1):15-39 (Jan 1976)].

	(19 Apr 1995)

ALgorIthmic ASsembly language

	<language> (ALIAS) A machine oriented variant of {BLISS}.
	ALIAS was implemented in {BCPL} for the {PDP-9}.

	["ALIAS", H.E. Barreveld, Int Rep, Math Dept, Delft U Tech,
	Netherlands, 1973].

	(13 Mar 1997)

Algorithmic Language

	{Algol 60}

Algorithmic Model

	<programming> A method of estimating software cost using
	mathematical {algorithms} based on the parameters which are
	considered to be the major cost drivers.  These estimate of
	effort or cost are based primarily on the size of the software
	or {Delivered Source Instructions} (DSI)s, and other
	productivity factors known as {Cost Driver Attributes}.

	See also {Parametric Model}.

	(28 May 1996)

Algorithmic Processor Description Language

	<language> (APDL) An {ALGOL 60}-like language for describing
	computer design, for the {CDC G-21}.

	["The Description, Simulation, and Automatic Implementation of
	Digital Computer Processors", J.A. Darringer, Ph.D Thesis EE
	Dept, CMU May 1969].

	(26 Nov 1995)

Algorithmic Test Case Generation

	<programming> A computational method for identifying test
	cases from data, logical relationships or other software
	{requirements} information.

	(10 May 1996)

ALGY

	<language> An early language for {symbolic mathematics}.

	[Sammet 1969, p. 520].

	(12 Apr 1995)

ALIAS

	{ALgorIthmic ASsembly language}

alias

	1. <operating system> A name, usually short and easy to
	remember and type, that is translated into another name or
	string, usually long and difficult to remember or type.  Most
	{command interpreters} (e.g. {Unix}'s {csh}) allow the user to
	define aliases for commands, e.g. "alias l ls -al".  These are
	loaded into memory when the interpreter starts and are
	expanded without needing to refer to any file.

	2. <networking> One of several alternative {hostnames} with
	the same {Internet address}.  E.g. in the {Unix} {hosts}
	database (/etc/hosts or {NIS} map) the first field on a line
	is the {Internet address}, the next is the official hostname
	(the "{canonical} name" or "{CNAME}") and any others are
	aliases.

	Hostname aliases often indicate that the host with that alias
	provides a particular network service such as {archie},
	{finger}, {FTP}, or {World-Wide Web}.  The assignment of
	services to hosts can then be changed simply by moving an
	alias (e.g. www.doc.ic.ac.uk) from one {Internet address} to
	another, without the clients needing to be aware of the
	change.

	3. <filesystem> The name used by {Apple computer, Inc.} for
	{symbolic links} when they added them to the {System 7}
	{operating system} in 1991.

	(22 Oct 1997)

aliasing bug

	{stale pointer bug}

Alice

	<computer, parallel> A parallel {graph rewriting} computer
	developed by {Imperial College}, {University of Edinburgh} and
	{ICL}.

	(19 Jan 1995)

alife

	{artificial life}

A-Life

	{artificial life}

ALJABR

	<tool> An implementation of {MACSYMA} for the {Macintosh} by
	{Fort Pond Research}.

	E-mail: <aljabr@fpr.com>.

	(21 Feb 1995)

Allegro

	<operating system> The code name for the major {Mac OS}
	release due in mid-1998.

	{(http://devworld.apple.com/mkt/informed/appledirections/mar97/roadmap.html)}.

	(15 Oct 1997)

all-elbows

	<jargon> Said of a {TSR} (terminate-and-stay-resident)
	{mess-dos} program, such as the N pop-up calendar and
	calculator utilities that circulate on {BBS} systems:
	unsociable.  Used to describe a program that {rude}ly steals
	the resources that it needs without considering that other
	TSRs may also be resident.  One particularly common form of
	rudeness is lock-up due to programs fighting over the keyboard
	interrupt.

	(21 Feb 1995)

ALLIANCE

	<tool> A complete set of {CAD} tools for teaching Digital
	{CMOS} {VLSI} Design in Universities.  It includes a {VHDL}
	compiler and simulator, {logic synthesis} tools, and automatic
	place and route tools.  ALLIANCE is the result of a ten years
	effort at University Pierre et Marie Curie (PARIS VI, France).

	It runs on {Sun4}, not well supported: {MIPS}/{Ultrix},
	{386}/{SystemV}.

	Current version: 1.1 (as of 16 Feb 1993).

	{(ftp://ftp-masi.ibp.fr/pub/cao-vlsi/alliance)}.

	Mailing list: <alliance-request@masi.ibp.fr>.

	E-mail: <cao-vlsi@masi.ibp.fr>.

	(16 Feb 1993)

ALLOY

	<language> A language by Thanasis Mitsolides
	<mitsolid@cs.nyu.edu> which combines {functional programming},
	{object-oriented programming} and {logic programming} ideas,
	and is suitable for {massively parallel} systems.

	Evaluating modes support serial or parallel execution, {eager
	evaluation} or {lazy evaluation}, {nondeterminism} or multiple
	solutions etc.  ALLOY is simple as it only requires 29
	primitives in all (half of which are for {object oriented
	programming} support).

	It runs on {SPARC}.

	{(ftp://cs.nyu.edu/pub/local/alloy/)}.

	["The Design and Implementation of ALLOY, a Parallel Higher
	Level Programming Language", Thanasis Mitsolides
	<mitsolid@cs2.nyu.edu>, PhD Thesis NYU 1990].

	(11 Jun 1991)

ALM

	{Assembly Language for Multics}

Aloha

	<networking> (From the Hawaiian greeting) A system of
	{contention resolution} devised at The {University of Hawaii}.
	{Packets} are {broadcast} when ready, the sender listens to
	see if they collide and if so re-transmits after a random
	time.  {Slotted Aloha} constrains packets to start at the
	beginning of a time slot.  Basic Aloha is appropriate to long
	propagation time nets (e.g. satellite).  For shorter
	propagation times, {carrier sense} {protocols} are possible.

	(10 Dec 1995)

Aloha Net

	<networking> (From the Hawaiian greeting) One of the first
	functioning {networks} in the USA, conceived and implimented
	at the {University of Hawaii} campus at Manoa.  Its purpose
	was to link the University {mainframe} computer to client
	computers located on outer islands at University campuses.
	Put in place in the early 1970s, it was dubed the Aloha Net.
	{Key punch} cards were fed through a reader, and sent over the
	commercial phone lines.

	(10 Dec 1995)

Alonzo Church

	<person> A twentieth century mathematician and logician, and
	one of the founders of computer science.  Church invented the
	{lambda-calculus} and posited a version of the {Church-Turing
	thesis}.

	(25 Mar 1995)

ALP

	<language> A {list processing} extension of {Mercury
	Autocode}.

	["ALP, An Autocode List-Processing Language", D.C. Cooper et
	al, Computer J 5:28-31, 1962].

	(24 Jan 1995)

ALPAK

	<library> A subroutine package used by {ALTRAN}.

	["The ALPAK System for Nonnumerical Algebra on a Digital
	Computer", W.S. Brown, Bell Sys Tech J 42:2081, 1963].

	[Sammet 1969, p. 502].

	(10 May 1995)

ALPHA

	<language> (Or "Input") An extension of {ALGOL 60} for the
	{M-20} computer developed by A.P. Ershov at Novosibirsk in
	1961.  ALPHA includes {matrix} operations, {slices}, and
	complex arithmetic.

	["The Alpha Automatic Programming System", A.P. Ershov ed.,
	A-P 1971].

	(10 May 1995)

Alpha

	1. <tool> A {compiler generator} written by Andreas Koschinsky
	<koschins@cs.tu-berlin.de> and described in his thesis at the
	{Technische Universitaet Berlin}.  Alpha takes an {attribute
	grammar} and uses {Bison} and {Flex} to generate a {parser}, a
	{scanner} and an {ASE evaluator} (Jazayeri and Walter).

	The documentation is in german.

	(16 Feb 1993)

	2. <processor> {DEC Alpha}.

	(10 May 1995)

Alpha AXP 21164

	<processor> A 1 {GIPS} version of the {DEC Alpha} processor.
	The first commercially available sequential 1 GIPS processor.
	Announced 7 Sep 1994.

	{(http://www.digital.com/info/semiconductor/dsc-21164.html)}

	(10 May 1995)

alpha/beta pruning

	<games, algorithm> An optimisation of the {minimax}
	{algorithm} for choosing the next move in a two-player game.
	The position after each move is assigned a value.  The larger
	this value, the better the position is for me.  Thus, I will
	choose moves with maximum value and you will choose moves with
	minimum value (for me).

	If it is my move and I have already found one move M with
	value alpha then I am only interested in other moves with
	value greater than alpha.  I now consider another of my
	possible moves, M', to which you could reply with a move with
	value beta.  I know that you would only make a different reply
	if it had a value less than beta.  If beta is already less
	than alpha then M' is definitely worth less than M so I can
	reject it without considering any other replies you might
	make.

	The same reasoning applies when considering my replies to your
	reply.  An alpha cutoff is when your reply gives a lower value
	than the current maximum (alpha) and a beta cutoff is when my
	reply to your reply gives a higher value than the current
	minimum value of your reply (beta).

	In short, if you've found one possible move, you need not
	consider another move which your opponent can force to be
	worse than the first one.

	(05 May 1997)

alpha conversion

	<theory> In {lambda-calculus} and {reduction}, the renaming of
	a {formal parameter} in a {lambda abstraction}.  This does not
	change the meaning of the abstraction.  For example:

		\ x . x+1  <-->  \ y . y+1

	If the {actual argument} to a lambda abstraction contains
	instances of the abstraction's formal parameter then it is
	necessary to rename the parameter before applying the
	abstraction to avoid {name capture}.

	(10 May 1995)

Alpha Geek

	<job> The head {geek} or geek's geek.  When no one else knows
	the answer, or several techno-types give conflicting advise,
	or the error message says "consult your administrator" and you
	*are* the administrator, you ask the Alpha Geek.

	(25 Jun 1997)

alphanumeric

	<character> A decimal digit or a letter (upper or lower case).
	Typically, "letters" means only English letters ({ASCII} A-Z
	plus a-z) but it may also include non-English letters in the
	Roman alphabet, e.g., e-{acute}, c-{cedilla}, the {thorn
	letter}, and so on.  Perversely, it may also include the
	{underscore} character in some contexts.

	(11 Sep 1997)

alpha particle

	{bit rot}

Alphard

	<language> (Named after the brightest star in Hydra) A
	{Pascal}-like language developed by Wulf, Shaw and London of
	{CMU} in 1974.  Alphard supports {data abstraction} using the
	'form', which combines a specification and an implementation.

	["Abstraction and Verification in Alphard: Defining and
	Specifying Iteration and Generators", Mary Shaw, CACM
	20(8):553-563, Aug 1977].

	(10 May 1995)

alpha testing

	<programming> Testing of software at the developer's site by
	the customer.  The stage before {beta testing}.

	(10 May 1996)

ALPS

	<language> 1. An early interpreted {algebraic language} for
	the {Bendix G15} by Richard V. Andree of the {University of
	Oklahoma}.  ALPS is said to have preceded and influenced
	development of {BASIC}.

	Dale Peters <dpeters@theshop.net> reports that in the summer
	of 1966 he attended the second year of an {NSF}-sponsored
	summer institute in mathematics and computing at the
	University of Oklahoma.  Richard Andree taught the computing
	class which mostly used the language GO-GO which was later
	renamed ALPS.  Andree, Harold Wiebe, Ralph Howenstein, and
	another grad student were changing the language frequently
	during the class, which was occasionally a little
	disorienting.  Dale believes it was used in the previous
	summer as well and that it was about this time that Kemeny
	(one of the designers of BASIC) saw it during a visit.

	2. A parallel {logic language}.

	["Synchronization and Scheduling in ALPS Objects",
	P. Vishnubhotia, Proc 8th Intl Conf Distrib Com Sys, IEEE
	1988, pp. 256-264].

	(24 Nov 1994)

alt

	<character> /awlt/ 1. The alt {modifier key} on many
	{keyboards}, including the {IBM PC}.  On some keyboards and
	{operating systems}, (but not the IBM PC) the alt key sets bit
	7 of the character generated.

	See {bucky bits}.

	2. The "{clover}" or "Command" key on a {Macintosh}; use of
	this term usually reveals that the speaker hacked PCs before
	coming to the Mac (see also {feature key}).  Some Mac hackers,
	confusingly, reserve "alt" for the Option key (and it is so
	labelled on some Mac II keyboards).

	3. (Obsolete {PDP-10}; often "ALT") An alternate name for the
	{ASCII} ESC character (Escape, ASCII 27), after the keycap
	labelling on some older {terminals}; also "altmode"
	(/awlt'mohd/).  This character was almost never pronounced
	"escape" on an {ITS} system, in {TECO} or under {TOPS-10},
	always alt, as in "Type alt alt to end a TECO command" or
	"alt-U onto the system" (for "log onto the [ITS] system").
	This usage probably arose because alt is easier to say.

	4. <messaging> One of the {Usenet} {newsgroup} {hierarchies}.
	It was founded by {John Gilmore} and {Brian Reid}.  The alt
	hierarchy is special in that anyone can create new groups here
	without going though the normal voting proceduers, hence the
	regular appearence of new groups with names such as
	"alt.swedish.chef.bork.bork.bork".

	(12 Apr 1997)

ALTAC

	<language> An extended {FORTRAN II} for the {Philco 2000},
	built on {TAC}.

	[Sammet 1969, p.146].

	(16 Mar 1995)

Altair 8800

	An {Intel 8080}-based machine made by {MITS}.  The Altair was
	the first popular {microcomputer} kit.

	It appeared on the cover of the January 1974 Popular
	Electronics magazine with an article (probably) by Leslie
	Solomon.  Leslie Solomon was an editor at Popular Electronics
	who had a knack for spotting kits that would interest people
	and make them buy the magazine.  The Altair 8800 was one such.
	The MITS guys took the prototype Altair to New York to show
	Solomon, but couldn't get it to work after the flight.
	Nonetheless, he liked it, and it appeared on the cover as "The
	first minicomputer in a kit."

	Solomon's blessing was important enough that some MITS
	competitors named their product the "SOL" to gain his favour.
	Some wags suggested {SOL} was actually an abbreviation for the
	condition in which kit purchasers would find themselves.

	{Bill Gates} and Paul Allen saw the article on the Altair 8800
	in Popular Electronics.  They realized that the Altair, which
	was programmed via its binary front panel needed a {high level
	language}.  Legend has it that they called MITS with the claim
	that they had a {BASIC} {interpreter} for the Altair.  When
	MITS asked them to demo it in Albuquerque, they wrote one on
	the plane.  On arrival, they entered the machine code via the
	front panel and demonstrated and sold their "product."  Thus
	was born "Altair BASIC."

	The original Altair BASIC ran in less than 4K of RAM because a
	"loaded" Altair had 4K memory.  Since there was no {operating
	system} on the Altair, Altair BASIC included what we now think
	of as {BIOS}.  It was distributed on {paper tape} that could
	be read on a {Teletype}.  Later versions supported the 8K
	Altair and the 16K {diskette}-based Altair (demonstrating
	that, even in the 1970s, {Microsoft} was committed to
	{software bloat}).  Altair BASIC was ported to the {Motorola
	6800} for the Altair 680 machine, and to other 8080-based
	microcomputers produced by MITS' competitors.

	[Relation to {Altair 9000}?]

	(30 Jun 1997)

Altair 9000

	<computer> An early {microcomputer}.  It was developed in the
	USA in the 1970s by {Forrest Mimms} and his colleagues.

	[Forrest M. Mimms, article in "Computers and Electronics",
	(formerly "Popular Electronics") mid 1980s].

	[Did it really exist?  Where?  Features?  Relation to {Altair
	8800}?]

	(14 Mar 1995)

Alta Vista

	<World-Wide Web> A {World-Wide Web} site provided by {Digital}
	which features a very fast Web and {Usenet} {search engine}.

	As of April 1996 its word index is 33GB in size.  AltaVista is
	currently (June 1996) the largest Web index, with 30 million
	pages from 225,000 servers, and three million articles from
	14,000 {Usenet} news groups.  It is accessed over 12 million
	times per weekday.

	{Home (http://www.altavista.digital.com/)}.

	(10 Jun 1996)

alt bit

	/awlt bit/ alternate bit.  See {meta bit}.

altmode

	{alt}

ALTRAN

	<language> A {FORTRAN} extension for {rational algebra}
	developed by W.S. Brown of {Bell Labs} ca. 1968.

	["The ALTRAN System for Rational Function Manipulation - A
	Survey", A.D. Hall, CACM 14(8):517-521 (Aug 1971)].

	(01 Jun 1995)

alt.sources

	<messaging, programming> A {Usenet} {newsgroup} for posting
	program {source code}.

	{Archive (ftp://wuarchive.wustl.edu/usenet/alt.sources/)}.

	(18 Oct 1995)

ALU

	1. <processor> {Arithmetic and Logic Unit}.

	2. <body> {Association of Lisp Users}.

Aluminum Book

	<publication>

	["Common LISP: The Language, 2nd Edition", {Guy L. Steele
	Jr.}, Digital Press 1990, ISBN 1-55558-041-6].

	Due to a technical screwup some printings of the second
	edition are actually what the author calls "yucky green".

	{On-line version
	(http://www.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html)}.

	See also {book titles}.

	(25 Jun 1997)

Alvey

	<project, body> A funding programme for collaborative research
	in the UK.

	(01 Jun 1995)

AM

	{Amplitude Modulation}

A Manufacturing Language

	<language> (AML) A {high-level language} developed by {IBM} in
	the 1980s for industrial {robots}.

	["AML: A Manufacturing Language", R.H. Taylor et al, Inst J
	Robot Res 1(3):19-43].

	(25 Sep 1995)

Amber

	<language> 1. A {functional programming} language which adds
	{CSP}-like {concurrency}, {multiple inheritance} and
	{persistence} to {ML} and generalises its type system.  It is
	similar to {Galileo}.  Programs must be written in two type
	faces, roman and italics!  It has both {static types} and
	{dynamic types}.

	There is an implementation for {Macintosh}.

	["Amber", L. Cardelli, TR Bell Labs, 1984].

	2.  An {object-oriented} distributed language based on a
	subset of {C++}, developed at {Washington University} in the
	late 1980s.

	(08 Dec 1994)

AMBIT

	<language> Algebraic Manipulation by Identity Translation
	(also claimed: "Acronym May Be Ignored Totally").

	An early {pattern-matching} language, developed by
	C. Christensen of Massachusetts Computer Assocs in 1964, aimed
	at algebraic manipulation.

	[Sammet 1969, pp. 454-457].

	(08 Dec 1994)

AMBIT/G

	<language> {AMBIT} for graphs.

	["An Example of the Manipulation of Directed Graphs in the
	AMBIT/G Programming Language", C. Christensen, in Interactive
	Systems for Experimental Applied Mathematics, M. Klerer et al,
	eds, Academic Press 1968, pp. 423-435].

	(08 Dec 1994)

AMBIT/L

	<language> {AMBIT} for lists.

	A variant of AMBIT supporting list handling and {pattern
	matching} rules based on two-dimensional diagrams.

	["An Introduction to AMBIT/L, A Diagrammatic Language for List
	Processing", Carlos Christensen, Proc 2nd ACM Symp Symb and
	Alg Manip (Mar 1971)].

	(08 Dec 1994)

AMBIT/S

	<language> {AMBIT} for strings.

AMBUSH

	<language> A language for {linear programming} problems in a
	materials processing and transportation network.

	["AMBUSH - An Advanced Model Builder for Linear Programming",
	T.R. White et al, National Petroleum Refiners Assoc Comp Conf
	(Nov 1971)].

	(19 Jun 1995)

AMD

	1. <company> {Advanced Micro Devices}.

	2. <jargon> According to Don Olivier
	<don@hsph.harvard.edu>, his system manager came in to work one
	morningn to find his IBM system down with a message on the
	console that said "AMD failure".  After he and the service rep
	had puzzled over documentation for an hour or so they called
	headquarters and eventually learned that it the failure was in
	the cooling system: an AMD is an "air movement device", IBM
	for "fan".

	(16 Jan 1995)

AMD 29000

	<processor> A {RISC} {microprocessor} descended from the
	{Berkley RISC} design.  Like the {SPARC} design that was
	introduced shortly afterwards, the 29000 has a large {register
	set} split into local and global sets.  But though it was
	introduced before the SPARC, it has a more elegant method of
	register management.

	The 29000 has 64 global registers, in comparison to the
	SPARC's eight.  In addition, the 29000 allows variable sized
	windows allocated from the 128 register stack {cache}.  The
	current window or stack frame is indicated by a stack pointer,
	a pointer to the caller's frame is stored in the current
	frame, like in an ordinary stack (directly supporting stack
	languages like {C}, a {CISC}-like philosophy).  Spills and
	fills occur only at the ends of the cache, and registers are
	saved/loaded from the memory stack.  This allows variable
	window sizes, from 1 to 128 registers.  This flexibility, plus
	the large set of global registers, makes {register allocation}
	easier than in SPARC.

	There is no special {condition code register} - any general
	register is used instead, allowing several condition codes to
	be retained, though this sometimes makes code more complex.
	An {instruction prefetch} buffer (using {burst mode}) ensures
	a steady instruction stream.  Branches to another stream can
	cause a delay, so the first four new instructions are cached -
	next time a cached branch (up to sixteen) is taken, the cache
	supplies instructions during the initial memory access delay.

	Registers aren't saved during interrupts, allowing the
	interrupt routine to determine whether the overhead is
	worthwhile.  In addition, a form of register access control is
	provided.  All registers can be protected, in blocks of 4,
	from access.  These features make the 29000 useful for
	embedded applications, which is where most of these processors
	are used, allowing it the claim to be "the most popular RISC
	processor".  The 29000 also includes an {MMU} and support for
	the {AMD 29027} {FPU}.

	(19 Jun 1995)

AMD 29027

	<processor> The {FPU} for the {AMD 29000}.

	(16 Jan 1995)

Amdahl

	1. <company> {Amdahl Corporation}.

	2. <person> {Gene Amdahl}.

Amdahl Corporation

	<company> A US computer manufacturer.  Amdahl is a major
	supplier of large {mainframes}, {UNIX} and {Open Systems}
	software and servers, data storage subsystems, data
	communications products, applications development software,
	and a variety of educational and consulting services.

	Amdahl products are sold in more than 30 countries for use in
	both open systems and {IBM} plug-compatible mainframe
	computing environments.

	Quarterly sales $397M, profits $13M (Aug 1994).

	{Home (http://www.amdahl.com/)}

	(23 May 1995)

Amdahl's Law

	<parallel> (Named after {Gene Amdahl}) If F is the fraction of
	a calucation that is sequential, and (1-F) is the fraction
	that can be parallelised, then the maximum {speedup} that can
	be achieved by using P processors is 1/(F+(1-F)/P).

	(23 May 1995)

AMD Am2901

	<processor> A 4-bit {bit-slice} processor from {Advanced Micro
	Devices}.  It featured sixteen 4-bit {registers} and a 4-bit
	{ALU} and operation signals to allow carry/borrow or shift
	operations and such to operate across any number of other
	2901s.  An {address sequencer} (such as the {2910}) could
	provide control signals with the use of custom {microcode} in
	{ROM}.

	(16 Nov 1994)

AMD Am2903

	<processor> A {bit-slice} prcessor from {Advanced Micro
	Devices} which featured hardware multiply.

	(16 Nov 1994)

AMD Am2910

	<processor> An {address sequencer} from {Advanced Micro
	Devices}.

	(16 Nov 1994)

American National Standards Institute

	<body, standard> (ANSI) The United States government body
	responsible for approving US {standards} in many areas,
	including computers and communications.  ANSI is a member of
	{ISO}.  ANSI sells ANSI and ISO (international) standards.

	{Home (http://www.ansi.org/)}.

	Address: New York, NY 10036, USA.  Sales: 1430 Broadway, NY NY
	10018.  Telephone: +1 (212) 642 4900.

	(03 Nov 1996)

American Society of Mechanical Engineers

	<body> (ASME) A group involved in {CAD} standardisation.

	(21 Apr 1995)

American Standard Code for Information Interchange

	<character, standard> (ASCII) The predominant {character set}
	encoding of present-day computers.  The modern version uses
	seven {bits} for each character, whereas most earlier codes
	(including an early version of ASCII) used fewer.  The change
	to seven bits allowed the inclusion of lowercase letters - a
	major {win} - but it did not provide for accented letters or
	any other letterforms not used in English (such as the German
	sharp-S or the ae-ligature which is a letter in, for example,
	Norwegian).  It could be worse though.  It could be much
	worse.  See {EBCDIC} to understand how.

	Computers are much pickier about spelling than humans; thus,
	hackers need to be very precise when talking about characters,
	and have developed a considerable amount of verbal shorthand
	for them.  Every character has one or more names - some
	formal, some concise, some silly.

	Individual characters are listed in this dictionary with
	alternative names from revision 2.3 of the {Usenet} ASCII
	pronunciation guide in rough order of popularity, including
	their official {ITU-T} names and the particularly silly names
	introduced by {INTERCAL}.

	See {V} {ampersand}, {asterisk}, {back quote}, {backslash},
	{caret}, {colon}, {comma}, {commercial at}, {control-C},
	{dollar}, {dot}, {double quote}, {equals}, {exclamation mark},
	{greater than}, {hash}, {left bracket}, {left parenthesis},
	{less than}, {minus}, {parentheses}, {percent}, {plus},
	{question mark}, {right brace}, {right brace}, {right
	bracket}, {right parenthesis}, {semicolon}, {single quote},
	{slash}, {space}, {tilde}, {underscore}, {vertical bar},
	{zero}.

	Some other common usages cause odd overlaps.  The "#", "$",
	">", and "&" characters, for example, are all pronounced "hex"
	in different communities because various assemblers use them
	as a prefix tag for {hexadecimal} constants (in particular,
	"#" in many assembler-programming cultures, "$" in the {6502}
	world, ">" at {Texas Instruments}, and "&" on the {BBC Micro},
	{Acorn Archimedes}, {Sinclair}, and some {Zilog Z80}
	machines).  See also {splat}.

	The inability of ASCII text to correctly represent any of the
	world's other major languages makes the designers' choice of
	seven bits look more and more like a serious {misfeature} as
	the use of international networks continues to increase (see
	{software rot}, {ISO 8859}).  Hardware and software from the
	US still tends to embody the assumption that ASCII is the
	universal character set and that characters have seven bits;
	this is a major irritant to people who want to use a character
	set suited to their own languages.  Perversely, though,
	efforts to solve this problem by proliferating sets of
	{national characters} produce an evolutionary pressure to use
	a *smaller* subset common to all those in use.  Software is
	described as "{eight bit clean}" if it correctly handles
	characters sets which use all eight bits.

	{ASCII character table}

	See also {Yu-Shiang Whole Fish}.

	(06 Mar 1995)

America On-Line, Inc.

	<company, communications> (AOL) A US on-line service provider
	based in Vienna, Virginia, USA.  AOL claims to be the largest
	and fastest growing provider of on-line services in the world,
	with the most active subscriber base.  AOL offers its three
	million subscribers {electronic mail}, interactive newspapers
	and magazines, conferencing, software libraries, computing
	support, and on-line classes.

	In October 1994 AOL made {Internet} {FTP} available to its
	members and in May 1995, full Internet access including
	{World-Wide Web}.

	AOL's main competitors are {Prodigy} and {Compuserve}.

	{Home (http://www.aol.com/)}.

	(26 Aug 1997)

Amiga

	<computer> A range of home computers first released by
	{Commodore Business Machines} in 1985 (though they did not
	design the original - see below).  Amigas are popular for
	{games}, {video processing} and {multimedia}.  One notable
	feature is a hardware {blitter} for speeding up graphics
	operations on whole areas of the screen.

	Most components within the machine were known by nicknames.
	The {coprocessor} that we commonly call the "Copper" is in
	fact the "{Video} Timing Coprocessor" and is split between two
	chips.  The instruction fetch and execute units are in the
	"Agnus" chip, and the pixel timing circuits are in the
	"Denise" chip.  Thus, there is no such things as the "Copper
	Chip".

	"Agnus" and "Denise" were responsible for effects timed to the
	{real-time} position of the video scan, such as midscreen
	{palette} changes, {sprite multiplying}, and {resoloution}
	changes.  Different versions (in order) were: "Agnus" (could
	only address 512K of {video RAM}), "Fat Agnus" (in a {PLCC}
	package, could access 1MB of video RAM), "Super Agnus"
	(slightly upgraded "Fat Agnus").  "Agnus" and "Fat Agnus" came
	in {PAL} and {NTSC} versions, "Super Agnus" came in one
	version, jumper selectable for PAL or NTSC.  "Agnus" was
	replaced by "Alice" in the A4000 and A1200, which allowed for
	more {DMA} channels and higher bus {bandwidth}.

	"Denise" outputs binary video data (3*4 bits) to the "Vidiot".
	The "Vidiot" is a hybrid that combines and amplifies the
	12-bit video data from "Denise" into {RGB} to the {monitor}.

	Other chips were "Amber" (a 'flicker fixer', used in the A3000
	and Commodore display enhancer for the A2000), "Gary" ({I/O},
	addressing, {glue logic}), "Buster" (the bus controller, which
	replaced "Gary" in the A2000), "Buster II" (for handling the
	Zorro II/III cards in the A3000, which meant that "Gary" was
	back again), "Ramsey" (The {RAM} controller), "DMAC" (The DMA
	controller chip for the WD33C93 {SCSI controller} used in the
	A3000 and on the A2091/A2092 SCSI controller card for the
	A2000; and to control the {CD-ROM} in the {CDTV}), and "Paula"
	({Peripheral}, Audio, {UART}, {interrupt} Lines, and {bus
	Arbiter}).

	There were several Amiga chipsets: the "Old Chipset" (OCS),
	the "Enhanced Chipset" (ECS), and AGA.  OCS included "Paula",
	"Gary", "Denise", and "Agnus".

	ECS had the same "Paula", "Gary", "Agnus" (could address 2MB
	of Chip RAM), "Super Denise" (upgraded to support "Agnus" so
	that a few new {screen modes} were available).  With the
	introduction of the {Amiga A600} "Gary" was replaced with
	"Gayle" (though the chipset was still called ECS).  "Gayle"
	provided a number of improvments but the main one was support
	for the A600's {PCMCIA} port.

	The AGA chipset had "Agnus" with twice the speed and a 24-bit
	pallette, maximum displayable: 8 bits (256 colours), although
	the famous "{HAM}" (Hold And Modify) trick allows pictures of
	256,000 colours to be displayed.  AGA's "Paula" and "Gayle"
	were unchanged but AGA "Denise" supported AGA "Agnus"'s new
	screen modes.  Unfortunately, even AGA "Paula" did not support
	High Density {floppy disk drives}.  In order to use a high
	density disk drive Amiga HD floppy drives spin at half the
	rotational speed thus halving the data rate to "Paula".

	The Amiga was originally called the Lorraine, and was
	developed by a company named "Amiga" or "Amiga, Inc.", funded
	by some doctors to produce a killer game machine.  After the
	US game machine market collapsed, the Amiga company sold some
	{joysticks} but no Lorraines.  They eventually floundered and
	looked for a buyer.

	Commodore at that time bought the (mostly complete) Amiga
	machine, infused some money, and pushed it through the final
	stages of development in a hurry.  Commodore released it
	sometime in 1985.

	Commodore Bussines Machines went bankrupt on 29 April 1994,
	the German company {Escom AG} bought the rights to the Amiga
	on 21 April 1995 and the Commodore Amiga became the Escom
	Amiga.  In April 1996 Escom were reported to be making the
	{Amiga} range again but they too fell on hard times and
	{Gateway 2000} bought the Amiga brand on 15 May 1997.

	A company known as Phase5 has been working on their own
	{PowerPC} based Amiga {clone} with a reverse-engineered {OS}
	and planned to release it at the end of 1997.

	{Home (http://www.amiga.de/)}.

	{Amiga Web Directory (http://www.cucug.org/amiga.html)}.

	{amiCrawler (http://www.amicrawler.com/)}.

	Newsgroups: {news:comp.binaries.amiga},
	{news:comp.sources.amiga}, {news:comp.sys.amiga},
	{news:comp.sys.amiga.advocacy},
	{news:comp.sys.amiga.announce},
	{news:comp.sys.amiga.applications},
	{news:comp.sys.amiga.audio}, {news:comp.sys.amiga.datacomm},
	{news:comp.sys.amiga.emulations}, {news:comp.sys.amiga.games},
	{news:comp.sys.amiga.graphics},
	{news:comp.sys.amiga.hardware},
	{news:comp.sys.amiga.introduction},
	{news:comp.sys.amiga.marketplace}, {news:comp.sys.amiga.misc},
	{news:comp.sys.amiga.multimedia},
	{news:comp.sys.amiga.programmer},
	{news:comp.sys.amiga.reviews}, {news:comp.sys.amiga.tech},
	{news:comp.sys.amiga.telecomm}, {news:comp.Unix.amiga}.

	See {aminet}, {Amoeba}, {bomb}, {exec}, {gronk}, {guru
	meditation}, {Intuition}, {sidecar}, {slap on the side},
	{Vulcan nerve pinch}.

	[Did the Amiga company ever sell any computers?]

	(06 Jan 1998)

Amiga E

	<tool> An {Amiga} {E} {compiler} by Wouter van Oortmerssen
	<Wouter@mars.let.uva.nl>.

	Amiga E is very fast - 20000 lines/minute on a 7 Mhz Amiga.
	It allows inline {assembly code} and has an integrated
	{linker}.  It has a large set of integrated functions, a
	{module} concept with 2.04 includes as modules a flexible type
	system, quoted expressions, immediate and typed lists, low
	level {polymorphism} and {exception} handling.  It is written
	in {assembly language} and E.

	Version 2.1b

	{(ftp://ftp.wustl.edu/pub/aminet/dev/e/AmigaE21b.lha)}.
	{(ftp://amiga.physik.unizh.ch/amiga/dev/lang/AmigaE21b.lha)}.

	Mailing list: <amigae@bookhouse.cts.com>.

	{Usenet} newsgroup: {news:comp.sys.amiga.programmer}.

	(26 Aug 1997)

Aminet

	<networking> (Amiga network) A collection of {FTP} {mirrors}
	that contain several {gigabytes} of {freely distributable
	software} for the {Amiga} range of computers.

	{Home, ftp.wustl.edu (ftp://ftp.wustl.edu)}.

	(31 Aug 1997)

AML

	{A Manufacturing Language}

AML/E

	<language> (AML Entry) A simple version of {AML}, implemented
	on the {IBM PC}, with a graphic display of the robot position.

	(03 Oct 1995)

Amoeba

	1. <operating system> A distributed {operating system}
	developed by {Andrew S. Tanenbaum} and others of {Vrije
	Universiteit, Amsterdam}.  Amoeba is only available under
	licence from the VUA, but is free of charge and includes all
	{source}, {binaries} and documentation.

	{Home (http://www.am.cs.vu.nl/)}.

	[Features?]

	2. <computer, abuse> A derogatory term for {Commodore}'s
	{Amiga} {personal computer}.

	(07 May 1997)

AMP

	{Algebraic Manipulation Package}

amper

	{ampersand}

ampersand

	<character> "&" {ASCII} character 38.

	Common names: {ITU-T}: ampersand; amper; and.  Rare: address
	(from {C}); reference (from C++); andpersand; bitand;
	background (from {sh}); pretzel; amp.  {INTERCAL} called this
	"ampersand"; what could be sillier?

	[Why "ampersand"?]

	(06 Mar 1995)

AMPL

	<language> Along with {mpl}, the intrinsic parallel languages
	for {MasPar}'s computers.  AMPL and mpl are parallel variants
	of {C}.  Ampl is actually now a {gcc} port.

	["AMPL: Design, Implementation and Evaluation of a
	Multiprocessing Language", R. Dannenberg, CMU 1981].

	["Loglan Implementation of the AMPL Message Passing System",
	J. Milewski SIGPLAN Notices 19(9):21-29 (Sept 1984)].

	[Are these the same language?]

	(01 Nov 1995)

AMPLE

	<language> A {FORTH}-like language for programming the
	500/5000 series of add-on music synthesisers for the {BBC
	Microcomputer}.  AMPLE was produced by Hybrid Technologies,
	Cambridge, England in the mid 1980s.  Many AMPLE programs were
	published in Acorn User magazine.

	(01 Nov 1995)

Amplitude Modulation

	<communications> (AM) A method of encoding data by varying the
	{amplitude} of a constant frequency {carrier}.

	(18 Jun 1996)

amp off

	<jargon> (Purdue) To run in {background}.  From the {Unix}
	{shell} "&" (ampersand) operator.

	(14 Nov 1995)

AMPPL-II

	{Associative Memory Parallel Processing Language}

AMS

	{Andrew Message System}

AMTRAN

	{Automatic Mathematical TRANslation}

Amulet

	<processor> An implementation or the {Advanced RISC Machine}
	{microprocessor} architecture using the {micropipeline} design
	style.  In April 1994 the Amulet group in the Computer Science
	department of {Manchester University} took delivery of the
	AMULET1 {microprocessor}.  This was their first large scale
	asynchronous circuit and the world's first implementation of a
	commercial microprocessor architecture (ARM) in {asynchronous
	logic}.

	Work was begun at the end of 1990 and the design despatched
	for fabrication in February 1993.  The primary intent was to
	demonstrate that an asynchronous microprocessor can consume
	less power than a synchronous design.

	The design incorporates a number of concurrent units which
	cooperate to give instruction level compatibility with the
	existing synchronous part.  These include an Address unit,
	which autonomously generates instruction fetch requests and
	interleaves ({nondeterministic}ally) data requests from the
	Execution unit; a {Register} file which supplies operands,
	queues write destinations and handles data dependencies; an
	Execution unit which includes a multiplier, a shifter and an
	{ALU} with data-dependent delay; a Data interface which
	performs byte extraction and alignment and includes an
	{instruction prefetch} buffer, and a control path which
	performs {instruction decode}.  These units only synchronise
	to exchange data.

	The design demonstrates that all the usual problems of
	processor design can be solved in this asynchronous framework:
	backwards {instruction set} compatibility, {interrupts} and
	exact {exceptions} for {memory faults} are all covered.  It
	also demonstrates some unusual behaviour, for instance
	{nondeterministic} prefetch depth beyond a branch instruction
	(though the instructions which actually get executed are, of
	course, deterministic).  There are some unusual problems for
	{compiler} {optimisation}, as the metric which must be used to
	compare alternative code sequences is continuous rather than
	discrete, and the {nondeterminism} in external behaviour must
	also be taken into account.

	The chip was designed using a mixture of custom {datapath} and
	compiled control logic elements, as was the synchronous ARM.
	The fabrication technology is the same as that used for one
	version of the synchronous part, reducing the number of
	variables when comparing the two parts.

	Two silicon implementations have been received and preliminary
	measurements have been taken from these.  The first is a 0.7um
	process and has achieved about 28 kDhrystones running the
	standard {benchmark} program.  The other is a 1 um
	implementation and achieves about 20 kDhrystones.  For the
	faster of the parts this is equivalent to a synchronous {ARM6}
	clocked at around 20MHz; in the case of AMULET1 it is likely
	that this speed is limited by the memory system cycle time
	(just over 50ns) rather than the processor chip itself.

	A fair comparison of devices at the same geometries gives the
	AMULET1 performance as about 70% of that of an {ARM6} running
	at 20MHz.  Its power consumption is very similar to that of
	the ARM6; the AMULET1 therefore delivers about 80 MIPS/W
	(compared with around 120 from a 20MHz ARM6).  Multiplication
	is several times faster on the AMULET1 owing to the inclusion
	of a specialised asynchronous multiplier.  This performance is
	reasonable considering that the AMULET1 is a first generation
	part, whereas the synchronous ARM has undergone several design
	iterations.  AMULET2 (currently under development) is expected
	to be three times faster than AMULET1 - 120 k{dhrystones} -
	and use less power.

	The {macrocell} size (without {pad ring}) is 5.5 mm by 4.5 mm
	on a 1 micron {CMOS} process, which is about twice the area of
	the synchronous part.  Some of the increase can be attributed
	to the more sophisticated organisation of the new part: it has
	a deeper {pipeline} than the clocked version and it supports
	multiple outstanding memory requests; there is also
	specialised circuitry to increase the multiplication speed.
	Although there is undoubtedly some overhead attributable to
	the asynchronous control logic, this is estimated to be closer
	to 20% than to the 100% suggested by the direct comparison.

	AMULET1 is code compatible with {ARM6} and is so is capable of
	running existing {binaries} without modification.  The
	implementation also includes features such as interrupts and
	memory aborts.

	The work was part of a broad {ESPRIT} funded investigation
	into low-power technologies within the European {Open
	Microprocessor systems Initiative} (OMI) programme, where
	there is interest in low-power techniques both for portable
	equipment and (in the longer term) to alleviate the problems
	of the increasingly high dissipation of high-performance
	chips.  This initial investigation into the role {asynchronous
	logic} might play has now demonstrated that asynchronous
	techniques can be applied to problems of the scale of a
	complete {microprocessor}.

	{Home (http://www.cs.man.ac.uk/amulet)}

	(08 Dec 1994)

analog

	<spelling> American spelling of {analogue}.

	(14 Nov 1995)

Analog Hardware Design Language

	<language> (AHDL) A language under development by the US Air
	Force.

	(09 Apr 1995)

analogue

	<electronics> Used to describe a continuously variable signal,
	as opposed to a discrete or "digital" one, or a circuit
	designed to handle such signals.

	Analogue circuits are much harder to design and analyse than
	digital ones because the designer must take into account
	effects such as the gain, linearity and power handling of
	components, the resistance, capacitance and inductance of PCB
	tracks, wires and connectors, interference between signals,
	power supply stability and more.  A digital circuit design,
	especially for high switching speeds, must also take these
	factors into account if it is to work reliably, but they are
	usually less critical because most digital components will
	function correctly within a range of parameters whereas such
	variations will corrupt the outputs of an analogue circuit.

	See also {analogue computer}.

	(14 Nov 1995)

analogue computer

	<computer, hardware> A machine or electronic circuit designed
	to work on numerical data represented by some physical
	quantity (e.g. rotation or displacement) or electrical
	quantity (e.g. voltage or charge) which varies continuously,
	in contrast to {digital} signals which are either 0 or 1.

	For example, the turning of a wheel or changes in voltage can
	be used as input.  Analogue computers are said to operate in
	{real time} and are used for research in design where many
	different shapes and speeds can be tried out quickly.  A
	computer model of a car suspension allows the designer to see
	the effects of changing size, stiffness and damping.

	(01 May 1995)

Analogy Model

	<programming> A method of estimating the cost of a proposed
	software project by extrapolating from the costs and schedules
	of similar completed projects.

	(28 May 1996)

anchor

	<hypertext> (Or "span", "region", "button", "extent") An area
	within the content of a {hypertext} {node} (e.g. a {web page})
	which is the source or destination of a {link}.  A source
	anchor may be a word, phrase, image, or possibly the whole
	node.  A destination anchor may be a whole node or some
	position within the node.

	Typically, clicking with the {mouse} on a source anchor causes
	the link to be followed and the anchor at the opposite end of
	the link to be displayed.  Anchors are highlighted in some way
	(either always, or when the mouse is over them), or they may
	be marked by a special symbol.

	In {HTML} anchors are created with the <A..>..</A> construct.
	The opening A tag of a source anchor has an HREF (hypertext
	reference) attribute giving the destination in the form of a
	{URL} - usually a whole node or "page".  E.g.

		<A HREF="http://wombat.doc.ic.ac.uk/">
		Free On-line Dictionary of Computing</A>

	Destination anchors are only used in HTML to name a position
	within a page using a NAME attribute.  E.g.

		<A NAME="chapter3">

	The name or "fragment identifier" is appended to the URL of
	the page with a "#":

		http://www.fairystory.com/goldilocks.html#chapter3

	(Though it is generally better to break pages into smaller
	units than to have large pages with named sections).

	(15 Nov 1997)

ANCP

	<language> An early system on the {Datatron 200} series.

	[Listed in CACM 2(5):16, May 1959].

	(15 Nov 1995)

AND

	<logic> (Or "conjunction") The {Boolean} function which is
	true only if all its arguments are true.  The {truth table}
	for the two argument AND function is:

	 A | B | A AND B
	 --+---+---------
	 F | F |    F
	 F | T |    F
	 T | F |    F
	 T | T |    T

	AND is often written as an inverted "V" in texts on logic.  In
	the {C} programming language it is represented by the &&
	(logical and) {operator}.

	(15 Nov 1997)

ANDF

	{Architecture Neutral Distribution Format}

Andorra-I

	<language> A {parallel} {logic programming} language with the
	{OR-parallelism} of {Aurora} and the {AND-parallelism} of
	{Parlog}.

	["Andorra-I: A Parallel Prolog System that Transparently
	Exploits both And- and Or-Parallelism", V.S Costa et al,
	SIGPLAN Notices 26(7):83-93 (July 1991)].

	[Imperial College?  Who?]

	(24 Nov 1995)

Andorra Kernel Language

	<language> (AKL) The successor to {KAP} by S. Janson
	<sverker@sics.se>.

	A prototype implementation is available from the author.

	["Programming Paradigms of the Andorra Kernel Language",
	S. Janson et al in Logic Programming: Proc 1991 Intl Symp, MIT
	Press 1991].

	(24 Nov 1994)

Andorra-Prolog

	<language>

	["Andorra-Prolog: An Integration of Prolog and Committed
	Choice Languages", S. Haridi et al, Intl Conf Fifth Gen Comp
	Sys 1988, ICOT 1988].

	(24 Nov 1995)

Andrei Markov

	<person> 1856-1922.  The Russian mathematician, after who
	{Markov chains} were named.

	{Biography
	(http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Markov.html)}.

	[Other contributions?]

	(06 Oct 1995)

Andrew File System

	<operating system, storage> (AFS) The distributed {file
	system} of the {Andrew Project}, adopted by the {OSF} as part
	of their {Distributed Computing Environment}.

	{Frequently Asked Questions
	(http://www.transarc.com/Product/AFS/FAQ/faq.html)}.

	(24 Nov 1994)

Andrew Fluegelman

	<person> The author of the {MS-DOS} communications program
	{PC-TALK III}.  He once owned the trademark "{freeware}" but
	it wasn't enforced after his mysterious disappearance and
	presumed death in 1984.

	(25 Aug 1997)

Andrew Message System

	<messaging> A {multimedia} interface to {electronic mail} and
	{bulletin boards}, developed as part of the {Andrew Project}.

	(24 Nov 1994)

Andrew Project

	<project> A distributed system project for support of
	educational and research computing at {Carnegie Mellon
	University}, named after Andrew Carnegie, an American
	philanthropist who provided money to establish CMU.

	See also {Andrew File System}, {Andrew Message System},
	{Andrew Toolkit}, {class}.

	{Home FTP (ftp://emsworth.andrew.cmu.edu)}

	{Usenet} newsgroup: {news:comp.soft-sys.andrew}.

	[More detail?]

	(17 Nov 1997)

Andrew S. Tanenbaum

	{Andrew Tanenbaum}

Andrew Tanenbaum

	<person> Professor Andrew S. Tanenbaum (1941-) of the {Vrije
	Universiteit, Amsterdam} in Holland.  Tanenbaum is famous for
	his work and books on computer architecture, {operating
	systems} and {networks}.

	He wrote the textbook "Computer Networks", Second Edition,
	Prentice-Hall, 1981, which describes the {International
	Standards Organisation}, {Open Systems Interconnection}
	(ISO-OSI) network model.

	E-mail: Andrew Tanenbaum <ast@cs.vu.nl>.

	See {Amoeba}, {Mac-1}, {Mic-1}, {Mic-2}, {Micro Assembly
	Language}, {MINIX}, {MicroProgramming Language}, {standard}.

	(23 Apr 1996)

Andrew Toolkit

	<tool> A {portable} {user interface} toolkit developed as part
	of the {Andrew project}, running on the {X Window System} and
	distributed with {X11R5}.

	(24 Nov 1995)

An Evolutionary System for On-line Programming

	<database> (AESOP) An early interactive {query system} on the
	{IBM 1800} using a {light pen}.

	["AESOP: A Final Report: A Prototype Interactive Information
	Control System", J.K. Summers et al, in Information System
	Science and Technology, D. Walker ed, 1967].

	[Sammet 1969, p. 703].

	(04 Apr 1995)

Angel

	<operating system> A single {address space}, {micro-kernel}
	{operating system} for {multiprocessor} computers, developed
	at {Imperial College} and {City University}, London, UK.

	[Ariel Burton]

	(24 Nov 1995)

angle bracket

	<character> Either of the characters "<" (less-than, {ASCII}
	60) and ">" (greater-than, ASCII 62).  Typographers in the
	{Real World} use angle brackets which are either taller and
	slimmer (the {ISO} "{Bra}" and "{Ket}" characters), or
	significantly smaller (single or double guillemets) than the
	less-than and greater-than signs.

	See {broket}.

	(24 Nov 1995)

angry fruit salad

	<abuse> A bad visual-interface design that uses too many
	colours.  (This term derives, of course, from the bizarre
	day-glo colours found in canned fruit salad).  Too often one
	sees similar effects from interface designers using colour
	window systems such as {X}; there is a tendency to create
	displays that are flashy and attention-getting but
	uncomfortable for long-term use.

	(24 Nov 1995)

ANI

	{Automatic Number Identification}

animation

	<graphics> The creation of artificial moving images.

	{Usenet} newsgroup: {news:comp.graphics.animation}.  {FAQ
	(ftp://src.doc.ic.ac.uk/usenet/news-info/comp.graphics.animation)}.

	(24 Nov 1995)

Animus

	["Constraint-Based Animation: The Implementation of Temporal
	Constraints in the Animus System", R. Duisberg, PhD Thesis U
	Washington 1986].

	(24 Nov 1995)

ANL

	{Argonne National Laboratory}

Anna

	{ANNotated Ada}

annealing

	{simulated annealing}

annotate

	{annotation}

ANNotated Ada

	<language, specification> (Anna) A {specification} language
	developed at {Stanford University} ca. 1980 for formally
	specifying {Ada} programs.  It has a Specification Analyzer
	and a Consistency Checking System.  It adds semantic
	{assertions} in the form of Ada {comments}.

	{(ftp://anna.stanford.edu/pub/anna/)}

	["ANNA - A Language for Annotating Ada Programs", David
	Luckham et al, Springer 1987].

	(01 Nov 1994)

annotation

	1. <programming, compiler> Extra information associated with a
	particular point in a document or program.  Annotations may be
	added either by a {compiler} or by the programmer.  They are
	not usually essential to the correct function of the program
	but give hints to improve performance.

	2. <hypertext> A new commentary {node} linked to an existing
	node.  If readers, as well as authors, can annotate nodes,
	then they can immediately provide feedback if the information
	is misleading, out of date or plain wrong.

	(26 Nov 1995)

annoybot

	<messaging> /*-noy-bot/ An irksome {IRC} {robot}.

	(23 Dec 1997)

Annual Change Traffic

	<software> (ACT) The fraction of the software product's
	{source code} which changes during a year, either through
	addition or modification.  The ACT can be used to determine
	the product size in order to estimate software maintenance
	effort.

	(29 May 1996)

anonymous FTP

	<networking> An interactive service provided by many
	{Internet} {hosts} allowing any user to transfer documents,
	files, programs, and other archived data using {File Transfer
	Protocol}.  The user logs in using the special {username}
	"ftp" or "anonymous" and his {e-mail address} as {password}.
	He then has access to a special directory hierarchy containing
	the publically accessible files, typically in a subdirectory
	called "pub".  This is usually a separate area from files used
	by local users.

	A reference like

		ftp: euagate.eua.ericsson.se /pub/eua/erlang/info

	means that files are available by anonymous FTP from the host
	called euagate.eua.ericsson.se in the directory (or file)
	/pub/eua/erlang/info.  Sometimes the {hostname} will be
	followed by an {Internet address} in parentheses.  The
	directory will usually be given as a path relative to the
	anonymous FTP login directory.  A reference to a file
	available by FTP may also be in the form of a {URL} starting
	"ftp:".

	See also {Archie}, {archive site}, {EFS}, {FTP by mail},
	{World-Wide Web}.

	(26 Nov 1995)

ANR

	{Automatic Network Routing}

ANSA

	{Advanced Network Systems Architecture}

ANSI

	{American National Standards Institute}

ANSI C

	<language, standard> (American National Standards Institute C)
	A revision of {C}, adding {function prototypes}, {structure
	passing}, {structure assignment} and standardised library
	functions.  {ANSI} X3.159-1989.

	{(ftp://princeton.edu/pub/lcc/)}.

	{cgram} is a {grammar} for ANSI C, written in {Scheme}.
	{unproto} is a program for removing function prototypes to
	translate ANSI C to standard C.

	(26 Nov 1995)

ANSI Minimal BASIC

	<language, standard> ANS X3.60-1978.

	[Details?]

	(29 Nov 1995)

ANSI/SPARC Architecture

	<architecture> A layered model of {database} architecture
	comprising a {physical schema}, a {conceptual schema} and
	user {views}.

	[Reference?]

	(26 Nov 1995)

ANSI Z39.50

	<networking, standard> Information Retrieval Service
	Definition and Protocol Specification for Library
	Applications, officially known as ANSI/NISO Z39.50-1992, and
	ANSI/NISO Z39.50-1995.  This {standard}, used by {WAIS},
	specifies an {OSI} {application layer} service to allow an
	application on one computer to query a {database} on another.

	Z39.50 is used in libraries and for searching some databases
	on the {Internet}.  The US {Library of Congress
	(http://lcweb.loc.gov/z3950/agency/)} is the official
	maintanence agency for Z39.50.

	{Index Data}, a Danish company, have released a lot of Z39.50
	code.  Their {web site} explains the relevant {ISO}
	{standards} and how they are amicably converging in Z39.50
	version 4.0.

	{Overview (http://www.nlc-bnc.ca/ifla/VI/5/op/udtop3.htm)}.

	{Z39.50 resources
	(http://lamp.cs.utas.edu.au/net.html#Z3950)}.

	(22 Jul 1996)??

anti-aliasing

	<graphics> A technique used on a {grey-scale} or colour
	{bitmap display} to make diagonal edges appear smoother by
	setting {pixels} near the edge to intermediate colours
	according to where the edge crosses them.

	The most common example is black characters on a white
	background.  Without anti-aliasing, diagonal edges appear
	jagged, like staircases, which may be noticeable on a low
	{resolution} display.  If the display can show intermediate
	greys then anti-aliasing can be applied.  A pixel will be
	black if it is completely within the black area, or white if
	it is completely outside the black area, or an intermediate
	shade of grey according to the proportions of it which overlap
	the black and white areas.  The technique works similarly with
	other foreground and background colours.

	[Why (anti-) "aliasing"?]

	(30 Aug 1997)

antichain

	<mathematics> A subset S of a {partially ordered set} P is an
	antichain if,

	for all x, y in S,  x <= y  =>  x = y

	I.e. no two different elements are related.

	("<=" is written in {LaTeX} as {\subseteq}).

	(03 Feb 1995)

antisymmetric

	<mathematics> A {relation} R is antisymmetric if,

	for all x and y,  x R y and y R x  =>  x == y.

	I.e. no two different elements are mutually related.

	{Partial order}s and {total order}s are antisymmetric.  If R
	is also {symmetric} (x R y => y R x) then x R y => x == y.
	I.e.  different elements are not related.

	(18 Apr 1995)

anti-virus software

	<tool> Programs to detect and remove computer {virus}es.

	(14 Mar 1995)

ANTLR

	ANother Tool for Language Recognition.

	The {parser generator} in the {Purdue Compiler-Construction
	Tool Set}.

	(26 Oct 1995)

ANU

	{Australian National University}

ANU ML

	<language> An implementation of {SML} by the {Australian
	National University} for {Motorola 68020}, {Vax} and
	{Pyramid}.

	(26 Nov 1995)

anytime algorithm

	<algorithm> An {algorithm} that returns the best answer
	possible even if it is not allowed to run to completion, and
	may improve on the answer if it is allowed to run longer.  For
	example, a program displaying an image downloaded over a slow
	link could display it top to bottom, but an anytime program
	would show a low-resolution (fuzzy or grainy) picture
	immediately, then gradually sharpen it as more details are
	downloaded.  Another example is an {iterative deepening}
	search.

	(26 Nov 1995)

AOCE

	{Apple Open Collaboration Environment}

AOL

	{America On-Line}

AOS

	1. /aws/ (East Coast), /ay-os/ (West Coast) A
	{PDP-10} instruction that took any memory location and added 1
	to it.  AOS meant "Add One and do not Skip".  Why, you may
	ask, does the "S" stand for "do not Skip" rather than for
	"Skip"?  Ah, here was a beloved piece of PDP-10 folklore.
	There were eight such instructions: AOSE added 1 and then
	skipped the next instruction if the result was Equal to zero;
	AOSG added 1 and then skipped if the result was Greater than
	0; AOSN added 1 and then skipped if the result was Not 0; AOSA
	added 1 and then skipped Always; and so on.  Just plain AOS
	didn't say when to skip, so it never skipped.

	For similar reasons, AOJ meant "Add One and do not Jump".
	Even more bizarre, SKIP meant "do not SKIP"!  If you wanted to
	skip the next instruction, you had to say "SKIPA".  Likewise,
	JUMP meant "do not JUMP"; the unconditional form was JUMPA.
	However, hackers never did this.  By some quirk of the 10's
	design, the {JRST} (Jump and ReSTore flag with no flag
	specified) was actually faster and so was invariably used.
	Such were the perverse mysteries of assembler programming.

	2. /A-O-S/ or /A-os/ A {Multics}-derived {operating system}
	supported at one time by {Data General}.

	A spoof of the standard AOS system administrator's manual
	("How to Load and Generate your AOS System") was created,
	issued a part number, and circulated as photocopy folklore; it
	was called "How to Goad and Levitate your CHAOS System".

	3. Algebraic Operating System, in reference to those
	calculators which use {infix} instead of {postfix} (reverse
	Polish) notation.

	(26 Nov 1995)

APA

	{Application Portability Architecture}

Apache

	<World-Wide Web, project> A {public domain} {HTTP} server for
	{Unix}.  Apache was developed in early 1995, based on code and
	ideas found in the most popular HTTP server of the time, {NCSA
	httpd} 1.3.  It has since evolved to rival (and probably
	surpass) almost any other {Unix} based HTTP server in terms of
	functionality, and speed.  In August 1996 Apache was the most
	popular HTTP server on the {Internet}, running on 36% of all
	web servers.

	It features highly configurable error messages, {DBM}-based
	{authentication} {databases}, and {content negotiation}.  It
	also offers improved performance, and fixes many bugs in the
	NCSA 1.3 code.

	Version: 1.1.1 (Aug 1996).

	{Home (http://www.apache.org)}.

	{FAQ (http://www.teaser.fr/apache/docs/FAQ.html)}.

	(25 Aug 1996)

APAL

	Array Processor Assembly Language.

	The {assembly language} for the {DAP} parallel computer.

	(28 Nov 1994)

APAREL

	A PArse REquest Language.  A {PL/I} extension to
	provide {BNF} {parsing} routines, for {IBM 360}.

	["APAREL: A Parse Request Language", R.W. Balzer et al, CACM
	12(11) (Nov 1969)].

	(26 Nov 1995)

APC

	{Association for Progressive Communications}

APDL

	{Algorithmic Processor Description Language}

apE

	<graphics> A graphics package from the Ohio Supercomputer
	Centre.

	(29 Nov 1995)

API

	{Application Program Interface}

APIC

	{Advanced Programmable Interrupt Controller}

APL

	{A Programming Language}

APL2

	<language> An {APL} extension with nested {array}s from {IBM}.

	["APL2 Programming: Language Reference", IBM Aug 1984.  Order
	No. SH20-9227-0].

	(29 Nov 1995)

APLGOL

	<language> An {APL} variant with {ALGOL}-like control
	structure, from {Hewlett-Packard}(?).

	(29 Nov 1995)

APLWEB

	<text, tool> A {Web} to {APL} and {Web} to {TeX} translator by
	Dr. Christoph von Basum <CvB@erasmus.hrz.uni-bielefeld.de>.

	{(ftp://watserv1.uwaterloo.ca/languages/apl/aplweb/)}

	(27 Dec 1992)

APM

	{Advanced Power Management}

Apollo Computer

	<company> A company making {workstations}, now a division of
	{Hewlett-Packard}.

	(29 Nov 1995)

app

	{application program}

APPC

	{Advanced Program-to-Program Communications}

AppKit

	<tool> A set of objects used by the {application builder} for
	the {NEXTSTEP} environment.

	(13 Mar 1995)

APPLE

	<language> A revision of {APL} for the {Illiac IV}.

	(28 Apr 1995)

Apple Computer, Inc.

	<company> Manufacturers of the {Macintosh} range of {personal
	computer}s as well as the earlier {Apple I}, {Apple II} and
	{Lisa}.  Founded on 1 April 1976 by {Steve Jobs} and {Steve
	Wozniak}.

	Apples were among the first {microcomputer}s.  They originally
	used the {6502} processor and are still being made (August
	1994), now using the {65816}.  The {Apple II} line, which
	includes the {Apple I}, is the longest existing line of
	microcomputers.

	Quarterly sales $2150M, profits $138M (Aug 1994).

	{Home (http://www.apple.com/)}.

	(16 Jun 1996)

Apple II

	<computer> An 8-bit {personal computer} with a {6502}
	processor, from {Apple Computer}.  It was invented by {Steve
	Wozniak} and was very popular from about 1980 until the first
	several years of {MS-DOS} {IBM PC}s.

	(12 Jan 1995)

Apple Macintosh

	{Macintosh}

Apple Newton

	<computer> A {Personal Digital Assistant} produced by {Apple
	Computer}.  The Newton provides a clever, {user-friendly}
	interface and relies solely on pen-based input.  Eagerly
	anticipated, the Newton uses handwriting recognition software
	to "learn" the users handwriting and provide reliable
	{character recognition}.

	Various third-party software applications are now available
	and add-on {peripherals} like wireless {modems} for {Internet}
	access are being sold by {Apple Computer, Inc.} and its
	licensees.

	{Newton Inc.}'s {NewtonOS} currenlty competes with {Microsoft
	Corporation}'s {Windows CE}, and will be compatible with
	{DEC}'s new {StrongARM} SA-1100, an embedded 200MHz
	{microprocessor}, due in 1998.

	{Home (http://www.newton.apple.com/)}.

	{Handwriting recognition example
	(http://www-personal.engin.umich.edu/~jxm/tablespoons.html)}.

	(12 Sep 1997)

Apple Open Collaboration Environment

	<tool> (AOCE) Software for {electronic mail} and directory
	services.

	(08 Mar 1995)

AppleScript

	<language> An {object-oriented} {shell} language for the
	{Macintosh}, approximately a superset of {HyperTalk}.

	(10 Dec 1995)

Applesoft BASIC

	<language> A version of {BASIC} for {Apple} computers.

	(10 Dec 1995)

applet

	<World-Wide Web> A program written in {Java} which can be
	distributed as an attachment in a {World-Wide Web} document
	and executed either by Sun's {HotJava} {browser} or {Netscape
	Navigator} version 2.0 or later.

	Navigator severely restricts what an applet can do in terms of
	file system and network access in order to prevent accidental
	or deliberate security violations.  Full Java applications
	which run outside of the browser do not have these
	restrictions.

	Compare {Plug-in}.

	(07 Jan 1997)

Appletalk

	<networking, protocol> A proprietary {local area network}
	{protocol} developed by {Apple Computer, Inc.} for
	communication between Apple products (e.g. {Macintosh}) and
	other computers.  This protocol is independent of the {network
	layer} on which it runs.  Current implementations exist for
	{Localtalk}, a 235 kilobyte per second local area network and
	{Ethertalk}, a 10 megabyte per second local area network.

	(08 Mar 1995)

AppleTalk Data Stream Protocol

	<protocol> (ADSP) A {protocol} which provides a simple
	transport method for data accross a network.

	(18 Jun 1996)

application

	1. {application program}.

	2. {function application}.

Application Binary Interface

	<programming> (ABI) The interface by which an {application
	program} gains access to {operating system} and other
	services.  It should be possible to run the same compiled
	{binary} applications on any system with the right ABI.

	Examples are {88open}'s {Binary Compatibility Standard}, the
	{PowerOpen Environment} and {Windows sockets}.

	(08 Nov 1994)

Application Configuration Access Protocol

	<protocol> (ACAP) A {protocol} which enhances {IMAP} by
	allowing the user to set up address books, user options, and
	other data for universal access.  Currently (Feb 1997) no
	Internet proprietary products have implemented ACAP because
	the {Internet Engineering Task Force} has not yet approved the
	final specification.  This was expected early in 1997.

	["Your E-Mail Is Obsolete", Byte, Feb 1997].

	(03 May 1997)

Application Control Architecture

	<programming> (ACA) {DEC}'s implementation of {ORB}.

	(08 Nov 1994)

Application environment specification

	<programming> (AES) A set of specifications from {OSF} for
	programming and {user interface}s, aimed at providing a
	consistent application environment on different hardware.  It
	includes "O/S" for the {operating system} (user commands and
	program interfaces), "U/E" for the User Environment ({Motif}),
	and "N/S" for Network services.

	(07 Dec 1994)

Application Executive

	<language> (AE) An {embeddable language}, written as a {C}
	{interpreter} by Brian Bliss <bliss@sp64.csrd.uiuc.edu>.  AE
	is compiled with an {application} and thus exists in the same
	process and address space.  It includes a {dbx} {symbol table}
	scanner to access compiled variables and routines, or you can
	enter them manually by providing a type/name declaration and
	the address.  When the {interpreter} is invoked, {source code}
	fragments are read from the input stream (or a string),
	parsed, and evaluated immediately.  The user can call compiled
	functions in addition to a few {built-in} intrinsics, declare
	new data types and data objects, etc.  Different input streams
	can be evaluated in parallel on {Alliant} computers.

	AE has been ported to {SunOS} (cc or {gcc}), {Alliant FX} and
	{Cray YMP} (soon).

	{(ftp://sp2.csrd.uiuc.edu/pub/at.tar.Z)}
	{(ftp://sp2.csrd.uiuc.edu/pub/bliss/ae.tex.Z)}.

	(21 Apr 1992)

Application Integration Architecture

	(AIA) {DEC}'s "open standards" specifications.

application layer

	<networking> The top layer of the {OSI} seven layer model.
	This layer handles issues like {network transparency},
	resource allocation and problem partitioning.  The application
	layer is concerned with the user's view of the network
	(e.g. formatting {electronic mail} messages).  The
	{presentation layer} provides the application layer with a
	familiar local representation of data independent of the
	format used on the network.

	(28 Nov 1994)

Application Portability Architecture

	<programming> (APA) {DEC}'s plan for portable applications
	software.

	(28 Nov 1994)

application program

	(Or "application", "app") A complete, self-contained program
	that performs a specific function directly for the user.  This
	is in contrast to system software such as the {operating
	system} {kernel}, {server} processes and libraries which
	exists to support application programs.

	Editors, {spreadsheet}s, and text formatters are common
	examples of applications.  Network applications include
	clients such as those for {FTP}, {electronic mail} and
	{telnet}.  The term is used fairly loosely, for instance, some
	might say that a client and server together form a distributed
	application, others might argue that editors and compilers
	were not applications but tools for building applications.

	One distinction between an application program and the
	operating system is that applications always run in "user
	mode" (or "non-privileged mode"), while operating systems and
	related utilities may run in "supervisor mode" (or "privileged
	mode").

	The term may also be used to distinguish programs which
	communicate via a {graphical user interface} from those which
	are executed from the {command line}.

	(28 Nov 1994)

Application Program Interface

	<programming> (API, or "application programming interface")
	The interface (calling conventions) by which an {application
	program} accesses {operating system} and other services.  An
	API is defined at {source code} level and provides a level of
	{abstraction} between the application and the {kernel} (or
	other privileged utilities) to ensure the {portability} of the
	code.

	An API can also provide an interface between a {high level
	language} and lower level utilities and services which were
	written without consideration for the {calling convention}s
	supported by compiled languages.  In this case, the API's main
	task may be the translation of parameter lists from one format
	to another and the interpretation of {call-by-value} and
	{call-by-reference} arguments in one or both directions.

	(15 Feb 1995)

Application Programming Interface

	{Application Program Interface}

Application Protocol Data Unit

	<networking> (APDU) A {packet} of data exchanged between two
	{application} programs across a {network}.  This is the
	highest level view of communication in the {OSI} {seven layer
	model} and a single packet exchanged at this level may
	actually be transmitted as several packets at a lower layer as
	well as having extra information (headers) added for {routing}
	etc.

	(19 Dec 1995)

Application Service Element

	<networking> (ASE) Software in the {presentation layer} of the
	{OSI} seven layer model which provides an abstracted interface
	layer to service {application protocol data units} (APDU).
	Because {applications} and {network}s vary, ASEs are split
	into common services and specific services.

	Examples of services provided by the {common application
	service element} (CASE) include remote operations (ROSE) and
	{database} {concurrency control and recovery} (CCR).

	The {specific application service element} (SASE) provides
	more specialised services.

	(19 Dec 1995)

application software

	{application programs}

Application-Specific Integrated Circuit

	<hardware> (ASIC) An {integrated circuit} designed to perform
	a particular function by defining the interconnection of a set
	of basic circuit building blocks drawn from a library provided
	by the circuit manufacturer.

	(15 Feb 1995)

Applications Programming Interface

	{Application Programming Interface}

Application Visualisation System

	<tool, graphics> (AVS) A portable, modular, {Unix}-based
	graphics package supported by a consortium of vendors
	including {Convex}, {DEC}, {IBM}, {HP}, {SET Technologies},
	{Stardent} and {WaveTracer}.

	(28 Nov 1994)

applicative language

	<language> A {functional language}.  Sometimes used loosely
	for any {declarative language} though {logic programming}
	languages are declarative but not applicative.

	(24 Dec 1995)

Applicative Language for Digital Signal Processing

	<language> (ALDiSP) A {functional language} with special
	features for {real-time} {I/O} and numerical processing,
	developed at the {Technical University of Berlin} in 1989.

	["An Applicative Real-Time Language for DSP - Programming
	Supporting Asynchronous Data-Flow Concepts", M. Freericks
	<mfx@cs.tu-berlin.de> in Microprocessing and Microprogramming
	32, N-H 1991].

	(19 Apr 1995)

applicative order reduction

	<programming> An {evaluation strategy} under which an
	expression is evaluated by repeatedly evaluating its leftmost
	innermost {redex}.  This means that a function's arguments are
	evaluated before the function is applied.  This method will
	not terminate if a function is given a non-terminating
	expression as an argument even if the function is not {strict}
	in that argument.  Also known as {call-by-value} since the
	values of arguments are passed rather than their names.  This
	is the evaluation strategy used by {ML}, {Scheme}, {Hope} and
	most {procedural language}s such as {C} and {Pascal}.

	See also {normal order reduction}, {parallel reduction}.

	(25 Jan 1995)

APPLOG

	<language> A language which unifies {logic programming} and
	{functional programming}.

	["The APPLOG Language", S. Cohen in Logic Programming, deGroot
	et al eds, P-H 1986, pp.39-276].

	(25 Jan 1995)

APPN

	{Advanced Peer-to-Peer Networking}

approximation algorithm

	<algorithm> An {algorithm} for an {optimisation} problem that
	generates {feasible} but not necessarily {optimal} solutions.

	Unlike "{heuristic}", the term "approximation algorithm" often
	implies some proven worst or average case bound on
	performance.  The terms are often used interchangeably
	however.

	(28 Oct 1997)

April Fool's Joke

	<humour, event> (AFJ) Elaborate April Fool's hoaxes are a
	long-established tradition on {Usenet} and {Internet}; see
	{kremvax} for an example.  In fact, April Fool's Day is the
	*only* seasonal holiday marked by customary observances on the
	hacker networks.

	(25 Jan 1995)

A Programming Language

	<language> (APL) A language designed originally by Ken Iverson
	at {Harvard University} in 1957-1960 as a notation for the
	concise expression of mathematical {algorithm}s.  It went
	unnamed (or just called {Iverson's Language}) and
	unimplemented for many years.  Finally a subset, APL\360, was
	implemented in 1964.

	APL is an {interactive} {array-oriented} language with many
	innovative features.  It was originally written using a
	non-standard {character set} but now can use {ISO8485}.  It is
	{dynamically typed} with {dynamic scope}.  APL introduced
	several functional forms but is not {purely functional}.

	{Dijkstra} got the size of it when he said that APL was a
	language designed to perfection - in the wrong direction.
	{IBM} once adopted APL - can one be ruder?

	Versions: APL\360, APL SV, VS APL, Sharp APL, Sharp APL/PC,
	APL*PLUS, APL*PLUS/PC, APL*PLUS/PC II, MCM APL, Honeyapple,
	and DEC APL.

	See also {Kamin's interpreters}.

	{APLWEB} translates {WEB} to {APL}.

	["A Programming Language", Kenneth E. Iverson, Wiley, 1962].

	(29 Nov 1995)

APSE

	{Ada Programming Support Environment}

APT

	1. <language> {Automatically Programmed Tools}.

	2. <company> {Audio Processing Technology}.

	(15 Jan 1996)

APX III

	<language> An early system on the {Datatron 200} series.

	[Listed in CACM 2(5):16 (May 1959)].

	(04 May 1995)

AQL

	<language> A picture {query language}, extension of {APL}.

	["AQL: A Relational Database Management System and Its
	Geographical Applications", F. Antonacci et al, in Database
	Techniques for Pictorial Applications, A. Blaser ed,
	pp. 569-599].

	(04 May 1995)

arbitrary precision calculator

	<tool> An arbitrary precision {C}-like calculator.
	{Interpreter} version 1.26.4 by David I. Bell
	<dbell@canb.auug.org.au>.  Ported to {Linux}.

	{(ftp://ftp.uu.net/pub/calc)}

	(15 Jun 1993)

ARC

	<processor> (Previously ARCS) {Advanced RISC Computing
	Specification}.

	(28 Dec 1995)

arc

	<file format, tool> An old archive format for {IBM PC}.  The
	format is now so obscure that it is only likely to be
	supported by jack-of-all-trades decompression programs such as
	{WINZIP}.

	(03 Nov 1996)

Arcade

	<networking> A {BBS} for the {Acorn} {Archimedes}.  Also has
	links with {Demon Internet}.

	Telephone: +44 (181) 654 2212 (24hrs, most speeds).

	(08 Nov 1994)

ArchBSD

	<operating system> 4.4 {BSD-Lite} for the {Acorn}
	{Archimedes}.

	(08 Nov 1994)

archie

	<tool, networking> A system to automatically gather, index and
	serve information on the {Internet}.  The initial
	implementation of archie by {McGill University} School of
	Computer Science provided an indexed directory of filenames
	from all {anonymous FTP} archives on the Internet.  Later
	versions provide other collections of information.  See also
	{archive site}, {Gopher}, {Prospero}, {Wide Area Information
	Servers}.

	(28 Dec 1995)

Archimedes

	<computer> A family of {microcomputer}s produced by {Acorn
	Computers}, Cambridge, UK.  The Archimedes, launched in June
	1987, was the first {RISC} based {personal computer}
	(predating {Apple Computer}'s {Power Mac} by some seven
	years).  It uses the {Advanced RISC Machine} (ARM) processor
	and includes Acorn's {multitasking} {operating system} and
	{graphical user interface}, {RISC OS} on {ROM}, along with an
	interpreter for Acorn's enhanced {BASIC}, {BASIC V}.

	The Archimedes was designed as the successor to Acorn's
	sucessful {BBC Microcomputer} series and includes some
	backward compatibility and a {6502} {emulator}.  Several
	utilities are included free on disk such as a text editor,
	paint and draw programs.  Software emulators are also
	available for the {IBM PC} as well as add-on {Intel} processor
	cards.

	There have been several series of Archimedes: A300, A400,
	A3000, A5000, A4000 and {RISC PC}.

	There is a {Usenet} {FAQ} {here
	(ftp://rtfm.mit.edu/pub/usenet/news.answers/acorn/)} and a
	list of {archive site}s for the Archimedes {here
	(http://www.cs.vu.nl/~gerben/acorn/acorn-archives.txt)}.  The
	main archive is {HENSA}, accessible via
	{(ftp://micros.hensa.ac.uk/)} and {Gopher
	(gopher://micros.hensa.ac.uk/11/%2bgopher/%2bmicros/%2barch/%2briscos)}
	and another is in {Stuttgart
	(ftp://ftp.uni-stuttgart.de/pub/systems/acorn)}.  {Acorn also
	run an FTP server (ftp://ftp.acorn.co.uk/)}.

	See also {Crisis Software}, {Warm Silence Software}.

	(01 Nov 1994)

architecture

	<architecture> Design, the way components fit together.  The
	term is used particularly of processors, both individual and
	in general.  "The {ARM} has a really clean architecture".  It
	may also be used of any complex system, e.g. "software
	architecture", "network architecture".

	(02 May 1995)

Architecture Neutral Distribution Format

	<programming, operating system> (ANDF) An emerging {OSF}
	{standard} for software distribution.  Programs are compiled
	into ANDF before distribution and executables are produced
	from it for the local target system.  This allows software to
	be developed and distributed in a single version then
	installed on a variety of hardware.

	See also {UNCOL}.

	Mailing list: <andf-tech@osf.org>.

	["Architecture Neutral Distribution Format: A White Paper",
	Open Software Foundation, Nov 1990].

	(20 Oct 1995)

archive

	1. <file format> A single file containing one or (usually)
	more separate files plus information to allow them to be
	extracted (separated) by a suitable program.

	Archives are usually created for software distribution or
	{back up}.  {tar} is a common format for {Unix} archives, and
	{arc} or {pkzip} for {MS-DOS} and {Microsoft Windows}.

	2. <operating system> To transfer files to slower, cheaper
	media (usually {magnetic tape}) to free the disk space they
	occupied.  This is now normally done for long-term storage but
	in the 1960s, when disk was much more expensive, files were
	often shuffled regularly between disk and tape.

	3. <networking> {archive site}.

	(08 Dec 1996)

archive site

	<networking> (Or "FTP site", "FTP archive") An {Internet}
	{host} where program source, documents, {e-mail} or {news}
	messages are stored for public access via {anonymous FTP},
	{Gopher}, {World-Wide Web} or other document distribution
	system.  There may be several archive sites for e.g. a
	{Usenet} {newsgroup} though one may be recognised as the main
	one.

	Some well-known archive sites include {Imperial College, UK
	(ftp://src.doc.ic.ac.uk/)}, {UUNET, USA	(ftp://ftp.uu.net/)}.

	See also {archie}, {GNU archive site}, {mirror}.

	(16 Jan 1995)

ARCnet

	<networking> A {network} developed by {DataPoint}.  Originally
	{proprietary}, by the late 1980s it was no longer proprietary
	and had about as large a marketshare as {Ethernet} among small
	businesses.  It was almost as fast and was considerably
	cheaper at the time.

	(16 Jan 1995)

ARCS

	{ARC}

Arctic

	<language> A {real-time} {functional language}, used for music
	synthesis.

	["Arctic: A Functional Language for Real-Time Control",
	R.B. Dannenberg, Conf Record 1984 ACM Symp on LISP and
	Functional Prog, ACM].

	(16 Jan 1995)

arena

	<programming> The area of memory attached to a {Unix} process
	by the {brk} and {sbrk} {system call}s and used by {malloc} as
	dynamic storage.  So named from a "malloc: corrupt arena"
	message emitted when some early versions detected an
	impossible value in the free block list.

	See {overrun screw}, {aliasing bug}, {memory leak}, {memory
	smash}, {smash the stack}.

	(28 Dec 1995)

ARES

	<language> A pictorial {query language}.

	["A Query Manipulation System for Image Data Retrieval",
	T. Ichikawa et al, Proc IEEE Workshop Picture Data Description
	and Management, Aug 1980, pp.61-67].

	(10 Oct 1995)

AREV

	{Advanced Revelation}

AREXX

	<language> {REXX} for the {Amiga}.

	{ARexxGuide
	(http://www.halcyon.com/robin/www/arexxguide/main.html)}

	(06 Feb 1996)

arg

	{argument}

argument

	<programming> ("arg" or parameter) A value or reference passed
	to a {function}, {procedure}, {subroutine}, command, or
	program, by the caller.  For example, in the function:

		square(x) = x * x

	x is the {formal argument} and in the call

		y = square(3+3)

	3+3 is the {actual argument}.  This will execute the function
	square with x having the value 6.

	There are many different conventions for passing arguments to
	functions and procedures including {call-by-value},
	{call-by-name}, {call-by-need}.  These affect whether the
	value of the argument is computed by the caller or the callee
	(the function) and whether the callee can modify the value of
	the argument as seen by the caller (if it is a variable).

	Arguments to a program are usually given after the command
	name, separated by spaces, e.g.:

		cat myfile yourfile hisfile

	Here "cat" is the command and "myfile", "yourfile", and
	"hisfile" are the arguments.

	(24 Jan 1995)

Argus

	<language> A successor to {CLU}, from LCS {MIT}.  Argus
	supports distributed programming through {guardians} (like
	{monitors}, but can be created dynamically) and {atomic
	actions} (indivisible activity).  It also has {cobegin} and
	coend.

	["Argus Reference Manual", B. Liskov et al., TR-400, MIT/LCS,
	1987].

	["Guardians and Actions: Linguistic Support for Robust,
	Distributed Programs", B. Liskov <liskov@lcs.mit.edu> et al,
	TOPLAS 5(3):381-404 (1983)].

	(28 Dec 1995)

Ariel

	<language> An {array}-oriented language for the {CDC 6400}.

	["Ariel Reference Manual", P. Devel, TR 22, CC UC Berkeley,
	Apr 1968].

	["A New Survey of the Ariel Programming Language", P. Deuel,
	TR 4, Ariel Consortium, UC Berkeley, June 1972].

	[Deuel or Devel?]

	(29 Dec 1995)

ARITH-MATIC

	An alternate name for {A-3}.

Arithmetic and Logic Unit

	<processor> (ALU or "mill") The part of the {central
	processing unit} which performs operations such as addition,
	subtraction and multiplication of integers and {bit-wise}
	{AND}, {OR}, {NOT}, {XOR} and other {Boolean} operations.  The
	CPU's instruction decode logic determines which particular
	operation the ALU should perform, the source the {operand}s
	and the destination of the result.  The width in {bit}s of the
	words which the ALU handles is usually the same as that quoted
	for the processor as a whole whereas its external busses may
	be narrower.  {Floating-point} operations are usually done be
	a separate "{floating-point unit}".  Some processors use the
	ALU for address calculations (e.g. incrementing the {program
	counter}), others have separate logic for this.

	(24 Mar 1995)

arity

	<programming> The number of {arguments} a {function} or
	{operator} takes.  In some languages functions may have
	variable arity which sometimes means their last or only
	argument is actually a list of arguments.

	(21 Jul 1997)

arj

	<tool, file format> An archive format for the {IBM PC}.  ARJ
	files are handled by the ARJ program, created by the American
	programmer Robert Jung.

	[Available from?  Compare with PKZIP?]

	(03 Nov 1996)

Arjuna

	<language> An {object-oriented programming} system developed
	by a team led by Professor Santosh Shrivastava at the
	{University of Newcastle}, implemented entirely in {C++}.
	Arjuna provides a set of tools for the construction of
	{fault-tolerant} {distributed} applications.  It exploits
	features found in most object-oriented languages (such as
	{inheritance}) and only requires a limited set of system
	capabilities commonly found in conventional {operating
	system}s.  Arjuna provides the programmer with {class}es that
	implement {atomic transaction}s, {object level recovery},
	{concurrency} control and {persistence}.  The system is
	portable, modular and flexible; the system software has been
	available to users via ftp since 1992.

	{Home (http://arjuna.ncl.ac.uk/)}

	E-mail: <arjuna@newcastle.ac.uk>.

	(06 Mar 1995)

ARL

	{ASSET Reuse Library}

ARM

	1. <processor> {Advanced RISC Machine}.

	Originally {Acorn} RISC Machine.

	2. <company> {Advanced RISC Machines} Ltd.

	3. <publication> ["The Annotated C++ Reference Manual",
	Margaret A. Ellis and Bjarne Stroustrup, Addison-Wesley,
	1990].

	4. <hardware> {Active Reconfiguring Message}.

	(03 Oct 1997)

ARM610

	<processor> A 32-bit {RISC} {microprocessor} based on the
	{ARM6} processor core designed by {Advanced RISC Machines}
	Ltd.

	The ARM610 is the successor to the {ARM3} processor and is
	produced by {VLSI Technology Inc}.  It consumes 500mW at 33MHz
	with a 5V supply.

	(29 Dec 1995)

ARM7

	<processor> A {RISC} {microprocessor} architecture from
	{Advanced RISC Machines} Ltd. (ARM).  Building upon the {ARM6}
	family, the goal of the ARM7 design was to offer higher levels
	of raw compute performance at even lower levels of power
	consumption.  The ARM7 architecture is now (Dec 1994) the most
	powerful low voltage {RISC} processor available on the market.

	The ARM7 offers several architectural extensions which address
	specific market needs, encompassing fast multiply and
	innovative embedded {ICE} support.  Software development tools
	are available.

	The ARM7 architecture is made up of a core CPU plus a range of
	system peripherals which can be added to a CPU core to give a
	complete system on a chip, e.g. 4K or 8K {cache}, {Memory
	Management Unit}, {Write Buffer}, {coprocessor} interface,
	{ICEbreaker} embedded {ICE} support and {JTAG} {boundary
	scan}.  The {ARM710} {microprocessor} is built around the ARM7
	core.

	{(http://www.systemv.com/armltd/arm7.html)}

	(05 Jan 1995)

ARM710

	<processor> A 32-bit {RISC} {microprocessor} based on the
	{ARM7} processor core designed by {Advanced RISC Machines}
	Ltd.  The A710 is the successor to the {ARM610} processor.  It
	was released in July 1994 by {VLSI Technology Inc}.

	The ARM710 can run at 40MHz (fastest sample 55MHz) dissipating
	500mW with a 5V supply or 25MHz with 3.3V supply.  It has an 8
	kilobyte on-chip {cache}, {memory management unit} and {write
	buffer}.

	The ARM700 and ARM710 processors represent a significant
	improvement over the {ARM610} processors.  They have a higher
	maximum clock speed and a number of architectural improvements
	such as double the size of internal cache, this means that
	more of any process can be executed internally without
	accessing the (relatively) slow external memory.  Other
	improvements are an improved {write buffer} and an enlarged
	{Translation Lookaside Buffer} in the {MMU}.  All of these
	improvements increase the performance of the system and
	deliver more real performance than a simple comparison of
	clock speeds would indicate.

	The ARM710 has been optimised for integer performance.  The
	FPA11 {floating point} coprocessor has a peak throughput of up
	to 5 {MFLOPS} and achieves an average throughput in excess of
	3 MFLOPS for a range of calculations.

	(21 Apr 1995)

ARM7500

	<processor> An {ARM7} core with I/O and {VIDC20} all on one
	{integrated circuit}.

	(23 Sep 1994)

ARM8

	<processor> A {RISC} {microprocessor} {core} designed by
	{Advanced RISC Machines} Ltd. with 50000 {transistor}s.  The
	design of the ARM8 is not yet public but it is not
	{superscalar}.  The ARM8 will form the core of the {ARM800}
	{microprocessor} {integrated circuit}.

	(03 Mar 1995)

ARM800

	<processor> A {microprocessor} based on the {ARM8} processor
	core designed by {Advanced RISC Machines} Ltd.  Planned
	features include a 60-100Mhz {clock rate}; 0.35-0.4 micron
	silicon fabrication; an improvement on the {ARM7}'s 1.4
	cycle/instruction; a 16 Kbyte {cache}.

	Some estimates were 100 MIPS and 120 Kdhrystones at 70Mhz
	(twice the {ARM700}).  Samples of the ARM800 are expected to
	be available in late 1995.

	It may run on a voltage below 3.3V.

	{Digital Semiconductor}'s Hudson fab is 0.35 micron and they
	have announced a licensing deal for the ARM architecture (see
	{StrongARM}).

	(07 Feb 1995)

ARM Ltd

	{Advanced RISC Machines Ltd.}

ARMM

	{Automated Retroactive Minimal Moderation}

armour-plated

	{bulletproof}

ARP

	{Address Resolution Protocol}

ARPA

	{Advanced Research Projects Agency}

ARPANET

	{Advanced Research Projects Agency Network}

ARQ

	{Automatic Repeat Request}

array

	1. <programming> A collection of identically typed data items
	distinguished by their indices (or "subscripts").  The number
	of dimensions an array can have depends on the language but is
	usually unlimited.

	A single ordinary variable (a "{scalar}") could be considered
	as a zero-dimensional array.  A one-dimensional array is also
	known as a "{vector}".

	A reference to an array element is written something like
	A[i,j,k] where A is the array name and i, j and k are the
	indices.  The {C} language is peculiar in that each index is
	written in separate brackets, e.g. A[i][j][k].  This expresses
	the fact that, in C, an N-dimensional array is actually a
	vector, each of whose elements is an N-1 dimensional array.

	Elements of an array are usually stored contiguously.
	Languages differ as to whether the leftmost or rightmost index
	varies most rapidly, i.e. whether each row is stored
	contiguously or each column (for a 2D array).

	Arrays are appropriate for storing data which must be accessed
	in an unpredictable order, in contrast to lists which are best
	when accessed sequentially.  See also {associative array}.

	2. <architecture> A {processor array}, not to be confused with
	an {array processor}.

	(25 Jan 1995)

array processor

	<processor> (Or "vector processor") A {computer}, or extension
	to its {arithmetic unit}, that is capable of performing
	simultaneous computations on elements of an {array} or table
	of data in some number of dimensions.

	Common uses for array processors include analysis of fluid
	dynamics and rotation of {3d} objects, as well as data
	retrieval, in which elements of a {database} are scanned
	simultaneously.

	{Vector processors} and {math coprocessors} are other examples
	of array processors.

	{Array presentation
	(http://www.cs.njit.edu/leon/105/c5/index.htm)}.

	[What sort of computations?  How much parallelism?  Example
	brands?  Same as vector processor?]

	(21 Oct 1997)

Array Theory

	<theory> A theory developed by Trenchard More Jr. and used as
	the basis for the {NIAL} language.

	Papers are available from the IBM Cambridge Scientific Center,
	Cambridge MA.

	(25 Jan 1995)

ART

	<language> A {real-time} {functional language}.  It timestamps
	each data value when it was created.

	["Applicative Real-Time Programming", M. Broy, PROC IFIP 1983,
	N-H].

	(15 Jan 1996)

Artemis microkernel

	<operating system> A {microkernel} currently under development
	by Dave Hudson <dave@humbug.demon.co.uk>, scheduled for
	release under {GPL} in May 1995.  It is targeted at
	{embedded} applications on {Intel 80386}, {Intel 486} and
	{Pentium} based systems.

	(29 Mar 1995)

Artifex

	<programming, tool> A {CASE} environment from {ARTIS} of Turin
	for the development of large {event-driven} distributed
	systems.  It has code-generation and rapid prototyping
	features.

	(24 Jan 1996)

artificial intelligence

	<artificial intelligence> (AI) The subfield of computer
	science concerned with the concepts and methods of {symbolic
	inference} by computer and symbolic {knowledge representation}
	for use in making inferences.  AI can be seen as an attempt to
	model aspects of human thought on computers.  It is also
	sometimes defined as trying to solve by computer any problem
	that a human can solve faster.

	Examples of AI problems are {computer vision} (building a
	system that can understand images as well as a human) and
	{natural language processing} (building a system that can
	understand and speak a human language as well as a human).
	These may appear to be modular, but all attempts so far (1993)
	to solve them have foundered on the amount of context
	information and "intelligence" they seem to require.

	See also {AI-complete}, {neats vs. scruffies}, {neural
	network}, {genetic programming}, {fuzzy computing},
	{artificial life}.

	{ACM SIGART (http://sigart.acm.org/)}.  {U Cal Davis
	(http://phobos.cs.ucdavis.edu:8001)}.  {CMU Artificial
	Intelligence Repository
	(http://www.cs.cmu.edu/Web/Groups/AI/html/repository.html)}.

	(29 Oct 1995)

Artificial Intelligence Lab

	{MIT AI Lab}

Artificial Life

	<algorithm, application> (a-life) The study of synthetic
	systems which behave like natural living systems in some way.
	Artificial Life complements the traditional biological
	sciences concerned with the analysis of living organisms by
	attempting to create lifelike behaviours within computers and
	other artificial media.  Artificial Life can contribute to
	theoretical biology by modelling forms of life other than
	those which exist in nature.  It has applications in
	environmental and financial modelling and network
	communications.

	There are some interesting implementations of artificial life
	using strangely shaped blocks.  A video, probably by the
	company Artificial Creatures who build insect-like robots in
	Cambridge, MA (USA), has several mechanical implementations of
	artificial life forms.

	See also {evolutionary computing}, {life}.

	[Christopher G. Langton (Ed.), "Artificial Life", Proceedings
	Volume VI, Santa Fe Institute Studies in the Sciences of
	Complexity.  Addison-Wesley, 1989].

	{Mark Smucker's Page
	(http://www.cs.wisc.edu/~smucker/gp-list.html)}

	{Santa Fe Institute (http://alife.santafe.edu/)}

	{The Avida Group
	(http://www.krl.caltech.edu/avida/Avida.html)}

	(21 Feb 1995)

artificial neural network

	<artificial intelligence> (ANN, commonly just "neural network"
	or "neural net") A network of many very simple processors
	("units" or "neurons"), each possibly having a (small amount
	of) local memory.  The units are connected by unidirectional
	communication channels ("connections"), which carry numeric
	(as opposed to symbolic) data.  The units operate only on
	their local data and on the inputs they receive via the
	connections.

	A neural network is a processing device, either an
	{algorithm}, or actual hardware, whose design was inspired by
	the design and functioning of animal brains and components
	thereof.

	Most neural networks have some sort of "training" rule whereby
	the weights of connections are adjusted on the basis of
	presented patterns.  In other words, neural networks "learn"
	from examples, just like children learn to recognise dogs from
	examples of dogs, and exhibit some structural capability for
	generalization.

	Neurons are often elementary non-linear signal processors (in
	the limit they are simple threshold discriminators).  Another
	feature of NNs which distinguishes them from other computing
	devices is a high degree of interconnection which allows a
	high degree of parallelism.  Further, there is no idle memory
	containing data and programs, but rather each neuron is
	pre-programmed and continuously active.

	The term "neural net" should logically, but in common usage
	never does, also include biological neural networks, whose
	elementary structures are far more complicated than the
	mathematical models used for ANNs.

	See {Aspirin}, {Hopfield network}, {McCulloch-Pitts neuron}.

	{Usenet} newsgroup: {news:comp.ai.neural-nets}.

	(13 Oct 1997)

Artisoft, Inc.

	<company, networking> A company, known for the {LANtastic}
	range of networking products.  Originally providers of
	easy-to-use, proprietary, {peer-to-peer} network hardware and
	software for small installations, Artisoft now also sells
	{Ethernet} and {Novell}-compatible hardware and software.

	{Home (http://www.artisoft.com/)}

	Telephone: +1 (800) 809 1257.

	Address: Tucson, Arizona, USA; Phoenix, Arizona, USA.

	(24 Apr 1995)

ARTSPEAK

	<language> An early simple language for {plotter} graphics.

	["The Art of Programming, ARTSPEAK", Henry Mullish, Courant
	Inst (Nov 1974)].

	(21 Feb 1995)

AS

	1. <networking> {Autonomous System}.

	2. <storage> {Address Strobe}.

as31

	<tool> An {8031}/{8051} {assembler} which produces a variety
	of object output formats.  Assembler, {yacc} parser and
	documentation, version 1 by Ken Stauffer
	<stauffer@cpsc.ucalgary.ca>.  Theo Deraadt wrote {S-record}
	output routines.  Ported to {Sun 3}, {Sun 4}, {SunOS 4.0},
	{Tandy 6000}, {Xenix}.

	{Washington
	(ftp://wuarchive.wustl.edu/usenet/comp.sources.misc/volume10/asm.8051.Z)},
	{UUNET
	(ftp://ftp.uu.net/usenet/comp.sources.misc/volume10/asm.8051.Z)}.

	(26 Jan 1990)

AS400

	Normally written "{AS/400}".

AS/400

	<computer> An {IBM} {minicomputer} for small business and
	departmental users released in 1988 and still in production in
	February 1997.

	Features include a menu-driven interface, {multi-user}
	support, terminals that are (in the grand {IBM} tradition)
	incompatible with anything else including the {IBM 3270}
	series, and an extensive library-based {operating system}.
	Programming languages include {RPG}, {assembly language}, {C},
	{COBOL}, {SQL}, {BASIC}, and {REXX}.  Several {CASE} tools are
	available: {Synon}, {AS/SET}, {Lansa}.

	Mailing list: <AS400-L@PCCVM.BITNET> (list),
	<LISTSERV@PCCVM.BITNET> (subscription requests).

	(10 Feb 1997)

ASA

	{Adaptive Simulated Annealing}

asbestos

	<jargon> Used as a modifier to anything intended to protect
	one from {flame}s; also in other highly {flame}-suggestive
	usages.  E.g., {asbestos longjohns}, {asbestos cork award}.

	(06 Feb 1996)

asbestos cork award

	<humour> Once, long ago at {MIT}, there was a {flamer} so
	consistently obnoxious that another hacker designed, had made,
	and distributed posters announcing that said flamer had been
	nominated for the "asbestos cork award".  (Any reader in doubt
	as to the intended application of the cork should consult the
	etymology under {flame}.)  Since then, it is agreed that only
	a select few have risen to the heights of bombast required to
	earn this dubious dignity - but there is no agreement on
	*which* few.

	(06 Feb 1996)

asbestos longjohns

	<humour> Notional garments donned by {Usenet} posters just
	before emitting a remark they expect will elicit {flamage}.
	This is the most common of the {asbestos} coinages.  Also
	"asbestos underwear", "asbestos overcoat", etc.

	(04 Jul 1997)

ASCII

	{American Standard Code for Information Interchange}

ASCII art

	<graphics> The fine art of drawing diagrams using the {ASCII}
	character set (mainly "|-/\+").  Also known as "character
	graphics" or "ASCII graphics"; see also {boxology}.  Here is a
	serious example:

	   o----)||(--+--|<----+   +---------o + D O
	     L  )||(  |        |   |             C U
	   A I  )||(  +-->|-+  |   +-\/\/-+--o -   T
	   C N  )||(        |  |   |      |        P
	     E  )||(  +-->|-+--)---+--)|--+-o      U
	        )||(  |        |          | GND    T
	   o----)||(--+--|<----+----------+

	   A power supply consisting of a full wave rectifier
	   circuit feeding a capacitor input filter circuit

	                         Figure 1.

	And here are some very silly examples:

	   |\/\/\/|     ____/|              ___    |\_/|    ___
	   |      |     \ o.O|   ACK!      /   \_  |` '|  _/   \
	   |      |      =(_)=  THPHTH!   /      \/     \/      \
	   | (o)(o)        U             /                       \
	   C      _)  (__)                \/\/\/\  _____  /\/\/\/
	   | ,___|    (oo)                       \/     \/
	   |   /       \/-------\         U                  (__)
	  /____\        ||     | \    /---V  `v'-            oo )
	 /      \       ||---W||  *  * |--|   || |`.         |_/\

			//-o-\\
		 ____---=======---____
	     ====___\   /.. ..\   /___====      Klingons rule OK!
	   //        ---\__O__/---        \\
	   \_\                           /_/

					    _____
				    __...---'-----`---...__
			       _===============================
	  ,----------------._/'      `---..._______...---'
	  (_______________||_) . .  ,--'
	      /    /.---'         `/
	     '--------_- - - - - _/
		       `--------'

				   Figure 2.

	There is an important subgenre of ASCII art that puns on the
	standard character names in the fashion of a rebus.

	 +--------------------------------------------------------+
	 |      ^^^^^^^^^^^^                                      |
	 | ^^^^^^^^^^^            ^^^^^^^^^                       |
	 |                 ^^^^^^^^^^^^^            ^^^^^^^^^^^^^ |
	 |        ^^^^^^^         B       ^^^^^^^^^               |
	 |  ^^^^^^^^^          ^^^            ^^^^^^^^^^^^^^      |
	 +--------------------------------------------------------+
		     "A Bee in the Carrot Patch"

	                       Figure 3.

	Within humorous ASCII art, there is, for some reason, an
	entire flourishing subgenre of pictures of silly cows.  One is
	shown in Figure 2; here are three more:

		  (__)              (__)              (__)
		  (\/)              ($$)              (**)
	   /-------\/        /-------\/        /-------\/
	  / | 666 ||        / |=====||        / |     ||
	 *  ||----||       *  ||----||       *  ||----||
	    ~~    ~~          ~~    ~~          ~~    ~~
	  Satanic cow    This cow is a Yuppie   Cow in love

				  Figure 4.

	{(http://gagme.wwa.com/~boba/scarecrow.html)}

	(06 Feb 1996)

ASCIIbetical order

	<jargon, programming> /as'kee-be'-t*-kl or'dr/ Used to
	indicate that data is sorted in {ASCII} collated order rather
	than alphabetical order.

	(27 Mar 1995)

ASCIIbonics

	<chat> (From {ASCII} and Ebonics) A style of text
	communication in English which is most common on {talk}
	systems such as {irc}.  Its notable characteristics are:

	Typing all in lowercase (and occasionally all in uppercase).

	Copious use of abbreviations of the sort "u" for "you" "1" for
	"one" (and therefore "some1" for "someone", "ne1" for
	"anyone"), "2" for "to", "r" for "are", etc.

	A general lack of punctuation (although use of sentence-final
	"??????????" and "!!!!!!!!!!" is not uncommon).

	Common use of the idiom "m or f?", meant to elicit a statement
	of the listener's gender.

	Typical extended discourse in ASCIIbonics: "hey wasup ne1 want
	2 {cyber}?"  "m or f?"

	ASCIIbonics is similar to the way {B1FF} talked, although B1FF
	used more punctuation (lots more), and used all uppercase,
	rather than all lowercase.  What's more, B1FF was only
	interested in {warez}, and so never asked "m or f?".

	It has been widely observed that some of the purest examples
	of ASCIIbonics come from non-native speakers of English.

	The phenomenon of ASCIIbonics predates by several years the
	use of the word "ASCIIbonics", as the word could only have
	been coined in or after late 1996, when "Ebonics" was first
	used in the US media to denote the US English dialects known
	in the linguistic literature as "Black Vernacular English".

	(21 Jun 1997)

ASCII character table

	<character> The following list gives the {octal}, decimal and
	{hexadecimal} {ASCII} codes for each character along with its
	printed representation and common name(s).

	  Oct Dec Hex  Name
	  000   0 0x00 NUL
	  001   1 0x01 SOH
	  002   2 0x02 STX
	  003   3 0x03 ETX, Control-C
	  004   4 0x04 EOT
	  005   5 0x05 ENQ
	  006   6 0x06 ACK
	  007   7 0x07 BEL
	  010   8 0x08 BS, backspace
	  011   9 0x09 HT, tab
	  012  10 0x0a LF, line feed, newline
	  013  11 0x0b VT
	  014  12 0x0c FF, form feed, NP
	  015  13 0x0d CR, carriage return
	  016  14 0x0e SO
	  017  15 0x0f SI
	  020  16 0x10 DLE
	  021  17 0x11 DC1, XON, Control-Q
	  022  18 0x12 DC2
	  023  19 0x13 DC3, XOFF, Control-S
	  024  20 0x14 DC4
	  025  21 0x15 NAK
	  026  22 0x16 SYN
	  027  23 0x17 ETB
	  030  24 0x18 CAN
	  031  25 0x19 EM
	  032  26 0x1a SUB
	  033  27 0x1b ESC, escape
	  034  28 0x1c FS
	  035  29 0x1d GS
	  036  30 0x1e RS
	  037  31 0x1f US
	  040  32 0x20 space
	  041  33 0x21 !, exclamation mark
	  042  34 0x22 ", double quote
	  043  35 0x23 #, hash
	  044  36 0x24 $, dollar
	  045  37 0x25 %, percent
	  046  38 0x26 &, ampersand
	  047  39 0x27 ', quote
	  050  40 0x28 (, open parenthesis
	  051  41 0x29 ), close parenthesis
	  052  42 0x2a *, asterisk
	  053  43 0x2b +, plus
	  054  44 0x2c ,, comma
	  055  45 0x2d -, minus
	  056  46 0x2e ., full stop
	  057  47 0x2f /, oblique stroke
	  060  48 0x30 0
	  061  49 0x31 1
	  062  50 0x32 2
	  063  51 0x33 3
	  064  52 0x34 4
	  065  53 0x35 5
	  066  54 0x36 6
	  067  55 0x37 7
	  070  56 0x38 8
	  071  57 0x39 9
	  072  58 0x3a :, colon
	  073  59 0x3b ;, semicolon
	  074  60 0x3c <, less than
	  075  61 0x3d =, equals
	  076  62 0x3e >, greater than
	  077  63 0x3f ?, question mark
	 0100  64 0x40 @, commercial at
	 0101  65 0x41 A
	 0102  66 0x42 B
	 0103  67 0x43 C
	 0104  68 0x44 D
	 0105  69 0x45 E
	 0106  70 0x46 F
	 0107  71 0x47 G
	 0110  72 0x48 H
	 0111  73 0x49 I
	 0112  74 0x4a J
	 0113  75 0x4b K
	 0114  76 0x4c L
	 0115  77 0x4d M
	 0116  78 0x4e N
	 0117  79 0x4f O
	 0120  80 0x50 P
	 0121  81 0x51 Q
	 0122  82 0x52 R
	 0123  83 0x53 S
	 0124  84 0x54 T
	 0125  85 0x55 U
	 0126  86 0x56 V
	 0127  87 0x57 W
	 0130  88 0x58 X
	 0131  89 0x59 Y
	 0132  90 0x5a Z
	 0133  91 0x5b [, open square bracket
	 0134  92 0x5c \, backslash
	 0135  93 0x5d ], close square bracket
	 0136  94 0x5e ^, caret
	 0137  95 0x5f _, underscore
	 0140  96 0x60 `, back quote
	 0141  97 0x61 a
	 0142  98 0x62 b
	 0143  99 0x63 c
	 0144 100 0x64 d
	 0145 101 0x65 e
	 0146 102 0x66 f
	 0147 103 0x67 g
	 0150 104 0x68 h
	 0151 105 0x69 i
	 0152 106 0x6a j
	 0153 107 0x6b k
	 0154 108 0x6c l
	 0155 109 0x6d m
	 0156 110 0x6e n
	 0157 111 0x6f o
	 0160 112 0x70 p
	 0161 113 0x71 q
	 0162 114 0x72 r
	 0163 115 0x73 s
	 0164 116 0x74 t
	 0165 117 0x75 u
	 0166 118 0x76 v
	 0167 119 0x77 w
	 0170 120 0x78 x
	 0171 121 0x79 y
	 0172 122 0x7a z
	 0173 123 0x7b {, open curly bracket
	 0174 124 0x7c |, vertical bar
	 0175 125 0x7d }, close curly bracket
	 0176 126 0x7e ~, tilde
	 0177 127 0x7f delete

	See {NUL}, {SOH}, {STX}, {ETX}, {ETX}, {EOT}, {ENQ}, {ACK},
	{BEL}, {BS}, {HT}, {line feed}, {VT}, {FF}, {CR}, {SO}, {SI},
	{DLE}, {XON}, {DC1}, {DC2}, {DC3}, {DC4}, {NAK}, {SYN}, {ETB},
	{CAN}, {EM}, {SUB}, {ESC}, {FS}, {GS}, {RS}, {US}, {space},
	{exclamation mark}, {double quote}, {hash}, {dollar},
	{percent}, {ampersand}, {quote}, {open parenthesis}, {close
	parenthesis}, {asterisk}, {plus}, {comma}, {minus}, {full
	stop}, {oblique stroke}, {colon}, {semicolon}, {less than},
	{equals}, {greater than}, {question mark}, {commercial at},
	{open square bracket}, {backslash}, {close square bracket},
	{caret}, {underscore}, {back quote}, {open curly bracket},
	{vertical bar}, {close curly bracket}, {tilde}, {delete}.

	(24 Jun 1996)

ASDIMPL

	{ASDO IMPlementation Language}

ASDL

	{Abstract-Type and Scheme-Definition Language}

ASDO IMPlementation Language

	<language> (ASDIMPL) A {C}-like language, run on {Burroughs}'
	{mainframes} in the early 1980s, and {cross-compile}d to
	{x86}-based {embedded processor}s.

	(06 Feb 1996)

ASE

	1. {Advanced Software Environment}.

	2. {Application Service Element}.

	(19 Feb 1996)

A* search

	<algorithm> A graph search algorithm.  A* is guaranteed to
	find a minimal solution path before any other solution paths,
	if a solution exists, in other words, it is an "admissible"
	search algorithm.  Each path is assigned a value based on the
	cost of the path (e.g. its length) and an (under)estimate of
	the cost of completing the path, i.e. the cost of a path from
	the end of the current path to a solution.

	(31 Mar 1995)

ASF

	{Algebraic Specification Language}

ash

	<tool> A {Bourne Shell} clone by Kenneth Almquist.  It works
	pretty well.  For running scripts, it is sometimes better and
	sometimes worse than {Bash}.

	Ash runs under {386BSD}, {NetBSD} or {FreeBSD} and {Linux}.

	{FTP Linux version
	(ftp://ftp.win.tue.nl/pub/linux/ports/ash-linux-0.1.tar.gz)}.

	(20 Jul 1995)

Ashmedai

	<tool> A {symbolic mathematics} package by Michael Levine
	<levine@cpwsca.psc.edu> that influenced {SMP} and {FORM}.
	There are versions for the {Univac 1108} and {VAX}/{VMS}.

	(21 Mar 1995)

Ashton-Tate Corporation

	<company> The original developer and vendor of the {dBASE}
	{relational database} and application development tool.  In
	the early 1990s it was taken over by {Borland International,
	Inc.}

	[Dates?  Address?]

	(09 Mar 1996)

ASIC

	{Application-Specific Integrated Circuit}

A Simulation Process-Oriented Language

	<language, simulation> (ASPOL) An {ALGOL}-like language for
	computer {simulation}.

	["Process and Event Control in ASPOL", M.H. MacDougall, Proc
	Symp on Simulation of Computer Systems, NBS (Aug 1975)].

	(25 Mar 1996)

ASIS

	1. {Application Software Installation Server}.

	At {CERN}.

	2. {Ada Semantic Interface Specification}.

ASK

	{Amplitude Shift Keying}

ASL

	{Algebraic Specification Language}

ASL+

	<language, specification> An {algebraic specification
	language} by David Aspinall of the {University of Edinburgh}.
	ASL+ has rules for proving the satisfaction of specifications.
	It can also be viewed as a {type theory} with {subtyping},
	featuring {contravariant refinement} for Pi-abstracted
	specifications and a notion of {stratified equality} for
	{higher-order} objects.

	(14 Sep 1994)

ASM

	{assembly language}

ASME

	{American Society of Mechanical Engineers}

ASN

	{Autonomous System Number}

ASN.1

	{Abstract Syntax Notation 1}

ASP

	1. <World-Wide Web> {Active Server Pages}.

	2. <language> A {query language}(?).

	[Sammet 1969, p.702].

	(10 Feb 1998)

ASPECT

	<tool, programming> An {IPSE} developed by an {Alvey} project,
	using {Z} to specify the {object-management system} and tool
	interface.

	(25 Mar 1996)

ASpecT

	<language> Algebraic specification of {abstract data types}.
	A {strict} {functional language} that compiles to {C}.
	Versions are available for {Sun}, {Ultrix}, {NeXT},
	{Macintosh}, {OS/2} 2.0, {Linux}, {RS/6000}, {Atari}, {Amiga}.

	{(ftp://wowbagger.uni-bremen.de/pub/programming/languages)}

	(25 Mar 1996)

aspect ratio

	<graphics> The ratio of width to height of a {pixel} or a
	display screen.  Square pixels (1:1) are considered preferable
	but displays are usually about 5:4.

	(30 Nov 1994)

ASPEN

	<language> A {toy language} for teaching {compiler}
	construction.

	["ASPEN Language Specifications", T.R. Wilcox, SIGPLAN Notices
	12(11):70-87 (Nov 1977)].

	(30 Nov 1994)

ASPIK

	<language, specification> A multiple-style specification
	language.

	["Algebraic Specifications in an Integrated Software
	Development and Verification System", A. Voss, Diss, U
	Kaiserslautern, 1985].

	(30 Nov 1994)

Aspirin

	<language, tool> A {freeware} language from {MITRE Corp} for
	the description of {neural network}s.  A compiler, bpmake, is
	included.  Aspirin is designed for use with the {MIGRAINES}
	interface.

	{Version: 6.0 (ftp://ftp.cognet.ucla.edu/alexis/)}

	(08 Mar 1995)

ASPLE

	<language> A {toy language}.

	["A Sampler of Formal Definitions", M. Marcotty et al,
	Computing Surveys 8(2):191-276 (Feb 1976)].

	(08 Feb 1995)

ASPOL

	{A Simulation Process-Oriented Language}

ASQC

	{American Society for Quality Control}

ASR

	{Automatic Send Receive}

assembler

	<programming> A program which converts {assembly language}
	into {machine code}.

	(25 Mar 1996)

ASSEMBLY

	<language> An early system on the {IBM 702}.

	[Listed in CACM 2(5):16 May 1959].

	(27 Jun 1996)

assembly code

	{assembly language}

Assembly Language

	<language> (AL) A language for industrial {robot}s developed
	at {Stanford University} in the 1970s.

	["The AL Language for an Intelligent Robot", T. Binford in
	Langages et Methods de Programation des Robots Industriels,
	pp. 73-88, IRIA Press 1979].

	["AL User's Manual", M.S. Mujtaba et al, Stanford AI Lab, Memo
	AIM-323 (Jan 1979)].

	(24 Nov 1994)

assembly language

	<language> (Or "assembly code") A symbolic representation of
	the {machine language} of a specific computer.  Assembly
	language is converted to {machine code} by an {assembler}.
	Programming in assembly language is slow and error-prone but
	is the only way to squeeze every last bit of performance out
	of the hardware.

	{Filename extension}: .s ({Unix}), .asm ({CP/M} and others).

	See also {second generation language}.

	(17 Sep 1996)

Assembly Language Compiler

	<language> (ALC) An alternative name for {IBM 360} {assembly
	language}.

	Compare {BAL}.

	(04 Jan 1995)

Assembly Language for Multics

	<language> (ALM) The {assembly language} of the {GE645} in
	which critical portions of the {Multics} {kernel} were
	written.

	(24 Nov 1994)

assertion

	<programming> 1. An expression which, if false, indicates an
	error.  Assertions can be used for {debugging} by catching
	{can't happen} errors.

	2. In {logic programming}, a new {fact} or {rule} added to the
	database by the program at {run time}.  This is an
	{extralogical} or impure feature of logic programming
	languages.

	(30 Jun 1997)

ASSET

	{Asset Source for Software Engineering Technology}

Asset Management

	<business> The process whereby a large organisation collects
	and maintains a comprehensive list of the items it owns such
	as hardware and software.  This data is used in connection
	with the financial aspects of ownership such as calculating
	the total cost of ownership, depreciation, licensing,
	maintenance and insurance.

	(30 Mar 1997)

Asset Source for Software Engineering Technology

	<project> (ASSET) A programme to promote software {reuse} by
	the US {DoD}.

	See also {ASSET Reuse Library}.

	(19 Aug 1996)

assigned numbers

	<standard> The {RFC} {STD 2} documenting the currently
	assigned values from several series of numbers used in network
	{protocol} implementations.  This RFC is updated periodically
	and, in any case, current information can be obtained from the
	{Internet Assigned Numbers Authority} (IANA).  If you are
	developing a protocol or application that will require the use
	of a link, {socket}, {port}, protocol, etc., you should
	contact the IANA to receive a number assignment.

	(19 Aug 1996)

assignment

	<programming> Storing the value of an expression in a
	variable.  This is commonly written in the form "v = e".  In
	{Algol} the assignment operator was ":=" (pronounced
	"becomes") to avoid mathematicians qualms about writing
	statements like x = x+1.

	Assignment is not allowed in {functional language}s, where an
	identifier always has the same value.

	See also {referential transparency}, {single assignment},
	{zero assignment}.

	(19 Aug 1996)

Association Control Service Element

	<networking> (ACSE) The {OSI} method for establishing a call
	between two {application programs}.  ACSE checks the
	identities and contexts of the application entities, and could
	apply an {authentication} security check.

	Documents: {ITU} Rec. X.227 ({ISO} 8650), X.217 (ISO 8649)

	(07 Dec 1997)

Association for Computational Linguistics

	<body> (ACL) The international scientific and professional
	society for people working on problems involving {natural
	language} and computation.  Membership includes the ACL
	quarterly journal, "Computational Linguistics", reduced
	registration at most ACL-sponsored conferences, discounts on
	ACL-sponsored publications, and participation in ACL Special
	Interest Groups.  The ACL is in its 31st year; there are more
	than 2000 members worldwide.

	E-mail: <acl@bellcore.com>.

	(ACL) {Home (http://www.cs.columbia.edu/~acl/)}.

	(17 Jan 1995)

Association for Computing Machinery

	<body> (ACM) The largest and oldest international scientific
	and educational computer society in the industry.  Founded in
	1947, only a year after the unveiling of {ENIAC}, ACM was
	established by mathematicians and electrical engineers to
	advance the science and application of information technology.
	{John Mauchly}, co-inventor of the ENIAC, was one of ACM's
	founders.

	Since its inception ACM has provided its members and the world
	of computer science a forum for the sharing of knowledge on
	developments and achievements necessary to the fruitful
	interchange of ideas.

	ACM has 90000 members - educators, researchers, practitioners,
	managers, and engineers - who drive the Association's major
	programs and services - publications, special interest groups,
	chapters, conferences, awards, and special activities.

	The ACM Press publishes journals (notably {CACM}), book
	series, conference proceedings, CD/ROM, Hypertext and Video,
	and specialized publications such as curricula recommendations
	and self-assessment procedures.

	{Home (http://info.acm.org/)}.

	(17 Oct 1996)

Association for Progressive Communications

	<body, philosophy> (APC) A world-wide organisation of
	like-minded computer {networks} providing a global
	communications network dedicated to the free and balanced flow
	of information.  APC's partner organisations, include The
	{Institute for Global Communications} (San Francisco),
	Alternex (Brazil), Nicarao (Nicaragua) and GlasNet (Russia).
	These organisations serve people working toward goals that
	include the prevention of warfare, elimination of militarism
	and poverty, protection of the environment, human rights,
	social and economic justice, participatory democracy,
	nonviolent conflict resolution, and the promotion of
	sustainable development.

	{Home (http://www.apc.org/)}.

	E-mail: <apc-info@apc.org>.

	(06 Nov 1996)

Association for SIMULA Users

	<body>  See {SIMULA}.

	Address: Royal Institute of Technology, S-100 44 Stockholm,
	Sweden.

	[Details?]

	(29 Mar 1995)

Association Franaise des Utilisateurs d'Unix

	<body> (et des systmes ouverts, AFUU) French Association of
	{Unix} Users.

	{Home (http://www.afuu.fr/)}.

	(07 Jun 1996)

Association of American Publishers

	<body> (AAP) A group engaged in standardisation efforts in
	document preparation.

Association of C and C++ Users

	<body> (ACCU) A community of people with an interest in the
	{C} family of programming languages: {K&R C}, {ANSI C} and
	{C++}.  The community includes professional programmers, the
	suppliers of {compilers}, and those who are just interested in
	the languages.  ACCU members are using C and C++ on a wide
	range of platforms - {Unix}, {MS-DOS}, {OS/2}, {CP/M} - home
	computers, {IBM PC}s, {workstations} and {super-computers}.
	Although the organisation is based in the UK, the membership
	is worldwide.  There are members in the US, mainland Europe,
	Russia, the Middle East and Australia.

	E-mail: <info@accu.org>, <membership@accu.org>,
	<academic@accu.org> (Academic Liaison Officer).

	Address: The Membership Secretary, 64 Southfield Road, Oxford
	OX4 1PA, United Kingdom.

	(02 Dec 1996)

Association of Lisp Users

	<body> (ALU) A user group which aims to promote {Lisp}, help
	inform and educate Lisp users in general, and help represent
	Lisp users as a group to the vendors.  The ALU holds an annual
	conference and supports the formation of inter-vendor
	standards.  ALU has international membership and is
	incorporated in the US.

	{Usenet} {newsgroups}: {news:comp.org.lisp-users}
	{news:comp.std.lisp}.  Mailing list: <alu@ai.sri.com>.

	{Home (http://www.cs.rochester.edu/u/miller/ALU/home.html)}

	(07 Dec 1996)

associative array

	<programming> An {array} where the {indices} are not just
	{integers} but may be arbitrary strings.

	{awk} and its descendants (e.g. {Perl}) have associative
	arrays which are implemented using {hash tables}.

	(16 Feb 1995)

associative memory

	{content addressable memory}

Associative Memory Parallel Processing Language

	<language> (AMPPL-II) A language from the early 1970s.

	(14 Nov 1995)

ASTAP

	Advanced STatistical Analysis Program.  Analysing electronic
	circuits and other networks.  ["Advanced Statistical Analysis
	Program (ASTAP) Program Reference Manual", SH-20-1118, IBM,
	1973].

asterisk

	<character> "*".  Common names include: star; {INTERCAL}:
	{splat}; {ITU-T}: asterisk.  Rare: {wild card}; gear; dingle;
	mult; spider; aster; times; twinkle; glob (see {glob});
	{Nathan Hale}.

	Asterix was a fictional Gaul.

	(06 Mar 1995)

asterix

	<spelling> Do you mean "{asterisk}"?

	(01 Mar 1997)

Astral

	Based on {Pascal}, never implemented.

	["ASTRAL: A Structured and Unified Approach to Database Design
	and Manipulation", T. Amble et al, in Proc of the Database
	Architecture Conf, Venice, June 1979].

AST Research

	Computer manufacturer.

	Quarterly sales $409M, profits $14M (Aug 1994).

asymmetrical modulation

	<communications> A scheme to maximise use of a communications
	line by giving a larger share of the {bandwidth} to the
	{modem} which is transmitting the most information.

	[Better explanation?]

	(04 Apr 1995)

Asymmetric Digital Subscriber Line

	<communications> (ADSL, or "Asymmetric Digital Subscriber
	Loop") A variation of {Digital Subscriber Line} designed for
	an upstream data flow ({client}-to-{server}) which is a
	fraction of the downstream data flow (server-to-client).
	Typically the upstream data flow is measured in {kilobits} per
	second while the downstream data flow is measured in
	{megabits} per second (e.g. 6 megabits per second over
	standard phone lines).

	ADSL is appropriate for applications such as {Video on Demand}
	or {World-Wide Web} where a request from the user is far less
	data than the response.

	["Data Cooks, But Will Vendors Get Burned?", "Supercomm
	Spotlight On ADSL" & "Lucent Sells Paradine", Wilson & Carol,
	Inter@ctive Week Vol.  3 #13, p1 & 6, June 24 1996].

	See also {Carrierless Amplitude/Phase Modulation}.

	(13 Oct 1996)

Asymmetric Digital Subscriber Loop

	{Asymmetric Digital Subscriber Line}

asynchronous

	Not synchronised by a shared signal such as {clock} or
	{semaphore}, proceeding independently.

	Opposite: {synchronous}.

	1. <operating system> A {process} in a {multitasking} system
	whose execution can proceed independently, "in the
	{background}".  Other processes may be started before the
	asynchronous process has finished.

	2. <communications> A communications system in which data
	transmission may start at any time and is indicated by a
	{start bit}, e.g. {RS-232}.  A data {byte} (or other element
	defined by the {protocol}) ends with a {stop bit}.  A
	continuous marking condition (identical to stop bits but not
	quantized in time), is then maintained until data resumes.

	(08 Dec 1995)

Asynchronous Balanced Mode

	<protocol> A communication mode of {HDLC} and derivative
	protocols, supporting {peer-oriented} {point-to-point}
	communications between two nodes, where either node can
	initiate transmission.

	(07 May 1997)

Asynchronous Communications Interface Adapter

	<communications, hardware> (ACIA) A kind of {integrated
	circuit} that provides data formatting and control to {RS-232}
	serial interfaces.

	[Is this the same as a {UART}?]

	(07 May 1997)

asynchronous logic

	A {data-driven} circuit design technique where, instead of the
	components sharing a common clock and exchanging data on clock
	edges, data is passed on as soon as it is available.  This
	removes the need to distribute a common clock signal
	throughout the circuit with acceptable {clock skew}.  It also
	helps to reduce power dissipation in {CMOS} circuits because
	gates only switch when they are doing useful work rather than
	on every clock edge.

	There are many kinds of asynchronous logic.  Data signals may
	use either "dual rail encoding" or "data bundling".  Each dual
	rail encoded {Boolean} is implemented as two wires.  This
	allows the value and the timing information to be communicated
	for each data bit.  Bundled data has one wire for each data
	bit and another for timing.  Level sensitive circuits
	typically represent a logic one by a high voltage and a logic
	zero by a low voltage whereas transition signalling uses a
	change in the signal level to convey information.  A speed
	independent design is tolerant to variations in gate speeds
	but not to propagation delays in wires; a delay insensitive
	circuit is tolerant to variations in wire delays as well.

	The purest form of circuit is delay-insensitive and uses
	dual-rail encoding with transition signalling.  A transition
	on one wire indicates the arrival of a zero, a transition on
	the other the arrival of a one.  The levels on the wires are
	of no significance.  Such an approach enables the design of
	fully delay-insensitive circuits and automatic layout as the
	delays introduced by the layout compiler can't affect the
	functionality (only the performance).  Level sensitive designs
	can use simpler, stateless logic gates but require a "return
	to zero" phase in each transition.

	{(http://www.cs.man.ac.uk/amulet/async/)}

	(18 Jan 1995)

Asynchronous Transfer Mode

	<communications> (ATM, or "fast packet") A method for the
	dynamic allocation of {bandwidth} using a fixed-size {packet}
	(called a cell).

	See also {Wideband ATM}.

	{ATM Forum (http://www.atmforum.com/)}

	{ATM Forum acronyms
	(http://www.atmforum.com/atmforum/acronym_index.html)}.

	{Indiana acronyms
	(http://cell-relay.indiana.edu/cell-relay/FAQ/ATM-Acronyms.html)}.

	[Data rate(s)?]

	(01 Apr 1996)

asyncronous

	<spelling> Misspelling of "{asynchronous}".

	(13 Dec 1996)

AT

	{IBM PC AT}

at

	{commercial at}

AT-3

	Original name of {MATH-MATIC}.  [Sammet 1969, p.135].

ATA

	{Advanced Technology Attachment}

ATA-2

	{Advanced Technology Attachment Interface with Extensions}

ATA-4

	{Ultra DMA}

ATAPI

	<storage> The {API} used on the {IBM PC AT} for accessing
	{CD-ROM}s.

	(06 Aug 1995)

Atari

	1. <company> A maker of arcade games, home video game systems,
	and home computers, especially during the 1970s and 1980s.

	{Home (http://www.atarigames.com/)}.

	2. <computer> A range of 16- and 32-bit {microcomputers},
	notable for having a built-in {MIDI} interface.  At present
	(Feb 1994) it includes the Atari 520ST, 1040ST, Mega ST, STe,
	STacy, Mega STe, TT, and Falcon.  There are also emulators for
	the Apple {Macintosh} and IBM PC/XT/AT available.

	{Usenet} newsgroups: {news:comp.binaries.atari.st},
	{news:comp.sys.atari.st.tech}, {news:comp.sources.atari.st}.

	{Michigan U (ftp://atari.archive.umich.edu)} [141.211.164.8],
	{UK (ftp://micros.hensa.ac.uk/)}, {Germany
	(ftp://ftp.Germany.EU.net)} [192.76.144.75], {Netherlands
	(ftp://ftp.cs.ruu.nl/)} [131.211.80.17], {UK
	(ftp://src.doc.ic.ac.uk/computing/systems/atari/umich)}.

	(23 Nov 1997)

AT Attachment

	{Advanced Technology Attachment}

AtFS

	Attributed File System: the basis of the Shape_VC toolkit.
	Cooperative work within projects is supported by a status
	model controlling visibility of version objects, locking, and
	"long transactions" for synchronizing concurrent updates.  The
	concept of object attributes provides a basis for storing
	management information with versions and passing this
	information between individual tools.  This mechanism is
	useful for building integrated environments from a set of
	unrelated tools.

Athena

	Project Athena: a distributed system project for support of
	educational and research computing at MIT.  Much of the
	software developed is now in wider use, especially the X
	Window System

Atherton

	Atherton Technology developed the Software BackPlane CASE
	framework.  Their Atherton Tool Integration Services were the
	basis for the ATIS standard.

ATIS

	A Tools Integration Standard

ATK

	The Andrew Toolkit

ATLAS

	Abbreviated Test Language for Avionics Systems.  MIL-spec
	language for automatic testing of avionics equipment.
	Replaced/upgraded Gaelic and several other test languages.
	"IEEE Standard ATLAS Test Language", IEEE Std 416-1976.

Atlas Autocode

	Autocode for the {Ferranti} {Atlas}, which may have been the
	first commercial computer with {hardware-paged} {virtual
	memory}.  Whereas other {autocode}s were basically symbolic
	{assembly language}s, Atlas Autocode was high-level and
	{block-structured}, resembling a cross between {FORTRAN} and
	{ALGOL 60}.  It had {call-by value}, loops, declarations,
	complex numbers, pointers, {heap} and {stack} storage
	generators, {dynamic array}s and extensible {syntax}.

ATM

	1. <communications> {Asynchronous Transfer Mode}.

	2. Automatic Teller Machine.

	A cash dispenser.

	3. <chat> At the moment.

	4. <text> {Adobe Type Manager}.

	(04 Dec 1995)

atob

	<tool> /A too B/ A utility that does {ASCII} to {binary}
	conversion.  The reverse process is {btoa}.

	(08 Aug 1997)

ATOLL

	Acceptance, Test Or Launch Language.  Language used for
	automating the checkout and launch of Saturn rockets.

	["SLCC ATOLL User's Manual", IBM 70-F11-0001, Huntsville AL
	Dec 1970].

atomic

	[Greek "atomos", indivisible] Indivisible; cannot be split up.
	For example, an instruction may be said to do several things
	"atomically", i.e. all the things are done immediately, and
	there is no chance of the instruction being half-completed or
	of another being interspersed.  Used especially to convey that
	an operation cannot be interrupted.

	An atomic data type has no internal structure visible to the
	program.  It can be represented by a flat domain (all elements
	are equally defined).  Machine integers and {Booleans} are two
	examples.

	An atomic {database} transaction is one which is guaranteed to
	complete successfully or not at all.  If an error prevents a
	partially-performed transaction from proceeding to completion,
	it must be "backed out'" to prevent the database being left
	in an inconsistent state.

A Tools Integration Standard

	(ATIS) An {object-oriented} interface to a set of services
	that allows the saving, accessing and managing of information
	in a common repository.  Developed by {Atherton Technology}
	and {DEC}, based on an extended version of the {Software
	BackPlane}, now proposed as an industry standard.

	(25 Oct 1994)

ATS

	{Attribute Translation System}

at sign

	{commercial at}

AT&T

	American Telephone and Telegraph, Inc.  One of the largest US
	telecommunications providers.  Also noted for being the
	birthplace of the {Unix} {operating system} and the {C} and
	{C++} programming languages.

	AT&T was incorporated in 1885, but traces its lineage to
	Alexander Graham Bell and his invention of the telephone in
	1876.  As parent company of the former {Bell System}, AT&T's
	primary mission was to provide telephone service to virtually
	everyone in the United States.  In its first 50 years, AT&T
	established subsidiaries and allied companies in more than a
	dozen other countries.  It sold these interests in 1925 and
	focused on achieving its mission in the United States.  It
	did, however, continue to provide international long distance
	service.

	The Bell System was dissolved at the end of 1983 with AT&T's
	divestiture of the Bell telephone companies.  Today, AT&T
	operates worldwide in competitive, high-technology markets,
	with only its long distance services remaining under
	government regulation.  With 2.4 million registered
	shareowners, AT&T's is the most widely held stock in America.

	See also {3DO}, {Advanced RISC Machine}, {Berkeley System
	Distribution}, {Bell Laboratories}, {Concurrent C}, {Death
	Star}, {dinosaurs mating}, {InterNIC}, {System V}, {Nawk},
	{Open Look}, {rc}, {S}, {Standard ML of New Jersey}, {Unix
	International}, {Unix conspiracy}, {USG Unix}, {Unix System
	Laboratories}.

	{Home (http://www.att.com/)}.
	{Research (http://www.research.att.com/)}.

	[Would someone write a story around those "see also"s?]

	(07 Dec 1994)

Attachment Unit Interface

	<networking> (AUI) The part of the {IEEE} {Ethernet}
	{standard} located between the {MAC}, and the {MAU}.  The AUI
	is a {transceiver} cable that provides a path between a
	{node}'s Ethernet interface and the MAU.

	(08 Dec 1996)

AT&T Bell Labs

	{Bell Laboratories}

atto-

	{prefix}

attoparsec

	<unit, humour> About 3.1 cm (one inch).  "atto-" is the
	standard {SI} {prefix} for multiplication by 10^-18.  A parsec
	(parallax-second) is 3.26 light-years; an attoparsec is thus
	3.26 * 10^-18 light years.  Thus, one attoparsec per
	{microfortnight} is about one inch per second.

	This unit is reported to be in use (though probably not very
	seriously) among hackers in the UK.

	(08 Dec 1996)

Attribute Translation System

	<grammar, tool> (ATS) A {BNF}-based {parser generator} from
	the {University of Saskatchewan}(?).  It generates
	table-driven {LL1} {parser}s with full {insert-only error
	recovery}.  It also has full left-attribute semantic handling,
	which is a dream compared to using {YACC}'s parser actions.

	E-mail: Dave Bocking <bocking@cs.usask.ca>?

	(29 Nov 1988)

ATX

	<hardware> An {open} {PC} {motherboard} specification by
	{Intel}.

	ATX is a development of the {Baby AT} specification with the
	motherboard rotated 90 degrees in the chassis.  The {CPU} and
	{SIMM} sockets have been relocated away from the {expansion
	card} slots meaning that all the slots support full-length
	cards.  More {I/O} functions are integrated on the
	motherboard.  As the longer edge of the board is now at the
	back of the chassis, there is more space for connectors; also,
	the I/O opening on the back panel of the chassis has been
	defined as double the previous height, allowing vendors to add
	extra on-board I/O functions over and above the standard.

	Most {Pentium Pro} boards use this {form factor}.

	As well as the motherboard size, layout, and placement, the
	ATX specification also includes requirements for power supply
	and fan specification and location.

	The full size ATX board measures 305mm wide by 244mm deep.
	There is also a Mini-ATX form factor, 284mm by 208mm.

	{Intel Home
	(http://developer.intel.com/design/motherbd/atx.htm)}.
	{Teleport Home (http://www.teleport.com/~atx/)}.

	(10 Dec 1996)

au

	1. <networking> The two character {country code} for Australia
	used in {Internet} {domain names}.

	2. <filename extension> {audio}.

	(15 Feb 1995)

aubergine

	A secret term used to refer to computers in the presence of
	computerphobic third parties.

	(24 Jan 1995)

audio

	<file format> Sound.  Computers (and audio compact discs and
	digital audio tape) handle sound by storing a sequence of
	discrete samples.  The continuous sound waveform from the
	original source is sampled tens of thousands of times a
	second.  Each sample represents the intensity of the sound
	pressure wave at that instant.  Apart from the sampling
	frequency, the other parameter is the digital encoding of each
	sample including the number of bits used.  The encoding may be
	linear, logarithmic or {mu-law}.

	Sound is one component of {multimedia}.

	{Filename extension}: .au ({Unix}), .snd ({MS-DOS}, {MS
	Windows}).

	See also {Audio IFF}.

	{Usenet} newsgroups: alt.binaries.sounds.*.

	A {FAQ} on audio file formats is available.  {Part 1
	(ftp://ftp.cwi.nl/pub/audio/AudioFormats.part1)}, {Part 2
	(ftp://ftp.cwi.nl/pub/audio/AudioFormats.part2)}.

audiographics

	{Audiographic Teleconferencing}

audiographic teleconferencing

	<communications> (Or "electronic whiteboarding", "screen
	sharing") A form of {teleconferencing} in {real time} using
	both an {audio} and a data connection.  The computer screen is
	shared by more than one site, and used as an electronic
	blackboard, overhead projector or still video projector.  Some
	systems allow for sharing software also.

	(06 Oct 1995)

Audio IFF

	<file format> (AIFF) A format developed by {Apple Computer}
	Inc. for storing high-quality sampled {audio} and musical
	instrument information.  It is also used by {SGI} and several
	professional audio packages.

	(10 Oct 1994)

AudioOne

	<tool> Digital recording and editing software developed by
	{BizTrack Software Development} for the dance, music, and
	audio industries.  AudioOne includes a waveform recorder that
	allows signal manipulation, editing, and recording.

	(28 Sep 1996)

Audio Processing Technology

	<company> (APT) A company that produces {codecs} based on
	{predictive analysis} rather than {frequency coding}.

	(15 Jan 1996)

Audio Video Interleave

	<multimedia> (AVI) An {audio}-{video} {standard} designed by
	{Microsoft}.  Apparently proprietary and {Microsoft
	Windows}-specific.

	{(http://www2.echo.lu/oii/en/video.html#AVI)}.

	[Details?]

	(08 Sep 1996)

Augumented Backus-Naur Form

	<language> An extension of {Backus-Naur Form} documented in
	{RFC 2234}.

	[Summary?]

	(23 Nov 1997)

AUI

	1. <tool, product> {Adaptable User Interface}.

	2. <networking> {Attachment Unit Interface}.

	(08 Dec 1996)

A'UM

	<language> A {stream}-based, {concurrent}, {logic},
	{object-oriented} language by K. Yoshida and T. Chikayama
	<chik@icot.or.jp>, built on top of {KL1}.

	["A'UM - A Stream-based Concurrent Logic Object-Oriented
	Language", K.  Yoshida et al, Proc 3rd Intl Conf Fifth Gen
	Comp Sys, Springer 1988, pp. 638-649].

	(08 Dec 1996)

AUP

	{acceptable use policy}

Aurora

	["The Aurora Or-Parallel Prolog System", E. Lusk et al, Proc
	3rd Intl Conf on Fifth Generation Comp Systems, pp. 819-830,
	ICOT, A-W 1988].

Austin Kyoto Common Lisp

	<language> (AKCL) A collection of ports, bug fixes, and
	performance improvements to {KCL} by William Schelter
	<wfs@cli.com>, <wfs@math.utexas.edu>, University of Texas.

	Version 1-615 includes ports to {Decstation} 3100,
	{HP9000}/300, {i386}/{Sys V}, {IBM-PS2}/{AIX}, {IBM-RT}/{AIX},
	{SGI}, {Sun-3}/{Sunos} 3 or 4, {Sun-4}, {Sequent Symmetry},
	{IBM370}/{AIX}, {VAX}/{BSD VAX}/{Ultrix}, {NeXT}.

	{(ftp://rascal.ics.utexas.edu/pub/akcl-1-609.tar.Z)}

	(29 Apr 1992)

authentication

	The verification of the identity of a person or process.  In a
	communication system, authentication verifies that messages
	really come from their stated source, like the signature on a
	(paper) letter.

authoring

	<hypertext> Creating a {hypertext} or {hypermedia} document.

	(07 Nov 1994)

autobaud

	{automatic baud rate detection}

autobogotiphobia

	/aw'toh-boh-got`*-foh'bee-*/  See {bogotify}.

AutoCAD

	A {CAD} {software} package for mechanical engineering marketed
	by {Autodesk, Inc.}

	(09 Nov 1994)

Autocode

	1. The name given to the {assembly language} accepted by
	{AUTOCODER}.

	2. A generic term for symbolic {assembly language}.  Versions
	of Autocode were developed for {Ferranti} {Atlas}, {Titan},
	{Mercury} and {Pegasus} and {IBM 702} and {IBM 705}.

AUTOCODER

	Possibly the first primitive {compiler}.  It was written by
	Alick E. Glennie in 1952.  It translated symbolic statements
	into {machine language} for the {Manchester Mark I} computer.

	Autocoding later came to be a generic term for {assembly
	language} programming.

	(07 Nov 1994)

Autodesk, Inc.

	The distributors of the {AutoCAD} {CAD} package.

	Address: Sausalito, CA, USA.

	(09 Nov 1994)

AUTOEXEC.BAT

	<operating system> The {batch file} containing commands,
	loaded by {MS-DOS} after running {CONFIG.SYS}.  AUTOEXEC.BAT
	contains normal DOS commands and can be used for additional
	system configuration such as setting paths and variables,
	configuring network connections and running {application
	program}s.

	(18 Mar 1995)

AUTOGRAF

	A system for describing {bar chart}s.

	["User's Manual for AUTOGRAF", Cambridge Computer Assoc (Dec
	1972)].

AUTOGRP

	AUTOmated GRouPing system.  An interactive statistical
	analysis system, an extension of {CML}.

	["AUTOGRP: An Interactive Computer System for the Analysis of
	Health Care Data", R.E. Mills et al, Medical Care 14(7) (Jul
	1976)].

	(07 Nov 1994)

Auto Idle

	A facility provided by some {Intel} {clock doubled}
	{microprocessor}s where the internal clock can be slowed to
	the external {clock rate} while the processor is waiting for
	data from memory, returning to full speed as soon as the data
	arrives.

	See also {System Management Mode}.

	(09 Nov 1994)

Autolisp

	A dialect of {Lisp} used by the {Autocad} {CAD} package from
	{Autodesk}.

	(09 Nov 1994)

autoloader

	{stack loader}

automagically

	/aw-toh-maj'i-klee/ or /aw-toh-maj'i-k*l-ee/ Automatically,
	but in a way that, for some reason (typically because it is
	too complicated, or too ugly, or perhaps even too trivial),
	the speaker doesn't feel like explaining to you.  See {magic}.
	"The C-INTERCAL compiler generates C, then automagically
	invokes {cc} to produce an executable."

automata

	{automaton}

automata theory

	{automaton}

Automated Engineering Design

	<language> (AED) (Or "ALGOL Extended for Design") A systems
	language for the {IBM 7090} and {IBM 360} developed at {MIT}
	System Laboratory ca. 1965 by a team led by Douglas T. Ross
	(now at {Softech}).  AED is an extension of {ALGOL 60} with
	{record}s ("plexes"), pointers, and {dynamic allocation}.
	{DYNAMO II} was written in AED, as was the first {BCPL}
	{compiler}.

	Versions: AED-0, AED-1, AED-JR.

	["The Automated Engineering Design (AED) Approach to
	Generalized Computer-Aided Design", D.T. Ross, Proc ACM 22nd
	Natl Conf, 1967].

	[Sammet 1969 and 1978].

	(26 Mar 1995)

Automated Retroactive Minimal Moderation

	<messaging> (ARMM) A {Usenet} robot created by Dick Depew of
	Munroe Falls, Ohio.  ARMM was intended to automatically cancel
	posts from anonymous-posting sites.  Unfortunately, the
	robot's recogniser for anonymous postings triggered on its own
	automatically-generated control messages!  Transformed by this
	stroke of programming ineptitude into a monster of
	Frankensteinian proportions, it broke loose on the night of
	March 31, 1993 and proceeded to {spam} {news:news.admin.policy}
	with a recursive explosion of over 200 messages.

	ARMM's bug produced a recursive {cascade} of messages each of
	which mechanically added text to the ID and Subject and some
	other headers of its parent.  This produced a flood of
	messages in which each header took up several screens and each
	message ID and subject line got longer and longer and longer.

	Reactions varied from amusement to outrage.  The pathological
	messages crashed at least one mail system, and upset people
	paying line charges for their {Usenet} feeds.  One poster
	described the ARMM debacle as "instant {Usenet} history" (also
	establishing the term {despew}), and it has since been widely
	cited as a cautionary example of the havoc the combination of
	good intentions and incompetence can wreak on a network.

	Compare {Great Worm}; {sorcerer's apprentice mode}.  See also
	{software laser}, {network meltdown}.

	(08 Jan 1996)

automated testing

	<programming> Software testing assisted with software tools
	that require no operator input, analysis, or evaluation.

	(10 May 1996)

AUTOMATH

	Eindhoven, Netherlands.  A very high level language for
	writing proofs.  "The Mathematical Language AUTOMATH, Its
	Usage and Some of its Extensions", N.G. deBruijn, in Symp on
	Automatic Demonstration, LNM 125, Springer 1970.

Automatically Programmed Tools

	<language> (APT) A language for numerically controlled machine
	tools.

	Versions: APT II (IBM 704, 1958), APT III (IBM 7090, 1961).

	["APT Part Programming", McGraw-Hill].

	[Sammet 1969, p. 605].

	(04 May 1995)

automatic baud rate detection

	(ABR, autobaud) A process by which a receiving device
	determines the speed, code level, and stop bits of incoming
	data by examining the first character, usually a preselected
	sign-on character.  ABR allows the receiving device to accept
	data from a variety of transmitting devices operating at
	different speeds without needing to establish data rates in
	advance.

	(18 Jun 1996)

automatic hyphenation

	<text> A feature of some {word processors} which can insert
	hyphens into words which would otherwise extend beyond the
	right hand margin of the page.

	More advanced word processors may have options to control the
	position of the hyphen, to restrict certain words from being
	hyphenated, and to allow custom dictionaries of hyphenation
	points to be built up.

	(02 Aug 1996)

Automatic Mathematical TRANslation

	<mathematics, tool> (AMTRAN) A system developed by NASA
	Huntsville in 1966 for {IBM 1620}, based on the {Culler-Fried}
	System.  It required a special terminal.

	["AMTRAN: An Interactive Computing System", J. Reinfelds, Proc
	FJCC 37:537- 542, AFIPS (Fall 1970)].

	(14 Nov 1995)

Automatic Network Routing

	<protocol> (ANR) A {source routing protocol} used to route
	{LU6.2} session and control traffic from {node} to node
	through a {High Performance Routing} network or {subnet}.  ANR
	operates at the lower end of the {SNA} {Path Control layer}.

	[Relationship to {OS/390}?]

	(08 May 1997)

Automatic Number Identification

	<communications> (ANI) A service that tells the recipient of a
	telephone call the telephone number of the person making the
	call.  This number can be passed to computer equipment to
	automatically retrieve associated information about the caller,
	i.e. account status, billing records, etc.

	See {CTI}.

	(08 Dec 1996)

Automatic Repeat Request

	<communications> (ARQ) A {modem} error control {protocol} in
	which the receiver asks the transmitter to resend corrupted
	data.

	(14 Nov 1995)

Automatic Send Receive

	<hardware> (ASR) Part of a designation for a hard-copy
	{terminal}, manufactured by {Teletype Corporation}, which
	could be commanded remotely to send the contents of its {paper
	tape} reader.  The ASR-33 was the most common {minicomputer}
	terminal in the early 1970s.

	(23 Nov 1995)

Automatic Sequence Controlled Calculator

	{Mark 1}

automation

	Automatic, as opposed to human, operation or control of a
	process, equipment or a system; or the techniques and
	equipment used to achieve this.  Most often applied to
	computer (or at least electronic) control of a manufacturing
	process.

	See also {design automation}, {office automation},
	{manularity}, {Manufacturing Automation Protocol}, {PEARL},
	{QBE}.

	(21 Oct 1994)

Automatische Rechenplanfertigung

	A programming language published in 1952 by Heinz Rutishauser
	(1918-70).

automaton

	<robotics, mathematics, algorithm> (Plural automata) A
	machine, {robot}, or formal system designed to follow a
	precise sequence of instructions.

	Automata theory, the invention and study of automata, includes
	the study of the capabilities and limitations of computing
	processes, the manner in which systems receive input, process
	it, and produce output, and the relationships between
	behavioural theories and the operation and use of automated
	devices.

	See also {cellular automaton}, {finite state machine}.

	(23 Apr 1996)

Automatrix, Inc.

	<company> The company which produced {CAM-PC}.

	Address: Ballston Spa, NY, USA.

	{Home (http://www.automatrix.com/)}

	(21 Apr 1995)

Autonomous System

	(AS) A collection of {router}s under a single administrative
	authority using a common {Interior Gateway Protocol} for
	routing packets.

Autonomous System Number

	(ASN) Used for {routing} on {Internet}.  See {Autonomous
	System}.

Autopass

	["Autopass: An Automatic Programming System for
	Computer-Controlled Mechanical Assembly", L.I. Lieberman et
	al, IBM J Res Dev 21(4):321-333 (1979)].

autoprojector

	A self-applicable {partial evaluator}.

AUTO-PROMPT

	Numerical control language from IBM for 3d milling.

	[Sammet 1969, p.606].

Autostat

	["Autostat: A Language for Statistical Programming",
	A.S. Douglas et al, Computer J 3:61 (1960)].

autostereogram

	{SIRDS}

A/UX

	<operating system> (Apple's UniX) {Apple}'s version of {Unix}
	for {Macintosh} computers.  A/UX merges the {Macintosh Finder}
	({GUI}) with a Unix core, offering functions from both
	systems.  It will run on some late-model {Motorola 68000}
	Macs, but not on {Power Macintoshes}.

	A/UX is based on {AT&T} Unix {System V}.2.2 with numerous
	extensions from V.3, V.4 and {BSD} 4.2/4.3.  It also provides
	full {POSIX} compliance.

	A/UX 3.x.x incorporates {System 7} for the Macintosh, thus
	supporting the vast majority of Macintosh {applications}.
	System 7 and Unix are fully integrated under A/UX 3.x.x with
	the Unix file system being seen as a disk drive by the Finder.

	{jagubox's A/UX Home Page
	(http://jagubox.gsfc.nasa.gov/aux/Info/FAQ.auxl)}.

	(13 Dec 1997)

auxiliary storage

	<storage> An obsolete term for a {hard disk} {drive}.

	(14 Apr 1997)

av

	{avatar}

Avalon/C++

	1986.  Fault-tolerant distributed systems, influenced by
	{Argus}.  A concurrent extension of {C++} with servers and
	transactions.  "Camelot and Avalon: A Distributed Transaction
	Facility", J.L. Eppinger et al, Morgan Kaufmann 1990.

Avalon/Common LISP

	Prototype only.  "Reliable Distributed Computing with
	Avalon/Common LISP", S.M. Clamen et al, CMU-CS-89-186 and Proc
	Intl Conf on Computer Languages, Mar 1990.

avatar

	1. <chat, virtual reality> An {image} representing a user in a
	multi-user {virtual reality} (or VR-like, in the case of
	{Palace}) space.

	2. (CMU, Tektronix) {root}, {superuser}.  There are quite a
	few {Unix} computers on which the name of the superuser
	account is "avatar" rather than "root".  This quirk was
	originated by a {CMU} hacker who disliked the term
	"superuser", and was propagated through an ex-CMU hacker at
	{Tektronix}.

	(14 Sep 1997)

average seek time

	<storage> The mean time it takes to move the head of a {disk
	drive} from one {track} to another, averaged over the source
	and destination cylinders.

	The average seek time gives a good measure of the speed of the
	drive in a multi-user environment where successive read/write
	request are largely uncorrelated.

	Ten ms is common for a {hard disk} and 200 ms for an
	eight-speed {CD-ROM}.

	(22 Jul 1997)

AVI

	{Audio Video Interleave}

Avon

	A {dataflow} language.

	["AVON: A Dataflow Language", A. Deb, ICS 87, Second Intl Conf
	on Supercomputing, v.3, pp.9-19 (ISI 1987)].

	(28 Nov 1994)

AVS

	{Application Visualisation System}

AWE

	{Advanced WavEffect}

awk

	1. <tool, language> (Named from the authors' initials) An
	interpreted language included with many versions of {Unix} for
	massaging text data developed by Alfred Aho, Peter Weinberger,
	and Brian Kernighan in 1978.  It is characterised by {C}-like
	syntax, declaration-free variables, {associative array}s, and
	field-oriented text processing.

	There is a {GNU} version called {gawk} and other varients
	including {bawk}, {mawk}, {nawk}, {tawk}.  {Perl} was inspired
	in part by awk but is much more powerful.

	{Unix manual page}: awk(1).

	{netlib WWW
	(http://plan9.att.com/netlib/research/index.html)}.  {netlib
	FTP (ftp://netlib.att.com/netlib/research/)}.

	["The AWK Programming Language" A. Aho, B. Kernighan,
	P. Weinberger, A-W 1988].

	2. <jargon> An expression which is awkward to manipulate
	through normal {regexp} facilities, for example, one
	containing a {newline}.

	(06 Oct 1995)

AWT

	{Abstract Windowing Toolkit}

aXe

	<tool> A {text editor} for the {X Window System}.

	[Features?  FTP?]

	(06 Apr 1996)

AXIOM

	A commercially available subset of {Scratchpad}, from {IBM}.

	["Axiom - The Scientific Computing System", R. Jenks et al,
	Springer 1992].

	(21 Feb 1995)

axiom

	<logic> A {well-formed formula} which is taken to be true
	without proof in the construction of a {theory}.

	(31 Mar 1995)

AXIOM*

	A {symbolic mathematics} system.

	{A#} is one component of AXIOM*.

	Version: 2.

	(21 Feb 1995)

Axiomatic Architecture Description Language

	["AADL: A Net-Based Specification Method for Computer
	Architecture Design", W. Damm et al in Languages for Parallel
	Architectures, J.W. deBakker ed, Wiley 1989].

	(07 Feb 1995)

axiomatic semantics

	<theory> A set of assertions about properties of a system and
	how they are effected by program execution.  The axiomatic
	semantics of a program could include pre- and post-conditions
	for operations.  In particular if you view the program as a
	state transformer (or collection of state transformers), the
	axiomatic semantics is a set of invariants on the state which
	the state transformer satisfies.

	E.g. for a function with the type:

		sort_list :: [T] -> [T]

	we might give the precondition that the argument of the
	function is a list, and a postcondition that the return value
	is a list that is sorted.

	One interesting use of axiomatic semantics is to have a
	language that has a {finitely computable} sublanguage that is
	used for specifying pre and post conditions, and then have the
	compiler prove that the program will satisfy those conditions.

	See also {operational semantics}, {denotational semantics}.

	(09 Nov 1995)

axiomatic set theory

	<theory> {Set theory}, if approached naively, leads to all
	sorts of problems, the most famous being {Russell's paradox}.
	For this reason mathematicians do set theory axiomatically:
	that is, there is a {formal language} for talking about sets,
	and a collection of {axioms} describing how they behave, and
	the only legitimate way of drawing conclusions about sets is
	to use the axioms.

	There are many different {axiomatisations} for set theory.
	Each takes a slightly different approach to the problem of
	finding a theory that captures as much as possible of the
	intuitive idea of what a set is, while avoiding the
	{paradoxes} that result from accepting all of it.

	The main source of trouble in naive set theory is the idea
	that you can specify a set by saying whether each object in
	the universe is in the "set" or not.  Accordingly, the most
	important differences between different axiomatisations of set
	theory concern the restrictions they place on this idea (known
	as "comprehension").

	{Zermelo Frnkel set theory}, the most commonly used
	axiomatisation, gets round it by (in effect) saying that you
	can only use this principle to define subsets of existing
	sets.

	NBG (von Neumann-Bernays-Goedel) set theory sort of allows
	comprehension for all {formulae} without restriction, but
	distinguishes between two kinds of set, so that the sets
	produced by applying comprehension are only second-class sets.
	NBG is exactly as powerful as ZF, in the sense that any
	statement that can be formalised in both theories is a theorem
	of ZF if and only if it is a theorem of ZFC.

	MK (Morse-Kelley) set theory is a strengthened version of NBG,
	with a simpler axiom system.  It is strictly stronger than
	NBG, and it is possible that NBG might be consistent but MK
	inconsistent.

	{NF (http://math.idbsu.edu/faculty/holmes/nf.html)} ("New
	Foundations"), a theory developed by Willard Van Orman Quine,
	places a very different restriction on comprehension: it only
	works when the formula describing the membership condition for
	your putative set is "stratified", which means that it could
	be made to make sense if you worked in a system where every
	set had a level attached to it, so that a level-n set could
	only be a member of sets of level n+1.  (This doesn't mean
	that there are actually levels attached to sets in NF).  NF is
	very different from ZF; for instance, in NF the universe is a
	set (which it isn't in ZF, because the whole point of ZF is
	that it forbids sets that are "too large"), and it can be
	proved that the {Axiom of Choice} is false in NF!

	ML ("Modern Logic") is to NF as NBG is to ZF.  (Its name
	derives from the title of the book in which Quine introduced
	an early, defective, form of it).  It is stronger than ZF (it
	can prove things that ZF can't), but if NF is consistent then
	ML is too.

	(11 May 1997)

Axiom of Choice

	<mathematics> (AC, or "Choice") An {axiom} of {set theory}:

	If X is a set, and S is the union of all the elements of X,
	then there exists a function f:X -> S such that for all
	non-empty x in X, f(x) is an element of x.

	In other words, we can always choose an element from each set
	in a set of sets, simultaneously.

	Function f is a "choice function" for X - for each x in X, it
	chooses an element of x.

	Most people's reaction to AC is: "But of course that's true!
	From each set, just take the element that's biggest,
	stupidest, closest to the North Pole, or whatever".  Indeed,
	for any {finite} set of sets, we can simply consider each set
	in turn and pick an arbitrary element in some such way.  We
	can also construct a choice function for most simple {infinite
	set}s of sets if they are generated in some regular way.
	However, there are some infinite sets for which the
	construction or specification of such a choice function would
	never end because we would have to consider an infinite number
	of separate cases.

	For example, if we express the {real number} line R as the
	union of many "copies" of the {rational number}s, Q, namely Q,
	Q+a, Q+b, and infinitely (in fact uncountably) many more,
	where a, b, etc. are {irrational number}s no two of which
	differ by a rational, and

	  Q+a == {q+a : q in Q}

	we cannot pick an element of each of these "copies" without
	AC.

	An example of the use of AC is the theorem which states that
	the {countable} union of countable sets is countable.  I.e. if
	X is countable and every element of X is countable (including
	the possibility that they're finite), then the sumset of X is
	countable.  This requires AC to be true in general.

	Even if one accepts the axiom, it doesn't tell you how to
	construct a choice function, only that one exists.  Most
	mathematicians are quite happy to use AC if they need it, but
	those who are careful will, at least, draw attention to the
	fact that they have used it.  There is something a little odd
	about Choice, and it has some alarming consequences, so
	results which actually "need" it are somehow a bit suspicious,
	e.g. the {Banach-Tarski paradox}.  On the other side, consider
	{Russell's Attic}.

	AC is not a {theorem} of {Zermelo Frnkel set theory} (ZF).
	Gdel and Paul Cohen proved that AC is independent of ZF,
	i.e. if ZF is consistent, then so are ZFC (ZF with AC) and
	ZF(~C) (ZF with the negation of AC).  This means that we
	cannot use ZF to prove or disprove AC.

	(12 Apr 1995)

Axiom of Comprehension

	<mathematics> An {axiom schema} of {set theory} which states:
	if P(x) is a {property} then

		{x : P}

	is a set.  I.e. all the things with some property form a set.

	Acceptance of this axiom leads to {Russell's Paradox} which is
	why {Zermelo set theory} replaces it with a restricted form.

	(31 Mar 1995)

AXLE

	An early string processing language.  Program consists of an
	assertion table which specifies patterns, and an imperative
	table which specifies replacements.  "AXLE: An Axiomatic
	Language for String Transformations", K. Cohen et al, CACM
	8(11):657-661 (Nov 1965).

ayacc

	A {Yacc}-like {parser generator} from the {Irvine Research
	Unit in Software} written in {Ada} that produce {Ada} output.
	Comes with {aflex}.

	Version 1.2a.

	{(ftp://liege.ics.uci.edu/pub/irus/aflex-ayacc_1.2a.tar.Z)}

	Mailing list: <irus-software-request@ics.uci.edu>.

	(06 Jan 1993)

AYT

	<chat> Are you there?

	(09 Mar 1996)

AZERTY

	{QWERTY}

B

	1. {byte}.

	2. <language> A systems language written by {Ken Thompson} in
	1970 mostly for his own use under {Unix} on the {PDP-11}.  B
	was later improved by Kerninghan(?) and Ritchie to produce
	{C}.  B was used as the systems language on {Honeywell}'s
	{GCOS-3}.

	B was, according to Ken, greatly influenced by {BCPL}, but the
	name B had nothing to do with BCPL.  B was in fact a revision
	of an earlier language, {bon}, named after Ken Thompson's
	wife, Bonnie.

	["The Programming Language B", S.C. Johnson & B.W. Kernighan,
	CS TR 8, Bell Labs (Jan 1973)].

	[Features?  Differences from C?]

	(02 Feb 1997)

	3. <language> A simple interactive programming language by
	Lambert Meertens and Steven Pemberton.  B was the predecessor
	of {ABC}.

	{(ftp://ftp.uni-kl.de/pub/languages/B.tar.Z)}

	["Draft Proposal for the B Language", Lambert Meertens, CWI,
	Amsterdam, 1981].

	4. <language, specification> A specification language by
	Jean-Raymond Abrial of {B Core UK}, Magdalen Centre, Oxford
	Science Park, Oxford OX4 4GA.  B is related to {Z} and
	supports development of {C} code from specifications.  B has
	been used in major {safety-critical system} specifications in
	Europe, and is currently attracting increasing interest in
	industry.  It has robust, commercially available tool support
	for specification, design, proof and code generation.

	E-mail: <Ib.Sorensen@comlab.ox.ac.uk>.

	(24 Apr 1995)

b

	{bit} or maybe {byte} (B).

	(03 Nov 1996)

B-0

	<language> The original name of {FLOW-MATIC} from {Remington
	Rand}.  B-0 was used on the {UNIVAC} I or II about 1958.

	(09 Jan 1997)

B1FF

	{BIFF}

B1 security

	{Orange Book}

B2 security

	{Orange Book}

B3 security

	{Orange Book}

b4

	<chat> before.

Babbage

	The structured {assembly language} for the {General Electric
	Company} 4xxx range of computers and their {OS4000} {operating
	system}.  It is strictly an assembler in that the generated
	code is relatively predictable but it can be written in a
	sufficiently structured manner, with indentation, control
	statements, function and procedure calls, to make the
	resultant source easy to read and manage.  Even with this
	visible structure however, it is important to remember that
	the assembly of the statement is done left to right.

	The British {videotext} system, {Prestel} is programmed in
	Babbage.

	[1980's article in Datamation].

Babbage, Charles

	{Charles Babbage}

babbling error

	An {Ethernet} node attempting to transmit more than 1518 data
	bytes.

	[What's significant about 1518?]

BABEL

	1. A subset of {ALGOL 60}, with many {ALGOL W} extensions.

	["BABEL, A New Programming Language", R.S. Scowen, Natl Phys
	Lab UK, Report CCU7, 1969].

	2. Mentioned in The Psychology of Computer Programming,
	G.M. Weinberg, Van Nostrand 1971, p.241.

	3. A language based on {higher-order function}s and
	{first-order logic}.

	["Graph-Based Implementation of a Functional Logic Language",
	H. Kuchen et al, Proc ESOP 90, LNCS 432, Springer 1990,
	pp.271-290].

	["Logic Programming with Functions and Predicates: The
	Language BABEL", Moreno-Navarro et al, J Logic Prog 12(3) (Feb
	1992)].

	(28 Nov 1994)

BABT

	{British Approval Boards for Telecommunications}

Baby AT

	<hardware> The redesigned {AT} motherboard that had the same
	size as the {XT} motherboard had (8.5" x 11") and could thus
	fit into an XT case.  The original 12" x 13" AT motherboards
	are now largely forgotten.

	Compare {ATX}.

	(20 Feb 1997)

BABYLON

	A development environment for {expert system}s.  It includes
	{frame}s, {constraint}s, a {prolog}-like logic formalism, and
	a description language for diagnostic applications.  It
	requires {Common Lisp}.

	{(ftp://ftp.gmd.de/gmd/ai-research/Software/)}

	(08 Feb 1995)

BACAIC

	Boeing Airplane Company Algebraic Interpreter Coding system.

	A pre-{FORTRAN} system on the {IBM 701} and {IBM 650}.

	(08 Feb 1995)

Bachman

	A proposed a style of {Entity-Relationship model} which
	differs from Chen's.

	(08 Feb 1995)

Bachman Information Systems

	<company> The company which merged with {CADRE} to form
	{Cayenne Software} in July 1996.

	(06 Feb 1998)

Backbone

	The top level in a hierarchical network.  Stub and transit
	networks which connect to the same backbone are guaranteed to
	be interconnected.

backbone cabal

	<networking> A group of large-site administrators who pushed
	through the {Great Renaming} and reined in the chaos of
	{Usenet} during most of the 1980s.  The cabal {mailing list}
	disbanded in late 1988 after a bitter internal cat-fight.

	(28 Nov 1994)

backbone site

	A key {Usenet}, {electronic mail} and/or {Internet} site; one
	that processes a large amount of third-party traffic,
	especially if it is the home site of any of the regional
	coordinators for the {Usenet} maps.  Notable backbone sites as
	of early 1993 include {uunet} and the mail machines at
	{Rutgers University}, UC Berkeley, {DEC}'s Western Research
	Laboratories, {Ohio State University} and the {University of
	Texas}.

	Compare {rib site}, {leaf site}.

	(28 Nov 1994)

back door

	<security> (Or "{trap door}", "{wormhole}").  A hole in the
	security of a system deliberately left in place by designers
	or maintainers.  The motivation for such holes is not always
	sinister; some {operating system}s, for example, come out of
	the box with privileged accounts intended for use by field
	service technicians or the vendor's maintenance programmers.
	See also {iron box}, {cracker}, {worm}, {logic bomb}.

	Historically, back doors have often lurked in systems longer
	than anyone expected or planned, and a few have become widely
	known.  The infamous {RTM} worm of late 1988, for example,
	used a back door in the {BSD} Unix "sendmail(8)" utility.

	{Ken Thompson}'s 1983 Turing Award lecture to the {ACM}
	revealed the existence of a back door in early {Unix} versions
	that may have qualified as the most fiendishly clever security
	hack of all time.  The C compiler contained code that would
	recognise when the "login" command was being recompiled and
	insert some code recognizing a password chosen by Thompson,
	giving him entry to the system whether or not an account had
	been created for him.

	Normally such a back door could be removed by removing it from
	the source code for the compiler and recompiling the compiler.
	But to recompile the compiler, you have to *use* the compiler
	- so Thompson also arranged that the compiler would *recognise
	when it was compiling a version of itself*, and insert into
	the recompiled compiler the code to insert into the recompiled
	"login" the code to allow Thompson entry - and, of course, the
	code to recognise itself and do the whole thing again the next
	time around!  And having done this once, he was then able to
	recompile the compiler from the original sources; the hack
	perpetuated itself invisibly, leaving the back door in place
	and active but with no trace in the sources.

	The talk that revealed this truly moby hack was published as
	["Reflections on Trusting Trust", "Communications of the ACM
	27", 8 (August 1984), pp. 761--763].

	(25 Apr 1995)

back-end

	<programming> Any software performing either the final stage
	in a process, or a task not apparent to the user.  A common
	usage is in a {compiler}.  A compiler's back-end generates
	{machine language} and performs optimisations specific to the
	machine's {architecture}.

	The term can also be used in the context of {network}
	applications.  E.g. "The back-end of the system handles
	{socket} protocols".

	Contrast {front end}.

	(09 Apr 1996)

Back End Generator

	<tool> (BEG) A {code generator}.  Its input language is {Back
	End Generator Language} (BEGL).

	{(ftp://gatekeeper.dec.com/pub/gmd/cocktail/beg)}.

	["BEG - A Generator for Efficient Back Ends", H. Emmelmann et
	al, SIGPLAN Notices 24(7):227-237 (Jul 1989)].

	["BEG - A Back End Generator - User Manual", H. Emmelmann
	<emmel@karlsruhe.gmd.dbp.de>, GMD, U Karlsruhe 1990].

	[Summary?]

	(14 Dec 1994)

Back End Generator Language

	{Back End Generator}

backgammon

	See {bignum}, {moby}, {pseudoprime}.

background

	1. <operating system> A task running in the background (a
	background task) is detached from the terminal where it was
	started (and often running at a lower priority); opposite of
	{foreground}.  This means that the task's input and output
	must be from/to files (or other processes).

	Nowadays this term is primarily associated with {Unix}, but it
	appears to have been first used in this sense on {OS/360}.

	Compare {amp off}, {batch}, {slopsucker}.

	2. <jargon> For a human to do a task "in the background" is to
	do it whenever {foreground} matters are not claiming your
	undivided attention, and "to background" something means to
	relegate it to a lower priority.  "For now, we'll just print a
	list of nodes and links; I'm working on the graph-printing
	problem in the background."  Note that this implies ongoing
	activity but at a reduced level or in spare time, in contrast
	to mainstream "back burner" (which connotes benign neglect
	until some future resumption of activity).  Some people prefer
	to use the term for processing that they have queued up for
	their unconscious minds (often a fruitful tack to take upon
	encountering an obstacle in creative work).

	(28 May 1996)

backing store

	<text> Character storage in memory or on disk, as opposed to
	displayed or printed characters.  This distinction is
	important where the visual ordering of characters differs from
	the order in which they are stored, e.g. bidirectional or
	non-spacing layout.

	In a {Unicode} encoding, text is stored in sequential order in
	the backing store.  Logical or backing store order corresponds
	to the order in which text is typed on the keyboard (after
	corrections such as insertions, deletions, and overtyping).  A
	text rendering process converts Unicode text in the backing
	store to readable text.

	["The Unicode Standard: Worldwide Character Encoding", Version
	1.0, Vol. 1. Addison-Wesley, 1991].

	(28 May 1996)

back link

	<hypertext> A {link} in one direction implied by the existence
	of an explicit link in the other direction.

	(28 May 1996)

backoff

	<networking> A {host} which has experienced a {collision} on a
	{network} waits for a amount of time before attempting to
	retransmit.  A random backoff minimises the probability that
	the same nodes will collide again, even if they are using the
	same backoff algorithm.  Increasing the backoff period after
	each collision also helps to prevent repeated collisions,
	especially when the network is heavily loaded.

	An example algorithm is {binary exponential backoff}.

	(28 May 1996)

back-propagation

	(Or "backpropagation") A learning {algorithm} for modifying a
	{feed-forward} {neural network} which minimises a continuous
	"{error function}" or "{objective function}."
	Back-propagation is a "{gradient descent}" method of training
	in that it uses gradient information to modify the network
	weights to decrease the value of the error function on
	subsequent tests of the inputs.  Other gradient-based methods
	from {numerical analysis} can be used to train networks more
	efficiently.

	Back-propagation makes use of a mathematical trick when the
	network is simulated on a digital computer, yielding in just
	two traversals of the network (once forward, and once back)
	both the difference between the desired and actual output, and
	the derivatives of this difference with respect to the
	connection weights.

back quote

	<character> "`" {ASCII} code 96.  Common names: left quote;
	left single quote; open quote; {ITU-T}: grave accent; grave.
	Rare: backprime; {INTERCAL}: backspark; unapostrophe; birk;
	blugle; back tick; back glitch; push; {ITU-T}: opening single
	quotation mark; quasiquote.

	Back quote is used in {Unix} shells to invoke {command
	substitution}.

	(26 Nov 1996)

backslash

	<character> "\" {ASCII} code 92.  Common names: escape (from
	C/Unix); reverse slash; slosh; backslant; backwhack.  Rare:
	bash; {ITU-T}: reverse slant; reversed virgule; {INTERCAL}:
	backslat.

	(17 Nov 1995)

backtick

	{back quote}

backtracking

	<algorithm> A scheme for solving a series of sub-problems each
	of which may have multiple possible solutions and where the
	solution chosen for one sub-problem may affect the possible
	solutions of later sub-problems.

	To solve the overall problem, we find a solution to the first
	sub-problem and then attempt to recursively solve the other
	sub-problems based on this first solution.  If we cannot, or
	we want all possible solutions, we backtrack and try the next
	possible solution to the first sub-problem and so on.
	Backtracking terminates when there are no more solutions to
	the first sub-problem.

	This is the algorithm used by {logic programming} languages
	such as {Prolog} to find all possible ways of proving a
	{goal}.  An optimisation known as "{intelligent backtracking}"
	keeps track of the dependencies between sub-problems and only
	re-solves those which depend on an earlier solution which has
	changed.

	Backtracking is one {algorithm} which can be used to implement
	{nondeterminism}.  It is effectively a {depth-first search} of
	a {problem space}.

	(13 Apr 1995)

backup

	<operating system> A spare copy of a file, file system or other
	resource for use in the event of failure or loss of the
	original.

	The term is most commonly used to refer to a copy of all the
	files on a computer's disks which is made periodically and
	kept on {magnetic tape} or other removable medium (also called
	a "{dump}").

	This essential precaution is often neglected by new computer
	users until the first time they experience a {disk crash} or
	accidentally delete the only copy of the file they have been
	working on for the last six months.  It is estimated that only
	5% of {personal computer} owners regularly backup their
	systems, which is a truly frightening statistic.

	Ideally the backup copies should be kept at a different site
	or in a fire safe since, though your hardware may be insured
	against fire, the data on it is almost certainly neither
	insured nor easily replaced.

	See also {incremental backup}.

	(03 Feb 1996)

Backus-Naur Form

	<language> (BNF, originally "Backus Normal Form") A formal
	{meta-syntax} used to express context-free grammars.  Backus
	Normal Form was renamed Backus-Naur Form at the suggestion of
	{Donald Knuth}.

	BNF is one of the most commonly used metasyntactic notations
	for specifying the {syntax} of programming languages, command
	sets, and the like.  It is widely used for language
	descriptions but seldom documented anywhere (how do you
	document a metasyntax?), so that it must usually be learned by
	osmosis (but see {RFC 2234}).

	Consider this BNF for a US postal address:

	 <postal-address> ::= <name-part> <street-address> <zip-part>

	 <personal-part> ::= <name> | <initial> "."

	 <name-part> ::= <personal-part> <last-name> [<jr-part>] <EOL>
		       | <personal-part> <name-part>

	 <street-address> ::= [<apt>] <house-num> <street-name> <EOL>

	 <zip-part> ::= <town-name> "," <state-code> <ZIP-code> <EOL>

	This translates into English as: "A postal-address consists of
	a name-part, followed by a street-address part, followed by a
	zip-code part.  A personal-part consists of either a first
	name or an initial followed by a dot.  A name-part consists of
	either: a personal-part followed by a last name followed by an
	optional "jr-part" (Jr., Sr., or dynastic number) and
	end-of-line, or a personal part followed by a name part (this
	rule illustrates the use of recursion in BNFs, covering the
	case of people who use multiple first and middle names and/or
	initials).  A street address consists of an optional apartment
	specifier, followed by a street number, followed by a street
	name.  A zip-part consists of a town-name, followed by a
	comma, followed by a state code, followed by a ZIP-code
	followed by an end-of-line."

	Note that many things (such as the format of a personal-part,
	apartment specifier, or ZIP-code) are left unspecified.  These
	lexical details are presumed to be obvious from context or
	specified somewhere nearby.

	There are many variants and extensions of BNF, possibly
	containing some or all of the {regexp} {wild cards} such as
	"*" or "+".  {EBNF} is a common one.  In fact the example
	above isn't the pure form invented for the {ALGOL 60} report.
	"[]" was introduced a few years later in {IBM}'s {PL/I}
	definition but is now universally recognised.  {ABNF} is
	another extension.

	(23 Nov 1997)

Backus Normal Form

	{Backus-Naur Form}

backward analysis

	<theory> An analysis to determine properties of the inputs of
	a program from properties or context of the outputs.  E.g. if
	the output of this function is needed then this argument is
	needed.

	Compare {forward analysis}.

	(23 Nov 1997)

backward chaining

	<algorithm> An {algorithm} for proving a goal by recursively
	braking it down into sub-goals and trying to prove these until
	facts are reached.  Facts are goals with no sub-goals which
	are therefore always true.  Backward training is the program
	execution mechanism used by most {logic programming} language
	like {Prolog}.

	Opposite: {forward chaining}.

	(14 Jul 1997)

backward combatability

	<humour> /bak'w*d k*m-bat'*-bil'*-tee/ (Play on "{backward
	compatibility}") A property of hardware or software revisions
	in which previous {protocols}, formats, layouts, etc. are
	irrevocably discarded in favour of "new and improved"
	protocols, formats and layouts, leaving the previous ones not
	merely deprecated but actively defeated.  (Too often, the old
	and new versions cannot definitively be distinguished, such
	that lingering instances of the previous ones yield crashes or
	other infelicitous effects, as opposed to a simple "version
	mismatch" message.)  A backwards compatible change, on the
	other hand, allows old versions to coexist without crashes or
	error messages, but too many major changes incorporating
	elaborate backwards compatibility processing can lead to
	extreme {software bloat}.

	See also {flag day}.

	(01 Mar 1997)

backward compatible

	<jargon> A system is backward compatible if it is {compatible}
	with (e.g. can share data with) earlier versions of itself, or
	sometimes other earlier systems, particularly systems it
	intends to supplant.

	For example, {WordPerfect} 6.0 can read WordPerfect 5.1 files,
	so it is backward compatible.  It can be said that {Perl} is
	backward compatible with {awk}, because Perl was (among other
	things) intended to replace awk, and can, with a converter,
	run awk programs.

	See also: {backward combatability}.

	Compare: {forward compatible}.

	(15 Jan 1998)

backwards compatibility

	{backward compatible}

backwards compatible

	{backward compatible}

BAD

	/B-A-D/ [IBM: acronym, "Broken As Designed"] Said of a program
	that is {bogus} because of bad design and misfeatures rather
	than because of bugginess.  See {working as designed}.

Bad command or file name

	<operating system> The error message printed by {MS DOS} when
	it can't find a program or command to execute due to a typing
	error, incorrect PATH variable, or misplaced or missing
	executable.

	(07 Apr 1996)

Bad Thing

	<jargon> (From the 1930 Sellar & Yeatman parody "1066 And All
	That") Something that can't possibly result in improvement of
	the subject.  This term is always capitalised, as in
	"Replacing all of the 9600-baud modems with bicycle couriers
	would be a Bad Thing".

	Opposite: {Good Thing}.

	British correspondents confirm that {Bad Thing} and {Good
	Thing} (and probably therefore {Right Thing} and {Wrong
	Thing}) come from the book referenced in the etymology, which
	discusses rulers who were Good Kings but Bad Things.  This has
	apparently created a mainstream idiom on the British side of
	the pond.

bag on the side

	An extension to an established hack that is supposed to add
	some functionality to the original.  Usually derogatory,
	implying that the original was being overextended and should
	have been thrown away, and the new product is ugly, inelegant,
	or bloated.  Also "to hang a bag on the side [of]".  "C++?
	That's just a bag on the side of C."  "They want me to hang a
	bag on the side of the accounting system."

BAL

	{Basic Assembly Language}

balanced computing

	<jargon> Matching computer tools to job activities so that the
	computer system structure parallels the organisation structure
	and work functions.  Both {personal computers} and employees
	operate in a decentralised environment with monitoring of
	achievement of management objectives from centralised
	corporate systems.

	{(http://www.moultonco.com/balanced.htm)}

	(15 Apr 1996)

balanced tree

	<algorithm> (B-tree) An optimisation of a {binary tree} which
	aims to keep equal numbers of items on each side of each node
	so as to minimise the maximum path from the root to any {leaf
	node}.  As items are inserted and deleted, the B-tree is
	restructured to keep the nodes balanced and the search paths
	uniform.  Such an {algorithm} is appropriate where the
	overheads of the reorganisation on update are outweighed by
	the benefits of faster search.

	A B+-tree (as used by {IBM}'s {VSAM}) is a B-tree where the
	leaves are also linked sequentially, thus allowing both fast
	random access and sequential access to data.

	(15 Apr 1996)

BALGOL

	<language> {ALGOL} on {Burroughs 220}.

	[Sammet 1969, p. 174].

	(15 Apr 1996)

BALITAC

	Early system on IBM 650.  Listed in CACM 2(5):16 (May 1959).

BALM

	Block And List Manipulation.  Harrison, 1970.  Extensible
	language with LISP-like features and ALGOL-like syntax, for
	CDC 6600.  "The Balm Programming Language", Malcolm Harrison,
	Courant Inst (May 1973).

balun

	<electronics> A transformer connected between a balanced
	source or load and an unbalanced source or load.  A balanced
	line has two conductors, with equal currents in opposite
	directions.  The unbalanced line has just one conductor; the
	current in it returns via a common ground or earth path.

	(17 Oct 1996)

bamf

	/bamf/ 1. [Old X-Men comics] Notional sound made by a person
	or object teleporting in or out of the hearer's vicinity.
	Often used in {virtual reality} (especially {MUD}) electronic
	{fora} when a character wishes to make a dramatic entrance or
	exit.

	2. The sound of magical transformation, used in virtual
	reality {fora}.

Banach algebra

	<mathematics> An {algebra} in which the {vector space} is a
	{Banach space}.

	(25 Feb 1997)

Banach-Tarski paradox

	<mathematics> It is possible to cut a solid ball into finitely
	many pieces (actually about half a dozen), and then put the
	pieces together again to get two solid balls, each the same
	size as the original.

	This {paradox} is a consequence of the {Axiom of Choice}.

	(29 Mar 1995)

banana label

	The labels often used on the sides of {macrotape} reels, so
	called because they are shaped roughly like blunt-ended
	bananas.  This term, like macrotapes themselves, is still
	current but visibly headed for obsolescence.

banana problem

	(From the story of the little girl who said "I know how to
	spell "banana", but I don't know when to stop").  Not knowing
	where or when to bring a production to a close (compare
	{fencepost error}).  One may say "there is a banana problem"
	of an algorithm with poorly defined or incorrect termination
	conditions, or in discussing the evolution of a design that
	may be succumbing to featuritis (see also {creeping elegance},
	{creeping featuritis}).  See item 176 under {HAKMEM}, which
	describes a banana problem in a {Dissociated Press}
	implementation.  Also, see {one-banana problem} for a
	superficially similar but unrelated usage.

	(31 Jan 1995)

bandwidth

	<communications> 1. The difference between the highest and
	lowest frequencies of a transmission channel.

	2. The amount of {data} that can be sent through a given
	communications circuit per second.

	3. On {Usenet}, a measure of network capacity that is often
	wasted by people complaining about how items posted by others
	are a waste of bandwidth.

	(28 Nov 1994)

bang

	1. A common spoken name for "!" (ASCII 33), especially when
	used in pronouncing a {bang path} in spoken hackish.  In
	{elder days} this was considered a {CMU}ish usage, with {MIT}
	and {Stanford} hackers preferring {excl} or {shriek}; but the
	spread of {Unix} has carried "bang" with it (especially via
	the term {bang path}) and it is now certainly the most common
	spoken name for "!".  Note that it is used exclusively for
	non-emphatic written "!"; one would not say "Congratulations
	bang" (except possibly for humorous purposes), but if one
	wanted to specify the exact characters "foo!" one would speak
	"Eff oh oh bang".

	See {pling}, {shriek}, {ASCII}.

	2. An exclamation signifying roughly "I have achieved
	enlightenment!", or "The dynamite has cleared out my brain!"
	Often used to acknowledge that one has perpetrated a {thinko}
	immediately after one has been called on it.

	(31 Jan 1995)

bang on

	(Or "pound on").  To stress-test a piece of hardware or
	software: "I banged on the new version of the simulator all
	day yesterday and it didn't crash once.  I guess it is ready
	for release."

bang path

	<communications> An old-style {UUCP} {electronic-mail address}
	naming a sequence of hosts through which a message must pass
	to get from some assumed-reachable location to the addressee
	(a "{source route}").  So called because each {hop} is
	signified by a {bang} sign (exclamation mark).  Thus, for
	example, the path

		...!bigsite!foovax!barbox!me

	directs people to route their mail to computer bigsite
	(presumably a well-known location accessible to everybody) and
	from there through the computer foovax to the account of user
	me on barbox.

	Before {autorouting mailer}s became commonplace, people often
	published compound bang addresses using the { } convention
	(see {glob}) to give paths from *several* big computers, in
	the hope that one's correspondent might be able to get mail to
	one of them reliably. e.g.

		...!{seismo, ut-sally, ihnp4}!rice!beta!gamma!me

	Bang paths of 8 to 10 hops were not uncommon in 1981.
	Late-night dial-up UUCP links would cause week-long
	transmission times.  Bang paths were often selected by both
	transmission time and reliability, as messages would often get
	lost.

	(16 Mar 1995)

banner

	1. The title page added to printouts by most {print spoolers}.
	Typically includes user or account ID information in very
	large character-graphics capitals.  Also called a "burst
	page", because it indicates where to burst (tear apart)
	fanfold paper to separate one user's printout from the next.

	2. A similar printout generated (typically on multiple pages
	of fan-fold paper) from user-specified text, e.g. by a program
	such as {Unix}'s "banner".

	3. On interactive software, a first screen containing a logo
	and/or author credits and/or a {copyright} notice.

	(28 Nov 1994)

Banyan

	<company> A personal computer networking company, best known
	for its "{Vines}" {local area network}ing products.

	Address: Westborough MA, USA.

	(01 Mar 1995)

	[Is it also a network topology?]

BAP

	1. <language> An early system used on the {IBM 701}.

	[Listed in CACM 2(5):16 (May 1959)].

	(28 Nov 1994)

	2. <language> {Brain Aid Prolog}.

	(07 Mar 1995)

bar

	1. <programming, convention> /bar/ The second {metasyntactic
	variable}, after {foo} and before {baz}.  E.g. "Suppose
	function FOO calls functions BAR..."

	2. Often appended to {foo} to produce {foobar}.

	(07 Mar 1995)

bar code

	<convention> A printed horizontal strip of vertical bars of
	varying widths, groups of which represent decimal digits and
	are used for identifying commercial products or parts.  Bar
	codes are read by a bar code reader and the code interpreted
	either through {software} or a {hardware} decoder.

	All products sold in open trade are numbered and bar-coded to
	a worldwide standard, which was introduced in the US in 1973
	and to the rest of the world in 1977.  The Uniform Code
	Council in the US, along with the international article
	numbering authority, EAN International, allocate blocks of
	unique 12 or 13-digit numbers to member companies through a
	national numbering authority.  In Britain this is the Article
	Number Association.  Most companies are allocated 100,000
	numbers that they can use to identify any of their products,
	services or locations.

	Each code typically contains a leading "quiet" zone, start
	character, data character, optional {check digit}, stop
	character and a trailing quiet zone.  The check digit is used
	to verify that the number has been scanned correctly.  The
	quiet zone could be white, red or yellow if viewed by a red
	scanner.  Bar code readers usually use visible red light with
	a wavelength between 632.8 and 680 nanometres.

	[Details of code?]

	(18 Jul 1997)

bare metal

	1. New computer hardware, unadorned with such snares and
	delusions as an {operating system}, an {HLL}, or even
	{assembler}.  Commonly used in the phrase "programming on the
	bare metal", which refers to the arduous work of {bit bashing}
	needed to create these basic tools for a new computer.  Real
	bare-metal programming involves things like building {boot
	PROM}s and {BIOS} chips, implementing basic {monitor}s used to
	test {device driver}s, and writing the assemblers that will be
	used to write the compiler back ends that will give the new
	computer a real development environment.

	2. "Programming on the bare metal" is also used to describe a
	style of {hand-hacking} that relies on bit-level peculiarities
	of a particular hardware design, especially tricks for speed
	and space optimisation that rely on crocks such as overlapping
	instructions (or, as in the famous case described in {The
	Story of Mel}, interleaving of opcodes on a magnetic drum to
	minimise fetch delays due to the device's rotational latency).
	This sort of thing has become less common as the relative
	costs of programming time and computer resources have changed,
	but is still found in heavily constrained environments such as
	industrial embedded systems, and in the code of hackers who
	just can't let go of that low-level control.  See {Real
	Programmer}.

	In the world of personal computing, bare metal programming is
	often considered a {Good Thing}, or at least a necessary evil
	(because these computers have often been sufficiently slow and
	poorly designed to make it necessary; see {ill-behaved}).
	There, the term usually refers to bypassing the BIOS or OS
	interface and writing the application to directly access
	device registers and computer addresses.  "To get 19.2
	kilobaud on the serial port, you need to get down to the bare
	metal."  People who can do this sort of thing well are held in
	high regard.

barf

	/barf/ [mainstream slang for "vomit"] 1.  Term of disgust.
	This is the closest hackish equivalent of the Val\-speak "gag
	me with a spoon". (Like, euwww!)  See {bletch}.

	2. To say "Barf!" or emit some similar expression of disgust.
	"I showed him my latest hack and he barfed" means only that he
	complained about it, not that he literally vomited.

	3. To fail to work because of unacceptable input, perhaps with
	a suitable error message, perhaps not.  Examples: "The
	division operation barfs if you try to divide by 0."  (That
	is, the division operation checks for an attempt to divide by
	zero, and if one is encountered it causes the operation to
	fail in some unspecified, but generally obvious, manner.) "The
	text editor barfs if you try to read in a new file before
	writing out the old one".

	See {choke}, {gag}.

	In Commonwealth Hackish, "barf" is generally replaced by
	"puke" or "vom".  {barf} is sometimes also used as a
	{metasyntactic variable}, like {foo} or {bar}.

	(26 Feb 1996)

barfmail

	<messaging> Multiple {bounce messages} accumulating to the
	level of serious annoyance, or worse.  The sort of thing that
	happens when an inter-network {mail gateway} goes down or
	misbehaves.

	(05 Jan 1996)

barfulation

	/bar`fyoo-lay'sh*n/ Variation of {barf} used around the
	Stanford area.  An exclamation, expressing disgust.  On seeing
	some particularly bad code one might exclaim, "Barfulation!
	Who wrote this, Quux?"

barfulous

	/bar'fyoo-l*s/ (Or "barfucious", /bar-fyoo-sh*s/) Said of
	something that would make anyone barf, if only for aesthetic
	reasons.

	(22 Feb 1995)

barney

	In Commonwealth hackish, "barney" is to {fred} as {bar} is to
	{foo}.  That is, people who commonly use "fred" as their first
	{metasyntactic variable} will often use "barney" second.  The
	reference is, of course, to Fred Flintstone and Barney Rubble
	in the Flintstones cartoons.

	(28 Nov 1994)

Baroque

	An early {logic programming} language written by Boyer and
	Moore in 1972.

	["Computational Logic: Structure Sharing and Proof of program
	Properties", J. Moore, DCL Memo 67, U Edinburgh 1974].

	(22 Feb 1995)

baroque

	Feature-encrusted; complex; gaudy; verging on excessive.  Said
	of hardware or (especially) software designs, this has many of
	the connotations of {elephantine} or monstrosity but is less
	extreme and not pejorative in itself.  "{Metafont} even has
	features to introduce random variations to its letterform
	output.  Now *that* is baroque!"

	See also {rococo}.

	(22 Feb 1995)

barrel shifter

	<hardware> A hardware device that can shift or rotate a data
	word by any number of bits in a single operation.  It is
	implemented like a {multiplexor}, each output can be connected
	to any input depending on the shift distance.

	(28 Mar 1995)

base

	<mathematics> {radix}.

base 64

	<file format, algorithm> A file format using 64 {ASCII}
	characters to encode the six bit {binary data} values 0-63.

	To convert data to base 64, the first byte is placed in the
	most significant eight bits of a 24-bit buffer, the next in
	the middle eight, and the third in the least significant eight
	bits.  If there a fewer than three bytes to encode, the
	corresponding buffer bits will be zero.  The buffer is then
	used, six bits at a time, most significant first, as indices
	into the string
	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
	and the indicated character output.  If there were only one or
	two input bytes, the output is padded with two or one "="
	characters respectively.  This prevents extra bits being added
	to the reconstructed data.  The process then repeats on the
	remaining input data.

	Base 64 is used when transmitting binary data through
	text-only media such as {electronic mail}, though {uuencode}
	is more common.

	(21 Mar 1995)

baseband

	A transmission medium through which digital signals are sent
	without frequency shifting.  In general, only one
	communication channel is available at any given time.

	{Ethernet} is an example of a baseband network.

	See also {broadband}.

	(22 Feb 1995)

base class

	<programming> (Or "superclass") The {class} from which another
	class (a "subclass") inherits.

	"base class" is the term used in {C++}.  The term "superclass"
	is perhaps confusing since objects of the subclass have a
	superset of the fields of objects in the superclass.

	See {inheritance}.

	(04 Aug 1996)

baseline

	{released version}

base memory

	<hardware, jargon> The lowest 640 {kilobytes} of memory in an
	{IBM PC}-compatible computer running {MS-DOS}.  Other PC
	{operating systems} can usually compensate and "ignore" the
	fact that there is a 640K limit to base memory.  This was put
	in place because the original {CPU} - the {Intel 8088} - could
	only access one {megabyte} of memory, and {IBM} wanted to
	reserve the upper 384KB for {device drivers}.  The {high
	memory area} (HMA) lies above 640KB and can be accessed on
	MS-DOS computers that have an {A20 handler}.

	(30 May 1997)

basename

	<file system> The name of a file which, in contrast to a
	{pathname}, does not mention any of the {directories}
	containing the file.  Examples:

		pathname	basename
		--------	--------
		/etc/hosts	hosts
		./alma		alma
		korte/a.a	a.a
		a.a		a.a

	See also {pathname}.

	(23 Nov 1996)

Base Technology

	<company> The company which developed and distributes {Liana}.

	E-mail: Jack Krupansky <70642.2662@compuserve.com> (owner).

	Address: 1120 Avenue of the Americas, 4th Floor, New York, NY
	10036, USA.  Telephone: +1 (212) 626 6630.  Fax: +1 (212) 626
	6632.

	(09 Mar 1995)

bash

	Bourne Again SHell.  {GNU}'s {command interpreter} for {Unix}.
	Bash is a {Posix}-compatible {shell} with full {Bourne shell}
	syntax, and some {C shell} commands built in.  The Bourne
	Again Shell supports {Emacs}-style command-line editing, job
	control, functions, and on-line help.  Written by Brian Fox
	<bfox@vision.ucsb.edu>.

	The latest version is 1.14.1.  It includes a {yacc} parser,
	the interpreter and documentation.

	{(ftp://prep.ai.mit.edu/bash-1.14.1.tar.gz)} or from a
	{GNU archive site}.  E-mail: <bug-bash@prep.ai.mit.edu>.
	{Usenet} newsgroup: {news:gnu.bash.bug}.

	(15 Jul 1994)

BASIC

	<language> Beginner's All-purpose Symbolic Instruction Code.

	A simple language designed by John G. Kemeny and Thomas
	E. Kurtz at Dartmouth College in 1963.  It first ran on an
	{IBM 704} on 01 May 1964.  It was designed for quick and easy
	programming by students and beginners.  BASIC exists in many
	dialects, and is popular on {microcomputer}s with sound and
	graphics support.  Most micro versions are interactive and
	interpreted, but the original Dartmouth BASIC was compiled.

	BASIC was originally designed for Dartmouth's experimental
	{time-sharing} system and has since become the leading cause
	of brain-damage in proto-hackers.  This is another case (like
	{Pascal}) of the cascading lossage that happens when a
	language deliberately designed as an educational toy gets
	taken too seriously.  A novice can write short BASIC programs
	(on the order of 10--20 lines) very easily; writing anything
	longer is (a) very painful, and (b) encourages bad habits that
	will make it harder to use more powerful languages well.  This
	wouldn't be so bad if historical accidents hadn't made BASIC
	so common on low-end micros.  As it is, it ruins thousands of
	potential wizards a year.

	Originally, all references to code, both {GOTO} and GOSUB
	(subroutine call) referred to the destination by its line
	number.  This allowed for very simple editing in the days
	before {text editor}s were considered an essential tool on
	every computer.  Just typing the line number deleted the line
	and to edit a line you just typed the new line with the same
	number.  Programs were typically numbered in steps of ten to
	allow for insertions.  Later versions, such as {BASIC V},
	allow {GOTO}-less {structured programming} with named
	procedures and functions, IF-THEN-ELSE-ENDIF constructs and
	{WHILE} loops etc.

	Early BASICs had no graphic operations except with graphic
	characters.  In the 1970s BASIC {interpreter}s became standard
	features in {mainframe}s and {minicomputer}s.  Some versions
	included matrix operations as language primitives.

	A {public domain} {interpreter} for a mixture of {DEC}'s
	{MU-Basic} and {Microsoft Basic} is {here
	(ftp://oak.oakland.edu/pub/Unix-c/languages/basic/basic.tar-z)}.
	A {yacc} {parser} and {interpreter} were in the
	comp.sources.unix archives volume 2.

	Mailing list: <basic@ireq.hydro.qc.ca>.

	See also {ANSI Minimal BASIC}, {bournebasic}, {bwBASIC},
	{ubasic}.

	(15 Mar 1995)

Basic Assembly Language

	(BAL) What most people called {IBM 360} {assembly language}.

	See {ALC}.

	(13 Apr 1995)

BASIC AUTOCODER

	Early system on IBM 7070.  Listed in CACM 2(5):16 (May
	1959).

Basic COBOL

	<language> A subset of {COBOL} from {COBOL-60} standards.

	[Sammet 1969, p. 339].

	(07 Dec 1997)

Basic Encoding Rules

	<protocol> (BER) Standard rules for encoding data units
	described in {Abstract Syntax Notation 1} (ASN.1).  The BER
	provide a universal (contiguous) representation of data
	values.  They are sometimes incorrectly lumped under the term
	ASN.1, which properly refers only to the {abstract syntax}
	description language, not the encoding technique.

	Huw Rogers <rogersh@ccs.mt.nec.co.jp> described BER as "a
	triumph of bloated theory over clean implementation".  He also
	criticises it is designed around bitstreams with arbitrary
	boundaries between data which can only be determined at a high
	level.

	Documents: {ISO} 8825; {ITU} X.209.

	(07 Dec 1997)

Basic FORTRAN

	Subset of FORTRAN.  Sammet 1969, p.150.

Basic Input/Output System

	(BIOS) The part of the {operating system} of the {IBM PC} that
	provides the lowest level interface to peripheral devices.
	The BIOS is stored in {ROM} in every IBM PC.  In order to
	provide acceptable performance (e.g. for screen display),
	software vendors directly access the routines in the BIOS,
	rather than using the higher level operating system calls.
	Thus, the BIOS in the compatible computer must be 100%
	compatible with the IBM BIOS.

	As if that wasn't bad enough, many {application program}s
	bypass even the BIOS and address the screen hardware directly
	just as the BIOS does.  Consequently, register level
	compatibility is required in the compatible's display
	electronics, which means that it must provide the same storage
	locations and identification as the original IBM hardware.

Basic JOVIAL

	<language> A subset of {JOVIAL} written ca. 1965.

	[Sammet 1969, p.529].

	(19 Apr 1995)

Basic Language for Implementation of System Software

	<language> (BLISS, or allegedly, "System Software
	Implementation Language, Backwards") A language designed by
	W.A. Wulf at {CMU} around 1969.

	BLISS is an {expression language}.  It is {block-structured},
	and typeless, with {exception handling} facilities,
	{coroutines}, a {macro} system, and a highly {optimising
	compiler}.  It was one of the first non-{assembly languages}
	for {operating system} implementation.  It gained fame for its
	lack of a {goto} and also lacks implicit {dereferencing}: all
	symbols stand for addresses, not values.

	Versions: CMU {BLISS-10} for the PDP-10; CMU {BLISS-11}, DEC
	{BLISS-32} for {VAX}/{VMS}.

	["BLISS: A Language for Systems Programming", CACM
	14(12):780-790, Dec 1971].

	(01 Mar 1997)

Basic Multilingual Plane

	<text, standard> The first, and to date the only, {UCS-2}
	plane defined.  It was developed by merging the ISO draft for
	16-bit character codes with the code used by {Unicode}.  It
	inherited features from both, compatibility with other
	standards (such as {ISO Latin 1}) from the ISO draft,
	character combining (such as writing the letter "" as a
	combination of "a" and "'") from Unicode.

	Presently the BMP is half empty, although it covers all major
	languages, including Roman, Greek, Cyrillic, Chinese,
	hiragana, katakana, Devanagari, Easter Island "rongo-rongo",
	and even {Elvish} (but leaves out {Klingon}).

	(04 Jul 1997)

Basic Rate Interface

	(BRI) A kind of {Integrated Services Digital Network} channel
	consisting of two 64 Kbit per second "bearer" (B) channels for
	user-data transfer plus a 16 kbps "delta" (D) channel for
	control and signalling information.  A BRI provides a total
	data rate of 144 kilobits per second.  The B channels are used
	for voice or data, and the D channel is used for signalling
	and/or {X.25} {packet} networking.  BRI is the kind of ISDN
	interface most likely to be found in residential service.

	(28 Nov 1994)

BASIC V

	The version of the {Basic} programming language which comes on
	{ROM} in {Acorn}'s {RISC} computers: the {Archimedes} range
	and the {Risc PC}.  It features REPEAT and WHILE loops,
	multi-line IF statements, procedures and functions, local
	variables, error handling, {system call}s and a built-in
	{assembler}.

	(05 Jan 1995)

Bastard Operator From Hell

	(BOFH) A rogue network operator character invented by Simon
	Travaglia <SPT@waikato.ac.nz>, regularly featured in
	"Computing"/"Datamation"(?) magazine.

	{Home (http://prime-mover.cc.waikato.ac.nz/Bastard.html)}

	(21 Mar 1996)

bastion host

	{proxy gateway}

batch

	<programming> A term describing a system that takes a set (a
	"batch") of commands or jobs, executes them and returns the
	results, all without human intervention.  This contrasts with
	an {interactive} system where the user's commands and the
	computer's responses are interleaved during a single run.

	A batch system typically takes its commands from a disk file
	(or a set of {punched card}s in the old days) and returns the
	results to a file (or prints them).  Often there is a queue of
	jobs which the system processes as resources become available.

	Hackers use this somewhat more loosely than the traditional
	technical definitions justify; in particular, switches on a
	normally interactive program that prepare it to receive
	non-interactive command input are often referred to as "batch
	mode" switches.  A "batch file" is a series of instructions
	written to be handed to an interactive program running in
	batch mode.

	(19 Jan 1995)

batch file

	<operating system> (Or script) A text file containing
	{operating system} commands which are executed automatically
	by the {command line interpreter}.  In {Unix}, this is called
	a "{shell script}" since it is the Unix {shell} which includes
	the {command line interpreter}.  Batch files can be used as a
	simple way to combine existing commands into new commands.

	{autoexec.bat} is the best known example of an {MS-DOS} batch
	file.

	(07 Jan 1996)

bathtub curve

	Common term for the curve (resembling an end-to-end section of
	one of those claw-footed antique bathtubs) that describes the
	expected failure rate of electronics with time: initially
	high, dropping to near 0 for most of the system's lifetime,
	then rising again as it "tires out".  See also {burn-in
	period}, {infant mortality}.

baud

	<communications, unit> /bawd/ (plural "baud") The unit in
	which the information carrying capacity or "{signalling rate}"
	of a communication channel is measured.  One baud is one
	symbol (state-transition or level-transition) per second.
	This coincides with bits per second only for two-level
	{modulation} with no {framing} or {stop bits}.

	A symbol is a unique state of the communication channel,
	distinguishable by the receiver from all other possible
	states.  For example, it may be one of two voltage levels on a
	wire for a direct digital connection or it might be the phase
	or frequency of a carrier.

	The term "baud" was originally a unit of telegraph signalling
	speed, set at one {Morse code} dot per second.  Or, more
	generally, the reciprocal of the duration of the shortest
	signalling element.  It was proposed at the International
	Telegraph Conference of 1927, and named after {J.M.E. Baudot}
	(1845-1903), the French engineer who constructed the first
	successful teleprinter.

	The UK {PSTN} will support a maximum rate of 600 baud but each
	baud may carry between 1 and 16 bits depending on the coding
	(e.g. {QAM}).

	Where data is transmitted as {packets}, e.g. characters, the
	actual "data rate" of a channel is

		R D / P

	where R is the "raw" rate in bits per second, D is the number
	of data bits in a packet and P is the total number of bits in
	a packet (including packet overhead).

	The term "baud" causes much confusion and is usually best
	avoided.  Use "bits per second" (bps), "bytes per second" or
	"characters per second" (cps) if that's what you mean.

	(14 Feb 1998)

baud barf

	<jargon> /bawd barf/ The garbage one gets on the {display
	screen} when using a {modem} connection with some {protocol}
	setting (especially line speed) incorrect, or when someone
	picks up a voice extension on the same line, or when really
	bad line noise disrupts the connection.  Baud barf is not
	completely {random}, by the way; hackers with a lot of
	serial-line experience can usually tell whether the device at
	the other end is expecting a higher or lower speed than the
	{terminal} is set to.  *Really* experienced ones can identify
	particular speeds.

	(22 Feb 1996)

Baudot

	{Baudot code}

Baudotbetical order

	<algorithm> /baw do bet' i k*l/ Sorted into an order where
	numerics and special characters are intermixed by sorting a
	5-bit Baudot code file ignoring the numeric shift and unshift
	codes.

	(11 Feb 1997)

Baudot code

	<communications> (For etymology, see {baud}) A {character set}
	predating {EBCDIC} and used originally and primarily on {paper
	tape}.  Use of Baudot reportedly survives in {TTD}s and some
	HAM radio applications.

	In Baudot, characters are expressed using five {bit}s.  Baudot
	uses two code sub-sets, the "letter set" (LTRS), and the
	"figure set" (FIGS).  The FIGS character (11011) signals that
	the following code is to be interpreted as being in the FIGS
	set, until this is reset by the LTRS (11111) character.

	 binary  hex    LTRS   FIGS
	 --------------------------
	  00011  03      A      -
	  11001  19      B      ?
	  01110  0E      C      :
	  01001  09      D      $
	  00001  01      E      3
	  01101  0D      F      !
	  11010  1A      G      &
	  10100  14      H      #
	  00110  06      I      8
	  01011  0B      J      BELL
	  01111  0F      K      (
	  10010  12      L      )
	  11100  1C      M      .
	  01100  0C      N      ,
	  11000  18      O      9
	  10110  16      P      0
	  10111  17      Q      1
	  01010  0A      R      4
	  00101  05      S      '
	  10000  10      T      5
	  00111  07      U      7
	  11110  1E      V      ;
	  10011  13      W      2
	  11101  1D      X      /
	  10101  15      Y      6
	  10001  11      Z      "
	  01000  08      CR     CR
	  00010  02      LF     LF
	  00100  04      SP     SP
	  11111  1F      LTRS   LTRS
	  11011  1B      FIGS   FIGS
	  00000  00      [..unused..]

	Where CR is {carriage return}, LF is {linefeed}, BELL is the
	{bell}, SP is space, and STOP is the stop character.

	Note: these bit values are often shown in inverse order,
	depending (presumably) which side of the {paper tape} you were
	looking at.

	Local implementations of Baudot may differ in the use of #,
	STOP, BELL, and '.

	(30 Jan 1997)

baud rate

	{baud}

bawk

	An {Awk}-like pattern-matching language by Bob Brodt,
	distributed with {MINIX}.

	(28 Nov 1994)

bay

	<hardware> The place in a {docking station} where you insert a
	{notebook computer} or {laptop computer} to work in desktop
	mode or to charge their batteries, print, or connect to the
	office network, etc.

	[Is this really distinct from "docking station"?]

	(03 Aug 1997)

baz

	/baz/ The third {metasyntactic variable} "Suppose we have
	three functions: FOO, BAR, and BAZ.  FOO calls BAR, which
	calls BAZ..." (See also {fum}).  Occasionally appended to
	{foo} to produce "foobaz".

	Early versions of the Hacker Jargon dictionary derived "baz"
	as a Stanford corruption of {bar}.  However, Pete Samson
	(compiler of the {TMRC} lexicon) reports it was already
	current when he joined TMRC in 1958.  He says "It came from
	"Pogo".  Albert the Alligator, when vexed or outraged, would
	shout "Bazz Fazz!" or "Rowrbazzle!"  The club layout was said
	to model the (mythical) New England counties of Rowrfolk and
	Bassex (Rowrbazzle mingled with Norfolk/Suffolk/Middlesex/
	Essex)."

BBC

	{British Broadcasting Corporation}

BBC Microcomputer

	A series of {6502}-based personal computers launched by {Acorn
	Computers} Ltd. in January 1982, for use in the British
	Broadcasting Corporation's educational programmes on
	computing.  The computers are noted for their reliability (many
	are still in active service in 1994) and both hardware and
	software were designed for easy expansion.  The 6502-based
	computers were succeeded in 1987 by the Acorn {Archimedes}
	family.

	{xbeeb} is a BBC Micro {emulator} for {Unix} and {X11}.

BBC Networking Club

	<body> A {bulletin board} run by the {British Broadcasting
	Corporation} Education department from April 1994 to 30 Nov
	1995.

	(20 Jan 1997)

BBL

	<chat> (I will) be back later.

BBN

	{Bolt, Beranek and Newman}

bboard

	/bee'bord/ {bulletin board system}.

BBS

	{Bulletin Board System}

BC

	An {arbitrary precision} numeric processing language with
	{C}-like {syntax}.  Traditionally implemented as a front-end
	to {DC}.  There is a {GNU} version called {GNU BC}.

	{Unix manual page}: bc(1).

BCBF

	{Branch on Chip Box Full}

BCC

	1. {Blind Carbon Copy}.

	2. {Block Check Character}.

	3. {Blocked Call Cleared}.

	(05 Feb 1997)

BCD

	{binary coded decimal}

BCL

	The successor to {Atlas Commercial Language}.

	["The Provisional BCL Manual", D. Hendry, U London 1966].

BC NELIAC

	Version of NELIAC, post 1962.  Sammet 1969, p.197.

BCNU

	Be seein' you.

BCPL

	<language> (Basic CPL) A British systems language developed by
	Richards in 1969 and descended from {CPL} (Combined
	Programming Language).  BCPL is low-level, typeless and
	block-structured, and provides only one-dimensional {arrays}.
	Case is not significant, but conventionally reserved words
	begin with a capital.  Flow control constructs include:
	If-Then, Test-Then-Else, Unless-Do, While-Do, Until-Do,
	Repeat, Repeatwhile, Repeatuntil, For-to-By-Do, Loop, Break
	and Switchon-Into-Case-Default-Endcase.  BCPL has conditional
	expressions, pointers, and manifest constants.  It has both
	procedures: 'Let foo(bar) Be command' and functions: 'Let
	foo(bar) = expression'.  'Valof $(..Resultis..$)' causes a
	compound command to produce a value.  Parameters are
	{call-by-value}.

	Program segments communicate via the global vector where
	system and user variables are stored in fixed numerical
	locations in a single array.

	The first BCPL {compiler} was written in {AED}.  BCPL was used
	to implement the {TRIPOS} {operating system}, which was
	subsequently reincarnated as {AmigaDOS}.

	["BCPL - The Language and its Compiler", Martin Richards &
	Colin Whitby-Stevens, Cambridge U Press 1979].

	See {OCODE}, {INTCODE}.

	Oxford BCPL differed slightly: Test-Ifso-Ifnot, and section
	brackets in place of $( $).

	The original {INTCODE} {interpreter} for BCPL is available for
	{Amiga}, {Unix}, {MS-DOS}
	{(ftp://wuarchive.wustl.edu/systems/amiga/programming/languages/BCPL/)}.

	A BCPL compiler {bootstrap} kit with an {INTCODE}
	{interpreter} in {C} was written by Ken Yap
	<ken@syd.dit.csiro.au>.

	(26 Mar 1995)

BCS

	1. {British Computer Society}.

	2. {Binary Compatibility Standard}.

BDL

	Block Diagram Compiler.  A block-diagram simulation tool, with
	associated language.  "A Software Environment for Digital
	Signal-Processing Simulations," D.H. Johnson & R.E. Vaughan,
	Circuits Systems and Signal Processing 6(1):31-43, (1987).

BDPA

	{Black Data Processing Associates}

BEA

	Basic programming Environment for interactive-graphical
	Applications, from Siemens-Nixdorf.

beam

	[Star Trek Classic's "Beam me up, Scotty!"] To transfer
	{softcopy} of a file electronically; most often in combining
	forms such as "beam me a copy" or "beam that over to his
	site".  Compare {blast}, {snarf}, {BLT}.

beam search

	An optimisation of the {best first search} graph search
	{algorithm} where only a predetermined number of paths are
	kept as candidates.  The number of paths is the "width of the
	beam".  If more paths than this are generated, the worst paths
	are discarded.  This reduces the space requirements of best
	first search.

bean

	{JavaBeans}

beanie key

	{feature key}

bearer channel

	<communications> Originally, a channel suited for carrying one
	voice-grade connection.  Typically a {DS0} channel.

	Compare {data channel}.

	(7 Mar 1997)

bear paw

	<jargon> The {Vulcan nerve pinch} for {SGI} computers.  The
	five key keyboard combination <left Ctrl><left Alt><left
	Shift><numeric keypad /><F12> resets the graphics subsystem,
	including the {window manager}.

	(28 Oct 1996)

BeBOP

	<language> A language combining sequential and parallel {logic
	programming}, {object-oriented} and {meta-level programming}.
	Both {don't know nondeterminism} and {stream AND-parallelism}.
	{Prolog} {theories} are first order entities and may be
	updated or passed in messages.  BeBOP is implemented by
	translation to {NU-Prolog} and {PNU-Prolog}.

	{(ftp://munnari.oz.au/pub/bebop.tar.Z)}.

	E-mail: Andrew Davidson <ad@cs.mu.oz.au>.

	(27 Oct 1996)

BeBox

	<computer> A {microcomputer} produced by {Be Inc}, containing
	between two and eight {PowerPCs} (the initial model has two
	{PPC} 603s). The BeBox can take standard {IBM PC}
	{peripherals}, such as {ISA} and {PCI} cards, {IDE} and {SCSI}
	disks, and a standard {PS/2} keyboard.

	Newsgroup: {news:comp.sys.be}.

	{Home (http://www.be.com/)}.

	[Dates?]

	(05 Oct 1996)

BEDO

	{Burst Extended Data Out DRAM}

Bedrock

	A {C++} {class} library for {Macintosh} user interface
	portability.

beep

	{bell}

BEG

	{Back End Generator}

@Begin

	<text> The {Scribe} equivalent of {\begin}.

\begin

	<text, chat The {LaTeX} command used with \end to delimit an
	environment within which the text is formatted in a certain
	way.  E.g. \begin{table}...\end{table}.

	Used humorously in writing to indicate a context or to remark
	on the surrounded text.  For example:

	 \begin{flame}
	 Predicate logic is the only good programming
	 language.  Anyone who would use anything else
	 is an idiot.  Also, all computers should be
	 tredecimal instead of binary.
	 \end{flame}

	{Scribe} users at {CMU} and elsewhere used to use @Begin/@End
	in an identical way (LaTeX was built to resemble Scribe).  On
	{Usenet}, this construct would more frequently be rendered as
	"<FLAME ON>" and "<FLAME OFF>", or "#ifdef FLAME" and "#endif
	FLAME".

	(01 Jun 1996)

BEGL

	{Back End Generator}

beige toaster

	{Macintosh}

Be Inc

	<company> The company that produced the {BeBox}, founded by
	Jean-Louis Gassee, former product chief at {Apple}.

	(05 Oct 1996)

BEL

	{bell}

belief revision

	<artificial intelligence> The area of {theory change} in which
	preservation of the information in the theory to be changed
	plays a key role.

	A fundamental issue in belief revision is how to decide what
	information to retract in order to maintain consistency, when
	the addition of a new belief to a theory would make it
	inconsistent.  Usually, an ordering on the sentences of the
	theory is used to determine priorities among sentences, so
	that those with lower priority can be retracted.  This
	ordering can be difficult to generate and maintain.

	The postulates of the {AGM Theory for Belief Revision}
	describe minimal properties a revision process should have.

	[Better definition?]

	(20 Mar 1995)

BELL

	An early system on the {IBM 650} and {Datatron 200} series.

	Versions: BELL L2, BELL L3.

	[Listed in CACM 2(5):16 (May 1959)].

	[Is Datatron version the same?]

	(06 Dec 1994)

Bell

	<company> {Bell Telephone} or {Bell Laboratories}.

	(07 Apr 1997)

bell

	<character> {ASCII} 7, ASCII {mnemonic} "BEL", the {character
	code} which prodces a standard audibile warning from the
	computer or {terminal}.  In the {teletype} days it really was a
	bell, since the advent of the {VDU} it is more likely to be a
	sound sample (e.g. the sound of a bell) played through a
	loudspeaker.

	Also called "G-bell", because it is typed as Control-G.

	The term "beep" is preferred among some {microcomputer}
	hobbyists.

	Compare {feep}, {visible bell}.

	(08 Apr 1997)

Bell 103

	<protocol> The original variant of {V.21} created by {AT&T}
	when they had a telephone system monopoly in the USA.

	(02 Feb 1995)

Bell Communications Research, Inc

	(Bellcore) The research laboratory for the seven regional
	{Bell Telephone} companies in the USA that were created by the
	divestiture of {AT&T} in 1984.

	It can be compared to {Bell Laboratories}, for which many
	Bellcore employees used to work.  Currently jointly owned by
	the seven baby bells (as they are called), there are rumours
	that it is to be sold by its current owners to become an
	independent research laboratory

	Its headquarters are in Livingstone, New Jersey.  It has
	offices in Morristown, Lincroft, and Piscataway, all in
	New Jersey, USA.

	Telephone: +1 (201) 74 3000, +1 (800) 521 CORE.

	(06 Dec 1994)

Bellcore

	{Bell Communications Research, Inc.}

bell curve

	<statistics> {normal distribution}.

Bell Laboratories

	One of {AT&T}'s research sites, in Murray Hill, New Jersey,
	USA.  It was the birthplace of the {transistor}, {Unix}, {C}
	and {C++} and the current home of research on {Plan 9} and
	{ODE}.

	{AT&T Research (http://www.research.att.com/)}

	{(ftp://ftp.research.att.com/)}

	{netlib} sources {(ftp://netlib.att.com)}.

	(17 Nov 1994)

Bell Labs

	{Bell Laboratories}

bells and whistles

	[By analogy with the toyboxes on theatre organs].  Features
	added to a program or system to make it more {flavourful} from
	a hacker's point of view, without necessarily adding to its
	utility for its primary function.  Distinguished from
	{chrome}, which is intended to attract users.  "Now that we've
	got the basic program working, let's go back and add some
	bells and whistles."  No one seems to know what distinguishes
	a bell from a whistle.

bells, whistles, and gongs

	A standard elaborated form of {bells and whistles}; typically
	said with a pronounced and ironic accent on the "gongs".

benchmark

	A standard program or set of programs which can be run on
	different computers to give an inaccurate measure of their
	performance.

	"In the computer industry, there are three kinds of lies:
	lies, damn lies, and benchmarks."

	A benchmark may attempt to indicate the overall power of a
	system by including a "typical" mixture of programs or it may
	attempt to measure more specific aspects of performance, like
	graphics, I/O or computation (integer or {floating-point}).
	Others measure specific tasks like {rendering} polygons,
	reading and writing files or performing operations on
	matrices.  The most useful kind of benchmark is one which is
	tailored to a user's own typical tasks.  While no one
	benchmark can fully characterise overall system performance,
	the results of a variety of realistic benchmarks can give
	valuable insight into expected real performance.

	Benchmarks should be carefully interpreted, you should know
	exactly which benchmark was run (name, version); exactly what
	configuration was it run on (CPU, memory, compiler options,
	single user/multi-user, peripherals, network); how does the
	benchmark relate to your workload?

	Well-known benchmarks include {Whetstone}, {Dhrystone},
	{Rhealstone} (see {h}), the {Gabriel} {Lisp} benchmarks, the
	{SPECmark} suite, and {LINPACK}.

	See also {machoflops}, {MIPS}, {smoke and mirrors}.

	{Usenet} newsgroup: {news:comp.benchmarks}.

	{A database of some benchmark results
	(http://netlib2.cs.utk.edu/performance/html/PDSreports.html)}.

	(14 Nov 1994)

benchmarks

	{benchmark}

Bend Over, Here It Comes Again

	<humour> (BOHICA) An utterance of frustration by computer
	support personnel who anticipate being told (usually via
	phone) to do something that can't be done, by a boss who
	doesn't know his ass from deep center field about what he's
	asking his minions to do.

	(20 Sep 1995)

Benoit B. Mandelbrot

	{Benoit Mandelbrot}

Benoit Mandelbrot

	<person> /ben'wa man'dl-bro/ Benoit B. Mandelbrot.  The {IBM}
	scientist who wrote several original books on {fractals} and
	gave his name to the set he was discovered, the {Mandelbrot
	set} and coined the term "fractal" in 1975 from the Latin
	fractus or "to break".

	(02 Jul 1997)

BeOS

	<operating system> The {operating system} designed to run on
	the {BeBox} {microcomputer}.  BeOS is good at both
	{multitasking} and {real-time} operation.  It has a {bash}
	command shell, with ports of many {GNU} programs by Be, Inc.
	It has a {GUI} front end (not {X}).  A {C++} {compiler} is
	supplied with the machine, and there are rumours of other
	languages being ported in the future.

	(05 Oct 1996)

BER

	{Basic Encoding Rules}

Berkeley

	{University of California at Berkeley}

Berkeley 4.2

	{Berkeley System Distribution}

Berkeley EDIF200

	translator-building toolkit

	Wendell C. Baker and Prof A. Richard Newton of the Electronics
	Research Laboratory, Department of Electrical Engineering and
	Computer Sciences at the {University of California, Berkeley}.

	Version 7.6.  Restriction: no-profit without permission.

	{(ftp://ic.berkeley.edu/pub/edif)}

	(01 Jul 1990)

Berkeley FP

	<language> A version of {Backus}'s {FP} distributed with
	{4.2BSD} {Unix}.

	{(ftp://apple.com/ArchiveVol1/Unix_lang)}

	(15 Dec 1997)

Berkeley Internet Name Domain

	<networking> (BIND) An implementation of a {DNS} {server}
	developed and distributed by the {University of California at
	Berkeley}.

	Many {Internet} {hosts} run BIND, and it is the ancestor of
	many commercial implementations.

	(15 Dec 1997)

Berkeley Logo

	<language> A {Logo} {interpreter} by Brian Harvey
	<bh@cs.berkeley.edu>.  Berkeley Logo programs will run on
	{Unix}, {IBM PC} and {Macintosh}.  It doesn't do anything
	fancy about graphics and only allows one {turtle}.

	Version: 4.2, 4.3 "in the works" (26 Nov 1997).

	{MswLogo} is a {Microsoft Windows} {front end}.

	{(ftp://anarres.cs.berkeley.edu/pub/ucblogo)}.

	(26 Nov 1997)

Berkeley Network

	(B-NET) Top level {Unix} {Ethernet} software developed at the
	{University of California at Berkeley}.  There are no formal
	specifications but UCB's {4.2BSD} {Unix} implementation on the
	{VAX} is the de facto standard.  Distributed by {Unisoft}.
	Includes net.o driver routines for specific hardware, {pseudo
	tty}s, {daemons}, hostname command to set/get name, /etc/hosts
	database of names and {Internet address}es of other hosts,
	/etc/hosts.equiv host-wide database to control remote access,
	.rhosts per user version of hosts.equiv.

	UCB's implementation of the {Internet Protocol} includes
	trailers to improve performance on paged memory management
	systems such as {VAXen}.  These trailers are an exception to
	the Internet Protocol specification.

Berkeley Quality Software

	<abuse> (Often abbreviated "BQS") Term used in a pejorative
	sense to refer to software that was apparently created by
	rather spaced-out hackers late at night to solve some unique
	problem.  It usually has nonexistent, incomplete, or incorrect
	documentation, has been tested on at least two examples, and
	core dumps when anyone else attempts to use it.  This term was
	frequently applied to early versions of the "dbx(1)" debugger.

	See also {Berzerkeley}.

	(15 Jan 1996)

Berkeley Software Design, Inc

	<company> (BSDI) A company that sells {BSD/OS}, a commercial
	version of {Berkeley Standard Distribution} {Unix},
	networking, and Internet technologies originally developed by
	the {Computer Systems Research Group} (CSRG) at the
	{University of California at Berkeley}.

	Leading CSRG computer scientists founded BSDI in 1991.  BSDI's
	BSD/OS represents over 20 years of development by the
	worldwide BSD technical community.  BSD technology is known
	worldwide for its powerful, flexible and portable architecture
	and advanced development environments.

	BSDI designs, develops, markets, and supports the {BSD/OS}
	{operating system}, {Internet} server software for {IBM PCs},
	and other products.  BSDI planned to release an Internet
	gateway product for {Novell} {IPX} networks in 1995.

	{Home (http://www.bsdi.com/)}

	E-mail: <bsdi-info@bsdi.com>.

	Address: 5575 Tech Center Drive, #110, Colorado Springs, CO
	80918, USA.  Telephone: +1 (719) 593 9445.  Fax: +1 (719) 598
	4238.

	(13 Jan 1996)

Berkeley Softworks

	The company that wrote {Graffiti} and a similar scheme for the
	{Commodore 64} (made it very {Macintosh}-like) and the
	{Commodore 128} (which could {multitask}).

	(24 Jan 1995)

Berkeley System Distribution

	<operating system> (BSD) A family of {Unix} versions for the
	{DEC} {VAX} and {PDP-11}, developed by {Bill Joy} and others
	at the {University of California at Berkeley}.  BSD Unix
	incorporates {paged} {virtual memory}, {TCP/IP} networking
	enhancements, and many other features.

	BSD UNIX 4.0 was released on 19 October 1980.  The BSD
	versions (4.1, 4.2, and 4.3) and the commercial versions
	derived from them ({SunOS}, {ULTRIX}, {Mt. Xinu}, {Dynix})
	held the technical lead in the Unix world until {AT&T}'s
	successful standardisation efforts after about 1986, and are
	still widely popular.

	See also {Berzerkeley}, {USG Unix}.

	(23 Nov 1994)

Berkeley Unix

	{Berkeley System Distribution}

berklix

	/berk'liks/ (From {Berkeley Unix}) {Berkeley System
	Distribution}.  Not used at {Berkeley} itself.  May be more
	common among {suit}s attempting to sound like cognoscenti than
	among hackers, who usually just say "BSD".

	(23 Feb 1995)

Bernoulli Box

	<storage> A high capacity storage device, {Iomega
	Corporation}'s first popular product, that spins a mylar disk
	over a read-write head using the {Bernoulli prinicple}.

	(15 Apr 1997)

Bernoulli principle

	(Or "air foil principle", after Swiss mathematician Daniel
	Bernoulli, 1700-1782) The law that pressure in a fluid
	decreases with the rate of flow.  It has been applied to a
	class of {hard disk} drives.

	See {Bernoulli Box}.

	(15 Apr 1997)

Bernstein condition

	<parallel> Processes cannot execute in parallel if one effects
	values used by the other.  Nor can they execute in parallel if
	any subsequent process uses data effected by both, i.e. whose
	value might depend on the order of execution.

	(23 Feb 1995)

Bertrand

	(Named after the British mathematician Bertrand Russell
	(1872-1970)).  Wm. Leler.  Rule-based specification language
	based on augmented term rewriting.  Used to implement
	constraint languages.  The user must explicitly specify the
	tree-search and the constraint propagation.

	{(ftp://nexus.yorku.ca/pub/scheme/scm/bevan.shar)}

	["Constraint Programming Languages - Their Specification and
	Generation", W. Leler, A-W 1988, ISBN 0-201-06243-7].

Bertrand Meyer

	The author of the {Eiffel} Language and many articles on
	{object-oriented} software techniques.

	(01 Mar 1995)

Bertrand Russell

	<person> (1872-1970) A British mathematician, the discoverer
	of {Russell's paradox}.

	(27 Mar 1995)

Berzerkeley

	<humour> /b*r-zer'klee/ (From "berserk", via the name of a
	now-deceased record label) A humorous distortion of "Berkeley"
	used especially to refer to the practices or products of the
	{BSD Unix} hackers.

	See {software bloat}, {Missed'em-five}, {Berkeley Quality
	Software}.

	Mainstream use of this term in reference to the cultural and
	political peculiarities of UC Berkeley as a whole has been
	reported from as far back as the 1960s.

	(01 Jun 1996)

Berzerkley

	{Berzerkeley}

best effort

	<networking> A classification of low priority network traffic,
	used especially the {Internet}.

	Different kinds of traffic have different priorities.
	{Videoconferencing} and other types of {real-time}
	communication, for example, require a certain minimum
	guaranteed {bandwidth} and {latency} and so must be given a
	high priority.  {Electronic mail}, on the other hand, can
	tolerate an arbitrarily long delay and is classified as a
	"best-effort" service.

	[Scientific American, Nov. 1994, pp. 83-84].

	(04 Apr 1995)

best first search

	<algorithm> A {graph} search {algorithm} which optimises
	{breadth first search} by ordering all current paths according
	to some {heuristic}.  The heuristic attempts to predict how
	close the end of a path is to a solution.  Paths which are
	judged to be closer to a solution are extended first.

	See also {beam search}, {hill climbing}.

	(09 Dec 1995)

Best Fit

	<algorithm> A {resource} allocation scheme (usually for
	{memory}).  Best Fit tries to determine the best place to put
	the new data.  The definition of 'best' may differ between
	implementations, but one example might be to try and minimise
	the wasted space at the end of the block being allocated -
	i.e. use the smallest space which is big enough.

	By minimising wasted space, more data can be allocated
	overall, at the expense of a more time-consuming allocation
	{routine}.

	Compare {First Fit}.

	(02 Jun 1997)

BETA

	Kristensen, Madsen <olmadsen@daimi.aau.dk>, Moller-Pedersen &
	Nygaard, 1983.  Object-oriented language with block structure,
	coroutines, concurrency, strong typing, part objects, separate
	objects and classless objects.  Central feature is a single
	abstraction mechanism called "patterns", a generalisation of
	classes, providing instantiation and hierarchical inheritance
	for all objects including procedures and processes.

	Mjolner Informatics ApS, Aarhus, implementations for Mac, Sun,
	HP, Apollo.

	E-mail: <info@mjolner.dk>.

	Mailing list: <usergroup@mjolner.dk>.

	["Object-Oriented Programming in the BETA Programming
	Language", Ole Lehrmann et al, A-W June 1993, ISBN
	0-201-62430-3].

	(31 Oct 1995)

beta

	/bay't*/, /be't*/ or (Commonwealth) /bee't*/

	See {beta conversion}, {beta test}.

beta abstraction

	[{lambda-calculus}] The conversion of an expression to an
	{application} of a {lambda abstraction} to an argument
	expression.  Some subterm of the original expression becomes
	the argument of the abstraction and the rest becomes its
	body. E.g.

		4+1 --> (\ x . x+1) 4

	The opposite of beta abstraction is {beta reduction}.  These
	are the two kinds of {beta conversion}.

beta conversion

	[{lambda-calculus}] {beta reduction} or {beta abstraction}.

beta reduction

	[{lambda-calculus}] The {application} of a {lambda
	abstraction} to an argument expression.  A copy of the body of
	the lambda abstraction is made and occurrences of the {bound
	variable} being replaced by the argument.  E.g.

		(\ x . x+1) 4  -->  4+1

	Beta reduction is the only kind of {reduction} in the {pure
	lambda-calculus}.  The opposite of beta reduction is {beta
	abstraction}.  These are the two kinds of {beta conversion}.

	See also {name capture}.

beta testing

	<programming> Testing a pre-release (potentially unreliable)
	version of a piece of software by making it available to
	selected users.  This term derives from early 1960s
	terminology for product cycle checkpoints, first used at {IBM}
	but later standard throughout the industry.

	"{Alpha test}" was the unit, module, or component test phase;
	"Beta Test" was initial system test.  These themselves came
	from earlier A- and B-tests for hardware.  The A-test was a
	feasibility and manufacturability evaluation done before any
	commitment to design and development.  The B-test was a
	demonstration that the engineering model functioned as
	specified.  The C-test (corresponding to today's beta) was the
	B-test performed on early samples of the production design.

	An item "in beta test" is thus mostly working but still under
	test.  In the {Real World}, systems (hardware or software)
	often go through two stages of release testing: Alpha
	(in-house) and Beta (out-house?).  Beta releases are generally
	made available to a small number of lucky (or unlucky),
	trusted customers.

	(05 Nov 1996)

beta version

	{beta testing}

Bezier

	<graphics> (After Frenchman Pierre Bzier from Regie Renault)
	A collection of formulae for describing curved lines ({Bezier
	curve}) and surfaces ({Bezier surface}), first used in 1972 to
	model automobile surfaces.

	Curves and surfaces are defined by a set of "control points"
	which can be moved interactively making Bezier curves and
	surfaces convenient for interactive graphic design.

	["Principles of interactive computer graphics", William
	M. Newman, Graw-Hill].

	(04 Apr 1995)

Bezier curve

	<graphics> A type of curve defined by mathematical formulae,
	used in {computer graphics}.  A curve with coordinates P(u),
	where u varies from 0 at one end of the curve to 1 at the
	other, is defined by a set of n+1 "control points" (X(i),
	Y(i), Z(i)) for i = 0 to n.

		P(u) = Sum i=0..n [(X(i), Y(i), Z(i)) * B(i, n, u)]

		B(i, n, u) = C(n, i) * u^i * (1-u)^(n-i)

		C(n, i) = n!/i!/(n-i)!

	A Bezier curve (or surface) is defined by its control points,
	which makes it invariant under any {affine mapping}
	(translation, rotation, parallel projection), and thus even
	under a change in the axis system.  You need only to transform
	the control points and then compute the new curve.  The
	control polygon defined by the points is itself affine
	invariant.

	Bezier curves also have the variation-diminishing property.
	This makes them easier to split compared to other types of
	curve such as {Hermite} or {B-spline}.

	Other important properties are multiple values, global and
	local control, versatility, and order of continuity.

	[What do these properties mean?]

	(12 Jun 1996)

Bezier surface

	<graphics> A surface defined by mathematical formulae, used in
	{computer graphics}.  A surface P(u, v), where u and v vary
	orthogonally from 0 to 1 from one edge of the surface to the
	other, is defined by a set of (n+1)*(m+1) "control points"
	(X(i, j), Y(i, j), Z(i, j)) for i = 0 to n, j = 0 to m.

		P(u, v) = Sum i=0..n {Sum j=0..m [
			(X(i, j), Y(i, j), Z(i, j))
			* B(i, n, u) * B(j, m, v)]}

		B(i, n, u) = C(n, i) * u^i * (1-u)^(n-i)

		C(n, i) = n!/i!/(n-i)!

	Bezier surfaces are an extension of the idea of {Bezier
	curves}, and share many of their properties.

	(12 Jun 1996)

BFI

	{brute force and ignorance}

BGP

	{Border Gateway Protocol}

BHC Code

	{Bose-Chaudhuri-Hocquenghem Code}

bib

	{BibTeX}

bible

	<publication> The most detailed and authoritative reference
	for a particular language, {operating system} or other complex
	software system.  It is also used to denote one of a small
	number of such books such as {Knuth} and {K&R}.

	(03 Dec 1996)

BIBOP

	{Big bag of pages}

BibTeX

	<text, tool> A {Tex} extension package for bibliographic
	citations, distributed with {LaTeX}.  BibTeX uses a
	style-independent bibliography database (.bib file) to produce
	a list of sources, in a customisable style, from citations in
	a Latex document.  It also supports some other formats.

	BibTeX is a separate program from LaTeX.  LaTeX writes
	information about citations and which .bib files to use in a
	".aux" file.  BibTeX reads this file and outputs a ".bbl" file
	containing LaTeX commands to produce the source list.  You
	must then run LaTeX again to incorporate the source list in
	your document.  In typeset documents, "BibTeX" is written in
	upper case, with the "IB" slightly smaller and with the "E" as
	a subscript.  BibTeX is described in the {LaTeX} book by
	Lamport.

BiCapitalisation

	The act said to have been performed on trademarks (such as
	{PostScript}, {NeXT}, {NeWS}, {VisiCalc}, {FrameMaker},
	{TK!solver}, {EasyWriter}) that have been raised above the
	ruck of common coinage by nonstandard capitalisation.  Too
	many {marketroid} types think this sort of thing is really
	cute, even the 2,317th time they do it.

	Compare {studlycaps}.

	(23 Feb 1995)

BiCMOS

	<hardware> A manufacturing process for semiconductor devices
	that combines {bipolar} and {CMOS} to give the best balance
	between available output current and power consumption.

	(28 Mar 1995)

bidirectional printing

	<hardware> A feature of a printer whose printer head can print
	both when moving left to right and when moving right to left.

	Also known as "{boustrophedonic}".

	(13 Apr 1995)

bi-endian

	Silicon schizophrenia.  Processors and other chips that have
	can be switched to work in in {big-endian} or {little-endian}
	mode.

	The {PowerPC} chip has this ability, which allows it to run
	the little-endian {Windows NT}, or the big-endian {Mac OS/PPC}.

	(23 Feb 1995)

BIFF

	/bif/ (Or "B1FF", from {Usenet}) The most famous {pseudo}, and
	the prototypical {newbie}.  Articles from BIFF are
	characterised by all uppercase letters sprinkled liberally
	with bangs, typos, "cute" misspellings (EVRY BUDY LUVS GOOD
	OLD BIFF CUZ HE'S A K00L DOOD AN HE RITES REEL AWESUM THINGZ
	IN CAPITULL LETTRS LIKE THIS!!!), use (and often misuse) of
	fragments of {chat} abbreviations, a long {sig block}
	(sometimes even a {doubled sig}), and unbounded naivete.  BIFF
	posts articles using his elder brother's VIC-20.  BIFF's
	location is a mystery, as his articles appear to come from a
	variety of sites.  However, {BITNET} seems to be the most
	frequent origin.  The theory that BIFF is a denizen of BITNET
	is supported by BIFF's (unfortunately invalid) {electronic
	mail address}: <BIFF@BIT.NET>.

	[1993: Now It Can Be Told!  My spies inform me that BIFF was
	originally created by Joe Talmadge <jat@cup.hp.com>, also the
	author of the infamous and much-plagiarised "Flamer's Bible".
	The BIFF filter he wrote was later passed to Richard Sexton,
	who posted BIFFisms much more widely.  Versions have since
	been posted for the amusement of the net at large. - ESR]

	(22 Sep 1997)

biff

	/bif/ To notify someone of incoming mail.  From the {BSD}
	utility "biff(1)", which was in turn named after a friendly
	golden Labrador who used to chase frisbees in the halls at UCB
	while {4.2BSD} was in development (it had a well-known habit
	of barking whenever the mailman came).  No relation to {BIFF}.

\big

	Prefix of several {LaTeX} commands implying a larger symbol.
	See the command without "big".  Often used to convert a dyadic
	operator into a function which operates on a set.  E.g. \sqcup,
	\bigsqcup.

	(03 Feb 1995)

Big bag of pages

	(BIBOP) Where data objects are tagged with some kind of
	descriptor (giving their size or type for example) memory can
	be saved by storing objects with the same descriptor in one
	"page" of memory.  The most significant bits of an object's
	address are used as the BIBOP page number.  This is looked up
	in a BIBOP table to find the descriptor for all objects in
	that page.

	This idea is similar to the "zones" used in some {Lisp}
	systems (e.g. {LeLisp}).

	[David R. Hanson.  "A portable storage management system for
	the Icon programming language".  Software - Practise and
	Experience, 10:489-500 1980].

	(29 Nov 1994)

big blue

	{International Business Machines}

big-endian

	(From Swift's "Gulliver's Travels" via the famous paper "On
	Holy Wars and a Plea for Peace" by Danny Cohen, USC/ISI IEN
	137, dated April 1, 1980)

	The Lilliputians, being very small, had correspondingly small
	political problems.  The Big-Endian and Little-Endian parties
	debated over whether soft-boiled eggs should be opened at the
	big end or the little end.

	1. <hardware> A computer architecture in which, within a given
	multi-byte numeric representation, the most significant byte
	has the lowest address (the word is stored "big-end-first").
	Most processors, including the IBM 370 family, the {PDP-10},
	the {Motorola} {microprocessor} families, and most of the
	various {RISC} designs current in mid-1993, are big-endian.
	See {NUXI problem}, {swab}.

	2. <networking, standard> An {electronic mail address} the
	wrong way round.  Most of the world follows the {Internet}
	{hostname} {standard} (see {FQDN}) and writes e-mail addresses
	starting with the name of the computer and ending up with the
	{country code} (e.g. dbh@doc.ic.ac.uk).  In the United Kingdom
	the {Joint Networking Team} decided to do it the other way
	round (e.g. me@uk.ac.wigan.cs) before the {Internet} {domain}
	standard was established.  Most {gateway site}s have
	{ad-hockery} in their {mailer}s to handle this, but can still
	be confused.  In particular, the address above could be in the
	U.K. (domain "uk") or Czechoslovakia (domain "cs").

	There are signs at last (July 1994) that this parochial
	idiosyncracy may be abolished, at least in the .ac.uk domain,
	and mailers may start to reject big-endian addresses.  Maybe
	one day Americans will start to use the .us {country code}
	{domain} instead of .com, .edu, .mil, .gov etc.  By that time
	the net will probably reach other planets and we'll have a
	whole new set of problems.

	See also {little-endian}, {middle-endian}.

	(07 Mar 1995)

Big Gray Wall

	<jargon> What faces a {VMS} user searching for documentation.
	A full VMS kit comes on a pallet, the documentation taking up
	around 15 feet of shelf space before the addition of layered
	products such as {compiler}s, {database}s, multi-vendor
	networking, and programming tools.  Recent (since VMS version
	5) DEC documentation comes with grey binders; under VMS
	version 4 the binders were orange and under version 3 they
	were blue.  Often contracted to "Gray Wall".

	(07 Mar 1995)

big iron

	Large, expensive, ultra-fast computers.  Used generally of
	{number crunching} supercomputers such as {Cray}s, but can
	include more conventional big commercial {IBM}ish
	{mainframe}s.  Term of approval; compare {heavy metal}, oppose
	{dinosaur}.

BIG-LAN

	["BIG-LAN Frequently Asked Questions Memo", BIG-LAN DIGEST
	V4:I8, February 14, 1992.]

Bigloo

	A {Scheme} {interpreter}, compiler and {run-time system} by
	Manuel Serrano <Manuel.Serrano@inria.fr> which aims to deliver
	small, fast stand alone {application}s.  The compiler produces
	{ANSI C} and supports optimisation.  Bigloo conforms to the
	{IEEE Scheme} {standard} with some extensions for {regular
	expression} handling.  It runs on {Sun}, {Sony} {News}, {SGI},
	{Linux}, {HP-UX} and is easy to port to any {Unix} system.
	Version 1.4.

	{(ftp://ftp.inria.fr/INRIA/Projects/icsla/Implementations/)}

	(08 Sep 1993)

bignum

	<programming> /big'nuhm/ (Originally from {MIT} {MacLISP}) A
	{multiple-precision} computer representation for very large
	integers.

	Most computer languages provide a type of data called
	"integer", but such computer integers are usually limited in
	size; usually they must be smaller than 2^31 (2,147,483,648)
	or (on a {bitty box}) 2^15 (32,768).  If you want to work with
	numbers larger than that, you have to use {floating-point}
	numbers, which are usually accurate to only six or seven
	decimal places.  Computer languages that provide bignums can
	perform exact calculations on very large numbers, such as
	1000! (the factorial of 1000, which is 1000 times 999 times
	998 times ... times 2 times 1).  For example, this value for
	1000! was computed by the {MacLISP} system using bignums:

	40238726007709377354370243392300398571937486421071
	46325437999104299385123986290205920442084869694048
	00479988610197196058631666872994808558901323829669
	94459099742450408707375991882362772718873251977950
	59509952761208749754624970436014182780946464962910
	56393887437886487337119181045825783647849977012476
	63288983595573543251318532395846307555740911426241
	74743493475534286465766116677973966688202912073791
	43853719588249808126867838374559731746136085379534
	52422158659320192809087829730843139284440328123155
	86110369768013573042161687476096758713483120254785
	89320767169132448426236131412508780208000261683151
	02734182797770478463586817016436502415369139828126
	48102130927612448963599287051149649754199093422215
	66832572080821333186116811553615836546984046708975
	60290095053761647584772842188967964624494516076535
	34081989013854424879849599533191017233555566021394
	50399736280750137837615307127761926849034352625200
	01588853514733161170210396817592151090778801939317
	81141945452572238655414610628921879602238389714760
	88506276862967146674697562911234082439208160153780
	88989396451826324367161676217916890977991190375403
	12746222899880051954444142820121873617459926429565
	81746628302955570299024324153181617210465832036786
	90611726015878352075151628422554026517048330422614
	39742869330616908979684825901254583271682264580665
	26769958652682272807075781391858178889652208164348
	34482599326604336766017699961283186078838615027946
	59551311565520360939881806121385586003014356945272
	24206344631797460594682573103790084024432438465657
	24501440282188525247093519062092902313649327349756
	55139587205596542287497740114133469627154228458623
	77387538230483865688976461927383814900140767310446
	64025989949022222176590433990188601856652648506179
	97023561938970178600408118897299183110211712298459
	01641921068884387121855646124960798722908519296819
	37238864261483965738229112312502418664935314397013
	74285319266498753372189406942814341185201580141233
	44828015051399694290153483077644569099073152433278
	28826986460278986432113908350621709500259738986355
	42771967428222487575867657523442202075736305694988
	25087968928162753848863396909959826280956121450994
	87170124451646126037902930912088908694202851064018
	21543994571568059418727489980942547421735824010636
	77404595741785160829230135358081840096996372524230
	56085590370062427124341690900415369010593398383577
	79394109700277534720000000000000000000000000000000
	00000000000000000000000000000000000000000000000000
	00000000000000000000000000000000000000000000000000
	00000000000000000000000000000000000000000000000000
	00000000000000000000000000000000000000000000000000
	000000000000000000.

	(27 Jun 1996)

bigot

	A person who is religiously attached to a particular computer,
	language, operating system, editor, or other tool (see
	{religious issues}).  Usually found with a specifier; thus,
	"Cray bigot", "ITS bigot", "APL bigot", "VMS bigot", "Berkeley
	bigot".  Real bigots can be distinguished from mere partisans
	or zealots by the fact that they refuse to learn alternatives
	even when the march of time and/or technology is threatening
	to obsolete the favoured tool.  It is truly said "You can tell
	a bigot, but you can't tell him much."  Compare {weenie}.

Big Red Switch

	[IBM] The power switch on a computer, especially the
	"Emergency Pull" switch on an IBM {mainframe} or the power
	switch on an IBM PC where it really is large and red.  "This
	!@%$% {bitty box} is hung again; time to hit the Big Red
	Switch."  Sources at IBM report that, in tune with the
	company's passion for {TLA}s, this is often abbreviated as
	"BRS" (this has also become established on FidoNet and in the
	{IBM PC} world).  It is alleged that the emergency pull switch
	on an {IBM 360}/91 actually fired a non-conducting bolt into
	the main power feed; the BRSes on more recent mainframes
	physically drop a block into place so that they can't be
	pushed back in.  People get fired for pulling them, especially
	inappropriately (see also {molly-guard}).  Compare {power
	cycle}, {three-finger salute}, {120 reset}; see also {scram
	switch}.

Big Room

	<jargon, humour> The extremely large room with the blue
	ceiling and intensely bright light (during the day) or black
	ceiling with lots of tiny night-lights (during the night)
	found outside all computer installations.  "He can't come to
	the phone right now, he's somewhere out in the Big Room."

	(04 Mar 1996)

big win

	<jargon> An {MIT} term for a {Good Thing} or a lucky accident.

	(06 Mar 1996)

bijection

	A function is bijective or a bijection or a one-to-one
	correspondence if it is both {injective} (no two values map to
	the same value) and {surjective} (for every element of the
	{codomain} there is some element of the {domain} which maps to
	it).  I.e. there is exactly one element of the domain which
	maps to each element of the codomain.  Only bijective
	functions have inverses f' where f(f'(x)) = f'(f(x)) = x.

	See also {injection}, {surjection}.

	(02 Nov 1994)

Bill Gates

	<person> William Henry Gates III, Chief Executive Officer of
	{Microsoft}, which he co-founded in 1975 with Paul Allen.  In
	1994 Gates is a billionaire, worth $9.35b and {Microsoft} is
	worth about $27b.  He was a {computer nerd} who dropped out of
	Harvard and one of the first programmers to oppose {software
	piracy} ("Open Letter to Hobbyists," Computer Notes, February
	3, 1976).

	(02 Mar 1995)

Bill Joy

	{William Joy}

binaries

	{binary file}

binary

	1. <mathematics> Base two.  A number representation consisting
	of 0's and 1's used by practically all computers because of
	its ease of implementation using digital electronics and
	{Boolean algebra}.

	2. <file format> Any file format for {digital} {data} encoded
	as a sequence of {bit}s but not consisting of a sequence of
	printable {characters} ({text}).  The term is often used for
	executable {machine code}.

	Of course all digital data, including characters, is actually
	binary data (unless it uses some (rare) system with more than
	two discrete levels) but the distinction between binary and
	text is well established.

	(20 Feb 1997)

binary coded decimal

	(BCD) Number representation where a number is expressed as a
	sequence of decimal digits and then each decimal digit is
	encoded as a four bit binary number.  E.g. decimal 92 would be
	encoded as the eight bit sequence 1001 0010.  It is easier to
	convert decimal numbers to and from BCD than binary and it is
	possible to build hardware which operates directly on BCD
	though it is often converted to binary for arithmetic
	processing.

Binary Compatibility Standard

	<programming, standard> (BCS) The {ABI} of {88open}.

	(03 Jul 1997)

binary counter

	<electronics, hardware> A digital circuit which has a clock
	input and a number of count outputs which give the number of
	clock cycles.  The output may change either on rising or
	falling clock edges.  The circuit may also have a reset input
	which sets all outputs to zero when asserted.  The counter may
	be either a {synchronous counter} or a {ripple counter}.

	(03 Jul 1997)

binary exponential backoff

	An {algorithm} for dealing with contention in the use of a
	network.  To transmit a {packet} the {host} sets a local
	parameter, L to 1 and transmits in one of the next L {slot}s.
	If a {collision} occurs, it doubles L and repeats.

binary file

	<storage, operating system> A file containing arbitrary bytes
	or words, as opposed to a {text file} containing only
	printable characters (e.g. {ASCII} characters with codes 10,
	13, and 32-126).

	On modern {operating systems} a text file is simply a binary
	file that happens to contain only printable characters, but
	some older systems distinguish the two file types, requiring
	programs to handle them differently.

	A common class of binary files is programs in {machine
	language} ("{executable} files") ready to load into memory and
	execute.  Binary files may also be used to store data output
	by a program, and intended to be read by that or another
	program but not by humans.  Binary files are more efficient
	for this purpose because the data (e.g. numerical data) does
	not need to be converted between the binary form used by the
	{CPU} and a printable (ASCII) representation.  The
	disadvantage is that it is usually necessary to write special
	purpose programs to manipulate such files since most general
	purpose utilities operate on text files.  There is also a
	problem sharing binary numerical data between processors with
	different {endian}ness.

	Some communications {protocols} handle only text files,
	e.g. most {electronic mail} systems, though as of 1995 this is
	changing slowly.  The {Unix} utility {uuencode} can be used to
	convert binary data to text for transmission by e-mail.  The
	{FTP} utility must be put into "binary" mode in order to copy
	a binary file since in its default "ascii" mode translates
	between the different text line terminator characters used on
	the sending and receiving computers.

	Confusingly, some files produced by {wordprocessors}, and
	{rich text} files, are actually binary files because they
	contain non-printable characters and require special programs
	to view, edit, and print them.

	(14 Dec 1995)

binary large object

	<database> (BLOB) A large block of data stored in a
	{database}, such as an {image} or {sound} file.  A BLOB has no
	structure which can be interpreted by the {database management
	system} but is known only by its size and location.

	(04 Nov 1997)

binary search

	<algorithm> A search {algorithm} which repeatedly divides an
	ordered {search space} in half according to how the required
	(key) value compares with the middle element.

	The following pseudo-{C} routine performs a binary search
	return the index of the element of vector "thing[first..last]"
	equal to "target":

	 if (target < thing[first] || target > thing[last])
	   return NOT_FOUND;
	 while (first < last)
	 {
	   mid = (first+last)/2;	/* truncate to integer */
	   if (target < thing[mid])
	     last = mid;
	   else if (target > thing[mid])
	     first = mid+1;
	   else
	     return mid;
	 }
	 if (target == thing[last])
	   return last;
	 return NOT_FOUND;

	(10 Apr 1995)

Binary Synchronous Transmission

	<protocol> (Bisynch) An {IBM} link {protocol}, developed in
	the 1960 and popular in the 1970s and 1980s.

	Binary Synchronous Transmission has been largely replaced in
	IBM environments with {SDLC}.  Bisync was developed for
	{batch} communications between a {System 360} computer and the
	IBM 2780 and 3780 {Remote Job Entry} (RJE) {terminals}.  It
	supports RJE and on-line terminals in the {CICS}/{VSE}
	environment.  It operates with {EBCDIC} or {ASCII} {character
	sets}.  It requires that every message be acknowledged ({ACK})
	or negatively acknowledged ({NACK}) so it has high
	transmission overhead.  It is typically character oriented and
	{half-duplex}, although some of the bisync protocol flavours
	or dialects support binary transmission and {full-duplex}
	operation.

	(07 Jan 1997)

binary tree

	(btree) A {tree} in which each node has at most two successors
	or child nodes.  In {Haskell} this could be represented as

		data BTree a = NilTree
			     | Node a (BTree a) (BTree a)

	See also {balanced tree}.

	(29 Nov 1994)

BIND

	{Berkeley Internet Name Domain}

bindery

	<networking> A {Novell Netware} database that contains
	definitions for entities such as users, groups, and
	{workgroups}.  The bindery allows the network supervisor to
	design an organised and secure operating environment based on
	the individual requirements of each of these entities.

	The bindery has three components: objects, properties, and
	property data sets.  Objects represent any physical or logical
	entity, including users, user groups, file servers.
	Properties are characteristics of each object (e.g.
	passwords, account restrictions, {internetwork addresses}).
	Property data sets are the values assigned to an entity's
	bindery properties.

	[Netware Version 3.11 "Concepts" documentation (a glossary of
	Netware-related terms)].

	(07 Mar 1996)

binding handle

	<networking> An identifier representing the connection between
	a {client} and {server}.  An association between client/server
	end-points and {protocols}.

	(18 Mar 1997)

binding-time analysis

	<compiler> An analysis to identify sub-expressions which can
	be evaluated at {compile-time} or where versions of a function
	can be generated and called which are specialised to certain
	values of one or more arguments.

	See {partial evaluation}.

	(28 Mar 1995)

BinHex

	<file format> A {Macintosh} format for representing a {binary
	file} using only {printable character}s.  The file is
	converted to lines of letters, numbers and punctuation.
	Because BinHex files are simply text they can be sent through
	most {electronic mail} systems and stored on most computers.
	However the conversion to text makes the file larger, so it
	takes longer to transmit a file in BinHex format than if the
	file was represented some other way.

	{Filename extension}: .hqx.

	See also {BinHex 4.0}, {uuencode}.

	[Encoding algorithm?]

	(30 Nov 1994)

Binhex 4.0

	<file format> A seven bit wide representation of a {Macintosh}
	file with {CRC} error checking.  Binhex 4.0 files are designed
	for communication of Mac files over long distance, possibly
	noisy, seven bit wide paths.

	[Difference from other binhex formats?]

	(17 Sep 1996)

BinProlog

	<language> Probably the fastest freely available {C}-emulated
	{Prolog}.  BinProlog features:

	logical and permanent {global variable}s; backtrackable
	{destructive assignment}; circular term {unification};
	extended {DCG}s (now built into the {engine} as "invisible
	grammars"); {intuitionistic} and {linear implication} based
	{hypothetical reasoning}; a {Tcl}/{Tk} interface.

	Version 3.30 runs on {SPARC}/{Solaris} 2.x, {SunOS} 4.x; {DEC
	Alpha} 64-bit version; {DEC} {MIPS}; {SGI} {MIPS}; {68k} -
	{NeXT}, {Sun3}; {IBM RS6000}; {HP PA-RISC} (two variants);
	{Intel 80386}, {Intel 486}/{Linux}, {MS-DOS}, {Microsoft
	Windows 3.1} (with DOS-extender {go32} v1.10).

	{Multi-BinProlog} is a {multi-threaded} {Linda}-style parallel
	extension to BinProlog for {Solaris} 2.3.

	{(ftp://clement.info.umoncton.ca/BinProlog/)}

	E-mail: Paul Tarau <tarau@info.umoncton.ca>.

	(04 Apr 1995)

BIOR

	An early system on {UNIVAC} I or II.

	[Listed in CACM 2(5):16 (May 1959)].

	(01 Apr 1995)

BIOS

	{Basic Input/Output System}

BIP

	An incorrect singular of {BIPS}.  One billion instructions per
	second is 1 BIPS, not 1 BIP.

bipartite graph

	See {complete graph}.

bipolar

	1. <electronics> See {bipolar transistor}.

	2. <communications> In digital transmission, an electrical
	line signalling method where the mark value alternates between
	positive and negative polarities.

	See also {AMI}.

	(02 Mar 1995)

bipolar transistor

	<electronics> A {transistor} made from a sandwich of n- and
	p-type {semiconductor} material: either npn or pnp.  The
	middle section is known as the "base" and the other two as the
	"collector" and "emitter".  When used as an amplifying
	element, the base to emitter junction is in a "forward-biased"
	(conducting) condition, and the base to collector junction is
	"reverse-biased" or non-conducting.  Small changes in the base
	to emitter current (the input signal) cause either {holes}
	(for pnp devices) or free {electrons} (for npn) to enter the
	base from the emitter.  The attracting voltage of the
	collector causes the majority of these charges to cross into
	and be collected by the collector, resulting in amplification.

	Contrast {field effect transistor}.

	(04 Oct 1995)

BIPS

	Billion (10^9) instructions per second.  Same as {GIPS}.

Bird-Meertens Formalism

	<theory, programming> (BMF) (Or "Squiggol") A calculus for
	derivation of {functional program}s from a specification.  It
	consists of a set of {higher-order function}s that operate on
	lists including {map}, {fold}, {scan}, {filter}, inits, tails,
	{cross product} and {function composition}.

	["A Calculus of Functions for Program Derivation", R.S. Bird,
	in Res Topics in Fnl Prog, D. Turner ed, A-W 1990].

	["The Squiggolist", ed Johan Jeuring, published irregularly by
	CWI Amsterdam].

	(01 May 1995)

Birds Of a Feather

	(BOF) (From the saying "Birds of a feather flock together") An
	informal discussion group, scheduled on a conference program
	or formed ad hoc, to consider a specific issue or subject.  It
	is not clear where or when this term originated, but it is now
	associated with the {USENIX} conferences for {Unix} techies
	and was already established there by 1984.  It was used
	earlier than that at {DECUS} conferences and is reported to
	have been common at {SHARE} meetings as far back as the early
	1960s.

	(11 Oct 1994)

BISDN

	Broadband {Integrated Services Digital Network}.

Bison

	{GNU}'s replacement for the {yacc} {parser generator}.  Runs
	under {Unix} and {Atari}.  Author: Robert Corbett.  Version:
	1.22.  Bison will apply the {GNU} {General Public License} to
	your code.

	FTP from your nearest {GNU archive site}.
	{(ftp://prep.ai.mit.edu/pub/gnu/bison-1.21.tar.Z)}.  E-mail:
	<bug-gnu-utils@prep.ai.mit.edu>.

	{Bison++} is a version which produces {C++} output.

	(14 Sep 1993)

Bison++

	GNU's Yacc parser generator retargeted to C++ by Alain
	Coetmeur <coetmeur@icdc.fr>.  Version 1.04.

	{(ftp://iecc.com/pub/file/bison++.tar.gz)}.
	{(ftp://iecc.com/pub/file/misc++.tar.gz)}.
	{(ftp://psuvax1.cs.psu.edu/pub/src/gnu/bison++-1.04.tar.Z)}.

	(08 Jul 1993)

BIST

	{Built-in Self Test}

bisync

	{Binary Synchronous Transmission}

bit

	<unit> (b) binary digit.

	The unit of information; the amount of information obtained by
	asking a yes-or-no question; a computational quantity that can
	take on one of two values, such as true and false or 0 and 1;
	the smallest unit of storage - sufficient to hold one bit.

	A bit is said to be "set" if its value is true or 1, and
	"reset" or "clear" if its value is false or 0.  One speaks of
	setting and clearing bits.  To {toggle} or "invert" a bit is
	to change it, either from 0 to 1 or from 1 to 0.

	The term "bit" first appeared in print in the computer-science
	sense in 1949, and seems to have been coined by early computer
	scientist John Tukey.  Tukey records that it evolved over a
	lunch table as a handier alternative to "bigit" or "binit".

	See also {flag}, {trit}, {mode bit}, {byte}, {word}.

	(03 Nov 1996)

bit bang

	Transmission of data on a {serial line} accomplished by
	rapidly changing a single output bit, in software, at the
	appropriate times.  The technique is a simple loop with eight
	OUT and SHIFT instruction pairs for each byte.  Input is more
	interesting.  And {full duplex} (doing input and output at the
	same time) is one way to separate the real hackers from the
	{wannabee}s.

	Bit bang was used on certain early models of {Prime}
	computers, presumably when {UART}s were too expensive, and on
	archaic {Zilog Z80} micros with a {Zilog} PIO but no SIO.  In
	an interesting instance of the {cycle of reincarnation}, this
	technique is now (1991) coming back into use on some {RISC}
	architectures because it consumes such an infinitesimal part
	of the processor that it actually makes sense not to have a
	{UART}.

bit bashing

	(Also "bit diddling" or {bit twiddling}).  Any of several
	kinds of low-level programming characterised by manipulation
	of {bit}, {flag}, {nibble}, and other
	smaller-than-character-sized pieces of data.  These include
	low-level device control, encryption algorithms, checksum and
	error-correcting codes, hash functions, some flavours of
	graphics programming (see {bitblt}), and assembler/compiler
	code generation.  May connote either tedium or a real
	technical challenge (more usually the former).  "The command
	decoding for the new tape driver looks pretty solid but the
	bit-bashing for the control registers still has bugs."  See
	also {bit bang}, {mode bit}.

bitblt

	/bit'blit/ [{BLT}] 1. Any of a family of closely related
	algorithms for moving and copying rectangles of bits between
	main and display memory on a {bit-mapped} device, or between
	two areas of either main or display memory (the requirement to
	do the {Right Thing} in the case of overlapping source and
	destination rectangles is what makes BitBlt tricky).

	2. {blit}, {BLT}.

bit bucket

	<jargon> 1. The universal data sink (originally, the mythical
	receptacle used to catch bits when they fall off the end of a
	register during a shift instruction).  Discarded, lost, or
	destroyed data is said to have "gone to the bit bucket".  On
	{Unix}, often used for {/dev/null}.  Sometimes amplified as
	"the Great Bit Bucket in the Sky".

	2. The place where all lost mail and news messages eventually
	go.  The selection is performed according to {Finagle's Law};
	important mail is much more likely to end up in the bit bucket
	than junk mail, which has an almost 100% probability of
	getting delivered.  Routing to the bit bucket is automatically
	performed by mail-transfer agents, news systems, and the lower
	layers of the network.

	3. The ideal location for all unwanted mail responses: "Flames
	about this article to the bit bucket."  Such a request is
	guaranteed to overflow one's mailbox with flames.

	4. Excuse for all mail that has not been sent.  "I mailed you
	those figures last week; they must have landed in the bit
	bucket."  Compare {black hole}.

	This term is used purely in jest.  It is based on the fanciful
	notion that bits are objects that are not destroyed but only
	misplaced.  This appears to have been a mutation of an earlier
	term "bit box", about which the same legend was current;
	old-time hackers also report that trainees used to be told
	that when the CPU stored bits into memory it was actually
	pulling them "out of the bit box".

	Another variant of this legend has it that, as a consequence
	of the "parity preservation law", the number of 1 bits that go
	to the bit bucket must equal the number of 0 bits.  Any
	imbalance results in bits filling up the bit bucket.  A
	qualified computer technician can empty a full bit bucket as
	part of scheduled maintenance.

	In contrast, a "{chad box}" is a real container used to catch
	{chad}.  This may be related to the origin of the term "bit
	bucket" [Comments ?].

	(20 Nov 1996)

bit decay

	See {bit rot}.  People with a physics background tend to
	prefer this variant for the analogy with particle decay.  See
	also {computron}, {quantum bogodynamics}.

bit diddling

	See {bit bashing}.

bite

	<spelling> It's spelled "{byte}" to avoid confusion with
	"{bit}".

	(13 Dec 1996)

bitmap

	<graphics, file format> A data file or structure which
	corresponds {bit} for bit with an {image} displayed on a
	screen, probably in the same format as it would be stored in
	the display's {video memory} or maybe as a {device independent
	bitmap}.  A bitmap is characterised by the width and height of
	the image in {pixels} and the number of bits per pixel which
	determines the number of shades of grey or colours it can
	represent.  A bitmap representing a coloured image (a
	"{pixmap}") will usually have pixels with between one and
	eight bits for each of the red, green, and blue components,
	though other colour encodings are also used.  The green
	component sometimes has more bits that the other two to cater
	for the human eye's greater discrimination in this component.

	See also {vector graphics}, {image formats}.

	(21 Sep 1996)

bitmap display

	<hardware> A computer output device where each {pixel}
	displayed on the {monitor} screen corresponds directly to one
	or more {bits} in the computer's {video memory}.  Such a
	display can be updated extremely rapidly since changing a
	pixel involves only a single processor write to memory
	compared with a {terminal} or {VDU} connected via a serial
	line where the speed of the serial line limits the speed at
	which the display can be changed.

	Most modern {personal computers} and {workstations} have
	bitmap displays, allowing the efficient use of {graphical user
	interfaces}, interactive graphics and a choice of on-screen
	{fonts}.  Some more expensive systems still delegate graphics
	operations to dedicated hardware such as {graphic
	accelerators}.

	The bitmap display might be traced back to the earliest days
	of computing when the Manchester University Mark I(?)
	computer, developed by F.C. Williams and T. Kilburn shortly
	after the Second World War.  This used a {storage tube} as its
	{working memory}.  Phosphor dots were used to store single
	bits of data which could be read by the user and interpreted
	as binary numbers.

	[Is this history correct?  Was it ever used to display
	"graphics"?  What was the resolution?]

	(16 Feb 1995)

bitmap font

	<text> A {font} where each character is stored as an {array}
	of {pixel}s (a {bitmap}).  Such fonts are not easily scalable,
	in contrast to {vectored font}s (like those used in
	{PostScript}).

	[Examples?]

	(16 Feb 1995)

bitmapped display

	{bitmap display}

bit mask

	<programming> A pattern of {binary} values which is combined
	with some value using {bitwise} AND with the result that bits
	in the value in positions where the mask is zero are also set
	to zero.  For example, if, in {C}, we want to test if bits 0
	or 2 of x are set, we can write

		int mask = 5;	/* binary 101 */

		if (x & mask) ...

	A bit mask might also be used to set certain bits using
	bitwise OR, or to invert them using bitwise {exclusive OR}.

	(12 May 1995)

BITNET

	<networking> /bit'net/ (Because It's Time NETwork) An academic
	and research computer network connecting approximately 2500
	computers.  BITNET provides interactive, {electronic mail} and
	file transfer services, using a {store-and-forward}
	{protocol}, based on {IBM} {Network Job Entry} protocols.

	Bitnet-II encapsulates the Bitnet protocol within {IP}
	{packet}s and depends on the {Internet} to route them.  BITNET
	traffic and Internet traffic are exchanged via several
	{gateway} hosts.

	BITNET is now operated by {CREN}.

	BITNET is everybody's least favourite piece of the network.
	The BITNET hosts are a collection of {IBM} {dinosaur}s and
	{VAXen} (the latter with lobotomised communications hardware)
	that communicate using 80-character {EBCDIC} card images (see
	{eighty-column mind}); thus, they tend to mangle the {header}s
	and text of third-party traffic from the rest of the
	{ASCII}/{RFC 822} world with annoying regularity.  BITNET is
	also notorious as the apparent home of {BIFF}.

	(29 Nov 1994)

bit-paired keyboard

	(Obsolete, or "bit-shift keyboard") A non-standard keyboard
	layout that seems to have originated with the {Teletype}
	{ASR-33} and remained common for several years on early
	computer equipment.  The ASR-33 was a mechanical device (see
	{EOU}), so the only way to generate the character codes from
	keystrokes was by some physical linkage.  The design of the
	ASR-33 assigned each character key a basic pattern that could
	be modified by flipping bits if the SHIFT or the CTRL key was
	pressed.  In order to avoid making the thing more of a Rube
	Goldberg {kluge} than it already was, the design had to group
	characters that shared the same basic bit pattern on one key.

	Looking at the {ASCII} chart, we find:

	 high  low bits
	 bits  0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
	 010        !    "    #    $    %    &    '    (    )
	 011   0    1    2    3    4    5    6    7    8    9

	This is why the characters !"#$%&'() appear where they do on a
	Teletype (thankfully, they didn't use shift-0 for space).
	This was *not* the weirdest variant of the {QWERTY} layout
	widely seen, by the way; that prize should probably go to one
	of several (differing) arrangements on {IBM}'s even clunkier
	026 and 029 card punches.

	When electronic {terminals} became popular, in the early
	1970s, there was no agreement in the industry over how the
	keyboards should be laid out.  Some vendors opted to emulate
	the Teletype keyboard, while others used the flexibility of
	electronic circuitry to make their product look like an office
	typewriter.  These alternatives became known as "bit-paired"
	and "typewriter-paired" keyboards.  To a hacker, the
	bit-paired keyboard seemed far more logical - and because most
	hackers in those days had never learned to touch-type, there
	was little pressure from the pioneering users to adapt
	keyboards to the typewriter standard.

	The doom of the bit-paired keyboard was the large-scale
	introduction of the computer terminal into the normal office
	environment, where out-and-out technophobes were expected to
	use the equipment.  The "typewriter-paired" standard became
	universal, "bit-paired" hardware was quickly junked or
	relegated to dusty corners, and both terms passed into disuse.

	(20 Feb 1995)

bit pattern

	<data> A sequence of {bit}s, in a memory, a communications
	channel or some other device.  The term is used to contrast
	this with some higher level interpretation of the bits such as
	an integer or an {image}.

	(03 Jul 1997)

bit plane

	<graphics> (Or "bitplane") The memory in a graphic display
	device which holds a complete one-bit-per-{pixel} image.
	Several bit planes may be used in conjunction to give more
	bits per pixel or to overlay several images or mask one with
	another.

	"Bit plane" may be used as a synonym for "{bitmap}", though
	the latter suggests the data itself rather than the memory and
	also suggests a graphics file format.

	(16 Mar 1997)

bit rot

	(Or {bit decay}) Hypothetical disease the existence of which
	has been deduced from the observation that unused programs or
	features will often stop working after sufficient time has
	passed, even if "nothing has changed".  The theory explains
	that bits decay as if they were radioactive.  As time passes,
	the contents of a file or the code in a program will become
	increasingly garbled.

	There actually are physical processes that produce such
	effects (alpha particles generated by trace radionuclides in
	ceramic chip packages, for example, can change the contents of
	a computer memory unpredictably, and various kinds of subtle
	media failures can corrupt files in mass storage), but they
	are quite rare (and computers are built with error-detecting
	circuitry to compensate for them).  The notion long favoured
	among hackers that cosmic rays are among the causes of such
	events turns out to be a myth; see the {cosmic rays} entry for
	details.

	Bit rot is the notional cause of {software rot}.

	(29 Nov 1994)

bit slice

	A technique for constructing a processor from modules, each of
	which processes one bit-field or "slice" of an operand.  Bit
	slice processors usually consist of an {ALU} of 1, 2, 4 or 8
	bits and control lines (including carry or overflow signals
	usually internal to the {CPU}).  For example, two 4-bit ALUs
	could be arranged side by side, with control lines between
	them, to form an 8-bit ALU.  A sequencer executes a program to
	provide data and control signals.  The {AMD Am2901} is an
	example.

	(15 Nov 1994)

bits per inch

	<unit> (BPI) A measure of the recording density of a {magnetic
	tape} or {disk}.

	(13 Apr 1995)

bits per second

	<communications> (bps) The rate at which data is sent over
	some communication line.

	For example, a {modem}'s data rate is usually measured in
	{kilobits} per second.  In 1996, the maximum modem speed for
	use on public telephone lines is 33.6 kbps, but this is set to
	rise to 56 kbps next year.

	(08 Dec 1996)

bit stuffing

	<protocol> A {protocol} which guarantees the receiver of
	{synchronous} data can recover the sender's clock.  When the
	data stream sent contains a large number of adjacent bits
	which cause no transition of the signal, the receiver cannot
	adjust its clock to maintain proper synchronised reception.
	To eliminate the possibility of such a pathological case, when
	a preset number of transitionless bits have been transmitted,
	a bit which does cause a transition is "stuffed" (transmitted)
	by the sender.  The receiver follows the same protocol and
	removes the stuffed bit after the specified number of
	transitionless bits, but can use the stuffed bit to recover
	the sender's clock.

	The advantage of bit stuffing is that only a bit (not a
	{byte}) is inserted in the data stream, and that only when the
	content of the data stream fails to provide a timing signal to
	the receiver.  Thus very nearly 100% of the bits transported
	are useful data.  In contrast, {asynchronous} transmission of
	data "throws away" a start bit and one or more stop bits for
	each data byte sent.

	(23 Apr 1996)

bit twiddling

	1. (pejorative) An exercise in tuning (see {tune}) in which
	incredible amounts of time and effort go to produce little
	noticeable improvement, often with the result that the code
	becomes incomprehensible.

	2. Aimless small modification to a program, especially for
	some pointless goal.

	3. {bit bashing}, especially used for the act of frobbing the
	device control register of a peripheral in an attempt to get
	it back to a known state.

bitty box

	/bit'ee boks/ A computer sufficiently small, primitive, or
	incapable as to cause a hacker acute claustrophobia at the
	thought of developing software on or for it.  The term is
	especially used of small, obsolescent, {single-tasking}-only
	{personal computer}s such as the {Atari 800}, {Osborne},
	{Sinclair}, {VIC-20}, {TRS-80} or {IBM PC} but the term is a
	general pejorative opposite of "real computer" (see {Get a
	real computer!}).

	See also {mess-dos}, {toaster}, {toy}.

	(29 Nov 1994)

bitwise

	<programming> A bitwise operator treats its operands as a
	{vector} of {bit}s rather than a single number.  {Boolean}
	bitwise operators combine bit N of each operand using a
	{Boolean} function ({NOT}, {AND}, {OR}, {XOR}) to produce bit
	N of the result.

	For example, a bitwise AND operator ("&" in {C}) would
	evaluate 13 & 9 as (binary) 1101 & 1001 = 1001 = 9, whereas,
	the logical AND, ({C} "&&") would evaluate 13 && 9 as TRUE &&
	TRUE = TRUE = 1.

	In some languages, e.g. {Acorn}'s {BASIC V}, the same operators
	are used for both bitwise and logical operations.  This
	usually works except when applying NOT to a value x which is
	neither 0 (false) nor -1 (true), in which case both x and (NOT
	x) will be non-zero and thus treated as TRUE.

	Other operations at the bit level, which are not normally
	described as "bitwise" include shift and rotate.

	(12 May 1995)

bitwise complement

	The bitwise complement of a {bit field} is a bit field of the
	same length but with each zero changed to a one and vice
	versa.  This is the same as the {ones complement} of a binary
	integer.

	(14 Nov 1994)

bixie

	/bik'see/ Variant {emoticon}s used on {Byte Information
	eXchange}.  The {smiley} bixie is <@_@>, apparently intending
	to represent two cartoon eyes and a mouth.  A few others have
	been reported.

	(29 Nov 1994)

Bjarne Stroustrup

	The father of {C++} and author of the C++ {bible}.

	E-mail: <bs@alice.att.com>.

	["The C++ Programming Language", Bjarne Stroustrup,
	Addison-Wesley, 1986].

	(14 Feb 1995)

BJC4000

	A colour {bubble jet} printer from {Canon}.  Released in
	September 1994.  It features 720 x 360 dots per inch in black
	and white mode and 360 x 360 in colour.  It has two
	cartridges: one for black and one for the three primary
	colours so it prints true black when printing in colour.

	(29 Nov 1994)

black art

	A collection of arcane, unpublished, and (by implication)
	mostly ad-hoc techniques developed for a particular
	application or systems area (compare {black magic}).  VLSI
	design and compiler code optimisation were (in their
	beginnings) considered classic examples of black art; as
	theory developed they became {deep magic}, and once standard
	textbooks had been written, became merely {heavy wizardry}.
	The huge proliferation of formal and informal channels for
	spreading around new computer-related technologies during the
	last twenty years has made both the term "black art" and what
	it describes less common than formerly.  See also {voodoo
	programming}.

black box

	<jargon> An abstraction of a device or system in which only
	its extenally visible behaviour is considered and not its
	implementation or "inner workings".

	See also {functional testing}.

	(03 Jul 1997)

black-box testing

	{functional testing}

Black Data Processing Associates

	<body> (BDPA) A non-profit professional association, founded
	in 1975 to promote positive influence in the {information
	technology} (IT) industry and how it affects African
	Americans.  The BDPA facilitates African American professional
	participation in local and national activities keeping up with
	developing IT trends.

	BDPA offers a forum for exchanging information and ideas about
	the computer industry.  It provides numerous networking
	opportunities through monthly program meetings, seminars, and
	workshops and the annual national conference.  Membership is
	open to anyone interested in IT.

	The Foundation provides scholarships to students who compete
	in an annual {Visual Basic} competition.

	{Home (http://www.bdpa.org/conf96)}

	E-mail: <nbdpa@ix.netcom.com>.

	Telephone: Ms. Pat Drumming, +1 (800) 727-BDPA.

	(07 Apr 1996)

black hole

	1. An expression which depends on its own value or a technique
	to detect such expressions.  In graph reduction, when the
	reduction of an expression is begun, the root of the
	expression can be overwritten with a black hole.  If the
	expression depends on its own value, e.g.

		x = x + 1

	then it will try to evaluate the black hole which will usually
	print an error message and abort the program.  A secondary
	effect is that, once the root of the expression has been
	black-holed, parts of the expression which are no longer
	required may be freed for garbage collection.

	Without black holes the usual result of attempting to evaluate
	an expression which depends on itself would be a stack
	overflow.  If the expression is evaluated successfully then
	the black hole will be updated with the value.

	Expressions such as

		ones = 1 : ones

	are not black holes because the list constructor, : is lazy so
	the reference to ones is not evaluated when evaluating ones to
	WHNF.

	2. Where an {electronic mail} message or {news} aritcle has
	gone if it disappears mysteriously between its origin and
	destination sites without returning a {bounce message}.
	Compare {bit bucket}.

black magic

	A technique that works, though nobody really understands why.
	More obscure than {voodoo programming}, which may be done by
	cookbook.  Compare also {black art}, {deep magic}, and {magic
	number} (sense 2).

blargh

	/blarg/ [MIT] The opposite of {ping}.  An exclamation
	indicating that one has absorbed or is emitting a quantum of
	unhappiness.  Less common than {ping}.

blast

	1. {BLT}, used especially for large data sends over a network
	or comm line.  Opposite of {snarf}.  Usage: uncommon.  The
	variant "blat" has been reported.

	2. [HP/Apollo] Synonymous with {nuke}.  Sometimes the message
	"Unable to kill all processes.  Blast them (y/n)?"  would
	appear in the command window upon logout.

blat

	1. {blast}.

	2. See {thud}.

BLAZE

	A {single assignment} language for {parallel processing}.

	["The BLAZE Language: A Parallel Language for Scientific
	Programming", P. Mehrotra <mehrotra@csrd.uiuc.edu> et al, J
	Parallel Comp 5(3):339-361 (Nov 1987)].

BLAZE 2

	An {object-oriented} successor to {BLAZE}.

	["Concurrent Object Access in BLAZE 2", P. Mehrotra et al,
	SIGPLAN Notices 24(4):40-42 (Apr 1989)].

bleam

	<jargon> To transmit or send data.

	"Bleam that binary to me in an e-mail".

	[Origin?  Used where?]

	(14 May 1997)

bletcherous

	/blech'*-r*s/ Disgusting in design or function; aesthetically
	unappealing.  This word is seldom used of people.  "This
	keyboard is bletcherous!" (Perhaps the keys don't work very
	well, or are misplaced.)  The term {bletcherous} applies to
	the esthetics of the thing so described; similarly for
	cretinous.  By contrast, something that is "losing" or
	"bagbiting" may be failing to meet objective criteria.

Bletchley Park

	A country house and grounds some 50 miles north of London,
	England, where highly secret work deciphering intercepted
	German military radio messages was carried out during World
	War Two.  Thousands of people were working there at the end of
	the war, including a number of early computer pioneers such as
	{Alan Turing}.

	The nature and scale of the work has only emerged recently,
	with total secrecy having been observed by all the people
	involved.  Throughout the war, Bletchley Park produced highly
	important strategic and tactical intelligence used by the
	Allies, (Churchill's "golden eggs"), and it has been claimed
	that the war in Europe was probably shortened by two years as
	a result.

	There is an exhibition of wartime code-breaking memorabilia
	including fragments of a {Colossus}, a wartime
	semi-fixed-program {vacuum tube} calculator at Bletchley Park
	on alternate weekends.

	The {Computer Conservation Society} (CCS), a specialist group
	of the {British Computer Society}, has been asked to help the
	planning and preparation of a Historical Computer Exhibition
	there.  It is hoped that the CCS will have substantial
	facilities for storage of old artifacts and for restoration
	workshops, as well as archive, library and research
	facilities.

	Telephone: Bletchley Park Trust office +44 (908) 640 404
	(office hours and open weekends).

	(17 Nov 1994)

Blind Carbon Copy

	<messaging> (Bcc) An {electronic mail} {header} which lists
	addresses to which a message should be sent, but which will
	not be seen by some or all recipients.

	Bcc is defined in {RFC 822} and supported by most mail
	systems.  A normal, non-blind "Cc" header would be visible to
	all recipients, thus allowing them to reply to each other as
	well as to the sender.  According to RFC 822, the addresses
	listed in a Bcc header are not included in the copies of the
	message sent to the "To" and "Cc" recipients but they may or
	may not appear in the copy sent to "Bcc" recipients
	themselves.

	[Does any mailer send Bcc headers to any recipients?]

	(05 Feb 1997)

B-LINE

	An early {CAD} language.

	["B-LINE, Bell Line Drawing Language", A.J. Frank, Proc Fall
	JCC 33 1968].

	(17 Nov 1994)

blinkenlights

	/blink'*n-li:tz/ Front-panel diagnostic lights on a computer,
	especially a {dinosaur}.  Derives from the last word of the
	famous blackletter-Gothic sign in mangled pseudo-German that
	once graced about half the computer rooms in the
	English-speaking world.  One version ran in its entirety as
	follows:

			ACHTUNG!  ALLES LOOKENSPEEPERS!

	  Das computermachine ist nicht fuer gefingerpoken und
	  mittengrabben.  Ist easy schnappen der springenwerk,
	  blowenfusen und poppencorken mit spitzensparken.  Ist nicht
	  fuer gewerken bei das dumpkopfen.  Das rubbernecken
	  sichtseeren keepen das cotten-pickenen hans in das pockets
	  muss; relaxen und watchen das blinkenlichten.

	This silliness dates back at least as far as 1959 at Stanford
	University and had already gone international by the early
	1960s, when it was reported at London University's ATLAS
	computing site.  There are several variants of it in
	circulation, some of which actually do end with the word
	"blinkenlights".

	In an amusing example of turnabout-is-fair-play, German
	hackers have developed their own versions of the blinkenlights
	poster in fractured English, one of which is reproduced here:

	                         ATTENTION

	  This room is fullfilled mit special electronische
	  equippment.  Fingergrabbing and pressing the cnoeppkes from
	  the computers is allowed for die experts only!  So all the
	  "lefthanders" stay away and do not disturben the
	  brainstorming von here working intelligencies.  Otherwise
	  you will be out thrown and kicked anderswhere!  Also: please
	  keep still and only watchen astaunished the blinkenlights.

	See also {geef}.

BLISS

	{Basic Language for Implementation of System Software}

BLISS-10

	A version of {BLISS} from {CMU} for the {PDP-10}.

BLISS-11

	A {cross-compiler} for the {PDP-11} running on a {PDP-10}.
	Written at {CMU} to support the {C.mmp}/{Hydra} project.

BLISS-32

	A version of {BLISS} from DEC for {VAX}/{VMS}.

blit

	/blit/ 1. To copy a large array of bits from one part of a
	computer's memory to another part, particularly when the
	memory is being used to determine what is shown on a display
	screen.  "The storage allocator picks through the table and
	copies the good parts up into high memory, and then blits it
	all back down again."  See {bitblt}, {BLT}, {dd}, {cat},
	{blast}, {snarf}.  More generally, to perform some operation
	(such as toggling) on a large array of bits while moving them.

	2. Sometimes all-capitalised as "BLIT": an early experimental
	{bit-mapped} {terminal} designed by Rob Pike at {Bell Labs},
	later commercialised as the {AT&T 5620}.  (The folk etymology
	from "Bell Labs Intelligent Terminal" is incorrect.  Its
	creators liked to claim that "Blit" stood for the Bacon,
	Lettuce, and Interactive Tomato).

	(16 Nov 1994)

blitter

	<hardware, graphics> /blit'r/ (Or "{raster blaster}").  A
	special-purpose {integrated circuit} or hardware system built
	to perform {blit} (or "{bit bang}") operations, especially
	used for fast implementation of {bit-mapped} graphics.

	The {Commodore} {Amiga} and a few other {microcomputers} have
	these, but in 1991 the trend is away from them (however, see
	{cycle of reincarnation}).

	(30 Apr 1996)

blivet

	/bliv'*t/ [allegedly from a World War II military term meaning
	"ten pounds of manure in a five-pound bag"] 1. An intractable
	problem.

	2. A crucial piece of hardware that can't be fixed or replaced
	if it breaks.

	3. A tool that has been hacked over by so many incompetent
	programmers that it has become an unmaintainable tissue of
	hacks.

	4. An out-of-control but unkillable development effort.

	5. An embarrassing bug that pops up during a customer demo.

	6. In the subjargon of computer security specialists, a
	denial-of-service attack performed by hogging limited
	resources that have no access controls (for example, shared
	spool space on a multi-user system).

	This term has other meanings in other technical cultures;
	among experimental physicists and hardware engineers of
	various kinds it seems to mean any random object of unknown
	purpose (similar to hackish use of {frob}).  It has also been
	used to describe an amusing trick-the-eye drawing resembling a
	three-pronged fork that appears to depict a three-dimensional
	object until one realises that the parts fit together in an
	impossible way.

bloat

	{software bloat}

bloatware

	<jargon, abuse> {Software} suffering from {software bloat}.

	(14 Oct 1995)

BLOB

	1. {binary large object}.

	2. <architecture> {blitter object}.

block

	1. <unit> A unit of data or memory, often, but not
	exclusively, on a disk.

	Compare {record}, {sector}.

	2. <operating system> To delay or sit idle while waiting for
	something.

	Compare {busy-wait}.

blocked records

	<storage> Several {record}s written as a contiguous block on
	{magnetic tape} so that they may be accessed in a single I/O
	operation.  Blocking increases the amount of data that may be
	stored on a tape because there are fewer {inter-block gap}s.
	It requires that the tape drive or processor have a
	sufficiently large buffer to store the whole block.

	(13 Apr 1995)

Block Started by Symbol

	(BSS) The uninitialised data segment produced by Unix linkers.
	The other segments are the "text" segment which contains the
	program code and the "data" segment contains initialised data.
	Objects in the bss segment have only a name and a size but no
	value.

block transfer computations

	[UK television series "Dr. Who"] Computations so fiendishly
	subtle and complex that they could not be performed by
	machines.  Used to refer to any task that should be
	expressible as an {algorithm} in theory, but isn't.

Bloggs Family, the

	An imaginary family consisting of Fred and Mary Bloggs and
	their children.  Used as a standard example in knowledge
	representation to show the difference between extensional and
	intensional objects.  For example, every occurrence of "Fred
	Bloggs" is the same unique person, whereas occurrences of
	"person" may refer to different people.  Members of the Bloggs
	family have been known to pop up in bizarre places such as the
	DEC Telephone Directory.  Compare {Mbogo, Dr. Fred}.

Blosim

	Block-Diagram Simulator.  A block-diagram simulator. "A Tool
	for Structured Functional Simulation", D.G. Messerschmitt,
	IEEE J on Selected Areas in Comm, SAC-2(1):137-147, 1984.

blow an EPROM

	/bloh *n ee'prom/ (Or "blast", "burn") To program a {read-only
	memory}, e.g. for use with an {embedded system}.  This term
	arose because the programming process for the {Programmable
	Read-Only Memory} (PROM) that preceded present-day {Erasable
	Programmable Read-Only Memory} (EPROM) involved intentionally
	blowing tiny electrical fuses on the chip.  The usage lives on
	(it's too vivid and expressive to discard) even though the
	write process on EPROMs is nondestructive.

	(29 Nov 1994)

blow away

	<operating system, jargon> To remove (files and directories)
	from permanent storage, generally by accident.  "He
	reformatted the wrong partition and blew away last night's
	netnews".

	Compare: {nuke}.

	(05 Jan 1996)

blow out

	<jargon> (Probably from mining and tunnelling jargon) Of
	{software}, to fail spectacularly; almost as serious as {crash
	and burn}.

	See {blow past}, {blow up}, {die horribly}.

	(29 Nov 1994)

blow past

	To {blow out} despite a safeguard.  "The server blew past the
	5K reserve buffer."

	(29 Nov 1994)

blow up

	1. Of a scientific computation: to become unstable.  It
	suggests that the computation is diverging so rapidly that it
	will soon overflow or at least go {nonlinear}.

	2. {blow out}.

BLOX

	A {visual language}.

BLT

	1. /B-L-T/, /bl*t/ or (rarely) /belt/ Synonym for {blit}.
	This is the original form of {blit} and the ancestor of
	{bitblt}.  It refers to any large bit-field copy or move
	operation (one resource-intensive memory-shuffling operation
	done on pre-paged versions of {ITS}, {WAITS} and {TOPS-10} was
	sardonically referred to as "The Big BLT").  The jargon usage
	has outlasted the {PDP-10} BLock Transfer instruction from
	which {BLT} derives; nowadays, the {assembly language}
	{mnemonic} {BLT} almost always means "Branch if Less Than
	zero".

	2. bacon, lettuce and tomato (sandwich).

Blue

	A language proposed by Softech to meet the {DoD} {Ironman}
	requirements which led to {Ada}.  ["On the BLUE Language
	Submitted to the DoD", E.W. Dijkstra, SIGPLAN Notices
	13(10):10-15 (Oct 1978)].

Blue Book

	1. <publication> Informal name for one of the four standard
	references on the page-layout and graphics-control language
	{PostScript}.  The other three official guides are known as
	the {Green Book}, the {Red Book}, and the {White Book}.

	["PostScript Language Tutorial and Cookbook", Adobe Systems,
	Addison-Wesley 1985, (ISBN 0-201-10179-3)].

	2. <publication> Informal name for one of the three standard
	references on Smalltalk.  This book also has green and red
	siblings.

	["Smalltalk-80: The Language and its Implementation", David
	Robson, Addison-Wesley 1983, (ISBN 0-201-11371-63)].

	3. <publication> Any of the 1988 standards issued by the
	{ITU-T}'s ninth plenary assembly.  These include, among other
	things, the {X.400} {electronic mail} specification and the
	Group 1 through 4 fax standards.

	See also {book titles}.

	(12 Oct 1995)

Blue Box

	<operating system> The complete implementation of the {Mac OS}
	run-time environment on the more modern {Rhapsody} operating
	system.  {Blue Box} is not an {emulation} layer; at any given
	time it will be based on the same source code and ROM image as
	the current version of Mac OS and will thus incorporate future
	Mac OS improvements.

	(15 Oct 1997)

Blue Glue

	[IBM] IBM's SNA (Systems Network Architecture), an incredibly
	{losing} and bletcherous communications protocol widely
	favoured at commercial shops that don't know any better.  The
	official IBM definition is "that which binds blue boxes
	together."  See {fear and loathing}.  It may not be irrelevant
	that {Blue Glue} is the trade name of a 3M product that is
	commonly used to hold down the carpet squares to the removable
	panel floors common in {dinosaur pen}s.  A correspondent at
	U. Minn. reports that the CS department there has about 80
	bottles of the stuff hanging about, so they often refer to any
	messy work to be done as "using the blue glue".

Blue Sky Software

	<company> A vendor of {Microsoft} {Windows} application
	development tools such as {RoboHELP} and {WinMaker Pro}.

	Address: 7777 Fay Avenue, Suite 201, La Jolla, CA 92037, USA.
	Telephone: +1-800-793-0364, +1 (619) 459 6365.  Fax: +1 (619)
	459 6366.
	(19 Jan 1997)

blue wire

	(IBM) Patch wires added to circuit boards at the factory to
	correct design or fabrication problems.  These may be
	necessary if there hasn't been time to design and qualify
	another board version.

	Compare {purple wire}, {red wire}, {yellow wire}.

	(29 Nov 1994)

blurgle

	/bler'gl/ [Great Britain] Spoken {metasyntactic variable}, to
	indicate some text that is obvious from context, or which is
	already known.  If several words are to be replaced, blurgle
	may well be doubled or trebled.  "To look for something in
	several files use "{grep} string blurgle blurgle"."  In each
	case, "blurgle blurgle" would be understood to be replaced by
	the file you wished to search.  Compare {mumble}.

BMASF

	Basic Module Algebra Specification Language?  "Design of a
	Specification Language by Abstract Syntax Engineering",
	J.C.M. Baeten et al, in LNCS 490, pp.363-394.

BMDP

	<language> BioMeDical Package.

	A statistical language developed at {UCB} in 1961, first
	implemented in {FORTRAN} for the {IBM 7090}.

	(13 Mar 1995)

B-Method

	<programming, tool> A system for rigorous or formal
	development of software using the notion of {Abstract
	Machine}s to specify and design software systems.  The
	B-Method is supported by the {B-Toolkit}.

	Abstract Machines are specified using the Abstract Machine
	Notation (AMN) which is in turn based on the mathematical
	theory of {Generalised Substitution}s.

	(13 Mar 1995)

BMF

	{Bird-Meertens Formalism}

BMP

	{Basic Multilingual Plane}

bmp

	{Microsoft Windows} {Bitmap} format.  Bmp files may use
	{run-length encoding}.

	[Format?]

	(05 Jan 1995)

BMWF

	Austrian Ministry of Science.

BNC

	<hardware> A connector for {coaxial cable} such as that used
	for some video connections and {RG58} "{cheapernet}"
	connections.  A BNC connector has a bayonet-type shell with
	two small knobs on the female connector which lock into spiral
	slots in the male connector when it is twisted on.

	Different sources expand BNC as Bayonet Navy Connector,
	British Naval Connector, Bayonet Neill Concelman, or Bayonet
	Nut Connection.

	(18 Sep 1995)

BNF

	{Backus-Naur Form}.  Originally Backus Normal Form.

BNR Pascal

	["Remote Rendezvous", N. Gammage et al, Soft Prac & Exp
	17(10):741-755 (Oct 1987)].

	(21 Dec 1994)

BNR Prolog

	A {constraint logic} language.

	[Details?]

	(21 Dec 1994)

boa

	[IBM] Any one of the fat cables that lurk under the floor in a
	{dinosaur pen}.  Possibly so called because they display a
	ferocious life of their own when you try to lay them straight
	and flat after they have been coiled for some time.  It is
	rumored within IBM that channel cables for the 370 are limited
	to 200 feet because beyond that length the boas get dangerous
	--- and it is worth noting that one of the major cable makers
	uses the trademark "Anaconda".

board

	1. In-context synonym for {bboard}; sometimes used even for
	{Usenet} newsgroups.

	2. An electronic circuit board.

boat anchor

	1. Like {doorstop} but more severe; implies that the offending
	hardware is irreversibly dead or useless.  "That was a working
	motherboard once.  One lightning strike later, instant boat
	anchor!"

	2. A person who just takes up space.

	3. Obsolete but still working hardware, especially when used
	of an old S100-bus hobbyist system; originally a term of
	annoyance, but became more and more affectionate as the
	hardware became more and more obsolete.

Bob

	David Betz.  A tiny object-oriented language.

	{(ftp://ftp.mv.com/pub/ddj/packages/bob15.arc)}

	[Dr Dobbs J, Sep 1991, p.26].

BOCS

	Berard Object and Class Specifier, an Object-oriented CASE
	tool from Berard Software Engineering.

Boehm B.

	Proposed the COCOMO technique for evaluating the cost of a
	software project.

BOEING

	Early system on IBM 1103 or 1103A.  Listed in CACM 2(5):16
	(May 1959).

BOF

	/B-O-F/ or /bof/ 1. {Birds Of a Feather}.

	2. Boring Old Fart.

BOFH

	{Bastard Operator From Hell}

bogometer

	/boh-gom'-*t-er/  A notional instrument for
	measuring {bogosity}.  Compare the "wankometer" described in
	the {wank} entry; see also {bogus}.

bogon

	/boh'gon/ [by analogy with proton/electron/neutron, but
	doubtless reinforced after 1980 by the similarity to Douglas
	Adams's "Vogons"] 1. The elementary particle of bogosity (see
	{quantum bogodynamics}).  For instance, "the Ethernet is
	emitting bogons again" means that it is broken or acting in an
	erratic or bogus fashion.

	2. A query {packet} sent from a {TCP/IP} {domain resolver} to
	a root server, having the reply bit set instead of the query
	bit.

	3. Any bogus or incorrectly formed packet sent on a network.

	4. A person who is bogus or who says bogus things.  This was
	historically the original usage, but has been overtaken by its
	derivative senses.  See also {bogosity}, {bogus}; compare
	{psyton}, {fat electrons}, {magic smoke}.

	The bogon has become the type case for a whole bestiary of
	nonce particle names, including the "clutron" or "cluon"
	(indivisible particle of cluefulness, obviously the
	antiparticle of the bogon) and the futon (elementary particle
	of {randomness}, or sometimes of lameness).  These are not so
	much live usages in themselves as examples of a live
	meta-usage: that is, it has become a standard joke or
	linguistic maneuver to "explain" otherwise mysterious
	circumstances by inventing nonce particle names.  And these
	imply nonce particle theories, with all their dignity or lack
	thereof (we might note parenthetically that this is a
	generalisation from "(bogus particle) theories" to "bogus
	(particle theories)"!).  Perhaps such particles are the
	modern-day equivalents of trolls and wood-nymphs as standard
	starting-points around which to construct explanatory myths.
	Of course, playing on an existing word (as in the "futon")
	yields additional flavour.

bogon filter

	/boh'gon fil'tr/ Any device, software or hardware, that limits
	or suppresses the flow and/or emission of bogons.
	"Engineering hacked a bogon filter between the {Cray} and the
	{VAXen}, and now we're getting fewer dropped packets."  See
	also {bogosity}, {bogus}.

bogon flux

	/boh'gon fluhks/ A measure of a supposed field of {bogosity}
	emitted by a speaker, measured by a {bogometer}; as a speaker
	starts to wander into increasing bogosity a listener might say
	"Warning, warning, bogon flux is rising".  See {quantum
	bogodynamics}.

bogosity

	/boh-go's*-tee/ 1. The degree to which something is {bogus}.
	At CMU, bogosity is measured with a {bogometer}; in a seminar,
	when a speaker says something bogus, a listener might raise
	his hand and say "My bogometer just triggered".  More
	extremely, "You just pinned my bogometer" means you just said
	or did something so outrageously bogus that it is off the
	scale, pinning the bogometer needle at the highest possible
	reading (one might also say "You just redlined my bogometer").
	The agreed-upon unit of bogosity is the {microLenat}.

	2. The potential field generated by a {bogon flux}; see
	{quantum bogodynamics}.  See also {bogon flux}, {bogon
	filter}, {bogus}.

bogo-sort

	/boh"goh-sort"/ (variant "stupid-sort") The archetypical
	perversely awful algorithm (as opposed to {bubble sort}, which
	is merely the generic *bad* algorithm).  Bogo-sort is
	equivalent to repeatedly throwing a deck of cards in the air,
	picking them up at random, and then testing whether they are
	in order.  It serves as a sort of canonical example of
	awfulness.  Looking at a program and seeing a dumb algorithm,
	one might say "Oh, I see, this program uses bogo-sort."
	Compare {bogus}, {brute force}, {Lasherism}.

bogotify

	/boh-go't*-fi:/ To make or become bogus.  A program that has
	been changed so many times as to become completely
	disorganised has become bogotified.  If you tighten a nut too
	hard and strip the threads on the bolt, the bolt has become
	bogotified and you had better not use it any more.  This
	coinage led to the notional "autobogotiphobia" defined as "the
	fear of becoming bogotified"; but is not clear that the latter
	has ever been "live" jargon rather than a self-conscious joke
	in jargon about jargon.  See also {bogosity}, {bogus}.

bogue out

	/bohg owt/ To become bogus, suddenly and unexpectedly.  "His
	talk was relatively sane until somebody asked him a trick
	question; then he bogued out and did nothing but {flame}
	afterwards."  See also {bogosity}, {bogus}.

bogus

	1. Non-functional.  "Your patches are bogus."

	2. Useless.  "OPCON is a bogus program."

	3. False.  "Your arguments are bogus."

	4. Incorrect.  "That algorithm is bogus."

	5. Unbelievable.  "You claim to have solved the halting
	problem for Turing Machines?  That's totally bogus."

	6. Silly.  "Stop writing those bogus sagas."

	Astrology is bogus.  So is a bolt that is obviously about to
	break.  So is someone who makes blatantly false claims to have
	solved a scientific problem.  (This word seems to have some,
	but not all, of the connotations of {random} - mostly the
	negative ones.)

	It is claimed that "bogus" was originally used in the hackish
	sense at {Princeton} in the late 1960s.  It was spread to
	{CMU} and {Yale} by Michael Shamos, a migratory Princeton
	alumnus.  A glossary of bogus words was compiled at Yale when
	the word was first popularised (see {autobogotiphobia} under
	{bogotify}).  The word spread into hackerdom from CMU and
	{MIT}.  By the early 1980s it was also current in something
	like the hackish sense in West Coast teen slang, and it had
	gone mainstream by 1985.  A correspondent from {Cambridge}, UK
	reports, by contrast, that these uses of "bogus" grate on
	British nerves; in Britain the word means, rather
	specifically, "counterfeit", as in "a bogus 10-pound note".

BOHICA

	<humour> /bo-hee-ka/ {Bend Over, Here It Comes
	Again}.

Bohr bug

	<jargon, programming> /bohr buhg/ (From Quantum physics) A
	repeatable {bug}; one that manifests reliably under a possibly
	unknown but well-defined set of conditions.

	Compare {heisenbug}.  See also {mandelbug}, {schroedinbug}.

	(28 Feb 1995)

boink

	/boynk/ [{Usenet}: variously ascribed to the TV series
	"Cheers" "Moonlighting", and "Soap"] 1. To have sex with;
	compare {bounce}. (This is mainstream slang.) In Commonwealth
	hackish the variant "bonk" is more common.

	2. After the original Peter Korn "Boinkon" {Usenet} parties,
	used for almost any net social gathering, e.g. Miniboink, a
	small boink held by Nancy Gillett in 1988; Minniboink, a
	Boinkcon in Minnesota in 1989; Humpdayboinks, Wednesday
	get-togethers held in the San Francisco Bay Area.

	Compare {@-party}.

	3. Variant of "bonk"; see {bonk/oif}.

Bolt, Beranek and Newman, Inc.

	(BBN) A company in Cambridge, Massachusetts, USA.  They were
	awarded the original contract to build the {ARPANET} and have
	been extensively involved in {Internet} development.  They are
	responsible for managing {NNSC}, {CSNET}, and {NEARnet}.

	(07 Oct 1994)

	[Butterfly?]

bomb

	1. <software> General synonym for {crash} except that it is
	not used as a noun.  Especially used of software or {OS}
	failures.  "Don't run Empire with less than 32K stack, it'll
	bomb".

	2. <operating system> {Atari ST} and {Macintosh} equivalents
	of a {Unix} "{panic}" or {Amiga} {guru}, in which {icon}s of
	little black-powder bombs or mushroom clouds are displayed,
	indicating that the system has died.  On the {Macintosh}, this
	may be accompanied by a decimal (or occasionally
	{hexadecimal}) number indicating what went wrong, similar to
	the {Amiga} {guru meditation} number.  {MS-DOS} computers tend
	to {lock up} in this situation.

	3. <software> A piece of code embedded in a program that
	remains dormant until it is triggered.  Logic bombs are
	triggered by an event whereas time bombs are triggered either
	after a set amount of time has elapsed, or when a specific
	date is reached.

	(08 Dec 1996)

bon

	<language> (From "Bonnie", {Ken Thompson}'s wife) A language
	designed by {Ken Thompson} and later revised by him to produce
	{B}.

	[When?  Features?]

	(04 Feb 1997)

bondage-and-discipline language

	A language (such as {Pascal}, {Ada}, APL, or Prolog) that,
	though ostensibly general-purpose, is designed so as to
	enforce an author's theory of "right programming" even though
	said theory is demonstrably inadequate for systems hacking or
	even vanilla general-purpose programming.  Often abbreviated
	"B&D"; thus, one may speak of things "having the B&D nature".

	See {Pascal}.  Compare {languages of choice}.

	(05 Jan 1996)

bonk/oif

	/bonk/, /oyf/ In the {MUD} community, it has become
	traditional to express pique or censure by "bonking" the
	offending person.  Convention holds that one should
	acknowledge a bonk by saying "oif!" and there is a myth to the
	effect that failing to do so upsets the cosmic bonk/oif
	balance, causing much trouble in the universe.  Some MUDs have
	implemented special commands for bonking and oifing.

	(18 Jan 1998)

Booch

	{(http://www.itr.ch/tt/case/BoochReferenz/)}

	[What is it?]

	(18 Jan 1995)

bookmark

	<World-Wide Web> A user's reference to a document on the
	{World-Wide Web} or other hypermedia system, usually in the
	form of a {URL} and a title or comment string.

	Most World-Wide Web and {Gopher} {browsers} can save and load
	a file of bookmarks to allow you to quickly locate documents
	to which you want to refer again.

	(09 Jun 1997)

Bookreader

	{DEC}'s {CD-ROM}-based on-line documentation browser.

book titles

	<publication> There is a tradition in hackerdom of informally
	tagging important textbooks and standards documents with the
	dominant colour of their covers or with some other conspicuous
	feature of the cover.  Many of these are described in {this
	dictionary} under their own entries.  See {Aluminum Book},
	{Blue Book}, {Cinderella Book}, {Devil Book}, {Dragon Book},
	{Green Book}, {Orange Book}, {Pink-Shirt Book}, {Purple Book},
	{Red Book}, {Silver Book}, {White Book}, {Wizard Book},
	{Yellow Book}, {bible}, {rainbow series}.

	(03 Dec 1996)

Bookviewer

	A hypertext documentation system from Oracle based on Oracle
	Toolkit.  It allows the user to create private links and
	bookmarks, and to make multimedia annotations.

bool

	{Boolean}

Boolean

	<mathematics, logic> 1. {Boolean algebra}.

	<programming> 2. (bool) The type of an expression with two
	possible values, "true" and "false".  Also, a variable of
	Boolean type or a function with Boolean arguments or result.
	The most common Boolean functions are {AND}, {OR} and {NOT}.

	(01 Dec 1997)

Boolean algebra

	<mathematics, logic> (After the logician {George Boole})

	1. Commonly, and especially in computer science and digital
	electronics, this term is used to mean {two-valued logic}.

	2. This is in stark contrast with the definition used by pure
	mathematicians who in the 1960s introduced "Boolean-valued
	{models}" into logic precisely because a "Boolean-valued
	model" is an interpretation of a {theory} that allows more
	than two possible truth values!

	Strangely, a Boolean algebra (in the mathematical sense) is
	not strictly an {algebra}, but is in fact a {lattice}.  A
	Boolean algebra is sometimes defined as a "complemented
	{distributive lattice}".

	Boole's work which inspired the mathematical definition
	concerned {algebras} of {set}s, involving the operations of
	intersection, union and complement on sets.  Such algebras
	obey the following identities where the operators ^, V, - and
	constants 1 and 0 can be thought of either as set
	intersection, union, complement, universal, empty; or as
	two-valued logic AND, OR, NOT, TRUE, FALSE; or any other
	conforming system.

	 a ^ b = b ^ a    a V b  =  b V a     (commutative laws)
	 (a ^ b) ^ c  =  a ^ (b ^ c)
	 (a V b) V c  =  a V (b V c)          (associative laws)
	 a ^ (b V c)  =  (a ^ b) V (a ^ c)
	 a V (b ^ c)  =  (a V b) ^ (a V c)    (distributive laws)
	 a ^ a  =  a    a V a  =  a           (idempotence laws)
	 --a  =  a
	 -(a ^ b)  =  (-a) V (-b)
	 -(a V b)  =  (-a) ^ (-b)             (de Morgan's laws)
	 a ^ -a  =  0    a V -a  =  1
	 a ^ 1  =  a    a V 0  =  a
	 a ^ 0  =  0    a V 1  =  1
	 -1  =  0    -0  =  1

	There are several common alternative notations for the "-" or
	{logical complement} operator.

	If a and b are elements of a Boolean algebra, we define a <= b
	to mean that a ^ b = a, or equivalently a V b = b.  Thus, for
	example, if ^, V and - denote set intersection, union and
	complement then <= is the inclusive subset relation.  The
	relation <= is a {partial ordering}, though it is not
	necessarily a {linear ordering} since some Boolean algebras
	contain incomparable values.

	Note that these laws only refer explicitly to the two
	distinguished constants 1 and 0 (sometimes written as {LaTeX}
	\top and \bot), and in {two-valued logic} there are no others,
	but according to the more general mathematical definition, in
	some systems variables a, b and c may take on other values as
	well.

	(27 Feb 1997)

Boolean logic

	<mathematics> A {logic} based on {Boolean algebra}.

	(25 Mar 1995)

Boole, George

	{George Boole}

Booster

	A {data-parallel} language.

	"The Booster Language", E. Paalvast, TR PL 89-ITI-B-18, Inst
	voor Toegepaste Informatica TNO, Delft, 1989.

boot

	<operating system> (from "{bootstrap}" or "to pull oneself up
	by one's bootstraps") To load and initialise the {operating
	system} on a computer.

	See {reboot}, {cold boot}, {warm boot}, {soft boot}, {hard
	boot}, {bootstrap}, {bootstrap loader}.

	(27 Nov 1995)

boot block

	<operating system> A program at some fixed location on a {hard
	disk}, {floppy disk} or other media, which is loaded when the
	computer is turned on or rebooted and which controls the next
	phase of loading the actual {operating system}.  The loading
	and execution of the boot block is usually controlled by
	{firmware} in {ROM} or {PROM}.

	(03 Jul 1997)

boot disk

	<operating system> The {magnetic disk} (usually a {hard disk})
	from which an {operating system} {kernel} is loaded (or
	"bootstrapped").  This second phase in system start-up is
	performed by a simple bootstrap loader program held in {ROM},
	possibly configured by data stored in some form of writable
	{non-volatile storage}.

	{MS-DOS} and {Microsoft Windows} can be configured (in the
	{BIOS}) to try to boot off either {floppy disk} or {hard
	disk}, in either order.  By default they first check for the
	presence of a {floppy disk} in the drive at start-up and try
	to use that as a boot disk if present.  If no disk is in the
	drive they then try to boot off the hard disk.

	Some {operating systems}, notably {SunOS} and {Solaris}, can
	be configured to boot from a network rather than from disk.
	Such a system can thus run as a {diskless workstation}.

	(09 Jun 1997)

BOOTP

	The Bootstrap Protocol.

	A {protocol} described in {RFC}s 951 and 1084 and used for
	booting {diskless workstation}s.

	See also {Reverse Address Resolution Protocol}.

	(16 Feb 1995)

bootstrap

	1. <operating system> (From "to pull oneself up by one's
	bootstraps") To load and initialise the {operating system} on
	a computer.  Normally abbreviated to "{boot}".

	See {bootstrap loader}.

	2. <compiler> (From "to pull oneself up by one's bootstraps")
	to use a {compiler} to compile itself.

	The usual process is to write an {interpreter} for a language,
	L, in an existing language, M.  The compiler is then written
	in L and the interpreter is used to run it.  This produces an
	{executable} for compiling programs in L from the source of
	the compiler in L.

	This technique is often used to verify the correctness of a
	compiler.  It was first used in the {LISP} community.

	See also {my favourite toy language}.

	(27 November 1995)

bootstrap loader

	<operating system> (from "{bootstrap}" or "to pull oneself up
	by one's bootstraps") A short {program} that was read in from
	{card}s or {paper tape}, or {toggle}d in from the {front
	panel} switches, which read in a more complex {program} to
	which it gave control.

	On early computers the bootstrap loader was always very short
	(great efforts were expended on making it short in order to
	minimise the labour and chance of error involved in toggling
	it in), but was just smart enough to read in a slightly more
	complex {program} (usually from a card or {paper tape}
	reader), to which it handed control; this {program} in turn
	was smart enough to read the {application} or {operating
	system} from a {magnetic tape} drive or {disk drive}.  Thus,
	in successive steps, the {computer} "pulled itself up by its
	bootstraps" to a useful operating state.  Nowadays the
	bootstrap is usually found in {ROM} or {EPROM}, and reads the
	first stage in from a fixed location on the {disk}, called the
	"{boot block}".  When this {program} gains control, it is
	powerful enough to load the actual {OS} and hand control over
	to it.

	See {boot}.

	(27 November 1995)

boot virus

	An {MS-DOS} {virus} that infects the {boot record} program on
	{hard disk}s and {floppy disk}s or the {master boot record} on
	hard disks.  The virus gets loaded into memory before {MS-DOS}
	and takes control of the computer, infecting any floppy disks
	subsequently accessed.  An infected {boot disk} may stop the
	computer starting up at all.

	(16 Feb 1995)

Border Gateway Protocol

	(BGP) An {Exterior Gateway Protocol} defined in {RFC 1267} and
	{RFC 1268}.  Its design is based on experience gained with
	{Exterior Gateway Protocol} (EGP), as defined in {STD} 18,
	{RFC 904} and EGP usage in the {NSFNet} {backbone}, as
	described in RFCs 1092 and 1093.

	(29 Nov 1994)

borf

	<jargon> To uncerimoniously disconnect someone from a system
	without prior warning.  {BBS} {Sysops} routinely "borf" pest
	users by turning off the modem or by hitting the "auto-borf"
	key sequence.

	You can also be "borfed" by software dropping {carrier} due to
	a {bug}.

	The origin of the term is unknown but it has been in use since
	at least 1982.

	(21 Mar 1997)

Borland International, Inc.

	<company> A company selling a variety of {IBM PC} software
	development and {database} systems.  Borland was founded in
	1983 and initially became famous for their low-cost software,
	particularly {Turbo Pascal}, {Turbo C}, and {Turbo Prolog}.

	Current products include the {Borland C++} C++ and C
	developement environment, the {Paradox} and {dBASE}
	{databases}, {Delphi}, and {InterBase}.

	Borland has approximately 1000 employees worldwide and has
	operations in Australia, Canada, France, Germany, Japan,
	Netherlands, and the United Kingdom.

	Borland sold {Quattro} Pro to {Novell} in 1994 for $100M.

	Quarterly sales $69M, profits $61M (Aug 1994).

	{Home (http://www.borland.com/)}.

	Headquarters: 100 Borland Way, Scotts Valley, CA, 95066, USA.
	Telephone: +1 (408) 431 1000.

	(27 May 1996)

BOS

	1. A data management system written at {DESY} and used in some
	high energy physics programs.

	2. The Basic Object System.

	A {C}-callable library that implements the notion of object
	and which uses {Tcl} as its {interpreter} for interpreted
	{method}s (you can have "compiled" methods in C, and mix
	compiled and interpreted methods in the same object, plus lots
	more stuff).  I regularly (a) subclass and (b) mixin existing
	objects using BOS to extend, among other things, the set of
	{tk} {widget}s (I have all tk widgets wrapped with BOS
	"classes").  BOS is a {class}-free object system, also called
	a prototype-based object system; it is modelled loosely on the
	{Self} system from {Stanford University}.  (21 Aug 1992).

	Version 1.31 by Sean Levy <Sean.Levy@cs.cmu.edu>.

	{(ftp://barkley.berkeley.edu/tcl)}

Bose-Chaudhuri-Hocquenghem Code

	(BHC Code) An {error detection and correction} technique based
	on {Cyclic Redundancy Code}, used in telecommunications
	applications.

	(16 Jan 1995)

BOSS

	Bridgport Operating System Software.  A derivative of the {ISO
	1054} numerical machine control language for milling, etc.

bot

	<networking> (robot) A program (often written in a scripting
	language) that lives on an {IRC} {channel}, often pretending
	to be human.  Whilst most bots are useful, serving only to
	administer or police a channel, some are designed to cause
	trouble (e.g. by attempting to "take over" and {kick} the
	other {CHOP}s).  Most bots are derivatives of a few standard
	programs, e.g. {CloneBots} or {GuardBots}.

	(07 Jan 1997)

botmaster

	<chat> The owner of a {bot}.

	(07 Apr 1997)

bottom

	<theory> The least defined element in a given {domain}.

	Often used to represent a non-terminating computation.

	(In {LaTeX}, bottom is written as {\perp}, sometimes with the
	domain as a subscript).

	(07 Jan 1997)

bottom feeder

	Synonym for {slopsucker}, derived from the fishermen's and
	naturalists' term for finny creatures who subsist on the
	primordial ooze.

bottom-unique

	In {domain theory}, a function f is bottom-unique if

		f x = bottom  <=>  x = bottom

	A bottom-unique function is also {strict}.

bottom-up implementation

	<programming> The opposite of {top-down design}.  It is now
	received wisdom in most programming cultures that it is best
	to design from higher levels of abstraction down to lower,
	specifying sequences of action in increasing detail until you
	get to actual code.  Hackers often find (especially in
	exploratory designs that cannot be closely specified in
	advance) that it works best to *build* things in the opposite
	order, by writing and testing a clean set of primitive
	operations and then knitting them together.

	(10 May 1996)

bottom-up model

	<programming> A method for estimating the cost of a complete
	software project by combining estimates for each component.

	(28 May 1996)

bottom-up testing

	<programming> An integration testing technique that tests the
	low-level components first using test drivers for those
	components that have not yet been developed to call the
	low-level components for test.

	Compare {bottom-up implementation}.

	(10 May 1996)

botwar

	<chat> The epic struggle of {bots} vying for dominance.

	Botwars are generally (and quite inappropriately) carried out
	on {talk} systems, typically {IRC}, where botwar crossfire
	(such as {pingflood}ing) absorbs scarce server resources and
	obstructs human conversation.

	The wisdom of experience indicates that {Core Wars}, not
	{talk} systems, are the appropriate venue for aggressive bots
	and their {botmasters}.

	Compare {penis war}.

	(08 Apr 1997)

bounce

	1. (Perhaps by analogy to a bouncing check) An {electronic
	mail} message that is undeliverable and returns an error
	notification (a "{bounce message}") to the sender is said to
	"bounce".

	2. To play volleyball.  The now-demolished {D. C. Power Lab}
	building used by the {Stanford AI Lab} in the 1970s had a
	volleyball court on the front lawn.  From 5 PM to 7 PM was the
	scheduled maintenance time for the computer, so every
	afternoon at 5 would come over the intercom the cry: "Now hear
	this: bounce, bounce!", followed by Brian McCune loudly
	bouncing a volleyball on the floor outside the offices of
	known volleyballers.

	3. To engage in sexual intercourse; probably from the
	expression "bouncing the mattress", but influenced by Roo's
	psychosexually loaded "Try bouncing me, Tigger!" from the
	"Winnie-the-Pooh" books.

	Compare {boink}.

	4. To casually reboot a system in order to clear up a
	transient problem.  Reported primarily among {VMS} users.

	5. (VM/CMS programmers) Automatic warm-start of a computer
	after an error.  "I logged on this morning and found it had
	bounced 7 times during the night"

	6. (IBM) To {power cycle} a peripheral in order to reset it.

	(29 Nov 1994)

bounce message

	A notification message returned to the sender by a site unable
	to relay {e-mail} to the intended recipient or the next link
	in a {bang path}.  Reasons might include a nonexistent or
	misspelled username or a {down} relay site.  Bounce messages
	can themselves fail, with occasionally ugly results; see
	{sorcerer's apprentice mode} and {software laser}.  The terms
	"bounce mail" and "barfmail" are also common.

	(29 Nov 1994)

boundary scan

	The use of {scan register}s to capture state from device input
	and output pins.  {IEEE} Standard 1149.1-1990 describes the
	international standard implementation (sometimes called JTAG
	after the Joint Test Action Group which began the
	standardisation work).

	(14 Feb 1995)

boundary value analysis

	<programming> A test data selection technique in which values
	are chosen to lie along data extremes.  Boundary values
	include maximum, minimum, just inside/outside boundaries,
	typical values, and error values.  The hope is that, if a
	systems works correctly for these special values then it will
	work correctly for all values in between.

	(10 May 1996)

bounded

	In {domain theory}, a subset S of a {cpo} X is bounded if
	there exists x in X such that for all s in S, s <= x.  In
	other words, there is some element above all of S.  If every
	bounded subset of X has a least upper bound then X is
	boundedly {complete}.

	("<=" is written in {LaTeX} as {\subseteq}).

	(03 Feb 1995)

boundedly complete

	In domain theory, a complete partial order is boundedly
	complete if every bounded subset has a least upper bound.
	Also called consistently complete.

bound variable

	1. A bound variable or {formal argument} in a function
	definition is replaced by the {actual argument} when the
	function is applied.  In the {lambda abstraction}

		\ x . M

	x is the bound variable.  However, x is a {free variable} of
	the term M when M is considered on its own.  M is the {scope}
	of the binding of x.

	2. In logic a bound variable is a quantified variable.  See
	{quantifier}.

bournebasic

	A {BASIC} {interpreter}.

	comp.sources.misc archives volume 1.

Bourne shell

	(sh, Shellish).  The original {command line interpreter}
	{shell} and script language for {Unix} written by S.R. Bourne
	of {Bell Laboratories} in 1978.  sh has been superseded for
	interactive use by the {Berkeley} {C shell}, {csh} but still
	widely used for writing {shell script}s.

	There were even earlier shells, see {glob}.  [Details?]

	{ash} is a Bourne Shell clone.

	["Unix {Time-Sharing} System: The Unix Shell", S.R. Bourne,
	Bell Sys Tech J 57(6):1971-1990 (Jul 1978)].

boustrophedonic

	<hardware> (From the Greek "boustrophe-don": turning like oxen
	in plowing; from "bous": ox, cow; "strephein": to turn) An
	ancient method of writing using alternate left-to-right and
	right-to-left lines.  It used for an optimisation performed by
	some computer typesetting software and moving-head printers to
	reduce physical movement of the print head.  The adverbial
	form "boustrophedonically" is also found.

	(29 Nov 1994)

box

	<computer> 1. A computer; especially in the construction "foo
	box" where foo is some functional qualifier, like "graphics",
	or the name of an {operating system} (thus, "{Unix} box",
	"{MS-DOS} box", etc.)  "We preprocess the data on Unix boxes
	before handing it up to the {mainframe}."  The plural
	"{boxen}" is sometimes seen.

	2. Without qualification in an {IBM} {SNA} site, "box" refers
	specifically to an {IBM} {front-end processor}.

	(29 Nov 1994)

boxed comments

	<programming> {Comments} that occupy several lines by
	themselves; so called because in {assembler} and {C} code they
	are often surrounded by a box in a style similar to this:

	 /*************************************************
	 *
	 * This is a boxed comment in C style
	 *
	 *************************************************/

	Common variants of this style omit the asterisks in column 2
	or add a matching row of asterisks closing the right side of
	the box.  The sparest variant omits all but the comment
	{delimiters} themselves; the "box" is implied.

	Opposite of {winged comments}.

	(21 Jul 1997)

boxen

	/bok'sn/ (By analogy with {VAXen}) A fanciful plural of {box}
	often encountered in the phrase "Unix boxen", used to describe
	commodity {Unix} hardware.  The connotation is that any two
	Unix boxen are interchangeable.

	(29 Nov 1994)

Boxer

	<language> A {visual language} by Hal Abelson and Andy diSessa
	of Berkeley which claims to be the successor to {Logo}.  Boxes
	are used to represent {scope}.

	(02 May 1995)

boxology

	<graphics> /bok-sol'*-jee/ {ASCII art}.

	This term implies a more restricted domain, that of
	box-and-arrow drawings.  "His report has a lot of boxology in
	it."

	Compare {macrology}.

	(02 Dec 1994)

Boycott Apple

	Some time before 1989, {Apple Computer, Inc.} started a
	lawsuit against {Hewlett-Packard} and {Microsoft}, claiming
	they had breeched Apple's {copyright} on the {look and feel}
	of the {Macintosh user interface}.  In December 1989, {Xerox}
	failed to sue {Apple Computer}, claiming that the software for
	Apple's {Lisa} computer and {Macintosh} {Finder}, both
	copyrighted in 1987, were derived from two {Xerox} programs:
	{Smalltalk}, developed in the mid-1970s and {Star},
	copyrighted in 1981.

	Apple wanted to stop people from writing any program that
	worked even vaguely like a {Macintosh}.  If such {look and
	feel} lawsuits succeed they could put an end to {free
	software} that could substitute for commercial software.

	In the weeks after the suit was filed, {Usenet} reverberated
	with condemnation for Apple.  {GNU} supporters {Richard
	Stallman}, John Gilmore, and Paul Rubin decided to take action
	against Apple.  Apple's reputation as a force for progress
	came from having made better computers; but The {League for
	Programming Freedom} believed that Apple wanted to make all
	non-Apple computers worse.  They therefore campaigned to
	discourage people from using Apple products or working for
	Apple or any other company threatening similar obstructionist
	tactics (e.g. {Lotus} and {Xerox}).

	Because of this boycott the {Free Software Foundation} for a
	long time didn't support {Macintosh} {Unix} in their software.
	In 1995, the LPF and the FSF decided to end the boycott.

	[Dates?  Other events?  Why did Xerox's case against Apple
	fail?]

	(18 Apr 1995)

bozotic

	<abuse> (From Bozo the Clown, a famous circus personality, via
	"bozo" - a clod, idiot or generally silly person) any form of
	clown-like or ludicrous behaviour.  The word also has echoes
	of "robotic", so bozotic behaviour is mindless, automaton-like
	stupidity.

	(05 Jan 1996)

BPI

	{bits per inch}

BPS

	{bits per second}

BQS

	{Berkeley Quality Software}

brace

	<character> {left brace} or {right brace}.

bracket

	<character> (Or square bracket) A {left bracket} or {right
	bracket}.

	Often used losely for {parentheses}, {square brackets},
	{braces}, {angle brackets}, or any other kind of unequal
	paired {delimiters}.

	(08 Sep 1996)

bracket abstraction

	<compiler> An {algorithm} which turns a term into a function
	of some variable.  The result of using bracket abstraction on
	T with respect to variable v, written as [v]T, is a term
	containing no occurrences of v and denoting a function f such
	that f v = T.  This defines the function f = (\ v . T).  Using
	bracket abstraction and {currying} we can define a language
	without {bound variable}s in which the only operation is
	{monadic} function application.

	See {combinator}.

	(07 Mar 1995)

Brain Aid Prolog

	<language> (BAP) A parallel {Prolog} environment for
	{transputer} systems by Frank Bergmann
	<fraber@cs.tu-berlin.de>, Martin Ostermann
	<ost@xan.dfv.rwth-aachen.de>, and Guido von Walter
	<guido@parsytec.de> of {Brain Aid Systems} GbR.  It is based
	on a model of communicating sequential Prolog processes.  The
	{runtime system} consists of a multi-process {operating
	system} with support for several applications running
	concurrently.

	{Home (http://www.cs.tu-berlin.de/~fraber/bap.html)}

	{Berlin FTP (ftp://unlisys.in-berlin.de/pub/brainaid/)}, {CMU
	FTP
	(ftp://ftp.cs.cmu.edu/user/ai/lang/prolog/impl/parallel/bap/)}.

	(07 Mar 1995)

brain-damaged

	1. [generalisation of "Honeywell Brain Damage" (HBD), a
	theoretical disease invented to explain certain utter
	cretinisms in Honeywell {Multics}] Obviously wrong; cretinous;
	{demented}.  There is an implication that the person
	responsible must have suffered brain damage, because he should
	have known better.  Calling something brain-damaged is really
	bad; it also implies it is unusable, and that its failure to
	work is due to poor design rather than some accident.  "Only
	six monocase characters per file name?  Now *that's*
	brain-damaged!"

	2. [especially in the Mac world] May refer to free
	demonstration software that has been deliberately crippled in
	some way so as not to compete with the commercial product it
	is intended to sell.  Synonym {crippleware}.

brain-dead

	Brain-damaged in the extreme.  It tends to imply terminal
	design failure rather than malfunction or simple stupidity.

brain dump

	(The act of telling someone) everything one knows about a
	particular topic.  Typically used when someone is going to let
	a new party maintain a piece of code.  Conceptually analogous
	to an operating system {core dump} in that it saves a lot of
	useful {state} before an exit.  "You'll have to give me a
	brain dump on FOOBAR before you start your new job at
	HackerCorp."  At Sun, this is also known as "TOI" (transfer of
	information).

brain fart

	<jargon, humour> 1. The actual result of a {braino}, as
	opposed to the mental {glitch} that is the braino itself.
	E.g. typing "dir" on a {Unix box} after a session with
	{MS-DOS}.

	2. A biproduct of a bloated mind producing information
	effortlessly.  A burst of useful information. "I know you're
	busy on the Microsoft story, but can you give us a brain fart
	on the Mitnik bust?"

	(29 Apr 1997)

braino

	{thinko}

Branch and Hang

	<humour> (BRH) Originally a mythical instruction for the {IBM
	1130} at {Indiana University}.

	Later some real examples were discovered.  The {Texas
	Instruments} {TI-980} allowed all {addressing modes} with all
	instructions, including Store Immediate Extended (stores the
	value into the extension word of the instruction) and Branch
	and Link Immediate (makes a subroutine call to the same
	instruction -- Branch and Hang).

	Comapre {HCF}.

	(12 Feb 1997)

branch coverage testing

	<programming> A test method which aims to ensure that each
	possible branch from each decision point (e.g. "if" statement)
	is executed at least once, thus ensuring that all reachable
	code is executed.

	(10 May 1996)

branch delay slot

	{delayed control-transfer}

Branch on Chip Box Full

	<humour> (BCBF) A mythical {IBM 1130} instruction whose action
	depended on the contents of the {chip box}.  This was one of a
	long list of fake {assembly language} instructions that went
	around {Indiana University} in the 1970s.

	(12 Feb 1997)

branch prediction

	<processor, algorithm> A technique used in some processors
	with {instruction prefetch} to guess whether a branch will be
	taken or not and prefetch code from the appropriate location.

	When a branch instruction is executed, it and the next
	instruction executed are stored in the {Branch Target Buffer}.
	This information is used to predict which way the instruction
	will branch the next time it is executed.  When the prediction
	is correct (and it is over 90% of the time), executing a
	branch does not cause a {pipeline break}.

	[Does it store instructions or their addresses?]

	(05 May 1995)

Branch Target Buffer

	<processor> (BTB) A {register} used to store the predicted
	destination of a branch in a processor using {branch
	prediction}?

	[Is this correct?  Examples?]

	(05 May 1995)

branch to Fishkill

	(IBM: from the location of one of the corporation's
	facilities) Any unexpected jump in a program that produces
	catastrophic or just plain weird results.

	See {jump off into never-never land}, {hyperspace}.

Brazil

	An {operating system} from {Acorn Computers} used on an {ARM}
	card which could be fitted to an {IBM PC}.  There was also an
	{ARM} second processor for the {BBC Microcomputer} which used
	Brazil.  Never used on the {Archimedes}(?).

	(05 Dec 1994)

BRB

	<chat> (I will) be right back.

	(18 Jan 1998)

bread crumbs

	Debugging statements inserted into a program that emit output
	or log indicators of the program's {state} to a file so you
	can see where it dies or pin down the cause of surprising
	behaviour.  The term is probably a reference to the Hansel and
	Gretel story from the Brothers Grimm; in several variants, a
	character leaves a trail of bread crumbs so as not to get lost
	in the woods.

breadth first search

	<algorithm> A graph search {algorithm} which tries all
	one-step extensions of current paths before trying larger
	extensions.  This requires all current paths to be kept in
	memory simultaneously, or at least their end points.

	Opposite of {depth-first search}.  See also {best first
	search}.

	(05 Jan 1996)

break

	1. To cause to be {broken} (in any sense).  "Your latest patch
	to the editor broke the paragraph commands."

	2. (Of a program) To stop temporarily, so that it may
	debugged.  The place where it stops is a "{breakpoint}".

	3. To send an {RS-232} break (two character widths of line
	high) over a {serial line}.

	4. [Unix] To strike whatever key currently causes the tty
	driver to send SIGINT to the current process.  Normally,
	break, delete or {control-C} does this.

	5. "break break" may be said to interrupt a conversation (this
	is an example of verb doubling).  This usage comes from radio
	communications, which in turn probably came from landline
	telegraph/teleprinter usage, as badly abused in the Citizen's
	Band craze a few years ago.

	6. {pipeline break}.

break-even point

	In the process of implementing a new computer language, the
	point at which the language is sufficiently effective that one
	can implement the language in itself.  That is, for a new
	language called, hypothetically, FOOGOL, one has reached
	break-even when one can write a demonstration compiler for
	FOOGOL in FOOGOL, discard the original implementation
	language, and thereafter use working versions of FOOGOL to
	develop newer ones.  This is an important milestone.  See {My
	Favourite Toy Language}.

	[There actually is a language called {Foogol}].

breath-of-life packet

	({XEROX PARC}) An {Ethernet} {packet} that contains
	{bootstrap} code, periodically sent out from a working
	computer to infuse the "breath of life" into any computer on
	the network that has crashed.  Computers depending on such
	packets have sufficient hardware or firmware code to wait for
	(or request) such a packet during the reboot process.

	See also {dickless workstation}.

	The notional "kiss-of-death packet", with a function
	complementary to that of a breath-of-life packet, is
	recommended for dealing with hosts that consume too many
	network resources.  Though "kiss-of-death packet" is usually
	used in jest, there is at least one documented instance of an
	{Internet} subnet with limited address-table slots in a
	gateway computer in which such packets were routinely used to
	compete for slots, rather like Christmas shoppers competing
	for scarce parking spaces.

	(26 Jan 1995)

breedle

	{feep}

BRH

	{Branch and Hang}

BRI

	{Basic Rate Interface}, {2B1D} {Integrated Services Digital
	Network}.

	Basic Rate ISDN?

Brian Reid

	<person> The person who cofounded {Usenet}'s anarchic alt.*
	{newsgroup} {hierarchy} with {John Gilmore}.

	(12 Apr 1997)

BRIDGE

	A component of {ICES} for civil engineers.

	[Sammet 1969, p. 616].

bridge

	A device which forwards traffic between network segments based
	on {data link layer} information.  These segments would have a
	common {network layer} address.

	See also {gateway}, {router}.

Bridgetalk

	A visual language.

Brilliant

	One of five pedagogical languages based on {Markov}
	{algorithm}s, used in ["Nonpareil, a Machine Level Machine
	Independent Language for the Study of Semantics", B. Higman,
	ULICS Intl Report No ICSI 170, U London (1968)].

	See also {Diamond}, {Nonpareil}, {Pearl}, {Ruby}.

bring X to its knees

	To present a computer, operating system, piece of software, or
	algorithm with a load so extreme or {pathological} that it
	grinds to a halt.  "To bring a MicroVAX to its knees, try
	twenty users running {vi} - or four running {EMACS}."
	Compare {hog}.

British Broadcasting Corporation

	<company> (BBC) The UK state television and radio company.
	They commissioned the "{BBC Micro}" from {Acorn Computers} for
	use in a television series about using computers.  They also
	run the {BBC Networking Club}.

	(28 Feb 1995)

British Standards Institute

	<body, standard> (BSI) The British member of {ISO}.

	(12 Jun 1996)

British Telecom

	<company> (BT) The largest telecommunications provider in the
	UK.

	Due to regulatory issues, BT had to sell off its interest in
	McCaw Cellular.  BT sold it to {AT&T} for something like 4B$.
	BT then invested that in {MCI}.  As a part of the deal, MCI
	was given BT North America, which was the old {Tymnet}.  MCI
	laid off about 40% of the Tymnet staff.

	{Home (http://www.intervid.co.uk/)}

	(09 May 1995)

British Telecom Research Laboratories

	<company> (BTRL) The laboratories where {British Telecom}
	develops many of its new Network services.

	{Home (http://www.labs.bt.com/)}

	Address: Martlesham Heath, near Ipswich, Suffolk, UK.

	(25 Apr 1995)

brittle

	<jargon> 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 commercially developed
	software, which displays the quality far more often than it
	ought to.

	Opposite of {robust}.

	(09 May 1995)

broadband

	<communications> A transmission medium capable of supporting a
	wide range of frequencies, typically from audio up to video
	frequencies.  It can carry multiple signals by dividing the
	total capacity of the medium into multiple, independent
	bandwidth channels, where each channel operates only on a
	specific range of frequencies.

	See also {baseband}.

	(09 May 1995)

broadcast

	A transmission to multiple, unspecified recipients.  On
	Ethernet, a broadcast packet is a special type of multicast
	packet which all nodes on the network are always willing to
	receive.

broadcast quality video

	<communications, multimedia> Roughly, {video} with more than
	30 frames per second at a {resolution} of 800 x 640 {pixels}.

	The quality of moving pictures and sound is determined by the
	complete chain from camera to receiver.  Relevant factors are
	the colour temperature of the lighting, the balance of the
	red, green and blue vision pick-up tubes to produce the
	correct display colour temperature (which will be different)
	and the {gamma} pre-correction to cancel the non-linear
	characteristic of {cathode-ray tubes} in television receivers.
	The {resolution} of the camera tube and video coding system
	will determine the maximum number of {pixels} in the picture.

	Different colour coding systems have different defects.  The
	NTSC system (National Television Systems Committee) can
	produce {hue} errors.  The PAL system (Phase Alternation by
	Line) can produce {saturation} errors.

	Television modulation systems are specified by ITU CCIR Report
	624.  Low-resolution systems have {bandwidths} of 4.2 MHz with
	525 to 625 lines per frame as used in the Americas and Japan.
	Medium resolution of 5 to 6.5 MHz with 625 lines is used in
	Europe, Asia, Africa and Australasia.  {High-Definition
	Television} (HDTV) will require 8 MHz or more of bandwidth.

	A medium resolution (5.5 MHz in UK) picture can be represented
	by 572 lines of 402 pixels.  Note the ratio of pixels to lines
	is not the same as the {aspect ratio}.  A {VGA} display (480n
	lines of 640 pixels) could thus display 84% of the height of
	one picture frame.

	Most compression techniques reduce quality as they assume a
	restricted range of detail and motion and discard details to
	which the human eye is not sensitive.

	Broadcast quality implies something better than amateur or
	domestic video and therefore can't be retained on a domestic
	video recorder.  Broadcasts use quadriplex or U-matic
	recorders.

	The lowest frame rate used for commercial entertainment is the
	24Hz of the 35mm cinema camera.  When broadcast on a 50Hz
	television system, the pictures are screened at 25Hz reducing
	the running times by 4%.  On a 60Hz system every five movie
	frames are screened as six TV frames, still at the 4%
	increased rate.  The six frames are made by mixing adjacent
	frames, with some degradation of the picture.

	A computer system to meet international standard reproduction
	would at least VGA resolution, an interlaced frame rate of
	24Hz and 8 bits to represent the luminance (Y) component.  For
	a component display system using red, green and blue (RGB)
	electron guns and phosphor dots each will require 7 bits.
	Transmission and recording is different as various coding
	schemes need less bits if other representations are used
	instead of RGB.  Broadcasts use YUV and compression can reduce
	this to about 3.5 bits per pixel without perceptible
	degradation.  High-quality video and sound can be carried on a
	34 Mbaud channel after being compressed with {ADPCM} and
	{variable length coding}, potentially in real time.

	(04 Jul 1997)

broadcast storm

	<networking> An {broadcast} on a {network} that causes
	multiple {hosts} to respond by broadcasting themselves,
	causing the storm to grow exponentially in severity.

	See {network meltdown}.

	(07 Feb 1995)

Broadway

	<standard, operating system> A standard which the {X
	Consortium} is currently (January 1997) developing and plans
	to release soon as an {open standard}.  A prime goal is to be
	more {bandwidth}-efficient and easier to develop for (and to
	{port}) than the {X Window System}, which has been widely
	described as over-sized, over-featured, over-engineered and
	incredibly over-complicated.

	{Home (http://www.x.org/consortium/broadway.html)}.

	(15 May 1997)

brochureware

	Planned but non-existent product like {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.

broken

	Not working properly (of programs).

broken arrow

	<communications> The error code displayed on line 25 of a {IBM
	3270} {terminal} (or a {terminal emulator} emulating a 3270)
	for various kinds of {protocol} violations and "unexpected"
	error conditions (including connection to a {down} computer).
	On a PC, simulated with "->/_", with the two centre characters
	overstruck.

	"Broken arrow" is also military jargon for an accident
	involving nuclear weapons.

	(07 Feb 1995)

broket

	<character> /broh'k*t/ or /broh'ket/ (From broken bracket)
	Either of the characters "<" or ">" when used as paired
	enclosing {delimiters} ({angle brackets}).

	(21 Jul 1997)

Brooks's Law

	<programming> "Adding manpower to a late software project
	makes it later" - a result of the fact that the expected
	advantage from splitting 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}".

	The myth 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; too often, {management} still does.

	See also {creationism}, {second-system effect}, {optimism}.

	(17 Sep 1996)

brouter

	A device which bridges some {packet}s (i.e. forwards based on
	{data link layer} information) and routes other packets (i.e.
	forwards based on {network layer} information).  The
	{bridge}/{route} decision is based on configuration
	information.

browser

	<hypertext> A program which allows a person to read
	{hypertext}.  The browser gives some means of viewing the
	contents of {nodes} (or "pages") and of {navigating} from one
	node to another.

	{Netscape Navigator}, {NCSA} {Mosaic}, {Lynx}, and {W3} are
	examples for browsers for the {World-Wide Web}.  They act as
	{clients} to remote {web servers}.

	(31 May 1996)

BRS

	{Big Red Switch}.  This abbreviation is fairly common on-line.

BRUIN

	Brown University Interactive Language.

	A simple interactive language with {PL/I}-like {syntax}, for
	{IBM 360}.

	["Meeting the Computational Requirements of the University,
	Brown University Interactive Language", R.G. Munck, Proc 24th
	ACM Conf, 1969].

	(14 Feb 1995)

brute force

	A primitive programming style in which the programmer relies
	on the computer's processing power instead of using his 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 heavy-handed, 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 "{travelling 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 minimise 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-complete}.

	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 {algorithm}s over {brittle} "smart" ones does seem to
	have been a significant factor in the success of that
	{operating system}.  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 aesthetic judgment.

	(14 Feb 1995)

brute force and ignorance

	<jargon> (BFI) 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 methods tends to encourage this
	sort of thing.  Characteristic of early {larval stage}
	programming; unfortunately, many never outgrow it.

	Also encountered in the variants BFMI - brute force and
	massive ignorance, and BFBI - brute force and bloody
	ignorance.

	"Gak, they used a {bubble sort}!  That's strictly BFI."

	Compare {bogosity}.

	(12 Jun 1996)

BS

	<character> Backspace, the {mnemonic} for {ASCII} 8.

	(24 Jun 1996)

BS2000

	<operating system> An {operating system} from {SNI} for
	{mainframes}.

	{Home (http://www.mch.sni.de.public/bs2000/server.htm)}.

	(13 Jun 1997)

BSA

	{Business Software Alliance}

BSD

	{Berkeley System Distribution}

BSD386

	{386BSD}

BSDI

	{Berkeley Software Design, Inc.}

BSD/OS

	<operating system> {BSDI}'s commercial version of {Berkeley
	Standard Distribution} {Unix}.  BSD/OS is a
	{POSIX}-compatible, {Unix}-like system for the {80386}, {486},
	and {Pentium}.  It is based on the {BSD} software from {UCB},
	a number of other sources, and components engineered by BSDI.
	The initial production release of BSD/OS shipped in March,
	1993.

	(13 Jan 1996)

BSD Unix

	{Berkeley System Distribution}

BSI

	{British Standards Institute}

BSL

	Variant of IBM's PL/S systems language.  Versions: BSL1, BSL2.

BSP method

	A CASE method from IBM.

BSS

	{Block Started by Symbol}

BTB

	{Branch Target Buffer}

btoa

	<tool, messaging, algorithm, file format> /B too A/ A {binary}
	to {ASCII} conversion utility.

	btoa is a {uuencode} or {base 64} equivalent which addresses
	some of the problems with the uuencode standard but not as
	many as the base 64 standard.  It avoids problems that some
	{hosts} have with spaces (e.g. conversion of groups of spaces
	to tabs) by not including them in its character set, but may
	still have problems on non-ASCII systems (e.g. {EBCDIC}).

	btoa is primarily used to transfer {binary files} between
	systems across connections which are not {eight bit clean},
	e.g. {electronic mail}.

	btoa takes adjacent sets of four binary {octets} and encodes
	them as five ASCII {octets} using ASCII characters '!' through
	to 'u'.  Special characters are also used: 'x' marks the
	beginning or end of the archive; 'z' marks four consecutive
	zeros and 'y' (version 5.2) four consecutive spaces.

	Each group of four octets is processed as a 32-bit integer.
	Call this 'I'.  Let 'D' = 85^4.  Divide I by D.  Call this
	result 'R'.  Make I = I - (R * D) to avoid {overflow} on the
	next step.  Repeat, for values of D = 85^3, 85^2, 85 and 1.
	At each step, to convert R to the output character add decimal
	33 (output octet = R + ASCII value for '!').  Five output
	octets are produced.

	btoa provides some integrity checking in the form of a line
	{checksum}, and facilities for patching corrupted downloads.

	The {algorithm} used by btoa is more efficient than uuencode
	or base 64.  ASCII files are encoded to about 120% the size of
	their binary sources.  This compares with 135% for uuencode or
	base 64.

	{C source (ftp://hpux.csc.liv.ac.uk/hpux/Misc/btoa-5.2/)}
	(version 5.2 - ~1994).

	Pre-compiled {MS-DOS} versions are also available.

	(08 Aug 1997)

B-Toolkit

	<tool, programming, product> A set of software tools designed
	to support a rigorous or formal development of software
	systems using the {B-Method}.

	The Toolkit also provides a development environment automating
	the management of all associated files, ensuring that the
	entire development, including code and documentation, is
	always in a consistent state.

	The Toolkit includes: a specification, design and code
	configuration management system, including integrity and
	dependency management and source file editing facilities; a
	set of software specification and design analysis tools, which
	includes {syntax} checkers, type checkers and a specification
	animator; a set of verification tools, which includes a
	proof-obligation generator and automatic and interactive
	provers; a set of coding tools, which includes a translator,
	linker, rapid prototyping facilities and a reusable
	specification/code module library; a documentation tool for
	automatically producing fully cross-referenced and indexed
	type-set documents from source files; a re-making tool for
	automatically re-checking and re-generating specifications,
	designs, code and documentation after modifications to source
	files.

	A normal licence costs 25,000 pounds, academic 6,250 pounds.

	(13 Mar 1995)

BTOS

	{Convergent Technologies Operating System}

B-tree

	1. {binary tree}.

	2. {balanced tree}.

BTRIEVE

	1. <company> {BTRIEVE Technologies, Inc.}.

	2. <tool> A trademark of {BTRIEVE Technologies, Inc.} for
	their {ISAM} {index file} manager for {IBM PC}s.

	(28 Mar 1995)

BTRIEVE Technologies, Inc.

	<company, database> /bee-treev/ (BTI) A provider of
	{client-server} {database engines}.  BTI was founded by former
	{Novell, Inc.} employees, including the original developers of
	the Btrieve database engine.  BTI acquired the database
	product line from Novell in April, 1994.

	{Home (http://www.btrieve.com/)}

	Address: Austin, Texas, USA.

	(14 Dec 1995)

BTRL

	<company> {British Telecom Research Laboratories}.

BTW

	by the way.

BUAF

	[alt.fan.warlord] Big Ugly ASCII Font.  A special form of
	{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 {banner} programs.
	These are sometimes used to render one's name in a {sig
	block}, and are critically referred to as "BUAF"s.  See
	{warlording}.

BUAG

	[alt.fan.warlord] Big Ugly ASCII Graphic.  Pejorative term for
	ugly {ASCII ART}, especially as found in {sig block}s.  For
	some reason, mutations of the head of Bart Simpson are
	particularly common in the least imaginative {sig block}s.

	See {warlording}.

bubble memory

	A storage device built using materials such as gadolinium
	gallium garnet which are can be magnetised easily in only one
	direction.  A film of these materials can be created so that
	it is magnetisable in an up-down direction.  The magnetic
	fields tend to join together, some with the north pole facing
	up, some with the south.

	When a veritcal magnetic field is imposed on this, the areas
	in opposite alignment to the field shrink to circles, or
	'bubbles'.  A bubble can be formed by reversing the field in a
	small spot, and can be destroyed by increasing the field.

	Bubble memory is a kind of {non-volatile storage} but
	{EEPROM}, {Flash Erasable Programmable Read Only Memory} and
	ferroelectric technologies, which are also non-volatile, are
	faster.

	["Great Microprocessors of the Past and Present", V 4.0.0,
	John Bayko <bayko@hercules.cs.uregina.ca>, Appendix C]

	(03 Feb 1995)

bubble sort

	A 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 {naive} and untutored programmers,
	hackers consider it the {canonical} example of a naive
	algorithm.  The canonical example of a really *bad* algorithm
	is {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.

bucky bits

	/buh'kee bits/ 1. Obsolete.  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 {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 after
	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 {double bucky}, {quadruple bucky}.

buffer

	1. An area of memory used for storing messages.  Typically, a
	buffer will have other attributes such as an input pointer
	(where new data will be written into the buffer), and output
	pointer (where the next item will be read from) and/or a count
	of the space used or free.  Buffers are used to decouple
	processes so that the reader and writer may operate at
	different speeds or on different sized blocks of data.

	There are many different algorithms for using buffers, e.g.
	first in first out (FIFO or shelf), last in first out (LIFO or
	stack), double buffering (allowing one buffer to be read while
	the other is being written), cyclic buffer (reading or writing
	past the end wraps around to the beginning).

	2. An electronic device to provide compatibility between two
	signals, e.g. changing voltage levels or current capability.

buffered write-through

	When a {cache} uses a "{write buffer}" to hold data being
	written back to main memory.  This frees the cache to service
	read requests while the write is taking place.  There is
	usually only one stage of buffering so subsequent consecutive
	writes must wait for first to complete.  Most accesses are
	reads so buffered write-through is only useful for very slow
	main memory.

buffer overflow

	<programming> What happens when you try to store more data in
	a {buffer} than it can handle.  This may be due to a mismatch
	in the processing rates of the producing and consuming
	processes (see {overrun} and {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 {crunch}es a line at a
	time, a short line buffer can result in {lossage} as input
	from a long line overflows the buffer and overwrites data
	beyond it.  Good defensive programming would check for
	overflow on each character and stop accepting data when the
	buffer is full.

	See also {spam}, {overrun screw}.

	(13 May 1996)

bug

	<programming> An unwanted and unintended property of a program
	or piece of hardware, especially one that causes it to
	malfunction.  Antonym of {feature}.  E.g. "There's a bug in
	the editor: it writes things out backwards."

	Historical note: Admiral {Grace Hopper} (an early computing
	pioneer better known for inventing {COBOL}) liked to tell a
	story in which a technician solved a {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 {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!

	Actually, use of "bug" in the general sense of a disruptive
	event goes back to Shakespeare!  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 game}s.

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

	[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 NSWC still had the bug,
	but had unsuccessfully tried to get the Smithsonian to accept
	it - and that the present curator of their History of
	American Technology Museum didn't know this and agreed that it
	would make a worthwhile exhibit.  It was moved to the
	Smithsonian in mid-1991, but due to space and money
	constraints has not yet been exhibited.  Thus, the process of
	investigating the original-computer-bug bug fixed it in an
	entirely unexpected way, by making the myth true!  - ESR]

bug-compatible

	Said of a design or revision that has been badly compromised
	by a requirement to be compatible with {fossil}s or
	{misfeature}s in other programs or (especially) previous
	releases of itself. "{MS-DOS} 2.0 used \ as a path separator
	to be bug-compatible with some cretin's choice of / as an
	option character in 1.0."

bug fix release

	<programming> A {release} which introduces no new {features},
	but which merely aims to fix bugs in previous releases.  All
	too commonly new bugs are introduced at the same time.

	(04 Aug 1996)

bug-for-bug compatible

	Same as {bug-compatible}, with the additional implication that
	much tedious effort went into ensuring that each (known) bug
	was replicated.

buglix

	/buhg'liks/ Pejorative term referring to {DEC}'s {ULTRIX}
	{operating system} in its earlier *severely* buggy versions.
	Still used to describe ULTRIX, but without nearly so much
	venom.  Compare {AIDX}, {HP-SUX}, {Nominal Semidestructor},
	{Telerat}, {sun-stools}.

BUGSYS

	A programming system for {pattern recognition} and preparing
	animated films, for {IBM 7094} and {IBM 360}.

	["BUGSYS: A Programming System for Picture Processing - Not
	for Debugging", R.A. Ledley et al, CACM 9(2) (Feb 1966)].

	(14 Feb 1995)

built-in

	(Or "primitive") A built-in function or operator is one
	provided by the lowest level of a language implementation.
	This usually means it is not possible (or efficient) to
	express it in the language itself.  Typical examples are the
	basic arithmetic and {Boolean} operators (in {C} syntax: +, -,
	*, /, %, !, &&, ||), bit manipulation operators (~, &, |, ^)
	and I/O primitives.  Other common functions may be provided in
	libraries but are not built-in if they are written in the
	language being implemented.

	(14 Feb 1995)

Built-in Self Test

	(BIST) The technique of designing circuits with additional
	logic which can be used to test proper operation of the
	primary (functional) logic.

	(14 Feb 1995)

bulletin board

	{bulletin board system}

bulletin boards

	{bulletin board system}

bulletin board system

	<communications, application> (BBS, bboard) (After a physical
	piece of board on which people can pin messages written on
	paper for general consumption - a "physical bboard").  A
	computer and associated software which typically provides an
	electronic message database where people can log in and leave
	messages.  Messages are typically split into {topic group}s
	similar to the {newsgroup}s on {Usenet} (which is like a
	distributed BBS).  Any user may submit or read any message in
	these public areas.

	Apart from public message areas, a BBS may provide archives of
	files, personal {electronic mail} and any other services or
	activities of interest to the bulletin board system's operator
	(the "{sysop}").  Thousands of local BBSes are in operation
	throughout the world, typically run by amateurs for fun out of
	their homes on {MS-DOS} boxes with a single {modem} line each.
	Although BBSes have traditionally been the domain of
	hobbyists, an increasing number of BBSes are connected
	directly to the {Internet}, and many BBSes are currently
	operated by government, educational, and research
	institutions.  Fans of {Usenet} and {Internet} or the big
	commercial {time-sharing} bboards such as {CompuServe}, {CIX}
	and {GEnie} tend to consider local BBSes the low-rent district
	of the hacker culture, but they serve a valuable function by
	knitting together lots of hackers and users in the
	personal-{micro} world who would otherwise be unable to
	exchange code at all.

	Use of this term for a {Usenet} newsgroup generally marks one
	either as a {newbie} fresh in from the BBS world or as a real
	old-timer predating {Usenet}.

bulletproof

	Used of an algorithm or implementation considered extremely
	{robust}; lossage-resistant; capable of correctly recovering
	from any imaginable exception condition - a rare and valued
	quality.  Synonym {armor-plated}.

bum

	1. To make highly efficient, either in time or space, often at
	the expense of clarity.  "I managed to bum three more
	instructions out of that code."  "I spent half the night
	bumming the interrupt code."  In {elder days}, {John McCarthy}
	(inventor of {Lisp}) used to compare some efficiency-obsessed
	hackers among his students to "ski bums"; thus, optimisation
	became "program bumming", and eventually just "bumming".

	2. To squeeze out excess; to remove something in order to
	improve whatever it was removed from (without changing
	function; this distinguishes the process from a
	{featurectomy}).

	3.  A small change to an algorithm, program, or hardware
	device to make it more efficient.  "This hardware bum makes
	the jump instruction faster."

	Usage: now uncommon, largely superseded by v. {tune} (and
	{tweak}, {hack}), though none of these exactly capture sense
	2.  All these uses are rare in Commonwealth hackish, because
	in the parent dialects of English "bum" is a rude synonym for
	"buttocks".

bump

	Increment.  E.g. {C}'s {++} operator.  It is used especially of
	counter variables, pointers and index dummies in "for",
	"while", and "do-while" loops.

	(29 Nov 1994)

burble

	[Lewis Carroll's "Jabberwocky"] Like {flame}, but connotes
	that the source is truly clueless and ineffectual (mere
	flamers can be competent).  A term of deep contempt.  "There's
	some guy on the phone burbling about how he got a DISK FULL
	error and it's all our comm software's fault."  This is
	mainstream slang in some parts of England.

Burge's Language

	Unnamed functional language based on lambda-calculus.
	Recursive Programming techniques", W.H. Burge, A-W 1975.

buried treasure

	A surprising piece of code found in some program.  While
	usually not wrong, it tends to vary from {crufty} to
	bletcherous, and has lain undiscovered only because it was
	functionally correct, however horrible it is.  Used
	sarcastically, because what is found is anything *but*
	treasure.  Buried treasure almost always needs to be dug up
	and removed.  "I just found that the scheduler sorts its queue
	using {bubble sort}!  Buried treasure!"

burn-in

	1. <hardware> {screen saver}.

	2. <hardware, testing> {burn-in period}.

	(23 Nov 1997)

burn-in period

	1. A factory test designed to catch systems with {marginal}
	components before they get out the door; the theory is that
	burn-in will protect customers by outwaiting the steepest part
	of the {bathtub curve} (see {infant mortality}).

	2. A period of indeterminate length in which a person using a
	computer is so intensely involved in his project that he
	forgets basic needs such as food, drink, sleep, etc.  Warning:
	Excessive burn-in can lead to burn-out.  See {hack mode},
	{larval stage}.

Burroughs Corporation

	A company which merged with {Sperry Univac} to form {Unisys
	Corporation}.

	(22 Nov 1994)

Burst EDO

	{Burst Extended Data Out DRAM}

Burst Extended Data Out DRAM

	<storage> (Burst EDO, BEDO) A variant on {EDO DRAM} in which
	read or write cycles are batched in bursts of four.  The
	bursts wrap around on a four byte boundary which means that
	only the two least significant bits of the {CAS} address are
	modified internally to produce each address of the burst
	sequence.  Consequently, burst EDO bus speeds will range from
	40MHz to 66MHz, well above the 33MHz bus speeds that can be
	accomplished using {Fast Page Mode} or EDO DRAM.

	Burst EDO was introduced sometime before May 1995.

	(25 Jun 1996)

burst page

	{banner}

bus

	<architecture> A set of conductors (wires, PCB tracks or
	connections in an {integrated circuit}) connecting the various
	{functional units} in a computer.  There are busses both
	within the {CPU} and connecting it to external memory and
	{peripheral} devices.  The width of the bus, i.e. the number of
	parallel connectors, determines the size in bits of the
	largest data item which it can carry.  The bus width and the
	number of data items per second which it can transmit are one
	of the factors limiting a computer's performance.  Most
	current {microprocessors} have 32-bit busses both internally
	and externally.

	Some processors have internal busses which are wider than
	their external busses (usually twice the width) since the
	width of the internal bus affects the speed of all operations
	and has less effect on the overall system cost than the width
	of the external bus.

	[Origin: from electrical "bus bar", from trams?]

	(01 Nov 1995)

Business Software Alliance

	<company> The BSA was created by {Microsoft} in 1988 in an
	attempt to combat {software theft}.  The alliance includes the
	majority of leading software publishers including {Novell},
	{Symantec}, and {Autodesk} and is actively campaigning in over
	65 countries.

	The BSA operates a three-pronged approach: 1. Lobbying to
	strengthen copyright laws and co-operation with law
	enforcement agencies.  2. Educating the public through
	marketing, roadshows, etc.  3. Bringing legal actions against
	counterfeiters.  BSA's aims are the same as the {Federation
	Against Software Theft} but it is not limited to the UK.

	In December 1990 the BSA obtained the first legal order in the
	UK which allowed a surprise search on a company's offices for
	suspected copyright infringement.

	{Home (http://www.bsa.org/bsa)}

	UK Office: Business Software Alliance, 1st Floor, Leaconfield
	House, Curzon Street, London W1Y 8AS, United Kingdom.

	See also {software audit}.

	(19 May 1996)

bus master

	<architecture> The device in a computer which is driving the
	{address bus} and bus control signals at some point in time.
	In a simple architecture only the (single) {CPU} can be bus
	master but this means that all communications between
	("slave") I/O devices must involve the CPU.  More
	sophisticated architectures allow other capable devices (or
	multiple CPUs) to take turns at controling the bus.  This
	allows, for example, a {network controller} card to access a
	{disk controller} directly while the CPU performs other tasks
	which do not require the bus, e.g. fetching code from its
	{cache}.

	Note that any device can drive data onto the {data bus} when
	the CPU reads from that device, but only the bus master drives
	the {address bus} and control signals.

	{Direct Memory Access} is a simple form of bus mastering where
	the I/O device is set up by the CPU to read from or write to
	one or more contiguous blocks of memory and then signal to the
	CPU when it has done so.  Full bus mastering (or "First Party
	DMA", "bus mastering DMA") implies that the I/O device is
	capable of performing more complex sequences of operations
	without CPU intervention (e.g. servicing a complete {NFS}
	request).  This will normally mean that the I/O device
	contains its own processor or {microcontroller}.

	See also {distributed kernel}.

	(26 Aug 1996)

bus mastering

	{bus master}

Busy Beaver

	<theory> (BB) One of a series of sets of {Turing Machine}
	programs.  The BBs in the Nth set are programs of N states
	that produce a larger finite number of ones on an initially
	blank tape than any other program of N states.  There is no
	program that, given input N, can deduce the productivity
	(number of ones output) of the BB of size N.

	The productivity of the BB of size 1 is 1.  Some work has been
	done to figure out productivities of bigger Busy Beavers - the
	7th is in the thousands.

	(24 Oct 1994)

busy-wait

	To wait for an {event} by {spin}ning through a {tight loop} or
	timed-delay loop that {poll}s for the event on each pass, as
	opposed to setting up an {interrupt handler} and continuing
	execution on another part of the task.  This is a wasteful
	technique, best avoided on {time-sharing} systems where a
	busy-waiting program may {hog} the processor.

Butterfly Common LISP

	A parallel version of {Common LISP} for the {BBN Butterfly}
	computer.

Butterfly Scheme

	A parallel version of {Scheme} for the {BBN Butterfly}
	computer.

button

	1. <electronics> {push-button}.

	2. <operating system> A graphical representation of an
	electrical {push-button} appearing as part of a {graphical
	user interface}.  Moving the {mouse pointer} over the
	graphical button and pressing one of the physical mouse
	buttons starts some software action such as closing a window
	or deleting a file.

	See also {radio button}.

	(07 Jul 1997)

buzz

	1. Of a program, to run with no indication of progress and
	perhaps without guarantee of ever finishing; especially said
	of programs thought to be executing a {tight loop} of code.  A
	program that is buzzing appears to be {catatonic}, but never
	gets out of catatonia, while a buzzing loop may eventually end
	of its own accord.  "The program buzzes for about 10 seconds
	trying to sort all the names into order."  See {spin}; see
	also {grovel}.

	2. [ETA Systems] To test a wire or printed circuit trace for
	continuity by applying an AC rather than DC signal.  Some wire
	faults will pass DC tests but fail a buzz test.

	3. To process an {array} or list in sequence, doing the same
	thing to each element.  "This loop buzzes through the tz array
	looking for a terminator type."

bwBASIC

	Bywater BASIC interpreter.

	A {BASIC} {interpreter} by Ted A. Campbell <tcamp@delphi.com>
	which implements a large superset of the {ANSI Standard for
	Minimal BASIC} (X3.60-1978) in {ANSI C}, and offers a simple
	interactive environment including some {shell} program
	facilities as an extension of BASIC.  The interpreter source
	has been compiled successfully on a range of {ANSI C}
	{compiler}s on varying {platform}s including {MS-DOS}, {Unix},
	and {Acorn} {RISC OS}.

	Version 2.10 was posted to {news:comp.sources.misc}, volume
	40.

	(29 Oct 1993)

BWQ

	[IBM] Buzz Word Quotient.  The percentage of buzzwords in a
	speech or documents.  Usually roughly proportional to
	{bogosity}.  See {TLA}.

byacc

	<tool> Berkeley Yacc.

	Probably the best variant of the {Yacc} {parser generator}.
	Written by Robert Corbett <Robert.Corbett@eng.sun.com>.  byacc
	was previously known as {Zoo}, and before that, as {Zeus}.
	Version: 1.9.

	{(ftp://ftp.cs.berkeley.edu/~ftp/ucb/4bsd/byacc.tar.Z)}

	(19 Jun 1995)

by hand

	1. Said of an operation (especially a repetitive, trivial,
	and/or tedious one) that ought to be performed automatically
	by the computer, but which a hacker instead has to step
	tediously through.  "My mailer doesn't have a command to
	include the text of the message I'm replying to, so I have to
	do it by hand."  This does not necessarily mean the speaker
	has to retype a copy of the message; it might refer to, say,
	dropping into a subshell from the mailer, making a copy of
	one's mailbox file, reading that into an editor, locating the
	top and bottom of the message in question, deleting the rest
	of the file, inserting ">" characters on each line, writing
	the file, leaving the editor, returning to the mailer, reading
	the file in, and later remembering to delete the file.
	Compare {eyeball search}.

	2. By extension, writing code which does something in an
	explicit or low-level way for which a presupplied library
	routine ought to have been available.  "This cretinous
	{B-tree} library doesn't supply a decent iterator, so I'm
	having to walk the trees by hand."

Byte

	<publication> A popular computing magazine.

	{Home (http://www.byte.com)}.

	(27 Mar 1997)

byte

	<unit> /bi:t/ (B) A component in the machine {data hierarchy}
	usually larger than a {bit} and smaller than a {word}; now
	most often eight bits and the smallest addressable unit of
	storage.  A byte typically holds one {character}.

	A byte may be 9 bits on 36-bit computers.  Some older
	architectures used "byte" for quantities of 6 or 7 bits,
	and the PDP-10 and IBM 7030 supported "bytes" that were
	actually bitfields of 1 to 36 (or 64) bits!  These usages
	are now obsolete, and even 9-bit bytes have become rare
	in the general trend toward power-of-2 word sizes.

	The term was coined by Werner Buchholz in 1956 during the
	early design phase for the {IBM} {Stretch} computer.  It was a
	mutation of the word "bite" intended to avoid confusion with
	"bit".  In 1962 he described it as "a group of bits used to
	encode a character, or the number of bits transmitted in
	parallel to and from input-output units".  The move to an
	8-bit byte happened in late 1956, and this size was later
	adopted and promulgated as a standard by the {System/360}
	{operating system} (announced April 1964).

	James S. Jones <jsjones@jsjones.graceland.edu> adds:

	I am sure I read in some historical brochure by IBM some 15-20
	years ago that BYTE was an acronym that stood for "Bit
	asYnchronous Transmission E__?__" which related to width of
	the bus between the Stretch CPU and its CRT-memory (prior to
	Core).

	[True origin?  First 8-bit byte architecture?]

	See also {nibble}, {octet}.

	(25 Aug 1996)

byte-code compiler

	<programming, tool> A {compiler} which outputs a program in
	some kind of {byte-code}.  This program is then interpreted by
	a {byte-code interpreter}.  The advantage of this technique
	compared with outputing {machine code} for a particular
	processor is that the same byte-code can be executed on any
	processor on which the byte-code interpreter runs.

	(04 Nov 1995)

byte compiler

	{byte-code compiler}

bytesexual

	/bi:t"sek"shu-*l/ Said of hardware, denotes willingness
	to compute or pass data in either {big-endian} or
	{little-endian} format (depending, presumably, on a {mode bit}
	somewhere).  See also {NUXI problem}.

Byzantine

	<jargon, architecture> A term describing any system that has
	so many labyrinthine internal interconnections that it would
	be impossible to simplify by separation into loosely coupled
	or linked components.

	The city of Byzantium, later renamed Constantinople and then
	Istanbul, and the Byzantine Empire were vitiated by a
	bureaucratic overelaboration bordering on lunacy: quadruple
	banked agencies, dozens or even scores of superluous levels
	and officials with high flown titles unrelated to their actual
	function, if any.

	(17 Nov 1997)

bzzzt, wrong

	/bzt rong/ ({Usenet}, {Internet}) From a Robin Williams
	routine in the movie "Dead Poets Society" spoofing radio or TV
	quiz programs, such as *Truth or Consequences*, where an
	incorrect answer earns one a blast from the buzzer and
	condolences from the interlocutor.  A way of expressing
	mock-rude disagreement, usually immediately following an
	included quote from another poster.  The less abbreviated
	"*Bzzzzt*, wrong, but thank you for playing" is also common;
	capitalisation and emphasis of the buzzer sound varies.

	(11 Nov 1994)

C

	<language> A programming language designed by {Dennis Ritchie}
	at {AT&T} {Bell Labs} ca. 1972 for systems programming on the
	{PDP-11} and immediately used to reimplement {Unix}.

	It was called "C" because many features derived from an
	earlier compiler named "{B}".  In fact, C was briefly named
	"NB".  B was itself strongly influenced by {BCPL}.  Before
	{Bjarne Stroustrup} settled the question by designing {C++},
	there was a humorous debate over whether C's successor should
	be named "D" or "P" (following B and C in "BCPL").

	C is terse, low-level and permissive.  It has a {macro
	preprocessor}, {cpp}.

	Partly due to its distribution with {Unix}, C became immensely
	popular outside {Bell Labs} after about 1980 and is now the
	dominant language in systems and {microcomputer} applications
	programming.  It has grown popular due to its simplicity,
	efficiency, and flexibility.  C programs are often easily
	adapted to new environments.

	C is often described, with a mixture of fondness and disdain,
	as "a language that combines all the elegance and power of
	{assembly language} with all the readability and
	maintainability of assembly language".

	Ritchie's original C, known as {K&R C} after Kernighan and
	Ritchie's book, has been {standard}ised (and simultaneously
	modified) as {ANSI C}.

	See also {ACCU}, {ae}, {c68}, {c386}, {C-Interp}, {cxref},
	{dbx}, {dsp56k-gcc}, {dsp56165-gcc}, {gc}, {GCT}, {GNU C},
	{GNU superoptimiser}, {Harvest C}, {malloc}, {mpl},
	{Pthreads}, {ups}.

	(01 Jun 1996)

(c)

	An {ASCII} rendition of the encircled "c" {copyright} symbol.
	Unfortunately, this rendition is not legally valid, the circle
	must be complete.  The word "copyright" in full is perfectly
	adequate though.

	(In {LaTeX} the copyright symbol is written as \copyright).

	(03 Feb 1995)

C*

	An {object-oriented}, {data-parallel} superset of {ANSI C}
	with synchronous semantics for the {Connection Machine},
	designed by {Thinking Machines}, 1987.  C* adds a "domain"
	data type and a selection statement for parallel execution in
	domains.  The current version is 6.x.

	E-mail: <customer-support@think.com>,
	<documentation-order@think.com>.

	["C*: An Extended C Language for Data Parallel Programming",
	J.R. Rose et al, Proc Second Intl Conf on Supercomputing,
	L.P. Kartashev et al eds, May 1987, pp.2-16].

	["C* Programming Manual", Thinking Machines Corp, 1986].

C++

	<language> One of the most used {object-oriented} languages, a
	superset of {C} developed primarily by Bjarne Stroustrup
	<bs@alice.att.com> at {AT&T} {Bell Laboratories} in 1986.

	In C++ a {class} is a user-defined type, syntactically a
	struct with {member function}s.  {Constructor}s and
	{destructor}s are member functions called to create or destroy
	{instance}s.  A {friend} is a nonmember function that is
	allowed to access the private portion of a class.  C++ allows
	{implicit type conversion}, {function inlining}, {overloading}
	of operators and function names, and {default function
	argument}s.  It has {stream}s for I/O and references.

	C++ 2.0 (May 1989) introduced {multiple inheritance},
	type-safe linkage, pointers to members, and {abstract
	classes}.

	C++ 2.1 was introduced in ["Annotated C++ Reference Manual",
	B. Stroustrup et al, A-W 1990].

	{MS-DOS
	(ftp://grape.ecs.clarkson.edu/pub/msdos/djgpp/djgpp.zip)},
	{Unix ANSI C++
	(ftp://prep.ai.mit.edu/pub/gnu/g++-1.39.0.tar.Z)} - X3J16
	committee. (They're workin' on it).

	See also {cfront}, {LEDA}, {uC++}.

	{Usenet} newsgroup: {news:comp.lang.c++}.

	["The C++ Programming Language", Bjarne Stroustrup, A-W,
	1986].

	(06 Jun 1996)

C+@

	(Formerly Calico).  An {object-oriented language} from {Bell
	Laboratories} which uniformly represents all data as a pointer
	to a self-described object.  C+@ provides {multiple
	inheritance} with {delegation} and with control over which
	{method}s come from which delegated object; and {default
	methodologies}.  It has a simple {syntax} with emphasis on
	graphics.  It was originally used for prototyping of
	telecommunication services.

	It runs under {SunOS} and compiles to {Vcode}.  Unir Tech,
	(800) 222-8647.

	E-mail: Jim Vandendorpe <jimvan@iexist.att.com>.

	["A Dynamic C-Based Object-Oriented System for Unix", S.
	Engelstad et al, IEEE Software 8(3):73-85 (May 1991)].

	["The C+@ Programming Language", J. Fleming, Dr Dobbs J, Oct
	1993, pp.24-32].

	(31 Oct 1994)

	[What has "Unir Tech" got to do with it?]

C-10

	An improved version of {COLINGO}.

	[Sammet 1969, p.702].

	(28 Oct 1994)

C1 security

	{Orange Book}

c2man

	<tool> An automatic {documentation} extraction tool by Graham
	Stoney <greyham@research.canon.oz.au>.  c2man extracts
	comments from {C} source code to generate functional interface
	documentation in the same format as sections 2 and 3 of the
	{Unix} Programmer's Manual.  It looks for comments near the
	objects they document, rather than imposing a rigid {syntax}
	or requiring that the programmer use a typesetting language.
	Acceptable documentation can often be generated from existing
	code with no modifications.

	It supports both {K&R} and {ISO}/{ANSI C} coding styles.
	Output can be in {nroff} -man, {Texinfo} or {LaTeX} format.
	It {automagically} documents {enum} parameter and return
	values, it handles both {C} (/* */) and {C++} (//) style
	comments, but not C++ grammar (yet).  It requires {yacc},
	{byacc} or {bison} for syntax analysis; {lex} or {flex} for
	{lexical analysis} and {nroff}, {groff}, {texinfo} or {LaTeX}
	to format the output.  It runs under {Unix}, {OS/2} and
	{MS-DOS}.

	Version 2.0 patchlevel 25 (25 Oct 1995).

	{Washington FTP
	(ftp://ftp.wustl.edu/usenet/comp.sources.reviewed/volume03/)}.
	{Stuttgart FTP
	(ftp://ftp.informatik.uni-stuttgart.de/pub/archive/comp.sources/reviewed/)}.
	{Patches
	(ftp://lth.se/pub/netnews/sources.bugs/volume93/sep/)}.

	Mailing list: <listserv@research.canon.oz.au> ("subscribe
	c2man <Your Name>" in the message body).

	Patches posted to {Usenet} newsgroups {news:comp.sources.bugs}
	and {news:comp.sources.reviewed}.

	(21 Feb 1994)

C2 security

	{Orange Book}

c386

	A compiler for {K&R C} plus {prototype}s and other {ANSI C}
	features by Matthew Brandt, Christoph van Wuellen, Keith and
	Dave Walker.  c386 is targetted to several {68000} and {Intel
	80386} {assembler}s, including {gas}.  {floating-point}
	support is by inline code or {emulation}.  It can produce lots
	of warnings and generates better code than {ACK}.

	{Version 4.2a
	(ftp://bugs.nosc.mil/pub/Minix/common-pkgs/c386-4.2.tar.Z)}.

	c386 has been ported to {Intel 80386} and {68000} {MINIX} and
	should work on any Unix.  It is actively worked on by the
	Walkers.  {Usenet} newsgroup: {news:comp.os.minix}.

C5

	An {OPS5} implementation in {C}.

C64

	{Commodore 64}

c68

	{c386} also produces {68000} code.

CA

	1. <theory, architecture> {cellular automaton}.

	2. <company> {Computer Associates}.

	3. <cryptography> {Certificate Authority}.

	(28 Sep 1996)

ca

	<networking> The {coutry code} for Canada.

	(19 Apr 1995)

cable modem

	<communications, hardware> A type of {modem} that allows
	people to access the Internet via their cable television
	service.  However, industry pundits often point out that the
	cable system still does not have the {bandwidth} or service
	level in many areas to make this feasible.  For example, it
	has to be capable of two-way communication.

	A cable modem can transfer data at 500 {kbps} or higher,
	comapred with 28.8 kbps for common telephone line modems, but
	the actual transfer rates in practice may be lower depending
	on the number of other simultaneous users on the same cable.

	(29 Jun 1997)

cache

	<storage, programming> A small fast memory holding
	recently-accessed data, designed to speed up subsequent access
	to the same data.  Most often applied to processor-memory
	access but also used for a local copy of data accessible over
	a network etc.

	When data is read from, or written to, {main memory} a copy is
	also saved in the cache, along with the associated main memory
	address.  The cache monitors addresses of subsequent reads to
	see if the required data is already in the cache.  If it is (a
	{cache hit}) then it is returned immediately and the main
	memory read is aborted (or not started).  If the data is not
	cached (a {cache miss}) then it is fetched from main memory
	and also saved in the cache.

	The cache is built from faster memory chips than main memory
	so a cache hit takes much less time to complete than a normal
	memory access.  The cache may be located on the same
	{integrated circuit} as the {CPU}, in order to further reduce
	the access time.  In this case it is often known as {primary
	cache} since there may be a larger, slower {secondary cache}
	outside the CPU chip.

	The most important characteristic of a cache is its {hit rate}
	- the fraction of all memory accesses which are satisfied from
	the cache.  This in turn depends on the cache design but
	mostly on its size relative to the main memory.  The size is
	limited by the cost of fast memory chips.

	The hit rate also depends on the access pattern of the
	particular program being run (the sequence of addresses being
	read and written).  Caches rely on two properties of the
	access patterns of most programs: temporal locality - if
	something is accessed once, it is likely to be accessed again
	soon, and spatial locality - if one memory location is
	accessed then nearby memory locations are also likely to be
	accessed.  In order to exploit spatial locality, caches often
	operate on several words at a time, a "{cache line}" or "cache
	block".  Main memory reads and writes are whole {cache lines}.

	When the processor wants to write to main memory, the data is
	first written to the cache on the assumption that the
	processor will probably read it again soon.  Various different
	policies are used.  In a {write-through} cache, data is
	written to main memory at the same time as it is cached.  In a
	{write-back} cache it is only written to main memory when it
	is forced out of the cache.

	If all accesses were writes then, with a write-through policy,
	every write to the cache would necessitate a main memory
	write, thus slowing the system down to main memory speed.
	However, statistically, most accesses are reads and most of
	these will be satisfied from the cache.  Write-through is
	simpler than write-back because an entry that is to be
	replaced can just be overwritten in the cache as it will
	already have been copied to main memory whereas write-back
	requires the cache to initiate a main memory write of the
	flushed entry followed (for a processor read) by a main memory
	read.  However, write-back is more efficient because an entry
	may be written many times in the cache without a main memory
	access.

	When the cache is full and it is desired to cache another line
	of data then a cache entry is selected to be written back to
	main memory or "flushed".  The new line is then put in its
	place.  Which entry is chosen to be flushed is determined by a
	"{replacement algorithm}".

	Some processors have separate instruction and data caches.
	Both can be active at the same time, allowing an instruction
	fetch to overlap with a data read or write.  This separation
	also avoids the possibility of bad {cache conflict} between
	say the instructions in a loop and some data in an array which
	is accessed by that loop.

	See also {direct mapped cache}, {fully associative cache},
	{sector mapping}, {set associative cache}.

	(25 Jun 1997)

cache block

	{cache line}

cache conflict

	<storage> A sequence of accesses to memory repeatedly
	overwriting the same {cache} entry.  This can happen if two
	blocks of data, which are mapped to the same set of cache
	locations, are needed simultaneously.

	For example, in the case of a {direct mapped cache}, if
	{arrays} A, B, and C map to the same range of cache locations,
	thrashing will occur when the following loop is executed:

		for (i=1; i<n; i++)
			C[i] = A[i] + B[i];

	Cache conflict can also occur between a program loop and the
	data it is accessing.

	See also {ping-pong}.

	(21 Jan 1997)

cache hit

	<storage> A request to read from memory which can satisfied
	from the {cache} without using the {main memory}.

	Opposite: {cache miss}.

	(21 Jan 1997)

cache line

	<storage> (Or cache block) The smallest unit of memory than
	can be transferred between the {main memory} and the {cache}.

	Rather than reading a single word or byte from main memory at
	a time, each cache entry is usually holds a certain number of
	words, known as a "cache line" or "cache block" and a whole
	line is read and cached at once.  This takes advantage of the
	principle of locality of reference: if one location is read
	then nearby locations (particularly following locations) are
	likely to be read soon afterwards.  It can also take advantage
	of {page-mode} {DRAM} which allows faster access to
	consecutive locations.

	(21 Jan 1997)

cache memory

	{cache}

cache miss

	<storage> A request to read from memory which cannot be
	satisfied from the {cache}, for which the {main memory} has to
	be consulted.

	Opposite: {cache hit}.

	(21 Jan 1997)

Cache On A STick

	<architecture> (COAST) {Intel Corporation} attempt to's
	standardise the modular {L2 cache} subsystem in
	{Pentium}-based computers.

	A COAST module should be about 4.35" wide by 1.14" high.
	According to earlier specifications from {Motorola}, a module
	between 4.33" and 4.36" wide, and between 1.12" and 1.16" high
	is within the COAST standard.  Some module vendors, including
	some major motherboard suppliers, greatly violate the height
	specification.

	Another COAST specification violated by many suppliers
	concerns clock distribution in synchronous modules.  The
	specification requires that the clock tree to each synchronous
	chip be balanced, i.e. equal length from edge of the connector
	to individual chips.  An unbalanced clock tree increases
	reflections and noise.

	For a 256 {kilobyte} cache module the standard requires the
	same clock be used for both chips but some vendors use
	separate clocks to reduce loading on the clock driver and
	hence increase the clock speed.  However, this creates
	unbalanced loading in other motherboard configurations, such
	as motherboards with soldered caches in the system.

	(10 Jun 1996)

caching

	{cache}

CACI

	A company developing and marketing {SIMSCRIPT}, {MODSIM} and
	other {simulation} software products.

	Telephone: +1 (619) 457-9681.

	(22 Sep 1994)

CACM

	{Communications of the ACM}

CAD

	{Computer Aided Design}

CAD/CAM

	Computer Aided Design/Computer Aided Manufacturing.(see CAD)

CADD

	Computer Aided Detector Design: a project to develop standards
	and methods to allow cooperation between HEP detector
	designers working in different institutes.

Cadence Design Systems

	The "world leader" in {design automation} software and
	services that accelerate and advance the process of designing
	electronic systems.

	{Home (http://www.cadence.com)}

CADET

	Computer Aided Design Experimental Translator.

	[Sammet 1969, p. 683].

	(29 Nov 1994)

CADRE

	<company> The US {software engineering} vendor which merged
	with {Bachman Information Systems} to form {Cayenne Software}
	in July 1996.

	(08 Feb 1998)

CAE

	1. {Common Applications Environment}.

	2. {Computer Aided Engineering}.

CAF

	{constant applicative form}

CAFE

	["Job Control Languages: MAXIMOP and CAFE", J. Brandon, Proc
	BCS Symp on Job Control Languages--Past Present and Future,
	NCC, Manchester, England 1974].

	(28 Oct 1994)

CAGE

	Early system on IBM 704.  Listed in CACM 2(5):16 (May 1959).

CAI

	{Computer-Aided Instruction}

Cairo

	{Windows NT 4}

CAIS

	{Common APSE Interface Specification}

CAIS-A

	Common APSE Interface Set A

	DoD-STD-1838A.

CAiSE

	Conference on Advanced Information Systems Engineering.

CAJOLE

	<language> (Chris And John's Own LanguagE) A {dataflow}
	language developed by Chris Hankin <clh@doc.ic.ac.uk> and John
	Sharp at {Westfield College}.

	["The Data Flow Programming Language CAJOLE: An Informal
	Introduction", C.L. Hankin et al, SIGPLAN Notices 16(7):35-44
	(Jul 1981)].

	(08 Nov 1994)

CAL

	1. {Computer Assisted Learning}.

	2. {Course Author Language}.

	(21 Mar 1997)

Calc

	An extensible, advanced desk calculator and mathematical tool
	written in {Emacs Lisp} by Dave Gillespie
	<daveg@cs.caltech.edu>.  Calc runs as part of {GNU Emacs}.
	You can use Calc as only a simple four-function calculator,
	but it also provides additional features including choice of
	algebraic or {RPN} ({stack}-based) entry, logarithms,
	trigonometric and financial functions, {arbitrary precision},
	complex numbers, vectors, matrices, dates, times, infinities,
	sets, algebraic simplification, differentiation and
	integration.

	Version: 2.02.

	FTP calc-2.02.tar.z from your nearest {GNU archive site}.

	(08 Nov 1994)

calculator

	(Cambridge) {bitty box}.

	(22 Feb 1995)

Calculus of Communicating Systems

	(CCS) A mathematical model (a formal language) for describing
	processes, mostly used in the study of {parallelism}.  A CCS
	program, written in {behaviour expressions syntax} denotes a
	process behaviour.  Programs can be compared using the notion
	of {observational equivalence}.

	["A Calculus of Communicating Systems", LNCS 92, Springer
	1980].

	["Communication and Concurrency", R. Milner, P-H 1989].

	(29 Nov 1994)

Calendar API

	{Calendar Application Programming Interface}

Calendar Application Programming Interface

	(CAPI, Calendar API) An {API} for calendar {software}.

	{Microsoft} has defined a CAPI for their {Schedule+}
	application.

	(11 Jan 1995)

Caliban

	A {declarative} annotation language for controlling the
	partitioning and placement of the evaluation of expressions in
	a distributed {functional language}.  Designed by Paul Kelly
	<phjk@doc.ic.ac.uk>, {Imperial College}.

	["Functional Programming for Loosely-coupled Multiprocessors",
	P. Kelly, Pitman/MIT Press, 1989].

	(11 Jan 1995)

Calico

	{C+@}

California State University San Marcos

	(CSUSM)

	{Home (http://coyote.csusm.edu/)}

	(21 Dec 1994)

callback

	1. A scheme used in {event-driven} programs where the program
	registers a callback handler for a certain {event}.  The
	program does not call the handler directly but when the event
	occurs, the handler is called, possibly with arguments
	describing the event.

	2. A user authentication scheme used by some computers running
	{dial-up} services.  The user dials in to the computer and
	gives his login ID and password.  The computer then hangs up
	the connection and uses an {auto-dial} {modem} to call back to
	the user's registered telephone number.  Thus, if an
	unauthorised person discovers a user's password, the callback
	will go, not to him, but to the owner of that login who will
	then know that his account is under attack.

	However, some {PABX}s can be fooled into thinking that the
	caller has hung up by sending them a dial tone.  When the
	computer tries to call out on the same line it is not actually
	dialing through to the authorised user but is still connected
	to the original caller.

call-by-name

	(CBN) (Normal order reduction, leftmost, outermost reduction).
	An argument passing convention (first provided by {ALGOL 60}?)
	where argument expressions are passed unevaluated.  This is
	usually implemented by passing a pointer to some code which
	will return the value of the argument and an environment
	giving the values of its {free variable}s.  This {evaluation
	strategy} is guaranteed to reach a {normal form} if one
	exists.

	When used to implement {functional programming} languages,
	call-by-name is usually combined with {graph reduction} to
	avoid repeated evaluation of the same expression.  This is
	then known as {call-by-need}.  The opposite of call-by-name is
	{call-by-value} where arguments are evaluated before they are
	passed to a function.  This is more efficient but is less
	likely to terminate in the presence of infinite data
	structures and {recursive} functions.  Arguments to {macro}s
	are usually passed using call-by-name.

	(29 Nov 1994)

call-by-need

	<reduction> A {reduction strategy} which delays evaluation of
	function arguments until they are needed because they are
	arguments to a {primitive} function or a conditional.
	Call-by-need is one part of {lazy evaluation}.

	The term first appears in Chris Wadsworth's thesis "Semantics
	and Pragmatics of the Lambda calculus" (Oxford, 1971, p. 183).
	It was used later, by J. Vuillemin in his thesis (Stanford,
	1973).

	(27 May 1995)

call-by-reference

	An argument passing convention where the address of an
	argument variable is passed to a function or procedure, as
	opposed to where the value of the argument expression is
	passed.  Execution of the function or procedure may have
	{side-effect}s on the actual argument as seen by the caller.
	The C language's "&" (address of) and "*" (dereference)
	operators allow the programmer to code explicit
	call-by-reference.  Other languages provide special syntax to
	declare reference arguments (e.g. {ALGOL 60}).  See also
	{call-by-name}, {call-by-value}, {call-by-value-result}.

call-by-value

	(CBV) An {evaluation strategy} where arguments are evaluated
	before the function or procedure is entered.  Only the values
	of the arguments are passed and changes to the arguments
	within the called procedure have no effect on the actual
	arguments as seen by the caller.  See {applicative order
	reduction}, {call-by-value-result}, {strict evaluation},
	{call-by-name}, {lazy evaluation}.

call-by-value-result

	An argument passing convention where the {actual argument} is
	a variable V whose value is copied to a local variable L
	inside the called function or procedure.  If the procedure
	modifies L, these changes will not affect V, which may also be
	in scope inside the procedure, until the procedure returns
	when the final value of L is copied to V.  Under
	{call-by-reference} changes to L would affect V immediately.
	Used, for example, by {BBC BASIC V} on the {Acorn}
	{Archimedes}.

call/cc

	{Call-with-current-continuation}

Caller ID

	(CID) A feature of some {modem}s.

calling convention

	<programming> The arrangement of {arguments} for a procedure
	or function call.  Different programming languages may require
	arguments to be pushed onto a {stack} or entered in
	{registers} in left-to-right or right-to left order, and
	either the caller or the callee can be responsible for
	removing the arguments.  The calling convention also
	determines if a variable number of arguments is allowed.

	(11 Nov 1995)

Call-Level Interface

	<database, standard> (SQL/CLI) A programming interface
	designed to support {SQL} access to {databases} from
	shrink-wrapped {application programs}.

	CLI was originally created by a subcommittee of the {SQL
	Access Group} (SAG).  The SAG/CLI specification was published
	as the {Microsoft} {Open DataBase Connectivity} (ODBC)
	specification in 1992.  In 1993, SAG submitted the CLI to the
	{ANSI} and {ISO} SQL committees.

	SQL/CLI provides an international standard
	implementation-independent CLI to access SQL databases.
	{Client-server} tools can easily access databases through
	{dynamic link libraries}.  It supports and encourages a rich
	set of client-server tools.

	SQL/CLI is an addendum to 1992 SQL standard (SQL-92).  It was
	completed as ISO standard ISO/IEC 9075-3:1995 Information
	technology -- Database languages -- SQL -- Part 3: Call-Level
	Interface (SQL/CLI).  The current SQL/CLI effort is adding
	support for {SQL3}.

	{(http://www.jcc.com/sql_cli.html)}.

	(27 Oct 1996)

Call Unix

	<communications, tool> (cu) The original {Unix} {virtual
	terminal} utility.  cu allows a user on one computer to log in
	to another connected via {Ethernet}, direct {serial line} or
	{modem}.  It shares some configuration files with {UUCP} in
	order to be able to use the same connections without conflict.

	{Unix manual page}: cu(1).

	(01 Dec 1997)

Callware

	<company> The developers of {Phonetastic}.

	(08 Dec 1996)

Call-with-current-continuation

	(call/cc) A {Lisp} control function.  call/cc takes a function
	f as its argument.  It calls f and passes it the current
	{continuation}, which is itself a function, k.  The
	continuation represents the context of the call to call/cc.
	It is a function which takes the result of call/cc (which is
	the result of f) and returns the final result of the whole
	program.  Thus if, for example, the final result is to print
	the value returned by call/cc then anything passed to k will
	also be printed:

		(defun f (k)
		  (apply k 1)
		  (apply k 2)
		  3)

		(print (call/cc f))

	Will print 1 2 3.

	(29 Nov 1994)

CALS

	Computer-Aided Acquisition and Logistics Support: a DoD
	standard for electronic exchange of data with commercial
	suppliers.

CAM

	{content addressable memory}

CAM-6

	Software for running {cellular automata}.  CAM-6 has been
	implemented in hardware as {CAM-PC}.

	(21 Apr 1995)

CAMAL

	<tool> CAMbridge ALgebra system.

	A {symbolic mathematics} system used in Celestial Mechanics
	and General Relativity.  CAMAL was implemented in {BCPL} on
	{Titan}.

	["CAMAL User's Manual", John P. Fitch, Cambridge U, England
	(1975)].

	["The Design of the Cambridge Algebra System", S.R. Bourne et
	al, Proc 2nd Symp of Symb & Alg Manip, SIGSAM 1971].

	(16 Feb 1995)

Cambridge Lisp

	A flavour of Lisp using BCPL.  Sources owned by Fitznorman
	partners.

Camelot Library

	<library>

	["The Camelot Library", J. Bloch, in "Guide to the Camelot
	Distributed Transaction Facility: Release I", A.Z. Spector et
	al eds, CMU 1988, pp. 29-62].

	[What is it?]

	(19 Apr 1995)

camera ready

	<publication> A final editon of a document or graphic (e.g. a
	newspaper advertisement or a technical paper for a journal)
	that is of suitable quality for mass reproduction by making
	printing plates from the negatives by photoengraving.

	(15 Nov 1996)

CAMIL

	Computer Assisted/Managed Instructional Language.

	A language used for {CAI} at Lowry AFB, CO.

	["The CAMIL Programming Language", David Pflasterer, SIGPLAN
	Notices 13(11):43 (Nov 1978)].

	(09 Nov 1994)

CAML

	1. A language for preparation of animated movies.  1976.

	(09 Nov 1994)

	2. Categorical Abstract Machine Language.

	A version of {ML} by G. Huet, G. Cousineau, Ascander Suarez,
	Pierre Weis, Michel Mauny and others of {INRIA}.  CAML is
	intermediate between {LCF ML} and {SML}.  CAML has
	{first-class} functions, {static type inference} with
	{polymorphic} types, user-defined {variant type}s and {product
	type}s, and {pattern matching}.

	The CAML V3.1 implementation adds {lazy} and {mutable} data
	structures, a "{grammar}" mechanism for interfacing with the
	{Yacc} {parser generator}, {pretty-printing} tools,
	high-performance {arbitrary-precision} arithmetic and a
	complete library.

	CAML runs on {Sun-3}, {Sun-4}, {Sony} {68000}, {Sony} {R3000},
	{Decstation}, {Macintosh} {A/UX} and {Apollo}.  It is built on
	a proprietary run-time system.

	See also {CAML Light}.

	{(ftp://ftp.inria.fr/lang/caml/)}.
	{(ftp://ftp.inria.fr/INRIA/caml/V3.1)}.

	E-mail: Pierre Weis <Pierre.Weis@inria.fr>,
	<caml@margaux.inria.fr> (bugs).

	Mailing list: <caml-list-request@margaux.inria.fr>.

	{Usenet} newsgroup: {news:comp.lang.ml}.

	["The CAML Reference Manual", P. Weis et al, TR INRIA-ENS,
	1989].

	(20 Oct 1991)

Caml Light

	A small portable implementation of a version of {CAML} by
	Xavier Leroy <Xavier.Leroy@inria.fr> and Damien Doligez of
	{INRIA}.  Caml Light uses a {bytecode interpreter} written in
	{C}.  It adds a {Modula-2}-like {module} system, {separate
	compilation}, {lazy stream}s for parsing and printing,
	graphics primitives and an interface with {C}.

	Version 0.6 runs on {Unix}, {MS-DOS}, {Macintosh}, {Atari ST}
	and {Amiga}.  It includes an {interpreter}, {compiler},
	{Emacs} mode, libraries, {scanner generator}, {parser
	generator}, {run-time support} and an interactive development
	environment.

	{(ftp://ftp.inria.fr/lang/caml-light/)}

	E-mail: <caml-light@margaux.inria.fr>.

	Mailing list: <caml-list@margaux.inria.fr>.

	{Usenet} newsgroup: {news:comp.lang.ml}.

	(06 Oct 1993)

CAM-PC

	<hardware> A {cellular automata} circuit board which is a
	hardware implementation from {Automatrix} of the {MIT} {CAM-6}
	machine.  It comes with dozens of experiments and
	applications.

	{Home (http://www.automatrix.com/campc/index.html)}

	(21 Apr 1995)

Campus Wide Information System

	(CWIS) Information and services made publicly available at
	university sites via {kiosk}s running interactive computing
	systems, possibly via campus networks.  Services routinely
	include directory information, calendars, {bulletin board}s
	and {database}s.

	(09 Nov 1994)

CAN

	{Cancel}

can

	To abort a job on a {time-sharing} system.  Used especially
	when the person doing the deed is an operator, as in "canned
	from the {console}".  Frequently used in an imperative sense,
	as in "Can that print job, the LPT just popped a sprocket!"
	Synonymous with {gun}.  It is said that the ASCII character
	with {mnemonic} CAN (0011000) was used as a kill-job character
	on some early OSes.  Alternatively, this term may derive from
	mainstream slang "canned" for being laid off or fired.

Canada

	Country with {domain} "ca".

	(06 Apr 1995)

Cancel

	<character> (CAN, Control-X) {ASCII} character 24.

	(28 Jun 1996)

Cancelm00se

	{Cancelmoose}

Cancelmoose

	<networking, Usenet> A semi-mythical being that cancels
	{Usenet} {articles} posted by others.  (In general, an article
	can only be cancelled by its original author.)

	The Cancelmoose's usual target is {spam} or extremely
	excessive {cross-post}ing.

	Some believe that the Cancelmoose exists only in the same
	mythic sense that {B1FF}, the {NSA line eater} and {Shub
	Internet} exist; others consider Cancelmoose's historicity to
	be closer to that of {Kibo}.  The latter group assume that the
	real Cancelmoose is not one person (or moose), but instead is
	a cabal of {NNTP} wonks.

	(14 Sep 1997)

candidate key

	<database> One of several possible attributes or combinations
	of attributes which can be used to uniquely identify a body of
	information (a "{record}").

	(26 Apr 1997)

Candle

	Part of the {Scorpion} environment development system.

	(09 Nov 1994)

candygrammar

	A programming-language grammar that is mostly {syntactic
	sugar}; the term is also a play on "candygram".  {COBOL},
	{Apple Computer}'s {Hypertalk} language, and a lot of the
	so-called "{4GL}" database languages share this property.  The
	usual intent of such designs is that they be as English-like
	as possible, on the theory that they will then be easier for
	unskilled people to program.  This intention comes to grief on
	the reality that syntax isn't what makes programming hard;
	it's the mental effort and organisation required to specify an
	algorithm precisely that costs.  Thus the invariable result is
	that "candygrammar" languages are just as difficult to program
	in as terser ones, and far more painful for the experienced
	hacker.

	[The overtones from the old Chevy Chase skit on Saturday Night
	Live should not be overlooked.  This was a "Jaws" parody.
	Someone lurking outside an apartment door tries all kinds of
	bogus ways to get the occupant to open up, while ominous music
	plays in the background.  The last attempt is a half-hearted
	"Candygram!"  When the door is opened, a shark bursts in and
	chomps the poor occupant.  There is a moral here for those
	attracted to candygrammars.  Note that, in many circles,
	pretty much the same ones who remember Monty Python sketches,
	all it takes is the word "Candygram!", suitably timed, to get
	people rolling on the floor. - GLS]

canonical

	(Historically, "according to religious law")

	1. <mathematics> A standard way of writing a formula.  Two
	formulas such as 9 + x and x + 9 are said to be equivalent
	because they mean the same thing, but the second one is in
	"canonical form" because it is written in the usual way, with
	the highest power of x first.  Usually there are fixed rules
	you can use to decide whether something is in canonical form.
	Things in canonical form are easier to compare.

	2. <jargon> The usual or standard state or manner of
	something.  The term acquired this meaning in computer-science
	culture largely through its prominence in {Alonzo Church}'s
	work in computation theory and {mathematical logic} (see
	{Knights of the Lambda-Calculus}).

	Compare {vanilla}.

	This word has an interesting history.  Non-technical academics
	do not use the adjective "canonical" in any of the senses
	defined above with any regularity; they do however use the
	nouns "canon" and "canonicity" (not "canonicalness"* or
	"canonicality"*). The "canon" of a given author is the
	complete body of authentic works by that author (this usage is
	familiar to Sherlock Holmes fans as well as to literary
	scholars).  "The canon" is the body of works in a given field
	(e.g. works of literature, or of art, or of music) deemed
	worthwhile for students to study and for scholars to
	investigate.

	The word "canon" derives ultimately from the Greek "kanon"
	(akin to the English "cane") referring to a reed.  Reeds were
	used for measurement, and in Latin and later Greek the word
	"canon" meant a rule or a standard.  The establishment of a
	canon of scriptures within Christianity was meant to define a
	standard or a rule for the religion.  The above non-technical
	academic usages stem from this instance of a defined and
	accepted body of work.  Alongside this usage was the
	promulgation of "canons" ("rules") for the government of the
	Catholic Church.  The usages relating to religious law derive
	from this use of the Latin "canon".

	Hackers invest this term with a playfulness that makes an
	ironic contrast with its historical meaning.  A true story:
	One Bob Sjoberg, new at the {MIT} {AI Lab}, expressed some
	annoyance at the incessant use of jargon.  Over his loud
	objections, {GLS} and {RMS} made a point of using as much of
	it as possible in his presence, and eventually it began to
	sink in.  Finally, in one conversation, he used the word
	"canonical" in jargon-like fashion without thinking.  Steele:
	"Aha!  We've finally got you talking jargon too!"  Stallman:
	"What did he say?"  Steele: "Bob just used "canonical" in the
	canonical way."

	Of course, canonicality depends on context, but it is
	implicitly defined as the way *hackers* normally expect things
	to be.  Thus, a hacker may claim with a straight face that
	"according to religious law" is *not* the canonical meaning of
	"canonical".

	(22 Dec 1994)

canonical name

	(CNAME) A host's official name as opposed to an alias.  The
	official name is the first hostname listed for its {Internet
	address} in the hostname database, {/etc/hosts} or the
	{Network Information Service} (NIS) map hosts.byaddr ("hosts"
	for short).  A host with multiple network interfaces may have
	more than one Internet address, each with its own canonical
	name (and zero or more aliases).

	You can find a host's canonical name using {nslookup} if you
	say

		set querytype=CNAME

	and then type a hostname.

	(29 Nov 1994)

canonicity

	<theory, jargon> The extent to which something is {canonical}.

	(03 Mar 1995)

C (ANSI)

	{ANSI C}

can't happen

	<programming> The traditional program comment for code
	executed under a condition that should never be true, for
	example a file size computed as negative.  Often, such a
	condition being true indicates data corruption or a faulty
	{algorithm}; it is almost always handled by emitting a fatal
	error message and terminating or crashing, since there is
	little else that can be done.

	Some case variant of "can't happen" is also often the text
	emitted if the "impossible" error actually happens.  Although
	"can't happen" events are genuinely infrequent in production
	code, programmers wise enough to check for them habitually are
	often surprised at how frequently they are triggered during
	development and how many headaches checking for them turns out
	to head off.

	See also {firewall code}, {professional programming}.

	(10 May 1996)

Cantor

	1. <person, mathematics> A mathematician.

	Cantor devised the diagonal proof of the uncountability of the
	{real numbers}:

	Given a function, f, from the {natural numbers} to the {real
	numbers}, consider the real number r whose binary expansion is
	given as follows: for each natural number i, r's i-th digit is
	the complement of the i-th digit of f(i).

	Thus, since r and f(i) differ in their i-th digits, r differs
	from any value taken by f.  Therefore, f is not {surjective}
	(there are values of its result type which it cannot return).

	Consequently, no function from the natural numbers to the
	reals is surjective.  A further theorem dependent on the
	{axiom of choice} turns this result into the statement that
	the reals are uncountable.

	This is just a special case of a diagonal proof that a
	function from a set to its {power set} cannot be surjective:

	Let f be a function from a set S to its power set, P(S) and
	let U = { x in S: x not in f(x) }.  Now, observe that any x in
	U is not in f(x), so U != f(x); and any x not in U is in f(x),
	so U != f(x): whence U is not in { f(x) : x in S }.  But U is
	in P(S).  Therefore, no function from a set to its power-set
	can be surjective.

	2. <language> An {object-oriented language} with fine-grained
	{concurrency}.

	[Athas, Caltech 1987.  "Multicomputers: Message Passing
	Concurrent Computers", W. Athas et al, Computer 21(8):9-24
	(Aug 1988)].

	(14 Mar 1997)

CAP

	1. <networking> {Columbia AppleTalk Package}.

	2. <communications> {Carrierless Amplitude/Phase Modulation}.

	3. <networking> {Competitive Access Provider}

capacitor

	<electronics> An electronic device that can store electrical
	charge.  The charge stored Q in Coulombs is related to the
	capacitance C in Farads and the voltage V across the capacitor
	in Volts by Q = CV.

	The basis of a {dynamic RAM} cell is a capacitor.  They are
	also used for power-supply smoothing (or "decoupling").  This
	is especially important in digital circuits where a digital
	device switching between states causes a sudden demand for
	current.  Without sufficient local power supply decoupling,
	this current "spike" cannot be supplied directly from the
	power supply due to the inductance of the connectors and so
	will cause a sharp drop in the power supply voltage near the
	switching device.  This can cause other devices to malfunction
	resulting in hard to trace {glitch}es.

	(12 Apr 1995)

CAPI

	1. {Calendar Application Programming Interface}.

	2. <cryptography> {Cryptographic Application Programming
	Interface}.

	(11 Feb 1997)

Cap'n Crunch

	{Captain Crunch}

Captain Abstraction

	The champion of the principles of {abstraction} and
	modularity, who protects unwary students on {MIT}'s course
	{6.001} from the nefarious designs of Sergeant Spaghetticode
	and his vile {concrete} programming practices.

	See also {spaghetti code}.

	(22 Nov 1994)

Captain Crunch

	1. <person> ("Cap'n Crunch") An early 1970s
	{hacker}/{phreaker}.  Named after the "Cap'n Crunch" breakfast
	cereal, but alluding to "{crunch}".

	{Home (http://www.well.com/user/crunch/)}.

	2. (After the above) {wardialer}.

	3. Reportedly, a program which {crash}es a computer by
	overloading the {interrupt} {stack}.

	(16 Mar 1997)

card

	1. A circuit board.

	2. A {punched card}.

	3. <hypertext> An alternative term for a {node} in a system
	(e.g. {HyperCard}, {Notecards}) in which the node size is
	limited.

Cardbox for Windows

	<database> A database handling program, especially useful for
	scholars and librarians.

	[Details?  Features?  Developer?  URL?]

	(14 May 1997)

Cardbus

	<hardware> The 32-bit version of the {PCMCIA} (PC Card) {bus}.

	[Spec?]

	(20 Aug 1996)

cardinality

	<mathematics> The number of elements in a set.  If two sets
	have the same number of elements (i.e. there is a {bijection}
	between them) then they have the same cardinality.  A
	cardinality is thus an {isomorphism class} in the {category}
	of sets.

	{aleph 0} is defined as the cardinality of the first
	{infinite} {ordinal}, {omega} (the number of {natural
	number}s).

	(29 Mar 1995)

cardinal number

	The {cardinality} of some set.

CARDS

	Central Archive for Reusable Defense Software of the DoD.

card walloper

	An {EDP} programmer who grinds out {batch program}s that do
	stupid things like print people's paychecks.  Compare {code
	grinder}.  See also {punched card}, {eighty-column mind}.

Career Limiting Move

	(CLM, Sun) 1. An action endangering one's future prospects of
	getting plum projects and raises and possibly one's job: "His
	Halloween costume was a parody of his manager.  He won the
	prize for "best CLM"."

	2. Denotes extreme severity of a bug, discovered by a customer
	and obviously missed earlier because of poor testing: "That's
	a CLM bug!"

	(16 Dec 1994)

caret

	^

	Common: hat; control; uparrow; caret; {ITU-T}: circumflex.
	Rare: chevron; {INTERCAL}: shark (or shark-fin); to the ("to
	the power of"); fang; pointer (in Pascal).

careware

	/keir'weir/ (Or "{charityware}") {Shareware} for which either
	the author suggests that some payment be made to a nominated
	charity or a levy directed to charity is included on top of
	the distribution charge.

	Compare {crippleware}.

	(16 Dec 1994)

cargo cult programming

	A style of (incompetent) programming dominated by ritual
	inclusion of code or program structures that serve no real
	purpose.  A cargo cult programmer will usually explain the
	extra code as a way of working around some bug encountered in
	the past, but usually neither the bug nor the reason the code
	apparently avoided the bug was ever fully understood (compare
	{shotgun debugging}, {voodoo programming}).

	The term "cargo cult" is a reference to aboriginal religions
	that grew up in the South Pacific after World War II.  The
	practices of these cults centre on building elaborate mockups
	of aeroplanes and military style landing strips in the hope of
	bringing the return of the god-like aeroplanes that brought
	such marvelous cargo during the war.  Hackish usage probably
	derives from Richard Feynman's characterisation of certain
	practices as "cargo cult science" in his book "Surely You're
	Joking, Mr. Feynman" (W. W. Norton & Co, New York 1985, ISBN
	0-393-01921-7).

Caribou CodeWorks

	<company> The company which sells {QTRADER}.

	Director of Marketing: Norm Larsen <wwcoinc@winternet.com>.

	(05 Nov 1995)

Carl Friedrich Gauss

	<person> A German mathematician (1777 - 1855), one of all time
	greatest.  Gauss discovered the {method of least squares} and
	{Gaussian elimination}.

	Gauss was something of a child prodigy; the most commonly told
	story relates that when he was 10 his teacher, wanting a rest,
	told his class to add up all the numbers from 1 to 100.  Gauss
	did it in seconds, having noticed that 1+...+100 = 100+...+1 =
	(101+...+101)/2.

	He did important work in almost every area of mathematics.
	Such eclecticism is probably impossible today, since further
	progress in most areas of mathematics requires much hard
	background study.

	Some idea of the range of his work can be obtained by noting
	the many mathematical terms with "Gauss" in their names.  E.g.
	{Gaussian elimination} ({linear algebra}); {Gaussian primes}
	(number theory); {Gaussian distribution} (statistics); {Gauss}
	[unit] (electromagnetism); {Gaussian curvature} (differential
	geometry); {Gaussian quadrature} (numerical analysis);
	{Gauss-Bonnet formula} (differential geometry); {Gauss's
	identity} ({hypergeometric functions}); {Gauss sums} ({number
	theory}).

	His favourite area of mathematics was {number theory}.  He
	conjectured the {Prime Number Theorem}, pioneered the {theory
	of quadratic forms}, proved the {quadratic reciprocity
	theorem}, and much more.

	He was "the first mathematician to use {complex numbers} in a
	really confident and scientific way" (Hardy & Wright, chapter
	12).

	He nearly went into architecture rather than mathematics; what
	decided him on mathematics was his proof, at age 18, of the
	startling theorem that a regular N-sided polygon can be
	constructed with ruler and compasses if and only if N is a
	power of 2 times a product of distinct {Fermat primes}.

	(10 Apr 1995)

Carnegie Mellon University

	<body, education> (CMU) A university in Pittsburgh,
	Pennsylvania.  {School of Computer Science
	(http://www.cs.cmu.edu/Web/FrontDoor.html)}.

	(23 Jun 1997)

Carriage Return

	<character> (CR, Control-M, {ASCII} 13) The character which
	causes the {cursor} to move to the left margin, often used
	with {line feed} to start a new line of output.

	Encoded in {C} and {Unix} as "\r".

	(24 Jun 1996)

Carrierless Amplitude/Phase Modulation

	<communications> (CAP) A design of {Asymmetric Digital
	Subscriber Line} {transceiver} developed by {Bell Labs}.  CAP
	was the first ADSL design to be commercially deployed and, as
	of August 1996, was installed on more lines than any other.

	CAP is a variation of {Quadrature Amplitude Modulation}, the
	modulation used by most existing {modems} in 1997.  With CAP,
	the three channels ({POTS}, downstream data and upstream data)
	are supported by splitting the frequency spectrum.  Voice
	occupies the standard 0-4 Khz frequency band, followed by the
	upstream channel and the high-speed downstream channel.

	(08 Oct 1997)

carrier scanner

	<security> (Or "wardialer") A program which uses a {modem} to
	dial a series of phone numbers (say, from 770-0000 to
	770-9999), and keeps a log of what phone numbers answer with a
	modem {carrier}.  The results of such a search were generally
	used by people looking to engage in {random} mischief in
	{random} machines.

	Since the 1980s, wardialers have generally fallen into disuse,
	partly because of easily available "{caller ID}" technology,
	partly because fax machines are now in wide use and would
	often be logged as a {carrier} by a wardialer, and partly
	because there are so many new and more interesting venues for
	computerised mischief these days.

	(16 Mar 1997)

carrier signal

	<communications> A continuous signal of a single frequency
	capable of being modulated by a second, data-carrying signal.
	In radio communication, the two common kinds of modulation are
	{amplitude modulation} and {frequency modulation}.

	(01 Mar 1995)

Cartesian coordinates

	<mathematics, graphics> (After Renee Descartes, French
	philosopher and mathematician) A pair of numbers, (x, y),
	defining the position of a point in a two-dimensional space by
	its perpendicular projection onto two axes which are at right
	angles to each other.  x and y are also known as the
	{abscissa} and {ordinate}.

	The idea can be generalised to any number of independent axes.

	Compare {polar coordinates}.

	(08 Jul 1997)

Cartesian product

	<mathematics> (After Renee Descartes, French philosper and
	mathematician) The Cartesian product of two sets A and B is
	the set

		A x B = {(a, b) | a in A, b in B}.

	I.e. the product set contains all possible combinations of one
	element from each set.  The idea can be extended to products
	of any number of sets.

	If we consider the elements in sets A and B as points along
	perpendicular axes in a two-dimensional space then the
	elements of the product are the "{Cartesian coordinates}" of
	points in that space.

	See also {tuple}.

	(01 Mar 1995)

CAS

	{Column Address Strobe}

CAS 8051 Assembler

	An experimental one-pass {assembler} for the 8051 with
	{C}-like syntax by Mark Hopkins.  Most features of a modern
	assembler included except {macro}s (soon to be added).
	Requires an {ANSI-C} compiler.  Ported to {MS-DOS}, {Ultrix},
	{Sun4}.  (July 1993).

	Version 1.2.  Assembler/linker, disassembler, documentation,
	examples.

	{(ftp://lyman.pppl.gov/pub/8051/assem)},
	{(ftp://nic.funet.fi/pub/microprocs/MCS-51/csd4-archive/assem)}.
	{Other software tools and applications
	(ftp://nic.funet.fi/pub/compilers/8051/)}.

	(26 Jan 1995)

cascade

	1. <compiler> A huge volume of spurious error-messages output
	by a {compiler} with poor {error recovery}.  Too frequently,
	one trivial {syntax} error (such as a missing ")" or "}")
	throws the {parser} out of synch so that much of the remaining
	program text, whether correct or not, is interpreted as
	garbaged or ill-formed.

	2. <messaging> A chain of {Usenet} followups, each adding some
	trivial variation or riposte to the text of the previous one,
	all of which is reproduced in the new message; an {include
	war} in which the object is to create a sort of communal
	graffito.

	3. <networking> A collection of interconneced networking
	devices, typically {hub}s, that allows those devices to act
	together as a {logical} {repeater}.

	(17 Jul 1997)

CASE

	1. {Computer Aided Software Engineering}.

	2. {Common Application Service Element}.

case

	1. <programming> {switch statement}.

	2. <character> Whether a character is a capital letter ("upper
	case" - ABC..Z) or a small letter ("lower case" - abc..z).

	The term case comes from the printing trade when the use of
	moving type was invented in the early Middle Ages (Caxton or
	Gutenberg?) and the letters for each {font} were stored in a
	box with two sections (or "cases"), the upper case was for the
	capital letters and the lower case was for the small letters.
	The Oxford Universal Dictionary of Historical Principles (Feb
	1993, reprinted 1952) indicates that this usage of "case" (as
	the box or frame used by a compositor in the printing trade)
	was first used in 1588.

	(01 Mar 1996)

case and paste

	<programming> (From "{cut and paste}") The addition of a new
	{feature} to an existing system by selecting the code from an
	existing feature and pasting it in with minor changes.  Common
	in telephony circles because most operations in a telephone
	switch are selected using "case" statements.  Leads to
	{software bloat}.

	In some circles of {Emacs} users this is called "programming
	by Meta-W", because Meta-W is the Emacs command for copying a
	block of text to a {kill buffer} in preparation to pasting it
	in elsewhere.  The term is condescending, implying that the
	programmer is acting mindlessly rather than thinking carefully
	about what is required to integrate the code for two similar
	cases.

	At {DEC}, this is sometimes called "clone-and-hack" coding.

	(01 Mar 1996)

case based reasoning

	<artificial intelligence> (CBR) A technique for problem
	solving which looks for previous examples which are similar to
	the current problem.  This is useful where {heuristic}
	{knowledge} is not available.

	There are many situations where experts are not happy to be
	questioned about their knowledge by people who want to write
	the knowledge in rules, for use in {expert systems}.  In most
	of these situations, the natural way for an expert to describe
	his or her knowledge is through examples, stories or cases
	(which are all basically the same thing).  Such an expert will
	teach trainees about the expertise by apprenticeship, i.e. by
	giving examples and by asking the trainees to remember them,
	copy them and adapt them in solving new problems if they
	describe situations that are similar to the new problems.  CBR
	aims to exploit such knowledge.

	Some key research areas are efficient indexing, how to define
	"similarity" between cases and how to use temporal
	information.

	(28 May 1996)

CASE Data Interchange Format

	(CDIF) An emerging standard for interchange of data between
	{CASE} tools.

	(03 Nov 1994)

CASE framework

	A set of products and conventions that allow CASE tools to be
	integrated into a coherent environment.

case insensitive

	{case sensitivity}

Case Integration Services

	(CIS) A committee formed to discuss {CASE} tool integration
	standards related to {ATIS}.

	(25 Oct 1994)

CASE*Method

	An analysis and design method from {Oracle} targeted at
	information management applications.

	(28 Oct 1994)

case sensitive

	{case sensitivity}

case sensitivity

	<text> Whether a text matching operation distinguishes
	upper-{case} (capital) letters from lower case (is "case
	sensitive") or not ("case insensitive").

	Case in file names should be preserved (for readability) but
	ignored when matching (so the user doesn't have to get it
	right).  {MS-DOS} does not preserve case in file names, {Unix}
	preserves case and matches are case sensitive.

	Any decent {text editor} will allow the user to specify
	whether or not text searches should be {case sensitive}.

	Case sensitivity is also relevant in programming (most
	programming languages distiguish between case in the names of
	{identifiers}), and addressing ({Internet} {domain names} are
	case insensitive but {RFC 822} local {mailbox} names are case
	sensitive).

	Case insensitive operations are sometimes said to "fold case",
	from the idea of folding the character code table so that
	upper and lower case letters coincide.  The alternative "smash
	case" is more likely to be used by someone who considers this
	behaviour a {misfeature} or in cases where one case is
	actually permanently converted to the other.

	"{MS-DOS} will automatically smash case in the names of all
	the files you create".

	(09 Jul 1997)

CASE SOAP III

	Version of SOAP assembly language for IBM 650.  Listed in
	CACM 2(5):16 (May 1959).

case statement

	{switch statement}

CASE tools

	Software tools to help in the application of CASE methods to a
	software project.

cashe

	<spelling> Misspelling of "{cache}".

	(13 Dec 1996)

CAST

	{Computer Aided Software Testing}

cast

	An {explicit type conversion} in {C}.  For example, to convert
	an integer (usually 32 bits) to a char (usually 8 bits) we
	might write:

		int i = 42;
		char *p = &buf;
		*p = (char) i;

	The expression "(char)" casts i to char type.  Casts
	(including this one) are often not strictly necessary, due to
	automatic {coercions} performed by the compiler, but can be
	used to make the conversion obvious and to avoid warning
	messages.

	(16 Feb 1995)

casters-up mode

	[IBM, probably from slang belly up] Yet another synonym for
	"broken" or "down".  Usually connotes a major failure.  A
	system (hardware or software) which is "down" may be already
	being restarted before the failure is noticed, whereas one
	which is "casters up" is usually a good excuse to take the
	rest of the day off (as long as you're not responsible for
	fixing it).

casting the runes

	<jargon> What a {guru} does when you ask him or her to run a
	particular program because it never works for anyone else;
	especially used when nobody can ever see what the guru is
	doing different from what J. Random Luser does.

	Compare {incantation}, {runes}, {examining the entrails}; also
	see the {AI koan} about Tom Knight.

	(26 Dec 1997)

CAT

	Common Abstract Tree Language.  R. Voeller & Uwe Schmidt, U
	Kiel, Germany 1983.  Universal intermediate language, used by
	Norsk Data in their family of compilers.  "A Multi-Language
	Compiler System with Automatically Generated Codegenerators,
	U. Schmidt et al, SIGPLAN Notices 19(6):202-2121 (June 1984).

cat

	<tool> (From "catenate") {Unix}'s command which copies one or
	more entire files to the screen or some other output sink
	without pause.

	See also {dd}, {BLT}.

	Among {Unix} fans, cat is considered an excellent example of
	user-interface design, because it delivers the file contents
	without such verbosity as spacing or headers between the files
	(the {pr} command can be used to do this), and because it does
	not require the files to consist of lines of text, but works
	with any sort of data.

	Among Unix haters, cat is considered the {canonical} example
	of *bad* user-interface design, because of its woefully
	unobvious name.  It is far more often used to {blast} a file
	to standard output than to concatenate files.  The name "cat"
	for the former operation is just as unintuitive as, say,
	LISP's {cdr}.

	Of such oppositions are {holy wars} made.

	(29 Nov 1994)

Cat 5

	{Category 5}

catatonic

	Describes a condition of suspended animation in which
	something is so {wedged} or {hung} that it makes no response.
	If you are typing on a {terminal} and suddenly the computer
	doesn't even echo the letters back to the screen as you type,
	let alone do what you're asking it to do, then the computer is
	suffering from catatonia (possibly because it has crashed).
	Compare {buzz}.

CATE

	Computer Aided Test Engineering: CASE methods applied to
	electronics testing and linked to CAE

category

	<theory> A category K is a collection of objects, obj(K), and
	a collection of {morphisms} (or "{arrows}"), mor(K) such that

	1. Each morphism f has a "typing" on a pair of objects A, B
	written f:A->B.  This is read 'f is a morphism from A to B'.
	A is the "source" or "{domain}" of f and B is its "target" or
	"{co-domain}".

	2. There is a {partial function} on morphisms called
	{composition} and denoted by an {infix} ring symbol, o.  We
	may form the "composite" g o f : A -> C if we have g:B->C and
	f:A->B.

	3. This composition is associative: h o (g o f) = (h o g) o f.

	4. Each object A has an identity morphism id_A:A->A associated
	with it.  This is the identity under composition, shown by the
	equations id_B o f = f = f o id_A.

	In general, the morphisms between two objects need not form a
	{set} (to avoid problems with {Russell's paradox}).  An
	example of a category is the collection of sets where the
	objects are sets and the morphisms are functions.

	Sometimes the composition ring is omitted.  The use of
	capitals for objects and lower case letters for morphisms is
	widespread but not universal.  Variables which refer to
	categories themselves are usually written in a script font.

	(06 Oct 1997)

Category 5

	<hardware> (Cat 5) An American Standards Institute standard
	for cables.

	[Details?  What kind of cables?]

	(06 Oct 1997)

cathode ray tube

	<hardware> (CRT) An electrical device for displaying images by
	exciting phosphor dots with a scanned electron beam.  CRTs are
	found in computer {VDU}s and {monitors}, televisions and
	oscilloscopes.  The first commercially practical CRT was
	perfected on 29 January 1901 by Allen B DuMont.

	A large glass envelope containing a negative electrode (the
	cathode) emits electrons (formerly called "cathode rays") when
	heated, as in a {vacuum tube}.  The electrons are accelerated
	across a large voltage gradient towards the flat surface of
	the tube (the screen) which is covered with phosphor.  When an
	electron strikes the phosphor, light is emitted.  The electron
	beam is deflected by electromagnetic coils around the outside
	of the tube so that it scans across the screen, usually in
	horizontal stripes.  This scan pattern is known as a {raster}.
	By controlling the current in the beam, the brightness at any
	particular point (roughly a "{pixel}") can be varied.

	Different phosphors have different "{persistence}" - the
	length of time for which they glow after being struck by
	electrons.  If the scanning is done fast enough, the eye sees
	a steady image, due to both the persistence of the phospor and
	of the eye itself.  CRTs also differ in their {dot pitch},
	which determines their spatial {resolution}, and in whether
	they use {interlace} or not.

	(17 Nov 1994)

CATIA

	<tool> An {IBM} CAD/CAM product used heavily in the auto and
	aerospace industries.  It runs on the IBM {RS/6000} and {HP}
	platforms.

	(13 Jan 1996)

C/ATLAS

	<language> A DoD test language.  It is a variant of {ATLAS}.

	(01 May 1995)

CATNIP

	{Common Architecture for Next Generation Internet Protocol}

CATO

	FORTRAN-like CAI language for PLATO system on CDC 1604.  "CSL
	PLATO System Manual", L.A. Fillman, U Illinois, June 1966.

cause-effect graphing

	<programming> A testing technique that aids in selecting, in a
	systematic way, a high-yield set of test cases that logically
	relates causes to effects to produce test cases.  It has a
	beneficial side effect in pointing out incompleteness and
	ambiguities in specifications.

	(10 May 1996)

Cayenne Software

	<company> The company formed when {CADRE} merged with {Bachman
	Information Systems} in July 1996.

	{Home (www.cayennesoft.com)}.

	[Details?]

	(06 Feb 1998)

CAYLEY

	<mathematics, tool> A {symbolic mathematics} system for {group
	theory} written by John Cannon of the {University of Sydney},
	Australia in 1976.

	["An Introduction to the Group Theory Language CAYLEY", J.
	Cannon, Computational Group Theory, M.D. Atkinson ed, Academic
	Press 1984, pp. 148-183].

	Current version: V3.7 for Sun, Apollo, VAX/VMS.

	E-mail: <cayley@maths.su.oz.au>.

	(12 Apr 1995)

cb

	{C Beautifier}

CBASIC

	A {BASIC} compiler by Gordon Eubanks, now at {Symantec}.  It
	evolved from/into {EBASIC}.

	(29 Nov 1994)

C-BC

	A {strongly typed} version of {BC} by Mark Hopkins, with
	expanded {C}-like {syntax}, more base types and the ability to
	form {array} and pointer types of any dimension and to
	allocate/free arrays at run-time.

	Most {POSIX-BC} features are supported, except that functions
	must be declared consistently and declared before first use.
	String handling is slightly different.  It requires and
	{ANSI-C} compiler and runs under {MS-DOS} or {Unix}.

	Version 1.1.

	Posted to {alt.sources} 10 Apr 1993.

	(23 Aug 1993)

C Beautifier

	(cb) A {Unix} tool for reformatting {C} {source} code.

	{Unix manual page}: cb(1).

CBIR

	<image> {content-based information retrieval}.

	(23 Nov 1995)

CBN

	{call-by-name}

CBR

	{case based reasoning}

CBT

	{Computer-Based Training}

CBV

	{call-by-value}

cbw

	{Crypt Breakers Workbench}

CC++

	{Compositional C++}

C/C++

	1. {Borland C/C++}.

	2. {Watcom C/C++}.

	3. Either {C} or {C++}.

	(06 Apr 1996)

CCalc

	A {symbolic mathematics} system for {MS-DOS}, available from
	{Simtel}.

	(12 Apr 1995)

CCD

	{Charge-Coupled Device}

CCIRN

	Coordinating Committee for Intercontinental Research Networks.

CCITT

	Commite' Consultatif International de Telegraphique et
	Telephonique.  (International consultative committee on
	telecommunications and Telegraphy).

	CCITT changed its name to {ITU-T} on 1 March 1993.

	(03 Nov 1994)

CCITT HIgh-Level Language

	<language> (CHILL) A {real-time} language widely used in
	telecommunications.  CHILL was developed in the 1970s and
	improved in 1984, 1988, 1992, and 1996.  It is used in several
	countries including Germany, Norway, Brasil, and South Korea.

	{Cygnus} are developing a compiler based on {gcc}.

	{(http://www1.informatik.uni-jena.de/languages/chill/chill.htm)}.

	["An Analytical Description of CHILL, the CCITT High Level
	Language", P. Branquart, LNCS 128, Springer 1982].

	["CHILL User's Manual", ITU, 1986, ISBN 92-61-02601-X.
	ISO-9496 (1988?)].

	(20 Jan 1997)

CCL

	1. Coral Common LISP.

	2. Computer Control Language.  English-like query language
	based on COLINGO, for IBM 1401 and IBM 1410.

CCLU

	Cambridge CLU.  {CLU} extended to support {concurrency},
	distributed programming and {remote procedure call}, by
	G. Hamilton et al at {CUCL}.

	E-mail: Jean Bacon <jmb@cl.cam.ac.uk>.

	(13 Oct 1994)

ccmail

	It's written {cc:mail}.

cc:mail

	<tool, product> Commercial {electronic mail} software by
	{Lotus Corporation} for {Microsoft Windows}.

	(14 Mar 1995)

CCP

	{Concurrent Constraint Programming}

	Not a language, but a general approach.

CCR

	1. {condition code register}.

	2. (Database) {concurrency control and recovery}.

CCS

	1. <networking> {Common Communication Services}.

	2. <language, parallel> {Calculus of Communicating Systems}.

	3. <history> {Computer Conservation Society}.

	4. <storage, standard> {Common Command Set}.

	5. <communications> {Centi-Call Second}.

	(22 Oct 1997)

CCSP

	{Contextually Communicating Sequential Processes}

CCTA

	The Government Centre for Information Systems.

	(Originally "Central Computer and Telecommunications Agency").

	CCTA is part of the Office of Public Service and Science,
	which works to improve government's services to the public.
	They are responsible for stimulating and promoting the
	effective use of Information Systems in support of the
	efficient delivery of business objectives and improved quality
	of services by the public sector.

	CCTA had to change its name as it was not an agency in the
	"Next Steps" sense.  The letters were retained as customers
	were familiar with them.

	{Home (http://www.open.gov.uk/)}

	E-mail: <info@open.gov.uk>.

	Address: Norwich, UK.

	(18 Jan 1995)

CD

	{Compact Disc}

cd

	{change directory}

CDA

	1. <file format> {Compound Document Architecture}.

	2. <legal> {Communications Decency Act}.

CDC

	{Control Data Corporation}

CDDI

	{Copper Distributed Data Interface}

CDD/Plus

	{DEC}'s {CASE} {repository}.

CDE

	1. C Development environment from {IDE}.

	2. {Common Desktop Environment}.

	3. {Co-operative Development Environment}.

	(11 Jul 1996)

CDF

	Common Data Format.  A library and toolkit for
	multi-dimensional data sets.

CD-i

	{Compact Disc interactive}

CDIF

	{CASE Data Interchange Format}

CDL

	1. Computer Definition [Design?] Language.  A hardware
	description language.  "Computer Organisation and
	Microprogramming", Yaohan Chu, P-H 1970.

	2. Command Definition Language.  Portion of ICES used to
	implement commands.  Sammet 1969, p.618-620.

	3. Compiler Description Language.  C.H.A. Koster, 1969.
	Intended for implementation of the rules of an affix grammar
	by recursive procedures.  A procedure may be a set of
	tree-structured alternatives, each alternative is executed
	until one successfully exits.  Used in a portable COBOL-74
	compiler from MPB, mprolog system from SzKI, and the Mephisto
	chess computer.  "CDL: A Compiler Implementation Language", in
	Methods of Algorithmic Language Implementation, C.H.A. Koster,
	LNCS 47, Springer 1977, pp.341-351.  "Using the CDL Compiler
	Compiler", C.H.A. Koster, 1974.  Versions: CDL2, CDLM used at
	Manchester.

	4. Common Design Language.  "Common Design Language", IBM,
	Software Engineering Inst, Sept 1983.

	5. Control Definition Language.  Ideas which contributed to
	Smalltalk.

	["Control Structures for Programming Languges", David
	A. Fisher, PhD Thesis, CMU 1970].

CDM

	{Content Data Model}

CDMA

	{Code Division Multiple Access}

CDP1802

	{RCA 1802}

CDPD

	{Cellular Digital Packet Data}

cdr

	/ku'dr/ or /kuh'dr/ [LISP] To skip past the first item from a
	list of things (generalised from the LISP operation on binary
	tree structures, which returns a list consisting of all but
	the first element of its argument).  In the form "cdr down",
	to trace down a list of elements: "Shall we cdr down the
	agenda?"  Usage: silly.  See also {loop through}.

	Historical note: The instruction format of the IBM 7090 that
	hosted the original LISP implementation featured two 15 bit
	fields called the "address" and "decrement" parts.  The term
	"cdr" was originally "Contents of Decrement part of Register".
	Similarly, "car" stood for "Contents of Address part of
	Register".

	The cdr and car operations have since become bases for
	formation of compound metaphors in non-LISP contexts.  GLS
	recalls, for example, a programming project in which strings
	were represented as linked lists; the get-character and
	skip-character operations were of course called CHAR and CHDR.

CD-R

	{Compact Disc Recordable}

CD-ROM

	{Compact Disc Read-Only Memory}

CD-ROM drive

	{Compact Disc Read-Only Memory}

CD-RW

	{Compact Disc Read-Write}

CDS

	{Concrete Data Structure}

cd tilde

	/C-D til-d*/ To go home.  From the {Unix} {C shell} and
	Korn-shell command "cd ~", which takes one to one's "$HOME"
	directory.  "cd" with no arguments does the same thing.

	(28 Oct 1994)

Cecil

	AN {object-oriented} language combining {multi-method}s with a
	classless object model, object-based {encapsulation} and
	optional {static type checking}.  It distinguishes between
	{subtyping} and {code inheritance}.  Includes both explicit
	and implicit parameterisation of objects, types, and methods.

	{(ftp://cs.washington.edu/pub/chambers/cecil-spec.ps.Z)}

	["The Cecil Language: Specification and Rationale",
	C. Chambers, TR 93-03-05, U Wash (Mar 1993)].

	(28 Oct 1994)

Cedar

	A superset of {Mesa}, from {Xerox PARC}, adding {garbage
	collection}, {dynamic type}s and a universal pointer type (REF
	ANY).  Cedar is a large complex language designed for custom
	Xerox hardware and the Cedar {operating system}/environment.
	Data types are {atom}s, lists, ropes ("industrial strength"
	strings), conditions.  Multi-processing features include
	{thread}s, {monitor}s, {signal}s and catch phrases.  It was
	used to develop the Cedar integrated programming environment.

	["A Description of the Cedar Language", Butler Lampson, Xerox
	PARC, CSL-83-15 (Dec 1983)].

	["The Structure of Cedar", D. Swinehart et al, SIGPLAN Notices
	20(7):230-244 (July 1985)].

	(26 Jan 1995)

CEEMAC+

	Graphics language for DOS 3.3 on {Apple II}.

CEI-PACT

	Central European Initiative on Parallel Computation.

CELIP

	A cellular language for {image processing}.

	["CELIP: A cellular Language for Image Processing",
	W. Hasselbring <willi@informatik.uni-essen.de>, Parallel
	Computing 14:99-109 (1990)].

	(05 Dec 1994)

cell

	<networking> {ATM}'s term for a {packet}.

	(21 Aug 1996)

Cellang

	See {Cellular}.

CELLAS

	CELLular ASsemblies.

	A {concurrent} {block-structured} language.

	[Mentioned in "Attribute Grammars", LNCS 323, p.97].

	(05 Dec 1994)

Cello

	{World-Wide Web} {browser} {client} for {IBM PC}s.  Runs under
	{Microsoft Windows}.

CELLSIM

	A program for modeling populations of biological cells.

	["CELLSIM II User's Manual", C.E. Donaghey, U Houston (Sep
	1975)].

	(05 Dec 1994)

Cellular

	A system for {cellular automata} programming by J Dana Eckart
	<dana@rucs.faculty.cs.runet.edu> Version 2.0 includes a
	{byte-code compiler}, {run-time system} and a viewer.

	Posted to comp.sources.Unix, volume 26.

	See also {Cellang}.

	(03 Apr 1993)

cellular automata

	{cellular automaton}

cellular automaton

	<algorithm, parallel> (CA, plural "- automata") A regular
	spatial lattice of "cells", each of which can have any one of
	a finite number of states.  The state of all cells in the
	lattice are updated simultaneously and the state of the entire
	lattice advances in discrete time steps.  The state of each
	cell in the lattice is updated according to a local rule which
	may depend on the state of the cell and its neighbors at the
	previous time step.

	Each cell in a cellular automaton could be considered to be a
	{finite state machine} which takes its neighbours' states as
	input and outputs its own state.

	The best known example is J.H. Conway's game of {Life}.

	{FAQ
	(http://alife.santafe.edu/alife/topics/cas/ca-faq/ca-faq.html)}.

	{Usenet} newsgroups: {news:comp.theory.cell-automata},
	{news:comp.theory.self-org-sys}.

	(03 Mar 1995)

Cellular Digital Packet Data

	(CDPD) A wireless standard providing two-way, 19.2 kbps
	{packet} data transmission over exisiting {cellular telephone}
	channels.

	(05 Dec 1994)

Cellular Neural Network

	<architecture> (CNN) The CNN Universal Machine is a low cost,
	low power, extremely high speed {supercomputer} on a chip.  It
	is at least 1000 times faster than equivalent {DSP} solutions
	of many complex {image processing} tasks.  It is a stored
	program supercomputer where a complex sequence of image
	processing {algorithm}s is programmed and downloaded into the
	chip, just like any digital computer.  Because the entire
	computer is integrated into a chip, no signal leaves the chip
	until the image processing task is completed.

	Although the CNN universal chip is based on analogue and logic
	operating principles, it has an on-chip analog-to-digital
	input-output interface so that at the system design and
	application perspective, it can be used as a digital
	component, just like a DSP.  In particular, a development
	system is available for rapid design and prototyping.
	Moreover, a {compiler}, an {operating system}, and a
	{user-friendly} CNN {high-level language}, like the {C}
	language, have been developed which makes it easy to implement
	any image processing algorithm.

	[Professor Leon Chua, University of California at Berkeley].

	(27 Apr 1995)

CELP

	<language> Computationally Extended Logic
	Programming.

	["Computationally Extended Logic Programming", M.C. Rubenstein
	et al, Comp Langs 12(1):1-7 (1987)].

	(27 Apr 1995)

CEN

	Conseil Europen pour la Normalisation.

	A body coordinating {standard}isation activities in the EEC
	and EFTA countries.

	(14 Dec 1994)

CENELEC

	CEN-electricite.

Centi-Call Second

	<unit> (CCS) A unit used (in North America) to quantify the
	aggregate of traffic running in a network.  1 CCS is 100
	Call-Seconds.  That means 1 CCS could be 2 calls of 50 seconds
	duration or 20 calls of 5 seconds duration.

	(22 Oct 1997)

central office

	<communications> The place where telephone companies terminate
	customer lines and locate switching equipment to interconnect
	those lines with other networks.

	(20 Mar 1995)

central processing unit

	<architecture, processor> (CPU, processor) The part of a
	computer which controls all the other parts.  The CPU fetches
	instructions from memory and decodes them.  This may cause it
	to transfer data to or from memory or to activate
	{peripherals} to perform input or output.

	A {parallel computer} has several CPUs which may share other
	resources such as memory and peripherals.

	The {CPU Info Center} lists many kinds of CPU.

	(30 Oct 1996)

Centronics

	A parallel interface for printers, found on many
	{microcomputer}s.

	[Pin-out?  Origin?]

	(16 Feb 1995)

Centrum voor Wiskunde en Informatica

	(CWI, Centre for Mathematics and Computer Science) An
	independent research institute active in the fields of
	mathematics and computer science.  CWI also aims to transfer
	new knowledge in these fields to society, trade and industry

	CWI is funded for 70 percent by NWO, the National Organisation
	for Scientific Research.  The remaining 30 percent is obtained
	through national and international programmes and contract
	research commissioned by industry.

	Address: Kruislaan 413, 1098 SJ Amsterdam, The Netherlands;
	P.O.Box 94079, 1090 GB Amsterdam, The Netherlands.

	Telephone: +31 (20) 5929 333.

	{Home (http://www.cwi.nl/)}

	{(ftp://ftp.cwi.nl/pub/)}.

century meltdown

	{Year 2000}

cepstra

	{cepstrum}

cepstrum

	<mathematics> (Coined in a 1963 paper by Bogert, Healey, and
	Tukey) The {Fourier transform} of the log-magnitude spectrum:

		fFt(ln( | fFt(window . signal) | ))

	This function is used in {speach recognition} and possibly
	elsewhere.  Note that the outer transform is NOT an inverse
	Fourier transform (as reported in many respectable DSP texts).

	[What's it for?]

	(07 Jan 1997)

CEPT

	{Comite Europeen des Postes et Telecommunications}

Ceres workstation Oberon System

	A complete {Oberon} compiler written in {Oberon}.  Source to
	most of the complete Ceres workstation Oberon System,
	including the {NS32032} {code generator} is available.  Less
	of the low level system specific code is available.

	{(ftp://neptune.ethz.ch/Oberon/)}

	(14 Dec 1994)

CERN

	The European Laboratory for Particle Physics.

CERNLIB

	The CERN Program Library.

CERT

	{Computer Emergency Response Team}

Certificate Authority

	<cryptography, body> (CA) An entity that attests to the
	identity of a person or an organisation.  A Certificate
	Authority might be an external company such as {VeriSign} that
	offers certificate services or they might be an internal
	organisation such as a corporate {MIS} department.  The
	Certificate Authority's chief function is to verify the
	identity of entities and issue digital certificates attesting
	to that identity.

	{Netscape Certificate Server} enables an organisation to act
	as its own Certificate Authority.

	{(http://home.netscape.com/comprod/server_central/support/faq/certificate_faq.html#11)}.

	[Connection with cryptography?]

	(29 Sep 1996)

CESP

	Common ESPECIALLY AI Language Inst, Mitsubishi -
	{object-oriented} extension of {Prolog}, a {Unix}-based
	version of {ESP}.

	E-mail: <cesp-request@air.co.jp>.

	(14 Dec 1994)

CESSL

	CEll Space Simulation Language.

	A language for simulating cellular space models.

	["The CESSL Programming Language", D.R. Frantz, 012520-6-T, CS
	Dept, U Michigan (Sept 1971)].

	(14 Dec 1994)

cextract

	<programming, tool> A {C} {prototype} extractor by Adam Bryant
	<adb@cs.bu.edu>.  It can generate {header files} for large
	multi-file C programs, and will automatically generate
	prototypes for all of the functions in such a program.  It can
	also generate a sorted list of all functions and their
	locations.  cextract version 1.7 works with both {ANSI C} and
	{K&R C} and runs under {Unix} and {VMS}.

	Posted to comp.sources.reviewed.

	(03 Nov 1992)

CFD

	Computational Fluid Dynamics.

	A {FORTRAN}-based parallel language for the {Illiac IV}.

	(29 Nov 1994)

cforth

	A {Forth} {interpreter}.

	Posted to comp.sources.unix volume 1.

	(29 Nov 1994)

cfortran.h

	A transparent, machine independent interface between {C} and
	{FORTRAN} routines and global data by Burkhard Burow
	<burow@vxdesy.cern.ch>. It provides {macro}s which allow the
	{C} {preprocessor} to translate a simple description of a C
	(Fortran) routine or global data into a Fortran (C) interface.

	Version 2.6 runs on {VAX}/{VMS}/{Ultrix}, {DECstation},
	{Silicon Graphics}, {IBM} {RS/6000}, {Sun}, {Cray}, {Apollo},
	{HP9000}, {LynxOS}, {f2c}, {NAG f90}.

	{(ftp://zebra.desy.de/cfortran/)}

	It was reviewed in RS/Magazine November 1992 and a user's
	experiences with cfortran.h are described in the Jan 93 issue
	of Computers in Physics.

	(12 Apr 1992)

CFP

	1. {Constraint Functional Programming}.

	2. {Communicating Functional Processes}.

	3. Call For Papers (for a conference).

CFP92

	{SPEC CFP92}

CGA

	{Color Graphics Adapter}

CGGL

	("seagull") Code-Generator Generator Language.  A machine
	description language based on modeling the computer as a
	{finite-state machine}.

	["A Code Generator Generator Language", M.K. Donegan et al,
	SIGPLAN Notices 14(8):58-64 (Aug 1979)].

	(24 Oct 1994)

CGI

	1. {Common Gateway Interface}.

	2. A French software engineering vendor in the US.

	3. {Computer Generation Incorporated}

	(11 Feb 1997)

cgi-bin

	{Common Gateway Interface}

CGI Joe

	<job, abuse> (From "GI Joe") A hard-core {CGI} script
	programmer with all the social skills and charisma of a
	plastic action figure.

	(30 Mar 1997)

CGM

	{Computer Graphics Metafile}

CGOL

	A package providing {ALGOL}-like surface syntax for {MACLISP}
	written by V.R. Pratt in 1977.

	{(ftp://mc.lcs.mit.edu/its/ai/lisp/cgol.fasl)}

	["CGOL - An Alternative Exetrnal Representation for LISP
	Users", V.  Pratt, MIT AI Lab, Working Paper 89, 1976].

cgram

	An {ANSI C} {LL1} or {LL2} {grammar} written in {Scheme} by
	Mohd Hanafiah Abdullah <napi@cs.indiana.edu>.  A program
	(f-f-d.s) extracts the FIRST/FOLLOW/DIRECTOR sets.

	{(ftp://primost.cs.wisc.edu/pub/comp.compilers/cgram-ll1.Z)}

chad

	<jargon, printer> /chad/ (Or "selvage" /sel'v*j/ (sewing and
	weaving), "{perf}", "perfory", "snaf").  1. The perforated
	edge strips on paper for {sprocket feed} printers, after they
	have been separated from the printed portion.

	The term {perf} may also refer to the perforations themselves,
	rather than the chad they produce when torn.

	[ Why "snaf"?]

	2. (Or "chaff", "computer confetti", "keypunch droppings") The
	confetti-like bits punched out of {punched cards} or {paper
	tape} which collected in the {chad box}.

	One correspondent believes "chad" derives from the {Chadless
	keypunch}.

	(18 Jul 1997)

chad box

	<hardware> ({IBM} called this a "chip box") A metal box about
	the size of a lunchbox (or in some models a large
	wastebasket), for collecting the {chad} that accumulated in
	{Iron Age} {card punches}.  You had to open the covers of the
	card punch periodically and empty the chad box.

	The {bit bucket} was notionally the equivalent device in the
	{CPU} enclosure, which was typically across the room in
	another great grey-and-blue box.

	(20 Nov 1996)

Chadless keypunch

	<hardware> (Named after its inventor) A {card punch} which cut
	little U-shapes in {punched cards}, rather than punching out a
	circle or rectangle.  The U's made a hole when folded back.
	It was clear that if the Chadless keypunch didn't make them,
	then the stuff that other keypunches made had to be "{chad}".

	(12 Feb 1997)

chain

	1. <operating system> (From {BASIC}'s "CHAIN" statement) To
	pass control to a child or successor without going through the
	{operating system} {command interpreter} that invoked you.
	The state of the parent program is lost and there is no
	returning to it.  Though this facility used to be common on
	memory-limited {microcomputers} and is still widely supported
	for {backward compatibility}, the jargon usage is
	semi-obsolescent; in particular, {Unix} calls this {exec}.

	Compare with the more modern "{subshell}".

	2. <programming> A series of linked data areas within an
	{operating system} or {application program}.  "Chain rattling"
	is the process of repeatedly running through the linked data
	areas searching for one which is of interest.  The implication
	is that there are many links in the chain.

	3. <theory> A possibly infinite, non-decreasing sequence of
	elements of some {total ordering}, S

		x0 <= x1 <= x2 ...

	A chain satisfies:

		for all x,y in S, x <= y \/ y <= x.

	I.e. any two elements of a chain are related.

	("<=" is written in {LaTeX} as {\sqsubseteq}).

	(03 Feb 1995)

Challenge-Handshake Authentication Protocol

	<networking, security, standard, protocol> (CHAP) An
	{authentication} scheme used by {PPP} servers to validate the
	identity of the originator of the connection upon connection
	or any time later.

	CHAP applies a three-way {handshaking} procedure.  After the
	link is established, the server sends a "challenge" message to
	the originator.  The originator responds with a value
	calculated using a {one-way hash function}.  The server checks
	the response against its own calculation of the expected hash
	value.  If the values match, the authentication is
	acknowledged; otherwise the connection is usually terminated.

	CHAP provides protection against {playback} attack through the
	use of an incrementally changing identifier and a variable
	challenge value.  The authentication can be repeated any time
	while the connection is open limiting the time of exposure to
	any single attack, and the server is in control of the
	frequency and timing of the challenges.  As a result, CHAP
	provides grater security then {PAP}.

	CHAP is defined in {RFC} 1334.

	(05 Mar 1996)

Chalmers University of Technology

	A Swedish university founded in 1829 offering master of
	science and doctoral degrees.  Research is carried out in the
	main engineering sciences as well as in technology related
	mathematical and natural sciences.  Five hundred faculty
	members work in more than 100 departments organised in nine
	schools.  Chalmers collaborates with the University of
	Gteborg.

	Around 8500 people work and study on the Chalmers campus,
	including around 500 faculty members and some 600 teachers and
	doctoral students.  About 4800 students follow the master
	degree programs.  Every year 700 Masters of Science in
	Engineering and in Architecture graduate from Chalmers, and
	about 190 PhDs and licentiates are awarded.  Some 40% of
	Sweden's engineers and architects are Chalmers graduates.

	About a thousand research projects are in progress and more
	than 1500 scientific articles and research reports are
	published every year.  Chalmers is a partner in 80 EC research
	projects.

	{Home (http://www.chalmers.se/Home-E.html)}

	Address: S-412 96 Gteborg, SWEDEN.

	Telephone: +46 (31) 772 10 00.  Fax: +46 (31) 772 38 72.

	(16 Feb 1995)

change management

	A set of techniques that aid in evolution, composition and
	policy management of the design and implementation of an
	object or system.

	(16 Feb 1995)

channel


	<chat> (Or "chat room", "room", depending on the system in
	question) The basic unit of group discussion in {chat} systems
	like {IRC}.  Once one joins a channel, everything one types is
	read by others on that channel.  Channels can either be named
	with numbers or with strings that begin with a "#" sign and
	can have topic descriptions (which are generally irrelevant to
	the actual subject of discussion).

	Some notable channels are "#initgame", "#hottub" and
	"#report".  At times of international crisis, "#report" has
	hundreds of members, some of whom take turns listening to
	various news services and typing in summaries of the news, or
	in some cases, giving first-hand accounts of the action
	(e.g. Scud missile attacks in Tel Aviv during the Gulf War in
	1991).

	(25 Jan 1998)

channel hopping

	To rapidly switch channels on {IRC}, or a {GEnie} chat board,
	just as a social butterfly might hop from one group to another
	at a party.  This term may derive from the TV idiom, "channel
	surfing".

	(29 Nov 1994)

channel op

	<messaging> /chan'l op/ (Or "{op}", "chan op", "chop") Someone
	who is endowed with privileges on a particular {IRC}
	{channel}.  These privileges include the right to {kick}
	users, to change various status bits and to make others into
	CHOPs.

	The full form, "channel operator", is almost never used.

	(08 Jan 1998)

channel service unit

	(CSU) A type of interface used to connect a {terminal} or
	computer to a digital medium in the same way that a {modem} is
	used for connection to an analogue medium.

	A CSU is provided by the communication carrier to customers
	who wish to use their own equipment to retime and regenerate
	the incoming signals.  The customer must supply all of the
	transmit logic, receive logic, and timing recovery in order to
	use the CSU, whereas a {digital service unit} DSU performs
	these functions.

	(30 Jan 1995)

channel service unit/data service unit

	<communications, hardware> (CSU/DSU) A device that performs
	both the {channel service unit} (CSU) and {data service unit}
	DSU functions.  The Channel Service Unit (CSU) is used to
	terminate a {DS1} or {DS0} (56/64 kb/s) digital circuit.  It
	peforms {line conditioning}, protection, {loop-back} and
	timing functions.  The Data Service Unit (DSU) terminates the
	data circuit to the {Data Terminal Equipment} (DTE) and
	converts the customer's data stream into a bi-polar format for
	transmission.

	(28 Feb 1995)

chan op

	{channel op}

chaos

	A property of some non-linear dynamic systems which exhibit
	sensitive dependence on initial conditions.  This means that
	there are initial states which evolve within some finite time
	to states whose separation in one or more dimensions of state
	space depends, in an average sense, exponentially on their
	initial separation.  Such systems may still be completely
	{deterministic} in that any future state of the system depends
	only on the initial conditions and the equations describing
	the change of the system with time.  It may, however, require
	arbitrarily high precision to actually calculate a future
	state to within some finite precision.

	["On defining chaos", R. Glynn Holt
	<rgholt@voyager.jpl.nasa.gov> and D. Lynn Holt
	<lholt@seraph1.sewanee.edu>.
	{(ftp://mrcnext.cso.uiuc.edu/pub/etext/ippe/preprints/Phil_of_Science/Holt_and_Holt.On_Defining_Chaos)}]

	Fixed precision {floating-point} arithmetic, as used by most
	computers, may actually introduce chaotic dependence on
	initial conditions due to the accumulation of rounding errors
	(which constitutes a non-linear system).

	(07 Feb 1995)

CHAP

	{Challenge-Handshake Authentication Protocol}

char

	<programming> /keir/ or /char/; rarely, /kar/ character.
	Especially used by {C} programmers, as "char" is {C}'s
	typename for character data.

	(29 Nov 1994)

character

	<character> A component of a natural {data hierarchy} which
	represents one letter or symbol of input-output with the user.
	On modern architectures, letters are usually represented in a
	{character set} such as {ASCII} using the least significant
	seven bits of a {byte} or {word}.

	(30 Oct 1995)

character encoding

	<character> Generally treated as synonymous with {character
	set}, although D. Connolly's "{'Character Set' Considered
	Harmful
	(http://www.w3.org/pub/WWW/MarkUp/html-spec/charset-harmful.html)}"
	draws a fine distiction between the two terms.

	[What distiction?]

	(09 Apr 1997)

characteristic function

	<mathematics> The characteristic function of set returns True
	if its argument is an element of the set and False otherwise.

	(13 Apr 1995)

character set

	<character, standard> One of several standard collections of
	characters, or a non-standard collection selected for a
	particular need.  The most widely used character set is
	{ASCII}; others such as {ISO Latin 1} and {Kanji} are becoming
	more common while {EBCDIC} and {Unicode} are less common.

	A character set may include letters, digits, punctuation,
	{control codes}, graphics, mathematical symbols, and other
	signs.  Each character in the set is represented by a unique
	character code, which is a {binary} number used for storage
	and transmission.  For example, the letter "A" has code 65 in
	the ASCII set.  Different sets have different mappings between
	codes and characters.

	Some but not all character sets include an {escape character}
	which indicates that the following character(s) are to be
	treated specially.  Escape sequences can be used to extend a
	character set to include non-standard meanings within the
	domain where they are defined and used, but lead to problems
	when transmitted to equipment without the appropriate
	software.

	In order for a computer to handle a particular character set,
	it must be possible to enter all the characters from the
	keyboard and to display them on the screen or printer.  Some
	computers are able to switch between several character sets,
	which allows both compatibility with other systems and the
	representation of multiple languages.  A few systems are
	unable to use sets with more than 128 characters (see
	{eight bit clean}).

	A character set defines the representation of characters as
	binary data whereas a {font} defines how characters appear on
	the screen or printer.

	(21 Jun 1996)

character set identifier

	<character> (CSID) (IBM) A number that identifies a {character
	set}.

	(21 Mar 1995)

Charge-Coupled Device

	(CCD) A semiconductor technology used to build light-sensitive
	electronic devices such as cameras and image scanners.  Such
	devices may detect either colour or black-and-white.  Each CCD
	chip consists of an array of light-sensitive photocells.  The
	photocell is sensitised by giving it an electrical charge
	prior to exposure.

	(04 Jan 1995)

CHARITY

	A {functional language} based purely on {category theory} by
	Cockett, Spencer and Fukushima, 1990-1991.

	A version for {Sun4} is available from Tom Fukushima
	<fukushim@cpsc.ucalgary.ca>.

	["About Charity", J.R.B. Cockett <cockett@cpcs.ucalgary.ca> et
	al].

	(29 Nov 1994)

charityware

	/cha'rit-ee-weir`/  Synonym {careware}.

Charles Babbage

	<person> The british inventor known to some as the "Father of
	Computing" for his contributions to the basic design of the
	computer through his {Analytical machine}.  His previous
	{Difference Engine} was a special purpose device intended for
	the production of mathematical tables.

	Babbage was born on December 26, 1791 in Teignmouth,
	Devonshire UK.  He entered Trinity College, Cambridge in 1814
	and graduated from Peterhouse.  In 1817 he received an MA from
	Cambridge and in 1823 started work on the Difference Engine
	through funding from the British Government.  In 1827 he
	published a table of {logarithms} from 1 to 108000.  In 1828
	he was appointed to the Lucasian Chair of Mathematics at
	Cambridge (though he never presented a lecture).  In 1831 he
	founded the British Association for the Advancement of Science
	and in 1832 he published "Economy of Manufactures and
	Machinery".  In 1833 he began work on the Analytical
	Engine. In 1834 he founded the Statistical Society of London.
	He died in 1871 in London.

	Babbage also invented the cowcatcher, the dynamometer,
	standard railroad gauge, uniform postal rates, occulting
	lights for lighthouses, Greenwich time signals, and the
	heliograph opthalmoscope.  He also had an interest in cyphers
	and lock-picking.

	[Adapted from the text by J. A. N. Lee, Copyright September
	1994].

	(22 Feb 1996)

CHARM

	An explicitly parallel programming language based on {C}, for
	both shared and nonshared {MIMD} computers.

	{(ftp://a.cs.uiuc.edu/pub/CHARM)}

	Mailing list: <charm@cs.uiuc.edu>.

	["The CHARM(3.2) Programming Language Manual", UIUC (Dec
	1992)].

CHARM++

	An {object-oriented} parallel programming system, similar to
	{CHARM} but based on {C++}.

	{(ftp://a.cs.uiuc.edu/pub/CHARM/Charm++)}

	E-mail: Sanjeev Krishnan <sanjeev@cs.uiuc.edu>.

	[TR 1796, UIUC].

	(29 Nov 1994)

Charme

	A language with {discrete combinatorial constraint logic}
	aimed at industrial problems such as planning and
	{scheduling}.  Implemented in {C} at {Bull} in 1989.

	Charme is an outgrowth of ideas from {CHIP}.  It is
	semantically {nondeterministic}, with choice and
	{backtracking}, similar to {Prolog}.

	E-mail: <cras@bull.fr>.

	["Charme Reference Manual", AI Development Centre, Bull,
	France 1990].

	(15 Nov 1994)

CHARYBDIS

	A {Lisp} program to display mathematical expressions.  It is
	related to {MATHLAB}.

	[Sammet 1969, p. 522].

	(15 Nov 1994)

chase pointers

	1. To go through multiple levels of indirection, as in
	traversing a linked list or graph structure.  Used especially
	by programmers in {C}, where explicit pointers are a very
	common data type.

	See {dangling pointer} and {snap}.

	2. (Cambridge) "pointer chase" or "pointer hunt": The process
	of going through a {core dump}, interactively or on a large
	piece of paper printed with {hex} {runes}, following dynamic
	data-structures.  Used only in {debugging}.

	(11 May 1995)

CHASM

	CHeap ASseMbler.

	A {shareware} {assembler} for {MS-DOS}.

	(15 Nov 1994)

chat

	<chat, tool, networking, messaging> Any system that allows any
	number of logged-in users to have a typed, real-time, on-line
	conversation, either by all users logging into the same
	computer, or more commonly nowadays, via a {network}.

	The medium of {chat} is descended from {talk}, but the terms
	(and the media) have been distinct since at least the early
	1990s.  {talk} is prototypically for a small number of people,
	generally with no provision for {channels}.  In {chat}
	systems, however, there are many {channels} in which any
	number of people can talk; and users may send private
	(one-to-one) messages.

	Some well known chat systems to date (1998) include {IRC},
	{ICQ} and {Palace}.

	Chat systems have given rise to a distinctive style combining
	the immediacy of talking with all the precision (and
	verbosity) that written language entails.  It is difficult to
	communicate inflection, though conventions have arisen to help
	with this.

	The conventions of chat systems include special items of
	jargon, generally abbreviations meant to save typing, which
	are not used orally.  E.g., {re}, {BCNU}, {BBL}, {BTW}, {CUL},
	{FWIW}, {FYA}, {FYI}, {IMHO}, {OTT}, {TNX}, {WRT}, {WTF},
	{WTH}, {<g>}, {<gr&d>}, {BBL}, {HHOK}, {NHOH}, {ROTFL}, {AFK},
	{b4}, {TTFN}, {TTYL}, {OIC}, {re}.

	Much of the chat style is identical to (and probably derived
	from) {Morse code} jargon used by ham-radio amateurs since the
	1920s, and there is, not surprisingly, some overlap with {TDD}
	jargon.  Most of the jargan was in use in {talk} systems.
	Many of these expressions are also common in {Usenet} {news}
	and {electronic mail} and some have seeped into popular
	culture, as with {emoticons}.

	The {MUD} community uses a mixture of {emoticons}, a few of
	the more natural of the old-style {talk mode} abbreviations,
	and some of the "social" list above; specifically, MUD
	respondents report use of {BBL}, {BRB}, {LOL}, {b4}, {BTW},
	{WTF}, {TTFN}, and {WTH}.  The use of "{re}" or "rehi" is also
	common; in fact, MUDders are fond of "re-" compounds and will
	frequently "rehug" or "rebonk" (see {bonk/oif}) people.  In
	general, though, MUDders express a preference for typing
	things out in full rather than using abbreviations; this may
	be due to the relative youth of the MUD cultures, which tend
	to include many touch typists.  Abbreviations specific to MUDs
	include: {FOAD}, ppl (people), THX (thanks), UOK? (are you
	OK?).

	Some {BIFF}isms (notably the variant spelling "d00d") and
	aspects of {ASCIIbonics} appear to be passing into wider use
	among some subgroups of MUDders and are already pandemic on
	{chat} systems in general.

	See also {hakspek}.

	{Suck article "Screaming in a Vacuum"
	(http://www.suck.com/daily/96/10/23/)}.

	(25 Jan 1998)

chat room

	{channel}

cheapernet

	<networking> (Or "thinnet") A colloquial term for thin-wire
	{Ethernet} ({10base2}) that uses {RG58} {coaxial cable}
	instead of the full-spec "Yellow Cable".

	(28 Mar 1995)

checkdigit

	A one-digit {checksum}.

Checkout Test language

	(CTL)

	["Checkout Test Language: An Interpretive Language Designed
	for Aerospace Checkout Tasks", G.S. Metsker, Proc FJCC 33(2)
	(1968)].

	(14 Nov 1994)

checkpoint

	Saving the current state of a program and its data, including
	intermediate results to disk or other {non-volatile storage},
	so that if interrupted the program could be restarted at the
	point at which the last checkpoint occurred.  This facility
	came into popular use in {mainframe} {operating systems}s such
	as {OS/360} in which programs frequently ran for longer than
	the mean time between system failures.  If a program run fails
	because of some event beyond the program's control
	(e.g. hardware or {operating system} failure) then the
	processor time invested before the checkpoint will not have
	been wasted.

	(07 Feb 1995)

checksum

	<storage, communications> A computed value which depends on
	the contents of a block of data and which is transmitted or
	stored along with the data in order to detect corruption of
	the data.  The receiving system recomputes the checksum based
	upon the received data and compares this value with the one
	sent with the data.  If the two values are the same, the
	receiver has some confidence that the data was received
	correctly.

	The checksum may be 8 bits (modulo 256 sum), 16, 32, or some
	other size.  It is computed by summing the bytes or words of
	the data block ignoring {overflow}.  The checksum may be
	negated so that the total of the data words plus the checksum
	is zero.

	{Internet} {packets} use a 32-bit checksum.

	See also {digital signature}, {cyclic redundancy check}.

	(01 Mar 1996)

chemist

	(Cambridge) Someone who wastes computer time on {number
	crunching} when you'd far rather the computer were doing
	something more productive, such as working out anagrams of
	your name or printing Snoopy calendars or running {life}
	patterns.  May or may not refer to someone who actually
	studies chemistry.

	(07 Feb 1995)

Chen

	{Peter Chen}

CHEOPS

	A satellite-based batch data dissemination project between
	{CERN} and member state institutes.

Chernobyl packet

	/cher-noh'b*l pak'*t/ A network packet that induces a
	{broadcast storm} and/or {network meltdown}, in memory of the
	April 1986 nuclear accident at Chernobyl in Ukraine.  The
	typical scenario involves an IP Ethernet datagram that passes
	through a gateway with both source and destination Ether and
	IP address set as the respective broadcast addresses for the
	subnetworks being gated between.  Compare {Christmas tree
	packet}.

chess

	<games> A two-player {game} with {perfect information}.

	{Usenet} newsgroup: {news:rec.games.chess}.

	See also {Internet Chess Server}.

	(25 Mar 1995)

CHI

	A wide spectrum language, the forerunner of Refine.  "Research
	on Knowledge-Based Software Environments at Kestrel
	Institute", D.R. Smith et al, IEEE Trans Soft Eng, SE-11(11)
	(1985).

Chicago

	{Windows 95}

chicken head

	The {Commodore} Business Machines logo, which strongly
	resembles a poultry part.  Rendered in ASCII as "C=".  With
	the arguable exception of the {Amiga}, Commodore's computers
	are notoriously crocky little {bitty box}es (see also
	{PETSCII}).  Thus, this usage may owe something to Philip
	K. Dick's novel "Do Androids Dream of Electric Sheep?"  (the
	basis for the movie "Blade Runner"; the novel is now sold
	under that title), in which a "chickenhead" is a mutant with
	below-average intelligence.

chicklet keyboard

	<spelling> It's spelled "{chiclet keyboard}".

	(16 May 1997)

chiclet keyboard

	<hardware> A {keyboard} with a small, flat rectangular or
	lozenge-shaped rubber or plastic keys that look like pieces of
	chewing gum.  (Chiclets is the brand name of a variety of
	chewing gum that does in fact resemble the keys of chiclet
	keyboards).  Used especially to describe the original {IBM
	PCjr} keyboard.  Vendors unanimously liked these because they
	were cheap, and a lot of early {portable} and {laptop
	computers} were launched with them.  Customers rejected the
	idea with almost equal unanimity, and chiclets are not often
	seen on anything larger than a digital watch any more.

	(16 May 1997)

child process

	<operating system> A {process} created by another process (the
	{parent process}).  Each process may create many child
	processes but will have only one parent process, except for
	the very first process which has no parent.  The first
	process, called {init} in {Unix}, is started by the {kernel}
	at {boot time} and never terminates.  A child process inherits
	most of its attributes, such as open files, from its parent.
	In fact in Unix, a child process is created (using {fork}) as
	a copy of the parent.  The chid process can then overlay
	itself with a different program (using {exec}) as required.

	(22 Nov 1997)

child record

	<database> A {record} lower in the hierarchical tree than a
	parent record; it is also directly liked to the parent and
	hierarchical {database}s.

	(13 Apr 1995)

child version

	A version of a version.  See {change management}.

CHILI

	D.L. Abt.  Language for systems programming, based on ALGOL 60
	with extensions for structure and type declarations.  "CHILI,
	An Algorithmic Language for Systems Programming", CHI-1014,
	Chi Corp (Sep 1975).

CHILL

	{CCITT HIgh-Level Language}

Chimera

	A modular, {X Window System}-based {World-Wide Web} {browser}
	for {Unix}.  Chimera uses the {Athena} {widget} set so {Motif}
	is not needed.  Chimera supports forms, inline images, {TERM},
	{SOCKS}, {proxy server}s, {Gopher}, {FTP}, {HTTP} and local
	file accesses.  Chimera can be extended using external
	programs.  New {protocol}s can easily be added and alternate
	image formats can be used for inline images
	(e.g. {PostScript}).

	Version 1.60 is available for
	{(ftp://ftp.cs.unlv.edu/pub/chimera)}.

	{Home (http://www.unlv.edu/chimera/)}

	Chimera runs on {Sun} {SPARC} {SunOS} 4.1.x, {IBM} {RS/6000}
	{AIX} 3.2.5, {Linux} 1.1.x.  It should run on anything with
	{X11}R[3-6], {imake} and a {C} compiler.

	(08 Nov 1994)

chine nual

	/sheen'yu-*l/ (MIT) The {LISP Machine} Manual, so called
	because the title was wrapped around the cover so only those
	letters showed on the front.

	(02 Dec 1994)

Chinese Army technique

	{Mongolian Hordes technique}

CHIP

	1. A early system on the {IBM 1103} or 1103A.

	[Listed in CACM 2(5):16 (May 1959)].

	(15 Nov 1994)

	2. {Constraint Handling In Prolog}.

chip

	{integrated circuit}

CHIP-48

	A reimplementation of {CHIP-8} for the {HP-48} calculator by
	Andreas Gustafson <gson@niksula.hut.fi>.

	Posted to {news:comp.sys.handhelds} in Sep 1990.

	{(ftp://vega.hut.fi/pub/misc/hp48sx/asap)}

	(02 Dec 1994)

CHIP-8

	<games, language>

	A low-level language (really a high-level {machine code})
	developed at {RCA} in the late 1970s for video games on
	computers using {RCA}'s {CDP1802} processor.

	An {interpreter} for the {Amiga} is available by
	{(ftp://ftp.cso.uiuc.edu/pub/amiga/fish/f5/ff537/CHIP8.lzh)}.

	(02 Dec 1994)

chip box

	{chad box}

Chip Jewelry

	<jargon> A euphamism for old computers destined to be scrapped
	or turned into decorative ornaments.  "I paid three grand for
	that {Mac SE}, and now it's nothing but chip jewelry."

	(30 Mar 1997)

Chip Scale Packaging

	<hardware> (CSP) Surface Mount International attendees debated
	chip scale technologies as system manufacturers seek new
	levels of package miniaturization for chip-on-board, flip chip
	and multichip modules.  Technical and marketing gurus
	furthered the technical debate by focussing on which chip
	scale packaging schemes would be the most cost-effective for
	future packages designated for high volume consumer
	applications.  Bare chip package supporters noted that
	mainstream circuitry is readily available in known good die
	(KGD) from a number of suppliers. Traditional ball grid array
	packages received strong support for current high volume and
	high density manufacturing needs. Chip scale packages (CSP)
	provide pre-speed-sorted,pre-tested and pre-packaged die
	without requiring specialized testing. CSP supporters improved
	their position with ChipScale's announcement that Motorola
	will license its Micro SMT packaging technology.

	["Chip scale packaging gains at SMI. (Surface Mount
	International)", Bernard Levine, Electronic News (1991), Sept
	4, 1995 v41 n2081 p1(2)].

	[But what is it?]

	(09 Jul 1996)

chip set

	<hardware> A collection of {integrated circuit}s that are
	designed to be used together for some specific purpose.
	E.g. control circuitry in an {IBM PC}.

	(27 Mar 1995)

Chips & Technologies

	<company> An {integrated circuit} design company.  They
	produce {IBM PC} {chipset}s, among other things.

	Address: Silicon Valley, California, USA.

	(08 Apr 1995)

CHISEL

	An extension of {C} for {VLSI} design, implemented as a C
	{preprocessor}.  It produces {CIF} as output.

	["CHISEL - An Extension to the Programming language C for VLSI
	Layout", K. Karplus, PHD Thesis, Stanford U, 1982].

chmod

	<file system> ("Change mode") The {Unix} command and {system
	call} to change the access {permissions} of a named file.
	Each file (directory, device, etc.) has nine kinds of access
	which can be allowed or denied.  Different permissions apply
	to the owner of the file, the members of the group the file
	belongs to, and all users.  Each of these classes of user
	(owner, group and other) can have permission to read, write or
	execute the file.  Chmod can also set various other mode bits
	for a file or directory such as the {sticky bit} and the {set
	user id} bit.

	Unix {man} page: chmod

	(31 Jan 1995)

CHOCS

	A generalisation of {CCS}.

	["A Calculus of Higher-Order Communicating Systems",
	B. Thomsen, 16th POPL pp.143-154 (1989)].

choke

	1. To reject input, often ungracefully.  "NULs make System V's
	"lpr(1)" choke."  "I tried building an {EMACS} binary to use
	{X}, but "cpp(1)" choked on all those "#define"s."  See
	{barf}, {gag}.

	2. [MIT] More generally, to fail at any endeavor, but with
	some flair or bravado; the popular definition is "to snatch
	defeat from the jaws of victory."

chomp

	<jargon> To {lose}; specifically, to chew on something of
	which more was bitten off than one can.  Probably related to
	gnashing of teeth.

	See {bagbiter}.

	A hand gesture commonly accompanies this.  To perform it, hold
	the four fingers together and place the thumb against their
	tips.  Now open and close your hand rapidly to suggest a
	biting action (much like what Pac-Man does in the classic
	video game, though this pantomime seems to predate that).  The
	gesture alone means "chomp chomp" (see {Verb Doubling}).  The
	hand may be pointed at the object of complaint, and for real
	emphasis you can use both hands at once.  Doing this to a
	person is equivalent to saying "You chomper!"  If you point
	the gesture at yourself, it is a humble but humorous admission
	of some failure.  You might do this if someone told you that a
	program you had written had failed in some surprising way and
	you felt dumb for not having anticipated it.

	(01 Jun 1996)

CHOP

	{channel op}

Chop

	A {code generator} by Alan L. Wendt <wendt@CS.ColoState.EDU>
	for the {lcc} {C} compiler {front end}.  Version 0.6 is
	interfaced with Fraser and Hanson's {lcc} {front end}.  The
	result is a {C} compiler with good code selection but no
	{global optimisation}.  Chop can currently compile and run
	small test programs on the {VAX}.  The {NS32k} and {68000}
	code generators are being upgraded for lcc compatibility.

	{(ftp://beethoven.cs.colostate.edu/pub/chop/0.6.tar.Z)}

	["Fast Code Generation Using Automatically-Generated Decision
	Trees", ACM SIGPLAN '90 PLDI].

	(28 Apr 1993)

Chorus

	A distributed {operating system} developed at {INRIA}.

Christmas tree

	A kind of RS-232 line tester or breakout box featuring rows of
	blinking red and green LEDs suggestive of Christmas lights.

Christmas tree packet

	A packet with every single option set for whatever protocol is
	in use.  See {kamikaze packet}, {Chernobyl packet}.  (The term
	doubtless derives from a fanciful image of each little option
	bit being represented by a different-coloured light bulb, all
	turned on.)

chrome

	<jargon> (From automotive slang via wargaming) Showy
	{features} added to attract users but contributing little or
	nothing to the power of a system.

	"The 3D icons in {Motif} are just chrome, but they certainly
	are *pretty* chrome!"

	Chrome is distinguished from {bells and whistles} by the fact
	that the latter are usually added to gratify developers' own
	desires for featurefulness.  Often used as a term of contempt
	and sometimes used in conjunction with 'fluff', "all the fluff
	and chrome that comes with Motif".

	(19 Sep 1997)

chroot

	<operating system> The {UNIX} command to make the {root
	directory} (/) become something other than its default for the
	lifetime of the current process.  It can only be run by
	privileged users and is used to give a process (commonly a
	network server such as {FTP} or {HTTP}) access to a restricted
	portion of the {file system}.

	The new root contains copies of all the essential files and
	directories, e.g. /lib, /dev/tty, /tmp.

	(08 Dec 1996)

CHRP

	{PowerPC Platform}

chug

	<jargon> To run slowly; to {grind} or {grovel}.  "The disk is
	chugging like crazy."

	(25 Mar 1995)

Church, Alonzo

	{Alonzo Church}

Church integer

	A representation of integers as functions invented by {Alonzo
	Church}, inventor of {lambda-calculus}.  The integer N is
	represented as a {higher-order function} which applies a given
	function N times to a given expression.  In the {pure
	lambda-calculus} there are no constants but numbers can be
	represented by Church integers.

	A {Haskell} function to return a given Church integer could be
	written:

		church n = c
			   where
			   c f x = if n == 0 then x else c' f (f x)
				   where
				   c' = church (n-1)

	A function to turn a Church integer into an ordinary integer:

		unchurch c = c (+1) 0

	See also {von Neumann integer}.

	(29 Nov 1994)

Church of the SubGenius

	<body, humour> A mutant offshoot of {Discordianism} launched
	in 1981 as a spoof of fundamentalist Christianity by the
	"Reverend" Ivan Stang, a brilliant satirist with a gift for
	promotion.  Popular among hackers as a rich source of bizarre
	imagery and references such as "Bob" the divine
	drilling-equipment salesman, the Benevolent Space Xists, and
	the Stark Fist of Removal.  Much SubGenius theory is concerned
	with the acquisition of the mystical substance or quality of
	{slack}.

	{Home (http://sunsite.unc.edu/subgenius/slack.html)}

	(02 Jan 1996)

Church-Rosser Theorem

	This property of a {reduction} system states that if an
	expression can be reduced by zero or more reduction steps to
	either expression M or expression N then there exists some
	other expression to which both M and N can be reduced.  This
	implies that there is a unique {normal form} for any
	expression since M and N cannot be different normal forms
	because the theorem says they can be reduced to some other
	expression and normal forms are irreducible by definition.  It
	does not imply that a normal form is reachable, only that if
	reduction terminates it will reach a unique normal form.

	(25 Jan 1995)

CI$

	CIS, {CompuServe Information Service}.  Also {Compu$erve}.
	The dollar sign refers to CompuServe's rather steep line
	charges.  Often used in {sig block}s just before a CompuServe
	address.

	(25 Jan 1995)

CICERO

	Control Information system Concepts based on Encapsulated
	Real-time Objects.

	A {CERN} {DRDC} proposal.

	(25 Jan 1995)

CICS

	{Customer Information Control System}

CID

	{Caller ID}

CIDR

	{Classless Inter-Domain Routing}

CIEL

	An {object-oriented} {Prolog}-like language.

	["CIEL: Classes et Instances En Logique", M. Gandriau, Thesis
	ENSEEIHT (1988)].

	(25 Jan 1995)

CIF

	Caltech Intermediate Form.

	Geometry language for VLSI design, in which the primitives are
	coloured rectangles.

	["Introduction to VLSI Systems", Mead & Conway, A-W 1980,
	Section 4.5].

	(25 Jan 1995)

Cigale

	A parser generator language with extensible syntax.  "CIGALE:
	A Tool for Interactive Grammar Construction and Expression
	Parsing", F.  Voisin, Sci Comp Prog 7:61-86 (1986).

CIL

	1. {Component Integration Laboratories}.

	2. Common Intermediate Language.

	["Construction of a Transportable, Milti-Pass Compiler for
	Extended Pascal", G.J. Hansen et al, SIGPLAN Notices
	14(8):117-126 (Aug 1979)].

	(24 Oct 1994)

CIM

	{Computer Integrated Manufacturing}

CIMS PL/I

	<language> A {PL/I} subset from the Courant Institute of
	Mathematical Sciences.

	["CIMS PL/I", P.W. Abrahams, Courant Inst].

	(15 Dec 1997)

Cinderella Book

	<publication> "Introduction to Automata Theory, Languages, and
	Computation", by John Hopcroft and Jeffrey Ullman,
	(Addison-Wesley, 1979).  So called because the cover depicts a
	girl (putatively Cinderella) sitting in front of a Rube
	Goldberg device and holding a rope coming out of it.  On the
	back cover, the device is in shambles after she has
	(inevitably) pulled on the rope.

	See also {book titles}.

	(03 Dec 1996)

CINT92

	{SPEC CINT92}

C-Interp

	An {interpreter} for a small subset of {C}, originally part of
	a communications package.

	{(ftp://oac2.hsc.uth.tmc.edu/Mac/Misc/C_Interp.sit)}.  E-mail:
	Chuck Shotton <cshotton@oac.hsc.uth.tmc.edu>.

	(14 May 1993)

ciphertext

	<cryptography> Text which has been encrypted by some
	{encryption} system.

	Opposite: {plaintext}.

	(27 Oct 1994)

CIP-L

	CIP Language.  (CIP stands for Computer-aided Intuition-guided
	Programming.)  Wide-spectrum language for incremental program
	transformation.  There are ALGOL-like and Pascal-like
	variants.

	["The Munich Project CIP, v.I: The Wide Spectrum Language
	CIP-L", LNCS 183, Springer 1984.  Version: CIP85].

CIR

	{Committed Information Rate}

CIRCAL

	["CIRCAL and the Representation of Communication, Concurrency
	and TIme", G.J. Mitre, ACM TOPLAS 7(2):270-298 (1985)].

circuit switched

	Using {circuit switching}.

circuit switching

	A communications paradigm in which a dedicated communication
	path is established between the sender and receiver along
	which all {packet}s travel.  The telephone system is an
	example of a circuit switched network.  Also called
	{connection-oriented}.  Contrast {connectionless}, {packet
	switching}.

Cirrus Logic

	<company> A manufacturer of {integrated circuits} including
	the {Advanced RISC Machine} and display interface processors
	and cards for use as {Windows accelerators} (requiring
	dedicated driver software).

	{Home (http://www.cirrus.com/)}.

	[Other products?]

	(13 Oct 1996)

CIS

	1. <programming> {Case Integration Services}.

	2. <networking> {Cooperative Information System}.

CISC

	{Complex Instruction Set Computer}

Cisco Systems, Inc.

	<company> {Ethernet} hardware manufacturers.

	{Home (http://www.cisco.com/)}

	Address: 170 West Tasman Drive, San Jose, CA 95134-1706, USA.
	Telephone: +1 408 526 4000, +1 800 553 6387.  Fax: +1 408 526
	4100.

	(19 Apr 1995)

CISI

	A French software house.

CITRAN

	{Caltech}'s answer to {MIT}'s {JOSS}.

	[Sammet 1969, p.217].

CityScape

	<company> A re-seller of {Internet} connections to the {PIPEX}
	{backbone}.

	E-Mail: <sales@cityscape.co.uk>.

	Address: CityScape Internet Services, 59 Wycliffe Rd.,
	Cambridge, CB1 3JE, England.  Telephone: +44 (1223) 566 950.

	(08 Nov 1994)

CIX

	1. <networking> {Commercial Internet Exchange}.

	2. <messaging> {Compulink Information eXchange}.

	(16 Jul 1997)

CJK

	<character> In {internationalisation}, a collective term for
	Chinese, Japanese, and Korean.

	These languages all share the fact that their writing systems
	are based partly on {Han characters} (i.e., "hanzi" or
	"{kanji}"), which are complex enough of a system to require
	16-bit {character encodings}.  CJK character encodings should
	consist minimally of {Han characters} plus language-specific
	phonetic scripts such as pinyin, bopomofo, hiragana, hangul,
	etc.

	{(ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.inf)}.

	(16 Jul 1997)

CJKV

	<character> {CJK} plus Vietnamese, which, like the other three
	Asian languages, requires 16-bit {character encodings}.
	Vietnamese, however, does not use {Han characters}.

	(16 Jul 1997)

CL

	Control Language.

	The batch language for {IBM RPG}/38, used in conjunction with
	{RPG III}.

	See also {OCL}.

	(08 Nov 1994)

CLAM

	<mathematics, tool> A system for {symbolic mathematics},
	especially General Relativity.  It was first implemented in
	{ATLAS} {assembly language} and later {Lisp}.

	See also {ALAM}.

	["CLAM Programmer's Manual", Ray d'Inverno & Russell-Clark,
	King's College London, 1971].

	(08 Nov 1994)

C Language Integrated Production System

	<language> (CLIPS) A language produced by Gary Riley of NASA
	{JSC} in Houston, Texas, for developing {expert system}s, with
	the inferencing and representation capabilities of {OPS5} and
	support for {forward chaining} rule-based, {object-oriented}
	and {procedural} programming.  CLIPS has a {Lisp}-like
	{syntax}.  It is available for {MS-DOS} and comes with source
	code in {C}.

	COSMIC, U Georgia, (404) 542-3265.  Austin Code Works
	<info@acw.com> (512) 258-0785.

	Versions include CLIPS 5.1, CLIPS/Ada 4.3 and CLIPS6.0 (see
	{PCLIPS}).

	{Home (http://www.jsc.nasa.gov/~clips/CLIPS.html)}

	E-mail: <service@cossack.cosmic.uga.edu>.

	Telnet: cosmic.uga.edu, user: cosline.

	{U. Michigan
	(ftp://earth.rs.itd.umich.edu/mac.bin/etc/compsci/Clips/)},
	{ENSMP, France (ftp://ftp.ensmp.fr/pub/clips/)}.

	Mailing list: <CLIPS-LIST@UGA.BITNET>.

	["Expert Systems: Principles and Programming", Joseph
	Giarratano and Gary Riley, PWS Publ 1994, ISBN 0-534-93744-6].

	(16 Dec 1994)

Clarion

	A {fourth generation language} for {MS-DOS}.

	(09 Nov 1994)

CLASP

	Computer Language for AeronauticS and Programming.

	A {real-time} language from NASA focussing on {fixed-point}
	mathematics.  CLASP is a near subset of {SPL}, with some ideas
	from {PL/I}.

	["Flight Computer and Language Processor Study", Raymond
	J. Rubey, Management Information Services, Detroit, 1971].

	(13 Oct 1994)

class

	1. <programming> The prototype for an {object} in an
	{object-oriented language}; analogous to a {derived type} in a
	{procedural language}.  A class may also be considered to be a
	set of objects which share a common structure and behaviour.
	The structure of a class is determined by the {class
	variables} which represent the {state} of an object of that
	class and the behaviour is given by a set of {methods}
	associated with the class.

	Classes are related in a {class hierarchy}.  One class may be
	a specialisation (a "{subclass}") of another (one of its
	"{superclasses}") or it may be composed of other classes or it
	may use other classes in a {client-server} relationship.  A
	class may be an {abstract class} or a {concrete class}.

	See also {signature}.

	2. <programming> See {type class}.

	3. <networking> One of three types of {Internet addresses}
	distinguished by their most significant bits.

	3. <language> A language developed by the {Andrew Project}.
	It was one of the first attempts to add {object-oriented}
	features to {C}.

	(01 May 1995)

class hierarchy

	<programming> A set of {classes} and their interrelationships.

	One class may be a specialisation (a "{subclass}" or "{derived
	class}") of another which is one of its "{superclasses}" or
	"{base classes}".

	When a {method} is invoked on an {object} it is first looked
	for in the object's class, then the superclass of that class,
	and so on up the hierarchy until it is found.  Thus a class
	need only define those methods which are specific to it, and
	inherits methods from all its superclasses.

	See also: {multiple inheritance}.

	(06 Aug 1997)

classic

	<jargon> An adjective used before or after a noun to describe
	the original version of something.  This construction is
	especially used of product series in which the newer versions
	are considered worse than the older ones.

	Examples include "Star Trek Classic" - the original TV series
	as opposed to the films, ST The Next Generation or any of the
	other spin-offs and follow-ups; or "PC Classic" - {IBM}'s
	{ISA}-bus computers as opposed to the {PS/2} series.

	(27 Oct 1996)

Classic-Ada

	An {object-oriented} extension to {Ada}, said to be like
	{Smalltalk}.  It is implemented as an {Ada} {preprocessor}.

	(05 Dec 1994)

classical logic

	<logic> Non-{intuitionist logic}.

	(13 Apr 1995)

Classic C

	/klas'ik C/ (Or "C Classic", a play on "Coke Classic") The {C}
	programming language as defined in the first edition of {K&R},
	with some small additions.  It is usually known as "{K&R C}".
	The name came into use while C was being standardised by the
	{ANSI X3J11} committee.

	See also {classic}.

Classless Inter-Domain Routing

	<networking> (CIDR) /sid*r/ A scheme which allocates blocks of
	{Internet addresses} in a way that allows summarisation into a
	smaller number of {routing table} entries.

	A CIDR block is a block of {Internet addresses} assigned to an
	{Internet Service Provider} (ISP) by the {Internic}.

	CIDR was introduced to enable the use of more sophisticated
	{routing} protocols such as {OSPF}.

	See {RFC 1467}, {RFC 1518}, {RFC 1519} and {RFC 1520}.

	[Is this true?  Relation to classes?]

	(06 Mar 1997)

class library

	A library of reusable {class}es for use with an
	{object-oriented programming} system.

	(05 Dec 1994)

Class Oriented Ring Associated Language

	(CORAL) A language developed by L.G. Roberts at {MIT} in 1964
	for graphical display and systems programming on the {TX-2}.
	It used "rings" (circular lists) from {Sketchpad}.

	["Graphical Communication and Control Languages",
	L.B. Roberts, Information System Sciences: Proc Second
	Congress, 1965].

	[Sammet 1969, p.462].

	(30 Nov 1994)

Class-Relation Method

	A design technique based on the concepts of {object-oriented
	programming} and the {Entity-Relationship model} from the
	French company {Softeam}.

	(05 Dec 1994)

Clean

	<language> A {lazy} {higher-order} {purely functional
	language} from the {University of Nijmegen}.  Clean was
	originally a subset of {Lean}, designed to be an experimental
	{intermediate language} and used to study the {graph
	rewriting} model.  To help focus on the essential
	implementation issues it deliberately lacked all {syntactic
	sugar}, even {infix} expressions or {complex lists},

	As it was used more and more to construct all kinds of
	applications it was eventually turned into a general purpose
	functional programming language, first released in May 1995.
	The new language is {strongly typed} (Milner/Mycroft type
	system), provides {modules} and {functional I/O} (including a
	{WIMP} interface), and supports {parallel processing} and
	{distributed processing} on {loosely coupled} parallel
	architectures.  Parallel execution was originally based on the
	{PABC} {abstract machine}.

	It is one of the fastest implementations of functional
	languages available, partly aided by programmer {annotations}
	to influence evaluation order.

	Although the two variants of Clean are rather different, the
	name Clean can be used to denote either of them.  To
	distinguish, the old version can be referred to as Clean 0.8,
	and the new as Clean 1.0 or Concurrent Clean.

	The current release of Clean (1.0) includes a compiler,
	producing code for the {ABC} {abstract machine}, a {code
	generator}, compiling the ABC code into either {object-code}
	or {assembly language} (depending on the {platform}), I/O
	libraries, a {development environment} (not all platforms),
	and {documentation}.  It is supported (or will soon be
	supported) under {Mac OS}, {Linux}, {OS/2}, {Windows 95},
	{SunOS}, and {Solaris}.

	{Home (http://www.cs.kun.nl/~clean/)}.  E-mail:
	<clean@cs.kun.nl>.  Mailing list: <clean-request@cs.kun.nl>.

	["Clean - A Language for Functional Graph Rewriting", T. Brus
	et al, IR 95, U Nijmegen, Feb 1987].

	["Concurrent Clean", M.C. van Eekelen et al, TR 89-18, U
	Nijmegen, Netherlands, 1989].

	(08 Nov 1995)

clean

	1. Used of hardware or software designs, implies "elegance in
	the small", that is, a design or implementation that may not
	hold any surprises but does things in a way that is reasonably
	intuitive and relatively easy to comprehend from the outside.
	The antonym is "grungy" or {crufty}.

	2. To remove unneeded or undesired files in a effort to reduce
	clutter: "I'm cleaning up my account."  "I cleaned up the
	garbage and now have 100 Meg free on that partition."

	(12 Dec 1994)

Cleanroom

	A software development approach aimed at producing software
	with the minimum number of errors.

	(12 Dec 1994)

CLEAR

	A {specification language} based on {initial algebra}s.

	["An Informal Introduction to Specification Using CLEAR",
	R.M. Burstall in The Correctness Problem in Computer Science,
	R.S. Boyer et al eds, Academic Press 1981, pp. 185-213].

	(03 Nov 1994)

clear box testing

	{white box testing}

CLEO

	Clear Language for Expressing Orders.

	A language developed by {ICL} in the 1960s and used until
	early 1972 on {Leo} III {mainframe}s.

	(03 Nov 1994)

CLHEP

	A {C++} {class library} for high energy physics
	{application}s.

	(12 Dec 1994)

CLI

	1. <operating system> {Command Line Interface}.

	2. <database, standard> {Call-Level Interface}.

	(04 Mar 1997)

CLiCC

	A {Common Lisp} to {C} compiler by Heinz Knutzen
	<hk@informatik.uni-kiel.de>, Ulrich Hoffman
	<uho@informatik.uni-kiel.de> and Wolfgang Goerigk
	<wg@informatik.uni-kiel.de>.  CLiCC is meant to be used as a
	supplement to existing {CLISP} systems for generating portable
	applications.  Target {C} code must be linked with CLiCC
	{run-time library} to produce an executable.

	Version 0.6.2 conforms to a subset of {Common Lisp} and {CLOS}
	called CL_0 or CommonLisp_0 and based on {CLtL1}.  It runs
	with {Lucid Lisp}, {AKCL} or {CLISP}.  Work on {CLtL2} and
	{ANSI-CL} conformance is in progress.

	{(ftp://ftp.informatik.uni-kiel.de/pub/kiel/apply/)}

	(04 Jan 1994)

click

	What the user does when he presses a button on a {mouse} or
	other {pointing device}.  This generates an event, also
	specifying the screen position, which is processed by the
	{window manager} or {application program}.

	(14 Mar 1995)

client

	<programming> A computer system or process that requests a
	service of another computer system or process (a "{server}")
	using some kind of {protocol} and accepts the server's
	responses.  A client is part of a {client-server} software
	architecture.

	For example, a {workstation} requesting the contents of a file
	from a {file server} is a client of the file server.

	(27 Oct 1997)

client-server

	<programming> A common form of {distributed system} in which
	software is split between {server} tasks and {client} tasks.
	A client sends requests to a server, according to some
	{protocol}, asking for information or action, and the server
	responds.

	This is analogous to a customer (client) who sends an order
	(request) on an order form to a supplier (server) who
	despatches the goods and an invoice (response).  The order
	form and invoice are part of the "protocol" used to
	communicate in this case.

	There may be either one centralised server or several
	distributed ones.  This model allows clients and servers to be
	placed independently on {nodes} in a {network}, possibly on
	different {hardware} and {operating systems} appropriate to
	their function, e.g. fast server/cheap client.

	Examples are the name-server/name-resolver relationship in
	{DNS}, the file-server/file-client relationship in {NFS} and
	the screen server/client application split in the {X Window
	System}.

	{Usenet} newsgroup: {news:comp.client-server}.

	["The Essential Client/Server Survival Guide", 2nd edition,
	1996].

	(25 Jan 1998)

client/server

	{client-server}

client-server model

	{client-server}

Client To Client Protocol

	<networking> (CTCP) A type of {protocol} created to allow
	structured data such as {font} information to be exchanged
	between users on {IRC}.  It is also used to send a query to a
	user.  The available CTCP commands include VERSION, FINGER,
	DCC CHAT, DCC SEND, TIME, PING, ECHO, CLIENTINFO.  Some
	commands are not available on some IRC {client} software.

	(12 Apr 1995)

C++Linda

	["The AUC C++Linda System", C. Callsen et al, U Aalborg, in
	Linda-Like Systems and Their Implementation, G. Wilson ed, U
	Edinburgh TR 91-13, 1991].

	(12 Dec 1994)

C-Linda

	The most widely used variant of {Linda}, with {C} as the base
	language.  It is available from Sci Comp Assocs
	<linda@sca.com>.

	(12 Dec 1994)

CLIP

	1. {Compiler Language for Information Processing}.

	2. {Common LISP in Parallel}.

CLiP

	A documentation extractor by Eric W. van Ammers
	<ammers@rcl.wau.nl>.  CLiP recognises a particular style of
	comments.  This style can be adjusted to suit virtually any
	source programming language and target documentation language.
	CLiP was designed to be compatible with {hypertext} systems.

	Version 2.1 runs on {MS-DOS}, {VAX}/{VMS} and {Unix}

	{(ftp://sun01.info.wau.nl/clip/)}

	(18 Nov 1993)

clipboard

	<operating system> A temporary memory area, used to transfer
	information within a document being edited or between
	documents or between programs.  The fundamental operations are
	"cut" which moves data from a document to the clipboard,
	"copy" which copies it to the clipboard, and "paste" which
	inserts the clipboard contents into the current document in
	place of the current selection.

	Different {Graphical User Interfaces} vary in how they handle
	the different types of data which a user might want to
	transfer via the clipboard, some (e.g. the {X Window System})
	support only plain text, others (e.g. {NEXTSTEP}) support
	arbitrarily typed data.

	(23 Aug 1996)

Clipper

	1. <hardware, cryptography> An {integrated circuit} which
	implements the {SkipJack} {algorithm}.  The Clipper is
	manufactured by the US government to encrypt telephone data.
	It has the added feature that it can be decrypted by the US
	government, which has tried to make the chip compulsory in the
	United States.  Phil Zimmerman (inventor of {PGP}) remarked,
	"This doesn't even pass the sniff test" (i.e. it stinks).

	{(http://www.wired.com/clipper/)}

	{news:alt.privacy.clipper}

	2. A compiled {dBASE} dialect from Nantucket Corp, LA.
	Versions: Winter 85, Spring 86, Autumn 86, Summer 87, 4.5
	(Japanese Kanji), 5.0.

	(25 Mar 1995)

CLIPS

	<language> {C Language Integrated Production System}.

clique

	<mathematics> A {maximal} {totally connected} {subgraph}.
	Given a {graph} with {nodes} N, a clique C is a {subset} of N
	where every node in C is directly connected to every other
	node in C (i.e. C is totally connected), and C contains all
	such nodes (C is maximal).  In other words, a clique contains
	all, and only, those nodes which are directly connected to all
	other nodes in the clique.

	[Is this correct?]

	(22 Sep 1996)

CLISP

	1. {Conversational LISP}.

	2. A {Common Lisp} implementation by Bruno Haible
	<haible@ma2s2.mathematik.uni-karlsruhe.de> of {Karlsruhe
	University} and Michael Stoll <michael@rhein.iam.uni-bonn.de>
	of {Munich University}, both in Germany.  CLISP includes an
	{interpreter}, {bytecode compiler}, {run-time library} and
	editor and needs only 1.5 MB of {RAM}.  German and English
	versions are available, French soon.

	Packages running in CLISP include {PCL} and {CLX} on {Unix}
	machines.  A native subset of {CLOS} is included.

	Version 1993/10/06 conforms to {CLtL1} and parts of {CLtL2}
	and is distributed under the {GNU} {General Public License}.

	CLISP runs on {Atari}, {Amiga}, {MS-DOS}, {OS/2}, {Linux},
	{Sun4}, {Sun386i}, {HP90000}/800 and others.

	{(ftp://ma2s2.mathematik.uni-karlsruhe.de/pub/lisp/clisp)}

	Mailing list: <listserv@ma2s2.mathematik.uni-karlsruhe.de>
	(send "subscribe clisp-list").

	(06 Oct 1993)

CLIX

	["Overview of a Parallel Object-Oriented Language CLIX",
	J. Hur et al, in ECOOP '87, LNCS 276, Springer 1987,
	pp.265-273].

	(16 Dec 1994)

CLM

	{Career Limiting Move}

CLNP

	{ConnectionLess Network Protocol}

clobber

	To overwrite, usually unintentionally: "I walked off the end
	of the array and clobbered the stack."

	Compare {mung}, {scribble}, {trash}, and {smash the stack}.

	(16 Dec 1994)

clock

	A processor's clock or one {cycle} thereof.  The relative
	execution times of instructions on a computer are usually
	measured by number of clock cycles rather than seconds.  One
	good reason for this is that {clock rate}s for various models
	of the computer may increase as technology improves, and it is
	usually the relative times one is interested in when
	discussing the {instruction set}.

	(16 Dec 1994)

clock rate

	The fundamental rate in {cycle}s per second at which a
	computer performs its most basic operations such as adding two
	numbers or transfering a value from one register to another.

	The clock rate of a computer is normally determined by the
	frequency of a crystal.  The original {IBM PC}, circa 1981,
	had a clock rate of 4.77 MHz (almost five million
	cycles/second).  As of 1995, {Intel}'s Pentium chip runs at
	100 MHz (100 million cycles/second).  The clock rate of a
	computer is only useful for providing comparisons between
	computer chips in the same processor family.  An {IBM PC} with
	an {Intel 486} {CPU} running at 50 MHz will be about twice as
	fast as one with the same CPU, memory and display running at
	25 MHz.  However, there are many other factors to consider
	when comparing different computers.  Clock rate should not be
	used when comparing different computers or different processor
	families.  Rather, some {benchmark} should be used.  Clock
	rate can be very misleading, since the amount of work
	different computer chips can do in one cycle varies.  For
	example, {RISC} CPUs tend to have simpler instructions than
	{CISC} CPUs (but higher clock rates) and {pipelined}
	processors execute more than one instruction per cycle.

	(12 Jan 1995)

clock speed

	{clock rate}

clone

	1. An exact duplicate: "Our product is a clone of their
	product."  Implies a legal reimplementation from documentation
	or by reverse-engineering.  Also connotes lower price.

	2. A shoddy, spurious copy: "Their product is a clone of our
	product."

	3. A blatant ripoff, most likely violating copyright, patent,
	or trade secret protections: "Your product is a clone of my
	product."  This use implies legal action is pending.

	4. "PC clone:" a PC-BUS/{ISA} or {EISA}-compatible 80x86-based
	microcomputer (this use is sometimes spelled "klone" or
	"PClone").  These invariably have much more bang per buck than
	the {IBM} archetypes they resemble.

	5. In the construction "Unix clone": An {operating system}
	designed to deliver a {Unix}-like environment without Unix
	licence fees or with additional "mission-critical" features
	such as support for {real-time} programming.

	6.  <chat> A {clonebot}.

	(16 Dec 1994)

clone-and-hack coding

	A {DEC}ism for {case and paste}.

	(16 Dec 1994)

clonebot

	<chat> (Or "clone") A {bot} meant to replicate itself en masse
	on a {talk} network (generally {IRC}).  A bot appears on the
	network as several {agents}, and then carries out some task,
	typically that of {flood}ing another user.

	Compare {ghost}.

	(07 Apr 1997)

CLOS

	{Common LISP Object System}

closed-box testing

	{functional testing}

closed set

	<mathematics> A set S is closed under an operator * if x*y is
	in S for all x, y in S.

	(16 Dec 1994)

closed term

	<theory> A term with no {free variable}s.

	(16 Dec 1994)

Clos network

	A {network} topology.

	[What topology?]

	(16 Dec 1994)

closure

	1. <programming> In a {reduction system}, a closure is a data
	structure that holds an expression and an environment of
	variable bindings in which that expression is to be evaluated.
	The variables may be local or global.  Closures are used to
	represent unevaluated expressions when implementing
	{functional programming languages} with {lazy evaluation}.  In
	a real implementation, both expression and environment are
	represented by pointers.

	A {suspension} is a closure which includes a flag to say
	whether or not it has been evaluated.  The term "{thunk}" has
	come to be synonymous with "closure" but originated outside
	{functional programming}.

	2. <theory> In {domain theory}, given a {partially ordered
	set}, D and a subset, X of D, the upward closure of X in D is
	the union over all x in X of the sets of all d in D such that
	x <= d.  Thus the upward closure of X in D contains the
	elements of X and any greater element of D.  A set is "upward
	closed" if it is the same as its upward closure, i.e. there is
	no d greater than an element which is not an element.  The
	downward closure (or "left closure") is similar but with d <=
	x and a downward closed set is one for which there is no d
	less than an element which is not an element.

	("<=" is written in {LaTeX} as {\subseteq} and the upward
	closure of X in D is written \uparrow_{D} X).

	(16 Dec 1994)

closure conversion

	The transformation of {continuation passing style} code so
	that the only {free variables} of functions are names of other
	functions.

	See also Lambda lifting.

	(16 Dec 1994)

Clover

	<communications, protocol> A {protocoll} similar to {packet
	radio} or {AMTOR}.

	(03 Mar 1995)

clover key

	The {Macintosh} {feature key}.

	(16 Dec 1994)

CLP

	1. {Cornell List Processor}.

	2. {Constraint Logic Programming}.

CLP*

	A derivative of {Constraint Logic Programming} (CLP).

	["CLP* and Constraint Abstraction", T. Hickey, 16th POPL,
	pp. 125-133, 1989].

	(01 Nov 1994)

CLP(R)

	Constraint Logic Programming (Real).

	A {constraint logic programming} language with {real}
	arithmetic {constraint}s developed by Joxan Jaffar
	<joxan@watson.ibm.com> of {IBM} {TJWRC} and S. Michaylov of
	{Monash University} in 1986.

	The implementation contains a {byte-code compiler} and a
	built-in constraint solver which deals with linear arithmetic
	and contains a mechanism for delaying {nonlinear} constraints
	until they become linear.  Since CLP(R) is a superse of
	{PROLOG}, the system is also usable as a general-purpose
	{logic programming} language.  There are also powerful
	facilities for {meta programming} with constraints.

	Significant CLP(R) applications have been published in diverse
	areas such as molecular biology, finance and physical
	modelling.

	Version 1.2 for {Unix}, {MS-DOS} and {OS/2} is available from
	the authors.  It is free for academic and research purposes.

	E-mail: Roland Yap <roland@bruce.cs.monash.edu.au>.

	["The CLP(R) Language and System", J. Jaffar et al, IBM RR
	RC16292 (#72336) (Nov 1990)].

	(14 Oct 1992)

CLP(sigma*)

	A {constraint logic programming} language with {regular set}s.

	["CLP(sigma*): Constraint Logic Programming with Regular
	Sets", C. Walinsky, Proc ICLP, 1989, pp.181-190].

	(16 Dec 1994)

CLR

	{Consortium for Lexical Research}

CLtL1

	A report on {Common LISP}:

	["Common LISP: The Language", Guy L. Steele, Digital Press
	1984, ISBN 0-932376-41-X].

	(16 Dec 1994)

CLtL2

	{Aluminum Book}

CLU

	CLUster.

	An {object-oriented} programming language developed at {MIT}
	by Liskov et al in 1974-1975.

	CLU is an {object-oriented} language of the {Pascal} family
	designed to support data abstraction, similar to {Alphard}.
	It introduced the {iterator}: a {coroutine} yielding the
	elements of a data object, to be used as the sequence of
	values in a 'for' loop.

	A CLU program consists of separately compilable procedures,
	{cluster}s and iterators, no nesting.  A cluster is a module
	naming an abstract type and its operations, its internal
	representation and implementation.  Clusters and iterators may
	be generic.  Supplying actual constant values for the
	parameters instantiates the {module}.

	There are no {implicit type conversion}s.  In a cluster, the
	explicit type conversions 'up' and 'down' change between the
	abstract type and the representation.  There is a universal
	type 'any', and a procedure force[] to check that an object is
	a certain type.  Objects may be mutable or {immutable}.

	{Exception}s are raised using 'signal' and handled with
	'except'.  {Assignment} is by sharing, similar to the sharing
	of data objects in {Lisp}.  Arguments are passed by
	{call-by-sharing}, similar to {call-by-value}, except that the
	arguments are objects and can be changed only if they are
	mutable.  CLU has {own variable}s and multiple assignment.

	See also {Kamin's interpreters}, {clu2c}.

	["CLU Reference Manual", Barbara Liskov et al, LNCS 114,
	Springer 1981].

	E-mail: Paul R. Johnson <prj@pm-prj.lcs.mit.edu>.

	{Versions for Sun and VAX/VMS
	(ftp://pion.lcs.mit.edu/pub/clu/)}.  {Portable version
	(ftp://mintaka.lcs.mit.edu/pub/dcurtis/)}.

	(16 Dec 1994)

clu2c

	A {CLU} to {C} compiler.

	{(ftp://ftp.is.titech.ac.jp:/pub/clu2c/)}

	E-mail: <clu2c-report@is.titech.ac.jp>.

	(16 Dec 1994)

cluster

	<file system> An elementary unit of allocation of a disk made
	up of one or more physical {blocks}.

	A {file} is made up of a whole number of possibly
	non-contiguous clusters.  The cluster size is a tradeoff
	between space efficiency (the bigger is the cluster, the
	bigger is on the average the wasted space at the end of each
	file) and the length of the {FAT}.

	(04 Nov 1996)

Cluster 86

	A distributed {object-oriented} language by L. Shang
	<lshang@inf.ethz.ch> of {Nanjing University}, ca. 1986.  A
	cluster is a metatype.  There are versions for {MS-DOS} and
	{Unix}.

	["Cluster: An Informal Report", L. Shang, SIGPLAN Notices
	26(1):57-76 (Jan 1991)].

	(21 Dec 1994)

clustergeeking

	<jargon> /kluh'st*r-gee"king/ ({CMU}) Spending more time at a
	computer cluster doing CS homework than most people spend
	breathing.

	(21 Dec 1994)

clustering

	{cluster}

CLUT

	{colour palette}

CLX

	<library, graphics> The {Common Lisp} library providing an
	interface to the {X Window System}, equivalent to {Xlib}.  It
	works with {CMU Common Lisp}.

	Version 5.01

	{(ftp://export.lcs.mit.edu/contrib/CLX.R5.01.tar.Z)}

	E-mail: <bug-clx@expo.lcs.mit.edu> (bug reports).

	(26 Aug 1992)

CM

	{Configuration Management}

CMA

	{Concert Multithread Architecture} from {DEC}.

CMAY

	["A Microkernel for Distributed Applications", R. Bagrodia et
	al, Proc 5th Intl Conf Distrib Comp Sys IEEE 1985,
	pp. 140-149].

	(21 Dec 1994)

CMC

	1. <messaging> {Computer Mediated Communication}.

	2. <hardware> {Common Mezzanine Card}.

CMIP

	{Common Management Information Protocol}

CMIS

	{Common Management Information Services}

CML

	1. A {query language}.

	["Towards a Knowledge Description Language", A. Borgida et al,
	in On Knowledge Base Management Systems, J. Mylopoulos et al
	eds, Springer 1986].

	2. {Concurrent ML}.

	(21 Dec 1994)

CMOS

	Complementary metal oxide semiconductor.

	A semiconductor fabrication technology using a combination of
	n- and p-doped semiconductor material to achieve low power
	dissipation.  The idea is that any path through a gate through
	which current can flow includes both n and p type transistors.
	Only one type is turned on in any stable state so there is no
	static power dissipation and current only flows when a gates
	switches in order to charge the parasitic capacitance.

	(21 Dec 1994)

CMS

	A {code management} system from {DEC}.

	(21 Dec 1994)

CMS-2

	A general purpose language used for command and control
	applications in the US Navy.  Variants: CMS-2M and CMS-2Y.

	["CMS-2Y Programmers Reference Manual", M-5049, PDCSSA, San
	Diego CA (Oct 1976)].

	(21 Dec 1994)

CMU

	{Carnegie Mellon University}

CMU CL

	{CMU Common Lisp}

CMU Common Lisp

	(CMU CL) A {public domain} "industrial strength" {Common Lisp}
	programming environment.  Many of the {X3J13} changes have
	been incorporated into CMU CL.  Wherever possible, this has
	been done so as to transparently allow use of either {CLtL1}
	or proposed {ANSI CL}.  Probably the new features most
	interesting to users are {SETF} functions, {LOOP} and the
	{WITH-COMPILATION-UNIT} {macro}.

	The new CMU CL compiler is called {Python}.

	Version 17c includes an {incremental compiler}, profiler,
	run-time support, documentation, an editor and a debugger.  It
	runs under {Mach} on {SPARC}, {MIPS} and {IBM PC RT} and under
	{SunOS} on {SPARC}.

	{(ftp://lisp-sun1.slisp.cs.cmu.edu/pub/)}

	E-mail: <slisp@cs.cmu.edu>.

	(18 Nov 1993)

CMVC

	{Configuration Management Version Control} from {IBM}.

CMYK

	<graphics> cyan, magenta, yellow, key.

	A system for describing colours by giving the quantity of each
	secondary colour (cyan, magenta, yellow), along with the "key"
	(black).  The CMYK system is used for printing.  For mixing of
	pigments, it is better to use the secondary colours, since
	they mix subtractively instead of additively.  The secondary
	colours of light are cyan, magenta and yellow, which
	correspond to the primary colours of pigment (blue, red and
	yellow). In addition, although black could be obtained by
	mixing these three in equal proportions, in four-colour
	printing it always has its own ink.  This gives the CMYK
	model.  The K stands for "Key' or 'blacK,' so as not to cause
	confusion with the B in {RGB}.

	Alternative systems are {RGB} and {HSV}.

	(22 Dec 1994)

CMZ

	A portable interactive {code management} system from {CodeME}
	S.A.R.L in use in the high-energy physics community.

	(22 Dec 1994)

CNAME

	The {canonical name} query type for {Domain Name System}.
	This query asks a DNS {server} for a {host}'s official
	{hostname}.

	(22 Dec 1994)

CNC

	{Collaborative Networked Communication}

CNET

	Centre national d'Etudes des Telecommunications.  The French
	national telecommunications research centre at Lannion.

	(22 Dec 1994)

CNI

	{Coalition for Networked Information}

CNN

	<architecture> {Cellular Neural Network}.

CNRI

	Corporation for National Research Initiatives.

	A US research and development organisation in information
	processing technology.

	Address: Reston, VA, USA.

	(22 Dec 1994)

CO2

	An {object-oriented} {database} language combining {C} and
	{O2}, from GIP Altair, Versailles, France.

	[Francois Bancilon et al, in Advances in Object-Oriented
	Database Systems, K.R. Dittrich ed, LNCS 334, Springer 1988].

	(22 Dec 1994)

Coad/Yourdon

	<programming> An {object-oriented analysis} and design
	{methodology}, developed by {edward Yourdon} and Peter Coad.

	(07 Apr 1995)

COALA

	["COALA: The Object Code of the Compiler Producing System", S.
	Kruszewski et al, MERA, Warsaw 1974].

	(22 Dec 1994)

coalesced sum

	<theory> (Or "smash sum") In {domain theory}, the coalesced
	sum of {domain}s A and B, A (+) B, contains all the
	non-{bottom} elements of both domains, tagged to show which
	part of the sum they come from, and a new {bottom} element.

	 D (+) E = { bottom(D(+)E) }
		   U { (0,d) | d in D, d /= bottom(D) }
		   U { (1,e) | e in E, e /= bottom(E) }

	The bottoms of the constituent domains are coalesced into a
	single bottom in the sum.  This may be generalised to any
	number of domains.

	The ordering is

		bottom(D(+)E) <= v  For all v in D(+)E

		(i,v1) <= (j,v2)    iff i = j & v1 <= v2

	"<=" is usually written as {LaTeX} \sqsubseteq and "(+)" as
	{LaTeX} \oplus - a "+" in a circle.

	(22 Dec 1994)

Coalition for Networked Information

	(CNI) A consortium formed by American Research Libraries,
	CAUSE, and EDUCOM to promote the creation of, and access to,
	information resources in networked environments in order to
	enrich scholarship and enhance intellectual productivity.

	(22 Dec 1994)

coarse grain

	{granularity}

COAST

	{Cache On A STick}

coax

	{coaxial cable}

coaxial cable

	<hardware> A kind of cable with a solid central conductor
	surrounded by insulator, in turn surrounded by a cylindrical
	shield woven from fine wires.  It is used to carry high
	frequency signals such as video or radio.  The shield is
	usually connected to electrical ground to reduce electrical
	interference.

	(28 Mar 1995)

COBOL

	{COmmon Business Oriented Language}

COBOL-1961 Extended

	A short-lived separation of {COBOL} specifications.

	[Sammet 1969, p. 339].

	(28 Oct 1994)

COBOL fingers

	/koh'bol fing'grz/ Reported from Sweden, a (hypothetical)
	disease one might get from coding in {COBOL}.  The language
	requires code verbose beyond all reason (see {candygrammar});
	thus it is alleged that programming too much in COBOL causes
	one's fingers to wear down to stubs by the endless typing.

	(22 Dec 1994)

COBRA

	Do you mean {CORBA}?  Or is there a COBRA?

	(10 May 1996)

cobweb site

	<jargon, World-Wide Web> A {World-Wide Web} site that hasn't
	been updated for a long time.  A dead {web page}.

	(29 Apr 1997)

Cocktail

	{GMD Toolbox for Compiler Construction}

CoCo

	<computer> The {Tandy} Color Computer with a Motorola
	{MC6809E} {CPU}.  The {Dragon} is a CoCo clone.  The CoCo was
	as powerful as the {IBM XT} at the time it was made, and could
	run {OS-9}.

	(12 Feb 1997)

Cocol

	{Coco Language}

Coco Language

	<language> (Cocol) A language for writing left-attributed {LL1
	grammars}, used as the input language for the {Coco} LL1
	{parser generator}, which produces {Modula-2 table-driven
	parsers} as output.

	Cocol-2 is a version for the Coco-2 generator.  {Cocol/R} is
	an improvement over the original Cocol and Cocol-2.

	{(ftp://neptune.inf.ethz.ch/)}

	["A Compiler Generator for Microcomputers", P. Rechenberg et
	al, P-H 1989].

	(09 Dec 1997)

Cocol/R

	<language> (Coco Language) A language for writing
	left-attributed {LL1 grammars}, used as the input language for
	the {Coco/R} LL1 {parser generators}, which produce {C++},
	{Pascal}, {Modula-2}, {Java} or {Oberon} {recursive-descent
	parsers} and associated {scanners} as output.

	Cocol/R is an improvement over the original {Cocol} and
	Cocol-2.

	[Moessenboeck, H., "A Generator for Fast Compiler Front-Ends",
	Report 127, Dept. Informatik, ETH Zurich, 1990].

	(09 Dec 1997)

COCOMO

	{Constructive Cost Model}

Coco/R

	<tool> A program by Hanspeter Moessenboeck
	<moessenboeck@ssw.uni-linz.ac.at> which generates {recursive
	descent parsers} and their associated {scanners} from
	{attributed grammars} (LL1).  Coco/R can {bootstrap} itself to
	generate its own driver, parser, scanner and semantic
	evaluator from an attributed grammar included in the
	distribution.

	Versions exist for generating {Oberon}, {Modula-2}, {Pascal},
	{C} and {C++} source, and a {Java} implementation is about to
	be released.  Modula-2 versions exist as self extracting .EXE
	files for {MS-DOS}, and as tar.Z files for {Unix}.

	Version: 1.34 (13 Oct 1994)

	Coco/R was ported to {Modula-2} by Marc Brandis, Christof
	Brass and Pat Terry.

	{(ftp://ftp.ssw.uni-linz.ac.at/pub/Coco)}.

	Mail server: <server@ftp.psg.com> (Subject: send
	pub/modula-2/coco/).

	E-mail: Pat Terry <cspt@cs.ru.ac.za> (Modula/Pascal versions),
	Hanspeter Moessenboeck <moessenboeck@ssw.uni-linz.ac.at>
	(Oberon, Java versions), Frankie Arzu <farzu@uvg.edu.gt> (C,
	C++ versions).

	["A compiler generator for microcomputers", by Rechenberg and
	Mossenbock, Prentice Hall, 1989, 0-13-155136-1].

	[Moessenboeck, H., "A Generator for Fast Compiler Front-Ends",
	Report 127, Dept. Informatik, ETH Zurich, 1990].

	[Terry, P.D., "Compilers and Compiler Generators: An
	Introduction with C++", ITCP: ISBN 1-85032-298-8].

	(09 Dec 1997)

CODASYL

	{Conference On DAta SYstems Languages}

	{Home (http://www.cbi.umn.edu/inv/codasyl.html)}.

	[Summary?]

	(18 Jun 1997)

Codd's First Normal Form

	{Normal Form}

code

	<jargon, programming> Programs, either {source code} or
	{machine code}.

	(13 Jan 1996)

Code 2.0

	<language> A large-grain {dataflow} language with a graphical
	interface for users to draw communication structure.

	{Home (http://www.cs.utexas.edu/users/code)}

	E-mail: Emery Berger <emery@cs.utexas.edu>.

	["The CODE 2.0 Parallel Programming Language", P. Newton et
	al, Proc ACM Intl Conf on Supercomput, Jul 1992].

	(13 Jan 1996)

CODEC

	{coder/decoder}

CodeCenter

	(Formerly {Saber-C}) A proprietary software development
	environment for {C} programs, offering an integrated toolkit
	for developing, testing, debugging and maintainance.

	(23 Dec 1994)

Code Division Multiple Access

	(CDMA) (Or "spread spectrum") A form of {multiplexing} where
	the transmitter encodes the signal using a {pseudo-random}
	sequence which the reciever also knows and can use to decode
	the received signal.  Each different random sequence
	corresponds to a different communication channel.

	{Motorola} uses CDMA for digital cellular phones.

	(15 Feb 1995)

code division multiplexing

	{Code Division Multiple Access}

code grinder

	A {suit}-wearing minion of the sort hired in legion strength
	by banks and insurance companies to implement payroll packages
	in {RPG} and other such unspeakable horrors.  In its native
	habitat, the code grinder often removes the suit jacket to
	reveal an underplumage consisting of button-down shirt (starch
	optional) and a tie.  In times of dire stress, the sleeves (if
	long) may be rolled up and the tie loosened about half an
	inch.  It seldom helps.  The {code grinder}'s milieu is about
	as far from hackerdom as one can get and still touch a
	computer; the term connotes pity.

	Used of or to a {hacker}, this term is a really serious slur
	on the person's creative ability; it connotes a design style
	characterised by primitive technique, rule-boundedness, {brute
	force} and utter lack of imagination.

	See {Real World}.  Compare {card walloper}.  Contrast {real
	programmer}.

	(11 Nov 1994)

code management

	A source code management system helps program developers keep
	track of version history, releases, parallel versions etc.
	There are several in popular use.

	(23 Dec 1994)

code police

	(By analogy with George Orwell's "Thought Police" in "1984") A
	mythical team of Gestapo-like storm troopers that might burst
	into one's office and arrest one for violating programming
	style rules.  May be used either seriously, to underline a
	claim that a particular style violation is dangerous, or
	ironically, to suggest that the practice under discussion is
	condemned mainly by anal-retentive {weenie}s.  "Dike out that
	{goto} or the code police will get you!"  The ironic usage is
	perhaps more common.

	(08 Dec 1994)

coder/decoder

	<communications> (CODEC) An {integrated circuit} or other
	electronic device combining the circuits needed to convert
	digital signals to and from analog ({Pulse Code Modulation})
	form.

	(22 Jul 1997)

codes

	1. <jargon> Programs.  This usage is common among scientific
	computing people who use {supercumputer}s for heavy-duty
	{number crunching}.

	2. <cryptography> Something to do with {cryptography}.

	(28 Oct 1994)

C-odeScript

	<language> A {Liana} interpreter, embeddable in {C} and {C++}
	programs.

	(09 Mar 1995)

code segment

	<processor, operating system> ({Intel 8086} CS) The area of
	memory containing the {machine code} instructions of an
	executing {program}.  {Unix}, confusingly, calls this the
	{text segment}.  The code segment of a program may be shared
	between multiple processes running that code so long as none
	of them tries to modify it.

	Other segments are the {data segment} and, in Unix, the {bss
	segment}.

	(21 Dec 1996)

code walk

	<programming> Stepping through {source code} as part of a
	review.

	(02 Apr 1997)

codewalker

	<programming, tool> A program component that traverses other
	programs for a living.  {Compilers} have codewalkers in their
	front ends; so do {cross-reference generators} and some
	database front ends.  Other utility programs that try to do
	too much with source code may turn into codewalkers.  As in
	"This new 'vgrind' feature would require a codewalker to
	implement."

	(23 Dec 1994)

CODIL

	COntext Dependent Information Language.

	An early language for non-numerical business problems.

	["CODIL, Part1.  The Importance of Flexibility", C.F. Reynolds
	et al, Computer J 14(3):217-220 (May 1971)].

	(23 Dec 1994)

codomain

	The set of values or type containing all possible results of a
	function.  The codomain of a function f of type D -> C is C.
	A function's {image} is a subset of its codomain.

	(23 Dec 1994)

coefficient of X

	Hackish speech makes heavy use of pseudo-mathematical
	metaphors.  Four particularly important ones involve the terms
	"coefficient", "factor", "index", and "quotient".  They are
	often loosely applied to things you cannot really be
	quantitative, but there are subtle distinctions among them
	that convey information about the way the speaker mentally
	models whatever he or she is describing.

	"Foo factor" and "foo quotient" tend to describe something for
	which the issue is one of presence or absence.  The canonical
	example is {fudge factor}.  It's not important how much you're
	fudging; the term simply acknowledges that some fudging is
	needed.  You might talk of liking a movie for its silliness
	factor.  Quotient tends to imply that the property is a ratio
	of two opposing factors: "I would have won except for my luck
	quotient."  This could also be "I would have won except for
	the luck factor", but using *quotient* emphasises that it was
	bad luck overpowering good luck (or someone else's good luck
	overpowering your own).

	"Foo index" and "coefficient of foo" both tend to imply that
	foo is, if not strictly measurable, at least something that
	can be larger or smaller.  Thus, you might refer to a paper or
	person as having a "high bogosity index", whereas you would be
	less likely to speak of a "high bogosity factor".  "Foo index"
	suggests that foo is a condensation of many quantities, as in
	the mundane cost-of-living index; "coefficient of foo"
	suggests that foo is a fundamental quantity, as in a
	coefficient of friction.  The choice between these terms is
	often one of personal preference; e.g. some people might feel
	that bogosity is a fundamental attribute and thus say
	"coefficient of bogosity", whereas others might feel it is a
	combination of factors and thus say "bogosity index".

	(29 Nov 1994)

coercion

	{implicit type conversion}

COFF

	{Common Object File Format}

COGENT

	COmpiler and GENeralized Translator.

	A {compiler} writing language with pattern-directed string and
	list processing features, for {CDC 3600} and {CDC} 3800.  A
	program consists of {production}s defining a {context-free}
	language, plus analysis and synthesis function generators.

	["COGENT Programming Manual", J.C. Reynolds, ANL-7022, Argonne,
	Mar 1965].

	[Sammet 1969, p.638].

	["An Introduction to the COGENT System", J.C. Reynolds, Proc
	ACM 20th Natl Conf, 1965].

	(23 Dec 1994)

Cogent Prolog

	A full Edinburgh-standard {Prolog} with debugger, {listener},
	{DCG}, many built-ins, text windows, support for {modules} and
	support for both 16-bit and 32-bit {protected mode}.

	E-mail: Dennis C Merritt <amziod@world.std.com>.

Cognitech

	A French software house specialising in {artificial
	intelligence}.

	(04 Jan 1995)

cognitive architecture

	<architecture> A computer architecure involving
	{non-deterministic}, multiple {inference} processes, as found
	in {neural networks}.  Cognitive architectures model the human
	brain and contrast with single processor computers.

	The term might also refer to software architectures,
	e.g. {fuzzy logic}.

	[Origin?  Better definition?  Reference?]

	(29 Nov 1995)

COGO

	A subsystem of {ICES} aimed at coordinate geometry problems
	in Civil Engineering.

	["Engineer's Guide to ICES COGO I", R67-46, CE Dept MIT (Aug
	1967)].

	(04 Jan 1995)

Coherent Parallel C

	A {data parallel} language.

	["Coherent Parallel C", E.  Felten et al in Third Conf on
	Hypercube Concurrent Computers and Appls, ACM, 1988,
	pp.440-450].

	(04 Jan 1995)

COHESION

	{DEC}'s {CASE} environment.

	[Details?].

	(04 Jan 1995)

COIF

	{FORTRAN} with interactive graphic extensions for circuit
	design, on {UNIVAC 1108}.

	["An Interactive Software System for Computer-Aided Design: An
	Application to Circuit Projects", CACM 9(13) (Sep 1970)].

	(04 Jan 1995)

cokebottle

	/kohk'bot-l/ Any very unusual character, particularly one you
	can't type because it it isn't on your keyboard.  {MIT} people
	used to complain about the "control-meta-cokebottle" commands
	at {SAIL}, and {SAIL} people complained about the
	"{altmode}-altmode-cokebottle" commands at {MIT}.  After the
	demise of the {space-cadet keyboard}, "cokebottle" faded away
	as serious usage, but was often invoked humorously to
	describe an (unspecified) weird or non-intuitive keystroke
	command.  It may be due for a second inning, however.  The
	{OSF}/{Motif} {window manager}, "{mwm}", has a reserved
	keystroke for switching to the default set of keybindings and
	behaviour.  This keystroke is (believe it or not)
	"control-meta-bang" (see {bang}).  Since the exclamation point
	looks a lot like an upside down Coke bottle, {Motif} hackers
	have begun referring to this keystroke as "cokebottle".

	See also {quadruple bucky}.

	(04 Jan 1995)

COLASL

	An early system for numerical problems on the {IBM 7030}.  It
	used a special character set for input of natural mathematical
	expressions.

	[Sammet 1969, pp. 265-271].

	(04 Jan 1995)

COLD

	1. <language> A {sugar}ed version of {COLD-K}.

	2. <storage> {Computer Output to Laser Disc}.

	(04 Jan 1995)

cold boot

	<operating system> A {boot} from {power off}.

	Contrast {warm boot}.

	(27 Nov 1995)

COLD-K

	Formal design {kernel language} for describing (sequential)
	software systems in intermediate stages of their design.

	["An Introduction to COLD-K", H.B.M. Jonkers in Algebraic
	Methods: Theory, Tools and Applications, M. Wirsing et al eds,
	LNCS 394, Springer 1989, pp. 139-205].

	(04 Jan 1995)

COLINGO

	Compile On-LINe and GO.

	An english-like query system from {MITRE Corp}.  for the {IBM
	1401}.

	["The COLINGO System Design Philosophy", Information System
	Sciences, Proc Second Congress, 1965].

	[Sammet 1969, p. 664].

	(04 Jan 1995)

collision

	1. <networking> When two {hosts} transmit on a {network} at
	once causing their {packets} to collide and corrupt each
	other.

	See {collision detection}.

	2. <programming> {hash collision}.

	(06 Jan 1995)

collision detection

	<networking> A class of methods for sharing a data
	transmission medium in which hosts transmit as soon as they
	have data to send and then check to see whether their
	transmission has suffered a {collision} with another host's.

	If a collision is detected then the data must be resent.  The
	resending algorithm should try to minimise the chance that two
	hosts's data will repeatedly collide.  For example, the
	{CSMA/CD} protocol used on {Ethernet} specifies that they
	should then wait for a random time before re-transmitting.

	See also {backoff}.

	This contrasts with {slotted protocols} and {token passing}.

	(18 Mar 1997)

colon

	<character> ":".  {ASCII} character 58.  Common names:
	{ITU-T}: colon.  Rare: dots; {INTERCAL}: two-spot.

	(25 Sep 1995)

color

	<spelling> American spelling of {colour}.

	(13 Dec 1996)

Color Graphics Adapter

	<hardware, graphics> (CGA) One of {IBM}'s earliest hardware
	video {display standards} for use in {IBM PC}s.  CGA can
	display 80*25 or 40*25 text in 16 colors, 640*200 {pixels}
	graphics in 2 colors or 320*200 in 4 colors (IBM PC video
	modes 0-6).  It is now obsolete.

	(11 Nov 1995)

color model

	{colour model}

Colossus

	(A huge and ancient statue on the Greek island of Rhodes).

	1. The Colossus and Colussus Mark II computers used by {Alan
	Turing} at {Bletchley Park}, UK during the Second World War to
	crack the "Tunny" cipher produced by the Lorenz SZ 40 and SZ
	42 machines.  Colossus was a semi-fixed-program {vacuum tube}
	calculator.

	["Breaking the enemy's code", Glenn Zorpette, IEEE Spectrum,
	September 1987, pp. 47-51.]

	2. The computer in the film "Colossus: The Forbin Project".
	Forbin is the designer of an incredibly sophisticated computer
	that will run all of America's nuclear defences.  Shortly
	after being turned on, it detects the existence of Goliath,
	the Soviet counterpart, previously unknown to US Planners.
	Both computers insist that they be linked, and after taking
	safeguards to preserve confidential material, each side agrees
	to allow it.  As soon as the link is established the two
	become a new Super computer and threaten the world with the
	immediate launch of nuclear weapons if they are detached.
	Colossus begins to give its plans for the management of the
	world under it's guidance.  Forbin and the other scientists
	form a technological resistance to Colossus which must operate
	underground.

	[John L. Vogel <JVOGEL@NHQVAX.hq.nasa.gov>]

	{The Internet Movie Database
	(http://www.msstate.edu/M/title-exact?Colossus:%20The%20Forbin%20Project)}.

	[Date?]

	(24 Mar 1996)

colour

	<graphics> (US "color") Colours are usually represented as
	{RGB} triples.  A colour {image} may be stored as three
	separate images, one for each of red, green, and blue, or each
	{pixel} may encode the colour using separate {bitfield}s for
	each colour component, or each pixel may store a logical
	colour number which is looked up in a hardware {colour
	palette} to find the colour to display.

	Printers may use the {CMYK} or {Pantone} representations of
	colours as well as RGB.

	(24 Mar 1996)

colour look-up table

	{colour palette}

colour palette

	<graphics, hardware> (colour look-up table, CLUT) A device
	which converts the {logical} colour numbers stored in each
	{pixel} of {video} memory into {physical} colours, normally
	represented as {RGB} triplets, that can be displayed on the
	{monitor}.  The palette is simply a block of fast {RAM} which
	is addressed by the logical colour and whose output is split
	into the red, green and blue levels which drive the actual
	display (e.g. {CRT}).

	The number of entries (logical colours) in the palette is the
	total number of colours which can appear on screen
	simultaneously.  The width of each entry determines the number
	of colours which the palette can be set to produce.

	A common example would be a palette of 256 colours
	(i.e. addressed by eight-bit pixel values) where each colour
	can be chosen from a total of 16.7 million colours (i.e. eight
	bits output for each of red, green and blue).

	Changes to the palette affect the whole screen at once and can
	be used to produce special effects which would be much slower
	to produce by updating pixels.

	(03 Jun 1997)

Columbia AppleTalk Package

	(CAP) An implementation of {Apple Computer}'s {AppleTalk}
	{protocol}s for {Unix} {4.2BSD} and its derivatives, from
	{Columbia University}.  There are two different {LAP} delivery
	mechanisms for: {IPTalk} and {Ethertalk} (possibly using
	{UAB}).

	CAP supports the following {AppleTalk} {protocol}s: {AppleTalk
	Transaction Protocol} (ATP), {Name Binding Protocol} (NBP),
	{Printer Access Protocol} (PAP), {AppleTalk Session Protocol}
	(ASP), {AppleTalk Filing Protocol} (AFP) client side.  In
	addition, the {Datagram Delivery Protocol} (DDP) and {Zone
	Information Protocol} (ZIP) are partially available.  The
	structure of the {Internet Appletalk Bridge} software makes it
	impossible to provide full DDP service.  Only the Get Zone
	List ATP ZIP command is implemented for ZIP.

	(10 Jan 1995)

Column Address Strobe

	<hardware> (CAS) A signal sent from a processor (or {memory
	controller}) to a {dynamic random access memory} (DRAM) (qv)
	circuit to indicate that the column {address lines} are valid.

	(17 Oct 1996)

COM

	1. <programming> {Component Object Model}.

	2. <programming> {Common Object Model}.

	3. <storage> {Computer Output on Microfilm}.

	(08 Jan 1998)

COMAL

	{COMmon Algorithmic Language}

combination

	1. <mathematics> A {set} containing a certain number of
	objects selected from another set.

	The number of combinations of r objects chosen from a set of n
	is

		n C r = n! / ((n-r)! r!)

	where "n C r" is normally with n and r as subscripts or as n
	above r in parentheses.

	See also {permutation}.

	2. <reduction> In the theory of {combinator}s, a combination
	denotes an expression in which {function application} is the
	only operation.

	(10 Apr 1995)

combinator

	A function with no {free variable}s.  A term is either a
	constant, a variable or of the form  A B  denoting the
	{application} of term A (a function of one argument) to term
	B.  {Juxtaposition} associates to the left in the absence of
	parentheses.  All combinators can be defined from two basic
	combinators - S and K.  These two and a third, I, are defined
	thus:

		S f g x	= f x (g x)
		K x y	= x
		I x	= x		= S K K x

	{Combinatory logic} is equivalent to the {lambda-calculus} but
	a lambda expression of size O(n) is equivalent to a
	combinatorial expression of size O(n^2).

	Other combinators were added by {David Turner} in 1979 when he
	used combinators to implement {SASL}:

		B f g x = f (g x)
		C f g x = f x g
		S' c f g x = c (f x) (g x)
		B* c f g x = c (f (g x))
		C' c f g x = c (f x) g

	See {fixed point combinator}, {curried function},
	{supercombinator}s.

	(06 Dec 1994)

combinatory logic

	A system for reducing the operational notation of {logic},
	mathematics or a {functional language} to a sequence of
	modifications to the input data structure.  First introduced
	in the 1920's by {Schoenfinkel}.  Re-introduced independently
	by {Haskell Curry} in the late 1920's (who quickly learned of
	Schoenfinkel's work after he had the idea).  Curry is really
	responsible for most of the development, at least up until
	work with Feys in 1958.

	See {combinator}.

	(05 Jan 1995)

Comdex

	A computer show that is held twice yearly, once in the spring
	(in Atlanta) and once in autumn (in Las Vegas).  Comdex is a
	major show during which new releases of software and hardware
	are made.  {Microsoft}, for example, often annouces its
	products at Comdex.

	(11 Jan 1995)

COME FROM

	A semi-mythical language construct dual to the "go to"; "COME
	FROM" <label> would cause the referenced label to act as a
	sort of {trapdoor}, so that if the program ever reached it
	control would quietly and {automagically} be transferred to
	the statement following the "COME FROM".

	"COME FROM" was first proposed in R.L. Clark's "A Linguistic
	Contribution to GOTO-less programming", which appeared in a
	1973 {Datamation} issue (and was reprinted in the April 1984
	issue of "{Communications of the ACM}").  This parodied the
	then-raging "{structured programming}" {holy wars} (see
	{considered harmful}).

	Mythically, some variants are the "assigned COME FROM" and the
	"computed COME FROM" (parodying some nasty control constructs
	in {FORTRAN} and some extended {BASIC}s).  Of course,
	{multitasking} (or {nondeterminism}) could be implemented by
	having more than one "COME FROM" statement coming from the
	same label.

	In some ways the {FORTRAN} "DO" looks like a "COME FROM"
	statement.  After the terminating statement number/"CONTINUE"
	is reached, control continues at the statement following the
	DO.  Some generous FORTRANs would allow arbitrary statements
	(other than "CONTINUE") for the statement, leading to examples
	like:

	      DO 10 I=1,LIMIT
	 C imagine many lines of code here, leaving the
	 C original DO statement lost in the spaghetti...
	      WRITE(6,10) I,FROB(I)
	 10   FORMAT(1X,I5,G10.4)

	in which the trapdoor is just after the statement labelled 10.
	(This is particularly surprising because the label doesn't
	appear to have anything to do with the flow of control at
	all!)

	While sufficiently astonishing to the unsuspecting reader,
	this form of "COME FROM" statement isn't completely general.
	After all, control will eventually pass to the following
	statement.  The implementation of the general form was left to
	{Univac FORTRAN}, ca. 1975 (though a roughly similar feature
	existed on the {IBM 7040} ten years earlier).  The statement
	"AT 100" would perform a "COME FROM 100".  It was intended
	strictly as a debugging aid, with dire consequences promised
	to anyone so deranged as to use it in production code.  More
	horrible things had already been perpetrated in production
	languages, however; doubters need only contemplate the "ALTER"
	verb in {COBOL}.

	"COME FROM" was supported under its own name for the first
	time 15 years later, in {C-INTERCAL} (see {INTERCAL},
	{retrocomputing}); knowledgeable observers are still reeling
	from the shock.

	(30 Nov 1994)

COMIS

	A COMpilation and Interpretation System.

	A {FORTRAN} {interpreter} use by the {PAW} system.

	(30 Nov 1994)

COMIT

	The first string-handling and {pattern-matching} language,
	designed in 1957-8 for applications in {natural language}
	translation.  The user has a workspace organised into shelves.
	Strings are made of constituents (words), accessed by
	{subscript}.  A program is a set of rules, each of which has a
	pattern, a replacement and goto another rule.

	["COMIT Programmer's Reference Manual", V.H. Yngve, MIT Press
	1961].

	[Sammet 1969, pp. 416-436].

	(30 Nov 1994)

Comite Europeen des Postes et Telecommunications

	(CEPT, European Conference of Post and Telecommunications).

	[What is it?]

	(11 Jul 1996)

COMIT II

	["Computer Programming with COMIT II", Victor H. Yngve, MIT
	Press, 1963].

	(11 Jan 1995)

Comma

	COMputable MAthematics.

	An {ESPRIT} project at KU {Nijmegen}.

	(30 Nov 1994)

comma

	<character> "," {ASCII} character 44.  Common names: {ITU-T}:
	comma.  Rare: {ITU-T}: cedilla; {INTERCAL}: tail.

	In the {C} programming language, "," is an operator which
	evaluates its first argument (which presumably has
	{side-effect}s) and then returns the value of its second
	argument.  This is useful in "for" statements and {macro}s.

	(10 Mar 1995)

command

	<operating system> A character string which tells a program to
	perform a specific action.  Most commands take {arguments}
	which either modify the action performed or supply it with
	input.  Commands may be typed by the user or read from a file
	by a {command interpreter}.  It is also common to refer to
	menu items as commands.

	(21 Jun 1997)

command interpreter

	<operating system> A program which reads textual commands from
	the user or from a file and executes them.  Some commands may
	be executed directly within the interpreter itself
	(e.g. setting variables or control constructs), others may
	cause it to load and execute other files.

	{Unix}'s command interpreters are known as {shell}s.

	When an {IBM PC} is {boot}ed {BIOS} loads and runs the
	{MS-DOS} command interpreter into memory from file COMMAND.COM
	found on a {floppy disk} or {hard disk} drive.  The commands
	that COMMAND.COM recognizes (e.g. COPY, DIR, PRN) are called
	internal commands, in contrast to external commands which are
	executable files.

	(16 Mar 1995)

command key

	{feature key}

command line interface

	<operating system> A means of communication between a
	{program} and its {user}, based solely on textual input and
	output.  Commands are input with the help of a {keyboard} or
	similar device and are interpreted and executed by the
	program.  Results are output as text or graphics to the
	{terminal}.

	Command line interfaces usually provide greater flexibility
	than {graphical user interfaces}, at the cost of being harder
	for the novice to use.  Consequently, some {hackers} look down
	on GUIs as designed {For The Rest Of Them}.

	(12 Jan 1996)

command line interpreter

	{command interpreter}

comma separated values

	<file format> (CSV) A {file format} used as a portable
	representation of a {database}.  Each line is one entry or
	record and the fields in a record are separated by {comma}s.
	Commas may be followed by arbitrary space and/or tab
	characters which are ignored.  If field includes a comma, the
	whole field must be surrounded with {double quote}s.

	(06 May 1995)

COMMEN

	[L.J. Cohen.  Proc SJCC 30:671-676, AFIPS (Spring 1967)].

	(30 Nov 1994)

comment

	<programming> (Or remark) An explanatory note embedded in the
	{source} that tries to clarify aspects of the code that even the
	programmer himself didn't find self-explanatory.

	The merit of commenting is often debated.  Code completely
	without comments is often hard to read, but too heavily
	commented code isn't much better, either, as when it is edited
	the comments are often not updated to reflect the changed
	state of the code (as a fortune cookie put it, "Don't get
	suckered in by the comments -- they can be terribly
	misleading.  Debug only code.").  Also, too much commenting
	often means that the code is over-complicated.  Probably the
	best programming method is commenting everything that needs it
	but writing code that doesn't need much of it.

	(21 Jul 1997)

comment out

	<programming> To surround a section of code with {comment}
	{delimiters} or to prefix every line in the section with a
	comment marker.  This prevents it from being compiled or
	interpreted and is often done when the code is redundant or
	obsolete, but is being left in the source to make the intent
	of the active code clearer; also when the code in that section
	is broken and you want to bypass it in order to debug some
	other part of the code.

	Compare {condition out}, usually the preferred technique in
	languages (such as {C}) that make it possible.

	(30 Nov 1994)

commercial at

	<character> "@".  Common names: at sign; at; strudel.  Rare:
	each; vortex; whorl; {INTERCAL}: whirlpool; cyclone; snail;
	ape; cat; rose; cabbage; {ITU-T}: commercial at.

	The @ sign is used in {electronic mail addresses} to separate
	the local part from the {hostname}.  See {@-party}.

	(08 May 1996)

Commercial Internet eXchange

	(CIX) The CIX is a non-profit, 501(c)6, trade association
	coordinating {Internet} services.  Its member organisations
	provide {TCP/IP} or {OSI} data {internetwork} services to the
	general public.  The CIX gives them unrestricted access to
	other worldwide networks.  It also takes an interest in the
	development and future direction of the {Internet}.

	The CIX provides a neutral forum to exchange ideas,
	information, and experimental projects among suppliers of
	internetworking services.  The CIX broadens the base of
	national and international cooperation and coordination among
	member networks.  Together, the membership may develop
	consensus positions on legislative and policy issues of mutual
	interest.

	The CIX encourages technical research and development for the
	mutual benefit of suppliers and customers of data
	communications internetworking services.  It assists its
	member networks in the establishment of, and adherence to,
	operational, technical, and administrative policies and
	standards necessary to ensure fair, open, and competitive
	operations and communication among member networks.  CIX
	policies are formulated by a member-elected board of
	directors.

	{Home (http://cix.org/)}

	(13 Jan 1995)

Commercial Translator

	An English-like pre-{COBOL} language for business {data
	processing}.

	[Sammet 1969, p. 378].

	(08 Nov 1994)

comm mode

	<chat> /kom mohd/ (Or "com mode") An {ITS} feature supporting
	interactive on-line {chat}.

	(18 Jan 1998)

Commodore 128

	<computer> (C128) An expanded {Commodore 64}.  The C128 was
	{Commodore Business Machines}' last commercially released
	8-bit computer.  However, they did prototype the {Commodore
	65} and {Commodore SX64}.

	(05 Jun 1996)

Commodore 1541

	<storage> The best know {floppy disk} drive for the {Commodore
	64}.  The 1541 was a single sided 160K drive but you could
	flip the disks over for another 160K if you punched a notch to
	enable writing to the other side (the "flip side") and entered
	obscure disk commands.  The disk drive used {Group Code
	Recording} and contained a {6502} processor as a {disk
	controller}.  Some people wrote code for it to vibrate the
	head at different frequencies to play tunes.

	The transfer rate was about 300 bytes per second.  The 1541
	used a {bit-serial} version of the {IEEE 488} parallel
	protocol.  Some third-party speed-ups could transfer about 4
	kilobytes per second over the interface, and some "fast
	loaders" managed up to 10 kbps.

	The {Commodore 1570} was an upgraded 1541 for use with the
	{Commodore 128}.

	(05 Jun 1996)

Commodore 1570

	<storage> {Commodore Business Machines}'s allegedly "advanced"
	disk drive for use with the {C128}.  It is basically a {1541}
	with the capability to use "burst loading" (like the
	{Commodore 1571}), and lots of new {bug}s.

	The {Commodore 1571} was a double-sided version of the 1570.

	(07 Apr 1996)

Commodore 1571

	<storage> {Commodore Business Machines}'s "advanced" {disk
	drive} for the {C128}.  It was the double-sided version of the
	{Commodore 1570} disk drive but, unlike the 1570, worked quite
	well.

	The 1571 supported "{burst mode}" loading when used on a C128
	in native mode, which increased the transfer speed from 1541
	speed to about three kilobytes per second (about a 10-fold
	increase).  The 1571 could be told to emulate a {1541} for use
	with a {C64} or 1541 disks.

	Bugs in early releases of the 1571 {ROM} affected access to
	the second side of the disk.

	(07 Apr 1996)

Commodore 1581

	<storage> {Commodore Business Machines}'s 3.5 inch {disk
	drive} for the {Commodore 64} and {Commodore 128} (and
	{Amiga}(?)).  The drive stores 800 {kilobytes} using an {MFM}
	format which is different from both {messy-dos} 720 kb, and
	the {Amiga} 880 kb formats.

	The 1581 supports a poor imitation of {directories} which are
	really just {partitions} and largely unused.  It also supports
	burst loading like the {Commodore 1571}, but is actually
	faster as it is better designed.  It has 3160 {blocks} free
	when formatted.

	The 1581 is the highest density C64 serial bus drive made by
	Commodore.  However Creative Micro Designs (CMD) make the
	{FD2000} (1.6MB) and (until recently) the {FD4000} (3.2MB)
	3.5" disk drives.  {GEOS} users like 1581s as they are very
	fast when used with GEOS.

	See also {Commodore 1541}, {Commodore 1571}.

	[Used on Amiga?]

	(04 Sep 1996)

Commodore 64

	<computer> (C64) An 8-bit {Commodore Business Machines}
	{personal computer} released around September 1981.
	Prototypes were (apparently) made before Christmas 1980 (and
	shown at some computer fair).

	The {CPU} was a {MOS Technolgies}(?) {6510}.  The C64 had 64
	{kilobytes} of {RAM} as standard and a 40-column text, 320x200
	{pixel} display generating {composite video}, usually
	connected to a television.

	{DMA}-based memory expanders for the C64 (and C128) allowed
	128, 256, and 512 kb of RAM.  Several third party
	manufacturers produce accelerators and RAM expanders for the
	C64 and C128.  (Some, risking a {holy war}, compare this to
	putting a brick on roller-skates).  Such accelerators come in
	speeds up to 20MHz (20 times the original) and RAM expanders
	to 16MB.

	The C64's {1541} 5.25 {floppy disk} drive had a {6502}
	processor as a {disk controller}.

	See also {Commodore 65}.

	["Assembly language programming with the Commodore 64", Marvin
	L. De Jong].

	(05 Jun 1996)

Commodore 64DX

	{Commodore 65}

Commodore 65

	<computer> (Or Commodore 64DX, C65, C64DX) The last 8-bit
	computer designed by {Commodore Business Machines}, about
	1989-1991.  The C65 boasts an {ugly} collection of {custom}
	{integrated circuits} which makes even the {Amiga} hardware
	look standard.

	The core of the C65 {chipset} is the {CSG 4510} and {CSG
	4569}.  The 4510 is a {65CE02} with two {6526} {CIA}s.  The
	4569 is equivalent to a combination of the {6569} VIC-II and
	the {MMU} of the {Commodore 64}.  The C65 also has a {DMA
	controller} (Commodore's purpose built {DMAgic}) which also
	functions as a simple {blitter}, and a {floppy controller} for
	the internal {Commodore 1581}-like disk drive.  The floppy
	controller, known as the {F011}, supports seven drives (though
	the {DOS} only supports 2).  The {4510} supports all the {C64}
	{video modes}, plus an 80 column text mode, and {bitplane}
	modes.  The bitplane modes can use up to eight bitplanes, and
	{resolutions} of up to 1280 x 400.  The {palette} is 12-bit
	like the {Amiga 500}.  It also has two SID's (MOS 8580/6581)
	for stereo audio.

	The C65 has two busses, D and E, with 64 {kilobytes} of {RAM}
	on each.  The VIC-III can access the D-bus while the CPU
	accesses the E-bus, and then they can swap around.  This
	effectively makes the whole 8MB {address space} both {chip
	ram} and {fast ram}.  {RAM} expansion is accomplished through
	a {trap door} slot in the bottom which uses a {grock} of a
	connector.  The C65 has a {C128}-like native mode, where all
	of the new features are enabled, and the CPU runs at 3.5
	megahertz with its {pipeline} enabled.  It also has a C64
	{incompatibility mode} which offers approx 50-80%
	compatibility with C64 software by turning off all its {bells
	and whistles}.  The {bells and whistles} can still be accessed
	from the C64 mode, which is dissimilar to the C128's
	inescapable C64 mode.

	Production of the C65 was dropped only a few weeks before it
	moved from the Alpha stage, possibly due to Commodore's cash
	shortage.  Commodore estimate that "between 50 and 10000"
	exist.  There are at least three in Australia, about 30 in
	Germany and "some" in the USA and Canada.

	(07 Apr 1996)

Commodore Business Machines

	<company> (CBM) Makers of the {PET}, {Commodore 64},
	{Commodore 16}, {Commodore 128}, and {Amiga} {personal
	computers}.  Their logo is a {chicken head}.

	On 29 April 1994, Commodore International announced that it
	had been unable to renegotiate terms of outstanding loans and
	was closing down the business.  Commodore US was expected to
	go into liquidation.  Commodore US, France, Spain, and Belgium
	were liquidated for various reasons.  The names Commodore and
	Amiga were maintained after the liquidation.

	On 21 April 1995 CBM was bought by {Escom AG}, a German
	company and production of the Amiga resumed.  Production of
	the 8-bit range alledgedly never stopped during the time in
	liquidation because a Chinese company were producing the {C64}
	in large numbers for the local market there.

	{(http://www.warwick.ac.uk/~stuce/faq/index.html)}

	(22 Jul 1996)

Commodore SX64

	<computer> A "portable" {Commodore 64}.  Shaped vaguely like a
	seat cushion, this cumbersome experiment in transportable
	computers had a detachable keyboard on one end which, when
	removed, revealed a 6" {monitor} and a 5 1/4" {floppy disk}
	drive.  The curious combination of a bulky design and
	microscopic display are the most likely cause for the SX64's
	discontinuation.

	[Processor?  RAM?  Dates?]

	(25 Oct 1997)

COMmon Algorithmic Language

	<language> (COMAL) A language for beginners developed by
	Benedict Loefstedt and Borge Christensen in 1973 and popular
	in Europe and Scandinavia.  It has a {Pascal}-like structure
	added to {BASIC}.  COMAL-80 has been adopted as an
	introductory language in Denmark.

	There is a version for the {Amiga}.

	There is a COMAL User's Group at 5501 Groveland Terr, Madison
	WI 53716, USA.

	["Beginning COMAL", B. Christensen, Ellis Harwood 1982].

	(11 Jan 1995)

Common Applications Environment

	(CAE) Part of {X/Open}, based on {POSIX} and {C}.

	[Details?]

Common Applications Service Element

	{Common Application Service Element}

Common Architecture for Next Generation Internet Protocol

	<networking> (CATNIP, originally Common Architecture
	Technology for Next-generation Internet Protocol)

	A network architecture designed to provide a compressed form
	of the existing {network layer} {protocols} and to integrate
	{CLNP}, {IP}, and {IPX}.  It provides for any of the
	{transport layer} {protocols} in use, including {TP4}, {CLTP},
	{TCP}, {UDP}, {IPX}, and {SPX}, to run over any of the network
	layer protocol formats: CLNP, IP (version 4), IPX, and CATNIP.

	CATNIP was originally proposed by Robert L. Ullmann of {Lotus
	Development Corporation} on 22 Dec 1993.  It was published as
	{RFC} 1707 in October 1994 but it is not an {Internet}
	standard of any kind.

	(23 Mar 1996)

COmmon Business Oriented Language

	<language> /koh'bol/ (COBOL) A programming language for simple
	computations on large amounts of data designed by the
	{CODASYL} Committee in April 1960.  It is the most widely used
	programming language today.  The {natural language} style is
	intended to be largely self-documenting.  It introduced the
	{record} structure.

	Major revisions in 1968 (ANS X3.23-1968), 1974 (ANS
	X3.23-1974) and 1985.

	For many {hackers}, COBOL is synonymous with {evil}, for being
	a weak, verbose, and flabby language used by {card wallopers}
	to do boring mindless things on {dinosaur} {mainframes}.  Many
	believe that all COBOL programmers are {suits} or {code
	grinders}, and would never admit to having learned the
	language.  However, as most haven't indeed, their judgement is
	somewhat questionable.

	See also {fear and loathing}, {software rot}.

	{Usenet} newsgroup: {news:comp.lang.cobol}.

	["Initial Specifications for a Common Business Oriented
	Language" DoD, US GPO, Apr 1960].

	(10 Mar 1997)

common carrier

	<communications, company> (Or "phone company") A private
	company that offers telecommunications services to the public.

	(20 Mar 1995)

Common Command Set

	<storage, standard> (CCS) Additional requirements and features
	for direct-access {SCSI} devices.

	In 1985 when the first {SCSI} standard was being finalised as
	an {American National Standard}, the {X3T9.2} Task Group was
	approached by some manufacturers who wanted changes.  Rather
	than delay the SCSI standard, X3T9.2 formed an ad hoc group to
	define CCS.

	[Spec?  Status?  "direct-access"?]

	(23 Mar 1997)

Common Communication Services

	(CCS) The standard program interface to networks in {SAA}.

Common Desktop Environment

	(CDE) A {desktop} manager from {COSE}.

	(31 Oct 1994)

Common Gateway Interface

	<World-Wide Web> (CGI) A {standard} for running external
	{programs} from a {World-Wide Web} {HTTP} {server}.  CGI
	specifies how to pass {arguments} to the executing program as
	part of the HTTP request.  It also defines a set of
	{environment variables}.  Commonly, the program will generate
	some {HTML} which will be passed back to the {browser} but it
	can also request {URL redirection}.

	CGI allows the returned HTML (or other document type) to
	depend in any arbitrary way on the request.  The CGI program
	can, for example, access information in a {database} and
	format the results as HTML.  A CGI program can be any program
	which can accept command line arguments.  {Perl} is a common
	choice for writing CGI scripts.  Some {HTTP servers} require
	CGI programs to reside in a special directory, often
	"/cgi-bin" but better servers provide ways to distinguish CGI
	programs so they can be kept in the same directories as the
	HTML files to which they are related.

	Whenever the server receives a CGI execution request it
	creates a new process to run the external program.  If the
	process fails to terminate for some reason, or if requests are
	received faster than the server can respond to them, the
	server may become swamped with processes.

	In order to improve performance, {Netscape} devised {NSAPI}
	and {Microsoft} developed the {ISAPI} standard which allow
	CGI-like tasks to run as part of the main server process, thus
	avoiding the overhead of creating a new process to handle each
	CGI invocation.

	Current version 1.1.

	{NCSA (http://hoohoo.ncsa.uiuc.edu/cgi)}.

	{Stars (http://www.stars.com/Seminars/CGI/)}.

	(06 Jan 1997)

Common Hardware Reference Platform

	{PowerPC Platform}

Common Lisp

	A dialect of {Lisp} defined by a consortium of companies
	brought together in 1981 by the {Defence Advanced Research
	Projects Agency} (DARPA).  Companies included {Symbolics},
	{Lisp Machines, Inc.}, {Digital Equipment Corporation}, {Bell
	Labs}., {Xerox}, {Hewlett-Packard}, {Lawrence Livermore
	Labs}., {Carnegie-Mellon University}, {Stanford University},
	{Yale}, {MIT} and {USC Berkeley}.  It is basically {lexically
	scope}d but can be {dynamically scope}d.

	Common Lisp is a large and complex language, fairly close to a
	superset of {MacLisp}.  It features {lexical binding}, data
	structures using defstruct and setf, {closure}s, multiple
	values, types using declare and a variety of numerical types.
	Function calls allow "&optional", keyword and "&rest"
	arguments.  Generic sequence can either be a list or an
	{array}.  It provides formatted printing using escape
	characters.  Common LISP now includes {CLOS}, an extended LOOP
	{macro}, condition system, {pretty print}ing and logical
	pathnames.

	Implementations include {AKCL}, {CCL}, {CLiCC}, {CLISP},
	{CLX}, {CMU Common Lisp}, {DCL}, {KCL}, {MCL} and {WCL}.

	Mailing list: <common-lisp@ai.sri.com>.

	{ANSI Common Lisp draft proposal
	(ftp://ftp.think.com/public/think/lisp:public-review.text)}.

	["Common LISP: The Language", Guy L. Steele, Digital Press
	1984, ISBN 0-932376-41-X].

	["Common LISP: The Language, 2nd Edition", Guy L. Steele,
	Digital Press 1990, ISBN 1-55558-041-6].

	(29 Sep 1994)

Common LISP in Parallel

	(CLIP) A version of {Common LISP} from {Allegro} for the
	{Sequent Symmetry}.

	(12 Dec 1994)

Common LISP Object System

	(CLOS) An {object-oriented} extension to {Common LISP}, based
	on {generic function}s, {multiple inheritance}, {declarative
	method combination} and a {meta-object protocol}.  A
	descendant of {CommonLoops} and based on {Symbolics} {FLAVORS}
	and {Xerox} {LOOPS}, among others.

	See also {PCL}.

	["Common LISP Object System Specification X3J13 Document
	88-002R", D.G.  Bobrow et al, SIGPLAN Notices 23 (Sep 1988)].

	(30 Nov 1994)

CommonLoops

	{Xerox}'s {object-oriented} {Lisp} which led to {CLOS}.

	See also {Portable CommonLoops}.

	{(ftp://arisia.xerox.com/pub/pcl/September-16-92-PCL-c.tar.Z)}

	E-mail: <CommonLoops@xerox.com>.

	["CommonLoops: Merging Lisp and Object-Oriented Programming",
	D.G. Bobrow et al, SIGPLAN Notices 21(11):17-29 (Nov 1986)].

	(03 Nov 1994)

Common Management Information Protocol

	<protocol> (CMIP) Part of the {OSI} body of {standards}
	specifying {protocol} elements that may be used to provide the
	operation and notification services described in the related
	standard, CMIS ({Common Management Information Services}).

	Document: {ISO}/{IEC} 9596, or equivalent {ITU} X.711.

	(07 Dec 1997)

Common Management Information Services

	(CMIS) Part of the {OSI} body of network {standard}s.

	Network management information services are used by {peer
	process}es to exchange information and commands for the
	purpose of {network management}.  CMIS defines a message set
	(GET, CANCEL-GET, SET, CREATE, DELETE, EVENT-REPORT and
	ACTION), and the structure and content of the messages such
	that they might be used by "open" systems.  In concept, it is
	similar to {SNMP}, but more powerful (and hence more complex).

	{ISO}/{IEC} 9595.

	(12 Jan 1995)

Common Object File Format

	(COFF) The executable and {object} file format used by {Unix
	System V} Release 3.

	{Unix manual page}: coff(5).

	(10 Jan 1995)

Common Object Model

	<programming> (COM) An open software architecture from {DEC}
	and {Microsoft}, allowing interoperation between
	{ObjectBroker} and {OLE}.

	[Is/was this Microsoft {Component Object Model}?]

	(08 Jan 1998)

Common Object Request Broker Architecture

	<standard, programming> (CORBA) An {Object Management Group}
	specification which provides the standard interface definition
	between OMG-compliant objects.

	Version 1.1.

	See also {COSS}.

	(11 Nov 1994)

Common Objects

	An {object-oriented} {Lisp} from {Hewlett-Packard}.

	["Inheritance and the Development of Encapsulated Software
	Components", A. Snyder, Proc 20th Hawaii Conf on Sys Sci,
	pp. 227-238 (1987)].

	(18 Jan 1995)

Common Program Interface

	<programming> (CPI) the {API} of {SAA}.

	(01 Dec 1997)

Common User Access

	<programming> (CUA) the {user interface} standard of {SAA}.

	(01 Dec 1997)

Commonwealth Hackish

	Hacker jargon as spoken outside the US, especially in the
	British Commonwealth.  It is reported that Commonwealth
	speakers are more likely to pronounce truncations like "char"
	and "soc", etc., as spelled (/char/, /sok/), as opposed to
	American /keir/ and /sohsh/.  Dots in {newsgroup} names
	(especially two-component names) tend to be pronounced more
	often (so soc.wibble is /sok dot wib'l/ rather than /sohsh
	wib'l/).  The prefix {meta} may be pronounced /mee't*/;
	similarly, Greek letter beta is usually /bee't*/, zeta is
	usually /zee't*/, and so forth.  Preferred {metasyntactic
	variable}s include {blurgle}, "eek", "ook", "frodo", and
	"bilbo"; "wibble", "wobble", and in emergencies "wubble";
	"banana", "tom", "dick", "harry", "wombat", "frog", {fish},
	and so on and on (see {foo}).

	Alternatives to verb doubling include suffixes "-o-rama",
	"frenzy" (as in feeding frenzy), and "city" (examples: "barf
	city!"  "hack-o-rama!"  "core dump frenzy!").  Finally, note
	that the American terms "parens", "brackets", and "braces" for
	(), [], and {} are uncommon; Commonwealth hackish prefers
	"brackets", "square brackets", and "curly brackets".  Also,
	the use of "pling" for {bang} is common outside the United
	States.

	See also {attoparsec}, {calculator}, {chemist}, {console
	jockey}, {fish}, {go-faster stripes}, {grunge}, {hakspek},
	{heavy metal}, {leaky heap}, {lord high fixer}, {loose bytes},
	{muddie}, {nadger}, {noddy}, {psychedelicware}, {plingnet},
	{raster blaster}, {RTBM}, {seggie}, {spod}, {sun lounge},
	{terminal junkie}, {tick-list features}, {weeble}, {weasel},
	{YABA}, and notes or definitions under {Bad Thing}, {barf},
	{bogus}, {bum}, {chase pointers}, {cosmic rays},
	{crippleware}, {crunch}, {dodgy}, {gonk}, {hamster},
	{hardwarily}, {mess-dos}, {nibble}, {proglet}, {root}, {SEX},
	{tweak}, and {xyzzy}.

	(18 Jan 1995)

Communicating Functional Processes

	(CFP)

	["Communicating Functional Processes", M.C. van Eekelen et al,
	TR 89-3, U Nijmegen, Netherlands, 1989].

	(30 Nov 1994)

Communicating Sequential Processes

	(CSP) A notation for {concurrency} based on {synchronous
	message passing} and selective communications designed by
	Anthony Hoare in 1978.  It features {cobegin} and coend and
	was a precursor to {occam}.

	See also {Contextually Communicating Sequential Processes}.

	["Communicating Sequential Processes", A.R. Hoare, P-H 1985].

	(01 Nov 1994)

Communications Decency Act

	<legal> (CDA) An amendment to the U.S. 1996 Telecommunications
	Bill that went into effect on 08 February 1996, outraging
	thousands of {Internet} users who turned their {web pages}
	black in protest.  The law, originally proposed by Senator
	James Exon to protect children from obscenity on the Internet,
	ended up making it punishable by fines of up to $250,000 to
	post indecent language on the Internet anywhere that a minor
	could read it.

	The {Electronic Frontier Foundation} created {public domain}
	blue ribbon {icons} that many web authors downloaded and
	displayed on their web pages.

	On 12 June 1996, a three-judge panel in Philadelphia ruled the
	CDA unconstitutional and issued an injunction against the
	United States Justice Department forbidding them to enforce
	the "indecency" provisions of the law.  Internet users
	celebrated by displaying an animated "Free Speech" fireworks
	icon to their web pages, courtesy of the {Voters
	Telecommunications Watch}.  The Justice Department has
	appealed the decision to the U.S. Supreme Court.

	(03 Nov 1996)

Communications of the ACM

	<publication> (CACM) A monthly publication by the {Association
	for Computing Machinery} sent to all members.  CACM is an
	influential publication that keeps computer science
	professionals up to date on developments.  Each issue includes
	articles, case studies, practitioner oriented pieces, regular
	columns, commentary, departments, the ACM Forum, and technical
	correspondence, and advertisements.

	{Home (http://www.acm.org/cacm/)}.

	(18 Jan 1995)

communications port

	<hardware, communications> A connector for a communications
	interface, usually, a {serial port}.

	(04 Aug 1996)

communication system

	<communications> A system or facility capable of providing
	information transfer between persons and equipment.  The
	system usually consists of a collection of individual
	communication {network}s, transmission systems, relay
	stations, tributary stations, and {terminal} equipment capable
	of interconnection and interoperation so as to form an
	integrated whole.  These individual components must serve a
	common purpose, be technically compatible, employ common
	procedures, respond to some form of control, and generally
	operate in unison.

	["Communications Standard Dictionary", 2nd Edition, Martin
	H. Weik].

	(06 Feb 1995)

COMNET

	A {simulation} tool from {CACI} for analysing wide-area voice
	or data networks, based on {SIMSCRIPT}.

	(19 Jan 1995)

compact

	1. (Or "finite", "isolated") In {domain theory}, an element d
	of a {cpo} D is compact if and only if, for any {chain} S, a
	subset of D,

		d <= lub S  =>  there exists s in S such that d <= s.

	I.e. you always reach d (or better) after a finite number of
	steps up the chain.

	("<=" is written in {LaTeX} as {\sqsubseteq}).

	(13 Jan 1995)

	2. Of a design, describes the valuable property that it can
	all be apprehended at once in one's head.  This generally
	means the thing created from the design can be used with
	greater facility and fewer errors than an equivalent tool that
	is not compact.  Compactness does not imply triviality or lack
	of power; for example, {C} is compact and {FORTRAN} is not,
	but C is more powerful than FORTRAN.  Designs become
	non-compact through accreting {feature}s and {cruft} that
	don't merge cleanly into the overall design scheme (thus, some
	fans of {Classic C} maintain that {ANSI C} is no longer
	compact).

	(13 Jan 1995)

Compact COBOL

	A subset of {COBOL} defined, but not published, ca. 1961.

	[Sammet 1969, p. 339].

	(19 Jan 1995)

Compact Disc

	<storage> (CD) (Not "disk", this spelling is part of the
	standard).

	A 4.72 inch disc developed by {Sony} and {Philips} that can
	store, on the same disc, still and/or moving images in
	monochrome and/or color; stereo or two separate sound tracks
	integrated with and/or separate from the images; and digital
	program and information files.

	The same fabrication process is used to make both audio CDs
	and {CD-ROMs} for storing computer data, the only differenence
	is in the device used to read the disk (the player or drive).

	{CD Information Center
	(http://www.cd-info.com/cd-info/CDInfoCenter.html)}.

	(12 Sep 1995)

Compact Disc interactive

	(CD-i) An embedded application of {CD-ROM} allowing the user
	limited interaction with films, games and educational
	applications via a special {controller}.

	(02 Nov 1994)

Compact Disc Read-Only Memory

	<storage> (CD-ROM) A {non-volatile} optical data storage
	medium using the same physical format as audio {compact
	discs}, readable by a computer with a CD-ROM drive.

	CD-ROM is popular for distribution of large databases,
	software and especially {multimedia} {applications}.  The
	maximum capacity is about 600 megabytes.  A CD can store
	around 640 {megabytes} of data - about 12 billion bytes per
	pound weight.

	CD-ROM drives are rated with a speed factor relative to music
	CDs (1x).  12x drives are common today (April 1997).  Above
	12x speed, there are problems with vibration and heat.  The
	newer constant angular velocity (CAV) drives will give speeds
	up to 20x but due to the nature of CAV the actual throughput
	increase over 12x will be less than 20/12.  20x is thought to
	be the maximum speed due to mechanical constraints.

	CD-ROM drives may connect to an {IDE} interface, a {SCSI}
	interface or a propritary interface, of which there are three
	- Sony, Panasonic, and Mitsumi.  Most CD-ROM drives can also
	play audio CDs.

	There are several formats used for CD-ROM data, including
	{Green Book CD-ROM}, {White Book CD-ROM} and {Yellow Book
	CD-ROM}.  {ISO 9660} defines a standard file system.

	See also {Compact Disc Recordable}, {Digital Video Disc}.

	{Byte, February 1997
	(http://www.byte.com/art/9702/sec17/art5.htm)}.

	[How fast is 1x speed?]

	(28 Apr 1997)

Compact Disc Recordable

	<storage> (CD-R) A write-once version of {CD-ROM}.  CD-Rs can
	hold about 650 {megabytes} of data.  They are very durable and
	can be read by normal CD-ROM drives, but once data has been
	written it cannot be altered.

	(09 Dec 1996)

compactness preserving

	In {domain theory}, a function f is compactness preserving if
	f c is {compact} whenever c is.

	(13 Jan 1995)

Compaq Computer Corporation

	<company> The largest US manufacturer and vendor of {IBM PC
	compatible} {personal computers} and servers.  Compaq was
	started in 1982 by three ex-{Texas Instruments} employees.

	Quarterly sales $2499M, profits $210M (Aug 1994).

	{Home (http://www.compaq.com/)}

	(24 Oct 1995)

Compas Pascal

	The predecessor of {Turbo Pascal}, sol by {POLY Data} of
	Denmark.  It was later renamed POLY Pascal, and afterwards
	sold to {Borland}.

	(19 Jan 1995)

COMPASS

	COMPrehensive ASSembler.

	The {assembly language} on {CDC} computers.

	(19 Jan 1995)

compatibility

	{compatible}

compatible

	<jargon> Different systems (e.g., {programs}, {file formats},
	{protocols}, even {programming languages}) that can work
	together or exchange data are said to be compatible.

	See also {backward compatible}, {forward compatible}.

	(15 Jan 1998)

Compatible Timesharing System

	<operating system> (CTSS) One of the earliest (1963)
	experiments in the design of interactive {time-sharing}
	{operating systems}.  CTSS was ancestral to {Multics}, {Unix},
	and {ITS}.  It was developed at the {MIT} Computation Center
	by a team led by Fernando J. Corbato.  CTSS ran on a modified
	{IBM 7094} with a second 32K-word bank of memory, using two
	{2301 drums} for swapping.  {Remote access} was provided to up
	to 30 users via an {IBM 7750} {communications controller}
	connected to {dial-up} {modems}.

	The name {ITS} (Incompatible {time-sharing} System) was a hack
	on CTSS, meant both as a joke and to express some basic
	differences in philosophy about the way I/O services should be
	presented to user programs.

	(29 Jan 1997)

Compel

	{COMpute ParallEL}

Competitive Access Provider

	<networking> (CAP, or "Bypass Carrier") A company which
	provides network links between the customer and the
	{IntereXchange Carrier} or even directly to the {Internet
	Service Provider}.  CAPs operate private networks independent
	of {Local Exchange Carriers}.

	["Getting Connected The Internet at 56k and Up", Kevin Dowd,
	First Edition, p. 49, O'Reilly & Associates, Inc., June 1996,
	ISBN 1-56592-154-2 (US), ISBN 1-56592-203-4 (international)].

	(23 Jul 1997)

compiler

	<programming, tool> A program that converts another program
	from some {source language} (or {programming language}) to
	{machine language} (object code).  Some compilers output
	{assembly language} which is then converted to {machine
	language} by a separate {assembler}.

	A compiler is distinguished from an assembler by the fact that
	each input statement does not, in general, correspond to a
	single machine instruction or fixed sequence of instructions.
	A compiler may support such features as automatic allocation
	of variables, arbitrary arithmetic expressions, control
	structures such as FOR and WHILE loops, variable {scope},
	input/ouput operations, {higher-order function}s and
	{portability} of source code.

	{AUTOCODER}, written in 1952, was possibly the first primitive
	compiler.  {Laning and Zierler}'s compiler, written in
	1953-1954, was possibly the first true working algebraic
	compiler.

	See also {byte-code compiler}, {native compiler}, {optimising
	compiler}.

	(07 Nov 1994)

compiler compiler

	{compiler-compiler}

Compiler-Compiler

	An early {compiler generator} for the {Atlas}, with its own
	distinctive input language.

	["The Compiler-Compiler", R.A. Brooker et al, Ann Rev
	Automatic Programming 3:229-275, Pergamon 1963].

	(24 Oct 1994)

compiler-compiler

	A utility to generate the {source code} of a {parser},
	{interpreter} or {compiler} from an annotated language
	description (usually in {BNF}).  Most so called
	compiler-compilers are really just {parser generator}s.

	Examples are {Bison}, {Eli}, {FSL}, {META 5}, {MUG2},
	{Parsley}, {Pre-cc}, {Yacc}.

	(23 Jan 1995)

compiler jock

	A programmer who specialises in writing {compiler}s.

	(19 Jan 1995)

Compiler Language for Information Processing

	(CLIP) A language written in 1958-1959, based on {IAL}, which
	led to {JOVIAL}.  CLIP was one of the first languages used to
	write its own {compiler}.

	[Sammet 1969, p. 635].

	(12 Dec 1994)

Compiler Target Language

	(CTL) The intermediate language used by the {ALICE} parallel
	machine.

	["The Design and Implementation of ALICE: A Parallel Graph
	Reduction Machine", M.D. Cripps et al, Proc Workshop on Graph
	Reduction, Springer 1987].

	(14 Nov 1994)

COMPL

	["The COMPL Language and Operating System", A.G. Fraser et al,
	Computer J 9(2):144-156 (1966)].

	(24 Jan 1995)

complement

	<logic> The other value or values in the set of possible
	values.

	See {logical complement}, {bitwise complement}, {set
	complement}.

	(24 Jan 1995)

complementary nondeterministic polynomial

	<complexity> (Co-NP) The set (or property) of problems with a
	yes/no answer where the complementary no/yes problem is in the
	set {NP}.

	[Example?]

	(27 Apr 1995)

complete

	<logic> 1. An {inference} system A is complete with respect to
	another system B if A can reach every conclusion which is true
	in B.  The dual to completeness is {soundness}.

	2. An abstract logical {theory} is complete if all true
	statements in the theory have formal {proofs} within the
	theory.

	See also {complete graph}, {complete lattice}, {complete
	partial ordering}.

	[1. or 2. or both?]

	(24 Apr 1996)

complete graph

	A {graph} which has a link between every pair of nodes.  A
	complete {bipartite graph} can be partitioned into two subsets
	of nodes such that each node is joined to every node in the
	other subset.

	(24 Jan 1995)

complete lattice

	A {lattice} is a {partial ordering} of a set under a relation
	where all finite subsets have a {least upper bound} and a
	{greatest lower bound}.  A complete lattice also has these for
	infinite subsets.  Every finite lattice is complete.  Some
	authors drop the requirement for {greatest lower bound}s.

	(02 Dec 1994)

completeness

	{complete}

complete partial ordering

	(cpo) A {partial ordering} of a set under a {relation}, where
	all {directed} subsets have a {least upper bound}.  A cpo is
	usually defined to include a least element, {bottom} (David
	Schmidt calls this a {pointed cpo}).  A cpo which is
	{algebraic} and {boundedly complete} is a (Scott) {domain}.

	(30 Nov 1994)

complete unification

	<programming> W.P. Weijland's name for {unification} without
	{occur check}.

	(11 Jan 1996)

Complex Instruction Set Computer

	(CISC) A processor where each instruction can perform several
	low-level operations such as memory access, arithmetic
	operations or address calculations.  The term was coined in
	contrast to {Reduced Instruction Set Computer}.

	Before the first RISC processors were designed, many computer
	architects were trying to bridge the "{semantic gap}" - to
	design {instruction set}s to support {high-level language}s by
	providing "high-level" instructions such as procedure call and
	return, loop instructions such as "decrement and branch if
	non-zero" and complex {addressing mode}s to allow data
	structure and {array} accesses to be compiled into single
	instructions.

	While these architectures achieved their aim of allowing
	high-level language constructs to be expressed in fewer
	instructions, it was observed that they did not always result
	in improved performance.  For example, on one processor it was
	discovered that it was possible to improve the performance by
	NOT using the procedure call instruction but using a sequence
	of simpler instructions instead.  Furthermore, the more
	complex the instruction set, the greater the overhead of
	decoding an instruction, both in execution time and silicon
	area.  This is particularly true for processors which used
	{microcode} to decode the (macro) instruction.  It is easier
	to debug a complex instruction set implemented in microcode
	than one whose decoding is "{hard-wired}" in silicon.

	Examples of CISC processors are the {Motorola} {680x0} family
	and the {Intel 80186} through {Intel 486} and {Pentium}.

	(10 Oct 1994)

complexity

	<algorithm> The level in difficulty in solving mathematically
	posed problems as measured by the time, number of steps or
	arithmetic operations, or memory space required (called time
	complexity, computational complexity, and space complexity,
	respectively).

	The interesting aspect is usually how complexity scales with
	the size of the input (the "{scalability}"), where the size of
	the input is described by some number N.  Thus an {algorithm}
	may have computational complexity O(N^2) (of the order of the
	square of the size of the input), in which case if the input
	doubles in size, the computation will take four times as many
	steps.  The ideal is a constant time algorithm (O(1)) or
	failing that, O(N).

	See also {NP-complete}.

	(20 Oct 1994)

complexity analysis

	In sructured program design, a quality-control operation that
	counts the number of "compares" in the logic implementing a
	function; a value of less than 10 is considered acceptable.

complexity class

	<algorithm> A collection of {algorithms} or {computable
	functions} with the same {complexity}.

	(24 Apr 1996)

complexity measure

	<algorithm> A quantity describing the {complexity} of a
	computation.

	(24 Apr 1996)

complex number

	<mathematics> A number of the form x+iy where i is the square
	root of -1, and x and y are {real number}s, known as the
	"real" and "imaginary" part.  Complex numbers can be plotted
	as points on a two-dimensional plane, known as an {Argand
	diagram}, where x and y are the {Cartesian coordinates}.

	An alternative, {polar} notation, expresses a complex number
	as (r e^it) where e is the base of {natural logarithms}, and r
	and t are real numbers, known as the magnitude and phase.  The
	two forms are related:

		r e^it = r cos(t) + i r sin(t)
		       = x + i y
	where
		x = r cos(t)
		y = r sin(t)

	All solutions of any {polynomial equation} can be expressed as
	complex numbers.  This is the so-called {Fundamental Theorem
	of Algebra}, first proved by Cauchy.

	Complex numbers are useful in many fields of physics, such as
	electromagnetism because they are a useful way of representing
	a magnitude and phase as a single quantity.

	(10 Apr 1995)

component

	<programming> An {object} adhering to a {component
	architecture}.

	(20 Nov 1997)

component architecture

	<programming> A notion in {object-oriented} programming where
	"components" of a program are completely generic.  Instead of
	having a specialised set of {methods} and {fields} they have
	generic methods through which the component can advertise the
	functionality it supports to the system into which it is
	loaded.  This enables completely {dynamic loading} of
	{objects}.  {JavaBeans} is an example of a component
	architecture.

	See also {design pattern}.

	(20 Nov 1997)

Component Integration Laboratories

	(CIL) An effort to create a common framework for
	interoperability between {application program}s on {desktop}
	{platform}s, formed by {Apple Computer, Inc.}, {IBM}, {Novell},
	{Oracle}, {Taligent}, {WordPerfect} and {Xerox}.

	(24 Oct 1994)

	[When was it formed?  What happened?]

com port

	{communications port}

composition

	1. {function composition}.

	2. {typesetting}.

Compositional C++

	<language> (CC++) Extensions to {C++} for {compositional
	parallel programming}.

	{FTP Caltech (ftp://csvax.cs.caltech.edu/pub/comp)}

	E-mail: Carl Kesselman <carl@vlsi.cs.caltech.edu>.

	(07 Apr 1996)

Compound Document Architecture

	<file format> (CDA) {DEC}'s set of {standards} for compound
	document creation, storage, retrieval, interchange and
	manipulation.

	(03 Nov 1996)

compound key

	<database> (Or "multi-part key", "concatenated key") A {key}
	which consists of more than one {attribute} of the body of
	information (e.g. database "{record}") it identifies.

	(26 Apr 1997)

COMPREHENSIVE

	An early system on {MIT}'s {Whirlwind}.

	[Listed in CACM 2(5):16 (May 1959)].

Comprehensive Perl Archive Network

	<tool> (CPAN) A collection of {Internet} {archives} containing
	material related to the {Perl} programming language.

	{Master site (ftp://ftp.funet.fi/pub/languages/perl/CPAN/)},
	{Africa (ftp://ftp.is.co.za/programming/perl/CPAN/)}, {Taiwan
	(ftp://dongpo.math.ncu.edu.tw/perl/CPAN/)}, {Japan
	(ftp://ftp.lab.kdd.co.jp/lang/perl/CPAN/)}, {Australia NU
	(ftp://coombs.anu.edu.au/pub/perl/)}, {Australia MU
	(ftp://ftp.mame.mu.oz.au/pub/perl/CPAN/)}, {NZ
	(ftp://ftp.tekotago.ac.nz/pub/perl/CPAN/)} {SI
	(ftp://ftp.arnes.si/software/perl/CPAN/)}, {Portugal
	(ftp://ftp.ci.uminho.pt/pub/lang/perl/)}, {NL
	(ftp://ftp.cs.ruu.nl/pub/PERL/CPAN/)}, {UK Demon
	(ftp://ftp.demon.co.uk/pub/mirrors/perl/CPAN/)}, {Finland
	(ftp://ftp.funet.fi/pub/languages/perl/CPAN/)}, {France IBP
	(ftp://ftp.ibp.fr/pub/perl/CPAN/)}, {Europe LEO
	(ftp://ftp.leo.org/pub/comp/programming/languages/perl/CPAN/)},
	{France Pastur
	(ftp://ftp.pasteur.fr/pub/computing/unix/perl/CPAN/)},
	{Germany
	(ftp://ftp.rz.ruhr-uni-bochum.de/pub/programming/languages/perl/CPAN/)},
	{Sweden (ftp://ftp.sunet.se/pub/lang/perl/CPAN/)},
	{Switzerland (ftp://ftp.switch.ch/mirror/CPAN/)}, {UK HENSA
	(ftp://unix.hensa.ac.uk/mirrors/perl-CPAN/)}, {USA UFL
	(ftp://ftp.cis.ufl.edu/pub/perl/CPAN/)}, {USA Delphi
	(ftp://ftp.delphi.com/pub/mirrors/packages/perl/CPAN/)}, {USA
	SEDL (ftp://ftp.sedl.org/pub/mirrors/CPAN/)}, {USA Sterling
	(ftp://ftp.sterling.com/programming/languages/perl/)}, {USA
	UOKNOR (ftp://ftp.uoknor.edu/mirrors/CPAN/)}, {USA UIUC
	(ftp://uiarchive.cso.uiuc.edu/pub/lang/perl/CPAN/)}.

	(04 Jun 1996)

Comprehensive TeX Archive Network

	<text> (CTAN) An {archive site} for the {TeX} text formatting
	package.

	{(http://www.tex.ac.uk)}.  {Gopher
	(gopher://gopher.tex.ac.uk/)}.  {(ftp://ftp.tex.ac.uk/)}.
	NFS: nfs.tex.ac.uk.

	(18 Jan 1995)

compress

	<tool> When used without a qualifier, generally refers to
	{compression} of a file using a particular {C} implementation
	of compression for {Unix} by Joseph M. Orost, James A. Woods
	et al. widely circulated via {Usenet}.  compress uses the
	{Lempel-Ziv Welch} {algorithm} and normally produces files
	with the suffix ".Z".

	Compress uses variable length codes.  Initially, nine bit
	codes are output until they are all used.  When this occurs,
	ten bit codes are used and so on until an implementation
	dependent maximum is reached.

	After every 10 kilobytes of input the compression ratio is
	checked.  If it is descreasing then the entire string table is
	discarded and information is collected from scratch.

	(20 Oct 1996)

Compressed SLIP

	<networking> (CSLIP) {VanJacobsen TCP header compression}.  A
	version of {SLIP} using {compression}.  CSLIP has no effect on
	the data portion of the {packet} and has nothing to do with
	compression by {modem}.  It does reduce the {TCP} header from
	40 bytes to 7 bytes, a noticeable difference when doing
	{telnet} with lots of little packets.  CSLIP has no effect on
	UDP, only TCP.

	(28 May 1995)

compressed video

	The result of {video compression}.

compression

	<application> The coding of data to save storage space or
	transmission time.  Although data is already coded in digital
	form for computer processing, it can often be coded more
	efficiently (using fewer bits).  For example, {run-length
	encoding} replaces strings of repeated characters (or other
	units of data) with a single character and a count.  There are
	many compression {algorithms} and utilities.  Compressed data
	must be decompressed before it can be used.

	The standard {Unix} compression utilty is called {compress}
	though {GNU}'s {gzip} is better.  Other compression utilties
	include {pack}, {zip} and {pkzip}.

	When compressing several similar files, it is usually better
	to join the files together into an {archive} of some kind
	(using {tar} for example) and then compress them, rather than
	to join together individually compressed files.  This is
	because some common compression {algorithm}s build up tables
	based on the data from their current input which they have
	already compressed.  They then use this table to compress
	subsequent data more efficiently.

	See also {TIFF}, {JPEG}, {MPEG}, {Lempel-Ziv Welch}.

	There is a compression {FAQ} at
	{(ftp://rtfm.mit.edu/pub/usenet/news.answers/compression-faq/)}.

	{Usenet} newsgroups: {news:comp.compression},
	{news:comp.compression.research}.

	(21 Feb 1995)

COMPROSL

	COMpound PROcedural Scientific Language.

	A language for scientists and engineers.

	[Sammet 1969, pp. 299-300].

Compu$erve

	(Or "CompuSpend", "Compu$pend") A pejorative name for
	{CompuServe Information Service} ({CI$}) drawing attention to
	perceived high charges.

	(08 Nov 1994)

Compulink Information eXchange

	(CIX) A London-based conferencing system, also providing
	{electronic mail}, {FTP}, {telnet}, {IRC}, {Gopher} and
	{World-Wide Web}.  Includes conferences "archimedes" or "bbc"
	for users of {Acorn} computers.

	E-mail: <cixadmin@cix.compulink.co.uk>.

	Telephone: +44 (181) 390 8446.

	(08 Nov 1994)

CompuServe Corporation

	The parent organisation of {CompuServe Information Service},
	CompuServe Network Services and CompuServe Remote Computing
	Services.  Wholly owned by H.R. Block.

	{Home (http://www.compuserve.com/)}

	(12 Sep 1995)

CompuServe Information Service

	(CIS) One of the services run by {CompuServe Corporation}.
	CIS provides a wide variety of information and services,
	including {bulletin board}s, on-line conferencing, business
	news, sports and weather, financial transactions, {electronic
	mail}, travel and entertainment data as well as on-line
	editions of computer publications.  CompuServe Information
	Service should not be confused with CompuServe Corporation's
	other sectors which offer many other services besides the
	consumer information service.

	CIS is a large international conferencing system (albeit with
	a heavy US bias).  It provides an access to the {Usenet} news
	(GO INTERNET).  More comprehensive {Internet} access is
	planned for the end of 1994.  Forum UKCOMP topic Acorn/Z88 is
	the place to find {Acorn} users.

	Compuserve's main competitors are {AOL} and {Prodigy}.

	{Home (http://www.compuserve.com/)}

	Telephone: +44 (181) 801 2001 (London), +44 (121) 632 4858
	(Birmingham), +44 (1734) 391 064 or 569 025 (Reading), +44
	(1272) 255 111 (Bristol).

	(12 Sep 1995)

Compusult Ltd.

	A computer consulting firm (in Newfoundland, Canada?) that
	provides a public access {Unix}.

	(20 Oct 1994)

computability theory

	<mathematics> The area of theoretical computer science
	concerning what problems can be solved by any computer.

	A function is computable if an {algorithm} can be implemented
	which will give the correct output for any valid input.

	Since there are only {countably many} computer programs and
	uncountably many real numbers, it follows that there must
	exist {real numbers} that cannot be calculated by any program.
	Unfortunately, by definition, there isn't an easy way of
	describing any of them!

	In fact, there are many tasks (not just calculating real
	numbers) that computers cannot perform.  The most well-known
	is the {halting problem}, the {busy beaver} problem is less
	famous but just as fascinating.

	["Computability", N.J. Cutland. (A well written
	undergraduate-level introduction to the subject)].

	["The Turing Omnibus", A.K. Dewdeney].

	(13 Jan 1995)

computable

	{computability theory}

Computational Adequacy Theorem

	This states that for any program (a non-function typed term in
	the {typed lambda-calculus} with constants) {normal order
	reduction} (outermost first) fails to terminate if and only if
	the {standard semantics} of the term is {bottom}.  Moreover,
	if the reduction of program e1 terminates with some {head
	normal form} e2 then the standard semantics of e1 and e2 will
	be equal.  This theorem is significant because it relates the
	operational notion of a reduction sequence and the
	{denotational semantics} of the input and output of a
	reduction sequence.

computational complexity

	<algorithm> The number of steps or arithmetic operations
	required to solve a computational problem.  One of the three
	kinds of {complexity}.

	(24 Apr 1996)

computational geometry

	<mathematics> The study of {algorithms} for combinatorial,
	topological, and metric problems concerning sets of points,
	typically in {Euclidean space}.  Representative areas of
	research include geometric search, convexity, proximity,
	intersection, and {linear programming}.

	(03 Aug 1997)

computational learning

	{grammatical inference}

COMpute ParallEL

	<language> (Compel) The first {single-assignment} language.

	["A Language Design for Concurrent Processes", L.G. Tesler et
	al, Proc SJCC 32:403-408, AFIPS (Spring 1968)].

	(19 Jan 1995)

Computer

	<publication> A journal of the {IEEE Computer Society}.

	(10 Mar 1995)

computer

	<computer> A machine that can be programmed to manipulate
	symbols.  Computers can perform complex and repetative
	procedures quickly, precisely and reliably and can quickly
	store and retrieve large amounts of data.

	The physical components from which a computer is constructed
	(electronic circuits and input/output devices) are known as
	"{hardware}".  Most computers have four types of hardware
	component: CPU, input, output and memory.  The CPU ({central
	processing unit}) executes programs ("{software}") which tell
	the computer what to do.  Input and output (I/O) devices allow
	the computer to communicate with the user and the outside
	world.  There are several kinds of memory - fast, expensive,
	short term memory (e.g. {RAM}) to hold intermediate results,
	and slower, cheaper, long-term memory (e.g. {magnetic disk} and
	{magnetic tape}) to hold programs and data between jobs.

	See also {analogue computer}.

	(10 Mar 1995)

Computer Aided Design

	(CAD) The part of {CAE} concerning the drawing or physical
	layout steps of engineering design.

	(30 Nov 1994)

Computer Aided Engineering

	(CAE) Use of computers to help with all phases of engineering
	design work.  Like {CAD}, but also involving the conceptual
	and analytical design steps.

	(28 Oct 1994)

Computer-Aided Instruction

	<application, education> (CAI, or "assisted", "learning", CAL)
	The use of (personal) computers for education and training.

	(13 Apr 1995)

Computer-Aided Learning

	{Computer-Aided Instruction}

Computer Aided Software Engineering

	<programming> (CASE, or "assisted") A technique for using
	computers to help with one or more phases of the {software
	life-cycle}, including the systematic analysis, design,
	implementation and maintenance of software.  Adopting the CASE
	approach to building and maintaining systems involves software
	tools and training for the developers who will use them.

	(10 May 1996)

Computer-Aided Software Testing

	<programming> (CAST) Automated software testing in one or more
	phases of the {software life-cycle}.

	(10 May 1996)

Computer Animation Movie Language

	["A Computer Animation Movie Language for Educational Motion
	Pictures", D.D. Weiner et al, Proc FJCC 33(2), AFIPS (Fall
	1968)].

	(30 Nov 1994)

Computer-Assisted Learning

	{Computer-Aided Instruction}

Computer-Assisted Software Engineering

	{Computer-Aided Software Engineering}

Computer Associates

	<company> (CA) A US software development company, best known
	for {Ingres} which they got by buying out {ASK Corporation}.

	Quarterly sales $477M, profits -$86M (Aug 1994).

	(19 Apr 1995)

Computer-Based Training

	<application> (CBT) Training (of humans) done by interaction
	with a computer.  The programs and data used in CBT are known
	as "courseware."

	(13 Mar 1995)

Computer Compiler

	Proposed language for compiler design.

	[Sammet 1969, p. 695].

computer confetti

	Synonym {chad}.  Though this term is common, this use of
	punched-card chad is not a good idea, as the pieces are stiff
	and have sharp corners that could injure the eyes.  GLS
	reports that he once attended a wedding at MIT during which he
	and a few other guests enthusiastically threw chad instead of
	rice.  The groom later grumbled that he and his bride had
	spent most of the evening trying to get the stuff out of their
	hair.

Computer Conservation Society

	(CCS) A specialist group of the {British Computer Society}.

	See also {Bletchley Park}.

	(17 Nov 1994)

computer crime

	<legal> Breaking the criminal law by use of a computer.

	See also {computer ethics}, {software law}.

	(09 Jul 1997)

Computer Design Language

	An {ALGOL}-like language for computer design.

	["An ALGOL-like Computer Design Language", Y. Chu, CACM 8(10)
	(Oct 1965)].

	(17 Nov 1994)

computer dictionary

	{Free On-line Dictionary of Computing}

Computer Emergency Response Team

	(CERT) An organisation formed by {DARPA} in November 1988 in
	response to the needs exhibited during the {Internet worm}
	incident.  The CERT charter is to work with the {Internet}
	community to facilitate its response to computer security
	events involving Internet hosts, to take proactive steps to
	raise the community's awareness of computer security issues
	and to conduct research targeted at improving the security of
	existing systems.  CERT products and services include 24-hour
	technical assistance for responding to computer security
	incidents, product vulnerability assistance, technical
	documents and tutorials.

	{(ftp://cert.org)}

	E-mail: <cert@cert.org>.

	Telephone +1 (412) 2687090 (24-hour hotline).

	(17 Nov 1994)

computer ethics

	<philosophy> Ethics is the field of study that is concerned
	with questions of value, that is, judgments about what human
	behaviour is "good" or "bad".  Ethical judgments are no
	different in the area of computing from those in any other
	area.  Computers raise problems of privacy, ownership, theft
	and power, to name but a few.

	Computer ethics can be grounded in one of four basic
	world-views: Idealism, Realism, Pragmatism, or Existentialism.
	Idealists believe that reality is basically ideas and that
	ethics therefore involves conforming to ideals.  Realists
	believe that reality is basically nature and that ethics
	therefore involves acting according to what is natural.
	Pragmatists believe that reality is not fixed but is in
	process and that ethics therefore is practical (that is,
	concerned with what will produce socially-desired results).
	Existentialists believe reality is self-defined and that
	ethics therefore is individual (that is, concerned only with
	one's own conscience).  Idealism and Realism can be considered
	ABSOLUTIST worldviews because they are based on something
	fixed (that is, ideas or nature, respectively).  Pragmatism
	and Existentialism can be considered RELATIVIST worldviews
	because they are based or something relational (that is,
	society or the individual, respectively).

	Thus ethical judgments will vary, depending on the judge's
	world-view.  Some examples:

	First consider theft.  Suppose a university's computer is used
	for sending an e-mail message to a friend or for conducting a
	full-blown private business (billing, payroll, inventory,
	etc.).  The absolutist would say that both activities are
	unethical (while recognising a difference in the amount of
	wrong being done).  A relativist might say that the latter
	activities were wrong because they tied up too much memory and
	slowed down the machine, but the e-mail message wasn't wrong
	because it had no significant effect on operations.

	Next consider privacy.  An instructor uses her account to
	acquire the cumulative grade point average of a student who is
	in a class which she instructs.  She obtained the password for
	this restricted information from someone in the Records Office
	who erroneously thought that she was the student's advisor.
	The absolutist would probably say that the instructor acted
	wrongly, since the only person who is entitled to this
	information is the student and his or her advisor.  The
	relativist would probably ask why the instructor wanted the
	information.  If she replied that she wanted it to be sure
	that her grading of the student was consistent with the
	student's overall academic performance record, the relativist
	might agree that such use was acceptable.

	Finally, consider power.  At a particular university, if a
	professor wants a computer account, all she or he need do is
	request one but a student must obtain faculty sponsorship in
	order to receive an account.  An absolutist (because of a
	proclivity for hierarchical thinking) might not have a problem
	with this divergence in procedure.  A relativist, on the other
	hand, might question what makes the two situations essentially
	different (e.g. are faculty assumed to have more need for
	computers than students?  Are students more likely to cause
	problems than faculty?  Is this a hold-over from the days of
	"in loco parentis"?).

	{"Philosophical Bases of Computer Ethics" by Professor Robert
	N. Barger (gopher://imcsrv.eiu.edu:70/1cpt-eths/papers.70)}.

	{Usenet} newsgroups: {news:bit.listserv.ethics-l},
	{news:alt.soc.ethics}.

	(25 Oct 1995)

computer geek

	<jargon> (Or "turbo nerd", "turbo geek") One who eats
	(computer) {bugs} for a living.  One who fulfils all the
	dreariest negative stereotypes about {hackers}: an asocial,
	malodourous, pasty-faced monomaniac with all the personality
	of a cheese grater.  The term cannot be used by outsiders
	without implied insult to all {hackers}; compare
	black-on-black usage of "nigger".  A computer geek may be
	either a fundamentally clueless individual or a proto-hacker
	in {larval stage}.

	See also {Alpha Geek}, {propeller head}, {clustergeeking},
	{geek out}, {wannabee}, {terminal junkie}, {spod}, {weenie}.

	(26 Jun 1997)

Computer Generation Incorporated

	<company> (CGI) A US software development company and systems
	integrator.

	{Home (http://www.compgen.com/)}.

	E-mail: Paul G. Smith <pauls@compgen.com>

	Telephone: +1 (404) 705 2800

	Address: Bldg. G, 4th Floor, 5775 Peachtree-Dunwoody Rd.,
	Atlanta, GA 30342, USA.

	(11 Feb 1997)

Computer Graphics Metafile

	(CGM) A standard file format for storage and communication of
	graphical information, widely used on {personal computer}s and
	accepted by {desktop publishing} and technical illustration
	systems.  {ANSI}/{ISO} 8632-1987.  Worked on by the
	{ISO}/{IEC} group {JTC1/SC24}.

	(04 Jan 1995)

computer language

	{programming language}

computer law

	<legal> Apart from {software law}, other relevant laws include
	those concerning the sale of goods.  Communication law is more
	relevant to the {Internet}, it has to do with media issues in
	general, e.g. free speech.

	(05 Dec 1994)

Computer Mediated Communication

	<messaging> (CMC) Communication that takes place through, or
	is facilitated by, computers.  Examples include {Usenet} and
	{e-mail}, but CMC also covers real-time {chat} tools like
	{lily (http://www.lily.org/)}, {IRC}, and even {video
	conferencing}.

	(26 Nov 1996)

computer nerd

	{computer geek}

computer network

	{network}

Computer Output to Laser Disk

	<storage> (COLD) The capture of large (typically {mainframe}
	generated) reports on optical media such that sections are
	accessible as individual documents.  A successor technology to
	"COM" (Computer Output on Microfilm).

	[Example application?]

	(05 Feb 1997)

Computer Professionals for Social Responsibility

	(CPSR) A non-profit organisation whose mission is to provide
	the public and policymakers with realistic assessments of the
	power, promise and problems of information technology and the
	effects of computers on society.  CPSR is supported by its
	membership and has chapters throughout the USA.  CPSR sponsors
	conferences such as our Annual Meeting, Directions and
	Implications in Advanced Computing (DIAC), the Participatory
	Design Conference (PDC) and the Computers, Freedom and Privacy
	(CFP) conference.

	{Home (http://www.cpsr.org/home)}

	(30 Nov 1994)

Computer + Science NETwork

	(CSNET) The networking organisation which combined with
	{BITNET} to form {CREN}.

	(30 Nov 1994)

computer security

	{security}

computer sex

	<jargon> Two computers interfaced with each other.

	(22 Feb 1996)

Computer Supported Cooperative Work

	<tool> (CSCW) (Or "groupware") Software tools and technology
	to support groups of people working together on a project,
	often at different sites.

	See also {Lotus Notes}.

	(30 Nov 1994)

Computer Telephone Integration

	<communications> (CTI or "- Telephony -") Enabling computers
	to know about and control telephony functions such as making
	and receiving voice, {fax}, and data calls, telephone
	directory services, and caller identification.  The
	integration of telephone and computer systems and is a major
	development in the evolution of the automated office.

	CTI is not a new concept - such links have been used in the
	past in large telephone networks - but only dedicated call
	centres could justify the costs of the required equipment
	installation.  Primary telephone service providers are now
	beginning to offer information services such as {Automatic
	Number Identification} and {Dialled Number Identification
	Service} on a scale wide enough for its implementation to
	bring real value to business or residential telephone usage.
	A new generation of applications ({middleware}) is being
	developed as a result of standardisation and availability of
	low cost computer-telephony links.  This can link {personal
	computers} with telephones and/or a local area server with a
	{PBX}.  Leading telephony and {software} vendors such as
	{AT&T}, {British Telecom}, {IBM}, {Novell}, {Microsoft} and
	{Intel} are developing better telephony services and
	capabilities which should eventually enable low cost CTI.

	The main {CTI} functions are integrating {messaging} with
	{databases}, {word processors} etc.; controlling voice, {fax},
	and {e-mail} messaging systems from a single {application
	program}; graphical call control - using a {graphical user
	interface} to perform functions such as making and receiving
	calls, forwarding and conferencing; call and {data}
	association - provision of information about the caller from
	databases or other applications automatically before the call
	is answered or transferred; {speech synthesis} and {speech
	recognition}; automatic logging of call related information
	for invoicing purposes or callback.

	Typical productivity benefits are improved customer service;
	increased productivity; reduced costs; enhanced workflow
	automation; protected investment in computers and telephony;
	computerised telephony intelligence.

	IBM were one of the first with workable CTI, now sold as
	"CallPath".  {Callware}'s {Phonetastic} is typical of the new
	breed of {middleware}.

	See also {Telephony Application Programming Interface}.

	(08 Dec 1996)

Computer Telephony Integration

	{Computer Telephone Integration}

computer virus

	{virus}

computer vision

	A branch of {artificial intelligence} and {image processing}
	concerned with computer processing of images from the real
	world.  Computer vision typically requires a combination of
	low level {image processing} to enhance the image quality
	(e.g. remove noise, increase contrast) and higher level
	{pattern recognition} and {image understanding} to recognise
	features present in the image.

	{Usenet} newsgroup: {news:comp.ai.vision}.

	(30 Nov 1994)

compute server

	<computer, parallel> A kind of {parallel processor} where the
	parallel processors have no I/O except via a bus or other
	connection to a {front-end processor} which handles all I/O to
	disks, {terminals} and network.

	In some antiquated {IBM} {mainframe}s, a second CPU was
	provided that could not access I/O devices, known as the slave
	or attached processor, while the CPU having access to all
	devices was known as the master processor.

	(19 Mar 1995)

computing

	{computer}

Computing Devices Canada Ltd.

	<company> Canada's largest defence electronics company.  It
	has extensive {hardware} and {software} developmental
	capabilities.  Its list of achievements includes: direct and
	indirect fire control {systems}, vehicle electronics,
	reconnaissance vehicle surveillance systems, computerised
	laser sight for anti-tank weapons, tactical {communication
	systems}, headquarters information distribution system,
	tactical voice and distribution systems, acoustic signal
	processing, ASW mission systems, sonobuoy {processors}, active
	sonar systems, towed array sonar systems, tactical acoustic
	trainer, {Mil-Spec} {electroluminiscent displays}, large
	multi-sensor displays, coastal intrusion detection systems,
	and fibre-optic distribution systems.

	Computing Devices Canada was founded in 1948 and is part of
	the Ceridian group of companies, owned 100% by the
	Minneapolis-based company.

	Annual revenue for 1996 was $376 million.

	(31 Jul 1997)

computing dictionary

	{Free On-line Dictionary of Computing}

computron

	/kom'pyoo-tron"/ 1. A notional unit of computing power
	combining instruction speed and storage capacity, dimensioned
	roughly in instructions-per-second times
	megabytes-of-main-store times megabytes-of-mass-storage.
	"That machine can"t run GNU EMACS, it doesn't have enough
	computrons!"  This usage is usually found in metaphors that
	treat computing power as a fungible commodity good, like a
	crop yield or diesel horsepower.  See {bitty box}, {Get a real
	computer!}, {toy}, {crank}.

	2. A mythical subatomic particle that bears the unit quantity
	of computation or information, in much the same way that an
	electron bears one unit of electric charge (see also {bogon}).
	An elaborate pseudo-scientific theory of computrons has been
	developed based on the physical fact that the molecules in a
	solid object move more rapidly as it is heated.  It is argued
	that an object melts because the molecules have lost their
	information about where they are supposed to be (that is, they
	have emitted computrons).  This explains why computers get so
	hot and require air conditioning; they use up computrons.
	Conversely, it should be possible to cool down an object by
	placing it in the path of a computron beam.  It is believed
	that this may also explain why machines that work at the
	factory fail in the computer room: the computrons there have
	been all used up by the other hardware.  (This theory probably
	owes something to the "Warlock" stories by Larry Niven, the
	best known being "What Good is a Glass Dagger?", in which
	magic is fuelled by an exhaustible natural resource called
	"mana".)

Compuware

	<company> The company which markets {Uniface}.

	{Home (http://www.compuware.com/)}

	[More details?]

	(14 Oct 1995)

COMSL

	["COMSL - A Communication System Simulation Language",
	R.L. Granger, Proc FJCC 37 (1970)].

COMTRAN

	["Communications Computer Language COMTRAN", D.W. Clark et al,
	RADC-TR-69-190, Rose Air Development Center, Griffiss AFB, NY,
	July 1969].

	[Sammet 1969, p.324, 331].

con

	[SF fandom] A science-fiction convention.  Not used of other
	sorts of conventions, such as professional meetings.  This
	term, unlike many others of SF-fan slang, is widely recognised
	even by hackers who aren't {fan}s. "We'd been corresponding on
	the net for months, then we met face-to-face at a con."

ConC

	<language> A {concurrent} extension of {C} based on
	{decomposed Petri net}s.  It uses the 'handshake' and 'unit'
	constructs.

	["ConC: A Language for Distributed Real-Time Programming",
	V.K. Garg et al, Computer Langs 16(1):5-18 (1991)].

	(02 Mar 1995)

concatenate

	To join together two or more files or lists to form one big
	one.

	The {Unix} {cat} command can be used to concatenate files.

	(22 Dec 1995)

concatenated key

	{compound key}

concentrator

	<communications> A kind of {multiplexor} where many inputs may
	be active simultaneously so the output bandwidth must be at
	least as great as the total bandwidth of all simultaneously
	active inputs.

	For example, a concentrator may be used to connect 24 2400 bps
	TTYs to a host via a 57600 bps channel.

	(02 Mar 1995)

conceptualisation

	<artificial intelligence> The collection of objects, concepts
	and other entities that are assumed to exist in some area of
	interest and the relationships that hold among them.  A
	conceptualisation is an {abstract}, simplified view of the
	world that we wish to represent.  For example, we may
	conceptualise a family as the set of names, sexes and the
	relationships of the family members.  Choosing a
	conceptualisation is the first stage of {knowledge
	representation}.

	Every {knowledge base}, {knowledge-based system}, or
	{knowledge-level agent} is committed to some
	conceptualisation, explicitly or implicitly.

	(19 Oct 1994)

conceptualization

	{conceptualisation}

Concert/C

	IBM TJWRC, July 1993.  A parallel extension of ANSI C with
	asynchronous {message passing}.

	{(ftp://software.watson.ibm.com/pub/concert/cncrt.B1.tar.Z)}.
	E-mail: <concert-c@watson.ibm.com>.

ConCoord

	<programming, parallel> An environment for programming
	networks of sequential and parallel computers.  ConCoord
	offers two contributions to {concurrent} programming.  First,
	it supports explicit exploitation of a variety of grains of
	concurrency.  Second, it separates the treatment of sequential
	and of concurrent aspects of programming into computation and
	"coordination" respectively.  Sequential {algorithm}s can be
	reused within computation and concurrent ones within
	coordination.

	(01 May 1995)

concrete class

	<programming> In {object-oriented programming}, a {class}
	suitable to be instantiated, as opposed to an {abstract
	class}.

	(01 May 1995)

Concrete Data Structure

	(CDS) A model of programming language terms developed in the
	context of constructing fully abstract semantics for
	sequential languages.  A CDS is a 4-tuple (C,V,E,|-) where C
	is a cell, V is a value, E is an event and |- is an "enabling
	relation".  An event is a cell and a value.  A cell C is
	"enabled" by a set of events S if S |- C.  A state is a set of
	events which are consistent in that the values they give for
	any cell are all equal.  Every cell in a state is enabled.

	[G. Berry, P.-L. Curien, "Theory and practice of sequential
	algorithms: the kernel of applicative language CDS", Algebraic
	methods in semantics, CUP 1985].

	(30 Nov 1994)

concrete syntax

	<language> The concrete syntax of a language including all the
	features visible in the source program such as {parentheses}
	and {delimiters}.  The concrete syntax is used when {parsing}
	the program or other input, during which it is usually
	converted into some kind of {abstract syntax tree}.

	Compare: {abstract syntax}.

	(21 Jul 1997)

CONCUR

	["CONCUR, A Language for Continuous Concurrent Processes",
	R.M.  Salter et al, Comp Langs 5(3):163-189 (1981)].

concurrency

	{multitasking}

Concurrent C

	1. An extension of {C} with {rendezvous}-based {concurrency}.
	Versions for most {Unix} systems are available commercially
	from {AT&T}.

	["Concurrent C", N.H. Gehani et al, Soft Prac & Exp
	16(9):821-844 (1986)].

	["The Concurrent C Programming Language", N. Gehani et al,
	Silicon Press 1989].

	(11 Nov 1994)

	2. An extension of {C} with {asynchronous} {message passing}.

	["Concurrent C: A Language for Distributed Systems",
	Y. Tsujino et al, Soft Prac & Exp 14(11):1061-1078 (Nov
	1984)].

	(11 Nov 1994)

Concurrent C++

	["Concurrent C++: Concurrent Programming with Class(es)",
	N. Gehani, Bell labs 1986].

Concurrent Clean

	<language> An alternative name for {Clean} 1.0.

	(08 Nov 1995)

Concurrent CLU

	Hamilton, 1984.

	["Preserving Abstraction in Concurrent Programming", R. Cooper
	et al, IEEE Trans Soft Eng SE-14(2):258-263 (Feb 1988)].

Concurrent Euclid

	A concurrent extension of a subset of {Euclid} ("{Simple
	Euclid}") developed by J.R. Cordy and R.C. Holt of the
	{University of Toronto} in 1980.

	It features {separate compilation}, {modules}, processes and
	{monitor}s, {signal} and {wait} on {condition variable}s,
	'converters' to defeat {strong type checking}, absolute
	addresses.  All procedures and functions are {re-entrant}.
	{TUNIS} (a {Unix}-like {operating system}) is written in
	Concurrent Euclid.

	["Specification of Concurrent Euclid", J.R. Cordy & R.C. Holt,
	Reports CSRI-115 & CSRI-133, CSRI, U Toronto, Jul 1980,
	rev. Aug 1981].

	["Concurrent Euclid, The Unix System, and Tunis," R.C. Holt,
	A-W, 1983].

Concurrent LISP

	["A Multi-Processor System for Concurrent Lisp", S.  Sugimoto
	et al, Proc 1983 Intl Conf parallel Proc, 1983 pp.135-143].

Concurrent ML

	(CML) A {concurrent} extension of {SML/NJ} written by J. Reppy
	at Cornell in 1990.  CML supports dynamic {thread} creation
	and synchronous {message passing} on typed channels.  Threads
	are implemented using first-class {continuation}s.
	First-class synchronous operations allow users to tailor their
	synchronisation abstractions for their application.  CML also
	supports both {stream I/O} and low-level I/O in an integrated
	fashion.

	Version 0.9.8 requires SML/NJ 0.75 (or later).

	{(ftp://ftp.cs.cornell.edu/pub/)}

	E-mail: <cml-bugs@cs.cornell.edu> (bugs),
	<sml-bugs@research.att.com> (bugs).

	["CML: A Higher-Order Concurrent Language", John H. Reppy,
	SIGPLAN Notices 26(6):293-305 (June 1991)].

	(21 Dec 1994)

Concurrent Oberon

	A {concurrent} version of {Oberon}.  There is an
	implementation the {Ceres} {workstation}.

	["Adding Concurrency to the Oberon System", S. Lalis et al,
	ETH Zurich, 1993].

	(11 Nov 1994)

Concurrent Object-Oriented Language

	(COOL) An extension of {C++} with task-level parallelism for
	{shared-memory} {multi-processor}s.

	["COOL: A Language for Parallel Programming", R. Chandra
	<rohit@seagull.stanford.edu> et al in Languages and Compilers
	for Parallel Computing, D. Gelernter et al eds, MIT Press
	1990, pp. 126-148].

	E-mail: Rohit Chandra <rohit@cool.stanford.edu>.

	(30 Nov 1994)

Concurrent Pascal

	An extension of a Pascal subset, {Sequential Pascal},
	developed by Brinch Hansen in 1972-75.  Concurrent Pascal was
	the first language to support {monitor}s.  It provided access
	to hardware devices through monitor calls and supported also
	processes and {class}es.

	["The Programming Language Concurrent Pascal", Per Brinch
	Hansen, IEEE Trans Soft Eng 1(2):199-207 (Jun 1975)].

	(30 Nov 1994)

Concurrent Prolog

	A {Prolog} variant with {guarded clause}s and
	{committed-choice nondeterminism} ({don't-care
	nondeterminism}) by Ehud "Udi" Shapiro, Yale
	<shapiro-ehud@yale.edu>.  A subset has been implemented, but
	not the full language.

	See also {Mandala}.

	["Concurrent Prolog: Collected Papers", E. Shapiro, V.1-2, MIT
	Press 1987].

	(30 Nov 1994)

Concurrent Scheme

	A parallel {Lisp}, for the {Mayfly} by M. Swanson
	<swanson%teewinot@cs.utah.edu>.

	["Concurrent Scheme", R.R. Kessler et al, in Parallel Lisp:
	Languages and Systems, T. Ito et al eds, LNCS 441, Springer
	1989].

	(30 Nov 1994)

ConcurrentSmalltalk

	A {concurrent} variant of {Smalltalk}.

	["Concurrent Programming in ConcurrentSmalltalk", Y. Yokote et
	al in Object-Oriented Concurrent Programming, A. Yonezawa et
	al eds, MIT Press 1987, pp. 129-158].

	(30 Nov 1994)

Concurrent SP/k

	<language> (CSP/k) A {PL/I}-like {concurrent} language.

	["Structured Concurrent Programming with Operating System
	Applications", R.C. Holt et al, A-W 1978].

	(15 Dec 1997)

condela

	Connection Definition Language.

	A {procedural}, parallel language for defining {neural
	network}s.

	{(ftp://tut.cis.ohio-state.edu/pub/condela)}

	(30 Nov 1994)

condition out

	To prevent a section of code from being compiled by
	surrounding it with a {conditional compilation} directive
	whose condition is always false.  The {canonical} examples of
	these directives are "#if 0" (or "#ifdef notdef", though some
	find the latter bletcherous) and "#endif" in {C}.  Compare
	{comment out}.

	(30 Nov 1994)

condom

	1. The protective plastic bag that accompanies 3.5-inch
	microfloppy diskettes.  Rarely, also used of (paper) disk
	envelopes.  Unlike the write protect tab, the condom (when
	left on) not only impedes the practice of {SEX} but has also
	been shown to have a high failure rate as drive mechanisms
	attempt to access the disk - and can even fatally frustrate
	insertion.

	2. The protective cladding on a {light pipe}.

	3. "keyboard condom": A flexible, transparent plastic cover
	for a keyboard, designed to provide some protection against
	dust and {programming fluid} without impeding typing.

	4. "elephant condom": the plastic shipping bags used inside
	cardboard boxes to protect hardware in transit.

	(14 Mar 1995)

confidence test

	<testing> Tests to confirm that the results of a program lie
	within certain ranges according to the expected probability
	distribution.

	[Is this correct?]

	(27 Oct 1997)

CONFIG.SYS

	<operating system> A text file containing special system
	configuration commands.  It is found in the {root directory}
	on an {MS-DOS} computer, typically on drive C (the {hard
	diosk}).  It is read by {MS-DOS} during computer boot-up,
	after the setup has been read from from {CMOS RAM} and before
	running {AUTOEXEC.BAT}.  It can be modified by the user.

	Some example commands which CONFIG.SYS might contain are:

		DEVICE=C:\DOS\HIMEM.SYS /testmem:off

	Load the {extended memory} manager.

		DEVICE=C:\DOS\EMM386.EXE RAM

	Load the {expanded memory} manager.

		BUFFERS=10,0

	Specify memory for {disk buffer}s.

		FILES=70

	Set the number of files that can be open at once.

		DOS=UMB

	DOS is located in {UppeMemoryBlock}.

		LASTDRIVE=Z

	Disk drives are A: to Z:.

		FCBS=16,0

	Set the number of {file control block}s.

		DEVICEHIGH /L:1,12048 =C:\DOS\SETVER.EXE

	Report the DOS version to older programs.

		DOS=HIGH

	DOS should maintain a link to {UMB}.

		COUNTRY=358,437 C:\DOS\COUNTRY.SYS

	Set the {country code} for some programs.

		STACKS=9,256

	Set {dynamic stack}s for hardware control.

		SHELL=C:\DOS\COMMAND.COM C:\DOS\ /E:1024 /p

	Set the location of the {command interpreter}.

	(16 Mar 1995)

configuration item

	<jargon> Hardware or software, or an aggregate of both, which
	is designated by the project configuration manager (or
	contracting agency) for {configuration management}.

	(29 May 1996)

configuration management

	<job> A discipline applying technical and administrative
	controls to:

	1. Identification and documentation of physical and functional
	characteristics of {configuration item}s.

	2. Any changes to characteristics of those configuration
	items.

	3. Recording and reporting of change processing and
	implementation of the system.

	See also {code management}, {software life-cycle}.

	(29 May 1996)

configuration programming

	<programming> An approach that advocates the use of a separate
	configuration language to specify the coarse-grain structure
	of programs.  Configuration programming is particularly
	attractive for {concurrent}, parallel and distributed systems
	that have inherently complex program structures.

	{Darwin} is an example of a configuration language.

	(14 Mar 1995)

conflation

	<database> Combining or blending of two or more versions of a
	text; confusion or mixing up.  Conflation {algorithms} are
	used in {databases}.

	[Any specific technical meaning?]

	(14 Apr 1996)

ConflictNet

	An IGC network serving groups and individuals working for
	social justice and conflict resolution.  ConflictNet's
	resources include guidelines for choosing a neutral third
	party, sample case development in conflict resolution,
	extensive bibliographies, legislative updates, educational
	materials and newsletters from around the world.

congestion

	When the offered load of a data communication path exceeds the
	capacity.

CONIC

	["Dynamic Configuration for Distributed Systems", J. Kramer et
	al, IEEE Trans Soft Eng SE-11(4):424-436 (Apr 1985)].

conjunction

	{AND}

Conjunctive Normal Form

	<logic> (CNF) A {logical formula} consisting of a
	{conjunction} of {disjunctions} of terms where no disjunction
	contains a conjunction.  Such a formula might also be
	described as a product of sums.  E.g. the CNF of

		(A and B) or C
	is
		(A or C) and (B or C).

	Contrast {Disjunctive Normal Form}.

	(10 Dec 1995)

connect

	<library, networking> {Unix} socket library routine to connect
	a socket that has been created on the local hosts to one at a
	specified socket address on the remote host.

	{Unix manual pages}: connect(2), accept(2).

	(21 Mar 1995)

connected graph

	<mathematics> A {graph} such that there is a path between any
	pair of nodes (via zero or more other nodes).

	Thus if we start from any node and visit all nodes connected
	to it by a single edge, then all nodes connected to any of
	them, and so on, then we will eventually have visited every
	node in the connected graph.

	(22 Sep 1996)

connected subgraph

	<mathematics> A {connected graph} consisting of a {subset} of
	the {nodes} and {edges} of some other graph.

	(22 Sep 1996)

connectionless protocol

	The data communication method in which communication occurs
	between {host}s with no previous setup.  {Packet}s sent
	between two hosts may take different routes.  {UDP} is a
	connectionless protocol.  Also called {packet switching}.
	Contrast {circuit switching}, {connection-oriented}.

Connection Machine LISP

	<language> {Lisp} with a parallel data structure, the
	'xapping', an array of values assigned to an {array} of sites.

	[G.L. Steele et al, "Connection Machine LISP: Fine-Grained
	Parallel Symbolic Processing", in Proc 1986 ACM Conf on LISP
	and Functional Prog, Aug 1986, pp.279-297].

	["Connection Machine LISP Reference Manual", Thinking Machines
	Corp, Feb 1987].

	(28 Feb 1995)

connection-oriented

	<networking> (Or connection-based, stream-oriented).  A type
	of {transport layer} data communication service that allows a
	{host} to send data in a continuous stream to another host.
	The transport service will guarantee that all data will be
	delivered to the other end in the same order as sent and
	without duplication.  Communication proceeds through three
	well-defined phases: connection establishment, data transfer,
	connection release.  The most common example is {Transmission
	Control Protocol} (TCP).

	Opposite of {connectionless}, {datagram}.  See also {circuit
	switching}, {packet switching}, {virtual circuit}.

connection-oriented network service

	<networking> (CONS) Because of the relatively long transit
	delays and inferior bit error rate of {WAN}s, a more
	sophisticated {connection-oriented} {protocol} is normally
	used.

	(08 Nov 1997)

connective

	An operator used in logic to combine two logical formulas.
	See {first order logic}.

connector conspiracy

	[probably came into prominence with the appearance of the
	KL-10 (one model of the {PDP-10}), none of whose connectors
	matched anything else].  The tendency of manufacturers (or, by
	extension, programmers or purveyors of anything) to come up
	with new products that don't fit together with the old stuff,
	thereby making you buy either all new stuff or expensive
	interface devices.  The KL-10 Massbus connector was actually
	*patented* by {DEC}, which reputedly refused to licence the
	design and thus effectively locked third parties out of
	competition for the lucrative Massbus peripherals market.
	This policy is a source of never-ending frustration for the
	diehards who maintain older PDP-10 or VAX systems.  Their
	{CPU}s work fine, but they are stuck with dying, obsolescent
	disk and tape drives with low capacity and high power
	requirements.

	A closely related phenomenon, with a slightly different
	intent, is the habit manufacturers have of inventing new screw
	heads so that only Designated Persons, possessing the magic
	screwdrivers, can remove covers and make repairs or install
	options.  Older Apple {Macintosh}es took this one step
	further, requiring not only a hex wrench but a specialised
	case-cracking tool to open the box.

	In these latter days of open-systems computing this term has
	fallen somewhat into disuse, to be replaced by the observation
	that "Standards are great!  There are so *many* of them to
	choose from!"  Compare {backward combatability}.

CONNIVER

	{Artificial intelligence} language for {automatic theorem
	proving}.  An outgrowth of {PLANNER}, based on {coroutine}s
	rather than {backtracking}.  Allowed multiple database
	contexts with hypothetical assertions.

	["The CONNIVER Reference Manual", D. McDermott & G.J. Sussman
	<gjs@zurich.ai.mit.edu>, AI Memo 259, MIT AI Lab, 1973].

	(10 Jan 1995)

Co-NP

	{complementary nondeterministic polynomial}

CONS

	{connection-oriented network service}

cons

	/konz/ or /kons/ [LISP, "construct"] A {Lisp} function which
	takes an element H and a list T and returns a new list whose
	head is H and whose tail is T.

	In {Lisp}, "cons" is the most fundamental operation for
	building structures.  It actually takes any two objects and
	returns a "{dotted-pair}" or two-branched tree with one object
	hanging from each branch.  Because the result of a cons is an
	object, it can be used to build {binary tree}s of any shape
	and complexity.

conservative evaluation

	Under this parallel evaluation strategy, no evaluation is
	started unless it is known to be needed.
	Opposite of speculative evaluation.

considered harmful

	Edsger W. Dijkstra's note in the March 1968 "Communications of
	the ACM", "Goto Statement Considered Harmful", fired the first
	salvo in the structured programming wars.  Amusingly, the ACM
	considered the resulting acrimony sufficiently harmful that it
	will (by policy) no longer print an article taking so
	assertive a position against a coding practice.  In the
	ensuing decades, a large number of both serious papers and
	parodies have borne titles of the form "X considered Y".  The
	structured-programming wars eventually blew over with the
	realisation that both sides were wrong, but use of such titles
	has remained as a persistent minor in-joke.

consistently complete

	[{domain theory}] {boundedly complete}.

console

	1. The operator's station of a {mainframe}.  In times past,
	this was a privileged location that conveyed godlike powers to
	anyone with fingers on its keys.  Under {Unix} and other
	modern {time-sharing} {operating system}s, such privileges are
	guarded by passwords instead, and the console is just the
	{tty} the system was booted from.  Some of the mystique
	remains, however, and it is traditional for {sysadmin}s to
	post urgent messages to all users from the console (on Unix,
	/dev/console).

	2. On {microcomputer} {Unix} boxes, the main screen and
	keyboard (as opposed to character-only terminals talking to a
	{serial port}).  Typically only the console can do real
	graphics or run {X}.  See also {CTY}.

console jockey

	{terminal junkie}

Consortium for Lexical Research

	(CLR) The Consortium for Lexical Research is a repository for
	natural language processing software, lexical data, tools and
	resources.  It was set up in July 1991 in the Computing
	Research Laboratory of New Mexico State University, Las
	Cruces, New Mexico.

	CLR maintains a public ftp site, and a separate members-only
	library.  Currently (Feb 1994) CLR has about 60 members,
	mostly academic institutions, including most US natural
	language processing centres.  Materials can be contributed to
	the archives in exchange for membership.

	{(ftp://clr.nmsu.edu/)} (128.123.1.12).  E-mail:
	<lexical@crl.nmsu.edu>.

constant applicative form

	(CAF) (Functional programming) A {supercombinator} which is
	not a {lambda abstraction}.  This includes truly constant
	expressions such as 12, (+ 1 2), [1,2,3] as well as partially
	applied functions such as (+ 4).  Note that this last example
	is equivalent under {eta abstraction} to \ x . + 4 x which is
	not a CAF.

	Since a CAF is a supercombinator, it contains no free
	variables.  Moreover, since it is not a lambda abstraction it
	contains no variables at all.  It may however contain
	identifiers which refer to other CAFs, e.g.

		c 3 where c = (* 2).

	A CAF can always be lifted to the top level of the program.
	It can either be compiled to a piece of graph which will be
	shared by all uses or to some shared code which will overwrite
	itself with some graph the first time it is evaluated.  A CAF
	such as

		ints = from 1  where  from n = n : from (n+1)

	can grow without bound but may only be accessible from within
	the code of one or more functions.  In order for the {garbage
	collector} to be able to reclaim such structures, we associate
	with each function a list of the CAFs to which it refers.
	When garbage collecting a reference to the function we collect
	the CAFs on its list.

	(30 Nov 1994)

constant folding

	<compiler> A {compiler} {optimisation} technique where
	constant subexpressions are evaluated at {compile time}.  This
	is usually only applied to built-in numerical and {boolean}
	operators whereas {partial evaluation} is more general in that
	expressions involving user-defined functions may also be
	evaluated at compile time.

	(20 Feb 1997)

Constantine/Yourdon

	{Yourdon/Constantine}

constant mapping

	Some TCP software constructs the destination Ethernet address
	from the top 24 bits of the Ethernet address followed by the
	low 24 bits of the (class A) destination Internet address.
	For this scheme the top 24 bits of the Ethernet address must
	be the same on all hosts on the net.  Contrast {ARP}.

constraint

	<programming, mathematics> A {Boolean} relation, often an
	equality or {ineqality} relation, between the values of one or
	more variables (often two).  E.g. x>3 is a constraint on x.
	{constraint satisfaction} is the process of assigning values
	to variables so that all constraints are true.

	{Usenet} newsgroup: {news:comp.constraints}.  {FAQ
	(http://web.cs.city.ac.uk/archive/constraints/constraints.html)}.

	(20 Feb 1997)

constraint functional programming

	(CFP) {Functional programming} plus {constraint}s.

Constraint Handling In Prolog

	<language> (CHIP) A {constraint logic programming} language
	developed by M. Dincbas at {ECRC}, Munich, Germany in 1985
	which includes {Boolean unification} and a symbolic
	{simplex}-like {algorithm}.  CHIP introduced the
	{domain-variable model}.

	["The Constraint Logic Programming Language CHIP", M. Dincbas
	et al, Proc 2nd Intl Conf on Fifth Generation Computer Sys,
	Tokyo (Nov 1988), pp.249-264].

	["Constraint Satisfaction in Logic Programming", Van
	Hentenryck.  Available from COSYTEC, 4 rue Jean Rostand,
	F91893 Orsay, France].

	(15 Nov 1994)

ConstraintLisp

	An {object-oriented} {constraint} language based on {CSP}.  An
	extension of {Common Lisp} and {CLOS}.

	["ConstraintLisp: An Object-Oriented Constraint Programming
	Language", Bing Liu <bing@iti.gov.sg> et al, SIGPLAN Notices
	27(11):17-26 (Nov 1992)].

Constraint Logic Programming

	(CLP) A programming framework based (like {Prolog}) on {LUSH}
	(or {SLD}) {resolution}, but in which {unification} has been
	replaced by a {constraint solver}.  A CLP {interpreter}
	contains a Prolog-like {inference engine} and an {incremental
	constraint solver}.  The engine sends constraints to the
	solver one at a time.  If the new constraint is consistent
	with the collected constraints it will be added to the set.
	If it was inconsistent, it will cause the engine to
	{backtrack}.

	{CLP*} is a variant.

	["Constraint Logic Programming", J. Jaffar et al, 14th POPL,
	ACM 1987].

	(01 Nov 1994)

CONSTRAINTS

	A language for solving {constraint}s using {value inference}.

	["CONSTRAINTS: A Language for Expressing Almost-Hierarchical
	Descriptions", G.J. Sussman et al, Artif Intell 14(1):1-39
	(Aug 1980)].

	(01 Nov 1994)

constraint satisfaction

	<application> The process of assigning values to variables
	while meeting certain requirements or "{constraints}".  For
	example, in {graph colouring}, a node is a variable, the
	colour assigned to it is its value and a link between two
	nodes represents the constraint that those two nodes must not
	be assigned the same colour.  In {scheduling}, constraints
	apply to such variables as the starting and ending times for
	tasks.

	The {Simplex} method is one well known technique for solving
	numerical constraints.

	The search difficulty of constraint satisfaction problems can
	be determined on average from knowledge of easily computed
	structural properties of the problems.  In fact, hard
	instances of {NP-complete} problems are concentrated near an
	abrupt transition between under- and over-constrained
	problems.  This transition is analogous to phase transitions
	in physical systems and offers a way to estimate the likely
	difficulty of a constraint problem before attempting to solve
	it with search.

	{Phase transitions in search
	(ftp://parcftp.xerox.com/pub/dynamics/constraints.html)} (Tad
	Hogg, {XEROX PARC}).

	(15 Feb 1995)

constructed type

	A type formed by applying some {type constructor function} to
	one or more other types.  The usual constructions are
	functions: t1 -> t2, products: (t1, t2), sums: t1 + t2 and
	lifting: lift(t1).

	(In {LaTeX}, the lifted type is written with a subscript
	{\perp}).

	See also {algebraic data type}, {primitive type}.

	(03 Feb 1995)

constructive

	<mathematics> A proof that something exists is "constructive"
	if it provides a method for actually constructing it.
	{Cantor}'s proof that the {real number}s are {uncountable} can
	be thought of as a *non-constructive* proof that {irrational
	number}s exist.  (There are easy constructive proofs, too; but
	there are existence theorems with no known constructive
	proof).

	Obviously, all else being equal, constructive proofs are
	better than non-constructive proofs.  A few mathematicians
	actually reject *all* non-constructive arguments as invalid;
	this means, for instance, that the law of the {excluded
	middle} (either P or not-P must hold, whatever P is) has to
	go; this makes proof by contradiction invalid.  See
	{intuitionist logic} for more information on this.

	Most mathematicians are perfectly happy with non-constructive
	proofs; however, the constructive approach is popular in
	theoretical computer science, both because computer scientists
	are less given to abstraction than mathematicians and because
	{intuitionist logic} turns out to be the right theory for a
	theoretical treatment of the foundations of computer science.

	(13 Apr 1995)

Constructive Cost Model

	<programming> (COCOMO) A method for evaluating the cost of a
	{software} package proposed by Dr Barry Boehm.  There are a
	number of different types:

	The Basic COCOMO Model estimates the effort required to
	develop software in three modes of development ({Organic
	Mode}, {Semidetached Mode}, or {Embedded Mode}) using only
	{DSI}s as an input.  The Basic model is good for quick, early,
	and rough order of magnitude estimates.

	The Intermediate COCOMO Model an extension of the Basic COCOMO
	model.  The Intermediate model uses an {Effort Adjustment
	Factor} (EAF) and slightly different coefficients for the
	effort equation than the Basic model.  It produces better
	results than the Basic model because the user supplies
	settings for cost drivers that determine the effort and
	duration of the software projects.  The Intermediate model
	also allows the system to be divided and estimated in
	components.  DSI values and cost drivers can be chosen for
	individual components instead of for the system as a whole.

	The Detailed COCOMO Model differs from the Intermediate COCOMO
	model in that it uses effort multipliers for each phase of the
	project.  These phase dependent effort multipliers yield
	better estimates because the {cost driver} ratings may be
	different during each phase.  The detailed model also provides
	a three-level product hierarchy and has some other
	capabilities such as a procedure for adjusting the phase
	distribution of the development schedule.

	["Software Engineering Economics", B. Boehm, Prentice-Hall,
	1981].

	(29 May 1996)

constructor

	<programming> 1. In {functional programming} and {type
	theory}, one of the symbols used to create an object with an
	{algebraic data type}.

	2. A function provided by a {class} in {C++} to {instantiate}
	an object, i.e. to name it and initialise it.  The constructor
	function has the same name as the class.  A class may also
	have a {destructor} function to destroy objects of that class.

	(20 Oct 1994)

Consul

	<language> A {constraint}-based [{future}-based?] language
	with {Lisp}-like {syntax}.

	["Consul: A Parallel Constraint Language", D. Baldwin, IEEE
	Software 6(4):62-71].

	(30 Nov 1994)

container class

	A {class} whose instances are collections of other objects.
	Examples include {stack}s, {queue}s, {list}s and {array}s.

content addressable memory

	(CAM, or "associative memory") A kind of storage device which
	includes comparison logic with each bit of storage.  A data
	value is broadcast to all words of storage and compared with
	the values there.  Words which match are flagged in some way.
	Subsequent operations can then work on flagged words, e.g. read
	them out one at a time or write to certain bit positions in
	all of them.  A CAM can thus operate as a {data parallel}
	({SIMD}) processor.

	CAMs are often used in {cache}s and {memory management unit}s.

	(16 Feb 1995)

content-based information retrieval

	<image, algorithm> (CBIR) A general term for methods for using
	information stored in image archives.

	[Details?]

	[IEEE Computer, September 1995].

	(23 Nov 1995)

Content Data Model

	(CDM) An {SGML}-based {DoD} specification for interactive
	manuals.

	(15 Feb 1995)

content-free

	(By analogy with "context-free") Used of a message that adds
	nothing to the recipient's knowledge.  Though this adjective
	is sometimes applied to {flamage}, it more usually connotes
	derision for communication styles that exalt form over
	substance or are centred on concerns irrelevant to the subject
	ostensibly at hand.  Perhaps most used with reference to
	speeches by company presidents and other professional
	manipulators.  See also {four-colour glossies}.

contention slot

	(Or contention period).  Minimum time a {host} must transmit
	for before it can be sure that no other host's {packet} has
	collided with its transmission.  If the maximum propagation
	delay from one host to any other is T, then a host that starts
	to transmit at time t0 may collide with a host that starts
	just before t0 + T.  The first host will not detect the
	collision until time t0 + 2T.

context

	That which surrounds, and gives meaning to, something else.

	<grammar> In a {grammar} it refers to the symbols before and
	after the symbol under consideration.  If the syntax of a
	symbol is independent of its context, the grammar is said to
	be {context-free}.

context clash

	<grammar> When a {parser} cannot tell which alternative
	{production} of a {syntax} applies by looking at the next
	input {token} ("lexeme").

	E.g. given syntax

		C -> A | b c

		A -> d | b e

	If you're parsing non-terminal C and the next token is 'b',
	you don't know whether it's the first or second alternative of
	C since they both can start with b.

	To discover whether a grammar has a context clash:

	For each non-terminal, N, with multiple alternatives, look at
	the first symbol of each alternative's right-hand side, call
	it s.  If s is the empty string, then find the set FOLLOWER(N)
	otherwise find the set FIRST*(s).  If any of the sets for N's
	alternatives intersect then there will be a context clash when
	parsing N.  If the next input symbol is one of those in the
	intersection of two sets then you won't know which of the
	alternatives applies.

	FIRST(s) is the set of symbols with which s can start,
	including s itself.  If s is a non-terminal then FIRST(s) also
	includes the first symbol of each alternative right-hand side
	of s.  The '*' in FIRST*(s) means the "{transitive closure}"
	of FIRST which means keep applying FIRST to each element of
	the result until the result doesn't change.  I.e. start with
	just the set R = {s}, then for each non-terminal x in R, add
	FIRST(x) to R.  Keep doing this until nothing new is added.
	(We are really only interested in the terminals in FIRST*(s)
	but some definitions include the non-terminals).

	FOLLOWER(N) is the set of symbols which can come after N in a
	sentence.  Find each occurrence of N on the right-hand side of
	a rule, e.g.

		M -> ... | ... N ... | ...

	If there is a symbol s immediately following N then add
	FIRST*(s) to the result (again, we're only interested in the
	terminal symbols in FIRST*(s)) if there is no symbol after N
	in the alternative then add FOLLOWER(M) to the result (i.e. if
	N can be the last symbol in an M then anything that can follow
	M can also follow N).

	If a grammar can generate the same sentence in multiple
	different ways (with different parse tress) then it is
	ambiguous.  An ambiguity must start with a context clash (but
	not all context clashes imply ambiguity).  The context clash
	occurs when trying to parse the first token of the phrase with
	multiple parses - you will not be able to tell which
	alternative to take.  To see if a context clash is also a case
	of ambiguity you would need to follow the alternatives
	involved in each context clash to see if they can generate the
	same complete sequence of tokens.

	(05 Apr 1995)

context-free

	Said of a {grammar} where the syntax of each constituent is
	independent of the symbols occuring before and after it in a
	sentence.  {Parser}s for such grammars are simpler than those
	for context-dependent grammars because the parser need only
	know the current symbol.

context switch

	<operating system> When a {multitasking} {operating system}
	stops running one {process} and starts running another.  Many
	operating systems implement concurrency by maintaining
	separate environments or "contexts" for each process.  The
	amount of separation between processes, and the amount of
	information in a context, depends on the operating system but
	generally the OS should prevent processes interfering with each
	other, e.g. by modifying each other's memory.

	A context switch can be as simple as changing the value of the
	{program counter} and {stack pointer} or it might involve
	resetting the {MMU} to make a different set of memory {pages}
	available.

	In order to present the user with an impression of parallism,
	and to allow processes to respond quickly to external events,
	many systems will context switch tens or hundreds of times per
	second.

	(18 Dec 1996)

Contextually Communicating Sequential Processes

	(CCSP) A notation based on {CSP}.

	["Contextually Communicating Sequential Processes - A Software
	Engineering Approach", M. Hull et al, Software Prac & Exp
	16(9):845-864 (Sept 1986)].

	(01 Nov 1994)

continental drift

	In 1980 {David Turner} remarked that {KRC} ran "at the speed
	of the continental drift".

	(06 Dec 1994)

continuation

	See {continuation passing style}.

Continuation Passing Style

	(CPS) A semantically clean language with continuations used as
	an intermediate language for {Scheme} and the {SML/NJ}
	{compiler}.

	["Rabbit: A Compiler for Scheme", G.L. Steele, AI-TR-474, MIT
	(May 1978)].

	["Compiling With Continuations", A. Appel, Cambridge U Press
	1992].

continuation passing style

	<programming> (CPS) A style of programming in which every user
	function f takes an extra argument c known as a continuation.
	Whenever f would normally return a result r to its caller, it
	instead returns the result of applying the continuation to r.
	The continuation thus represents the whole of the rest of the
	computation.  Some examples:

	 normal (direct style)    -->	continuation passing

	 square x = x * x		square x k = k (x*x)

	 g (square 23)			square 23 g

	 (square 3) + 1			square 3 ( \ s . s+1 )

	(04 Apr 1995)

continuations

	See {continuation passing style}.

continuous function

	A function f : D -> E, where D and E are {cpo}s, is continuous
	if it is {monotonic} and

		f (lub Z) = lub { f z | z in Z }

	for all {directed} sets Z in D.  In other words, the image of
	the lub is the lub of any directed image.

	All {additive} functions (functions which preserve all lubs)
	are continuous.  A continuous function has a {least fixed
	point} if its {domain} has a least element, {bottom} (i.e. it
	is a cpo or a "pointed cpo" depending on your definition of a
	cpo).  The {least fixed point} is

		fix f = lub {f^n bottom | n = 0..infinity}

	(30 Nov 1994)

Continuous System Modeling Program

	(CSMP) A program for {simulation} of dynamics of continuous
	systems.  It is similar to {CSSL}.

	["A Guide to Using CSMP - The Continuous System Modeling
	Program", Frank H. Speckhart et al, P-H 1976].

	(23 Feb 1995)

continuous wave

	<communications> (CW) A term from early radio history, when
	the {spark gap} method of transmission was replaced by
	vacuum-tube oscillators.  A spark gap initiates a ringing,
	damped sinusoidal wave in a tuned circuit consisting of an
	inductor and capacitor.  The energy in this circuit is
	constantly changing between the capacitor's electrostatic
	field and the inductor's magnetic field.  The energy is then
	coupled, loosely (so as not to dampen the wave too quickly),
	to the radiating antenna.

	In contrast, a vacuum-tube oscillator constantly adds energy
	to the tuned circuit, compensating for the amount coupled to
	the antenna, and the transmitted energy or "wave," is
	therefore "continuous".

	Many (especially radio amateurs) continue to understand "CW"
	to mean transmission by means a signal of a single frequency
	which is either on or off (e.g. {Morse code}), as opposed to a
	carrier which varies continuously in amplitude, frequency or
	phase.  Some would even call the former "unmodulated" even
	though turning on and off is actually an extreme form of
	amplitude modulation.

	(15 Mar 1995)

contraction

	{reduction}

control

	<character> (Or "ctrl", "^") One (or a pair) of {modifier
	keys} found on all modern {keyboards}.  If the control key is
	held down while pressing and releasing certain other keys then
	a "{control character}" is generated, e.g. holding control and
	hitting "A" generates control-A ({ASCII} code 1).  The ASCII
	code for the control character is generally 64 less than that
	for the unmodified character.

	The control key does not generate any character on its own but
	most modern keyboards and {operating systems} allow a program
	to tell whether each of the individual keys on the keyboard
	(including modifier keys) is pressed at any time.

	Control characters mostly have some kind of "non-printing"
	effect on the output such as ringing the bell (Control-G) or
	advancing to the next line (Control-J).  Most have alternative
	names suggesting these functions (Bell, Line Feed, etc.).

	See {ASCII character table}.

	(10 Jul 1997)

control-C

	<character> (Or ETX, End of Text) The {ASCII} character with
	code 3.

	Control-C is the interrupt character used on many {operating
	system}s, including {Unix} and {MS-DOS} to abort a running
	program.

	Among {BSD} {Unix} hackers, the canonical humorous response
	to "Give me a break!" is "Control C".

	(16 Mar 1995)

control code

	<character> A character which is input or output to cause some
	special action rather than to appear as part of the data.

	Most control characters are input by holding down (either of)
	the "Control" key(s) on the keyboard and simultaneously
	pressing another key which may be a letter or (depending on
	the keyboard and {operating system}) certain punctuation
	characters.  Some control codes usually have their own special
	keys: {escape}, {tab}, {delete}, {backspace}, {return} and can
	thus be entered with a single keypress.

	Different {operating system}s and programs have different
	conventions for what effect typing certain control codes will
	have, such as interrupting the current process or suspending
	output.

	Control codes may be output for their effect on the output
	device, e.g. moving the cursor or print head to the start of a
	new line.

	See {control-O}, {control-Q}, {control-S}.

	(23 Mar 1995)

control flow

	<programming> (Or "flow of control") The sequence of execution
	of instructions in a program.  This is determined at run-time
	by the input data and by the {control structures} (e.g. "if"
	statements) used in the program.

	Not to be confused with "{flow control}".

	(14 Sep 1997)

control-G

	{bell}

controller

	<hardware> Part of a computer, typically a separate circuit
	board, which allows the computer to use certain kinds of
	{peripheral} devices.  A disk controller is used to connect
	{hard disk}s and {floppy disk}s, a network controller is used
	for {Ethernet}.

	The most common disk controllers in use are {IDE} and {SCSI}
	controllers.  Most home {personal computer}s use IDE
	controllers.  High end PCs, {workstation}s and network {file
	server}s mostly have SCSI controllers.

	[Other kinds?]

	(20 Oct 1995)

control-O

	<character> {ASCII} character 15 (SI).

	The character used on some {operating system}s to abort output
	but allow the program to keep on running.  The name "SI" comes
	from its use on some terminals to "shift in" an alternative
	character set.  "SO" is {Control-N}.

	Compare {control-S}.

	(16 Mar 1995)

Control Program for Microcomputers

	<operating system> (CP/M) An early {microcomputer} {operating
	system} written by Gary Kildall of {Digital Research} for
	{8080} and {Zilog Z80}-based 8-bit computers.  CP/M was very
	popular in the late 1970s but was virtually wiped out by
	{MS-DOS} after the release of the {IBM PC} in 1981.

	Many of CP/M's features and conventions strongly resemble
	those of early {DEC} operating systems such as {TOPS-10},
	{OS/8}, {RSTS} and {RSX-11}.

	CP/M might have been the {OS} for the {IBM PC} instead of
	{MS-DOS} but Kildall wanted to keep control of his creation
	and only license it to IBM.  Big Blue however wanted to own
	and control it completely.  Kildall spent the day IBM's reps
	wanted to meet him enjoying the perfect flying weather in his
	private plane.

	(07 Jan 1996)

control-Q

	<character> (Or XON, DC1, {Device Control} 1) The character
	with {ASCII} code 17, used in {software handshaking} to resume
	output after a previous {control-S}.

	(28 Jun 1996)

control-S

	<character> (Or XOFF, DC3, {Device Control} 3) The character
	with {ASCII} code 19, used in {software handshaking} to
	temporarily suspend output until a {control-Q} is received.

	(28 Jun 1996)

control structure

	<programming> One of the instructions, statements or groups of
	statements in a programming language which determines the
	sequence of execution of other instructions or statements (the
	{control flow}).

	In {assembly language} this typically consists of {jumps} and
	{conditional jumps} along with {procedure} call and return
	though some architectures include other constructs such as an
	instruction which skips the following instruction depending on
	some condition ({PDP}?), various kinds of {loop} instructions
	(later {Motorola 680x0}) or conditional execution of all
	instructions (Advanced RISC Machine).

	Basic control structures (whatever their names in particular
	languages) include "if CONDITION then EXPRESSION else
	EXPRESSION", the {switch statement}, "while CONDITION do
	EXPRESSION", "gosub", the suspect "{goto}" and the much-feared
	"{come from}".  Other constructs handle errors and
	{exceptions} such as {traps} and {interrupts}.

	(14 Sep 1997)

control tty

	(/dev/ptyp*) The network side of a {pseudo-tty}.

control unit

	<processor> The part of a {CPU} responsible for performing the
	{machine cycle} - fetch, decode, execute, store.

	(23 Apr 1995)

conventional memory

	<storage> The first 640 {kilobytes} of an {IBM PC}'s memory.
	Prior to {EMS}, {XMS}, and {HMA}, {real mode} application
	could use only this part of the memory.

	(10 Jan 1996)

Convergent Technologies

	<company> A company formed by a small group of people who left
	{Intel Corporation} in 1979.  {Convergent Technologies
	Operating System} was their first {operating system}.

	(24 Sep 1996)

Convergent Technologies Operating System

	<operating system> (CTOS, BTOS, STARSYS) /see-toss/ A modular,
	{message-passing}, {multi-process} based {operating system}.

	{Convergent Technologies}' first product was the IWS
	(Integrated Workstation) based on the {Intel 8086}, which had
	CTOS as its operating system.  It is a modular operating
	system with built in {local area networking}.  CTOS supports
	multiple processes or {threads}, and message-based
	{inter-process communication}.

	Companies which have licensed CTOS include {Burroughs} (BTOS)
	and {Bull} (STARSYS).  The largest customer was {Unisys}, with
	whom Convergent Technologies merged to become one company in
	1988.  CTOS now has over 800,000 users worldwide and the
	latest version is CTOS III 1.3.2.  It runs on Intel {Pentium}
	computers, and can run concurrently with {Microsoft} {Windows
	NT}.

	For some reason, CTOS is no longer marketted to new customers,
	although there is a support comittment for existing customers
	until 2001.  Major customers include Police Forces, Banks, and
	Airlines.

	["Exploring CTOS", Miller E., Crook J., Loy J. - Prentice
	Hall, ISBN 0-13-297342-1, 1991].

	(24 Sep 1996)

Conversational LISP

	(CLISP) A mixed English-like, {ALGOL}-like surface {syntax}
	for {Interlisp}.

	["CLISP: Conversational LISP", W. Teitelman, in Proc Third
	Intl Joint Conf on AI, Stanford, Aug 1973, pp.686-690].

	(01 Nov 1994)

converse

	The truth of a {proposition} of the form A => B and its
	converse B => A are shown in the following truth table:

		A   B | A => B   B => A
		------+----------------
		f   f |	  t	   t
		f   t |	  t	   f
		t   f |	  f	   t
		t   t |	  t	   t

conversion to iteration

	A transformation applied to functional programs to replace
	recursion with iteration.  A tail-recursive function can be
	compiled to an iterative loop where the recursive call becomes
	a jump back to the start and the parameters are held in
	registers which are updated with new values each time around
	the loop.  See Iteration, Tail recursion optimisation.

CONVERT

	1. String processing language, combined the pattern matching
	and transformation operations of COMIT with the recursive data
	structures of Lisp.  "Convert", A. Guzman et al, CACM
	9(8):604-615 (Aug 1966).

	2. Early language to convert programs and data from one
	language to another.  "CONVERT Manual", OLI Systems Inc (Oct
	1976).

convert.f90

	A {Fortran77} to {Fortran90} translator by Michael Metcalf
	<metcalf@cernvm.cern.ch>.  The significant differences between
	the two Fortrans make this package useful.

	{(ftp://jkr.cc.rl.ac.uk/pub/MandR/convert.f90)}

	(17 Jul 1993)

Convex Computer Corporation

	<company> A mini-super-computer manufacturer.

	Address: Richardson, Texas, USA.

	(01 Mar 1995)

convex hull

	<mathematics, graphics> For a {set} S in space, the smallest
	{convex set} containing S.  In the plane, the convex hull can
	be visualized as the shape assumed by a rubber band that has
	been stretched around the set S and released to conform as
	closely as possible to S.

	(03 Aug 1997)

Conway's Law

	The rule that the organisation of the software and the
	organisation of the software team will be congruent;
	originally stated as "If you have four groups working on a
	compiler, you'll get a 4-pass compiler".

	Melvin Conway, an early proto-hacker, wrote an {assembler} for
	the {Burroughs 220} called SAVE.  The name "SAVE" didn't stand
	for anything; it was just that you lost fewer card decks and
	listings because they all had SAVE written on them.

cooC

	Concurrent Object-Oriented C.  A language with {concurrent}
	{object} execution from {Toshiba}.  It has synchronous and
	asynchronous {message passing} and has been implemented for
	{SunOS}.

	{(ftp://tsbgw.isl.rdc.toshiba.co.jp/pub/toshiba/cooc-beta.1.1.tar.Z)}.
	E-mail: <cooc@isl.rdc.toshiba.co.jp>.

	[SIGPLAN Notices 28(2)].

cooccurrence matrix

	<mathematics> Given a position operator P(i,j), let A be a nxn
	matrix whose element A[i][j] is the number of times that
	points with grey level (intensity) g[i] occur, in the position
	specified by P, relative to points with grey level g[j].  Let
	C be the nxn matrix that is produced by dividing A with the
	total number of point pairs that satisfy P.  C[i][j] is a
	measure of the joint probability that a pair of points
	satisfying P will have values g[i], g[j].  C is called a
	cooccurrence matrix defined by P.  Examples for the operator P
	are: "i above j", "i one position to the right and two below
	j", etc.

	(11 May 1995)

cookbook

	<programming> (From amateur electronics and radio) A book of
	small code segments that the reader can use to do various
	{magic} things in programs.

	One current example is the "{PostScript} Language Tutorial and
	Cookbook" by Adobe Systems, Inc (Addison-Wesley, ISBN
	0-201-10179-3), also known as the {Blue Book} which has
	recipes for things like wrapping text around arbitrary curves
	and making 3D fonts.

	Cookbooks, slavishly followed, can lead one into {voodoo
	programming}, but are useful for hackers trying to {monkey up}
	small programs in unknown languages.  This function is
	analogous to the role of phrasebooks in human languages.

	(04 Nov 1994)

cooked mode

	The normal{Unix} character-input mode, with interrupts enabled
	and with erase, kill and other special-character
	interpretations performed directly by the tty driver.
	Opposite of {raw mode}.  See also {rare mode}.  Other
	operating systems often have similar mode distinctions, and
	the raw/rare/cooked way of describing them has spread widely
	along with the {C} language and other Unix exports.  Most
	generally, "cooked mode" may refer to any mode of a system
	that does extensive preprocessing before presenting data to a
	program.

cookie

	1. <protocol> A handle, transaction ID, or other token of
	agreement between cooperating programs.  "I give him a packet,
	he gives me back a cookie".

	The claim check you get from a dry-cleaning shop is a perfect
	mundane example of a cookie; the only thing it's useful for is
	to relate a later transaction to this one (so you get the same
	clothes back).

	Another example is an {HTTP cookie}.

	Compare {magic cookie}; see also {fortune cookie}.

	2. <security, jargon> A {cracker} term for the {password} list
	on a {multi-user} computer.

	3. <jargon> An adjective describing a computer that just
	became {toast}.

	(14 Apr 1997)

cookie bear

	{cookie monster}

cookie file

	<operating system> A collection of {fortune cookies} in a
	format that facilitates retrieval by a {fortune} program.
	There are many cookie files in public distribution, and site
	admins often assemble their own from various sources.

	(07 Jan 1997)

cookie jar

	1. <programming> An area of memory set aside for storing
	{cookies}.  Most commonly heard in the {Atari ST} community;
	many useful ST programs record their presence by storing a
	distinctive {magic number} in the jar.  Programs can inquire
	after the presence or otherwise of other programs by searching
	the contents of the jar.

	2. <security> A {cracker} term for the password file of a
	multi-user computer.

	(12 Feb 1997)

cookie monster

	<recreation> (From the children's TV program "Sesame Street")
	Any of a family of early (1970s) hacks reported on {TOPS-10},
	{ITS}, {Multics} and elsewhere that would lock up either the
	victim's terminal (on a {time-sharing} machine) or the
	{console} (on a batch {mainframe}), repeatedly demanding "I
	WANT A COOKIE".  The required responses ranged in complexity
	from "COOKIE" through "HAVE A COOKIE" and upward.

	See also {wabbit}.

	(12 Feb 1997)

cooky

	{cookie}

COOL

	1. {Concurrent Object-Oriented Language}.

	2. CLIPS Object-Oriented Language?

	3. A C++ class library developed at {Texas Instruments}.  COOL
	contains a set of containers like Vectors, List, Hash_Table,
	etc.  It uses a shallow hierarchy with no common base class.
	The functionality is close to Common Lisp data structures
	(like libg++).  The template syntax is very close to Cfront3.x
	and g++2.x.  Can build shared libraries on Suns.

	JCOOL's main difference from COOL and GECOOL is that it uses
	real C++ templates instead of a similar syntax that is
	preprocessed by a special 'cpp' distributed with COOL and
	GECOOL.

	{(ftp://csc.ti.com/pub/COOL.tar.Z)}

	GECOOL, JCOOL: {(ftp://cs.utexas.edu/pub/COOL/)}.

	E-mail: Van-Duc Nguyen <nguyen@crd.ge.com>

	(05 Aug 1992)

CooL

	<language> Combined object-oriented Language.

	An {object-oriented} language from the {ITHACA} {Esprit}
	project, which combines {C}-based languages with {database}
	technology.

	(15 Mar 1995)

Co-operative Development Environment

	<tool, product> (CDE) A set of tools from {Oracle} for
	enterprise-wide, {client/server} {application} development.

	(15 Mar 1995)

Cooperative Information System

	<networking> (CIS) Networked computers which support
	individual or collaborative human work, and manage access to
	information and computing services.  Computation is done
	{concurrent}ly over the network by cooperative {database}
	systems, {expert system}s, multi-agent planning systems, and
	other software application systems ranging from the
	conventional to the advanced.

	(11 May 1995)

cooperative multitasking

	<parallel, operating system> A form of {multitasking} where it
	is the responsibility of the currently running task to give up
	the processor to allow other tasks to run.  This contrasts
	with {pre-emptive multitasking} where the task {scheduler}
	periodically suspends the running task and restarts another.

	Cooperative multitasking requires the programmer to place
	calls at suitable points in his code to allow his task to be
	{deschedule}d which is not always easy if there is no obvious
	top-level {main loop} or some routines run for a long time.
	If a task does not allow itself to be descheduled all other
	tasks on the system will appear to "freeze" and will not
	respond to user action.

	The advantage of cooperative multitasking is that the
	programmer knows where the program will be descheduled and can
	make sure that this will not cause unwanted interaction with
	other processes.  Under {pre-emptive multitasking}, the
	scheduler must ensure that sufficient state for each process
	is saved and restored that they will not interfere.  Thus
	cooperative multitasking can have lower {overheads} than
	pre-emptive multitasking because of the greater control it
	offers over when a task may be descheduled.

	Cooperative multitasking is used in {RISC OS}, {Microsoft
	Windows} and {Macintosh} {System 7}.

	(20 Mar 1995)

coordinate

	<mathematics> One member of a {tuple} of numbers which defines
	the position of a point in some space.  Commonly used
	coordinate systems have as many coordinates as their are
	dimensions in the space, e.g. a pair for two dimensions.  The
	most common coordinate system is {Cartesian coordinates},
	probably followed by {polar coordinates}.

	(09 Jul 1997)

Coordinating Committee for Intercontinental Research Networks

	(CCIRN) A committee that includes the United States FNC and
	its counterparts in North America and Europe.  Co-chaired by
	the executive directors of the Federal Networking Council and
	the European Association of Research Networks (RARE), the
	CCIRN provides a forum for cooperative planning among the
	principal North American and European research networking
	bodies.

	(30 Nov 1994)

copious free time

	(Apple; originally from the introduction to Tom Lehrer's song
	"It Makes A Fellow Proud To Be A Soldier") Used ironically to
	indicate the speaker's lack of the quantity in question; a
	mythical schedule slot for accomplishing tasks held to be
	unlikely or impossible.  Sometimes used to indicate that the
	speaker is interested in accomplishing the task, but believes
	that the opportunity will not arise.  "I'll implement the
	automatic layout stuff in my copious free time."

	The phrase is also used for time reserved for bogus or
	otherwise idiotic tasks, such as implementation of bad
	{chrome}, or the stroking of {suit}s.  "I'll get back to him
	on that feature in my copious free time."

	(30 Nov 1994)

copper

	Conventional electrical network cable with a core conductor of
	copper (or aluminium!)

	Opposed to {light pipe} or, say, a short-range microwave link.

	(30 Nov 1994)

Copper Distributed Data Interface

	(CDDI) {FDDI} running over conventional copper cables.  A
	{Cisco}/{Crescendo} copyright term(?).  All {FDDI}
	connections, {single-attached} or {dual-attached}, can be
	either {optical fibre} or copper.

	(14 Dec 1994)

coprocessor

	Any computer processor which assists the main processor (the
	"{CPU}") by performing certain special functions, usually much
	faster than the main processor could perform them in software.
	The coprocessor often decodes instructions in parallel with
	the main processor and executes only those instructions
	intended for it.

	The most common example is a {floating point} coprocessor (or
	"{FPU}"), others are graphics and networking.

	(05 Jan 1995)

copybook

	<programming, library> (Or "copy member", "copy module") A
	common piece of {source code} designed to be copied into many
	source programs, used mainly in {IBM} {DOS} {mainframe}
	programming.

	In {mainframe} {DOS} (DOS/VS, DOS/{VSE}, etc.), the copybook
	was stored as a "book" in a {source} library.  A library was
	comprised of "books", prefixed with a letter designating the
	language, e.g., A.name for Assembler, C.name for Cobol, etc.,
	because {DOS} didn't support multiple libraries, private
	libraries, or anything.  This term is commonly used by {COBOL}
	programmers but is supported by most {mainframe} languages.
	The {IBM} {OS} series did not use the term "copybook", instead
	it referred to such files as "libraries" implemented as
	"partitioned data sets" or {PDS}.

	Copybooks are functionally equivalent to {C} and {C++}
	{include} files.

	(31 Jul 1997)

copybroke

	<security> /kop'ee-brohk/ (Or "copywronged" - a play on
	"{copyright}") 1. Used to describe an instance of a
	{copy-protected} program that has been "broken"; that is, a
	copy with the copy-protection scheme disabled or removed.

	2. Copy-protected software which is unusable because of some
	{bit-rot} or {bug} that has confused the {copy protection}.

	3. Used to describe data damaged because of a side effect of a
	copy protection system.

	(16 Mar 1997)

copying garbage collection

	A {garbage collection} method where memory is divided into two
	equal halves, known as the "from space" and "to space".
	Garbage collection copies active cells from the from space to
	the to space and leaves behind an invisible pointer (an
	"indirection") from the old position to the new copy.  Once
	all active cells have been copied in one direction, the spaces
	are swapped and the process repeated in the opposite
	direction.

copyleft

	<legal> /kop'ee-left/ (A play on "copyright") The {copyright}
	notice and {General Public License} applying to the works of
	the {Free Software Foundation}, granting reuse and
	reproduction rights to everyone.

	Typically copyrights take away freedoms; copyleft preserves
	them.  It is a legal instrument that requires those who pass
	on a program to include the rights to use, modify, and
	redistribute the code; the code and the freedoms become
	legally inseparable.

	The copyleft used by the GNU Project combines a regular
	copyright notice and the "GNU General Public License" (GPL).
	The GPL is a copying license which basically says that you
	have the aforementioned freedoms.  The license is included in
	each GNU source code distribution and manual.

	See also {General Public Virus}.

	(18 Apr 1995)

copy member

	{copybook}

copy module

	{copybook}

copy protection

	A class of methods for preventing incompetent pirates from
	stealing software and legitimate customers from using it.
	Considered silly.

copyright

	<legal> The exclusive rights of the owner of the copyright on
	a work to make and distribute copies, prepare derivative works
	and perform and display the work in public (these last two
	mainly apply to plays, films, dances and the like, but could
	also apply to software).

	A work, including a piece of software, is under copyright if
	it displays a copyright notice.  The copyright owner is the
	person or company whose name appears in the copyright notice
	on the box, or the disk or the screen or wherever.

	A copyright notice has three parts.  The first can be either a
	c with a circle around it ({LaTeX} \copyright), or the word
	Copyright or the abbreviation Copr.  A "c" in parentheses:
	"(c)" has no legal meaning.  This is followed by the name of
	the copyright holder and the year.

	Countries around the world have agreed to recognise and uphold
	each others' copyrights, but this world-wide protection
	requires the use of the c in a circle.

	Originally, most of the computer industry assumed that only
	the program's underlying instructions were protected under
	copyright law but, beginning in the early 1980s, a series of
	lawsuits involving the video screens of game programs extended
	protections to the appearance of programs.

	See also {public domain}, {copyleft}, {software law}.

	{US Copyright Office Circular 61 - Copyright Registration for
	Computer Programs
	(gopher://marvel.loc.gov:70/0/copyright/circs/circ61)}.

	{The US Department of Education's "How Does Copyright Law
	Apply to Computer Software"
	(gopher://ericir.syr.edu:70/0/FAQ/CopyrightSoftware)}.

	{Usenet} newsgroup: {news:misc.legal.computing}.

	[Is this definition correct in the UK?  In the US?
	Elsewhere?]

	(16 Nov 1994)

copywronged

	{copybroke}

CORAL

	1. {Class Oriented Ring Associated Language}.

	2. A {deductive database} and {logic programming} system based
	on {Horn-clause} rules with extensions like {SQL}'s {group-by}
	and {aggregation} operators.  CORAL was developed at the
	University of Wisconsin-Madison.  It is implemented in C++ and
	has a {Prolog}-like {syntax}.

	Many evaluation techniques are supported, including {bottom-up
	fixpoint evaluation} and top-down {backtracking}.  {Modules}
	are separately compiled; different evaluation methods can be
	used in different modules within a single program.
	Disk-resident data is supported via an interface to the
	{Exodus} storage manager.  There is an on-line help facility.
	It requires {AT&T} {C++} 2.0 (or {G++} soon) and runs on
	{Decstation} and {Sun4}.

	{(ftp://ftp.cs.wisc.edu/)}

	(29 Jan 1993)

CORAL 66

	A real-time system programming language derived from {JOVIAL}
	and {ALGOL 60}.  It was adopted as the British military
	standard from 1970 until the arrival of {Ada}.

	["Official Definition of CORAL 66", P.M. Woodward et al, HMSO,
	London, 1970].

CORBA

	{Common Object Request Broker Architecture}

CORBIE

	<language> An early system on the {IBM 704}.

	[Listed in CACM 2(5):16, May 1959].

	(10 May 1996)

CORC

	CORnell Compiler.  Simple language for student math problems.

	["The Cornell Computing Language", R.W. Conway et al, CACM
	6(6):317-320 (Jun 1963) Sammet 1969, p.294-296].

core

	1. <storage> {Main memory} or {RAM}.  This term dates from the
	days of {ferrite core memory}; now archaic most places outside
	{IBM}, but also still used in the {Unix} community and by
	old-time {hackers} or those who would sound like them.

	Some derived idioms are quite current; "in core", for example,
	means "in memory" ({paged in}, as opposed to "on disk", {paged
	out}), and both {core dump} and the "core image" or "core
	file" produced by one are terms in favour.  Some varieties of
	Commonwealth hackish prefer {store}.

	(03 Mar 1995)

	2. <processor> An {integrated circuit} design, usually for a
	{microprocessor}, which includes only the {CPU} and which is
	intended to form part of a complete circuit design which
	incorporates other circuits on the same chip such as {cache},
	{memory management unit}, I/O ports and timers.

	The {ARM6}, {ARM7} and {ARM8} are examples.

	3. <language> A varient on {kernel} as used to describe
	features built into a language as opposed to those provided by
	{libraries}.

	(03 Mar 1995)

core cancer

	<jargon> A process that exhibits a slow but inexorable
	{resource leak} - like a cancer, it kills by crowding out
	productive "tissue".

	(10 Nov 1997)

core dump

	[Common {Iron Age} jargon, preserved by Unix] 1. A copy of the
	contents of {core}, produced when a process is aborted by
	certain kinds of internal error.

	2. A complete account of a human's knowledge on some subject
	(also {brain dump}), especially in a lecture or answer to an
	exam question.  "Short, concise answers are better than core
	dumps" (from the instructions to an exam at Columbia).

core gateway

	Historically, one of a set of gateways ({routers}) operated by
	the {Internet Network Operations Center} at Bolt, Beranek and
	Newman (BBN).  The core gateway system formed a central part
	of {Internet} routing in that all groups must advertise paths
	to their networks from a core gateway.

Corel Corporation

	<company> A software publisher best known for the {CorelDraw}
	{application}.  Founded in June 1985 by Dr. Michael Cowpland,
	Corel Corporation was originally a {systems integration}
	company.  In January 1989, however they entered the software
	publishing market with the introduction of CorelDraw.  Corel
	became the second largest maker of personal {productivity
	software} in January 1996 when they purchased the
	{WordPerfect} family of software from {Novell, Inc.}.

	{Home (http://www.corel.com/)}.

	(12 Mar 1997)

core leak

	{memory leak}

Core War

	<games> (Or more recently, "Core Wars") A game played between
	{assembly code} programs running in the {core} of a simulated
	machine (and vicariously by their authors).  The objective is
	to kill your opponents' programs by overwriting them.

	The programs are written using an {instruction set} called
	"{Redcode}" and run on a {virtual machine} called "{MARS}"
	(Memory Array Redcode Simulator).

	Core War was devised by Victor Vyssotsky, Robert Morris Sr.,
	and {Dennis Ritchie} in the early 1960s (their original game
	was called "{Darwin}" and ran on a {PDP-1} at {Bell Labs}).
	It was first described in the "Core War Guidelines" of March,
	1984 by D. G. Jones and A. K. Dewdney of the Department of
	Computer Science at The University of Western Ontario
	(Canada).

	Dewdney wrote several "Computer Recreations" articles in
	"Scientific American" which discussed Core War, starting with
	the May 1984 article.  Those articles are contained in the two
	anthologies cited below.  A.K. Dewdney's articles are still
	the most readable introduction to Core War, even though the
	{Redcode} dialect described in there is no longer current.

	The International Core War Society (ICWS) creates and
	maintains Core War standards and the runs Core War
	tournaments.  There have been six annual tournaments and two
	standards (ICWS'86 and ICWS'88).

	["The Armchair Universe: An Exploration of Computer Worlds",
	A. K. Dewdney, W. H. Freeman, New York, 1988, ISBN
	0-7167-1939-8, LCCN QA76.6 .D517 1988]

	["The Magic Machine: A Handbook of Computer Sorcery",
	A. K. Dewdney, W. H. Freeman, New York, 1990, ISBN
	0-7167-2125-2 (Hardcover), 0-7167-2144-9 (Paperback), LCCN
	QA76.6 .D5173 1990].

Core Wars

	Later name for {Core War}.

corge

	/korj/ Yet another {metasyntactic variable}, named after a cat
	invented by Mike Gallaher and propagated by the {GOSMACS}
	documentation.

	See {grault}.

	(08 Dec 1994)

Cornell List Processor

	(CLP) A list processing language, an extension of {CORC}, used
	for {simulation}.

	[Sammet 1969, p. 461].

	(01 Nov 1994)

Cornell Theory Center

	(CTC) One of four supercomputing centers funded by the US
	{National Science Foundation}.  The CTC also receives funding
	from the {Advanced Research Projects Agency}, the National
	Institutes of Health, New York State, {IBM} Corporation, and
	other members of the center's Corporate Research Institute.

	{Home (http://www.tc.cornell.edu/)}

	(08 Dec 1994)

Cornell University

	<body, education> A US Ivy League University founded in 1868
	by businessman Ezra Cornell and respected scholar Andrew
	Dickson White.  Cornell includes thirteen colleges and
	schools.  On the Ithaca campus are the seven undergraduate
	units and four graduate and professional units.  The Medical
	College and the Graduate School of Medical Sciences are in New
	York City.  Cornell has 13,300 undergraduates and 6,200
	graduate and professional students.

	See also {Concurrent ML}, {Cornell Theory Center}, {Cornell
	University Programming Language}, {CU-SeeMe}, {ISIS}.

	{Home (http://www.cornell.edu/)}.

	(01 Dec 1996)

Coroutine Pascal

	["Control Separation in Programming languages", Lemon et al,
	ACM Ann Conf 1977].

	(08 Dec 1994)

Corporation for Open Systems

	(COS) An international consortium of computer users and
	vendors set up to provide ways of testing {OSI}
	implementations.

	(30 Nov 1994)

Corporation for Research and Educational Networking

	<body> (CREN) The organisation responsible for providing
	networking service to {BITNET} and {CSNET} users.  CREN was
	formed in October 1989, when {BITNET} and {CSNET} were
	combined under one authority.  {CSNET} is no longer
	operational, but CREN still runs {BITNET}.

	[Still true?]

	(17 May 1996)

CORREGATE

	Based on {Internal Translator} (IT).

	[Sammet 1969, p. 139].

	(30 Nov 1994)

Correlatives and Conversions

	The {data description language} used in the {Pick} {operating
	system}.

	["Exploring the Pick Operating System", J.E. Sisk et al,
	Hayden 1986].

	(30 Nov 1994)

Cortex

	An experimental slow controls project at {CERN}.

	(30 Nov 1994)

CORTL

	An intermediate language, a form of {RTL}, by Carl McConnell
	<mcconnell@cs.uiuc.edu>.

	(30 Nov 1994)

COS

	1. {Cray Operating System}.

	2. {Corporation for Open Systems}.

COSE

	Common Open Software Environment.  An initiative by
	Hewlett-Packard, Sun, IBM, Novell, Univel and SCO to move
	towards consistency and interoperability between Unix
	suppliers.

COSINE

	Cooperation for Open Systems Interconnection Networking in
	Europe.  A EUREKA project.

cosmic rays

	Notionally, the cause of {bit rot}.  However, this is a
	semi-independent usage that may be invoked as a humorous way
	to {handwave} away any minor {randomness} that doesn't seem
	worth the bother of investigating.  "Hey, Eric - I just got
	a burst of garbage on my {tube}, where did that come from?"
	"Cosmic rays, I guess."  Compare {sunspots}, {phase of the
	moon}.  The British seem to prefer the usage "cosmic showers";
	"alpha particles" is also heard, because stray alpha particles
	passing through a memory chip can cause single bit errors
	(this becomes increasingly more likely as memory sizes and
	densities increase).

	Factual note: Alpha particles cause bit rot, cosmic rays do
	not (except occasionally in spaceborne computers).  Intel
	could not explain random bit drops in their early chips, and
	one hypothesis was cosmic rays.  So they created the World's
	Largest Lead Safe, using 25 tons of the stuff, and used two
	identical boards for testing.  One was placed in the safe, one
	outside.  The hypothesis was that if cosmic rays were causing
	the bit drops, they should see a statistically significant
	difference between the error rates on the two boards.  They
	did not observe such a difference.  Further investigation
	demonstrated conclusively that the bit drops were due to alpha
	particle emissions from thorium (and to a much lesser degree
	uranium) in the encapsulation material.  Since it is
	impossible to eliminate these radioactives (they are uniformly
	distributed through the earth's crust, with the statistically
	insignificant exception of uranium lodes) it became obvious
	that one has to design memories to withstand these hits.

COSS

	{Common Object Services Specification} in {CORBA}.

Cost Driver Attribute

	<programming> Factors affecting the productivity of software
	development.  These include attributes of the software,
	computers, personnel, and project.

	(28 May 1996)

Cost/Schedule Control System Criteria

	<project> (C/SCSC) A set of criteria specified by the Federal
	Government for reporting project schedule and financial
	information.

	(29 May 1996)

COTS

	commercial off-the-shelf.

cough and die

	<jargon> {barf}.  Connotes that the program is throwing its
	hands up by design rather than because of a bug or oversight.
	"The parser saw a control-A in its input where it was looking
	for a printable, so it coughed and died."

	Compare {die}, {die horribly}, {scream and die}.

	(07 Mar 1995)

countable

	<mathematics> A term describing a set which is {isomorphic} to
	the {natural number}s.  If the isomorphism is stated
	explicitly then the set is called "counted" or "an
	{enumeration}".

	(13 Apr 1995)

counted

	<mathematics> A term describing a set with an explicit
	isomorphism with the {natural number}s.

	(13 Apr 1995)

country code

	<networking, standard> A two-letter abbreviation for a
	particular country.  These codes are based on {ISO 3166} and
	are used as the top level {domain} for {Internet} {hostname}s
	in most countries but hardly ever in the USA (code "us").

	{Latest list
	(http://www.ee.ic.ac.uk/misc/country-codes.html)}.

	(07 Mar 1995)

coupling

	<programming, hardware> The degree to which components depend
	on one another.  There are two types of coupling, "tight" and
	"loose".  Loose coupling is desirable for good {software
	engineering} but tight coupling may be necessary for maximum
	performance.  Coupling is increased when the data exchanged
	between components becomes larger or more complex.

	(01 Aug 1996)

Course Author Language

	<language> (CAL) The {CAI} language for the {IBM 360}.

	["Design of a Programming Language for Computer Assisted
	Learning", F.M. Tonge, Proc IFIP Congress 1968, v2].

	(08 Nov 1994)

courseware

	<application> Programs and data used in {Computer-Based
	Training}.

	(13 Mar 1995)

Coursewriter III

	<language, education> A simple {CAI} language, developed
	around 1976.

	["Coursewriter III, Version 3 Author's Guide", SH20-1009,
	IBM].

	(13 Mar 1995)

cowboy

	[Sun, from William Gibson's {cyberpunk} SF]  Synonym
	for {hacker}.  It is reported that at Sun this word is often
	said with reverence.

COWSEL

	COntrolled Working SpacE Language.  Burstall and Popplestone,
	U Edinburgh, 1964-66.  LISP-like semantics with FORTH-like
	stack, and reverse Polish syntax.  Forerunner of POP.
	EPU-R-12, U Edinburgh (Apr 1966).

CP

	A concurrent Prolog.

	"The Concurrent Logic Programming Language CP": Definition and
	Operational Semantics", V. Saraswat, 14th POPL, ACM 1987,
	pp.49-62.

CParaOps5

	Anurag Acharya, <acharya@cs.cmu.edu>.  Parallel version of
	OPS5, written in C and compiling to C.  Available for Unix,
	Mach, Encore Multimaxen, and Sequent.  Version: 5.4.

	{(ftp://dravido.soar.cs.cmu.edu/usr/nemo/cparaops5/)}.

	(25 Apr 1997)

CPE

	{Customer Premises Equipment}

CPI

	{Common Program Interface}

CPL

	Combined Programming Language.  U Cambridge and U London.  A
	very complex language, syntactically based on ALGOL 60, with a
	pure functional subset.  Provides the ..where.. form of local
	definitions.  Strongly typed but has a "general" type enabling
	a weak form of polymorphism.  Functions may be defined as
	either normal or applicative order.  Typed array and
	polymorphic list structures.  List selection is through
	structure matching.  Partially implemented on the Titan (Atlas
	2) computer at Cambridge.  Led to the much simpler BCPL.  "The
	Main Features of CPL", D.W. Barron et al, Computer J
	6(2):134-143 (Jul 1963).

CPM

	{Control Program for Microcomputers}

CP/M

	{Control Program for Microcomputers}

cpp

	C preprocessor.  The standard {Unix} {macro}-expansion utility
	run as the first phase of the {C} compiler, {cc}.  Cpp
	interprets lines beginning with "#" such as

		#define BUFFER_SIZE 256

	as a textual {assignment} giving the symbol BUFFER_SIZE a
	value "256".  Symbols defined with cpp are traditionally given
	upper case names to distinguish them from C identifiers.  This
	symbol can be used later in the input, as in

		char input_buffer[BUFFER_SIZE];

	This use of cpp to name constants, rather than writing these
	{magic number}s inline, makes a program easier to read and
	maintain, especially if there is more than one occurrence of
	BUFFER_SIZE all of which must all have the same value.

	Cpp macros can have parameters:

		#define BIT(n) (1<<(n))

	This can be used with any appropriate actual argument:

		msb = BIT(nbits-1);

	Note the parentheses around the "n" in the definition of BIT.
	Without these, operator precedence might mean that the
	expression substituted in in place of n might not be
	interpreted correctly (though the example above would be OK).

	Cpp also supports conditional compilation with the use of

		#ifdef SYMBOL
		...
		#else
		...
		#endif
	and
		#if EXPR
		...
		#else
		...
		#endif

	constructs, where SYMBOL is a Cpp symbol which may or may not
	be defined and EXPR is an arithmetic expression involving only
	Cpp symbols, constants and C operators which Cpp can evaluate
	to a constant at {compile time}.

	{Decus cpp} is a free implementation.

	(03 Nov 1994)

cppp

	<tool> A compiler {front-end} for {C++} by Tony Davis
	<ted@cs.brown.edu> with complete semantic processing.  cppp is
	based on {Yacc} and outputs an {abstract syntax graph}.
	Version: 1.14.

	{(ftp://wilma.cs.brown.edu/pub/cppp.tar.Z)}

	(26 May 1993)

C Programmer's Disease

	The tendency of the undisciplined {C} programmer to set
	arbitrary but supposedly generous static limits on table sizes
	(defined, if you're lucky, by constants in header files)
	rather than taking the trouble to do proper dynamic storage
	allocation.  If an application user later needs to put 68
	elements into a table of size 50, the afflicted programmer
	reasons that he or she can easily reset the table size to 68
	(or even as much as 70, to allow for future expansion) and
	recompile.  This gives the programmer the comfortable feeling
	of having made the effort to satisfy the user's (unreasonable)
	demands, and often affords the user multiple opportunities to
	explore the marvellous consequences of {fandango on core}.  In
	severe cases of the disease, the programmer cannot comprehend
	why each fix of this kind seems only to further disgruntle the
	user.

C-Prolog

	An implementation of {Prolog} in {C} by F. Pereira
	<pereira@research.att.com> et al in July 1982.  It had no
	{garbage collection} is not in the {public domain}.

	(13 Oct 1994)

cproto

	A translator which generates {ANSI C} {function prototype}s
	from {K&R} {C} function definitions.  It can also translate
	function definition heads between {K&R} style and {ANSI C}
	style.  Written by Chin Huang <chin.huang@canrem.com>.

	Posted to {comp.sources}.misc, volume 29.  Runs under {Unix},
	{MS-DOS}.

	(18 Jul 1992)

CPS

	1. Conversational Programming System.  An interactive extended
	subset of {PL/I} from {Allen-Babcock} Corp in 1965.

	["Conversational Programming System under TSO (PBPO), Terminal
	User's Manual", SH20-1197, IBM].

	[Sammet 1969, p. 232-240].

	2. {Continuation Passing Style}.

CPSR

	{Computer Professionals for Social Responsibility}

CPU

	{Central Processing Unit}

CPU Info Center

	<processor> A {World-Wide Web} resource at {Berkeley}
	describing many different computers and their performance.

	{(http://infopad.eecs.berkeley.edu/CIC/)}

	(11 Jun 1995)

CPU Wars

	/C-P-U worz/ A 1979 large-format comic by Chas Andres
	chronicling the attempts of the brainwashed androids of IPM
	(Impossible to Program Machines) to conquer and destroy the
	peaceful denizens of HEC (Human Engineered Computers).  This
	rather transparent allegory featured many references to
	{ADVENT} and the immortal line "Eat flaming death,
	minicomputer mongrels!" (uttered, of course, by an IPM
	stormtrooper).  It is alleged that the author subsequently
	received a letter of appreciation on IBM company stationery
	from the head of IBM's Thomas J. Watson Research Laboratories
	(then, as now, one of the few islands of true hackerdom in the
	IBM archipelago).  The lower loop of the B in the IBM logo, it
	is said, had been carefully whited out.  See {eat flaming
	death}.

CR

	{Carriage Return}

cracker

	<jargon> An individual who attempts to gain unauthorised
	access to a computer system.  These individuals are often
	malicious and have many means at their disposal for breaking
	into a system.  The term was coined ca. 1985 by hackers in
	defence against journalistic misuse of "{hacker}".  An earlier
	attempt to establish "worm" in this sense around 1981--82 on
	{Usenet} was largely a failure.

	Use of both these neologisms reflects a strong revulsion
	against the theft and vandalism perpetrated by cracking rings.
	While it is expected that any real hacker will have done some
	playful cracking and knows many of the basic techniques,
	anyone past {larval stage} is expected to have outgrown the
	desire to do so except for immediate practical reasons (for
	example, if it's necessary to get around some security in
	order to get some work done).

	Contrary to widespread myth, cracking does not usually involve
	some mysterious leap of hackerly brilliance, but rather
	persistence and the dogged repetition of a handful of fairly
	well-known tricks that exploit common weaknesses in the
	security of target systems.  Accordingly, most crackers are
	only mediocre hackers.

	Thus, there is far less overlap between hackerdom and
	crackerdom than the {mundane} reader misled by
	sensationalistic journalism might expect.  Crackers tend to
	gather in small, tight-knit, very secretive groups that have
	little overlap with the huge, open hacker poly-culture; though
	crackers often like to describe *themselves* as hackers, most
	true hackers consider them a separate and lower form of life,
	little better than {virus} writers.  Ethical considerations
	aside, hackers figure that anyone who can't imagine a more
	interesting way to play with their computers than breaking
	into someone else's has to be pretty {losing}.

	See also {Computer Emergency Response Team}, {dark-side
	hacker}, {hacker ethic}, {phreaking}, {samurai}, {Trojan
	Horse}.

	(01 Dec 1994)

cracking

	{cracker}

crack root

	<security, jargon> To defeat the security system of a {Unix}
	machine and gain {root} privileges thereby.

	See {cracker}.

	(10 Aug 1996)

crank

	(Automotive slang) Verb used to describe the performance of a
	machine, especially sustained performance.  "This box cranks
	(or, cranks at) about 6 megaflops, with a burst mode of twice
	that on vectorised operations."

	(01 Dec 1994)

crapplet

	<World-Wide Web, abuse> A badly written or profoundly useless
	{Java} {applet}.  "I just wasted 30 minutes downloading this
	stinkin' crapplet!"

	(30 Mar 1997)

CrApTeX

	/krap'tekh/ (University of York, England) Term of abuse used
	to describe {TeX} and {LaTeX} when they don't work (when used
	by TeXhackers), or all the time (by everyone else).  The
	non-TeX enthusiasts generally dislike it because it is more
	verbose than other formatters (e.g. {troff}) and because
	(particularly if the standard Computer Modern fonts are used)
	it generates vast output files.

	See {religious issues}.

	(01 Dec 1994)

crash

	1. A sudden, usually drastic failure.  Most often said of the
	{system}, especially of magnetic disk drives (the term
	originally described what happened when the air gap of a hard
	disk collapses).  "Three {luser}s lost their files in last
	night's disk crash."  A disk crash that involves the
	read/write heads dropping onto the surface of the disks and
	scraping off the oxide may also be referred to as a "head
	crash", whereas the term "system crash" usually, though not
	always, implies that the operating system or other software
	was at fault.

	2. To fail suddenly.  "Has the system just crashed?"
	"Something crashed the OS!" See {down}.  Also used
	transitively to indicate the cause of the crash (usually a
	person or a program, or both).  "Those idiots playing
	{SPACEWAR} crashed the system."

	(01 Dec 1994)

crash and burn

	<jargon> A spectacular crash, in the mode of the conclusion of
	the car-chase scene in the movie "Bullitt" and many subsequent
	imitators (compare {die horribly}).  A {Sun-3} {display
	screen} losing the flyback transformer and lightning strikes
	on {VAX-11/780} backplanes are notable crash and burn
	generators.

	The construction "crash-and-burn machine" is reported for a
	computer used exclusively for alpha or {beta} testing, or
	reproducing bugs (i.e. not for development).  The implication
	is that it wouldn't be such a disaster if that machine
	crashed, since only the testers would be inconvenienced.

	(22 Feb 1996)

crawler

	{robot}

crawling horror

	<jargon> Ancient crufty hardware or software that is kept
	obstinately alive by forces beyond the control of the hackers
	at a site.  Like {dusty deck} or {gonkulator}, but connotes
	that the thing described is not just an irritation but an
	active menace to health and sanity.  "Mostly we code new stuff
	in C, but they pay us to maintain one big FORTRAN II
	application from nineteen-sixty-X that's a real crawling
	horror."

	Compare {WOMBAT}.

	(01 Dec 1994)

Cray instability

	A shortcoming of a program or {algorithm} that manifests
	itself only when a large problem is being run on a powerful
	machine such as a {Cray}.  Generally more subtle than {bug}s
	that can be detected in smaller problems running on a
	{workstation} or {minicomputer}.

	(13 Oct 1994)

crayola

	/kray-oh'l*/ A {super-minicomputer} or {super-microcomputer}
	that provides some reasonable percentage of {supercomputer}
	performance for an unreasonably low price.  A crayola might
	also be a {killer micro}.

	(13 Oct 1994)

crayola books

	<publication> A humorous and/or disparaging term for the
	{rainbow series} of National Computer Security Center (NCSC)
	computer security standards.

	See also {Orange Book}.

	(03 Dec 1996)

crayon

	1. Someone who works on {Cray} {supercomputer}s.  More
	specifically, it implies a programmer, probably of the {CDC}
	ilk, probably male, and almost certainly wearing a tie
	(irrespective of gender).  Systems types who have a {Unix}
	background tend not to be described as crayons.

	2. A {computron} that participates only in {number crunching}.

	3. A unit of computational power equal to that of a single
	{Cray-1}.  There is a standard joke about this usage that
	derives from an old Crayola crayon promotional gimmick: When
	you buy 64 crayons you get a free sharpener.

	(13 Oct 1994)

Cray Research, Inc.

	<company> US manufacturer of large powerful {mainframe}
	{supercomputer}s, co-founded by noted computer architect,
	{Seymour Cray}.

	Quarterly sales $216M, profits $8M (Aug 1994).

	(26 Sep 1994)

CRC

	{cyclic redundancy check}

creationism

	The (false) belief that large, innovative software designs can
	be completely specified in advance and then painlessly
	magicked out of the void by the normal efforts of a team of
	normally talented programmers.  In fact, experience has shown
	repeatedly that good designs arise only from evolutionary,
	exploratory interaction between one (or at most a small
	handful of) exceptionally able designer(s) and an active user
	population - and that the first try at a big new idea is
	always wrong.  Unfortunately, because these truths don't fit
	the planning models beloved of {management}, they are
	generally ignored.

creeping elegance

	Describes a tendency for parts of a design to become {elegant}
	past the point of diminishing return, something which often
	happens at the expense of the less interesting parts of the
	design, the schedule, and other things deemed important in the
	{Real World}.  See also {creeping featurism}, {second-system
	effect}, {tense}.

creeping featurism

	<jargon> /kree'ping fee'chr-izm/ (Or "feature creep") A
	systematic tendency to load more {chrome} and {features} onto
	systems at the expense of whatever elegance they may have
	possessed when originally designed.  "The main problem with
	{BSD} Unix has always been creeping featurism."

	More generally, creeping featurism is the tendency for
	anything to become more complicated because people keep saying
	"Gee, it would be even better if it had this feature too".
	The result is usually a patchwork because it grew one ad-hoc
	step at a time, rather than being planned.  Planning is a lot
	of work, but it's easy to add just one extra little feature to
	help someone, and then another, and another, ....  When
	creeping featurism gets out of hand, it's like a cancer.

	Usually this term is used to describe computer programs, but
	it could also be said of the federal government, the IRS 1040
	form, and new cars.  A similar phenomenon sometimes afflicts
	conscious redesigns; see {second-system effect}.  See also
	{creeping elegance}.

	(03 Aug 1997)

creeping featuritis

	<jargon> /kree'ping fee'-chr-i:`t*s/ A variant of {creeping
	featurism}, with its own spoonerism: "feeping creaturitis".
	Some people like to reserve this form for the disease as it
	actually manifests in {software} or {hardware}, as opposed to
	the lurking general tendency in designers' minds.  -ism means
	"condition" or "pursuit of", whereas -itis usually means
	"inflammation of".

	(03 Aug 1997)

C-Refine

	A {preprocessor} for {C} and languages with similar syntax by
	Lutz Prechelt <prechelt@ira.uka.de>.  C-Refine allows symbolic
	naming of code fragments so as to redistribute complexity and
	provide running commentary.

	Version 3.0 is available from comp.sources.reviewed archives.
	It is highly portable and has been ported to {Unix}, {MS-DOS},
	{Atari}, {Amiga}.

	{(ftp://ftp.uu.net/usenet/comp.sources.reviewed/volume02/crefine)}

	(16 Jul 1992)

CREN

	{Corporation for Research and Educational Networking}

CREW PRAM

	concurrent read, exclusive write {PRAM}.

crippleware

	1. Software that has some important functionality deliberately
	removed, so as to entice potential users to pay for a working
	version.

	2. (Cambridge) {Guiltware} that exhorts you to donate to some
	charity.

	Compare {careware}, {nagware}.

	3. Hardware deliberately crippled, which can be upgraded to a
	more expensive model by a trivial change (e.g. removing a
	jumper).

	[Example?]

	(02 May 1995)

criptography

	<spelling> Misspelling of "{cryptography}".

	(13 Dec 1996)

Crisis Software

	A small UK company producing {software} for the {Acorn}
	{Archimedes} range of computers.

	{Home (http://www.dcs.warwick.ac.uk/~phid/Crisis/)}

	(10 Nov 1994)

CRISP

	A {Lisp}-like language and {compiler} for the {IBM 370}
	written by Jeff Barnett of SDC, Santa Monica, CA, USA in the
	early 1970s.  It generalised {Lisp}'s two-part {cons node}s to
	n-part nodes.

	(10 Nov 1994)

crisp

	(Or "discrete") The opposite of "{fuzzy}".

	(23 Dec 1994)

Crispy Critters

	(Or "Crispy Crittered".  From the "Post" breakfast cereal of
	the same name) A term used to describe {hardware} which is
	{fried} or {toast}.

	(31 Jan 1995)

critical mass

	In physics, the minimum amount of fissionable material
	required to sustain a chain reaction.  Of a software product,
	describes a condition of the software such that fixing one bug
	introduces one plus {epsilon} bugs.  (This malady has many
	causes: {creeping featurism}, ports to too many disparate
	environments, poor initial design, etc.)  When software
	achieves critical mass, it can never be fixed; it can only be
	discarded and rewritten.

	(23 Dec 1994)

critical section

	A non-{re-entrant} piece of code that can only be executed by
	one process at a time.  It will usually terminate in bounded
	time and a process will only have to wait a bounded time to
	enter it.  Some synchronisation mechanism is required at the
	entry and exit of the critical section to ensure exclusive
	use.

CRL

	Carnegie Representation Language.

	{Carnegie Group, Inc.}  Frame language derived from SRL.
	Written in Common LISP.  Used in the product Knowledge Craft.

CRLF

	<character> /ker'l*f/, sometimes /kru'l*f/ or /C-R-L-F/ A
	{carriage return} (CR, {ASCII} 13) followed by a {line feed}
	(LF, {ASCII} 10).  Under {Unix} influence this usage has
	become less common because Unix uses just line feed as its
	line terminator.

	See {newline}, {terpri}.

	(27 Mar 1995)

crock

	[American scatologism "crock of shit"] 1. An awkward feature
	or programming technique that ought to be made cleaner.  For
	example, using small integers to represent error codes without
	the program interpreting them to the user (as in, for example,
	Unix "make(1)", which returns code 139 for a process that dies
	due to {segfault}).

	2. A technique that works acceptably, but which is quite prone
	to failure if disturbed in the least.  For example, a
	too-clever programmer might write an assembler which mapped
	{instruction mnemonics} to numeric {opcode}s
	{algorithm}ically, a trick which depends far too intimately on
	the particular bit patterns of the opcodes.  (For another
	example of programming with a dependence on actual opcode
	values, see {The Story of Mel}.)  Many crocks have a tightly
	woven, almost completely unmodifiable structure.  See {kluge},
	{brittle}.  The adjectives "crockish" and "crocky", and the
	nouns "crockishness" and "crockitude", are also used.

cron

	<operating system> The Unix clock {daemon} that executes
	commands at specified dates and times according to
	instructions in a "crontab" file.

	{Unix manual page}: cron(8).

	(10 Apr 1997)

cross-assembler

	An {assembler} which runs on one type of processor and
	produces {machine code} for another.

	There is a set of {6502}, 68xx and {Zilog Z80} and {8085}
	cross-assemblers in {C} by <msmakela@cc.helsinki.fi> and Alan
	R. Baldwin.  They run under {MS-DOS} and could be compiled to
	run under {Unix} and on the {Amiga} and {Atari ST}.

	See also {fas}.

	{(ftp://ccosun.caltech.edu/)}

	(10 Mar 1993)

cross-compiler

	A {compiler} which runs on one type of processor and produces
	code for another.

cross-post

	[{Usenet}] To post a single article simultaneously to several
	{newsgroup}s.  Distinguished from posting the article
	repeatedly, once to each newsgroup, which causes people to see
	it multiple times (which is very bad form).  Gratuitous
	cross-posting without a Followup-To line directing responses
	to a single followup group is frowned upon, as it tends to
	cause {followup} articles to go to inappropriate newsgroups
	when people respond to only one part of the original posting.

cross software

	Software developed on one kind of computer for use on another
	(usually because the other computer does not have itself
	adequate facilities for software development).

CROSSTABS

	Simple language for statistical analysis of tabular data.
	"User's Manual for the CROSSTABS System", Cambridge Computer
	Assoc (Feb 1977).

crosstalk

	<electronics> Interference caused by two signals becoming
	partially superimposed on each other due to electromagnetic
	(inductive) or electrostatic (capacitive) coupling between the
	conductors carrying the signals.  A common example of
	crosstalk is where the magnetic field from changing current
	flow in one wire induces current in another wire running
	parallel to the other, as in a transformer.  Crosstalk can be
	reduced by using shielded cables and increasing the distance
	between conductors.

	(20 Dec 1995)

CROW PRAM

	concurrent read, owner write {PRAM}.

CRT

	{cathode ray tube}

crudware

	/kruhd'weir/ Pejorative term for the hundreds of megabytes of
	low-quality {freeware} circulated by user's groups and {BBS}s
	in the micro-hobbyist world.

cruft

	/kruhft/ [back-formation from {crufty}] 1.  An unpleasant
	substance.  The dust that gathers under your bed is cruft; the
	TMRC Dictionary correctly noted that attacking it with a broom
	only produces more.

	2. The results of shoddy construction.

	3. ["hand cruft", pun on "hand craft"] To write assembler code
	for something normally (and better) done by a compiler (see
	{hand-hacking}).

	4. Excess; superfluous junk; used especially of redundant or
	superseded code.

	This term is one of the oldest in the jargon and no one is
	sure of its etymology, but it is suggestive that there is a
	Cruft Hall at Harvard University which is part of the old
	physics building.  It is said to have been the physics
	department's radar lab during WWII.  To this day (early 1993)
	the windows appear to be full of random techno-junk.  {MIT} or
	Lincoln Labs people may well have coined the term as a knock
	on the competition.

cruftsmanship

	/kruhfts'm*n-ship / [{cruft}] The antithesis of craftsmanship.

cruft together

	(Also "cruft up") To throw together something ugly but
	temporarily workable.  Like {kluge up}, but more pejorative.
	"There isn't any program now to reverse all the lines of a
	file, but I can probably cruft one together in about 10
	minutes."  See {hack together}, {hack up}, {kluge up},
	{crufty}.

crufty

	/kruhf'tee/ [Possibly from "crusty"] 1. Poorly built, possibly
	over-complex.  The {canonical} example is "This is standard
	old crufty {DEC} software".  In fact, one fanciful theory of
	the origin of "crufty" holds that it was originally a mutation
	of "crusty" applied to DEC software so old that the "s"
	characters were tall and skinny, looking more like "f"
	characters.

	2. (Sometimes spelled "cruftie") A small crufty object (see
	{frob}); often one that doesn't fit well into the scheme of
	things.  "A {Lisp} {property list} is a good place to store
	crufties (or, collectively, {random} cruft)."

crumb

	Two binary digits; a {quad}.  Larger than a {bit},
	smaller than a {nibble}.  Considered silly.  Synonym {tayste}.

crunch

	1. To process, usually in a time-consuming or complicated way.
	Connotes an essentially trivial operation that is nonetheless
	painful to perform.  The pain may be due to the triviality's
	being embedded in a loop from 1 to 1,000,000,000.  "FORTRAN
	programs do mostly {number crunching}."

	2. To reduce the size of a file without losing information by
	a complicated scheme that produces bit configurations
	completely unrelated to the original data, such as by a
	{Huffman} code.  Since such {compression} usually takes more
	computations than simpler methods such as {run-length
	encoding}, the term is doubly appropriate.  (This meaning is
	usually used in the construction "file crunching" to
	distinguish it from {number crunching}.)  Use of {crunch}
	itself in this sense is rare among {Unix} hackers.

	3.  The hash character "#" ({ASCII} 35).  Used at {XEROX} and
	{CMU}, among other places.

	4. To squeeze program source into a minimum-size
	representation that will still compile or execute.  The term
	came into being specifically for a famous program on the BBC
	micro that crunched BASIC source in order to make it run more
	quickly (it was a wholly interpretive BASIC, so the number of
	characters mattered).  {Obfuscated C Contest} entries are
	often crunched; see the first example under that entry.

cruncha cruncha cruncha

	/kruhn'ch* kruhn'ch* kruhn'ch*/ An encouragement sometimes
	muttered to a machine bogged down in a serious {grovel}.  Also
	describes a notional sound made by grovelling hardware.  See
	{wugga wugga}, {grind} (sense 3).

crunchy

	{floppy disk}

cryppie

	<job, cryptography> /krip'ee/ A cryptographer.  One who hacks
	or implements software or hardware for {cryptography}.

	(23 Aug 1996)

crypt

	{Unix} command to perform {encryption} and {decryption}.

cryptanalysis

	The branch of {cryptography} concerned with decoding encrypted
	messages when you're not supposed to be able to.

	(06 Dec 1994)

Crypt Breakers Workbench

	(cbw) A freely distributable multi-window integrated workbench
	of tools for {cryptanalysis} of files encrypted with the
	{4.2BSD} {Unix} {crypt} command.  It was originally written by
	Robert W. Baldwin at {MIT}.

	{(ftp://black.ox.ac.uk/src/security)},
	{(ftp://scitsc.wlv.ac.uk/pub/infomagic/usenet.cdrom/sources/unix/volume10)},
	{(ftp://ftp.sunet.se/pub/usenet/comp.sources.unix/volume10)}.

	(06 Dec 1994)

cryptography

	<cryptography> The practise and study of {encryption} and
	{decryption} - encoding data so that it can only be decoded by
	specific individuals.  A system for encrypting and decrypting
	data is a cryptosystem.  These usually involve an {algorithm}
	for combining the original data ("{plaintext}") with one or
	more "keys" - numbers or strings of characters known only to
	the sender and recipient.  The resulting output is known as
	"{ciphertext}".

	The security of a cryptosystem usually depends on the secrecy
	of (some of) the keys rather than with the supposed secrecy of
	the {algorithm}.  A strong cryptosystem has a large range of
	possible keys so that it is not possible to just try all
	possible keys (a "{brute force}" approach).  A strong
	cryptosystem will produce ciphertext which appears random to
	all standard statistical tests.  A strong cryptosystem will
	resist all known previous methods for breaking codes
	("{cryptanalysis}").

	See also {cryptology}, {RSA}.

	{Usenet} newsgroups: {news:sci.crypt},
	{news:sci.crypt.research}.

	{FAQ} {MIT
	(ftp://rtfm.mit.edu/pub/usenet/news.answers/cryptography-faq/)}.
	{Cryptography, PGP, and Your Privacy
	(http://draco.centerline.com:8080/~franl/crypto.html)}.

	(29 Mar 1995)

cryptology

	The study of {cryptography} and {cryptanalysis}.

	(06 Dec 1994)

Crystal

	Concurrent Representation of Your Space-Time ALgorithms.

	A {recursion equation} parallel language.

	["A Parallel Language and its Compilation to Multiprocessor
	Machines or VLSI", M.C. Chen, 13th POPL, ACM 1986 pp.131-139].

	(06 Dec 1994)

CS-4

	["CS-4 Language Reference Manual and Operating System
	Interface", Ben M. Brosgol et al, Report IR-130-2,
	Intermetrics, Cambridge MA, Oct 1975].

	(19 Jan 1995)

C-Scheme

	1. A dialect of {Scheme} by Joe Bartlett at {DEC}/{WRL},
	implemented in, and embeddable in, {C}.

	(28 Oct 1994)

	2. An alternative name for {MIT Scheme}.

	[Or are they the same thing?]

	(19 Jan 1995)

C/SCSC

	{Cost/Schedule Control System Criteria}

CSCW

	{Computer Supported Cooperative Work}

csh

	{C shell}

C shell

	(csh) The {Unix} {command line interpreter} {shell} and
	{script language} by {William Joy}, originating from
	{Berkeley} {Unix}.

	{Unix} systems up to around {Unix Version 7} only had one
	shell - the {Bourne shell}, sh.  Csh had better interactive
	features, notably command input {history}, allowing earlier
	commands to be recalled and edited (though it was still not as
	good as the {VMS} equivalent of the time).

	Presumably, csh's {C}-like {syntax} was intended to endear it
	to programmers but sadly it lacks some {sh} features which are
	useful for writing {shell script}s so you need to know two
	different syntaxes for every shell construct.

	A plethora of different shells followed csh, e.g. {tcsh},
	{ksh}, {bash}, {rc}.

	(28 Oct 1994)

.cshrc

	<operating system> (C Shell run commands) A {C Shell} startup
	configuration file.  This file is found in a user's {home
	directory} and can contain shell and other commands to set
	variables, define aliases, and perform any other
	initialisation which should happen for every shell (as opposed
	to {.login} which is only run for a {login shell}).

	Compare {AUTOEXEC.BAT} on {MS-DOS}.

	See also {rc}.

	(09 Apr 1996)

CSID

	{character set identifier}

C++SIM

	A {class} library like the {simulation} class libraries of
	{SIMULA}, by Mark Little <M.C.Little@newcastle.ac.uk>.
	Version: 1.0.

	{(ftp://arjuna.ncl.ac.uk/)}

	(04 Jun 1993)

CSK Software

	<company> (Formerly "Quay Financial Software") An Irish
	company owned by the CSK Corporation of Japan (owner of Sega
	and Segasoft).  Quay's main product is {Slingshot}, the first
	{real-time} financial server for the {Internet}.

	{Home (http://www.slingshot.ie/)}.

	E-mail: John Slattery <jslatter@quay.ie>.

	Address: Lisle House, 33 Molesworth Street, Dublin 2, Ireland.

	Telephone: +353 (1) 604 6300.  Fax: +353 (1) 662 2195.

	(13 May 1997)

CSL

	1. Computer Structure Language.  A computer {hardware
	description language}, written in {BCPL}.

	["Computer Structure Language (CSL)", Proc 1975 Symp on Comp
	Hardware Description Languages and their Appl, ACM (Sep
	1975)].

	2. Control and Simulation Language.  A language for industrial
	simulation from Esso and {IBM}.

	["Control and Simulation Language", J.N. Buxton et al,
	Computer J 5(3):194-199 (Oct 1962).  Version: CSL 2 (1966 for
	IBM 7094)].

CSLIP

	{Compressed SLIP}

CSM

	["CSM - A Distributed Programming Language", S. Zhongxiu et
	al, IEEE Trans Soft Eng SE-13(4):497-500 (Apr 1987)].

CSMA/CD

	Carrier Sense Multiple Access / Collision Detect.

	The low level network arbitration {protocol} used on
	{Ethernet}.  Nodes wait for quiet on the net before starting
	to transmit and listen while they are transmitting.  If two
	nodes transmit at once the data gets corrupted.  The nodes
	detect this and continue to transmit for a certain length of
	time to ensure that all nodes detect the collision.  The
	transmitting nodes then wait for a random time before
	attempting to transmit again thus minimising the chance of
	another collision.  The ability to detect collision during
	transmission reduces the amount of {bandwidth} wasted on
	collisions compared with simple {ALOHA} broadcasting.

	(23 Feb 1995)

CSMP

	{Continuous System Modeling Program}

CSNET

	Computers and Science Network, operated by {CREN} for US
	computer science institutes.  It provides {electronic mail}
	service via {dial-up} lines, {X.25} and {Internet} services.

CSO

	Campus Phone Book software developed for, and originally used
	at, the Computer Services Office of the University of Illinois
	at Urbana-Champaign.  The server software is known as "qi" and
	the client is "ph".  Recent versions of the software refer to
	CCSO (Computing & Communications Service Office).

	{(ftp://uxc.cso.uiuc.edu/)}

CSP

	1. <language> {Communicating Sequential Processes}.

	2. <hardware> {Chip Scale Packaging}.

CSP/80

	Based on CSP.

	"CSP/80: A Language for Communicating Processes", M. Jazayeri
	et al, Proc Fall COMPCON80, IEEE pp.736-740 (Sept 1980).

CS/PCode

	Used at {Microsoft}.

CSP/k

	{Concurrent SP/k}

CS-Prolog

	Distributed logic language.

	"CS-Prolog on Multi-Transputer Systems", I. Futo et al,
	Microprocessors & Microsystems, March 1989.

CSPS

	["Toward Comprehensive Specification of Distributed Systems",
	G. Roman et al, Proc 7th Intl Conf on Distrib Comp Sys, IEEE
	1987, pp. 282-289].

CSP-S

	["Implementation of CSP-S for Description of Distributed
	Algorithms", L. Patniak et al, Comput Lang 9(3):193-202
	(1984)].

CS/QCode

	Used at {Microsoft}.

	[More detail?]

CSSA

	An {object-oriented} language.

	["Key Concepts in the INCAS Multicomputer Project", J. Nehmer
	et al, IEEE Trans Soft Eng SE-13(8):913-923 (Aug 1987)].

CSS/II

	Computer System Simulator II.  Like {GPSS}, for {IBM 360}.

	["Computer System Simulator II (CSS II) Program Description
	and Operations Manual", SH20-0875, IBM].

CSSL

	Continuous System Simulation Language.

	Versions include {ACSL}, {HYTRAN}, {SL-I}, {S/360} and {CSMP}.

	["The SCi Continuous System Simulation Language (CSSL)",
	Simulation, 9(6) (Dec 1967)].

	(06 Dec 1994)

CSTools

	{Concurrency} through {message-passing} to named message
	queues.

CSU

	1. {California State University}.

	2. {Cleveland State University}.

	3. {Channel Service Unit}.

CSU/DSU

	{channel service unit/data service unit}

CSV

	<file format> {comma separated values}.

CTC

	{Cornell Theory Center}

CTCP

	<networking> {Client To Client Protocol}

CTI

	1. <communications> {Computer Telephone Integration}.

	2. <education> Computers in Teaching Initiative.  A UK
	government scheme.

	(08 Dec 1996)

CTL

	1. {Checkout Test language}.

	2. {Compiler Target Language}.

	3. {Computational Tree Logic}

CTOS

	1. <operating system> {Computerised Tomography Operating
	System}.

	2. <operating system> {Convergent Technologies Operating
	System}.

	(23 Jun 1997)

ctrl

	{control}

CTSS

	{Compatible Timesharing System}

CTY

	/sit'ee/ or /C-T-Y/ [MIT] The terminal physically associated
	with a computer's system {console}.  The term is a contraction
	of "Console {tty}", that is, "Console TeleTYpe".  This {ITS}-
	and {TOPS-10}-associated term has become less common, as most
	Unix hackers simply refer to the CTY as "the console".

CU

	<chat> "see you".

	(01 Dec 1997)

cu

	{Call Unix}

CUA

	{Common User Access}

Cube

	Three-dimensional visual language for higher-order logic.

	"The Cube Language", M. Najork et al, 1991 IEEE Workshop on
	Visual Langs, Oct 1991, pp.218-224.

cube

	1. [short for "cubicle"] A module in the open-plan offices
	used at many programming shops.  "I've got the manuals in my
	cube."

	2. A NeXT machine (which resembles a matte-black cube).

cubing

	[parallel with "tubing"] 1. Hacking on an IPSC ({Intel
	Personal SuperComputer}) hypercube.  "Louella's gone cubing
	*again*!!"

CUCH

	CUrry-CHurch.

	{Lambda-calculus}

	["A Type-Theoretical Alternative to CUCH, ISWIM, OWHY", Dana
	Scott, Oxford U 1969].

	["Introduction to the CUCH", C. Bohm et al, in Automata
	Theory, E.R. Caianiello ed, A-P 1966, pp.35-65].

	(02 Dec 1994)

Cuckoo's Egg

	{The Cuckoo's Egg}

CUL

	<chat> "See you later".

	(01 Dec 1997)

Culler-Fried System

	A system for interactive mathematics.

	[Sammet 1969, p. 253-255].

	(15 Nov 1994)

CUPID

	A graphic {query language}.

	["CUPID: A Graphic Oriented Facility for Support of
	Nonprogrammer Interactions with a Database", N. McDonald, PhD
	Thesis, CS Dept, UC Berkeley 1975].

CUPL

	Cornell University Programming Language.

	A language for simple mathematics problems, based on {CORC},
	with {PL/I}-like {syntax}.

	["An Instruction Language for CUPL", R.J. Walker, Cornell U,
	Jul 1967].

	(15 Nov 1994)

curly bracket

	brace

current

	<electronics> The quantity of {charge} per unit time, measured
	in Amperes (Amps, A).  By historical convention, the sign of
	current is positive for currents flowing from positive to
	negative {potential}, but experience indicates that electrons
	are negatively charged and flow in the opposite direction.

	(05 Oct 1995)

curried function

	<mathematics, programming> A function of N arguments can be
	considered as a function of one argument which returns another
	function of N-1 arguments.  E.g. in {Haskell} we can define:

		average :: Int -> (Int -> Int)

	(The parentheses are optional).  A {partial application} of
	average, e.g. (average 4), is a function of type (Int -> Int)
	which averages its argument with 4.  In uncurried languages a
	function must always be applied to all its arguments but a
	{partial application} can be represented using a {lambda
	abstraction}:

		\ x -> average(4,x)

	Currying is necessary if {full laziness} is to be applied to
	functional sub-expressions.

	It was named after the logician {Haskell Curry} but the
	19th-century formalist {Frege} was the first to propose it and
	it was first referred to in ["Uber die Bausteine der
	mathematischen Logik", M. Schoenfinkel, Mathematische
	Annalen. Vol 92 (1924)].

	{David Turner} <dat@ukc.ac.uk> said he got the term from
	Christopher Strachey (Professor of Computation at Oxford,
	England, died circa 1975) who invented the term "currying" and
	used it in his lecture notes on programming languages written
	circa 1967.  Strachey also remarked that it ought really to be
	called "Schoenfinkeling".

	Stefan Kahrs <smk@dcs.ed.ac.uk> reported hearing somebody in
	Germany trying to introduce "scho"nen" for currying and
	"finkeln" for "uncurrying".  The verb "scho"nen" means "to
	beautify"; "finkeln" isn't a German word, but it suggests "to
	fiddle".

	["Some philosophical aspects of combinatory logic",
	H. B. Curry, The Kleene Symposium, Eds. J. Barwise,
	J. Keisler, K. Kunen, North Holland, 1980, pp. 85-101]

	(14 Dec 1994)

currying

	Turning an uncurried function into a {curried function}.

curseperl

	A {curses} library for {Perl} by the author of Perl, Larry
	Wall <lwall@netlabs.com>.  It comes with Perl.

	(06 Dec 1994)

curses

	A set of subroutines in {Unix} for handling navigation on a
	terminal screen using the cursor.

cursor

	1. <hardware> A visually distinct mark on a display indicating
	where newly typed text will be inserted.  The cursor moves as
	text is typed and, in most modern editors, can be moved around
	within a document by the user to change the insertion point.

	2. <database> In {SQL}, a named control structure used by an
	{application program} to point to a row of data.  The position
	of the {row} is within a {table} or {view}, and the cursor is
	used interactively so select rows from columns.

	(27 Dec 1996)

cursor dipped in X

	<jargon> The metaphorical source of the electronic equivalent
	of a poisoned-pen letter.  Derived from English metaphors of
	the form "pen dipped in X" (where X = e.g. "acid", "bile",
	"vitriol").  These map over neatly to this hackish usage (the
	cursor being what moves, leaving letters behind, when one is
	composing on-line).

	"Talk about a {nastygram}!  He must've had his cursor dipped
	in acid when he wrote that one!"

	(27 Dec 1996)

CU-SeeMe

	<communications> /see`-yoo-see'-mee/ ("CU" from {Cornell
	University}) A {shareware} {personal computer}-based
	{videoconferencing} program for use over the {Internet},
	developed at {Cornell University}, starting in 1992.

	CU-SeeMe allows for direct {audiovisual} connections between
	{clients}, or, like {irc}, it can support multi-user
	converencing via {servers} (here called "reflectors") to
	distribute the video and audio signals between multiple
	clients.

	CU-SeeMe was the first videoconferencing tool available at a
	reasonable price (in this case, free) to users of personal
	computers.

	{Home (http://cu-seeme.cornell.edu/)}.

	{(http://home.stlnet.com/~hubble/cuseeme/index.html)}.

	Compare with {multicast backbone}.

	(01 Dec 1996)

CUSI

	A collection of indices to various {World-Wide Web} and other
	{Internet} documents.  It is located at {Nexor} in the UK.

	{(http://web.nexor.co.uk/public/cusi/cusi.html)}

	(29 Nov 1994)

cuspy

	/kuhs'pee/ [WPI: from the {DEC} abbreviation CUSP, for
	"Commonly Used System Program", i.e. a utility program used by
	many people] 1. (of a program) Well-written.

	2. Functionally excellent.  A program that performs well and
	interfaces well to users is cuspy.  See {rude}.

Customer Information Control System

	(CICS) An {IBM} communications system that got converted for
	{database} handling.

	(29 Nov 1994)

cut a tape

	To write a software or document distribution on magnetic tape
	for shipment.  Has nothing to do with physically cutting the
	medium!  "Cutting a disk" has also been reported as live
	usage.  Related slang usages are mainstream business's "cut a
	check", the recording industry's "cut a record", and the
	military's "cut an order".

	All of these usages reflect physical processes in obsolete
	recording and duplication technologies.  The first stage in
	manufacturing an old-style vinyl record involved cutting
	grooves in a stamping die with a precision lathe.  More
	mundanely, the dominant technology for mass duplication of
	paper documents in pre-photocopying days involved "cutting a
	stencil", punching away portions of the wax overlay on a silk
	screen.  More directly, paper tape with holes punched in it
	was an important early storage medium.

cutover

	<communications, networking> /cut-ov*/ Switching from an old
	({hardware} and/or {software}) system to a replacement system,
	covering the overlap from when the new system is {live} until
	the old system has been {shut down}.

	(09 Jul 1997)

CVS

	A {code management} system based on {RCS}.

CW

	<communications> {continuous wave}.

CWeb

	An {ANSI C} implementation of the {Web} {literate programming}
	concept.  Version 3.1 by Levy/Knuth/Marc van Leeuwen
	<M.van.Leeuwen@cwi.nl>(?) is writen in, and outputs, {ANSI C}
	and {C++}.

	{(ftp://ftp.cwi.nl/pub/cweb/)}

	(16 Dec 1993)

CWI

	{Centrum voor Wiskunde en Informatica}

CWIC

	Compiler for Writing and Implementing Compilers.  Val Schorre.
	One of the early metacompilers.  Compare {Meta-II}.

CWIS

	{Campus-Wide Information System}

C with Classes

	Short-lived predecessor to C++.

	["Classes: An Abstract Data Type Facility for the C Language",
	B. Stroustrup, CSTR-84 Bell Labs, Apr 1980].  Also in [SIGPLAN
	Notices (Jan 1982)].

cxref

	A cross-reference generator by Arnold Robbins
	<arnold@gatech.?>.

Cy486SLC

	A version of the {Intel 486} made by {Cyrix}.  It has a
	{486SX} {instruction set}, a 1 kilobyte {cache}, and an {Intel
	80386SX}-compatible pinout and thus, 16-bit data bus.

	(30 Nov 1994)

cyber

	<chat> To have {cybersex}.

	(21 Jun 1997)

cyberbunny

	<abuse> Someone who knows absolutely nothing about computers
	and advises people who know absolutely nothing about
	computers.  The term is used mostly on {AOL}, {Prodigy},
	{Compuserve}, etc.

	(18 Feb 1996)

cybercrud

	<jargon> /si:'ber-kruhd/ 1. (Coined by Ted Nelson) Obfuscatory
	tech-talk.  Verbiage with a high {MEGO} factor.  The computer
	equivalent of bureaucratese.

	2. Incomprehensible stuff embedded in e-mail.  First there
	were the "Received" headers that show how mail flows through
	systems, then MIME ({Multi-purpose Internet Mail Extensions})
	headers and part boundaries, and now huge blocks of {hex} for
	PEM ({Privacy Enhanced Mail}) or PGP ({Pretty Good Privacy})
	digital signatures and certificates of authenticity.  This
	stuff all has a purpose and good user interfaces should hide
	it, but all too often users are forced to wade through it.

	(04 Apr 1995)

CyberGlove

	<hardware, virtual reality> A {data glove} sold by {Virtual
	Technologies} for $9800.  It is the state-of-the-art, high-end
	data glove for completely reactive immersive environments.
	The spandex-like glove houses 18 sensors to track accurately
	just about every move your hand is capable of making.  The
	accompanying software includes a three-dimensional hand model
	that can he added to any {virtual reality} application.  The
	glove includes a mount for Polhemus and Ascension sensors.

	(04 Apr 1995)

cybernetics

	The comparative study of the internal workings of organic and
	machine processes in order to understand their similarities
	and differences.  Cybernetics often refers to machines that
	imitate human behaviour.

	See {artificial intelligence}, {robot}.

	(24 Nov 1994)

cyberpunk

	/si:'ber-puhnk/ (Originally coined by SF writer Bruce Bethke
	and/or editor Gardner Dozois) A subgenre of SF launched in
	1982 by William Gibson's epoch-making novel "Neuromancer"
	(though its roots go back through Vernor Vinge's "True Names"
	to John Brunner's 1975 novel "The Shockwave Rider").  Gibson's
	near-total ignorance of computers and the present-day hacker
	culture enabled him to speculate about the role of computers
	and hackers in the future in ways hackers have since found
	both irritatingly na"ive and tremendously stimulating.
	Gibson's work was widely imitated, in particular by the
	short-lived but innovative "Max Headroom" TV series.  See
	{cyberspace}, {ice}, {jack in}, {go flatline}.

	Since 1990 or so, popular culture has included a movement or
	fashion trend that calls itself "cyberpunk", associated
	especially with the rave/techno subculture.  Hackers have
	mixed feelings about this.  On the one hand, self-described
	cyberpunks too often seem to be shallow trendoids in black
	leather who have substituted enthusiastic blathering about
	technology for actually learning and *doing* it.  Attitude is
	no substitute for competence.  On the other hand, at least
	cyberpunks are excited about the right things and properly
	respectful of hacking talent in those who have it.  The
	general consensus is to tolerate them politely in hopes that
	they'll attract people who grow into being true hackers.

cyberrhea

	<humour, jargon> /si:'ber-eer/ An affliction of some {word
	processor} users; excessive frequency and looseness of
	productivity.  Particularly virulent among those who have not
	discovered the fortifying virtues of revision.

	["Right Words, Right Places" Scott Rice, Wadsworth, 1993, A5.]

	(25 Feb 1997)

cybersex

	<networking> Sex performed in {real time} via a digital
	medium.

	Compare {teledildonics}.

	[Details?]

	(10 Feb 1998)

cyberspace

	/si:'ber-spays/ 1. Notional "information-space" loaded with
	visual cues and navigable with brain-computer interfaces
	called "cyberspace decks"; a characteristic prop of
	{cyberpunk} SF.  At the time of this writing (mid-1991),
	serious efforts to construct {virtual reality} interfaces
	modelled explicitly on Gibsonian cyberspace are already under
	way, using more conventional devices such as glove sensors and
	binocular TV headsets.  Few hackers are prepared to deny
	outright the possibility of a cyberspace someday evolving out
	of the network (see {network, the}).

	2. Occasionally, the metaphoric location of the mind of a
	person in {hack mode}.  Some hackers report experiencing
	strong eidetic imagery when in hack mode; interestingly,
	independent reports from multiple sources suggest that there
	are common features to the experience.  In particular, the
	dominant colours of this subjective "cyberspace" are often
	grey and silver, and the imagery often involves constellations
	of marching dots, elaborate shifting patterns of lines and
	angles, or moire patterns.

	(09 Nov 1995)

cyberspastic

	<humour> A person suffering from information overload while
	browsing the {Internet} or {World-Wide Web}.

	Compare {webhead}.

	(09 Nov 1995)

cyber-squatting

	<jargon, networking> The practice of registering famous brand
	names as {Internet} {domain names}, e.g. harrods.com, ibm.firm
	or sears.shop, in the hope of later selling them to the
	appropriate owner at a profit.

	(22 Jan 1998)

CyberWand

	<hardware, virtual reality> A {virtual reality} {controller}.
	The CyberWand costs $99, or $765 with optional Polhemus
	sensor.  It is basically the handle of a flight control system
	without the base.  The controller's four buttons and 2-D hat
	sensor track six degrees of movement.

	(04 Apr 1995)

CyberZine

	<publication> A combination paper and {World-Wide Web} on-line
	{Cyberspace} guide.  Upon payment you will be given a username
	and password to access CyberZine on-line and the paper version
	will be posted first class.  Subscribers can also use the
	CyberZine help desk.

	{Home (http://cyberzine.org/)}

	E-mail: <CyberZine@CyberZine.org>.

	(22 Sep 1994)

CYBIL

	Control Data's system programming language in the 80's.  Major
	parts of CDC systems written in this.

CYCL

	A {frame language}.

	["Building Large Knowledge-Based Systems", Doug B. Lenat et
	al, A-W 1990].

cycle

	<unit> A basic unit of computation, one period of a computer
	{clock}.

	Each {instruction} takes a number of clock cycles.  Often the
	computer can access its memory once on every clock cycle, and
	so one speaks also of "memory cycles".

	Every {hacker} wants more cycles (noted hacker {Bill Gosper}
	describes himself as a "cycle junkie").  There are only so
	many cycles per second, and when you are sharing a computer
	the cycles get divided up among the users.  The more cycles
	the computer spends working on your program rather than
	someone else's, the faster your program will run.  That's why
	every hacker wants more cycles: so he can spend less time
	waiting for the computer to respond.

	The use of the term "cycle" for a computer clock period can
	probably be traced back to the rotation of a generator
	generating alternating current though computers generally use
	a clock signal which is more like a {square wave}.
	Interestingly, the earliest mechanical calculators,
	e.g. Babbage's {Difference Engine}, really did have parts
	which rotated in true cycles.

	(30 Sep 1997)

cyclebabble

	<jargon> Advertising raw {clock speed}, instead of {bus
	speed}.

	{IBM} uses raw clock speed as the speed of the computer.  In
	the {IBM PC} and {IBM PC XT}, the clock is divided by 4 to
	produce the 4-phase bus clocks.  Thus a 4 MHz IBM XT really
	runs at 0.895 MHz, because that 4 MHz was really 3.58 MHz
	which gets divided by four.

	A {Tandy} {Color Computer} ran at exactly the same speed, but
	clock speed was specified as bus speed, 0.895 MHz, leaving the
	impression that it was 4 times slower.  Actually it ran a
	little faster with a more efficient {instruction set}.  If the
	actual clock frequency had been specified on a {CoCo 3}, it
	would have been 14.32 MHz, although the bus speed was still
	0.895 MHz.  That high speed also generated video, color, and
	{hidden refresh} timing.

	100 MHz computers are running at bus speeds of around 25 MHz.

	(13 Feb 1997)

cycle crunch

	<jargon> A situation wherein the number of people trying to
	use a computer simultaneously has reached the point where no
	one can get enough {cycles} because they are spread too thin
	and the system has probably begun to {thrash}.

	This scenario is an inevitable result of Parkinson's Law
	applied to {time-sharing}.  Usually the only solution is to
	buy more computer.  Happily, this has rapidly become easier
	since the mid-1980s, so much so that the very term "cycle
	crunch" now has a faintly archaic flavour; most hackers now
	use {workstations} or {personal computers} as opposed to
	traditional {time-sharing} systems.

	(29 Nov 1994)

cycle drought

	A scarcity of {cycle}s.  It may be due to a {cycle crunch},
	but it could also occur because part of the computer is
	temporarily not working, leaving fewer cycles to go around.
	"The {high moby} is {down}, so we're running with only half
	the usual amount of memory.  There will be a cycle drought
	until it's fixed."

	(29 Nov 1994)

cycle of reincarnation

	A term coined by {Ivan Sutherland} ca. 1970 to refer to a
	well-known effect whereby function in a computing system
	family is migrated out to special-purpose {peripheral}
	hardware for speed, then the peripheral evolves toward more
	computing power as it does its job, then somebody notices that
	it is inefficient to support two asymmetrical processors in
	the architecture and folds the function back into the main
	{CPU}, at which point the cycle begins again.

	Several iterations of this cycle have been observed in
	{graphics-processor} ({blitter}) design, and at least one or
	two in communications and {floating-point} processors.  Also
	known as "the Wheel of Life", "the Wheel of Samsara" and other
	variations of the basic Hindu/Buddhist theological idea.

	(16 Nov 1994)

cycle server

	A powerful machine that exists primarily for running large
	{batch} jobs.  Implies that interactive tasks such as editing
	are done on other machines on the network, such as
	workstations.

cyclic redundancy check

	<algorithm> (CRC) A number derived from, and stored or
	transmitted with, a block of data in order to detect
	corruption.  By recalculating the CRC and comparing it to the
	value originally transmitted, the receiver can detect some
	types of transmission errors.

	A CRC is more complicated than a {checksum}.  It is calculated
	using division either using shifts and exclusive ORs or table
	lookup (modulo 256 or 65536).

	The CRC is "redundant" in that it adds no information.  A
	single corrupted bit in the data will result in a one bit
	change in the calculated CRC but multiple corrupted bits may
	cancel each other out.

	CRCs treat blocks of input bits as coefficient-sets for
	polinomials.  E.g., binary 10100000 implies the polynomial:
	1*x^7 + 0*x^6 + 1*x^5 + 0*x^4 + 0*x^3 + 0*x^2 + 0*x^1 + 0*x^0.
	This is the "message polynomial".  A second polynomial, with
	constant coefficients, is called the "generator polynomial".
	This is divided into the message polynomial, giving a quotient
	and remainder.  The coefficients of the remainder form the
	bits of the final CRC.  So, an order-33 generator polynomial
	is necessary to generate a 32-bit CRC.  The exact bit-set used
	for the generator polynomial will naturally affect the CRC
	that is computed.

	Most CRC implementations seem to operate 8 bits at a time by
	building a table of 256 entries, representing all 256 possible
	8-bit byte combinations, and determining the effect that each
	byte will have.  CRCs are then computed using an input byte to
	select a 16- or 32-bit value from the table.  This value is
	then used to update the CRC.

	{Ethernet} {packets} have a 32-bit CRC.  Many disk formats
	include a CRC at some level.

	(02 Aug 1997)

Cyclo

	<programming, tool> (Cyclomatic complexity tool) A {C} and
	{C++} code analysis tool by Roger D. Binns.  It measures
	{cyclomatic complexity}, shows function calls, and can draw
	{flowgraphs} of {ANSI C} and {C++} code.  It requires {Lex}
	and {C++}.

	Posted to {alt.sources}, 28 Jun 1993.

	(28 Jun 1993)

cyclomatic complexity

	<programming> A measure of the number of linearly independent
	paths through a program {module}.

	[Explanation?]

	(13 May 1996)

Cygnus Tcl Tools

	A rebundling of {Tcl} and {Tk} into the {Cyngus} {GNU} build
	framework with "{configure}" by david d 'zoo' zuhn
	<zoo@cygnus.com>.  Version Release-930124.

	{(ftp://cygnus.com/pub/)}

	(24 Jan 1993)

cylinder

	<storage> The set of {tracks} on a multi-headed {disk} that
	may be accessed without head movement.  That is, the
	collection of disk tracks which are the same distance from the
	spindle about which the disks rotate.  Each such group forms
	the shape of a cylinder.  Placing data that are likely to be
	accessed together in cylinders reduces the access
	significantly as head movement ({seeking}) is slow compared to
	disk rotation and switching between heads.

	(15 Jul 1997)

CypherText

	<language> An interactive language for text formatting and
	typesetting.

	["CypherText: An Extensible Composing and Typesetting
	Language", C.G. Moore et al, Proc FJCC 37, AFIPS (Fall 1970)].

	(10 May 1995)

Cyrix

	<company> A {microprocessor} manufacturer.  They produce an
	{Intel 4865} equivalent - the {Cy486SLC} and a {Pentium}
	equivalent - the {Cyrix 6x86}.

	{Home (http://www.cyrix.com/)}

	(23 Mar 1996)

Cyrix 6x86

	<processor> (6x86) {IBM} and {Cyrix}'s {sixth-generation},
	64-bit {80x86}-compatible {microprocessor}.  The 6x86 combines
	aspects of both {RISC} and {CISC}.  It has a {superscalar},
	{superpipelined} {core}, and performs {register renaming},
	{speculative execution}, {out-of-order completion}, and {data
	dependency removal}.  It has a 16-kilobyte {primary cache} and
	is socket-compatible with the {Pentium} P54C.  It has four
	performance levels: PR 120+, PR 150+, PR 166+ and PR 200+.

	The chip was designed by Cyrix and is manufactured by IBM.

	The architecture of the 6x86 is more advanced than that of the
	Pentium, incorporating some of the features of Intel's
	{Pentium Pro}.  At a given {clock rate} it executes most code
	more quickly than a Pentium would.  However, its {FPU} is
	considerably less efficient than Intel's.

	{IBM FAQ
	(http://www.chips.ibm.com/products/x86/6x86/faqs/6x86_faqs.html)},
	{Cyrix FAQ
	(http://www.cyrix.com/process/prodinfo/6x86/faq-6x86.htm)}.

	(26 May 1997)

D

	1. "The Data Language."  {MS-DOS} 4GL.

	2. A {Haskell}-like language, with {type class}es.

	E-mail: <polar@cs.syr.edu>.

DAA

	Distributed Application Architecture: under design by
	Hewlett-Packard and Sun.  A distributed object management
	environment that will allow applications to be developed
	independent of operating system, network or windowing system.

DAC

	{Digital to Analog Converter}

DACAPO

	Broad-range hardware specification language.  "Mixed Level
	Modelling and Simulation of VLSI Systems", F.J. Rammig in
	Logic Design and Simulation, E. Horbst ed, N-H 1986.

DACNOS

	A prototype network operating system for multi-vendor
	environments, from IBM European Networking Centre Heidelberg
	and University of Karlsruhe.

	(16 Jan 1995)

D/A converter

	{Digital to Analog Converter}

DACTL

	Declarative Alvey Compiler Target Language.

	An intermediate language from the {University of East Anglia},
	used in the {Flagship} project.  DACTL is based on a form of
	{graph rewriting} which can be used to implement {functional
	language}s, {logic language}s and {imperative} languages.  The
	current version is Dactl0.

	["DACTL - A Computational Model and Compiler Target Language
	Based on Graph Reduction", J.R.W. Glauert et al, ICL Tech J
	5(3) (1987)].

	(22 Sep 1994)

daemon

	<operating system> /day'mn/ or /dee'mn/ (From the mythological
	meaning, later rationalised as the acronym "Disk And Execution
	MONitor") A program that is not invoked explicitly, but lies
	dormant waiting for some condition(s) to occur.  The idea is
	that the perpetrator of the condition need not be aware that a
	daemon is lurking (though often a program will commit an
	action only because it knows that it will implicitly invoke a
	daemon).

	For example, under {ITS} writing a file on the {LPT} spooler's
	directory would invoke the spooling daemon, which would then
	print the file.  The advantage is that programs wanting files
	printed need neither compete for access to, nor understand any
	idiosyncrasies of, the {LPT}.  They simply enter their
	implicit requests and let the daemon decide what to do with
	them.  Daemons are usually spawned automatically by the
	system, and may either live forever or be regenerated at
	intervals.

	{Unix} systems run many daemons, chiefly to handle requests
	for services from other {host}s on a {network}.  Most of these
	are now started as required by a single real daemon, {inetd},
	rather than running continuously.  Examples are {cron} (local
	timed command execution), {rshd} (remote command execution),
	{rlogind} and {telnetd} (remote login), {ftpd}, {nfsd} (file
	transfer), {lpd} (printing).

	Daemon and {demon} are often used interchangeably, but seem to
	have distinct connotations (see {demon}).  The term "daemon"
	was introduced to computing by {CTSS} people (who pronounced
	it /dee'mon/) and used it to refer to what {ITS} called a
	{dragon}.

	(11 May 1995)

DAG

	1. <architecture> {Data Address Generator}.

	2. <mathematics> {directed acyclic graph}.

	(30 Aug 1997)

Daisy

	A {functional language}.

	["Daisy Programming Manual", S.D. Johnson, CS Dept TR, Indiana
	U, 1988].

DAISY 201

	An early system on {G-15}.

	[Listed in CACM 2(5):16 (May 1959)].

daisy chain

	<networking> A {bus} wiring scheme in which, for example,
	device A is wired to device B, device B is wired to device C,
	etc.  The last device is normally wired to a resistor or
	{terminator}.  All devices may receive identical signals or,
	in contrast to a simple bus, each device in the chain may
	modify one or more signals before passing them on.

	Characteristic of {RS-485}, of {Apple}'s {LocalTalk}, and of
	various industrial control networks; also often used to
	describe {Thinwire} {Ethernet} ({10Base2}).

	(07 Jan 1997)

dangling pointer

	<programming> A reference that doesn't actually lead anywhere.
	In {C} and some other languages, a pointer that doesn't
	actually point at anything valid.  Usually this happens
	because it formerly pointed to something that has moved or
	disappeared, e.g. a {heap}-allocated block which has been freed
	and reused.

	Used as jargon in a generalisation of its technical meaning;
	for example, a local phone number for a person who has since
	moved is a dangling pointer.

DANTE

	A company established by the national research networks in
	Europe to provide international network services.

DAP Fortran

	["Efficient High Speed Computing with the Distributed Array
	Processor", P.M. Flanders et al, pp.113-127 (1977)].

	[Same as Fortran- Plus?]

DAPLEX

	["The Functional Data Model and the Data Language DAPLEX",
	D.W. Shipman, ACM Trans Database Sys, 6(1):140-173 (Mar
	1981)].

DARE

	Differential Analyzer REplacement.  A family of simulation
	languages for continuous systems.

	["Digital Continuous System Simulation", G.A. Korn et al, P-H
	1978].

dark-side hacker

	A criminal or malicious hacker; a {cracker}.  From George
	Lucas's Darth Vader, "seduced by the dark side of the Force".
	The implication that hackers form a sort of elite of
	technological Jedi Knights is intended.

	Opposite: {samurai}.

	(28 Apr 1997)

Darms

	<language> A music language.

	["The Darms Project: A Status Report", R.F. Erickson,
	Computers and the Humanities 9(6):291-298 (June 1975)].

	(12 May 1995)

DARPA

	<body> {Defense Advanced Research Project Agency}.

Dartmouth BASIC

	<language> The original {BASIC} by Kemeny and Kurtz.

	(12 May 1995)

Darwin

	A general purpose structuring tool of use in building complex
	{distributed system}s from diverse components and diverse
	component interaction mechanisms.  Darwin is being developed
	by the Distributed Software Engineering Section of the
	Department of Computing at {Imperial College}.  It is in
	essence a {declarative} binding language which can be used to
	define hierarchic compositions of interconnected components.
	Distribution is dealt with orthogonally to system structuring.
	The language allows the specification of both static
	structures and dynamic structures which evolve during
	execution.  The central abstractions managed by Darwin are
	components and services.  Bindings are formed by manipulating
	references to services.

	The {operational semantics} of Darwin is described in terms of
	the {Pi-calculus}, {Milner}'s calculus of mobile processes.
	The correspondence between the treatment of names in the
	Pi-calculus and the management of service references in Darwin
	leads to an elegant and concise Pi-calculus model of Darwin's
	{operational semantics}.  The model has proved useful in
	arguing the correctness of Darwin implementations and in
	designing extensions to Darwin and reasoning about their
	behaviour.

	{Distributed Software Engineering Section
	(http://www-dse.doc.ic.ac.uk/)}.  {Darwin publications
	(http://scorch.doc.ic.ac.uk/dse-papers/darwin/)}.

	E-mail: Jeff Magee <jnm@doc.ic.ac.uk>, Naranker Dulay
	<nd@doc.ic.ac.uk>.

	(08 Nov 1994)

DAS

	Digital Analog Simulator.

	Represents {analog computer} design.

	(08 Nov 1994)

DASD

	{Direct-Access Storage Device}

DASE

	{Distributed Application Support Environment}

DASL

	Datapoint's Advanced System Language.

	A cross between {C} and {Pascal} by Gene Hughes with custom
	features for {Datapoint} hardware (no {stack}).  It is used
	internally by Datapoint.

	(08 Nov 1994)

DAT

	1. {Digital Audio Tape}.

	2. {Dynamic Address Translation}.

data

	<data processing, jargon> (Or "raw data", "information",
	"wisdom") Numbers, {characters}, {images} or other method of
	recording, in a form which can be assessed by a human or
	(especially) input into a {computer}, stored and {processed}
	there, or transmitted on some {digital channel}.

	Data on its own has no meaning, only when interpreted by some
	kind of {data processing system} does it take on meaning and
	become {information}.  For example, the number 123454657.99 is
	data but if it is output as your bank balance then that is
	information.

	People or computers can find patterns in data to perceive
	information, and information can be used to enhance
	{knowledge}.  Since knowledge is prerequisite to wisdom, we
	always want more data and information.  But, as modern
	societies verge on {information overload}, we especially need
	better ways to find patterns.

	123454657.99 is data.

	"Your bank balance has jumped 8087% to 123454657.99" is
	information.

	"Nobody owes me that much money" is knowledge.

	"I'd better talk to the bank before I spend it, because of
	what has happened to other people" is wisdom.

	(18 May 1996)

data abstraction

	{abstract data type}

Data Address Generator

	<architecture> (DAG) The mechanism which generates temporary
	memory addresses for data that is transferred between memory
	and {registers} in a {Digital Signal Processor}.

	Certain {DSP} architectures incorporate more than one DAG to
	simplify the programming needed to move blocks of data between
	buffers.

	For instance, certain {Fast Fourier Transform} {algorithms}
	requiring {bit reversing}, can use the DAG for that purpose,
	or they can use two DAGS, one for Program Memory Data (PMD),
	and the other for Data Memory Data (DMD).

	(12 Aug 1997)

database

	1. <database> One or more large structured sets of persistent
	data, usually associated with software to update and {query}
	the data.  A simple database might be a single file containing
	many {records}, each of which contains the same set of
	{fields} where each field is a certain fixed width.

	A database is one component of a {database management system}.

	See also {ANSI/SPARC Architecture}, {atomic}, {blob}, {data
	definition language}, {deductive database}, {distributed
	database}, {fourth generation language}, {functional
	database}, {object-oriented database}, {relational database}.

	{(http://www.bus.orst.edu/faculty/brownc/lectures/db_tutor/db_tutor.htm.)}.

	2. <hypertext> A collection of {node}s managed and stored in
	one place and all accessible via the same {server}.  {Link}s
	outside this are "external", and those inside are "internal".

	On the {World-Wide Web} this is called a {web site}.

	3. All the facts and rules comprising a {logic programming}
	program.

	(04 Mar 1997)

database administrator

	An individual responsible for the design and management of the
	{database} and for the evaluation, selection and
	implementation of the {database management system}.  In
	smaller organisations, the data administrator and database
	administrator are often one in the same; however, when they
	are different, the database administrator's function is more
	technical.  The database administrator would implement the
	database software that meets the requirements outlined by the
	organisation's data administrator and {systems analyst}s.

database machine

	A computer or special hardware that stores and retrieves data
	from a {database}.  It is specially designed for database
	access and is coupled to the main ({front-end}) computer(s) by
	a high-speed channel.  This contrasts with a {database
	server}, which is a computer in a {local area network} that
	holds a database.  The database machine is tightly coupled to
	the main CPU, whereas the database server is loosely coupled
	via the network.

database management system

	(DBMS) A suite of programs which typically manage large
	structured sets of persistent data, offering ad hoc query
	facilities to many users.  They are widely used in business
	applications.  Commercial examples include {Ingres}, {Oracle}
	and {Sybase}.

	A database management system (DBMS) is an extremely complex
	set of software programs that controls the organisation,
	storage and retrieval of data (fields, records and files) in a
	database.  It also controls the security and integrity of the
	database.  The DBMS accepts requests for data from the
	application program and instructs the operating system to
	transfer the appropriate data.

	When a DBMS is used, information systems can be changed much
	more easily as the organisation's information requirements
	change.  New categories of data can be added to the database
	without disruption to the existing system.

	MAJOR FEATURES OF A DBMS

	DATA SECURITY AND INTEGRITY

	Data security prevents unauthorised users from viewing or
	updating the database.  Using passwords, users are allowed
	access to the entire database or subsets of the database,
	called subschemas (pronounced "sub-skeema").  For example, an
	employee database can contain all the data about an individual
	employee, but one group of users may be authorised to view
	only payroll data, while others are allowed access to only
	work history and medical data.

	The DBMS can maintain the integrity of the database by not
	allowing more than one user to update the same record at the
	same time.  The DBMS can keep duplicate records out of the
	database; for example, no two customers with the same customer
	numbers (key fields) can be entered into the database.

	INTERACTIVE QUERY

	Query languages and report writers allow users to
	interactively interrogate the database and analyse its data.

	INTERACTIVE DATA ENTRY AND UPDATING

	If the DBMS provides a way to interactively enter and update
	the database, as well as interrogate it, this capability
	allows for managing personal databases.  However, it does not
	automatically leave an audit trail of actions and does not
	provide the kinds of controls necessary in a multi-user
	organisation.  These controls are only available when a set of
	application programs are customised for each data entry and
	updating function.

	This is one of the most common misconceptions about database
	management systems that are used in personal computers.
	Thoroughly comprehensive and sophisticated business systems
	can be developed in dBASE, Paradox and other DBMSs; however,
	they are created by experienced programmers using the DBMS's
	own programming language.

	DATABASE DESIGN

	A business information system is made up of subjects
	(customers, employees, vendors, etc.) and activities (orders,
	payments, purchases, etc.).  Database design is the process of
	deciding how to organize this data into record types and how
	the record types will relate to each other.  The DBMS that is
	chosen is the one that can mirror the organisation's data
	structure properly and process the transaction volume
	efficiently.

	Organisations may use one kind of DBMS for daily transaction
	processing and then move the detail onto another computer that
	uses another DBMS better suited for random inquiries and
	analysis.  Overall systems design decisions are performed by
	data administrators and systems analysts.  Detailed database
	design is performed by database administrators.

	HIERARCHICAL, NETWORK AND RELATIONAL DATABASES

	Hierarchical, network and relational databases are the three
	most commonly advertised methods of organizing data.  A
	database management system may provide one, two or all three
	methods.  Inverted lists and other methods are also used.

	The structure that best suits an organisation depends on the
	organisation's particular requirements, the volume of daily
	transactions and the estimated number of ad hoc inquiries that
	will be made.

	Hierarchical databases link records together like an
	organisation chart, and a record type can be owned by only one
	owner.  For example, orders are owned by only customer.
	Hierarchical structures were widely used in the first
	mainframe database management systems.  However, due to their
	restrictions, they often cannot be used to relate structures
	that exist in the real world.

	In network database structures, a record type can have
	multiple owners.  In the order processing example, orders are
	owned by both customers and products, since that's the way
	they relate in the business.

	Relational databases don't link records together physically,
	but the design of the records must provide a common field,
	such as account number, to allow for matching.  Quite often,
	the fields used for matching are indexed in order to speed up
	the process.  In the order processing example, customers,
	orders and products are linked by comparing data fields and/or
	indexes when information from more than one record type is
	needed.  This method is the most flexible for ad hoc
	inquiries, but may be too slow for heavy transaction
	processing environments.  Although relational database is
	often considered a new concept, database management systems
	have traditionally provided relational capability with their
	hierarchical or network designs.

	INTELLIGENT DATABASES

	All DBMSs provide some data validation; for example, they will
	reject invalid dates entered into date fields, alphabetic data
	entered into money fields.  But the real processing is left up
	to the application programs.

	Intelligent databases provide more validation; for example,
	table lookups will reject incorrect spelling or coding of
	items.  There's no limit to the amount of processing that can
	be placed into an intelligent database as long as the process
	is a standardised function for that data.  For example, the
	correct sales tax can be computed by the database and applied
	to all orders for the customer based on the customer's billing
	address.

	When the validation process is left up to the individual
	application program, one program can allow one set of codes to
	be entered into a field, while another program can allow a
	totally different, and erroneous, set of codes.  Data
	integrity is best served when there's one controlling source
	for the validation of data.

	Mainframe databases have increasingly become more intelligent,
	and personal computer database systems are rapidly following
	suit.  In time, all database management systems will be
	"intelligent."

	DATABASE MACHINES

	Database machines are specially designed computers that hold
	the actual databases and run only the DBMS and related
	software.  Connected to one or more mainframes via a
	high-speed channel, database machines are used in large volume
	transaction processing environments.  Database machines have a
	large number of DBMS functions built into the hardware and
	also provide special techniques for accessing the disks
	containing the databases, such as using multiple processors
	concurrently for high-speed searches.

	FUTURE DATABASES

	The world of information is made up of data, text, pictures
	and voice.  Many DBMSs manage text as well as data, but very
	few manage both with equal proficiency.  Throughout the 1990s,
	as storage capacities continue to increase, DBMSs will begin
	to integrate all forms of information.  Eventually, it will be
	common for a database to handle data, text, graphics, voice
	and video with the same ease as today's systems handle data.
	When this happens, the office of the future will have finally
	arrived!

database manager

	The part of the database management system (DBMS) that handles
	the organisation, storage and retrieval of the data.  A
	database manager may work with traditional programming
	languages, such as COBOL and BASIC, or may work only with its
	proprietary programming language.  The terms database manager
	and database management system are used interchangeably.

	A database manager links two or more files together and is the
	foundation for developing routine business systems.  Contrast
	with file manager, which works with only one file at a time
	and is typically used interactively on a personal computer for
	managing personal, independent files, such as name and address
	lists.

database query language

	A language in which users of a {database} can (interactively)
	formulate requests and generate reports.  The best known is
	{SQL}.

databases

	{database}

database server

	A stand-alone computer in a local area network that holds and
	manages the database.  It implies that database management
	functions, such as locating the actual record being requested,
	is performed in the server computer.  Contrast with file
	server, which acts as a remote disk drive and requires that
	large parts of the database, for example, entire indexes, be
	transmitted to the user's computer where the real database
	management tasks are performed.

	First-generation personal computer database software was not
	designed for a network; thus, modified versions of the
	software released by the vendors employed the file server
	concept.  Second-generation products, designed for local area
	networks, perform the management tasks in the server where
	they should be done, and consequently are turning the file
	server into a database server.

Data/BASIC

	Also known as Pick BASIC.  A BASIC-like language with database
	capabilities, the main programming language on the Pick OS.
	"The Data/BASIC Language - A Data Processing Language for
	Non-Professional Programmers", P.C. Dressen, Proc SJCC 36,
	AFIPS (Spring 1970).

DATABUS

	DATApoint BUSiness Language.

	A language like an interpreted {assembly language}, used for
	custom applications on {Datapoint} computers.

	(16 Jan 1995)

data bus

	<architecture> The connections between and within the {CPU},
	memory and peripherals used to carry data.  Other connections
	are the {address bus} and control signals.

	The width of the data bus is one of the main factors
	determining the processing power of a computer.  Most current
	processor designs use a 32-bit bus, meaning that 32 bits of
	data can be transferred at once.  Some processors have an
	internal data bus which is wider than their external bus in
	order to make external connections cheaper while retaining
	some of the benefits in processing power of a wider bus.

	See also {data path}.

	(16 Jan 1995)

data channel

	<communications> A channel (on a {BRI} or {PRI} line) used to
	carry control information, to set up connections on the
	associated {bearer channels}.  The name wasn't too bad back
	when users were sending voice (not data) over the {bearer
	channels}, but in 1997 it's quite a misnomer.

	(10 Mar 1997)

DATACODE I

	<language> An early system used on the {Datatron 200} series.

	[Listed in CACM 2(5):16, May 1959].

	(06 Dec 1994)

Datacom

	A {DBMS} from {Computer Associates International}.

	(06 Dec 1994)

Data Communication Equipment

	<communications, hardware> (DCE) The devices and connections
	of a communications network that connect the communication
	circuit between the data source and destination (the {Data
	Terminal Equipment} or DTE).  A {modem} is the most common
	kind of DCE.

	Before data can be transmited over a modem, the DTR (Data
	Terminal Ready) signal must be active.  DTR tells the DCE that
	the DTE is ready to transmit and receive data.

	DCE and DTE are usually connected by an {RS-232} {serial
	line}.  It is necessary to distinguish these two types of
	device because their connectors must be wired differently if a
	"straight-through" cable (pin 1 to pin 1, pin 2 to pin 2 etc.)
	is to be used.  DCE should have a female connector and should
	transmit on pin two and receive on pin three.  It is a curious
	fact that many {modem}s are "DTE" according to the original
	standard.

	(28 Feb 1995)

Data Communications Equipment

	{Data Communication Equipment}

data compression

	<algorithm> {compression}.  Probably to distinguish it from
	(electronic) {signal compression}.

	(02 Apr 1995)

data definition language

	(DDL) 1. A language enabling the structure and instances of a
	{database} to be defined in a human- and machine-readable
	form.

	2. A specification language for databases, based on the
	{entity-relationship} model.  It is used in the {Eli}
	{compiler-compiler} to manage type definitions.

	["DDL Reference Manual", ECE Dept U Colorado, 1991].

	(06 Dec 1994)

data dictionary

	A set of {data description}s that can be shared by several
	applications.

data dictionary file

	<database> (DDF) A set of files describing the structure of a
	{database} file. DDFs define {database tables} and include
	information about file locations, field layouts and
	indexes. DDFs are the standard method for defining field and
	index characteristics for {Btrieve} files.

	(03 Jun 1997)

data driven

	A data driven architecture/language performs computations in
	an order dictated by data dependencies.  Two kinds of data
	driven computation are {dataflow} and {demand driven}.

	From about 1970 research in parallel {data driven} computation
	increased.  Centres of excellence emerged at {MIT},
	{CERT-ONERA} in France, {NTT} and {ETL} in Japan and
	{Manchester University}.

Data Encryption Algorithm

	(DEA) An {ANSI} {standard} defined in ANSI X3.92-1981.  It is
	identical to the {Data Encryption Standard} (DES).

	(06 Dec 1994)

Data Encryption Key

	(DEK) Used for the {encryption} of message text and for the
	computation of message integrity checks (signatures).

	See {cryptography}.

	(06 Dec 1994)

Data Encryption Standard

	(DES) The {NBS}'s popular, standard {encryption} algorithm.
	It is a {product cipher} that operates on 64-bit blocks of
	data, using a 56-bit key.  It is defined in {FIPS} 46-1 (1988)
	(which supersedes FIPS 46 (1977)).  DES is identical to the
	{ANSI} standard {Data Encryption Algorithm} (DEA) defined in
	ANSI X3.92-1981.

	DES has been implemented in {VLSI}.  {SunOS} provides a des
	command which can make use of DES hardware if fitted.  Neither
	the software nor the hardware are supposed to be distributed
	outside the USA.

	{Unix manual pages}: des(1), des(3), des(4).

	(06 Dec 1994)

data flow

	A data flow architecture or language performs a computation
	when all the {operand}s are available.  Data flow is one kind
	of {data driven} architecture, the other is {demand driven}.
	It is a technique for specifying parallel computation at a
	fine-grain level, usually in the form of two-dimensional
	graphs in which instructions that are available for concurrent
	execution are written alongside each other while those that
	must be executed in sequence are written one under the other.
	Data dependencies between instructions are indicated by
	directed arcs.  Instructions do not reference memory since the
	data dependence arcs allow data to be transmitted directly
	from the producing instruction to the consuming one.

	Data flow schemes differ chiefly in the way that they handle
	{re-entrant} code.  Static schemes disallow it, dynamic
	schemes use either "code copying" or "tagging" at every point
	of reentry.

	An example of a data flow architecture is {MIT}'s {VAL}
	machine.

data flow analysis

	<programming> A process to discover the dependencies between
	different data items manipulated by a program.  The order of
	execution in a {data driven} language is determined solely by
	the data dependencies.  For example, given the equations

		1. X = A + B
		2. B = 2 + 2
		3. A = 3 + 4

	a data-flow analysis would find that 2 and 3 must be evaluated
	before 1.  Since there are no data dependencies between 2 and
	3, they may be evaluated in any order, including in parallel.

	This technique is implemented in {hardware} in some
	{pipelined} processors with multiple {functional units}.  It
	allows instructions to be executed as soon as their inputs are
	available, independent of the original program order.

	(13 May 1996)

Data Flow Diagram

	A graphical notation used to describe how data flows between
	processes in a system.  An important tool of most {structured
	analysis} techniques.

data fork

	<file system> See {Macintosh file system}.

	(04 Mar 1996)

data frame

	See {activation record}.

Data General

	US computer manufacturer.  Responsible for the {Nova}
	minicomputer.

	Quarterly sales $284M, profits -$12M (Aug 1994).

	(26 Sep 1994)

data glove

	<hardware, virtual reality> An input device for {virtual
	reality} in the form of a glove which measures the movements
	of the wearer's fingers and transmits them to the computer.
	Sophisticated data gloves also measure movement of the wrist
	and elbow.  A data glove may also contain control buttons or
	act as an output device, e.g. vibrating under control of the
	computer.  The user usually sees a virtual image of the
	data glove and can point or grip and push objects.

	Examples are {Fifth Dimension Technologies} (5DT)'s {5th
	Glove}, and {Virtual Technologies}' {CyberGlove}.  A cheaper
	alternative is {InWorld VR}'s {CyberWand}.

	["Full freedom plus input", PC Magazine, Mar 14 1995,
	pp. 168-190].

	[Inventor?]

	(04 Apr 1995)

datagram

	A self-contained, independent entity of data carrying
	sufficient information to be {route}d from the source to the
	destination computer without reliance on earlier exchanges
	between this source and destination computer and the
	transporting {network}.

	See also {connectionless}, {frame}, {packet}.

data hierarchy

	The system of data objects which provide the {method}s for
	{information} storage and retrieval.  Broadly, a data
	hierarchy may be considered to be either natural, which arises
	from the alphabet or syntax of the language in which the
	information is expressed, or machine, which reflects the
	facilities of the computer, both hardware and software.

	A natural data hierarchy might consist of {bits},
	{characters}, words, phrases, sentences, paragraphs, and
	chapters.  One might use components bound to an application,
	such as field, record, and file, and these would ordinarily be
	further specified by having {data descriptors} such as name
	field, address field, etc.  On the other hand, a machine or
	software system might use {bit}, {byte}, {word}, {block},
	{partition}, {channel}, and {port}.

	Programming languages often provide {types} or {objects} which
	can create data hierarchies of arbitrary complexity, thus
	allowing software system designers to model language
	structures described by the linguist to greater or lesser
	degree.

	The distinction between the natural form of data and the
	facilities provided by the machine may be obscure, because
	users force their needs into the molds provided, and
	programmers change machine designs.  As an example, the
	natural data type "character" and the machine type "byte" are
	often used interchangably, because the latter has evolved to
	meet the need of representing the former.

	(03 Nov 1995)

Data Jack

	<hardware> A wall-mounted or desk-mounted connector
	(frequently a wide telephone-style 8-pin {RJ-45}) for
	connecting to data cabling in a building.

	(07 Jan 1997)

Datakit

	<networking> A {circuit-switched} digital network, similar to
	{X.25}.  Datakit supports {host-to-host} connections and
	{RS-232} connections for {terminals}, {printers}, and {hosts}.

	Most of {Bell Laboratories} is {trunk}ed together on Datakit.
	On top of DK transport service, people run {UUCP} for
	{electronic mail} and {dkcu} for {remote login}.

	ISN is the version of Datakit supported by {AT&T} Information
	Systems.  Bell Laboratories in Holmdel, New Jersey, uses ISN
	for internal data communication.

	{(http://www.fc.net:80/phrack/files/p18/p18-9.html)}.

	["Towards a universal data transport system", A. G. Fraser,
	IEEE Journal on Selected Areas in Communications, SAC-1(5)
	pp. 803-16, 1983].

	(20 Oct 1996)

Data Link Control Identifier

	<networking> (DLCI) A channel number which is attached to
	{data frames} to tell the network how to route the data.

	{Frame Relay FAQ (http://www.etinc.com/)}.

	(01 Mar 1997)

data link layer

	<networking> Layer two, the second lowest layer in the {OSI}
	seven layer model.  It splits data into {frame}s (see
	{fragmentation}) for sending on the {physical layer} and
	receives acknowledgement frames.  It performs error checking
	and re-transmits frames not received correctly.  It provides
	an error-free virtual channel to the the {network layer}.  The
	data link layer is split into an upper sublayer, {Logical Link
	Control} (LLC), and a lower sublayer, {Media Access Control}
	(MAC).

	Example {protocols} at this layer are {ABP}, {Go Back N},
	{SRP}.

	(14 Feb 1995)

data link level

	{data link layer}

Data Link Provider Interface

	<networking> (DLPI) The interface that a {network driver}
	presents to the (higher level) {logical link layer} for
	driving the network at the {datagram} level in a {Unix}
	{STREAMS} environment and possibly elsewhere.

	DLPI corresponds to {ISO 8802}/2 ({LLC}) which covers both
	{connection-oriented} and {connectionless} {protocols}.

	[Is this correct?  Better explanation?]

	(29 Jan 1996)

Datamation

	/day"t*-may"sh*n/ A magazine that many hackers assume all
	{suit}s read.  Used to question an unbelieved quote, as in
	"Did you read that in "Datamation?""  It used to publish
	something hackishly funny every once in a while, like the
	original paper on {COME FROM} in 1973, and Ed Post's "Real
	Programmers Don't Use Pascal" ten years later, but it has
	since become much more exclusively {suit}-oriented and boring.

data mining

	Analysis of data in a {database} using tools which look for
	trends or anomalies without knowledge of the meaning of the
	data.

	[Products?]

	(20 Oct 1994)

data model

	<database>

	A mathematical formalism with a notation for describing data
	structures and a set of operations used to manipulate and
	validate that data.

	The {Relational model} is the most widely used data model.

	An example is {NIAM}.

	["Principles of Database and Knowledge-Base Systems",
	J.D. Ullman, Volume I, Computer Science Press, 1988, p. 32].

	[What does this mean?]

	(31 Mar 1995)

data packet

	{packet}

Dataparallel-C

	{C} with parallel extensions by Hatcher and Quinn of the
	University of New Hampshire.  It was based on an early version
	of {C*} and runs on the {Intel} {iPSC-2} and {nCube}.

Data Parallel Haskell

	<language, parallel> Adds Parallel Objects with arbitrary
	Dimension (PODs) and POD comprehensions to Haskell.

	{(ftp://redstar.dcs.qmw.ac.uk/cpc/jon_hill/dpGlue.ps.Z)}

	["Data Parallel Haskell: Mixing Old and New Glue", J. Hill].

	(30 Mar 1995)

data path

	<architecture> A {CPU}'s internal {data bus} and {functional
	units}.  The width of the data path in bits is a major
	determiner of the processor's performance.

	(09 Jul 1997)

Dataphone Digital Service

	<communications, product> (DDS) The first private-line digital
	service offered by {AT&T}, with data rates typically at 2.4,
	4.8, 9.6 and 56 kilobits per second.  DDS is now part of
	AT&T's {Accunet} family of services.  Most LEC (local exchange
	carriers) and IXC (IntereXchange Carriers) offer similar
	services.

	(28 Feb 1995)

data processing

	<application> The input, verification, organisation, storage,
	retrieval, transformation, and extraction of {information}
	from {data}.  The term is normally associated with commercial
	applications such as stock control or payroll.

	(30 Mar 1995)

data rate

	<communications> The amount of {data} transferred per second
	by a communications channel or a computing or storage
	device. Typically measured in units of {bits per second}
	(bps), {bytes per second} (Bps) or {baud}.

	(16 Apr 1997)

data set

	<operating system, storage> An {IBM} term for a {file}.

	(15 Apr 1997)

data set organization

	<operating system, storage> An {IBM} term for the way a {file}
	is structured.  Examples are {partitioned}, {sequential} or
	{VSAM}.

	(15 Apr 1997)

Datastorm Technologies, Inc.

	<company> Suppliers of {Procomm}.

	Address: Columbia MO, USA.

	(04 Apr 1995)

data striping

	<storage> Segmentation of logically {sequential} data, such as
	a single file, so that segments can be written to multiple
	physical devices (usually {disk drives}) in a {round-robin}
	fashion.  This technique is useful if the processor is capable
	of reading or writing data faster than a single disk can
	supply or accept it.  While data is being transferred from the
	first disk, the second disk can locate the next segment.

	Data striping is used in some modern {databases}, such as
	{Sybase}, and in certain {RAID} devices under hardware
	control, such as {IBM}'s {RAMAC} array subsystem (9304/9395).

	Data striping is different from, and may be used in
	conjunction with, {mirroring}.

	(17 Oct 1996)

Data Structures Language

	<language> A dialect of {MAD} with extensions for lists and
	graphics, on {Philco 212}.

	["A Compiler Language for Data Structures", N. Laurance, Proc
	ACM 23rd Natl Conf 36 (1968)].

	(28 Feb 1995)

Data Terminal Equipment

	<communications, hardware> (DTE) A device which acts as the
	source and/or destination of data and which controls the
	communication channel.  DTE includes terminals, computers,
	{protocol converter}s, and {multiplexor}s.

	DTE is usually connected via an {RS-232} {serial line} to
	{Data Communication Equipment} (DCE), typically a {modem}.  It
	is necessary to distinguish these two types of device because
	their connectors must be wired differently if a
	"straight-through" cable (pin 1 to pin 1, pin 2 to pin 2 etc.)
	is to be used.  DTE should have a male connector and should
	should transmit on pin three and receive on pin two.  It is a
	curious fact that many {modem}s are actually "DTE" according
	to the original standard.

	(28 Feb 1995)

DATA-TEXT

	<tool> A system from {Harvard} for numerical computations in
	the Social Sciences.

	["DATA-TEXT Primer", D.J. Armor, Free Press 1972].

	(06 Dec 1994)

DATATRIEVE

	A query and report system for use with DEC's VMS system (RMS,
	VAX Rdb/VMS or VAX DBMS).

DataViews

	{Graphical user interface} development software from
	{V.I.Corporation}, aimed at constructing
	{platform}-independent interactive views of dynamic data.

	(07 Dec 1994)

DataVis

	A {dataflow} language for scientific {visualisation}.

	["Data Flow Visual Programming Languages", D. Hils, J Vis
	Langs and Comput, Dec 1991].

	(06 Dec 1994)

data warehouse

	<database> 1. A generic term for a system for storing,
	retrieving and managing large amounts of any type of data.
	Data warehouse software often includes sophisticated
	{compression} and {hashing} techniques for fast searches, as
	well as advanced filtering.

	2. A {database}, often remote, containing recent snapshots of
	corporate data.  Planners and researchers can use this
	database freely without worrying about slowing down day-to-day
	operations of the production database.

	(01 Aug 1996)

data warehousing

	{data warehouse}

date

	<convention, data> A string unique to a time duration of 24
	hours between 2 successive midnights defined by the local time
	zone.  The specific representation of a date will depend on
	which calendar convention is in force; e.g., Gregorian,
	Islamic, Japanese, Chinese, Hebrew etc. as well as local
	ordering conventions such as UK: day/month/year, US:
	month/day/year.

	Inputting and outputting dates on computers is greatly
	complicated by these {localisation} issues which is why they
	tend to operate on dates internally in some unified form such
	as seconds past midnight at the start of the first of January
	1970.

	Many software and hardware representations of dates allow only
	two digits for the year, leading to the {year 2000} problem.

	{Unix manual page}: date(1), ctime(3).

	(11 Jul 1997)

DAU

	/dow/ [German Fidonet] D"ummster Anzunehmender User.  A German
	acronym for stupidest imaginable user.  From the
	engineering-slang GAU for Gr"osster Anzunehmender Unfall
	(worst foreseeable accident), especially of a LNG tank farm
	plant or something with similarly disastrous consequences.  In
	popular German, GAU is used only to refer to worst-case
	nuclear accidents such as a core meltdown.

	See {cretin}, {loser} and {weasel}.

	(06 Dec 1994)

David Turner

	Professor David A Turner.  One of the pioneers of modern
	{functional language}s.  He designed several languages,
	including, {SASL} (1976), {KRC} (1981) and {Miranda}, many of
	which were implemented using {combinator}s and the {S-K
	reduction machine} which he defined.

	He coined the name "{ZF expression}" for the {list
	comprehension}.

	He set up a company, {Research Software} Limited to market
	{Miranda}.

	E-mail: <dat@ukc.ac.uk>.

	(06 Dec 1994)

day mode

	See {phase} (sense 1).  Used of people only.

DAZIX

	Daisy/Cadnetix Corporation.

	A supplier of digital electronic {CAE} systems.

	(06 Dec 1994)

DB

	{database}

DB2

	A {DBMS} from IBM.

DB-25

	<hardware> The standard 25-pin "D-type" connector used for
	{RS-232} serial communication.

	{DB-9} is a common alternative, especially on {personal
	computers}.

	(08 Dec 1996)

DB-9

	<hardware> The standard 9-pin connector used for {RS-232}
	serial communication (in place of {DB-25}).

	(08 Dec 1996)

DBA

	{database administrator}

dBASE

	<tool, product, language> A {DBMS} from {Ashton-Tate
	Corporation} and the language used by it.

	The first release was dBASE II, ca 1980.  There never was a
	"dBASE I".  Later versions: {dBASE III}, dBASE III+, and dBASE
	IV.

	{Visual dBASE} is a graphical development environment.

	(05 Nov 1996)

DBC

	<language, parallel> A {data-parallel} {bit-serial} {C} based
	on {MPL}.  SRC, Bowie MD.

	E-mail: <maya@super.org>.

	(01 May 1995)

DBCS

	<character> (IBM) double-byte character set.

	A {character set} that uses 16 bits to represent a character.

	(21 Mar 1995)

dBFAST

	{dBASE} dialect for {MS-DOS} and {MS-Windows}.

DBH

	{Denis Howe}

DBMS

	{database management system}

DBPL

	A {procedural language} with {relational database} constructs.
	A successor to {Pascal/R} and {Modula/R}.

	["DBPL Report", J.W. Schmidt et al, DBPL-Memo 111-88,
	Fachbereich Informatik, Johann Wolfgang Goethe-Universitaet,
	Frankfurt, Germany, 1988].

	(07 Dec 1994)

DBRI

	{Dual Basic Rate Interface}

dBXL

	A {dBASE}-like {interpreter}/language for {MS-DOS} from
	{WordTech}, Orinda, CA.

	(07 Dec 1994)

DC

	<language, tool> The {Unix} {arbitrary precision} {postfix}
	calculator and its language.

	Here is an example program which prints out {factorial}s:

		echo "[la1+dsa*pla2220>y]sy0sa1lyx" | dc

	{Unix manual page}: dc(1).

	{bc} provides a somewhat more readable syntax which is
	compiled into dc.  There is also a {GNU DC}.

	(17 Mar 1995)

DC1

	{control-Q}

DC2

	{Device Control 2}

DC3

	{Control-S}

DC4

	{Device Control 4}

DCA

	1. Defense Communications Agency.  See {DISA}.

	2. {Document Content Architecture} from {IBM}.

DCALGOL

	Data Communications ALGOL.  A superset of {Burroughs Extended
	ALGOL} used for writing Message Control Systems.

DCC

	<networking> {Direct Client to Client Protocol}.

DCDL

	Digital Control Design Language.  A language for simulating
	computer systems.

	["DCDS Digital Simulating System", H. Potash et al, Proc FJCC
	35, AFIPS (Fall 1969)].

DCE

	1. {Data Communication Equipment}.

	2. Data Circuit-terminating Equipment.

	3. {Distributed Computing Environment} from {OSF}.

DCG

	{Definite Clause Grammar}

DCL

	1. DIGITAL Command Language.  The interactive command and
	scripting language for VAX/VMS.

	2. Delphi Common LISP.  An implementation of Common LISP that
	has been used as a basis for CLOS.

DCOM

	{Distributed Component Object Model}

DCP

	{definitional constraint programming}

D. C. Power Lab

	The former site of {SAIL}.  This name was very funny because
	the obvious connection to electrical engineering was
	nonexistent - the lab was named after a Donald C. Power.
	Compare {Marginal Hacks}.

	[But did DCP's parents realise the joke?]

DCS

	{Digital Cellular System}

DCT

	{Discrete Cosine Transform}

DD

	{Data Dictionary}

dd

	A {Unix} copy command with special options suitable for
	block-oriented devices; it was often used in heavy-handed
	system maintenance, as in "Let's "dd" the {root partition}
	onto a tape, then use the {boot PROM} to load it back on to a
	new disk".

	The Unix "dd" was designed with a weird, distinctly non-Unixy
	keyword option syntax reminiscent of {IBM} {System/360} JCL
	(which had an elaborate DD "Dataset Definition" specification
	for I/O devices); though the command filled a need, the
	interface design was clearly a prank.

	The jargon usage is now very rare outside Unix sites and now
	nearly obsolete even there, as "dd" has been {deprecated} for
	a long time (though it has no exact replacement).  The term
	has been displaced by {BLT} or simple English "copy".

	(03 Feb 1995)

DDB

	{device independent bitmap}

DDCMP

	{Digital Data Communications Message Protocol} ({DEC}).

DDE

	{Dynamic Data Exchange}

DDE Manager

	An {Oracle} product that lets {Microsoft Windows}
	applications that support the {Dynamic Data Exchange} (DDE)
	{protocol} act as front end tools for Oracle.  It allows
	applications like {Excel}, {Word}, {Ami Professional}, {WingZ}
	and {ToolBook} to query, update, graph and report information
	stored in Oracle.

DDIF

	Digital Document Interchange Format.  A CDA specification for
	representing compound documents in revisable format; a DEC
	standard for document encoding.

DDL

	1. ["A Digital System Design Language (DDL)", J.R. Duley, IEEE
	Trans on Computers c-17(9), pp. 850-861, Sep 1968].

	2. <language, games> An {adventure} language developed by
	M. Urban, C. Kostanick et al of the {UCLA} Computer Club.  DDL
	was the the forerunner of {ADL}.

	3. {Data Definition Language}.

	4. {Document Description Language}.

	5. {Dynamic Data Exchange}.  (Originally "Linking").

	(05 Jun 1997)

DDM

	Dataflow language.  "The Architecture and System Method of
	DDM-1: A Recursively Structured Data Driven Machine",
	A. Davis, Proc 5th Ann Symp Comp Arch, IEEE 1978.

DDN

	{Defense Data Network}

DDP

	{Distributed Data Processing}

DDS

	1. {Digital Data Service}.

	2. {Digital Data System}.

	3. {Dataphone Digital Service}.

DDT

	1. Generic term for a program that assists in debugging other
	programs by showing individual machine instructions in a
	readable symbolic form and letting the user change them.  In
	this sense the term DDT is now archaic, having been widely
	displaced by "debugger" or names of individual programs like
	"{adb}", "{sdb}", "{dbx}", or "{gdb}".

	2. Under {MIT}'s fabled {ITS} {operating system}, DDT (running
	under the alias HACTRN) was also used as the {shell} or top
	level command language used to execute other programs.

	3. Any one of several specific debuggers supported on early
	{DEC} hardware.  The {DEC} {PDP-10} Reference Handbook (1969)
	contained a footnote on the first page of the documentation
	for DDT that illuminates the origin of the term:

	Historical footnote: DDT was developed at {MIT} for the
	{PDP-1} computer in 1961.  At that time DDT stood for "DEC
	Debugging Tape".  Since then, the idea of an on-line debugging
	program has propagated throughout the computer industry.  DDT
	programs are now available for all DEC computers.  Since media
	other than tape are now frequently used, the more descriptive
	name "Dynamic Debugging Technique" has been adopted, retaining
	the DDT abbreviation.  Confusion between DDT-10 and another
	well known pesticide, dichloro-diphenyl-trichloroethane
	(C14-H9-Cl5) should be minimal since each attacks a different,
	and apparently mutually exclusive, class of bugs.

	(The "tape" referred to was, incidentally, not magnetic but
	paper.)  Sadly, this quotation was removed from later editions
	of the handbook after the {suit}s took over and DEC became
	much more "businesslike".

	The history above is known to many old-time hackers.  But
	there's more: Peter Samson, compiler of the original {TMRC}
	lexicon, reports that he named "DDT" after a similar tool on
	the {TX-0} computer, the direct ancestor of the PDP-1 built at
	{MIT}'s Lincoln Lab in 1957.  The debugger on that
	ground-breaking machine (the first transistorised computer)
	rejoiced in the name FLIT (FLexowriter Interrogation Tape).

DEA

	{Data Encryption Algorithm}

DEACON

	Direct English Access and CONtrol.  English-like query system.
	Sammet 1969, p.668.

dead

	1. Non-functional; {down}; {crash}ed.  Especially used of
	{hardware}.

	2. At {XEROX PARC}, software that is working but not
	undergoing continued development and support.

DEADBEEF

	/ded-beef/ The {hexadecimal} word-fill pattern for freshly
	allocated memory (decimal -21524111) under a number of {IBM}
	environments, including the {RS/6000}.  As in "Your program is
	DEADBEEF" (meaning gone, aborted, flushed from memory); if you
	start from an odd half-word boundary, of course, you have
	BEEFDEAD.

dead code

	<programming> (Or "infeasible path", "{grunge}") Any part of a
	program that can never be accessed because all calls to it
	have been removed, or because it is guarded by a control
	structure that provably must always transfer control somewhere
	else.  The presence of dead code may reveal either logical
	errors due to alterations in the program or significant
	changes in the assumptions and environment of the program (see
	also {software rot}); a good compiler should report dead code
	so a maintainer can think about what it means.  Sometimes it
	simply means that an *extremely* defensive programmer has
	inserted {can't happen} tests which really can't happen - yet.

	Synonym {grunge}.

	(22 May 1996)

deadlock

	1. A situation wherein two or more processes are unable to
	proceed because each is waiting for one of the others to do
	something.  A common example is a program communicating to a
	server, which may find itself waiting for output from the
	server before sending anything more to it, while the server is
	similarly waiting for more input from the controlling program
	before outputting anything.  (It is reported that this
	particular flavour of deadlock is sometimes called a
	"starvation deadlock", though the term "starvation" is more
	properly used for situations where a program can never run
	simply because it never gets high enough priority.  Another
	common flavour is "constipation", in which each process is
	trying to send stuff to the other but all buffers are full
	because nobody is reading anything.)  See {deadly embrace}.

	2. Also used of deadlock-like interactions between humans, as
	when two people meet in a narrow corridor, and each tries to
	be polite by moving aside to let the other pass, but they end
	up swaying from side to side without making any progress
	because they always move the same way at the same time.

deadly embrace

	Same as {deadlock}, though usually used only when exactly two
	processes are involved.  This is the more popular term in
	Europe, while {deadlock} predominates in the United States.

dead tree edition

	<publication, jargon> The paper version of a publication
	available in both paper and electronic forms, as in: "The dead
	tree edition of the San Francisco Chronicle".

	(17 Apr 1997)

deamon

	<spelling> Misspelling of "{daemon}".

	(13 Dec 1996)

death code

	A routine whose job is to set everything in the computer -
	{register}s, memory, flags - to zero, including that portion
	of memory where it is running; its last act is to stomp on its
	own "store zero" instruction.  Death code isn't very useful,
	but writing it is an interesting hacking challenge on
	architectures where the instruction set makes it possible,
	such as the {PDP-8} or the {Data General} {Nova}.

	Perhaps the ultimate death code is on the {TI 990} series,
	where all {register}s are actually in {RAM}, and the
	instruction "store immediate 0" has the {opcode} 0.  The
	{program counter} will immediately wrap around core as many
	times as it can until a user hits HALT.  Any empty memory
	location is death code.  Worse, the manufacturer recommended
	use of this instruction in startup code (which would be in
	{ROM} and therefore survive).

Death Star

	["Star Wars" film] 1. The AT&T corporate logo, which appears
	on computers sold by AT&T and bears an uncanny resemblance to
	the Death Star in the movie.  This usage is particularly
	common among partisans of {BSD} Unix, who tend to regard the
	AT&T versions as inferior and AT&T as a bad guy.  Copies still
	circulate of a poster printed by Mt. Xinu showing a starscape
	with a space fighter labelled {4.2BSD} streaking away from a
	broken AT&T logo wreathed in flames.

	2. AT&T's internal magazine, "Focus", uses "death star" to
	describe an incorrectly done AT&T logo in which the inner
	circle in the top left is dark instead of light - a frequent
	result of dark-on-light logo images.

De Bruijn notation

	A variation of lambda notation for specifying functions using
	numbers instead of names to refer to formal parameters.  A
	reference to a formal parameter is a number which gives the
	number of lambdas (written as \ here) between the reference
	and the lambda which binds the parameter.  E.g. the function \
	f . \ x . f x would be written \ . \ . 1 0.  The 0 refers to
	the innermost lambda, the 1 to the next etc.  The chief
	advantage of this notation is that it avoids the possibility
	of name capture and removes the need for alpha conversion.
	[N.G. De Bruijn, "Lambda Calculus Notation with Nameless
	Dummies: A Tool for Automatic Formula Manipulation, with
	Application to the Church-Rosser Theorem", Indag Math. 34, pp
	381-392]

debugging

	<programming> Attempting to determine the cause of the
	symptoms of malfunctions detected by testing or by frenzied
	user complaints.

	(13 May 1996)

DEC

	{Digital Equipment Corporation}

dec

	<programming> /dek/ decrement, decrease by one.  Especially
	used by {assembly language} programmers, as many assembly
	languages have a "dec" {mnemonic}.

	Opposite: {inc}.

DEC Alpha

	<processor> A {RISC} {microprocessor} from {DEC} clocked at
	200 Mhz or more.  The Alpha is purportedly the fastest
	non-research chip available in commonly available
	{workstations} (Nov 1995).

	[Features?  Dates?]

	(18 Feb 1996)

decay

	[Nuclear physics] An automatic conversion which is applied to
	most array-valued expressions in {C}; they "decay into"
	pointer-valued expressions pointing to the array's first
	element.  This term is not used in the official standard for
	the language.

DECdesign

	A software analysis and design tool from {DEC} supporting
	several methodologies.  Now replaced by {Teamwork}.

	(05 Sep 1994)

DECdns

	Distributed Naming Service.

	Adopted by {OSF} as the naming service for {DCE}.

DEChead

	/dek'hed/ 1. A {DEC} {field servoid}.  Not flattering.

	2. ["deadhead"] A Grateful Dead fan working at {DEC}.

decidability

	<mathematics> A property of sets for which one can determine
	whether something is a member or not in a {finite} number of
	computational steps.

	Decidability is an important concept in {computability
	theory}.  A set (e.g. "all numbers with a 5 in them") is said
	to be "decidable" if I can write a program (usually for a
	{Turing Machine}) to determine whether a number is in the set
	and the program will always terminate with an answer YES or NO
	after a finite number of steps.

	Most sets you can describe easily are decidable, but there are
	infinitely many sets so most sets are undecidable, assuming
	any finite limit on the size (number of instructions or number
	of states) of our programs.  I.e. how ever big you allow your
	program to be there will always be sets which need a bigger
	program to decide membership.

	One example of an undecidable set comes from the {halting
	problem}.  It turns out that you can encode every program as a
	number: encode every symbol in the program as a number (001,
	002, ...) and then string all the symbol codes together.  Then
	you can create an undecidable set by defining it as the set of
	all numbers that represent a program that terminates in a
	finite number of steps.

	A set can also be "semi-decidable" - there is an {algorithm}
	that is guaranteed to return YES if the number is in the set,
	but if the number is not in the set, it may either return NO
	or run for ever.

	The {halting problem}'s set described above is semi-decidable.
	You decode the given number and run the resulting program.  If
	it terminates the answer is YES.  If it never terminates, then
	neither will the decision algorithm.

	(13 Jan 1995)

decidable

	{decidability}

decimal point

	<character> "." {ASCII} character 46.  Common names are:
	point; {dot}; {ITU-T}, USA: period; {ITU-T}: decimal point.
	Rare: radix point; UK: full stop; {INTERCAL}: spot.

	(14 Mar 1995)

decision problem

	<theory> A problem with a yes/no answer.  Determining whether
	some potential solution to a question is actually a solution
	or not.  E.g. "Is 43669" a {prime number}?".  This is in
	contrast to a "{search problem}" which must find a solution
	from scratch, e.g. "What is the millionth prime number?".

	See {decidability}.

	(03 May 1996)

decision support

	Software used to aid management decision making, typically
	relying on a {decision support database}.

	[Examples?]

	(14 Feb 1995)

decision support database

	A {database} from which data is extracted and analysed
	statistically (but not modified) in order to inform business
	or other decisions.  This is in contrast to an {operational
	database} which is being continuously updated.

	For example, a decision support database might provide data to
	determine the average salary of different types of workers,
	whereas an operational database containing the same data would
	be used to calculate pay check amounts.

	Often, decision support data is extracted from operation
	databases.

	(14 Feb 1995)

Decision Support Systems

	<application, tool> (DSS) Software tools to help with
	{decision support}.

	(14 Feb 1995)

decision theory

	<probability> A branch of statistics concerning strategies for
	decision making in non-{deterministic} systems.  Decision
	theory seeks to find strategies that maximise the expected
	value of a {utility function} measuring the desirability of
	possible outcomes.

	(22 Sep 1995)

deckle

	/dek'l/ (From "dec-" and "{nibble}"; the original spelling
	seems to have been "decle") Two {nickle}s; 10 {bit}s.
	Reported among developers for {Mattel}'s {GI 1600} (the
	{Intellivision} games processor), a chip with 16-bit wide
	{RAM} but 10-bit wide {ROM}.

	(23 Nov 1994)

declarative language

	A general term for a {relational language} or a {functional
	language}, as opposed to an {imperative language}.  Imperative
	(or procedural) languages specify explicit sequences of steps
	to follow to produce a result, while declarative languages
	describe relationships between variables in terms of functions
	or {inference rule}s and the language executor ({interpreter}
	or {compiler}) applies some fixed {algorithm} to these
	relations to produce a result.  The most common examples of
	declarative languages are {logic programming} languages such
	as {Prolog} and {functional language}s like {Haskell}.

	See also {production system}.

	(23 Nov 1994)

DECmate

	{DEC}'s original competition for the {IBM PC}.  It used the
	{Intersil 6120} {microprocessor}.

	(23 Nov 1994)

DECnet

	A proprietary network protocol designed by Digital Equipment
	Corporation.  The functionality of each Phase of the
	implementation, such as Phase IV and Phase V, is different.

Decomposed Petri Net

	(DPN) The basis of {concurrency} in {ConC}.

decryption

	<cryptography> Any procedure used in {cryptography} to convert
	{ciphertext} (encrypted data) into {plaintext}.

	(10 May 1995)

DECstation

	<computer> A range of {RISC} based {workstations} manufactured
	by {DEC}.

	[Details?]

	(29 Apr 1997)

DECT

	{Digital European Cordless Telecommunications}

DECtape

	<hardware, storage> A small reel, about 4 inches in diameter,
	of {magnetic tape} about an inch wide.  Unlike those for
	today's {macrotape}s, microtape drivers allowed random access
	to the data, and therefore could be used to support file
	systems and even for swapping (this was generally done purely
	for {hack value}, as they were far too slow for practical
	use).  In their heyday they were used in pretty much the same
	ways one would now use a {floppy disk}: as a small, portable
	way to save and transport files and programs.

	(16 Mar 1995)

DECUS

	{Digital Equipment Computer Users Society}

Decus cpp

	An almost-{ANSI C} {preprocessor} by Martin Minow.  It is
	shipped with {X11R5} (contrib/util/cpp) because some systems
	don't have a working {cpp}.

	It runs on {VMS} ({Vax C}, {Decus C}), {RSX-11M}, {RSTS/E},
	{P/OS}, {RT11}, {A/UX} and {Apollo Domain}/IX 9.6 and is
	highly portable.

	(03 Nov 1994)

DEC Wars

	A 1983 {Usenet} posting by Alan Hastings and Steve Tarr
	spoofing the "Star Wars" movies in hackish terms.  Some years
	later, ESR (disappointed by Hastings and Tarr's failure to
	exploit a great premise more thoroughly) posted a
	3-times-longer complete rewrite called "Unix WARS"; the two
	are often confused.

DECwindows

	DEC's windowing environment based on the {X Window System}.

DECwrite

	{DEC}'s {CDA}-based, {WYSIWYG} document processing
	application.  It can generate and import {SGML} marked-up
	documents.

DED

	Dark-Emitting Diode (that is, a burned-out LED).  Compare
	{SED}, {LER}, {write-only memory}.  In the early 1970s both
	Signetics and Texas instruments released DED spec sheets as
	{AFJ}s (suggested uses included "as a power-off indicator").

dedicated line

	<communications> A telephone line leased expressly for the
	purpose of connecting two users more-or-less permenantly..
	Such lines may be "voice grade" which provides the {bandwidth}
	and {signal to noise ratio} of ordinary {public switched
	telephone network} circuits, or specified in ways which allow
	transport of suitably encoded digital signals at faster rates.

	In some cases, lines may be physical wires between the
	communicating parties.  Over longer distances, it is common
	for the connection to be virtual, which means that although
	the two users can communicate only with each other, their
	signals and others are multiplexed, amplified, switched,
	scrambled, demultiplexed and so on in complex ways between the
	end points.

	This contrasts with a {dial-up} connection which is only
	opened when one end requires it.

	(10 Aug 1996)

deductive database

	<database> A combination of a conventional {database}
	containing {fact}s, a {knowledge base} containing {rule}s, and
	an {inference engine} which allows the derivation of
	{information} implied by the facts and rules.

	Commonly, the knowledge base is expressed in a subset of
	{first-order logic} and either a {SLDNF} or {Datalog}
	inference engine is used.

	(27 Apr 1995)

deductive tableau

	<tool> A theorem proof system consisting of a table whose rows
	contain assertions or goals.  Variables in assertions are
	implicitly universally quantified and variables in goals are
	implicitly existentially quantified.  The declarative meaning
	of a tableau is that if every instance of every assertion is
	true then some instance of at least one of the goals is true.

	(07 Dec 1994)

Deep Blue

	<computer> A super computer developed by researchers at {IBM}
	to explore the use of {parallel processing} to solve complex
	computing problems.  It is known as the first computer to beat
	the current chess World Grand Master.

	Deep Blue started it's life as a PhD project at {Carnegie
	Mellon University} by PhD students Feng-hsiung Hsu and Murray
	Campbell.  Chiptest, as it was known then, consisted of a
	custom designed chip hosted in a {Sun} 3/160 computer.

	The project moved over to IBM in 1989 when Hsu and Campbell
	joined IBM.  {Deep Thought}, as it was known by then, played
	for the first time against Garry Kasparov in the same year.
	The game of two matches was easily won by Kasparov.

	The next match against Kasparov took place in February 1996.
	By then the machine was again renamed, at that time it was
	known as Deep Blue.  It was also heavily re-engineered: it was
	by then running on a 32-node {RS/6000} cluster, each
	containing 8 custom designed chips.  Alas, Kasparov won again.

	The breakthrough finally happened in February 1997: with both
	the algorithm and the raw speed significantly improved, Deep
	Blue beat Kasparov 3.5:2.5.

	{HOME (http://www.chess.ibm.com)}.

	(16 Jun 1997)

deep hack mode

	See {hack mode}.

deep magic

	[possibly from C. S. Lewis's "Narnia" books] An awesomely
	arcane technique central to a program or system, especially
	one neither generally published nor available to hackers at
	large (compare {black art}); one that could only have been
	composed by a true {wizard}.  Compiler optimisation techniques
	and many aspects of {OS} design used to be {deep magic}; many
	techniques in cryptography, signal processing, graphics, and
	AI still are.  Compare {heavy wizardry}.  Especially found in
	comments of the form "Deep magic begins here.".  Compare
	{voodoo programming}.

deep space

	1. The notional location of any program that has gone {off the
	trolley}.  Especially used of programs that just sit there
	silently grinding long after either failure or some output is
	expected.  "Uh oh.  I should have had a prompt ten seconds
	ago.  The program's in deep space somewhere." Compare {buzz},
	{catatonic}, {hyperspace}.

	2. The metaphorical location of a human so dazed and/or
	confused or caught up in some esoteric form of {bogosity} that
	he or she no longer responds coherently to normal
	communication.

de facto standard

	A widespread consensus on a particular product or {protocol}
	which has not been ratified by any official {standard}s body,
	such as {ISO}, but which nevertheless has a large market
	share.

	The archetypal example of a de facto standard is the {IBM PC}
	which, despite is many glaring technical deficiencies, has
	gained such a large share of the {personal computer} market
	that it is now popular simply because it is popular and
	therefore enjoys fierce competition in pricing and software
	development.

	(27 Oct 1994)

default route

	<networking> A {routing table} entry which is used to direct
	{packets} addressed to {hosts} or {networks} not explicitly
	listed in the routing table.

	(13 May 1996)

defect

	{bug}

defect analysis

	<programming> Using defects as data for continuous quality
	improvement.  Defect analysis generally seeks to classify
	defects into categories and identify possible causes in order
	to direct process improvement efforts.

	(13 May 1996)

defect density

	<programming> The ratio of the number of {defects} to program
	length.

	(13 May 1996)

defenestration

	<humour> (From the traditional Czechoslovakian method of
	assassinating prime ministers, via SF fandom) 1. Proper karmic
	retribution for an incorrigible punster.  "Oh, ghod, that was
	*awful*!"  "Quick!  Defenestrate him!"

	2. The act of exiting a window system in order to get better
	response time from a full-screen program.  This comes from the
	dictionary meaning of "defenestrate", which is to throw
	something out a window.

	3. The act of discarding something under the assumption that
	it will improve matters.  "I don't have any disk space left."
	"Well, why don't you defenestrate that 100 megs worth of old
	core dumps?"

	(13 May 1996)

Defense Advanced Research Project Agency

	{Advanced Research Projects Agency}

Defense Advanced Research Projects Agency

	{Advanced Research Projects Agency}

Defense Communications Agency

	(DCA) Now called Defense Information Systems Agency (DISA).

Defense Data Network

	(DDN) A global communications network serving the US
	Department of Defense.  Composed of {MILNET}, other portions
	of the {Internet}, and classified networks which are not part
	of the {Internet}.  The DDN is used to connect military
	installations and is managed by the {Defense Information
	Systems Agency}.

	(01 Dec 1994)

Defense Data Network Network Information Center

	(DDN NIC or just "The NIC") The {DDN} {NIC}'s primary
	responsibility is the assignment of {Internet address}es and
	{Autonomous System number}s, the administration of the root
	domain, and providing information and support services to the
	{DDN}.  It is also a primary repository for {RFC}s.

	See also {Internet Registry}.

	(07 Dec 1994)

Defense Information Systems Agency

	(DISA) Formerly called the Defense Communications Agency
	(DCA), this is the government agency responsible for managing
	the {Defense Data Network} (DDN) portion of the {Internet},
	including the {MILNET}.  Currently, DISA administers the
	{DDN}, and supports the user assistance services of the DDN
	{NIC}.

	{Home (http://www.disa.mil/)}

	(01 Dec 1994)

Defense Trade Regulations

	<legal> The U.S. law governening munitions export and defense
	technology (F-16s, TOW missiles and {cryptology}).  According
	to the U.S. (and Canada) cryptography is a munition and people
	who export it can be charged as though they were exporting
	bombs or state secrets.  People have been.

	See also {EFF}.

	(19 Jun 1995)

deferral

	Waiting for quiet on the {Ethernet}.

definite clause

	See {Horn clause}.

definite sentence

	A collection of {definite clause}s.

definitional constraint programming

	<language> (DCP) A declarative, programming paradigm which
	integrates {concurrent constraint programming}, {constraint
	logic programming} and {functional programming}.  In this
	setting a concurrent constraint language becomes a
	coordination system that organises the concurrent interaction
	of parallel functional computations.  The language is also a
	generalisation of parallel {functional programming} languages,
	such as {Id}, where {constraint}s and constraint abstractions
	are reused to define new constraints, as the means of
	programming logical variables for parallel coordination.

	{Goffin} is a DCP language.

	(28 Mar 1995)

deflate

	<file format, compression> A {compression} {standard} derived
	from {LZ77}; it is reportedly used in {zip}, {gzip}, {pkzip},
	and {png}, among others.

	Unlike {LZW}, deflate compression does not use patented
	compression {algorithms}.

	Used as a verb to mean to compress (not decompress!) a file
	which has been compressed using deflate compression.  The
	opposite, {inflate}, means to decompress data which has been
	deflated.

	Deflate is described in {RFC 1951}.

	(21 Jun 1997)

deflate compression

	{deflate}

deflate/inflate compression

	{deflate}

deforestation

	<programming> A technique invented by {Phil Wadler} for
	eliminating intermediate data structures built and passed
	between composed functions in {function languages}.

	(21 Jun 1997)

defrag

	{defragment}

defragment

	<tool, filesystem> /dee-frag(-ment)'/ (Or "defrag") To
	coalesce files and free space on a {file system}.

	As modern file systems are used and files are deleted and
	created, the total free space becomes split into smaller
	non-contiguous blocks (composed of "{clusters}" or "{sectors}"
	or some other unit of allocation).  Eventually new files being
	created, and old files being extended, cannot be stored each
	in a single contiguous block but become scattered across the
	file system.  This degrades performance as multiple {seek}
	operations are required to access a single fragmented file.

	Defragmenting consolidates each existing file and the free
	space into a continuous group of sectors.  Access speed will
	be improved due to reduced seeking.

	The rate of fragmentation depends on the {algorithm} used to
	allocate space and the number and position of free sectors.  A
	nearly-full filesystem will fragment more quickly.

	{MSDOS} and {Microsoft Windows} use the simplest algorithm to
	allocate free clusters and so fragmentaton occurs quickly.  A
	disk should be defragmented before fragmentation reaches 10%.

	(29 Aug 1997)

defunct process

	{zombie process}

degree

	The degree (or valency) of a node in a graph is the number of
	edges joined to it.

degrees of freedom

	The number of independent parameters required to specify the
	position and orientation of an object.  Often used to classify
	{robot} arms.  For example, an arm with six degrees of freedom
	could reach any position close enough and could orient it's
	end effector (grip or tool etc.) at any angle about the three
	perpendicular axes.

dehose

	/dee-hohz/ To clear a {hosed} condition.

DEK

	{Data Encryption Key}

Delaunay triangulation

	<mathematics, graphics> (After B. Delaunay) For a {set} S of
	points in the {Euclidean plane}, the unique {triangulation}
	DT(S) of S such that no point in S is inside the circumcircle
	of any triangle in DT(S).  DT(S) is the dual of the {voronoi
	diagram} of S.

delayed control-transfer

	A technique used on the {SPARC} which attempts to reduce the
	effect of {pipeline break}s by executing the instruction after
	a branch instruction (the "delay instruction" in the "delay
	slot").  If there is no useful instruction which can be placed
	in the delay slot then the "annul bit" on the control-transfer
	instruction can be set, preventing execution of the delay
	instruction (unless the control-transfer is conditional and is
	taken).

	If the delay instruction is also a control-transfer
	instruction then it gets more complicated.  Both
	control-transfer instructions are executed (but not the
	following instruction) and, assuming they are both taken,
	control is transferred briefly to the destination of the first
	and then immediately to the destination of the second.

delay instruction

	The instruction in a {delay slot} in a program for a processor
	which uses {delayed control-transfer}.

delay slot

	The instruction location following a control-transfer
	instruction for a processor which uses {delayed
	control-transfer}.

delete

	1. <operating system> (Or "erase") To make a file
	inaccessible.

	Usually this operation only deletes information from the
	tables the {file system} uses to locate named files; the
	file's contents still exist on {disk} and can sometimes be
	recovered by scanning the whole disk for strings which are
	known to have been in the file.  Files created subsequently on
	the same disk are quite likely to reuse the same blocks and
	thus overwrite the deleted file's data permanently.

	2. <character> The {control character} with {ASCII} code 127.
	Usually entering this character from the keyboard deletes the
	last character typed from the {input buffer}.  Sadly there is
	great confusion between {operating systems} and keyboard
	manufacturers as to whether this function should be assigned
	to the delete or {backspace} key/character.

	The choice of code 127 (binary 1111111) is not arbitrary but
	dates back to the use of {paper tape} for input.  The delete
	key rewound the tape by one character and punched out all
	seven holes, thus obliterating whatever character was there
	before.  The tape reading software ignored any delete
	characters in the input.

	(01 Dec 1996)

delimiter

	<character> A {character} or {string} used to separate, or
	mark the start and end of, items of data in, e.g., a
	{database}, {source code} or {text file}.

	(23 Dec 1997)

delint

	/dee-lint/ To modify code to remove problems detected when
	{lint}ing.  Confusingly, this process is also referred to as
	"linting" code.

Delirium

	An embedding coordinate language for parallel programming,
	implemented on {Sequent Symmetry}, {Cray}, {BBN Butterfly}.

	["Parallel Programming with Coordination Structures", S. Lucco
	et al, 18th POPL, pp.197-208 (1991)].

Delivered Source Instruction

	<programming, unit> (DSI) One line of source code (LOC)
	developed by a project.

	DSI is the primary input to many tools for estimating software
	cost.  The term "delivered" is generally meant to exclude
	non-delivered support software such as test drivers.  However,
	if these are developed with the same care as delivered
	software, with their own reviews, test plans, documentation,
	etc., then they should be counted.  The "source instructions"
	include all program instructions created by project personnel
	and processed into {machine code} by some combination of
	preprocessors, compilers, and assemblers.  It excludes
	comments and unmodified utility software.  It includes {job
	control language}, format statements, and data declarations.

	(29 May 1996)

Dell Computer Corporation

	<company> One of the biggest US manufacturers of {IBM PC}
	compatibles.

	"From notebooks to networks", their slogan says.

	{Home (http://www.us.dell.com)}.

	(29 May 1996)

Delphi

	1. <company, communications> A US {Internet service provider}.

	[Addresses?]

	(06 Apr 1995)

	2. <language> {Borland}'s {Object Oriented Pascal} (OOPascal)
	{Rapid Application Development} package for {Microsoft
	Windows}.  Delphi combines visual, component-based design with
	an optimising {native code compiler} and scalable database
	access.

	(27 May 1996)

Delphi Technique

	<programming, tool> A group forecasting technique, generally
	used for future events such as technological developments,
	that uses estimates from experts and feedback summaries of
	these estimates for additional estimates by these experts
	until reasonable consensus occurs.  It has been used in
	various software cost-estimating activities, including
	estimation of factors influencing software costs.

	(29 May 1996)

Delta

	1. An expression-based language by J.C. Cleaveland, 1978.

	2. A string-processing language with single-character
	commands.  Tandem.

	3. Language for system specification of simulation execution.
	"System Description and the DELTA Language", E. Holback-Hansen
	et al, DELTA Proj Rep 4, Norweg Comput Ctr, Feb 1977.

delta

	1. A quantitative change, especially a small or incremental
	one (this use is general in physics and engineering).  "I just
	doubled the speed of my program!"  "What was the delta on
	program size?"  "About 30 percent."  (He doubled the speed of
	his program, but increased its size by only 30 percent.)

	2. [Unix] A {diff}, especially a {diff} stored under the set
	of version-control tools called SCCS (Source Code Control
	System) or RCS (Revision Control System).  See {change
	management}.

	3.  A small quantity, but not as small as {epsilon}.  The
	jargon usage of {delta} and {epsilon} stems from the
	traditional use of these letters in mathematics for very small
	numerical quantities, particularly in "epsilon-delta" proofs
	in limit theory (as in the differential calculus).  The term
	{delta} is often used, once {epsilon} has been mentioned, to
	mean a quantity that is slightly bigger than {epsilon} but
	still very small.  "The cost isn't epsilon, but it's delta"
	means that the cost isn't totally negligible, but it is
	nevertheless very small.  Common constructions include "within
	delta of ---", "within epsilon of ---": that is, "close to"
	and "even closer to".

Delta-4

	Definition and Design of an open Dependable Distributed system
	architecture.  An Esprit project investigating the achievement
	of dependability in open distributed systems, including
	real-time systems.

delta conversion

	{delta reduction}

Delta-Prolog

	A {Prolog} extension with {AND-parallelism}, {don't-know
	nondeterminism} and interprocess communication using
	{synchronous event goal}s and {distributed backtracking}.

	["Delta-Prolog: A Distributed Logic Programming Language",
	L.M. Pereira et al, Intl Conf 5th Gen Comp Sys, Nov 1984].

delta reduction

	<theory> In {lambda-calculus} extended with constants, delta
	reduction replaces a function applied to the required number
	of arguments (a {redex}) by a result.  E.g. plus 2 3 --> 5.
	In contrast with {beta reduction} (the only kind of reduction
	in the {pure lambda-calculus}) the result is not formed simply
	by textual substitution of arguments into the body of a
	function.  Instead, a delta redex is matched against the left
	hand side of all delta rules and is replaced by the right hand
	side of the (first) matching rule.  There is notionally one
	delta rule for each possible combination of function and
	arguments.  Where this implies an infinite number of rules,
	the result is usually defined by reference to some external
	system such as mathematical addition or the hardware
	operations of some computer.  For other types, all rules can
	be given explicitly, for example {Boolean} negation:

		not True  = False
		not False = True

	(20 Feb 1997)

DELTASE

	A distributed processing environment concerned with
	fault-tolerant and process-control applications from the
	Esprit Delta-4 project.

demand driven

	A demand driven architecture/language performs computations
	when the result is required by some other computation.
	E.g. {Imperial College}'s {ALICE} running {HOPE}.

	See also {data flow}, {lazy evaluation}, {reduction}.

	(16 Feb 1995)

demand paged

	{demand paging}

demand paging

	A kind of {virtual memory} where a {page} of memory will be
	{paged in} if an attempt is made to access it and it is not
	already present in main memory.  This normally involves a
	{memory management unit} which looks up the {virtual address}
	in a {page map} to see if it is paged in.  If it is not then
	the {operating system} will page it in, update the page map
	and restart the failed access.  This implies that the
	processor must be able to recover from and restart a failed
	memory access or must be suspended while some other mechanism
	is used to perform the paging.

	Paging in a page may first require some other page to be moved
	from main memory to disk ("paged out") to make room.  If this
	page has not been modified since it was paged in, it can
	simply be reused without writing it back to disk.  This is
	determined from the "modified" or "dirty" flag bit in the
	{page map}.  A {replacement algorithm} or policy is used to
	select the page to be paged out, often this is the {least
	recently used} (LRU) {algorithm}.

	(16 Feb 1995)

DeMarco

	Tom DeMarco proposed a form of {structured analysis}.

	(16 Feb 1995)

DeMarco/Yourdon

	{Yourdon/Demarco}

demented

	Yet another term of disgust used to describe a program.  The
	connotation in this case is that the program works as
	designed, but the design is bad.  Said, for example, of a
	program that generates large numbers of meaningless error
	messages, implying that it is on the brink of imminent
	collapse.

	(07 Dec 1994)

Demeter

	A {CASE} tool developed mainly by Karl Lieberherr.

	["Contributions to Teaching Object-Oriented Design and
	Programming" Aug/Sep 1988 issue of JOOP, OOPSLA '89
	Proceedings].

	(07 Dec 1994)

demigod

	<person> A hacker with years of experience, a national
	reputation, and a major role in the development of at least
	one design, tool, or game used by or known to more than half
	of the hacker community.  To qualify as a genuine demigod, the
	person must recognisably identify with the hacker community
	and have helped shape it.  Major demigods include {Ken
	Thompson} and {Dennis Ritchie} (co-inventors of {Unix} and
	{C}) and {Richard Stallman} (inventor of {EMACS}).  In their
	hearts of hearts, most hackers dream of someday becoming
	demigods themselves, and more than one major software project
	has been driven to completion by the author's veiled hopes of
	apotheosis.

	See also {net.god}, {true-hacker}.

	(27 Oct 1994)

De-Militarised Zone

	<networking> (DMZ) (From the military term for an area between
	two opponents where fighting is prevented) DMZ {Ethernets}
	connect networks and computers controlled by different bodies.
	They may be external or internal.  External DMZ Ethernets link
	regional networks with {routers} to internal networks.
	Internal DMZ Ethernets link local nodes with routers to the
	regional networks.

	Compare {red zone}.

	(23 Feb 1995)

demo

	/de'moh/ 1. A demonstration of a product, often of an early
	version or prototype.  A demo is a far more effective way of
	inducing bugs to manifest themselves than any number of {test}
	runs, especially when important people are watching.

	2. {demo version}.

	3. A program written to demonstrate the programmer's coding
	ability and/or the power of the computer it runs on.  Such
	demos are nearly always written in {machine code} and
	traditionally feature scrolling text about the author, his
	friends, his code and anything else he fancies and animated
	graphics.

	(04 Nov 1994)

demo mode

	({Sun}) 1. The state of being {heads down} in order to finish
	code in time for a {demo}, usually due yesterday.

	2. <games> (Or "attract mode") A mode in which video games sit
	by themselves running through a portion of the game.  Some
	serious {app}s have a demo mode they use as a screen saver, or
	may go through a demo mode on startup (for example, the
	{Microsoft Windows} opening screen - which lets you impress
	your neighbors without actually having to put up with
	{Microsloth Windows}).

	(22 Feb 1995)

demon

	1. <operating system> (Often used equivalently to {daemon},
	especially in the {Unix} world, where the latter spelling and
	pronunciation is considered mildly archaic).  A program or
	part of a program which is not invoked explicitly, but that
	lies dormant waiting for some condition(s) to occur.

	At {MIT} they use "demon" for part of a program and "daemon"
	for an {operating system} process.

	Demons (parts of programs) are particularly common in {AI}
	programs.  For example, a knowledge-manipulation program might
	implement {inference rule}s as demons.  Whenever a new piece
	of knowledge was added, various demons would activate (which
	demons depends on the particular piece of data) and would
	create additional pieces of knowledge by applying their
	respective inference rules to the original piece.  These new
	pieces could in turn activate more demons as the inferences
	filtered down through chains of logic.  Meanwhile, the main
	program could continue with whatever its primary task was.

	(The use of this term may derive from "Maxwell's Demons' -
	minute beings which can reverse the normal flow of heat from a
	hot body to a cold body by only allowing fast moving molecules
	to go from the cold body to the hot one and slow molecules
	from hot to cold.  The solution to this apparent thermodynamic
	paradox is that the demons would require an external supply of
	energy to do their work and it is only in the absence of such
	a supply that heat must necessarily flow from hot to cold).

	2. <company> {Demon Internet} Ltd.

	3. A {program generator} for {differential equation} problems.

	[N.W. Bennett, Australian AEC Research Establishment,
	AAEC/E142, Aug 1965].

	(22 Feb 1995)

Demon Internet Ltd.

	A company which provides public {Internet} access in the UK.

	The staff of Demon Systems Ltd., an established software
	house, started Demon Internet on 1st June 1992 and it was the
	first system in the United Kingdom to offer low cost full
	{Internet} access.  It was started with the support of about
	100 founder members who discussed the idea on {Compulink
	Information Exchange}, and were brave enough to pay a year's
	subscription in advance.  They aimed to have 200 members in
	the first year to cover costs, ignoring any time spent.  After
	about two weeks they realised they needed nearer 400.  By
	November 1993 they had over 2000 subscribers and by August
	1994 they had about 11000 with 20% per month growth.  All
	revenues have been reinvested in resources and expansion of
	service.

	The service runs on {Sun} and {Apricot} {Unix} machines
	centred around the Network Operation Centre in Finchley, North
	London.  Connected via {Ethernet}, as well as various
	{router}s, is the news server (news.demon.co.uk) which is a
	{SPARC IPX} (dis.demon.co.uk).  A Sun {SPARC 10},
	post.demon.co.uk handles {electronic mail} and
	nether.demon.co.uk, a {SPARC}, handles routing.
	ftp.demon.co.uk, another {Sun} is the {FTP} server.

	A 256 Kbps line to {Sprintlink} network {hub} in the United
	States makes Demon a totally independent Internet service
	provider.  They peer with {EUNet} and {PIPEX} to ensure good
	connectivity in Great Britain as well as having on order a 384
	Kbps line to the {JANET}/{JIPS} UK academic network.  A direct
	line into the {Department of Computing, Imperial College,
	London (http://sunsite.doc.ic.ac.uk)} from their Central
	London {Point of Presence} (PoP) (styx.demon.co.uk) gives
	access to the biggest {FTP} and {Archie} site in Europe.

	Demon have over 100 {dial-up} lines operating in racks of
	{U.S. Robotics} {V.32bis} {modem}s on all digital exchanges.
	In addition they have a number of dedicated phone lines for
	their network customers, private staff numbers etc.  There are
	{PoP}s in Warrington, Edinburgh and many other places,
	bringing local call access to a large proportion of the UK.
	The central London {PoP} provides {leased line} connections at
	a cheaper rate for those customers in the central 0171 area.
	Further lines and {PoP}s are being added continuously.

	Subscribers get allocated an {Internet Address} and you can
	choose your own {hostname} within the demon.co.uk {domain},
	e.g. hostname yourmc.demon.co.uk.  You can have any number of
	mail address at that host.  You need software on your machine
	which can use {Internet Protocol} - either {Serial Line
	Internet Protocol} or {Point-to-Point Protocol}.  Demon have
	free software for all types of computer.

	Demon hosts:

	 post.demon.co.uk 158.152.1.72             e-mail
	 dis.demon.co.uk 158.152.1.69              FTP
	 (a.k.a. ftp.demon.co.uk)
	 newnews.demon.co.uk 158.152.254.254       news
	 (a.k.a. news.demon.co.uk)
	 nether.demon.co.uk 158.152.1.71           router
	 disme.demon.co.uk 158.152.1.70            accounts
	 dismayl.demon.co.uk 158.152.1.76          IRC etc.
	 ns.demon.co.uk 158.152.1.193              a parallel port!
	 gate.demon.co.uk 158.152.1.65             London
	 styx.demon.co.uk 158.152.1.73             Central London
	 hel.demon.co.uk 158.152.5.65              Warrington
	 clootie.demon.co.uk 158.152.6.65          Edinburgh
	 ragnarok.demon.co.uk 158.152.12.194       Reading
	 thokk.demon.co.uk 158.152.7.194           Sunderland
	 tyr.demon.co.uk 158.152.14.194            Yorkshire

	In October 1994 Demon confirmed a large contract with the
	major telecommunications provider {Energis}.  They will supply
	guaranteed bandwidth to Demon's 10Mb/s {backbone} from several
	cities and towns.  Several {PoP}s will be phased out and
	replaced with others during 1995.

	E-mail: <internet@demon.net>.

	{(ftp://ftp.demon.co.uk/)}

	{(http://www.demon.co.uk/)}.

	{Usenet} newsgroup: {news:demon.announce}.

	Telephone: +44 (181) 349 0063.

	Address: Demon Internet Ltd., 42 Hendon Lane, Finchley, London
	N3 1TT.

	(08 Nov 1994)

DeMorgan's theorem

	<logic> A logical {theorem} which states that the {complement}
	of a {conjunction} is the {disjunction} of the complements or
	vice versa.  In symbols:

		not (x and y) = (not x) or (not y)
		not (x or y)  = (not x) and (not y)

	E.g. if it is not the case that I am tall and thin then I am
	either short or fat (or both).  The theorem can be extended to
	combinations of more than two terms in the obvious way.

	The same laws also apply to sets, replacing logical complement
	with set complement, conjunction ("and") with set
	intersection, and disjunction ("or") with set union.

	A ({C}) programmer might use this to re-write

		if (!foo && !bar) ...
	as
		if (!(foo || bar)) ...

	thus saving one operator application (though an {optimising
	compiler} should do the same, leaving the programmer free to
	use whichever form seemed clearest).

	(14 Dec 1995)

demo version

	1. An early, barely-functional version of a program which
	can be used for demonstration purposes as long as the operator
	uses *exactly* the right commands and skirts its numerous
	bugs, deficiencies, and unimplemented portions.

	2. A special version of a finished program (frequently with
	some features crippled) which is distributed at little or no
	cost to the user for enticement purposes.  See {crippleware}.

	(04 Nov 1994)

Denis Howe

	<person> Denis B. Howe.  Editor of the {Free On-line
	Dictionary of Computing}.

	{Curriculum vitae (http://wombat.doc.ic.ac.uk/denis-cv.html)}

	E-mail: Denis Howe <dbh@doc.ic.ac.uk>.

	Telephone: +44 (171) 606 7080 x8161.

	(13 Dec 1995)

Dennis Ritchie

	Dennis M. Ritchie, co-author of the {Unix} {operating system},
	inventor of the {C} programming language and {demigod}.

	See also {K&R}, {Core War}, {If you want X, you know where to
	find it}.

denotational semantics

	<theory> A technique for describing the meaning of programs in
	terms of mathematical {functions} on programs and program
	components.  Programs are translated into functions about
	which properties can be proved using the standard mathematical
	theory of functions, and especially {domain theory}.

	Compare {axiomatic semantics}, {operational semantics},
	{standard semantics}.

	(21 Aug 1996)

Denotational Semantics Language

	<specification, language> (DSL) The {specification language}
	used by the {SIS} {compiler generator}.

	["SIS - Semantics Implementation System", P.D. Mosses, TR
	DAIMI MD-30, Aarhus U, Denmark].

	(13 Oct 1996)

Department of Defense

	<body> (DoD) The US military body responsible for sponsoring
	many software engineering standards.

	(29 May 1996)

Department of Defense Network

	<networking> (DDN) A military subset of the {Internet}, which
	includes {ARPAnet}.

	(07 Dec 1994)

depeditate

	/dee-ped'*-tayt/ [by (faulty) analogy with "decapitate"]
	Humorously, to cut off the feet of.  When one is using some
	computer-aided typesetting tools, careless placement of text
	blocks within a page or above a rule can result in chopped-off
	letter descenders.  Such letters are said to have been
	depeditated.

dependability

	See {software reliability}.

dependable software

	See {software reliability}.

deprecated

	Said of a program or feature that is considered obsolescent
	and in the process of being phased out, usually in favour of a
	specified replacement.  Deprecated features can,
	unfortunately, linger on for many years.  This term appears
	with distressing frequency in standards documents when the
	committees writing the documents realise that large amounts of
	extant (and presumably happily working) code depend on the
	feature(s) that have passed out of favour.

	See also {dusty deck}.

	(19 Apr 1995)

depth-first search

	<algorithm> A graph search {algorithm} which extends the
	current path as far as possible before {backtracking} to the
	last {choice point} and trying the next alternative path.
	Depth-first search may fail to find a solution if it enters a
	cycle in the graph.  This can be avoided if we never extend a
	path to a node which it already contains.

	Opposite of {breadth first search}.  See also {iterative
	deepening}.

	(19 Apr 1995)

dereference

	<programming> To access the thing to which a pointer points,
	i.e. to follow the pointer.  E.g. in {C}, the declarations

		int i;
		int *p = &i;

	declare i as an integer and p as a pointer to integer.  p is
	initialised to point at i ("&i" is the address of i - the
	inverse of "*").  The expression *p dereferences p to yeild i
	as an {lvalue}, i.e. something which can appear either on the
	left of an {assignment} or anywhere an integer expression is
	valid.  Thus

		*p = 17;

	would set i to 17.  *p++ is not the same as i++ however since
	it is parsed as *(p++), i.e. increment p (which would be an
	invalid thing to do if it was pointing to a single int, as in
	this example) then dereference p's old value.

	The {C} operator "->" also dereferences its left hand argument
	which is assumed to point to a {structure} or {union} of which
	the right hand argument is a {member}.

	(19 Apr 1995)

de-rezz

	<jargon> /dee-rez'/ (Or "derez") "de-resolve" via the film
	"Tron".  1. To disappear or dissolve; the image that goes with
	it is of an object breaking up into raster lines and static
	and then dissolving.  Occasionally used of a person who seems
	to have suddenly "fuzzed out" mentally rather than physically.
	Usage: extremely silly, also rare.  This verb was actually
	invented as *fictional* hacker jargon, and adopted in a spirit
	of irony by real hackers years after the fact.

	2. The Macintosh resource decompiler.  On a Macintosh, many
	program structures (including the code itself) are managed in
	small segments of the program file known as "resources"; "Rez"
	and "DeRez" are a pair of utilities for compiling and
	decompiling resource files.  Thus, decompiling a resource is
	"derezzing".  Usage: very common.

derived type

	<programming> A type constructed from {primitive type}s or
	other derived types using a {type constructor function}.  This
	term is usually applied to {procedural language}s such as {C}
	or {Ada}.  C's derived types are the {array}, function,
	pointer, {struct}ure and {union}.

	(16 Feb 1995)

DES

	{Data Encryption Standard}

descent function

	If a {recursive} function is of the form

		f x = ... f (d x) ...

	then d is known as the descent function.

Descriptive Top-Level Specification

	(DTLS) A language used in {POSIX} and {TRUSIX}.

	(11 Nov 1994)

descriptor

	<operating system> An integer, string or other small data
	value which refers to one of several objects allocated to a
	program by the {operating system}, usually the {kernel}.  A
	common example is a {Unix} {file descriptor} which is a small
	integer that identifies an I/O channel.  Another example is a
	reference to an area of memory (e.g. {shared memory}).

	Compare {capability}.

	(06 Feb 1998)

design

	<process> The approach that engineering (and some other)
	disciplines use to specify how to create or do something.  A
	successful design must satisfies a (perhaps informal)
	functional specification (do what it was designed to do);
	conforms to the limitations of the target medium (it is
	possible to implement); meets implicit or explicit
	requirements on performance and resource usage (it is
	efficient enough).

	A design may also have to satisfy restrictions on the design
	process itself, such as its length or cost, or the tools
	available for doing the design.

	In the {software life-cycle}, design follows {requirements
	analysis} and is followed by implementation.

	["Object-Oriented Analysis and Design with Applications", 2nd
	ed., Grady Booch].

	(08 Dec 1996)

design pattern

	<programming> A description of an {object-oriented design}
	technique which names, abstracts and identifies aspects of a
	design structure that are useful for creating an
	object-oriented design.  The design pattern identifies
	{classes} and {instances}, their roles, collaborations and
	responsibilities.  Each design pattern focuses on a particular
	object-oriented design problem or issue.  It describes when it
	applies, whether it can be applied in the presence of other
	design constraints, and the consequences and trade-offs of its
	use.

	{Home
	(http://st-www.cs.uiuc.edu/users/patterns/patterns.html)}.

	["Design Patterns: Elements of Reusable Object-Oriented
	Software", Erich Gamma, Richard Helm, Ralph Johnson, and John
	Vlissides].

	(21 Jul 1997)

design recovery

	<process> A subtask of {reverse engineering} in which domain
	knowledge, external information, and deduction of fuzzy
	reasoning are added to the observations of the subject system
	to identify meaningful higher level abstractions beyond those
	obtained directly by examining the system itself.

	In other words, design recovery aims to work out what a system
	or component was designed to do rather than just examining its
	subcomponents and their interrelationships.

	(08 Dec 1996)

Design System language

	J. Gaffney, Evans & Sutherland 1976.  Interpretive FORTH-like
	language for 3d graphics databases.  Earliest forerunner of
	both Interpress and PostScript.  Mentioned in PostScript
	Language Reference Manual, Adobe Systems, A-W 1985.

desk check

	<programming> To {grovel} over hardcopy of {source code},
	mentally simulating the {control flow}; a method of catching
	bugs.  No longer common practice in this age of on-screen
	editing, fast compiles, and sophisticated debuggers - though
	some maintain stoutly that it ought to be.

	Compare {dry run}, {eyeball search}, {vdiff}, {vgrep}.

	(13 May 1996)

desktop database

	<file system> See {Macintosh file system}.

	(04 Mar 1996)

desktop manager

	A {user interface} to system services, usually {icon} and
	{menu} based like the {Macintosh} {Finder}, enabling the user
	to run {application program}s and use a {file system}
	without directly using the command language of the {operating
	system}.

	(07 Dec 1994)

desktop publishing

	<text, application> (DTP) Using computers to lay out text and
	graphics for printing in magazines, newsletters, brochures,
	etc.  A good DTP system will provide, among other things,
	facilities to fit text into irregular shapes in a variety of
	fonts and sizes.

	{(http://www.cs.purdue.edu/homes/gwp/dtp/dtp.html)}

	[Other features?  Usenet newsgroup?  Software?]

	(05 Jan 1995)

DESQview

	A system from {Quarterdeck Office Systems} implementing
	{multitasking} under {MS-DOS}.

destructor

	A function provided by a {class} in {C++} to delete an object.

DESY

	Deutsches Electronen Synchrotron Laboratory, Hamburg, Germany.

DETAB

	DEcision TABle.

	A {decision table} {COBOL} preprocessor written by A. Chapman
	in 1964.

	Versions: DETAB 65, DETAB X.

	[Sammet 1969, p. 315].

	(07 Dec 1994)

deterministic

	1. <probability> Describes a system whose time evolution can
	be predicted exactly.

	Contrast {probabilistic}.

	2. <algorithm> Describes an {algorithm} in which the correct
	next step depends only on the current state.  This contrasts
	with an algorithm involving {backtracking} where at each point
	there may be several possible actions and no way to chose
	between them except by trying each one and backtracking if it
	fails.

	(22 Sep 1995)

deterministic automaton

	<theory> A {finite-state automaton} in which the overall
	course of the computation is completely determined by the
	program, the starting state, and the initial inputs.  The
	class of problems solvable by such automata is the class P
	(see {polynomial-time algorithm}).

	(03 May 1996)

DETOL

	<language> {Directly Executable Test Oriented
	Language}.

	(29 Sep 1995)

development

	The process of analysis, design, coding and testing software.

Developmental Test and Evaluation

	<programming> (DT&E) Activity which focuses on the
	technological and engineering aspects of a system or piece of
	equipment.

	(13 May 1996)

Device Control

	<character> One of the four {ASCII} characters, {DC1}, {DC2},
	{DC3}, and {DC4}, once used to remotely control equipment
	(e.g. a {paper tape} reader) via electromagnetic switches.
	The characters were usually paired, DC1/DC3 turning one device
	on/off, and DC2/DC4 another.

	[Other examples of equipment?]

	(20 Aug 1996)

Device Control 1

	{Control-Q}

Device Control 2

	<character> (DC2) The {mnemonic} for {ASCII} character 18, one
	of the four {Device Control} characters.

	(28 Jun 1996)

Device Control 3

	{Control-S}

Device Control 4

	<character> (DC4) The {mnemonic} for {ASCII} character 20, one
	of the four {Device Control} characters.

	(28 Jun 1996)

device driver

	<operating system> {Software} to control a hardware component
	or {peripheral} device of a computer such as a {magnetic
	disk}, {magnetic tape} or printer.

	A device driver is responsible for accessing the hardware
	{register}s of the device and often includes an {interrupt
	handler} to service interrupts generated by the device.

	Device drivers often form part of the lowest level of the
	{operating system} {kernel}, with which they are linked when
	the kernel is built.  Some more recent systems have loadable
	device drivers which can be installed from files after the
	{operating system} is running.

	(27 Oct 1994)

device independent bitmap

	<graphics, file format> (DIB) An {image} format in which the
	sequence and depth of {pixels} in the file is not specifically
	related to their layout in any particular device.  This allows
	any device dependent bitmap (DDB) image to be converted to or
	DIB format without loss of information, and this can then
	later be converted to other DDB formats for, e.g., printing or
	display.  Rather than requiring converters from each DDB
	format to all other formats, only converters to and from DIB
	are needed.

	DIB images are normally transferred in {metafiles}, {bmp}
	files, and the {clipboard}.

	Transferring colour bitmaps from one device to another was not
	possible in versions of {Microsoft Windows} earlier than 3.0.
	{Application programs} can build DIB images without any
	interaction with Windows.  If Windows lacks a drawing
	primitive, the application can simulate it directly into the
	DIB instead of using the existing {graphics device interface}
	(GDI) primitives.  Unfortunately, under Windows versions 3.0
	and 3.1, {GDI} cannot perform output operations directly to a
	DIB.

	Conversion between DIB and DDB is performed by the {device
	driver}.  Where the driver does not have this facility, the
	conversion is performed by GDI but only in monochrome.  DIBs
	are slower to use than device dependent bitmaps due to the
	conversions required.

	(20 Sep 1996)

Devil Book

	<publication> "The Design and Implementation of the {4.3BSD}
	Unix Operating System", by Samuel J. Leffler, Marshall Kirk
	McKusick, Michael J. Karels, and John S. Quarterman
	(Addison-Wesley Publishers, 1989, ISBN 0-201-06196-1).

	The standard reference book on the internals of {BSD} {Unix}.
	So called because the cover has a picture depicting a little
	devil (a visual play on {daemon}) in sneakers, holding a
	pitchfork (referring to one of the characteristic features of
	Unix, the "{fork}(2)" {system call}).

	(03 Dec 1996)

/dev/null

	/dev-nuhl/ [The Unix null device, used as a {data sink}] A
	notional "black hole" in any information space being
	discussed, used, or referred to.  A controversial posting, for
	example, might end "Kudos to rasputin@kremlin.org, flames to
	/dev/null".  See {bit bucket}.

devo

	/dee'voh/ (In-house jargon at {Symbolics}) A person in a
	development group.  See also {doco} and {mango}.

	(04 Nov 1994)

DEX

	A cross between {Modula-2} and {C} by W. van Oortmerssen.

	{Amiga version 1.2
	(ftp://ftp.cso.uiuc.edu/pub/amiga/fish/f7/ff743/TurboDEX.lzh)}.

DFA

	Deterministic Finite-state Automaton.  See {Finite State
	Machine}.

DFC

	A {dataflow} language.

	["Data Flow Language DFC: Design and Implementation",
	S. Toshio et al, Systems and Computers in Japan, 20(6):1- 10
	(Jun 1989)].

DFD

	{Data Flow Diagram}

DFS

	1. <algorithm> {Depth-First Search}.

	2. <file system> {Distributed File System}.

DFT

	{discrete Fourier transform}

DGL

	1. Data Generation Language.  A tool for generating test data
	for hardware or software systems.

	2. Distributed {GL}.

DG/L

	1. Descriptive Geometry Language.  Early CAD/CAE language,
	used light pen.  "Interactive Graphic Consoles - Environment
	and Software", R.L.  Beckermeyer, Proc FJCC 37 (1970).

	2. Data General ca 1973-1974.  Derivative of ALGOL 60,
	developed from DG's ALGOL-5, used as the systems language
	under {AOS} and {RDOS} for the DG Eclipse family of computers.
	Replaced by PL/I in the early 80's.  Data General manual
	093-000229-01.

DHCP

	{Dynamic Host Configuration Protocol}

Dhrystone

	A short {synthetic benchmark} program by Reinhold Weicker
	<weicker.muc@sni.de>, <weicker.muc@sni-usa.com>, intended to
	be representative of system (integer) programming.  It is
	available in {ADA}, {Pascal} and {C}.

	The current version is Dhrystone 2.1.  The author says,
	"Relying on MIPS V1.1 (the result of V1.1) numbers can be
	hazardous to your professional health."

	Due to its small size, the memory system outside the {cache}
	is not tested.  Compilers can too easily optimise for
	Dhrystone.  String operations are somewhat over-represented.

	{Sources (ftp://netlib.att.com:/netlib/benchmark/)} (files
	dhry-ada.Z, dhry-c.Z and dhry-pascal.Z).

	{Results
	(http://performance.netlib.org/performance/html/dhrystone.data.col0.html)}
	and {(ftp://ftp.nosc.mil/pub/aburto/dhry.tbl)}.

	(14 Nov 1994)

DHSD

	{Duplex High Speed Data}

DIALOG

	1. A commercial bibliographic database and retrieval service
	from DIALOG Information Services.

	2. Interactive mathematics using a {graphics tablet} by
	Illinois Inst Tech, 1966.

	["DIALOG: A Conversational Programming System with a Graphical
	Orientation", S.H. Cameron et al, CACM 10:349-357 (1967).
	Sammet 1969, p.255-258].

dialup

	A temporary, as opposed to dedicated, connection between
	machines established over a telephone line using {modem}s.

DIAMAG

	An interactive extension of {ALGOL}.

	[Sammet 1969, p.195].

diameter

	The diameter of a {graph} is the maximum value of the minimum
	distance between any two nodes.

Diamond

	One of five pedagogical languages based on Markov algorithms,
	used in "Nonpareil, a Machine Level Machine Independent
	Language for the Study of Semantics", B. Higman, ULICS Intl
	Report No ICSI 170, U London (1968).  (cf. Brilliant,
	Nonpareil, Pearl[3], Ruby[2]).

DIANA

	Descriptive Intermediate Attributed Notation for Ada.

	A {de facto standard} intermediate language for {Ada}
	programs, developed by Goos and Wulf at CMU in Jan 1981.
	DIANA is an {attributed tree} representation, with an abstract
	interface defined in {Interface Description Language} (Nestor,
	Lamb and Wulf, CMU, 1981; Snodgrass(?), 1989(?)).  DIANA
	resulted from a merger of {AIDA} and {TCOL.Ada}.

	["DIANA - An Intermediate Language for Ada", G.T. Goos et al,
	LNCS 161, Springer 1983].

	(11 Nov 1994)

DIB

	{device independent bitmap}

DIBOL

	Digital Interactive Business Oriented Language.

	DEC, 1970.

	FORTRAN syntax with BCD arithmetic.

	Versions for PDP-8 and RT-11.

	ANSI X3.165-1988.

dickless workstation

	<abuse> Extremely pejorative hackerism for "{diskless
	workstation}".

	(28 Mar 1995)

DICOM

	<medical, standard> (From Digital Imaging and COmmunications
	in Medicine) A {standard} developed by ACR-NEMA (American
	College of Radiology - National Electrical Manufacturer's
	Association) for communications between medical imaging
	devices.  It conforms to the {ISO reference model} for network
	communications and incorporates {object-oriented} design
	concepts.

	(29 Mar 1995)

Dictionary APL

	{Sharp APL}

dictionary flame

	[{Usenet}] An attempt to sidetrack a debate away from issues
	by insisting on meanings for key terms that presuppose a
	desired conclusion or smuggle in an implicit premise.  A
	common tactic of people who prefer argument over definitions
	to disputes about reality.  Compare {spelling flame}.

Dictionary of Computing

	{Free On-line Dictionary of Computing}

DID

	{Direct Inward Dialing}

diddle

	1. To work with or modify in a not particularly serious
	manner.  "I diddled a copy of {ADVENT} so it didn't
	double-space all the time."  "Let's diddle this piece of code
	and see if the problem goes away."

	See {tweak} and {twiddle}.

	2. The action or result of diddling.

	See also {tweak}, {twiddle}, {frob}.

	(31 Jan 1995)

die

	1. <jargon> {crash}.  Unlike {crash}, which is used primarily
	of hardware, this verb is used of both hardware and software.

	See also {go flatline}, {casters-up mode}.

	2. <electronics> An unpackaged {integrated circuit}.

	(28 May 1996)

die horribly

	<jargon> The software equivalent of {crash and burn}, and the
	preferred emphatic form of {die}.  "The converter choked on an
	FF in its input and died horribly".

	(28 May 1996)

diff

	/dif/ 1. A change listing, especially giving differences
	between (and additions to) different versions of a piece of
	source code or documentation (the term is often used in the
	plural "diffs").  "Send me your diffs for the Jargon File!"

	Compare {vdiff}.

	2. Specifically, such a listing produced by the diff {Unix}
	command, especially when used as input to the {patch} utility
	(which actually performs the modifications).  This is a common
	method of distributing patches and source updates.

	3. To compare (whether or not by use of automated tools on
	machine-readable files).

	See also {vdiff}, {mod}.

	(10 Feb 1995)

Difference Engine

	<computer, history> {Charles Babbage}'s design for the first
	automatic mechanical calculator.  The Difference Engine was a
	special purpose device intended for the production of
	mathematical tables.  Babbage started work on the Difference
	Engine in 1823 with funding from the British Government.  Only
	one-seventh of the complete engine, about 2000 parts, was
	built in 1832 by Babbage's engineer, Joseph Clement.  This was
	demonstrated successfully by Babbage and still works
	perfectly.  The engine was never completed and most of the
	12,000 parts manufactured were later melted for scrap.

	It was left to Georg and Edvard Schuetz to construct the first
	working devices to the same design which were successful in
	limited applications.  The Difference Engine No. 2 was finally
	completed in 1991 at the Science Museum, London, UK and is on
	display there.

	The engine used gears to compute cumulative sums in a series
	of {registers}: r[i] := r[i] + r[i+1].  However, the addition
	had the {side effect} of zeroing r[i+1].  Babbage overcame
	this by simultaneously copying r[i+1] to a temporary register
	during the addition and then copying it back to r[i+1] at the
	end of each cycle (each turn of a handle).

	{Difference Engine at the Science Museum
	(http://www.nmsi.ac.uk/on-line/treasure/plan/2ndcomp.htm#babbage)}.

	(29 Sep 1997)

difference equation

	A relation between consecutive elements of a sequence.  The
	first difference is

		D u(n) = u(n+1) - u(n)

	where u(n) is the nth element of sequence u.  The second
	difference is

		D2 u(n) = D (D u(n))
			= (u(n+2) - u(n+1)) - (u(n+1) - u(n))
			= u(n+2) - 2u(n+1) + u(n)

	And so on.  A recurrence relation such as

		u(n+2) + a u(n+1) + b u(n) = 0

	can be converted to a difference equation (in this case, a
	second order linear difference equation):

		D2 u(n) + p D u(n) + q u(n) = 0

	and vice versa.  a, b, p, q are constants.

	(10 Feb 1995)

differential

	<hardware> {differential line}.

differential driver

	<hardware> An electronic device (commonly an {integrated
	circuit}), containing two amplifiers, used to drive a
	{differential line}.

	(14 Mar 1995)

differential line

	<hardware> A kind of electrical connection using two wires,
	one of which carries the normal signal (V) and the other
	carries an inverted version the signal (-V).  A differential
	amplifier at the reciever subtracts the inverted signal from
	the normal signal to yeild a signal proportional to V.  This
	subtraction is intended to cancel out any noise induced in the
	wires, on the assmption that the same level of noise will have
	been induced in both wires.  {Twisted pair} wiring is often
	used to try to ensure that this is the case.

	The two wires might be connected at the receiver to separate
	{analogue to digital converter}s and the subtraction performed
	digitally.

	The {RS-422} {serial line} {standard} specifies differential
	drivers and recievers, whereas the earlier {RS-232} standard
	does not.

	Opposite: {single ended}.

	(08 Mar 1995)

digerati

	<jargon> (Or "digirati".  By analogy with "literati" - people
	knowledgeable about literature) People knowledgeable about
	computers, "computer literate".

	[Newsweek, March 1995?].

	(07 May 1995)

digest

	A periodical collection of messages which have been posted to
	a {newsgroup} or {mailing list}.  A digest is prepared by a
	{moderator} who selects articles from the group or list,
	formats them and adds a contents list.  The digest is then
	either mailed to an alternative {mailing list} or posted to an
	alternative newsgroup.

	Some {news reader}s and {electronic mail} programs provide
	commands to "undigestify" a digest, i.e. to split it up into
	individual articles which may then be read and saved or
	discarded separately.

Digex

	{Digital Express Group, Inc.}

DigiCash

	<company> A company, started in April 1990, which aims to
	develop and license products to support electronic payment
	methods including {chip card}, software only, and hybrid.

	{Ecash} is their trial form of software-only electronic money.

	{Home (http://www.digicash.com/home.html)}

	(10 Apr 1995)

Digicom

	{(ftp://ftp.whnet.com/pub/wolfgang)},
	{(ftp://softmodem.whnet.com/pub/wolfgang)},
	{(ftp://ftp.netcom.com/pub/wolfgang)}.
	{(http://ftp.whnet.com/wolfgang/)}.

	[Description?]

digirati

	{digerati}

digit

	An employee of Digital Equipment Corporation.  See also
	{VAX}, {VMS}, {PDP-10}, {TOPS-10}, {DEChead}, {double
	DECkers}, {field circus}.

Digital

	<company> Common abbreviation for {Digital Equipment
	Corporation}.

	(18 Dec 1995)

Digital Audio Tape

	<storage> (DAT) A format for storing music on magnetic tape,
	developed in the mid-1980s by {Sony} and {Philips}.  As
	digital music was popularized by {compact disc}s, the need for
	a digital recording format for the consumer existed.  The
	problem is that digital music contains over 5 megabytes of
	data per minute before error correction and supplementary
	information.  Before DAT, the only way to record digitally was
	to use a video or a reel-to-reel recorder.

	DAT uses a rotary-head (or "helical scan") format, where the
	read/write head spins diagonally across the tape like a video
	cassette recorder.  Thus the proper name is "R-DAT", where "R"
	for rotary distinguishes it from "S-DAT", a stationary design
	that did not make it out of the laboratories.  Studio
	reel-to-reel decks are able to use stationary heads because
	they can have wider tape and faster tape speeds, but for the
	desired small medium of DAT the rotary-head compromise was
	made despite the potential problems with more moving parts.

	Most DAT recorders appear to be a cross between a typical
	analog cassette deck and a {compact disc} player.  In addition
	to the music, one can record subcode information such as the
	number of the track (so one can jump between songs in a
	certain order) or absolute time (counted from the beginning of
	the tape).  The tape speed is much faster than a regular deck
	(one can rewind 30 minutes of music in 10-25 seconds), though
	not quite as fast as a compact disc player.  DAT decks have
	both analog and digital inputs and outputs.

	DAT tapes have only one recordable side and can be as long 120
	minutes.

	DAT defines the following recording modes with the following
	performance specifications...

	   2 channel 48KHz Sample rate, 16-bit linear encoding
	   120 min max.
	   Frequency Response 2-22KHz (+-0.5dB)
	   SN = 93 dB   DR = 93 dB

	   2 channel 44.1Khz Sample rate, 16-bit linear encoding
	   120 min max
	   Frequency Response 2-22KHz (+-0.5dB)
	   SN = 93 dB   DR = 93 dB

	   2 channel 32KHz Sample Rate, 12-bit non-linear encoding
	   240 min max
	   Frequency Response 2-14.5KHz (+-0.5dB)
	   SN = 92 dB   DR = 92 dB

	   4 channel 32KHz (not supported by any deck)

	DAT is also used for recording computer data.  Most computer
	DAT recorders use DDS format which is the same as audio DAT
	but they usually have completely different connectors and it
	is not always possible to read tapes from one system on the
	other.  Computer tapes can be used in audio machines but are
	usually more expensive.  You can record for two minutes on
	each metre of tape.

	(09 Feb 1995)

digital carrier

	<hardware, communications> A medium which can carry {digital}
	signals; broadly equivalent to the {physical layer} of the
	{OSI} seven layer model of networks.  Carriers can be
	described as {baseband} or {broadband}.  A baseband carrier
	can include direct current (DC), whereas broadband carriers
	are modulated by various methods into frequency bands which do
	not include DC.

	Sometimes a {modem} (modulator/demodulator) or {codec}
	(coder/decoder) combines several channels on one transmission
	path.  The combining of channels is called {multiplexing}, and
	their separation is called demultiplexing, independent of
	whether a modem or codec bank is used.  Modems can be
	associated with {frequency division multiplexing} (FDM) and
	codecs with {time division multiplexing} (TDM) though this
	grouping of concepts is somewhat arbitrary.

	If the medium of a carrier is copper telephone wire, the
	circuit may be called {T1}, {T3}, etc. as these designations
	originally described such.

	T1 carriers used a restored polar line coding scheme which
	allowed a baseband signal to be transported as broadband and
	restored to baseband at the receiver.  T1 is not used in this
	sense today, and indeed it is often confused with the {DS1}
	signal carried.

	(31 Mar 1996)

Digital Data Service

	<communications> (DDS) The class of service offered by
	telecommunications companies for transmitting digital data as
	opposed to voice.

	(28 Feb 1995)

Digital Equipment Computer Users Society

	(DECUS) A world wide organisation of information technology
	professionals interested in the products, services, and
	technologies of {Digital Equipment Corporation} and related
	vendors.  Membership in the US chapter is free and provides
	participants with the means to enhance their professional
	development, forums for technical training, mechanisms for
	obtaining up-to-date information, advocacy programs, and
	opportunities for informal disclosure and interaction with
	professional colleagues of like interest.

	Address: 334 South Street, SHR3-1/T25, Shrewsbury, MA
	01545-4195, USA.

	Telephone: +1 (800) DECUS55.

	(08 Feb 1995)

Digital Equipment Corporation

	<company> (DEC) A computer manufacturer and software vendor.
	Before the {killer micro} revolution of the late 1980s,
	hackerdom was closely symbiotic with DEC's pioneering
	{time-sharing} machines.  The first of the group of hacker
	cultures nucleated around the {PDP-1} (see {TMRC}).
	Subsequently, the {PDP-6}, {PDP-10}, {PDP-20}, {PDP-11} and
	{VAX} were all foci of large and important hackerdoms, and DEC
	machines long dominated the {ARPANET} and {Internet} machine
	population.  DEC was the technological leader of the
	minicomputer era (roughly 1967 to 1987), but its failure to
	embrace {microcomputer}s and {Unix} early cost it heavily in
	profits and prestige after {silicon} got cheap.  However, the
	{microprocessor} design tradition owes a heavy debt to the
	{PDP-11} {instruction set}, and every one of the major
	general-purpose microcomputer {operating system}s so far
	(CP/M, {MS-DOS}, {Unix}, {OS/2}) were either genetically
	descended from a DEC OS, or incubated on DEC hardware or both.
	Accordingly, DEC is still regarded with a certain wry
	affection even among many hackers too young to have grown up
	on DEC machines.  The contrast with {IBM} is instructive.

	Quarterly sales $3923M, profits -$1746M (Aug 1994).

	{(http://www.dec.com/info.html)}

	(07 Dec 1994)

Digital Equipment Corporation Network

	(DECNET) Ethernet software used on DEC machines, e.g. Vax.

Digital European Cordless Telecommunications

	<communications, standard> (DECT) A {standard} governing
	pan-European {digital mobile telephony}.  DECT is based on
	advanced {TDMA}, and covers cordless {PBX}s, {telepoint} and
	residential cordless telephony.

	(29 Apr 1997)

Digital Express Group, Inc.

	(Digex) The largest {Internet provider} in the Washington
	metropolitan area with {POP}s in Maryland, Virginia, New
	Jersey, New York and California.

	{(http://www.digex.net)}

	(25 Oct 1994)

Digital Lempel Ziv 1

	<algorithm> (DLZ1) A {Lempel-Ziv compression} {algorithm}
	which maps variable length input strings to variable length
	output symbols.  During compression, the algorithm builds a
	dictionary of strings which is accessed by means of a {hash
	table}.  Compression occurs when input data matches a string
	in the table and is replaced with the output symbol.

	DLZ1 is used on {Digital Linear Tape}.

	(05 Apr 1997)

Digital Library Initiative

	A project to research digital libraries which aims to provide
	real collections to real users (high school students,
	University researchers and students, users in public
	libraries).  The project is sponsored jointly by three US
	federal funding agencies, led by the National Science
	Foundation.

	The {University of Michigan}, one of the six sites selected in
	1994 to collaborate, will provide collections on earth and
	space sciences.  The project, known there as the University of
	Michigan Digital Library Project (UMDL), is a large,
	multi-year project headed by Daniel Atkins, Dean of the School
	of Information and Library Studies.

	{UMDL (http://http2.sils.umich.edu/UMDL/HomePage.html)}

	(23 Feb 1995)

Digital Linear Tape

	<storage> (DLT) A kind of {magnetic tape} drive
	originally developed by {DEC} and now marketed by {Quantum}.

	DLT drives implement the {Digital Lempel Ziv 1} (DLZ1)
	{compression} {algorithm} in a combination of {hardware} and
	{firmware}.  They use a popular chip by {Stac} (now {hi/fn})
	to do the string searching.  Counting, sorting and {Huffman
	encoding} are done in firmware (with hardware support for the
	Huffman algorithm?).

	In April 1997 DLT drives can transfer 5 {megabytes} per second
	and can store 35 {gigabytes} on a single cartridge.
	Compression might roughly double these figures.

	(05 Apr 1997)

Digital Multimeter

	<electronics> (DMM) A peice of test equipment used for
	measuring voltage, current, resistance, and possibly other
	electircal quantities and displaying the value in number form.

	(12 Feb 1997)

Digital Research

	<company> The company which developed {CP/M}, the {operating
	system} used on many of the first generation 8 bit
	{microprocessor}-based {personal computer}s.

	Address: Santa Cruz, CA, USA.

	[Did they do DR-DOS?]

	(01 Feb 1995)

digital service unit

	<communications> (DSU or "data service unit") A device used in
	digital transmission for connecting a CSU (Channel Service
	Unit) to {Data Terminal Equipment} (a terminal or computer),
	in the same way that a {modem} is used for connection to an
	analogue medium.

	A DSU provides a standard interface to a user's terminal which
	is compatible with {modem}s and handles such functions as
	signal translation, regeneration, reformatting, and timing.
	The transmitting portion of the DSU processeses the customers'
	signal into bipolar pulses suitable for transmission over the
	digital facility.  The receiving portion of the DSU is used
	both to extract timing information and to regenerate mark and
	space information from the received bipolar signal.

	(30 Jan 1995)

Digital Signal Processing

	(DSP) Computer manipulation of analog signals (commonly sound
	or {image}) which have been converted to digital form
	(sampled).

	(07 Dec 1994)

digital signature

	Extra data appended to a message which identifies and
	authenticates the sender and message data using {public-key
	encryption}.

	The sender uses a {one-way hash function} to generate a
	hash-code of about 32 bits from the message data.  He then
	encrypts the hash-code with his private key.  The receiver
	recomputes the hash-code from the data and decrypts the
	received hash with the sender's public key.  If the two
	hash-codes are equal, the receiver can be sure that data has
	not been corrupted and that it came from the given sender.

	(07 Feb 1995)

Digital Signature Standard

	<cryptography, standard> The {NIST}'s {standard} for {digital
	signatures} (authenticating both a message and the signer)
	that was first announced in 1991.  It is based on an
	{algorithm} using {discrete logarithms}, which is a variant of
	the {Elgamal algorithm} with Schnorr's improvements.  DSS's
	security is currently considered very strong - comparable to
	{RSA}.  It is estimated that DSS's 1024-bit keys would take
	1.4E16 {MIPS}-years to crack.

	(16 Nov 1995)

Digital Simulation Language

	<language> (DSL) Extensions to {FORTRAN} to simulate {analog
	computer} functions.  Version DSL/90 ran on the {IBM 7090}.

	["DSL/90 - A Digital Simulation Program for Continuous System
	Modelling", Proc SJCC 28, AFIPS, Spring 1966].

	[Sammet 1969, p 632].

	(13 Oct 1996)

Digital Simultaneous Voice and Data

	<communications> (DSVD) A technique supported by some {modems}
	for multiplexing compressed speech with digital data for
	transmission over a normal telephone line.

	DSVD isn't standardised yet, so generally you have to have the
	same make of modem at both ends for it to work.

	[How does it work?  Which modems?  References?]

	(05 Jun 1997)

DIGITAL Standard MUMPS

	(DSM) {DEC}'s version of {MUMPS}.

	(10 Jan 1995)

Digital Subscriber Line

	<communications, protocol> (DSL, or "Digital Subscriber Loop",
	HDSL, High-Speed DSL) A {digital} {telecommunications}
	{protocol} for use over existing {copper} telephone lines, as
	opposed to {optical fibre}.

	See also {ADSL}.

	["Data Cooks, But Will Vendors Get Burned?", "Supercomm
	Spotlight On ADSL" & "Lucent Sells Paradine", Wilson & Carol,
	Inter@ctive Week Vol.  3 #13, p1 & 6, June 24 1996].

	(13 Oct 1996)

Digital Subscriber Loop

	{Digital Subscriber Line}

Digital Switched Network

	<communications> (DSN) The completely digital version of the
	{PSTN}.

	(18 Jul 1997)

Digital Versatile Disc

	{Digital Video Disc}

Digital Video Disc

	<storage> (DVD) An optical storage medium with improved
	capacity and bandwidth over the {Compact Disc}.  DVD, like CD,
	is initally marketed for entertainment.  It will be available
	for computer users in late 1996.

	As an entertainment product DVD will be used for full length
	movies with up to 133 minutes of high quality video ({MPEG-2}
	format) and audio.

	The first DVD drives for computers will be read-only drives
	("DVD-ROM").  These will provide over 7 times the storage
	capacity of CD-ROM (4.7GBytes).  DVD-ROM drives will read
	existing CD-ROMs and music CDs and will be compatible with
	installed sound and video boards.  Additionally, the DVD-ROM
	drive will read DVD movie titles using an advanced (MPEG-2)
	video board, required to decode the high resolution video
	format.

	DVD-ROM drives will ultimately be available from many
	manufacturers.  The first drives, using a single-layer disc of
	4.7GB, will be available during the second half of 1996 from
	several manufacturers including {Toshiba}, {Philips}, {Sony}
	and {Hitachi}.  In 1997, dual-layer discs are expected to
	increase the disc capacity to 8.5GB.  Double-sided, dual-layer
	discs will eventually increase the capacity to 17GB.

	Write-once DVD-R ("recordable") drives will record a 3.9GB
	DVD-R disc that can be read on a DVD-ROM drive.  The first
	DVD-R drive is expected by mid 1997.

	By the end of 1997, the rewritable DVD-RAM (by false analogy
	with {random access memory}) drive will become available.
	DVD-RAM drives will read and write to a 2.6GB DVD-RAM disc,
	read and write-once to a 3.9GB DVD-R disc, and read a
	4.7GB/8.5GB DVD-ROM disc.  Also, it is expected that a DVD-RAM
	disc will be readable on both the DVD-R and DVD-ROM drives.

	{Background (http://www.tacmar.com/dvd_background.htm)}.
	{RCA home (http://www.imagematrix.com/DVD/home.html)}.

	(17 Nov 1996)

Dijkstra's guarded command language

	<language> A language invented by {Edsger Dijkstra} ca. 1974.
	It introduced the concept of {guards} and {committed choice
	nondeterminism} ({don't care nondeterminism}).  Described and
	used in ["A Discipline of Programming", E. Dijkstra, P-H
	1976].

	(07 Dec 1994)

dike

	To remove or disable a portion of something, as a wire from a
	computer or a subroutine from a program.  A standard slogan is
	"When in doubt, dike it out".  (The implication is that it is
	usually more effective to attack software problems by reducing
	complexity than by increasing it.)  The word "dikes" is widely
	used among mechanics and engineers to mean "diagonal cutters",
	especially the heavy-duty metal-cutting version, but may also
	refer to a kind of wire-cutters used by electronics
	technicians.  To "dike something out" means to use such
	cutters to remove something.  Indeed, the TMRC Dictionary
	defined dike as "to attack with dikes".  Among hackers this
	term has been metaphorically extended to informational objects
	such as sections of code.

DIL

	{Dual In-Line Package}

Dilbert

	<recreation> A cartoon computer worker drawn by Scott Adams
	<scottadams@aol.com>, who works in Silicon Valley.  The
	cartoon became so popular he left his day job.  The cartoon
	satirises typical corporate life, especially that which
	revolves around computers.

	{Home (http://www.unitedmedia.com/comics/dilbert/)}.
	{Latest cartoons
	(http://www.unitedmedia.com/comics/dilbert/archive/)}.

	(11 Oct 1996)

Dilberted

	<jargon> To be exploited and oppressed by your boss.  Derived
	from the experiences of {Dilbert}, the geek-in-hell comic
	strip character.  "I've been dilberted again.  The old man
	revised the specs for the fourth time this week."

	(29 Mar 1997)

DIMATE

	<language> Depot Installed Maintenance Automatic Test
	Equipment.  A language for programming {automatic test
	equipment}.  It Runs on the {RCA 301}.

	["A Simple User-Oriented Source Language for Programming
	Automatic Test Equipment", B.H. Scheff, CACM 9(4) (Apr 1966)].

	[Sammet 1969, p. 647].

	(07 Jan 1996)

DIMM

	{Dual In-Line Memory Module}

DIN

	Deutsche Institut fuer Normung.  The German standardisation
	body, a member of {ISO}.

DIN-8

	<hardware> An 8-pin round connector, sometimes used for
	{RS-232} serial communication when space is restricted, such
	as on {laptop computers}.

	(08 Dec 1996)

ding

	1. Synonym for {feep}.  Usage: rare among hackers, but
	commoner in the {Real World}.

	2. "dinged": What happens when someone in authority gives you
	a minor bitching about something, especially something
	trivial.  "I was dinged for having a messy desk."

dink

	/dink/ Said of a machine that has the {bitty box} nature; a
	machine too small to be worth bothering with - sometimes the
	system you're currently forced to work on.  First heard from
	an {MIT} hacker working on a {CP/M} system with 64K, in
	reference to any {6502} system, then from fans of 32 bit
	architectures about 16-bit machines.  "GNUMACS will never work
	on that dink machine."  Probably derived from mainstream
	"dinky", which isn't sufficiently pejorative.

	See {macdink}.

	(31 Oct 1994)

DinnerBell

	An {object-oriented} {dataflow} language with {single
	assignment}.

	["Object-Oriented Load Distribution in DinnerBell", S. Kono
	<kono@csl.sony.co.jp> et al, in TOOLS Pacific 90].

	(31 Oct 1994)

DINO

	{Data parallel} superset of {C}.

	{(ftp://ftp.cs.colorado.edu/pub/cs/distribs/dino/)}

	["The DINO Parallel Programming Language", M. Rosing et al, J
	Parallel Dist Comp 13(9):30-42 (Sep 1991)].

	["DINO Parallel Programming Language", M. Rosing et al,
	CU-CS-457-90, U Colorado, April 1990].

dinosaur

	1. Any hardware requiring raised flooring and special power.
	Used especially of old {minicomputer}s and {mainframe}s, in
	contrast with newer {microprocessor}-based machines.

	In a famous quote from the 1988 Unix EXPO, {Bill Joy} compared
	the liquid-cooled mainframe in the massive {IBM} display with
	a grazing dinosaur "with a truck outside pumping its bodily
	fluids through it".  IBM was not amused.

	Compare {big iron}; see also {dinosaurs mating}.

	2. [IBM] A very conservative user; a {zipperhead}.

dinosaur pen

	A traditional {mainframe} computer room complete with raised
	flooring, special power, its own ultra-heavy-duty air
	conditioning, and a side order of Halon fire extinguishers.

	See {boa}.

	(17 Nov 1995)

dinosaurs mating

	<humour> The activity said to occur when yet another {big
	iron} merger or buy-out occurs; reflects a perception by
	hackers that these signal another stage in the long, slow
	dying of the {mainframe} industry.  Also described as
	"elephants mating": lots of noise and action at a high level,
	with an eventual outcome in the somewhat distant future.

	In its glory days of the 1960s, it was "{IBM} and the Seven
	Dwarves": {Burroughs}, {Control Data}, {General Electric},
	{Honeywell}, {NCR}, {RCA}, and {Univac}.  Early on, RCA sold
	out to Univac and GE also sold out, and it was "IBM and the
	Bunch" (Burroughs, Univac, NCR, Control Data, and Honeywell)
	for a while.  Honeywell was bought out by Bull.

	Univac in turn merged with {Sperry} to form Sperry/Univac,
	which was later merged (although the employees of Sperry
	called it a hostile takeover) with Burroughs to form {Unisys}
	(in 1984 - this was when the phrase "dinosaurs mating" was
	coined); and in 1991 {AT&T} absorbed NCR, only to spit it out
	again in 1996.  Unisys later bought {Convergent Technologies}
	(among others).

	More such earth-shaking unions of doomed giants seem
	inevitable.

	[More dates?]

	(18 Feb 1996)

diode

	<hardware, electronics> A {semiconductor} device which
	conducts electric current run in one direction only.  This is
	the simplest kind of semiconductor device, it has two
	terminals and a single PN junction.  One diode can be used as
	a {half-wave rectifier} or four as a {full-wave rectifier}.

	(14 Mar 1995)

DIP

	1. {Dual In-line Package}.

	2. {Document Image Processing}.

Direct-Access Storage Device

	<hardware> (DASD) {IBM} {mainframe} terminology for a {disk
	drive}, in contrast with a tape drive which is a sequential
	access device.

	(01 Mar 1995)

Direct Client to Client Protocol

	<networking> (DCC) An {IRC} {protocol} created to allow users
	to chat privately and to send and receive files directly
	instead of having to go thorugh the IRC servers.  DCC protects
	users from being monitored by IRC Server operators that have
	enabled conversation logging.  It also allows much more
	efficient use of available {bandwidth} as the data does not
	need to be {broadcast} all over the world just to reach a
	specific user.

	The available DCC commands include DCC CHAT (direct user to
	user chat), DCC SEND (direct user to user file send) and DCC
	GET (file acknowledgement from a receiver).

	(12 Apr 1995)

Direct Connection

	A re-seller of {Internet} connections to the {PIPEX}
	{backbone}.

directed acyclic graph

	(DAG) A {directed graph} containing no cycles.  This means
	that if there is a route from node A to node B then there is
	no way back.

	(07 Dec 1994)

directed graph

	(digraph) A graph with one-way edges.

	See also {directed acyclic graph}.

	(11 Nov 1994)

directed set

	A set X is directed under some relation, <= (less than or
	equal), if it is non-empty and if for any two elements x and y
	there exists an element z such that x <= z and y <= z.
	I.e. all pairs have an {upper bound}.

	(11 Nov 1994)

Direct Inward Dialing

	<communications> (DID) A service offered by telephone
	companies which allows the last 3 or 4 digits of a phone
	number to be transmitted to the destination {exchange}.

	For example, a company could have 10 incoming lines, all with
	the number 234 000.  If a caller dials 234 697, the call is
	sent to 234 000 (the company's exchange), and the digits 697
	are transmitted.  The company's exchange then routes the call
	to extension 697.  This gives the impression of 1000 direct
	dial lines, whereas in fact there are only 10.  Obviously,
	only 10 at a time can be used.

	This system is also used by {fax servers}.  Instead of an
	exchange at the end of the 234 000 line, a computer running
	fax server software and {fax modem} cards uses the last three
	digits to identify the recipient of the fax.  This allows 1000
	people to have their own individual fax numbers, even though
	there is only one 'fax machine'.

	{Dictionary of PC Hardware and Data Communications Terms
	(http://www.ora.com/reference/dictionary/terms/D/Direct_Inward_Dialing.htm)}

	(29 Jun 1997)

directional coupler

	<communications> (tap) A {passive} device used in {cable}
	systems to divide and combine radio frequency signals.  A
	directional coupler has at least three ports: line in, line
	out, and the tap.  The signal passes between line in and line
	out ports with loss referred to as the {insertion loss}.  A
	small portion of the signal power applied to the line in port
	passes to the tap port.  A signal applied to the tap port is
	passed to the line in port less the tap attenuation value.
	The tap signals are isolated from the line out port to prevent
	reflections.  A signal applied to the line out port passes to
	the line in port and is isolated from the tap port.  Some
	devices provide more than one tap output line (multi-taps).

	(23 Dec 1995)

Directly Executable Test Oriented Language

	<language> (DETOL) A simple language to control a specific
	type of test equipment.

	["Improved DETOL Programming Manual for the Series 5500
	Automatic Test System", Pub. 5500-31-0-1, AAI Corporation  Sep
	1973].

	(29 Sep 1995)

direct mapped cache

	<architecture> A {cache} where the cache location for a given
	address is determined from the middle address bits.  If the
	{cache line} size is 2^n then the bottom n address bits
	correspond to an offset within a cache entry.  If the cache
	can hold 2^m entries then the next m address bits give the
	cache location.  The remaining top address bits are stored as
	a "tag" along with the entry.

	In this scheme, there is no choice of which block to flush on
	a cache miss since there is only one place for any block to
	go.  This simple scheme has the disadvantage that if the
	program alternately accesses different addresses which map to
	the same cache location then it will suffer a cache miss on
	every access to these locations.  This kind of {cache
	conflict} is quite likely on a multi-processor.  See also
	{fully associative cache}, {set associative cache}.

Direct Memory Access

	<architecture> (DMA) A facility of some architectures which
	allows a peripheral to read and write memory without
	intervention by the CPU.  DMA is a limited form of {bus
	master}ing.

	(23 Aug 1996)

directory

	<file system> A node in a hierarchical {file system} which
	contains zero or more other nodes - generally, {files} or
	other directories.

	Compare {folder}.

	(10 Apr 1997)

Directory Access Protocol

	X.500 protocol used for communication between a Directory User
	Agent and a Directory System Agent.

Directory System Agent

	(DSA) The software that provides the {X.500} Directory Service
	for a portion of the directory information base.  Generally,
	each DSA is responsible for the directory information for a
	single organisation or organisational unit.

	(07 Dec 1994)

Directory User Agent

	(DUA) The software that accesses the {X.500} Directory Service
	on behalf of the directory user.  The directory user may be a
	person or another software element.

	(07 Dec 1994)

DirectX

	<programming, hardware> A new {Microsoft} programming
	interface {standard} for {Windows 95}.  DirectX gives (games)
	programmers a standard way to gain direct access to enhanced
	hardware features under Windows 95 instead of going via the
	Windows 95 {GDI}.  Some DirectX code runs faster than the
	equivalent under {MS DOS}.

	DirectX promises performance improvements for graphics, sound,
	video, 3D, and network capabilites of games, but only where
	both hardware and software support DirectX.

	DirectX 2 introduced the Direct3D interface.  The current
	version (1996) is DirectX 3.

	{(http://www.nfinity.com/~swhalen/directx.html)}.

	(27 Dec 1996)

Dirt

	Design In Real Time.

	A user interface builder for the {X Window System} by
	R. Hesketh.

	(07 Dec 1994)

dirtball

	({XEROX PARC}) A small, perhaps struggling outsider; not in
	the major or even the minor leagues.  For example, "Xerox is
	not a dirtball company".

	Outsiders often observe in the PARC culture an institutional
	arrogance which usage of this term exemplifies.  The
	brilliance and scope of PARC's contributions to computer
	science have been such that this superior attitude is not much
	resented.  - ESR

	(07 Dec 1994)

dirty power

	Electrical mains voltage that is unfriendly to the delicate
	innards of computers.  Spikes, {drop-outs}, average voltage
	significantly higher or lower than nominal, or just plain
	noise can all cause problems of varying subtlety and severity
	(these are collectively known as {power hit}s).

DISA

	{Defense Information Systems Agency}

disc

	<storage, spelling> British spelling of "{disk}", normally
	only used for "{compact disc}".

	(30 Jul 1995)

disc drive

	{disc}

disclaimer

	<networking> Statement ritually appended to many {Usenet}
	postings (sometimes automatically, by the posting software)
	reiterating the fact (which should be obvious, but is easily
	forgotten) that the article reflects its author's opinions and
	not necessarily those of the organisation running the computer
	through which the article entered the network.

	(30 Jul 1995)

Discordianism

	<recreation> /dis-kor'di-*n-ism/ The veneration of {Eris},
	also known as Discordia; widely popular among hackers.
	Discordianism was popularised by Robert Shea and Robert Anton
	Wilson's novel "Illuminatus!" as a sort of self-subverting
	Dada-Zen for Westerners - it should on no account be taken
	seriously but is far more serious than most jokes.  Consider,
	for example, the Fifth Commandment of the Pentabarf, from
	"Principia Discordia": "A Discordian is Prohibited of
	Believing What he Reads."  Discordianism is usually connected
	with an elaborate conspiracy theory/joke involving
	millennia-long warfare between the anarcho-surrealist
	partisans of Eris and a malevolent, authoritarian secret
	society called the Illuminati.

	See {Religion}, {Church of the SubGenius}, and {ha ha only
	serious}.

	(12 Apr 1997)

discrete cosine transform

	<mathematics> (DCT) A technique for expressing a waveform as a
	weighted sum of cosines.

	The DCT is central to many kinds of {signal processing},
	especially video {compression}.

	Given data A(i), where i is an integer in the range 0 to N-1,
	the forward DCT (which would be used e.g. by an encoder) is:

	 B(k) =    sum    A(i) cos((pi k/N) (2 i + 1)/2)
	        i=0 to N-1

	B(k) is defined for all values of the frequency-space variable
	k, but we only care about integer k in the range 0 to N-1.
	The inverse DCT (which would be used e.g. by a decoder) is:

	 AA(i)=    sum    B(k) (2-delta(k-0)) cos((pi k/N)(2 i + 1)/2)
	        k=0 to N-1

	where delta(k) is the {Kronecker delta}.

	The main difference between this and a {discrete Fourier
	transform} (DFT) is that the DFT traditionally assumes that
	the data A(i) is periodically continued with a period of N,
	whereas the DCT assumes that the data is continued with its
	mirror image, then periodically continued with a period of 2N.

	Mathematically, this transform pair is exact, i.e. AA(i) ==
	A(i), resulting in {lossless coding}; only when some of the
	coefficients are approximated does compression occur.

	There exist fast DCT {algorithms} in analogy to the {Fast
	Fourier Transform}.

	(10 Mar 1997)

discrete Fourier transform

	<mathematics> (DFT) A {Fourier transform}, specialized to the
	case where the {abscissas} are integers.

	The DFT is central to many kinds of {signal processing},
	including the analysis and {compression} of video and {sound}
	information.

	A common implementation of the DFT is the {Fast Fourier
	Transform} (FFT).

	See also {discrete cosine transform}.

	(10 Mar 1997)

discrete preorder

	<mathematics> A {preorder} is said to be discrete if any two
	of its elements are {incomparable}.

	(21 Sep 1995)

discriminated union

	<theory> The discriminated union of two sets A and B is

		A + B = {(inA, a) | a in A} U {(inB, b)| b in B}

	where inA and inB are arbitrary tags which specify which
	summand an element originates from.

	A {type} (especially an {algebraic data type}) might be
	described as a discriminated union if it is a {sum type} whose
	objects consist of a tag to say which part of the union they
	belong to and a value of the corresponding type.

	(25 Apr 1995)

Disiple

	A {DSP} language.

	["A Compiler that Easily Retargets High Level Language
	Programs for Different Signal Processing Architectures", J.E.
	Peters & S.M. Dunn, Proc ICASSP 89, pp.1103-1106, (May 1989)].

disjoint union

	In {domain theory}, a union (or sum) which results in a domain
	without a least element.

Disjunctive Normal Form

	(DNF) A logical formula consisting of a {disjunction} of
	{conjunction}s where no conjunction contains a disjunction.
	E.g. the DNF of (A or B) and C is (A and C) or (B and C).

	(07 Dec 1994)

disk

	<storage> 1. {magnetic disk}.

	2. {compact disc}.

	3. {optical disk}.

	Note: the american spelling, "disk", is normal for most
	computer disks whereas "compact disc", having come to
	computers via the audio world, is correctly spelled with a
	"c", indeed, this spelling is part of the CD standard.

	(30 Jul 1995)

disk drive

	<hardware, storage> (Or "hard disk drive", "hard drive",
	"floppy disk drive", "floppy drive") A {peripheral} device
	that reads and writes {hard disks} or {floppy disks}.  The
	drive contains a motor to rotate the disk at a constant rate
	and one or more read/write heads which are positioned over the
	desired {track} by a servo mechanism.  It also contains the
	electronics to amplify the signals from the heads to normal
	digital logic levels and vice versa.

	In order for a disk drive to start to read or write a given
	location a read/write head must be positioned radially over
	the right track and rotationally over the start of the right
	sector.

	Radial motion is known as "{seek}ing" and it is this which
	causes most of the intermittent noise heard during disk
	activity.  There is usually one head for each disk surface and
	all heads move together.  The set of locations which are
	accessible with the heads in a given radial position are known
	as a "{cylinder}".  The "{seek time}" is the time taken to
	seek to a different cylinder.

	The disk is constantly rotating (except for some {floppy disk}
	drives where the motor is switched off between accesses to
	reduce wear and power consumption) so positioning the heads
	over the right sector is simply a matter of waiting until it
	arrives under the head.  With a single set of heads this
	"{rotational latency}" will be on average half a revolution
	but some big drives have multiple sets of heads spaced at
	equal angles around the disk.

	If seeking and rotation are independent, access time is seek
	time + rotational latency.  When accessing multiple tracks
	sequentially, data is sometimes arranged so that by the time
	the seek from one track to the next has finished, the disk has
	rotated just enough to begin accessing the next track.

	See also {sector interleave}.

	The disks may be {removable disks}; floppy disks always are,
	removable hard disks were common on {mainframes} and
	{minicomputers} but less so on {microcomputers} until the mid
	1990s(?) with products like the {Zip Drive}.

	A {CD-ROM} drive is not usually referred to as a disk drive.

	Two common interfaces for disk drives (and other devices) are
	{SCSI} and {IDE}.  {ST506} used to be common in microcomputers
	(in the 1980s?).

	(15 Apr 1997)

disk duplexing

	<hardware, storage> A variation on {disk mirroring} where, as
	well as redundant {disk drives}, a second {disk controller} or
	{host adapter} is also present.

	(22 Feb 1996)

diskette

	{floppy disk}

disk farm

	<jargon> (Or "{laundromat}") A large room or rooms filled with
	{disk drives} (especially {washing machines}).

	(27 Mar 1995)

diskless workstation

	<computer, networking> A {personal computer} or {workstation}
	which has neither a {hard disk} nor {floppy disk} drive and
	which performs all file access via a {local area network}
	connection to a {file server}.  The lowest level {bootstrap}
	code is stored in {non-volatile storage}.  This uses a simple
	{protocol} such as {BOOTP} to request and {download} more
	sophisticated boot code and eventually, the {operating
	system}.

	The archtypal product was the {3Station} developed by Bob
	Metcalfe at {3Com}.  Another example was the {Sun} 3/50.

	Diskless workstations are ideal when many users are running
	the same application.  They are small, quiet, more reliable
	than products with disks, and help prevent both the theft of
	data and the introduction of viruses since the software and
	data available on them is controlled by the network
	administrator or system administrator.  They do however rely
	on a server which becomes a disadvantage if it is heavily
	loaded or {down}.

	See also {breath-of-life packet}.

	(28 Mar 1995)

disk mirroring

	<hardware, storage> Use of one or more {mirrors} of a {hard
	disk}.

	(17 Feb 1996)

Disk Operating System

	<operating system> (DOS) The name of a number of {operating
	system}s which include facilities for storing files on disk.
	Such a system must handle physical disk I/O, the mapping of
	file names to disk addresses and protection of files from
	unauthorised access (in a {multi-user} system).  Ideally, it
	will present a uniform interface to different kinds of storage
	device such as {floppy disk}s, {hard disk}s and {magnetic
	tape} drives.  It may also provide some kind of locking to
	prevent unintentional simultaneous access by two processes to
	the same file (or record).

disk striping

	{data striping}

Dislang

	<language>

	["Dislang: A Distributed Programming Language/System", C. Li
	et al, Proc 2nd Intl Conf Distrib Comp Sys, IEEE 1981,
	pp. 162-172].

	(10 May 1995)

display

	1. <hardware> {monitor}.

	2. <language> A vector of pointers to {activation record}s.
	The Nth element points to the activation record containing
	variables declared at {lexical depth} N.  This allows faster
	access to variables from outer {scope}s than the alternative
	of linked activation records (but most variable accesses are
	either local or global or occasionally to the immediately
	enclosing scope).  Displays were used in some {ALGOL}
	implementations.

	(22 Feb 1996)

display hack

	<graphics> A program with the same approximate purpose as a
	kaleidoscope: to make pretty pictures.  Famous display hacks
	include {munching squares}, {smoking clover}, the {BSD Unix}
	"rain(6)" program, "worms(6)" on miscellaneous Unixes, and the
	{X} "kaleid(1)" program.  Display hacks can also be
	implemented without programming by creating text files
	containing numerous escape sequences for interpretation by a
	video terminal; one notable example displayed, on any VT100, a
	Christmas tree with twinkling lights and a toy train circling
	its base.  The {hack value} of a display hack is proportional
	to the aesthetic value of the images times the cleverness of
	the algorithm divided by the size of the code.  Synonym
	{psychedelicware}.

	(10 May 1995)

Display PostScript

	An extended form of {PostScript} permitting its interactive
	use with {bitmap display}s.

display standard

	<hardware> {IBM} and others have introduced a bewildering
	plethora of graphics and text display {standard}s for {IBM
	PC}s.  The standards are mostly implemented by plugging in a
	video display board (or "{graphics adaptor}") and connecting
	the appropriate monitor to it.  Each new standard subsumes its
	predecessors.  For example, an {EGA} board has {CGA} and {MDA}
	capability.

	With the {PS/2}, IBM introduced the {VGA} standard and built
	it into the main system board ({motherboard}).	VGA is also
	available as a plug-in board for PCs from third-party vendors.
	Also with the PS/2, IBM introduced the {8514} high-resolution
	graphics standard.  An 8514 adaptor board plugs into the PS/2,
	providing a dual-monitor capability.  The 8514 will be built
	into future models of the PS/2 line, as well.

	Graphics software has to support the major IBM graphics
	standards and many non-IBM, proprietary standards for
	high-resolution displays.  Either software vendors provide
	{display drivers} or display vendors provide drivers for the
	software package.  In either case, switching software or
	switching display systems is fraught with compatibility
	problems.

	 Display    Resolution Colours Sponsor	Systems

	 MDA	    720x350 T	  2   	IBM     PC
	 CGA	    320x200	  4   	IBM     PC
	 EGA	    640x350	 16   	IBM     PC
	 PGA	    640x480	256   	IBM     PC

	 Hercules   729x348	  2   non-IBM	PC

	 MCGA	    720x400 T
		    320x200 G	256		PS/2

	 VGA	    720x400 T
		    640x480 G	 16

	 SVGA	    800x600	 16	VESA

	 XVGA	   1024x768	256	(IBM name: 8514)

	T: text,  G: graphics.

	More colours are available from third-party vendors for some
	display types.

	See also {MDA}, {CGA}, {EGA}, {PGA}, {Hercules}, {MCGA},
	{VGA}, {SVGA}, {8514}, {VESA}.

	(10 May 1995)

display standards

	{display standard}

display terminal

	{visual display unit}

Dissociated Press

	[Play on "Associated Press"; perhaps inspired by a reference
	in the 1949 Bugs Bunny cartoon "What's Up, Doc?"]  An
	algorithm for transforming any text into potentially humorous
	garbage even more efficiently than by passing it through a
	{marketroid}.  The algorithm starts by printing any N
	consecutive words (or letters) in the text.  Then at every
	step it searches for any random occurrence in the original
	text of the last N words (or letters) already printed and then
	prints the next word or letter.  {EMACS} has a handy command
	for this.  Here is a short example of word-based Dissociated
	Press applied to an earlier version of the {Jargon File}:

	wart:  A small, crocky {feature} that sticks out of
	an array (C has no checks for this).  This is relatively
	benign and easy to spot if the phrase is bent so as to be
	not worth paying attention to the medium in question.

	Here is a short example of letter-based Dissociated Press
	applied to the same source:

	window sysIWYG:  A bit was named aften /bee't*/ prefer
	to use the other guy's re, especially in every cast a
	chuckle on neithout getting into useful informash speech
	makes removing a featuring a move or usage actual
	abstractionsidered interj. Indeed spectace logic or problem!

	A hackish idle pastime is to apply letter-based Dissociated
	Press to a random body of text and {vgrep} the output in hopes
	of finding an interesting new word.  (In the preceding
	example, "window sysIWYG" and "informash" show some promise.)
	Iterated applications of Dissociated Press usually yield
	better results.  Similar techniques called "travesty
	generators" have been employed with considerable satirical
	effect to the utterances of {Usenet} flamers; see {pseudo}.

distfix

	<programming> ("distributed {fixity}"?) A description of an
	{operator} represented by multiple symbols before, between,
	and/or after the arguments.

	The classical example is the {C} conditional operator, "?:"
	which is written

		E1 ? E2 : E3

	If E1 is true it returns E2 otherwise it returns E3.  Several
	{functional programming languages}, e.g. {Hope}, {Haskell},
	have similar operators ("if E1 then E2 else E3").

	{Objective C} {messages} are effectively distfix operator
	applications:

		getRow:row andColumn:col ofCell:cell

	is a message with three arguments, row, col, and cell.

	(21 Jan 1997)

Distributed Component Object Model

	<programming> (DCOM) {Microsoft}'s extension of their
	{Component Object Model} (COM) to support objects distributed
	across a {network}.  DCOM has been submitted to the {IETF} as
	a draft standard.  Since 1996, it has been part of {Windows
	NT} and is also available for {Windows 95}.

	DCOM serves the same purpose as {IBM}'s {DSOM} {protocol},
	which is the most popular implementation of {CORBA}.  Unlike
	CORBA, which runs on many {operating systems}, DCOM is
	currently implemented only for {Microsoft Windows}.

	[Details?  URL?]

	(07 Dec 1997)

Distributed Computing Environment

	(DCE) An architecture consisting of {standard} programming
	interfaces, conventions and {server} functionalities
	(e.g. naming, distributed file system, {remote procedure call})
	for distributing applications transparently across networks of
	{heterogeneous} computers.  DCE is promoted and controlled by
	the {Open Software Foundation} (OSF).

	{Usenet} newsgroup: {news:comp.soft-sys.dce}.

	{(http://www.dstc.edu.au/AU/research_news/dce/dce.html)}

	(07 Dec 1994)

distributed database

	A collection of several different {database}s that looks like
	a single {database} to the user.  An example is the {Internet}
	{Domain Name System} (DNS).

	(07 Dec 1994)

Distributed Eiffel

	["Distributed Eiffel: A Language for Programming
	Multi-Granular Distributed Objects on the Clouds Operating
	System", L. Gunaseelan et al, IEEE Conf Comp Langs, 1992].

	(07 Dec 1994)

Distributed Logic Programming

	<language> (DLP) A {logic programming} language similar to
	{Prolog}, combined with parallel {object orientation} similar
	to {POOL}.  DLP supports distributed {backtracking} over the
	results of a {rendezvous} between {object}s.  {Multi-threaded}
	objects have autonomous activity and may simultaneously
	evaluate {method} calls.

	["DLP: A Language for Distributed Logic Programming",
	A. Eliens, Wiley 1992].

	(07 Jan 1996)

Distributed Management Environment

	(DME) An {OSF} {standard}.  It had reached the {RFT} stage.

	(22 Feb 1995)

distributed memory

	<architecture> The kind of memory in a {parallel processor}
	where each processor has fast access to its own local memory
	and where to access another processor's memory it must send a
	message via the inter-processor network.

	Opposite: {shared memory}.

	(22 Mar 1995)

Distributed Network Operating System

	<operating system> (DNOS) A proprietary {operating system} for
	{Texas Instruments} {990}-series {minicomputers}.

	(01 Apr 1996)

Distributed Operating Multi Access Interactive Network

	(DOMAIN) The proprietary network {protocol} used by {Apollo}
	{workstation}s.

	(16 Feb 1995)

Distributed Processes

	(DP) The first {concurrent} language based on {remote
	procedure call}s.

	["Distributed Processes: A Concurrent Programming Concept",
	Per Brinch Hansen CACM 21(11):934-940 (Nov 1978)].

	(02 Dec 1994)

Distributed Queue Dual Bus

	<networking, standard> (DQDB) An {IEEE} {standard} for
	{metropolitan area network}s.

	[Details?]

	(28 Mar 1995)

Distributed Smalltalk

	["The Design and Implementation of DIstributed Smalltalk",
	J. Bennett, SIGPLAN Notices 22(12):318-330 (Dec 1980)].

	(02 Dec 1994)

distributed system

	A collection of (probably heterogeneous) automata whose
	distribution is transparent to the user so that the system
	appears as one local machine.  This is in contrast to a
	network, where the user is aware that there are several
	machines, and their location, storage replication, load
	balancing and functionality is not transparent.  Distributed
	systems usually use some kind of {client-server} organisation.

	Distributed systems are considered by some to be the "next
	wave" of computing.

	{Distributed Computing Environment} is the {Open Software
	Foundation}'s software architecture for distributed systems.

	{(http://www.dstc.edu.au/AU/research_news/dist-env.html)}

	(06 Dec 1994)

distributed systems

	{distributed system}

distribution

	1. A software source tree packaged for distribution; but see
	{kit}.

	2. A vague term encompassing {mailing list}s and {Usenet}
	{newsgroup}s (but not {BBS} {fora}); any topic-oriented
	message channel with multiple recipients.

	3. An information-space domain (usually loosely correlated
	with geography) to which propagation of a {Usenet} message is
	restricted; a much-underused feature.

distributive lattice

	A {lattice} for which the {least upper bound} (lub) and
	{greatest lower bound} (glb) operators distribute over one
	another so that

		a lub (b glb c) == (a glb c) lub (a glb b)

	and vice versa.

	("lub" and "glb" are written in {LateX} as {\sqcup} and
	{\sqcap}).

	(03 Feb 1995)

disusered

	({Usenet}) Said of a person whose account on a computer has
	been removed, especially for cause rather than through normal
	attrition.  "He got disusered when they found out he'd been
	{cracking} through the school's {Internet} access."  The verb
	"disuser" is less common.  Both usages probably derive from
	the DISUSER account status flag on {VMS}; setting it disables
	the account.

	(08 Dec 1994)

dithering

	A technique used in {computer graphics} to create additional
	colors and shades from an existing {palette} by interspersing
	{pixel}s of different colours.  On a {monochrome} display,
	areas of grey are created by varying the proportion of black
	and white pixels.  In color displays, colors and textures are
	created by varying the proportions of existing colors.  The
	different colours can either be distributed randomly or
	regularly.  The higher the {resolution} of the display, the
	smoother the dithered colour will appear to the eye.

	Dithering is used to create patterns for use as backgrounds,
	fills and shading, as well as for creating {halftones} for
	printing.  It is also used in {anti-aliasing} in order to make
	jagged lines appear smoother on screen.

	(02 Nov 1994)

Ditto Drive

	<hardware, storage> The Ditto {tape drives} range in capacity
	from 120 {megabytes} to 1.6 {gigabytes} ({data compression}
	can roughly double these figures).  The newer devices are
	designed for special tapes, though they will read standard
	tape types.

	The largest of tape stores up 3.2 {GB}.  Using an enhanced
	{floppy drive} card the transfer rate approaches the claimed
	19 {MB}/minute.  External {parallel} port versions are also
	available.

	{Compatibility details
	(http://www.iomega.com/support/techs/ditto/3040.html)}.

	(26 Mar 1997)

diverge

	If a series of approximations to some value get progressively
	further from it then the series is said to diverge.

	The {reduction} of some term under some {evaluation strategy}
	diverges if it does not reach a {normal form} after a finite
	number of reductions.

	(08 Dec 1994)

divisor

	A quantity that evenly divides another quantity.

	Unless otherwise stated, use of this term implies that the
	quantities involved are integers.  (For non-integers, the more
	general term {factor} may be more appropriate.)

	 Example: 3 is a divisor of 15.
	 Example: 3 is not a divisor of 14.

	(07 Mar 1997)

DJGPP

	<tool> A 32-bit {GNU} {C}/{C++}/etc development system for
	{MS-DOS}.

	{Home (http://www.delorie.com/djgpp/)}

	Address: DJ Delorie, Rochester, NH, USA.

	(10 Apr 1995)

DK

	{Datakit}

DL/1

	Query language, linear keyword.

DLC

	{Data Link Control}

DLCI

	{Data Link Control Identifier}

	[Is this correct?]

	(01 Mar 1997)

DLE

	<character> Data Link Escape, the {mnemonic} for {ASCII} 16.

	(24 Jun 1996)

DLG

	(DFA-based Lexical analyser Generator) The {lexical analyser}
	generator in the {Purdue Compiler-Construction Tool Set}.

DL/I

	The data manipulation language of IMS.

DLL

	1. {Data Link Layer}.

	2. {Dynamically linked library}.

	3. Dial Long Line equipment.

DLM

	Distributed Lock Manager on distributed VMS systems.

DLP

	<language> {Distributed Logic Programming}.

	(07 Jan 1996)

DLPI

	{Data Link Provider Interface}

DLT

	{Digital Linear Tape}

DLUR/DLUS

	<networking> Dependent Logical Unit Requester/Server.  The
	DLUR function is an {APPN} enhancement for an end node or
	network node that supports dependent {LU}s.  The DLUS function
	is a product feature of an {interchange node} or a {T5}
	network node supporting {session services} extensions.

	{(http://booksrv2.raleigh.ibm.com/cgi-bin/bookmgr/bookmgr.cmd/BOOKS/DLUR7/)}.

	(08 May 1997)

DLZ1

	{Digital Lempel Ziv 1}

DMA

	{Direct Memory Access}

DMAD

	Diagnostic Machine Aid-Digital.  A system for functional
	testing of digital devices.

	["DMAD M/MM Manual", BR-8392, Raytheon Co. (Oct 1973)]

	(02 Nov 1994)

dmake

	Required by {uC++}.

	{(ftp://plg.uwaterloo.ca/pub/dmake/dmake38.tar.Z)}

	[What is it?]

	(02 Nov 1994)

DMALGOL

	{ALGOL} with extensions to interface to {DMS II}, the
	{Burroughs} {database}.

	(22 Feb 1995)

DME

	{Distributed Management Environment}

DML

	1. Data Management Language.  Early ALGOL-like language with
	lists, graphics, on Honeywell 635.  "DML: A Data Management
	Language", D.W. Bray et al, GE, Syracuse NY.

	2. "DML: A Meta-language and System for the Generation of
	Practical and Efficient Compilers from Denotational
	Specifications", M. Pettersson et al, IEEE Conf Comp Langs,
	1992.

DMM

	{Digital Multimeter}

DMZ

	{De-Militarised Zone}

DNA computing

	<architecture> The use of DNA molecules to encode
	computational problems.  Standard operations of molecular
	biology can then be used to solve some {NP-hard} {search
	problems} in parallel using a very large number of molecules.
	The exponential scaling of NP-hard problems still remains, so
	this method will require a huge amount of DNA to solve large
	problems.

	[L. M. Adleman, "Molecular Computation of Solutions to
	Combinatorial Problems", Science 266:1021-1024, 1994].

	(11 Feb 1997)

DNF

	{disjunctive normal form}

DNIS

	{Dialled Number Identification Service}

DNOS

	{Distributed Network Operating System}

DNS

	1. {Domain Name System}.

	2. Distributed Name Service.  See {DECdns}.

DOA

	<jargon> Dead on arrival.  A piece of {hardware} has never
	worked.

	(28 Nov 1996)

Doc

	Directed Oc.  "Programming Language Doc and Its
	Self-Description, or 'X=X Is Considered Harmful'", M. Hirata,
	Proc 3rd Conf Japan Soc Soft Sci Tech, pp.69-72 (1986).

doc

	/dok/ Common spoken and written shorthand for "documentation".
	Often used in the plural "docs" and in the construction "doc
	file" (i.e. documentation available on-line).

DOCMaker

	<text, tool, product> An application for the {Apple}
	{Macintosh} which creates stand-alone, self-running document
	{files}.  It features scrollable and re-sizable windows,
	graphics, varied text styles and {fonts}, full printing
	capability, and links to other {software} and {information}.

	Companies such as Federal Express, GTE, {Hewlett-Packard},
	{Iomega}, {Adobe}, {Apple Computer} and {Aladdin} use DOCMaker
	to distribute disk-based {documentation} with their products.

	{(http://www.hsv.tis.net/~greenmtn/docm1.html)}

	(27 Jan 1998)

doco

	<jargon> /do'koh/ (In-house jargon at Symbolics) A
	documentation writer.

	See also {devo} and {mango}.

	(16 Apr 1995)

document

	A term used on some systems (e.g. {Intermedia}) for a
	{hypertext} {node}.  It is sometimes used for a collection of
	nodes on related topics, possibly stored or distributed as
	one.

documentation

	The multiple kilograms of macerated, pounded, steamed,
	bleached, and pressed trees that accompany most modern
	software or hardware products (see also {tree-killer}).
	Hackers seldom read paper documentation and (too) often resist
	writing it; they prefer theirs to be terse and on-line.  A
	common comment on this predilection is "You can't {grep} dead
	trees".  See {drool-proof paper}, {verbiage}, {treeware}.

Document Examiner

	<hypertext, tool> A high-performance {hypertext} system by
	{Symbolics} that provides on-line access to their user
	documentation.

	(16 Apr 1995)

Document Image Processing

	(DIP) Storage, management and retrieval of {image}s.

	(11 Nov 1994)

Document Style Semantics and Specification Language

	(DSSSL) An {ISO} {standard} under preparation, addressing the
	{semantics} of high-quality composition in a manner
	independent of particular formatting systems or processes.
	DSSSL is intended as a complementary standard to {SGML} for
	the specification of semantics.

Document Type Definition

	<text, standard> (DTD) The definition of a document type in
	{SGML}, consisting of a set of {mark-up} tags and their
	interpretation.

	{HTML DTD (http://www.w3.org/pub/WWW/MarkUp/Cougar/HTML.dtd)}.

	(08 Dec 1994)

DOCUS

	Display Oriented Computer Usage System.  Interactive system
	using push buttons.  Sammet 1969, p.678

DoD

	{Department of Defense}

DoD-1

	Unofficial name of the language that became Ada.

dodgy

	Synonym with {flaky}.  Preferred outside the US

DOD-STD-2167A

	<standard> A {DoD} {standard} specifying the overall process
	for the development and documentation of mission-critical
	software systems.

	(28 May 1996)

DoD-STD-2168

	<standard> A {DoD} {standard} for software quality assurance
	procedures.

	(29 May 1996)

DOE

	Distributed Object Environment: a distributed object-oriented
	application framework from SunSoft.

DOF

	{degrees of freedom}

dogcow

	/dog'kow/  See {Moof}.

dogpile

	({Usenet}, probably from mainstream "puppy pile") When many
	people post unfriendly responses in short order to a single
	posting, they are sometimes said to "dogpile" or "dogpile on"
	the person to whom they're responding.  For example, when a
	religious missionary posts a simplistic appeal to alt.atheism,
	he can expect to be dogpiled.

	(08 Dec 1994)

dogwash

	/dog'wosh/ (a quip in the "urgency" field of a very optional
	software change request, ca. 1982.  It was something like
	"Urgency: Wash your dog first"). A project of minimal
	priority, undertaken as an escape from more serious work.
	Many games and much {freeware} get written this way, including
	{this dictionary}.

	(08 Dec 1994)

DOL

	Display Oriented Language.  Subsystem of DOCUS.  Sammet 1969,
	p.678.

dollar

	$

	Common: {ITU-T}: dollar sign.  Rare: currency symbol;
	buck; cash; string (from BASIC); escape (when used as the echo
	of ASCII ESC); ding; cache; {INTERCAL}: big money.

	(06 Mar 1995)

domain

	1. <mathematics> In the theory of functions, the set of
	argument values for which a {function} is defined.

	See {domain theory}.

	2. <networking> On the {Internet}, "domain" is most commonly
	used to refer to a group of computers whose {hostnames} share
	a common suffix, the domain name.  The last component of this
	is the {top-level domain}.

	See {administrative domain}, {Domain Name System}, {fully
	qualified domain name}.

	3. {Distributed Operating Multi Access Interactive Network}.

	4. <programming> A specific phase of the {software life cycle}
	in which a developer works.  Domains define developers' and
	users' areas of responsibility and the scope of possible
	relationships between products.

	5. The subject or market in which a piece of software is
	designed to work.

	(26 Dec 1997)

domain address

	<networking> The name of a {host} on the {Internet} belonging
	to the {hierarchy} of Internet {domain}s.

	(27 Oct 1994)

Domain Analysis

	<systems analysis> 1. Determining the operations, data
	objects, properties and {abstractions} appropriate for
	designing solutions to problems in a given {domain}.

	2. The {domain engineering} activity in which domain knowledge
	is studied and formalised as a domain definition and a domain
	specification.  A {software reuse} approach that involves
	combining software components, subsystems, etc., into a single
	application system.

	3. The process of identifying, collecting organising,
	analysing and representing a {domain model} and software
	architecture from the study of existing systems, underlying
	theory, emerging technology and development histories within
	the domain of interest.

	4. The analysis of systems within a domain to discover
	commonalities and differences among them.

	(26 Dec 1997)

domain architecture

	<systems analysis> A generic, organisational structure or
	design for software systems in a {domain}.  The domain
	architecture contains the designs that are intended to satisfy
	requirements specified in the {domain model}.  A domain
	architecture can be adapted to create designs for software
	systems within a domain and also provides a framework for
	configuring {assets} within individual software systems.

	(26 Dec 1997)

Domain Architecture Model

	<systems analysis> A set of software architectures generic to
	a {domain} that define organising frameworks for constructing
	new application designs and implementations within the domain,
	consistent with the domain requirements model.

	(26 Dec 1997)

domain engineering

	<systems analysis> 1. The development and evolution of
	{domain} specific knowledge and artifacts to support the
	development and evolution of systems in the domain.  Domain
	engineering includes engineering of {domain models},
	components, methods and tools and may also include {asset
	management}.

	2. The engineering process of analysing and modeling a domain,
	designing and modeling a generic solution architecture for a
	product line within that domain, implementing and using
	reusable components of that architecture and maintaining and
	evolving the domain, architecture and implementation
	models.

	3. A reuse-based approach to defining the scope ({domain
	definition}), specifying the structure ({domain architecture})
	and building the Assets (requirements, designs, software code,
	documentation) for a class of systems, subsystems or
	applications.  Domain engineering can include domain
	definition, domain analysis, developing the domain
	architecture domain implementation.

domainist

	<jargon> /doh-mayn'ist/ 1. Said of a domain address (as
	opposed to a {bang path}) because the part to the right of the
	"@" specifies a nested series of "domains"; for example,
	esr@snark.thyrsus.com specifies the machine called snark in
	the subdomain called thyrsus within the top-level domain
	called com.  See also {big-endian}.

	2. Said of a site, mailer or routing program which knows how
	to handle domainist addresses.

	3. Said of a person (especially a site admin) who prefers
	domain addressing, supports a domainist mailer, or
	proselytises for domainist addressing and disdains {bang
	paths}.  This term is now (1993) semi-obsolete, as most sites
	have converted.

	(21 Apr 1995)

domain maturity

	<systems analysis> The level of stability and depth of
	understanding that has been achieved in an area for which
	{applications} are developed.

	(26 Dec 1997)

domain model

	<systems analysis> 1. A definition of the functions, objects,
	data, requirements, relationships and variations in a
	particular {domain}.

	2. A product of {domain analysis} which provides a
	representation of the requirements of the domain.  The domain
	model identifies and describes the structure of data, flow of
	information, functions, constraints and controls within the
	Domain that are included in software systems in the domain.
	The Domain Model describes commonalities and variabilities
	among requirements for software systems in the domain.

	(26 Dec 1997)

Domain Name Server

	<spelling> {Domain Name System}.

	(15 Dec 1997)

Domain Name System

	<networking> (DNS) A general-purpose distributed, replicated,
	data query service chiefly used on {Internet} for translating
	{hostnames} into {Internet addresses}.  Also, the style of
	{hostname} used on the Internet, though such a name is
	properly called a {fully qualified domain name}.  DNS can be
	configured to use a sequence of name servers, based on the
	domains in the name being looked for, until a match is found.

	The name resolution client (e.g. Unix's gethostbyname()
	library function) can be configured to search for host
	information in the following order: first in the local
	/etc/hosts file, second in {NIS} and third in DNS.  This
	sequencing of Naming Services is sometimes called "name
	service switching".  Under {Solaris} is configured in the file
	/etc/nsswitch.conf.

	DNS can be queried interactively using the command {nslookup}.
	It is defined in {STD 13}, {RFC 1034} and {RFC 1035}.

	Domain Name System

	{BIND} is a common DNS server.

	{Info from Virtual Office, Inc.
	(http://virtual.office.com/domains.html)}.

	(15 Dec 1997)

domain selection

	<systems analysis> The prioritisation and selection of one or
	more {domains} for which specific {software reuse} engineering
	projects are to be initiated.

	(26 Dec 1997)

Domain Software Engineering Environment

	<programming> (DSEE) A proprietary {CASE} framework and
	{configuration management} system from {Apollo}.

	(29 May 1996)

domain-specific language

	<language> A machine-processable language whose terms are
	derived from a {domain model} and that is used for the
	definition of components or software architectures supporting
	that domain.  A domain-specific language is often used as
	input to an application generator.

	(26 Dec 1997)

domain theory

	<theory> A branch of mathematics introduced by Dana Scott in
	1970 as a mathematical theory of programming languages, and
	for nearly a quarter of a century developed almost exclusively
	in connection with {denotational semantics} in computer
	science.

	In {denotational semantics} of programming languages, the
	meaning of a program is taken to be an element of a domain.  A
	domain is a mathematical structure consisting of a set of
	values (or "points") and an ordering relation, <= on those
	values.  Domain theory is the study of such structures.

	("<=" is written in {LaTeX} as {\subseteq})

	Different domains correspond to the different types of object
	with which a program deals.  In a language containing
	functions, we might have a domain X -> Y which is the set of
	functions from domain X to domain Y with the ordering f <= g
	iff for all x in X, f x <= g x.  In the {pure lambda-calculus}
	all objects are functions or {application}s of functions to
	other functions.  To represent the meaning of such programs,
	we must solve the {recursive} equation over domains,

		D = D -> D

	which states that domain D is ({isomorphic} to) some {function
	space} from D to itself.  I.e. it is a {fixed point} D = F(D)
	for some operator F that takes a domain D to D -> D.  The
	equivalent equation has no non-trivial solution in {set
	theory}.

	There are many definitions of domains, with different
	properties and suitable for different purposes.  One commonly
	used definition is that of Scott domains, often simply called
	domains, which are {omega-algebraic}, {consistently complete}
	{CPO}s.

	There are domain-theoretic computational models in other
	branches of mathematics including {dynamical system}s,
	{fractal}s, {measure theory}, {integration theory},
	{probability theory} and {stochastic process}es.

	See also {abstract interpretation}, {bottom}, {pointed
	domain}.

DOMF

	Distributed Object Management Facility.

	An {OMG}-compliant object management system; part of {DOE}.
	Produced by {SunSoft}.

	(04 Nov 1994)

Donald Knuth

	<person> Donald E. Knuth, the author of the {TeX} document
	formatting system, {Metafont} its {font}-design program and
	the 3 volume computer science "Bible" of {algorithms}, "The
	Art of Computer Programming".

	Knuth suggested the name "{Backus-Naur Form}" and was also
	involved in the {SOL} simulation language, and developed the
	{WEB} {literate programming} system.

	See also {MIX}, {Turingol}.

	(04 Nov 1994)

dongle

	/dong'gl/ 1. A security or {copy protection} device for
	commercial microcomputer programs consisting of a serialised
	EPROM and some drivers in a D-25 connector shell, which must
	be connected to an I/O port of the computer while the program
	is run.  Programs that use a dongle query the port at startup
	and at programmed intervals thereafter, and terminate if it
	does not respond with the dongle's programmed validation code.
	Thus, users can make as many copies of the program as they
	want but must pay for each dongle.  The idea was clever, but
	it was initially a failure, as users disliked tying up a
	serial port this way.  Almost all dongles on the market today
	(1993) will pass data through the port and monitor for {magic}
	codes (and combinations of status lines) with minimal if any
	interference with devices further down the line - this
	innovation was necessary to allow daisy-chained dongles for
	multiple pieces of software.  The devices are still not widely
	used, as the industry has moved away from copy-protection
	schemes in general.  2. By extension, any physical electronic
	key or transferable ID required for a program to function.
	Common variations on this theme have used parallel or even
	joystick ports.  See {dongle-disk}.

	[Note: in early 1992, advertising copy from Rainbow
	Technologies (a manufacturer of dongles) included a claim that
	the word derived from "Don Gall", allegedly the inventor of
	the device.  The company's receptionist will cheerfully tell
	you that the story is a myth invented for the ad copy.
	Nevertheless, I expect it to haunt my life as a lexicographer
	for at least the next ten years. - ESR]

dongle-disk

	/don'gl disk/ A special floppy disk that is required in order
	to perform some task.  Some contain special coding that allows
	an application to identify it uniquely, others *are* special
	code that does something that normally-resident programs don't
	or can't.  (For example, {AT&T}'s "Unix PC" would only come up
	in {root mode} with a special boot disk.)  Also called a "key
	disk".  See {dongle}.

Don't do that, then!

	[An old doctor's office joke about a patient with a trivial
	complaint] Stock response to a user complaint.  "When I type
	control-S, the whole system comes to a halt for thirty
	seconds."  "Don't do that, then!" (or "So don't do that!").
	Compare {RTFM}.

donuts

	(Obsolete) A collective noun for any set of memory bits.  This
	usage is extremely archaic and may no longer be live jargon;
	it dates from the days of {ferrite core memories} in which
	each bit was implemented by a doughnut-shaped magnetic
	{flip-flop}.

DOOM

	<games> A simulated 3D moster-hunting action game for {IBM
	PC}s, created and published by {id Software}.  The original
	press release was dated January 1993.  A cut-down shareware
	version v1.0 was released on 10 December 1993 and again with
	some bug-fixes, as v1.4 in June 1994.

	DOOM is similar to Wolfenstein 3d (id Software, Apogee) but
	has better {texture mapping}; walls can be at any angle, of
	any thickness and have windows; lighting can fade into the
	distance or come from point sources; floors and ceilings can
	be of any height; many surfaces are animated; up to four
	players can play over a network or two by serial link; it has
	a high {frame rate} (comparable to TV on a {486}/33); DOOM
	isn't just a collection of connected closed rooms like
	Wolfenstein but sounds can travel anywhere and alert monsters
	of your approach.

	The shareware version is available from these sites:
	{Cactus(ftp://cactus.org/pub/IHHD/multi-player/)},
	{Manitoba(ftp://ftp.cc.umanitoba.ca/pub/doom/)},
	{UK(ftp://ftp.demon.co.uk/pub/ibmpc/games/id/)},
	{South Africa(ftp://ftp.sun.ac.za/pub/msdos/games/id/)},
	{UWP ftp(ftp://archive.uwp.edu/pub/msdos/games/id/)},
	{UWP http(http://archive.uwp.edu/pub/msdos/games/id/)},
	{Finland(ftp://ftp.funet.fi/pub/msdos/games/id)},
	{Washington(ftp://wuarchive.wustl.edu/pub/MSDOS_UPLOADS/games/doom)}.

	A {FAQ} by Hank Leukart <ap641@cleveland.freenet.edu>: {UWP
	(ftp://ftp.uwp.edu/pub/msdos/games/id/home-brew/doom)},
	{Washington
	(ftp://wuarchive.wustl.edu/pub/MSDOS_UPLOADS/games/doomstuff)}.
	{FAQ on WWW (http://venom.st.hmc.edu/~tkelly/doomfaq/intro.html)}.
	{Other links (http://www.gamesdomain.co.uk/descript/doom.html)}.

	{Usenet} newsgroups: {news:rec.games.computer.doom.announce},
	{news:rec.games.computer.doom.editing},
	{news:rec.games.computer.doom.help},
	{news:rec.games.computer.doom.misc},
	{news:rec.games.computer.doom.playing}, {news:alt.games.doom},
	{news:comp.sys.ibm.pc.games.action},
	{news:comp.sys.ibm.pc.games.announce},
	{news:comp.sys.ibm.pc.games.misc}.

	Mailing List: <listserv@cedar.univie.ac.at> ("sub DOOML" in
	the message body, no subject).

	Telephone: +44 (1222) 362 361 - the UK's first multi-player
	DOOM and games server.

	(14 Dec 1994)

DOORS

	{Dynamic Object Oriented Requirements System}

doorstop

	Used to describe equipment that is non-functional and halfway
	expected to remain so, especially obsolete equipment kept
	around for political reasons or ostensibly as a backup.  "When
	we get another Wyse-50 in here, that ADM 3 will turn into a
	doorstop."

	Compare {boat anchor}.

Dorito Syndrome

	<humour> Feelings of emptiness and dissatisfaction triggered
	by addictive substances that lack nutritional content.  "I
	just spent six hours surfing the Web, and now I've got a bad
	case of Dorito Syndrome."

	(30 Mar 1997)

DOS

	<operating system> 1. {Disk Operating System}.

	2. The common abbreviation for {MS-DOS}.

	(15 Sep 1997)

DOS/360

	<operating system> The {operating system} announced by {IBM}
	at the low end for the {System/360} in 1964 and delivered in
	1965 or 1966.

	Following the failure of {OS}, IBM designed DOS for the low
	end machines, able to run in 16KB(?) and 64KB memory.

	DOS/360 used three {memory partitions}, but it had no serious
	{memory protection}.  The three partitions were not
	specialised, but frequently one was used for {spooling}
	{punched cards} to {disk}, another one for {batch job}
	execution and another for spooling disk to printers.

	With DOS/VS, introduced in 1970, the number of partitions was
	increased, {virtual memory} was introduced and the minimum
	memory requirements increased.

	Later they released DOS/VSE and ESA/VSE.  DOS/360 successors
	are still alive today (1997) though not as popular as in the
	late 1960s.

	Contrary to the Hacker's {Jargon File}, {GECOS} was not copied
	from DOS/360.

	(22 Sep 1997)

DOS Protected Mode Interface

	(DPMI) The method which {Microsoft} prescribes for a {DOS}
	program to access {extended memory} under a {multitasking}
	environment, e.g. {Microsoft Windows}.  This service is
	provided by the HIMEM.SYS driver on {IBM PC}s.

	The DPMI specification was finalized in 1990.  The
	specification itself is available from {Intel Literature
	Sales}.

	VCPI (Virtual Control Program Interface), which was an
	alternative, and incompatible method for doing the same thing.

	["Windows 3.1 Secrets", Brian Livingston, 1992, ISBN
	1-878058-43-6, pages 280-281 and 302].

	(12 Jan 1995)

DOS requester

	<networking> An {MS-DOS} {client} that provides transparent
	redirection of printing and file accesses to a network
	{server}.  It handles levels 3, 4 and 5 of the {Open Systems
	Interconnect} seven layer model.

	A DOS requester under {Novell NetWare} will interface to a
	{network card} driver with an {ODI} interface, and will be
	either a single executable (netx.exe) or a set of {VLM}s that
	are loaded on demand.

	In the {IBM}/{Microsoft} {LAN Manager}/{SMB} world, where
	the name {DOS redirector} is more common, there will be an
	{NDIS} interface driver and a net.exe executable.

	{NetWare Client 32 for DOS/Windows
	(http://developer.novell.com/research/appnotes/1996/may/01/)}.

	{(http://www.cad.strath.ac.uk/~davidm/projects/guide/requester.html)}.

	(05 Jan 1998)

dot

	<character> {decimal point}.

	See also {dot file}, {dot notation}.

	(14 Mar 1995)

dot address

	An {Internet address} in {dot notation}.

dot file

	<operating system, convention> A {Unix} {application program}
	configuration file.  On {Unix}, files named with a leading dot
	are not normally shown in directory listings.  Many programs
	define one or more dot files in which startup or configuration
	information may be optionally recorded; a user can customise
	the program's behaviour by creating the appropriate file in
	the current or {home directory}.

	Dot files tend to proliferate - with every nontrivial
	application program defining at least one, a user's home
	directory can be filled with scores of dot files, without the
	user really being aware of it.  Common examples are .profile,
	.cshrc, .login, .emacs, .mailrc, .forward, .newsrc, .plan,
	.rhosts, .sig, .xsession.

	See also {profile}, {rc file}.

	(07 Dec 1994)

dot matrix printer

	<hardware, printer> A kind of printer with a vertical column
	of up to 48 small closely packed needles or "pins" each of
	which can be individually forced forwards to press an ink
	ribbon against the paper.  The print head is repeatedly
	scanned across the page and different combinations of needles
	activated at each point.

	Dot matrix printers are noisy compared to {non-impact
	printer}s.

	[Other pin arrangements?]

	(14 Mar 1995)

dot notation

	{Berkeley Unix} notation for {Internet address}es.  An
	{Internet address} in dot notation consists of one to four
	numbers in {hexadecimal} (leading 0x), {octal} (leading 0) or
	decimal.  It represents a 32-bit address.  Each leading number
	represents eight bits of the address (high byte first) and the
	last number represents the rest.  E.g. address 0x25.32.0xab
	represents 0x252000ab.  By far the most common form is four
	decimal numbers, e.g. 146.169.22.42.  Many commands will accept
	an address in dot notation in place of a hostname.

	(07 Dec 1994)

dot pitch

	<hardware> The distance between a dot and the closest dot of
	the same colour (red, green or blue) on a color {CRT}.  Dot
	pitch is typically from 0.28 to 0.51 mm but large presentation
	monitors may go up to 1.0 mm.  The smaller the dot pitch, the
	crisper the image, 0.31 or less provides a sharp image,
	especially when displaying text.

	Dot pitch measurements between conventional tubes and {Sony}'s
	{Trinitron} tubes are roughly, but not exactly comparable.
	Sony's {CRT}s use vertical stripes, not dots, and its
	measurement is the distance between stripes, not the diagonal
	distance between dots.

	["The Computer Glossary", Alan Freedman].

	(14 Dec 1995)

double bucky

	Using both the CTRL and META keys.  "The command to burn all
	LEDs is double bucky F."

	This term originated on the Stanford extended-ASCII keyboard,
	and was later taken up by users of the {space-cadet keyboard}
	at MIT.  A typical MIT comment was that the Stanford {bucky
	bits} (control and meta shifting keys) were nice, but there
	weren't enough of them; you could type only 512 different
	characters on a Stanford keyboard.  An obvious way to address
	this was simply to add more shifting keys, and this was
	eventually done; but a keyboard with that many shifting keys
	is hard on touch-typists, who don't like to move their hands
	away from the home position on the keyboard.  It was
	half-seriously suggested that the extra shifting keys be
	implemented as pedals; typing on such a keyboard would be very
	much like playing a full pipe organ.  This idea is mentioned
	in a parody of a very fine song by Jeffrey Moss called "Rubber
	Duckie", which was published in "The Sesame Street Songbook"
	(Simon and Schuster 1971, ISBN 0-671-21036-X).  These lyrics
	were written on May 27, 1978, in celebration of the Stanford
	keyboard:

	                  Double Bucky

	  Double bucky, you're the one!
	  You make my keyboard lots of fun.
	      Double bucky, an additional bit or two:
	  (Vo-vo-de-o!)
	  Control and meta, side by side,
	  Augmented ASCII, nine bits wide!
	      Double bucky!  Half a thousand glyphs, plus a few!
	          Oh,
	          I sure wish that I
	          Had a couple of
	              Bits more!
	          Perhaps a
	          Set of pedals to
	          Make the number of
	              Bits four:
	          Double double bucky!
	  Double bucky, left and right
	  OR'd together, outta sight!
	      Double bucky, I'd like a whole word of
	      Double bucky, I'm happy I heard of
	      Double bucky, I'd like a whole word of you!

	  - The Great Quux

	(With apologies to Jeffrey Moss.  This, by the way, is an
	excellent example of computer {filk} --- ESR).

	See also {meta bit}, {cokebottle}, and {quadruple bucky}.

	(07 Dec 1994)

double-click

	<operating system> To click a {mouse} button twice in rapid
	succession without moving the mouse.  Often used as a
	shortcut, combining the actions of selecting, and then opening
	a document (or activating some other kind of object) within a
	{graphical user interface}.  Some {text editors} use
	double-click to select the word under the {mouse pointer}.

	(21 Mar 1997)

double DECkers

	Used to describe married couples in which both partners work
	for {Digital Equipment Corporation}.

	(07 Dec 1994)

doubled sig

	A {sig block} that has been included twice in a {Usenet}
	article or, less commonly, in an {electronic mail} message.
	An article or message with a doubled sig can be caused by
	improperly configured software.  More often, however, it
	reveals the author's lack of experience in electronic
	communication.

	See {BIFF}, {pseudo}.

	(07 Dec 1994)

double quote

	<character> '"' {ASCII} character 34.  Often used in
	programming languages to delimit strings.  In {Unix} {shell}s
	and {Perl} it delimits a string inside which variable
	substitution may occur.

	Common names: quote.  Rare: literal mark; double-glitch;
	{ITU-T}: quotation marks; {ITU-T}: dieresis; dirk; {INTERCAL}:
	rabbit-ears; double prime.

	(28 Mar 1995)

doubly linked list

	<programming> A data structure in which each element contains
	pointers to the next and previous elements in the list, thus
	forming a bidirectional linear list.

	(28 Mar 1995)

DOUGLAS

	An early system on the {IBM 701}.

	[Listed in CACM 2(5):16 (May 1959)].

	(07 Dec 1994)

DOW COMPILER

	An early system on the {Datatron 200} series.

	[Listed in CACM 2(5):16 (May 1959)].

	(07 Dec 1994)

down

	1. Not operating.  "The up escalator is down" is considered a
	humorous thing to say, and "The elevator is down" always
	means "The elevator isn't working" and never refers to what
	floor the elevator is on.  With respect to computers, this
	term has passed into the mainstream; the extension to other
	kinds of machine is still hackish.

	2. "go down" To stop functioning; usually said of the
	{system}.  The message from the {console} that every hacker
	hates to hear from the operator is "System going down in 5
	minutes".

	3. "take down", "bring down" To deactivate purposely, usually
	for repair work or {PM}.  "I'm taking the system down to work
	on that bug in the tape drive."  Occasionally one hears the
	word "down" by itself used as a verb in this sense.

	See {crash}; opposite: {up}.

	(07 Dec 1994)

download

	<jargon> To transfer data or (especially) code from one
	computer to another.  The distinction between downloading and
	uploading is hazy but downloading often refers to transfer
	from a larger "host" system (especially a {server} or
	{mainframe}) to a smaller "client" system, especially a
	{microcomputer} or specialised peripheral.

	Opposite: {upload}.

	However, note that ground-to-space communications has its own
	usage rule for this term.  Space-to-earth transmission is
	always "down" and the reverse "up" regardless of the relative
	size of the computers involved.  So far the in-space machines
	have invariably been smaller; thus the upload/download
	distinction has been reversed from its usual sense.

	(07 Dec 1994)

downloading

	{download}

downsizing

	<jargon> The process of moving an {application program} from a
	{mainframe} to a cheaper system, typically a {client-server}
	system.

	(27 Mar 1995)

down-time

	<jargon> A period of time during which a (computer) system is
	not operational, due to a malfunction or maintenance.

	(08 Jun 1997)

downward closed

	{closure}

DP

	1. {data processing}.

	According to hackers, use of the term marks one immediately as
	a {suit}.

	See {DPer}.

	2. {dot pitch}.

	3. {Dissociated Press}.

	(22 Jul 1996)

DPB

	/d*-pib'/ The {PDP-10} instruction "DePosit Byte" that inserts
	some bits into the middle of some other bits.  Hackish usage
	has been kept alive by the {Common LISP} function of the same
	name.

	(07 Dec 1994)

DPer

	/dee-pee-er/ Data Processor.  Hackers are absolutely amazed
	that {suit}s use this term self-referentially.  *Computers*
	process data, not people!

	See {DP}.

	(07 Dec 1994)

dpi

	Dots per inch.

	A measure of resolution for printers, scanners and displays.

	{Laser printer}s typically reach 300 DPI, though 600 DPI is
	becoming more common.  Commercial typesetters are usually
	around 1200 DPI.

	(05 Jan 1995)

DPL

	DECmmp Parallel Language.

	A {C}-like parallel language for the {DECmpp} machine.

	(07 Dec 1994)

DPL-82

	["DPL-82: A Language for Distributed Processing", L. Ericson,
	Proc 3rd Intl Conf Distrib Comp Sys, IEEE 1982, pp.526-531].

	(07 Dec 1994)

DPLL

	{Digital Phase-Locked Loop}

DPMI

	{DOS Protected Mode Interface}

DPMS

	<hardware> {Display Power Management Signaling}.

	(11 Dec 1995)

DPN

	{Decomposed Petri Net}

d-Prolog

	{Prolog} extended with {defeasible reasoning}.

	{(ftp://aisun1.ai.uga.edu/ai.prolog/)} for {MS-DOS} and {Unix}.

	(07 Dec 1994)

DPS

	1. <language, text> {Display PostScript}.

	2. <language> A {real-time} language with direct
	expression of timing requests.

	["Language Constructs for Distributed Real-Time PRogramming",
	I. Lee et al Proc IEEE Real-Time Sys Symp pp.57-66 (Dec
	1985)].

	[Expansion?]

	(28 Mar 1995)

dpSather

	{Data-parallel} {Sather}.  Fine-grained {deterministic}
	parallelism.

	E-mail: <hws@csis.dit.csiro.au>.
	{(ftp://lynx.csis.dit.csiro.au/p/pub/ather/dpsather.papers)}.

DPSK

	<communications> {Differential Phase Shift Keying}.

DQDB

	{Distributed Queue Dual Bus}

draco

	A blend of {Pascal}, {C} and {ALGOL 68} developed by Chris
	Gray in 1987.  It has been implemented for {CP/M-80} and
	{Amiga}.

	(04 Nov 1994)

drag and drop

	A common method for manipulating files (and sometimes text)
	under a {graphical user interface} or {WIMP} environment.  The
	user moves the pointer over an icon representing a file and
	presses a mouse button.  He holds the button down while moving
	the pointer (dragging the file) to another place, usually a
	directory viewer or an icon for some {application program},
	and then releases the button (dropping the file).  The meaning
	of this action can often be modified by holding certain keys
	on the keyboard at the same time.

	Some systems also use this technique for objects other than
	files, e.g. portions of text in a {word processor}.

	The biggest problem with drag and drop is does it mean "copy"
	or "move"?  The answer to this question is not intuitively
	evident, and there is no consensus for which is the right
	answer.  The same vendor even makes it move in some cases and
	copy in others.  Not being sure whether an operation is copy
	or move will cause you to check very often, perhaps every time
	if you need to be certain.  Mistakes can be costly.  People
	make mistakes all the time with drag and drop.  {Human
	computer interaction} studies show a higher failure rate for
	such operations, but also a higher "forgiveness rate" (users
	think "silly me") than failures with commands (users think
	"stupid machine").  Overall, drag and drop took some 40 times
	longer to do than single-key commands.

	[Erik Naggum <erik@naggum.no>]

drag-n-drop

	<spelling> Stupid spelling of {drag and drop}.

	(13 Dec 1996)

DRAGON

	1. An {Esprit} project aimed at providing effective support to
	{reuse} in {real-time} distributed {Ada} {application
	program}s.

	2. An implementation language used by {BTI Computer Systems}.

	E-mail: Pat Helland <helland@hal.com>.

	(08 Dec 1994)

dragon

	[MIT] A program similar to a {daemon}, except that it is not
	invoked at all, but is instead used by the system to perform
	various secondary tasks.  A typical example would be an
	accounting program, which keeps track of who is logged in,
	accumulates load-average statistics, etc.  Under ITS, many
	terminals displayed a list of people logged in, where they
	were, what they were running, etc., along with some random
	picture (such as a unicorn, Snoopy or the Enterprise), which
	was generated by the "name dragon".  Use is rare outside
	{MIT}, under {Unix} and most other {operating system}s this
	would be called a "background {demon}" or {daemon}.  The
	best-known Unix example of a dragon is {cron}.  At {SAIL},
	they called this sort of thing a "phantom".

Dragon Book

	<publication> The classic text "Compilers: Principles,
	Techniques and Tools", by Alfred V. Aho, Ravi Sethi, and
	Jeffrey D.  Ullman (Addison-Wesley 1986; ISBN 0-201-10088-6).
	So called because of the cover design featuring a dragon
	labelled "complexity of compiler design" and a knight bearing
	the lance "LALR parser generator" among his other trappings.
	This one is more specifically known as the "Red Dragon Book"
	(1986); an earlier edition, sans Sethi and titled "Principles
	Of Compiler Design" (Alfred V. Aho and Jeffrey D. Ullman;
	Addison-Wesley, 1977; ISBN 0-201-00022-9), was the "Green
	Dragon Book" (1977).  (Also "New Dragon Book", "Old Dragon
	Book".)  The horsed knight and the Green Dragon were warily
	eying each other at a distance; now the knight is typing
	(wearing gauntlets!) at a terminal showing a video-game
	representation of the Red Dragon's head while the rest of the
	beast extends back in normal space.

	See also {book titles}.

	(03 Dec 1996)

DRAGOON

	A distributed concurrent {object-oriented} {Ada}-based
	language from the {Esprit} {DRAGON} project by Colin Atkinson
	<atkinson@cl.uh.edu>, Imperial College 1989.  (Now at
	University of Houston, Clear Lake).  Object-oriented
	programming for embeddable systems.  Presently implemented as
	an Ada {preprocessor}.  E-mail: <adimaio@vms.eurokom.ie>.

	["Object-Oriented Reuse, Concurrency and Distribution: An
	Ada-Based Approach", C. Atkinson, A-W 1991, ISBN
	0-2015-6-5277].

drain

	[IBM] Synonym for {flush}.  Has a connotation of finality
	about it; one speaks of draining a device before taking it
	off-line.

DRAM

	{dynamic random access memory}

DRAM refresh

	<storage> The operation which cycles through a {DRAM} reading
	each row and writing it back again to compensate for the
	gradual leakage of charge from the {capacitors} which store
	the data.  This may be done by the {CPU} but is often done by
	a dedicated {memory controller}.

	(23 Feb 1997)

Drawing eXchange Format

	(DXF) A file format for graphical information, similar to
	{IGES}.  Commonly used by {CAD} systems like {AutoCAD}.

	(08 Dec 1994)

dread high bit disease

	A condition endemic to PRIME (also known as "PR1ME")
	minicomputers that results in all the characters having their
	high (0x80) bit ON rather than OFF.  This of course makes
	transporting files to other systems much more difficult, not
	to mention talking to true 8-bit devices.  Folklore had it
	that PRIME adopted the reversed-8-bit convention in order to
	save 25 cents per {serial line} per machine; PRIME old-timers,
	on the other hand, claim they inherited the disease from
	Honeywell via customer NASA's compatibility requirements and
	struggled heroically to cure it.  Whoever was responsible,
	this probably qualifies as one of the most cretinous design
	tradeoffs ever made.  See {meta bit}.  A few other machines
	have exhibited similar brain damage.

DRECNET

	/drek'net/ [Yiddish/German "dreck", meaning filth] Deliberate
	distortion of DECNET, a networking protocol used in the {VMS}
	community.  So called because DEC helped write the Ethernet
	specification and then (either stupidly or as a malignant
	customer-control tactic) violated that spec in the design of
	DRECNET in a way that made it incompatible.  See also
	{connector conspiracy}.

driver

	1. <operating system> {device driver}.

	2. <programming> The {main loop} of an event-processing
	program; the code that gets commands and dispatches them for
	execution.

	3. <tool> In the {TeX} world and the computerised typesetting
	world in general, a program that translates some
	device-independent or other common format to something a real
	device can actually understand.

drivers

	{driver}

droid

	<abuse> (From "android", SF terminology for a humanoid robot
	of essentially biological (as opposed to mechanical or
	electronic) construction).  A person (especially a low-level
	bureaucrat or service-business employee) exhibiting most of
	the following characteristics: (a) naive trust in the wisdom
	of the parent organisation or "the system"; (b) a blind-faith
	propensity to believe obvious nonsense emitted by authority
	figures (or computers!); (c) a rule-governed mentality, one
	unwilling or unable to look beyond the "letter of the law" in
	exceptional situations; (d) a paralysing fear of official
	reprimand or worse if Procedures are not followed No Matter
	What; and (e) no interest in doing anything above or beyond
	the call of a very narrowly-interpreted duty, or in particular
	in fixing that which is broken; an "It's not my job, man"
	attitude.

	Typical droid positions include supermarket checkout assistant
	and bank clerk; the syndrome is also endemic in low-level
	government employees.  The implication is that the rules and
	official procedures constitute {software} that the droid is
	executing; problems arise when the software has not been
	properly debugged.  The term "droid mentality" is also used to
	describe the mind-set behind this behaviour.

	Compare {suit}, {marketroid}.

	(27 Sep 1995)

DROOL

	<games> Dave's Recycled Object-Oriented Language.  Language
	for writing adventure games.  An updated implementation of
	AdvSys.  {multiple inheritance}, garbage collection.

	["Dave's Recycled OO Language", David Betz, Dr. Dobbs J, Oct
	1993, pp.74-78].

drool-proof paper

	<jargon> Documentation that has been obsessively {dumbed
	down}, to the point where only a {cretin} could bear to read
	it, is said to have succumbed to the "drool-proof paper
	syndrome" or to have been "written on drool-proof paper".  For
	example, this is an actual quote from {Apple Computer}'s
	LaserWriter manual: "Do not expose your LaserWriter to open
	fire or flame."

	(23 Jun 1997)

drop cable

	Wiring between a computer and its {Ethernet transceiver}.
	Maximum length if full-spec is 47m.

drop-ins

	[analogy with {drop-outs}] Spurious characters appearing on a
	terminal or console as a result of {line noise} or a system
	malfunction of some sort.  Especially used when these are
	interspersed with one's own typed input.

drop on the floor

	To react to an error condition by silently discarding messages
	or other valuable data.  "The gateway ran out of memory, so it
	just started dropping packets on the floor."  Also frequently
	used of faulty mail and netnews relay sites that lose
	messages.  See also {black hole}, {bit bucket}.

drop-outs

	1. A variety of "power glitch" (see {glitch}); momentary 0
	voltage on the electrical mains.

	2. Missing characters in typed input due to software
	malfunction or system saturation (one cause of such behaviour
	under {Unix} when a bad connection to a modem swamps the
	processor with spurious character interrupts; see {screaming
	tty}).

	3. Mental glitches; used as a way of describing those
	occasions when the mind just seems to shut down for a couple
	of beats.  See {glitch}, {fried}.

DRUCO I

	Early system on IBM 650.  Listed in CACM 2(5):16 (May 1959).

drugged

	(Or "on drugs") 1. Conspicuously stupid, heading toward
	{brain-damaged}.  Often accompanied by a pantomime of toking a
	joint.

	2. Of hardware, very slow relative to normal performance.

drum

	Ancient slow, cylindrical magnetic media that were once
	state-of-the-art storage devices.  Under {BSD} {Unix} the disk
	partition used for swapping is still called "/dev/drum"; this
	has led to considerable humour and not a few straight-faced
	but utterly bogus "explanations" getting foisted on {newbie}s.

	See also "{The Story of Mel}".

	(22 Dec 1994)

drunk mouse syndrome

	(Also "mouse on drugs") A malady exhibited by the mouse
	pointing device of some computers.  The typical symptom is for
	the mouse cursor on the screen to move in random directions
	and not in sync with the motion of the actual mouse.  Can
	usually be corrected by unplugging the mouse and plugging it
	back again.  Another recommended fix for optical mice is to
	rotate your {mouse mat} 90 degrees.

	At {Xerox PARC} in the 1970s, most people kept a can of copier
	cleaner (isopropyl alcohol) at their desks.  When the steel
	ball on the mouse had picked up enough {cruft} to be
	unreliable, the mouse was doused in cleaner, which restored it
	for a while.  However, this operation left a fine residue that
	accelerated the accumulation of cruft, so the dousings became
	more and more frequent.  Finally, the mouse was declared
	"alcoholic" and sent to the clinic to be dried out in a CFC
	ultrasonic bath.

dry run

	<programming> To execute a program by hand, writing values of
	variables and other run-time data on paper, in order to check
	its operation or to track down a {bug}.  A dry run is an
	extreme form of {desk check} and is practical only for fairly
	simple programs and small amounts of data.

	(13 May 1996)

DS0

	<communications> The zeroth {DS level}, a {framing
	specification} for digital signals in the North American
	digital transmission hierarchy.  A DS0 signal has a
	transmission rate of 64 kilobits per second.

	(12 Jan 1995)

DS1

	<communications> A {DS level} and {framing specification} for
	synchronous digital streams, over circuits in the North
	American digital transmission hierarchy, at the {T1}
	transmission rate of 1544000 bits per second ({baud}).  DS1 is
	a {bipolar}, 50% {duty cycle} signal.  A logical zero is
	represented by no pulse, a one by a pulse.

	In the US a DS1 "frame" is composed of 24 eight bit bytes
	(commonly from 24 {DS0} sources, originally digitised
	voice-grade telephone signals), plus one {framing bit} (193
	bits).  8000 bytes per second come from each source, and thus
	8000 frames per second are transported by the DS1 signal.  The
	result is 193*8000 = 1,544,000 bits per second.

	In the original standard, the framing bits continuously
	repeated the sequence 110111001000, and such a 12-frame unit
	is called a super-frame.  In voice telephony, errors are
	acceptable (early standards allowed as much as one frame in
	six to be missing entirely), so the least significant bit in
	two of the 24 streams was used for signaling between network
	equipments.  This is called {robbed-bit signaling}.

	To promote error-free transmission, an alternative called the
	extended super-frame (ESF) of 24 frames was developed.  In
	this standard, six of the 24 framing bits provide a six bit
	{cyclic redundancy code} (CRC-6), and six provide the actual
	framing.  The other 12 form a virtual circuit of 4000 bits per
	second for use by the transmission equipment, for {call
	progress signals} such as busy, idle and ringing.  DS1 signals
	using ESF equipment are nearly error-free, because the CRC
	detects errors and allows automatic re-routing of connections.

	Compare {T-carrier systems}.

	[Kenneth Sherman, "Data Communications : a user's guide",
	third edition (1990), Reston/Prentice-Hall/Simon & Schuster].

	(30 Mar 1996)

DS1C

	<communications> A {DS level} and {framing specification} for
	digital signals in the North American digital transmission
	hierarchy.  A DS1C signal uses 48 {PCM} channels and has a
	transmission rate of 3.15 Megabits per second, twice that of
	{DS1}.

	DS1C uses two {DS1} signals combined and sent on a 3.152
	megabit per second {carrier} which allows 64 kilobits per
	second for synchronisation and {framing} using "{pulse
	stuffing}".  The channel 2 signal is logically inverted, and a
	framing bit is stuffed in two out of three code words,
	resulting in 26-bit information units.  The channels are
	interleaved and then scrambled by the addition {modulo} 2 of
	the signal with the previous bit.  Finally the bit stream is
	combined with a control bit sequence that permits the
	{demultiplexor} to function by preceding each 52 bits with one
	DS1C framing bit.  A series of 24 such 53-bit frames forms a
	1272-bit "M-frame".

	(07 Feb 1995)

DS2

	<communications> A {DS level} and {framing specification} for
	digital signals in the North American digital transmission
	hierarchy.  A DS2 signal uses 96 {PCM} channels and has a
	transmission rate of 6.31 Megabits per second, twice that of
	{DS1C}.

	(07 Feb 1995)

DS3

	<communications> The third {DS level}, a {framing
	specification} for digital signals in the North American
	digital transmission hierarchy.  A DS3 signal has a
	transmission rate of 44.736 Megabits per second.

	DS3 is used, for example, on {T3} synchronous {Integrated
	Services Digital Network} lines.

	(12 Jan 1995)

DSA

	{Directory System Agent}

DSE

	{Data Structure Editor}

DSEE

	{Domain Software Engineering Environment}

DSI

	{Delivered Source Instruction}

DSL

	1. <communications> {Digital Subscriber Line}.

	2. <language> {Digital Simulation Language}.

	3. <language> {Denotational Semantics Language}.

	(13 Oct 1996)

DS level

	<communications> (Data Service level) A generic measure of
	data service rates that can be used to classify the user
	access rates for various point-to-point {WAN} technologies or
	standards (e.g. {X.25}, {SMDS}, {ISDN}, {ATM}, {PDH}).  They
	tend to mark off the low and high ends of access rates for
	these technologies.

	 DS0      64 Kbps
	 DS1   1.544 Mbps
	 DS1C  3.15  Mbps
	 DS2   6.31  Mbps
	 DS3  44.736 Mbps

	(where K and M signify multiplication by 1000 and 1000000,
	rather than powers of two).

	Japan uses the US standards for DS0 through DS2 but Japanese
	DS5 has roughly the circuit capacity of US DS4, while the
	European standards are entirely different.  In the US all of
	the transmission rates are integral multiples of 8000 bits per
	second but rates above DS1 are not necessarily integral
	multiples of 1,544,000 bps.

	See {DS0}, {DS1}, {DS1C}, {DS2}, {DS3}.

	(08 Feb 1995)

DSM

	1. Data Structure Manager.

	An {object-oriented} language by J.E. Rumbaugh and M.E. Loomis
	of {GE}, similar to {C++}.  It is used in implementation of
	{CAD}/{CAE} software.  DSM is written in DSM and {C} and
	produces {C} as output.

	["DSM: An Object-Relationship Modeling Language", A. Shah et
	al, SIGPLAN Notices 24(10):191-202 (OOPSLA '89) (Oct 1989)].

	2. {DIGITAL Standard MUMPS}.

	(10 Jan 1995)

DSN

	{Digital Switched Network}

DSP

	{digital signal processing}

DSP32 Assembly Language

	A high-level assembly language for the DSP32
	Programmable DSP Chip.

DSP56000

	A {digital signal processing} chip from {Motorola}.

	An assembler called {a56} and a port of {gcc} called
	{dsp56k-gcc} are available.

DSP56001

	A {digital signal processing} chip from {Motorola}.

	An assembler called {a56} is available.

dsp56165-gcc

	A port of {gcc} version 1.40 to the {Motorola} {DSP56156} and
	{DSP56000} by Andrew Sterian <asterian@eecs.umich.edu>.

	{alt.sources}

dsp56k-gcc

	{Motorola}'s port of {gcc} version 1.37.1 to the {Motorola}
	{DSP56000}.

	{Finland
	(ftp://nic.funet.fi/pub/ham/dsp/dsp56k-tools/dsp56k-gcc.tar.Z)}.
	{Australia
	(ftp://evans.ee.adfa.oz.au/pub/micros/56k/g56k.tar.Z)}.

DSP/C

	Numerical extension to C, for DSP applications.

	["DSP/C: A Standard High Level Language for DSP and Numeric
	Processing", K. Leary & W.  Waddington, Proc ICASSP 90, Apr
	1990, pp.1065-1068].

DSPL

	Digital Signal Processing Language.

	A {C}-derived {DSP} language.

	["The Programming Language DSPL", A. Schwarte & H. Hanselmann,
	Proc PCIM 90, 1990].

	(01 Dec 1994)

DSS

	1. {Decision Support Systems}.

	2. {Digital Signature Standard}.

	(16 Nov 1995)

DSSSL

	{Document Style Semantics and Specification Language}

DSU

	1. <communications> {Digital Service Unit}.

	2. {Disk Subsystem Unit} ({Artecon}).

	3. <humour> {Dwarf Storage Unit}.

	(01 Dec 1996)

DSVD

	{Digital Simultaneous Voice and Data}

DTALGOL

	Decision Table ALGOL.

	An {ALGOL} superset from {Victoria University}, Wellington
	that added {decision table}s and runs on {Burroughs Large
	System}.

	(02 Feb 1995)

DTD

	{Document Type Definition}

DTE

	{Data Terminal Equipment}

DT&E

	{Developmental Test and Evaluation}

DTLS

	{Descriptive Top-Level Specification}

DTMF

	{Dual Tone Multi Frequency}

DTP

	{desktop publishing}

DTS

	{Distributed Time Service}

DTSS

	<operating system> The first commercial {time-sharing} system,
	created by {Dartmouth College} and sold by {General Electric}
	around 1967.

	GE's Information Service Divsion (ISD) marketed DTSS which was
	running on a system called {GE-265} (a combination of the
	{front-end processor} the {Datanet-30} and the {GE-235}).

	DTSS was ported (and significantly improved by GE ISD around
	1965-1966 on a combination of DN-30 and {GE-635}).  This
	proprietary system, called Mk-II, later improved by GE and
	renamed Mk-III, is still working today (1997) as part of the
	GE service bureau that also includes {IBM} and {Unix}
	computers.

	(16 Sep 1997)

D-type

	1. <hardware> A type of computer peripheral connector so named
	because one side is shorter (with one less pin) than the other
	giving a (squarish) "D" shape.  The connectors have two rows
	of pins (or holes).  Common types are 25-way (13+12 pins) and
	9-way (5+4 pins).  They are often used for serial lines,
	especially {RS-232}.

	(05 Jan 1995)

	2. {D-type flip-flop}.

D-type flip-flop

	<hardware> A digital logic device that stores the status of
	its "D" input whenever its clock input makes a certain
	transition (low to high or high to low).  The output, "Q",
	shows the currently stored value.

	Compare {J-K flip-flop}.

	(28 Mar 1995)

DUA

	{Directory User Agent}

dual

	<mathematics> Every field of mathematics has a different
	meaning of dual.  Loosely, where there is some binary symmetry
	of a theory, the image of what you look at normally under this
	symmetry is referred to as the dual of your normal things.

	In linear algebra for example, for any {vector space} V, over
	a {field}, F, the vector space of {linear maps} from V to F is
	known as the dual of V.  It can be shown that if V is
	finite-dimensional, V and its dual are {isomorphic} (though no
	isomorphism between them is any more natural than any other).

	There is a natural {embedding} of any vector space in the dual
	of its dual:

	    V -> V'': v -> (V': w -> wv : F)

	(x' is normally written as x with a horizontal bar above it).
	I.e. v'' is the linear map, from V' to F, which maps any w to
	the scalar obtained by applying w to v.  In short, this
	double-dual mapping simply exchanges the roles of function and
	argument.

	It is conventional, when talking about vectors in V, to refer
	to the members of V' as covectors.

	(16 Mar 1997)

DUAL-607

	An early system on the {IBM 701}.

	[CACM 2(5):16 (May 1959)].

	(13 Dec 1994)

dual-attached

	The form of {FDDI} interface where a device is connected to
	both FDDI token-passing rings, so that uninterrupted operation
	continues in the event of a failure of either of the rings.
	All connections to the main {FDDI} rings are dual-attached.
	Typically, a small number of critical infrastructure devices
	such as {router}s and {concentrator}s are dual-attached,
	whereas {host} computers are normally single-attached or
	{dual-homed} to a router or concentrator.

	For example, a ring could be formed between a single router
	and two concentrators (all dual-attached) then all other
	components that need to be fault-tolerant (typically file
	servers) can be {dual-homed} to both concentrators.

	(13 Dec 1994)

dual-homed

	<networking> A kind of connection to a {FDDI} network where a
	{host} is simultaneously connected to two separate devices in
	the same FDDI ring.  One of the connections becomes active
	while the other one is automatically blocked.  If the first
	connection fails, the backup link takes over with no
	perceptible delay.

	A dual-homed device can tolerate a fault in one of its "homes"
	whereas a {dual-attached} device can tolerate a fault in one
	of the rings.

	(13 Dec 1994)

Dual In-Line

	<hardware> {Dual In-Line Package}.

Dual In-line Memory Module

	<storage> Small circuit boards carrying memory {integrated
	circuits}, with signal and power pins on both sides of the
	board, in contrast to {single-in-line memory modules} (SIMM).

	The individual gold or lead connectors (pins) on SIMMs,
	although they are on both sides of the chip, are connected to
	the same memory chip, while on a DIMM, the connections on each
	side of the module connect to different chips.  This allows
	for a wider data path, as more modules can be accessed at
	once.  DIMM pins are arranged in a zigzag design to allow PCB
	tracks to pass between them.

	The 8-byte DIMM format with dual-sided contacts can
	accommodate 4- and 16-megabit {dynamic RAM} chips, and is
	predicted to handle 64- and 256-Mbit devices.  The 8-byte DIMM
	will hold up to 32 megabytes of memory using 16-Mbit DRAMs,
	but with the 256-Mbit future-generation DRAM, it will be able
	to hold a 64-Mx64 configuration.  Another variation, the
	72-pin {SO-DIMM}, is designed to connect directly to 32 bit
	data buses, and is intended for use in memory-expansion
	applications in {notebook computers}.

	A Dual in-line memory module (DIMM), as opposed to SIMMs (used
	by the majority of the PC industry) allows for a 128-bit data
	path by interleaving memory on alternating memory access
	cycles.  SIMMs on the other hand, have a 64-bit data path.
	Suppliers are unanimous in their belief that the DIMM will
	eventually replace the SIMM as the market's preferred memory
	module.

	(28 Jan 1996)

Dual In-Line Package

	<hardware> (DIL, DIP) The most common type of package for
	small and medium scale {integrated circuit}s, with up to about
	48 pins.  The pins hang vertically from the two long edges of
	the rectangular package, spaced at intervals of 0.1 inch.  The
	pins fit through holes in the circuit board to which they are
	soldered or into a socket.

	[More than 48 pins?]

	(06 Feb 1995)

dual ported

	A term used to describe memory {integrated circuit}s which can
	be accessed simultaneously via two independent address and
	data busses.

	Dual ported memory is often used in {video display} hardware,
	especially in conjunction with {Video Random Access Memory}
	(VRAM).  The two ports allow the video display hardware to
	read memory to display the contents on screen at the same time
	as the CPU writes data to other areas of the same memory.  In
	single-ported memory these two processes cannot occur
	simultanteously, the CPU must wait, thus resulting in slower
	access times.  {Cycle stealing} is one technique used to avoid
	this in single-ported {video memory}.

	(12 Jan 1995)

Dual Tone Multi Frequency

	<communications> (DTMF, or "touch-tone") A method used by the
	telephone system to communicate the keys pressed when
	dialling.  Pressing a key on the phone's keypad generates two
	simultaneous tones, one for the row and one for the column.
	These are decoded by the exchange to determine which key was
	pressed.

	(28 Mar 1995)

DUEL

	A front end to {gdb} by Michael Golan <mg@cs.princeton.edu>.
	DUEL implements a language designed for debugging {C}
	programs.  It mainly features efficient ways to select and
	display data items.  It is normally linked into the gdb
	executable, but could stand alone.  It interprets a subset of
	{C} in addition to its own language.

	Version 1.10.

	{(ftp://ftp.cs.princeton.edu/duel/)}

	(20 Mar 1993)

Duff's device

	The most dramatic use yet seen of {fall through} in {C},
	invented by Tom Duff when he was at Lucasfilm.  Trying to
	{bum} all the instructions he could out of an inner loop that
	copied data serially onto an output port, he decided to unroll
	it.  He then realised that the unrolled version could be
	implemented by *interlacing* the structures of a switch and a
	loop:

	  register n = (count + 7) / 8;      /* count > 0 assumed */

	  switch (count % 8)
	  {
	  case 0:        do {  *to = *from++;
	  case 7:              *to = *from++;
	  case 6:              *to = *from++;
	  case 5:              *to = *from++;
	  case 4:              *to = *from++;
	  case 3:              *to = *from++;
	  case 2:              *to = *from++;
	  case 1:              *to = *from++;
	                     } while (--n > 0);
	  }

	Shocking though it appears to all who encounter it for the
	first time, the device is actually perfectly valid, legal C.
	C's default {fall through} in case statements has long been
	its most controversial single feature; Duff observed that
	"This code forms some sort of argument in that debate, but I'm
	not sure whether it's for or against."

	[For maximal obscurity, the outermost pair of braces above
	could be actually be removed - GLS]

dumbed down

	<jargon> Simplified, with a strong connotation of
	*over*simplified.  Often, a {marketroid} will insist that the
	interfaces and documentation of software be dumbed down after
	the designer has burned untold gallons of midnight oil making
	it smart.  This creates friction.

	See {user-friendly}.

	(14 Apr 1995)

dumb terminal

	<hardware> A type of {terminal} that consists of a keyboard
	and a display screen that can be used to enter and transmit
	data to, or display data from, a computer to which it is
	connected.  A dumb terminal, in contrast to an {intelligent
	terminal}, has no independent processing capability or
	{auxiliary storage} and thus cannot function as a stand-alone
	device.

	The dumbest kind of terminal is a {glass tty}.  The next step
	up has a minimally {addressable cursor} but no on-screen
	editing or other features normally supported by an
	{intelligent terminal}.

	Once upon a time, when glass ttys were common and addressable
	cursors were something special, what is now called a dumb
	terminal could pass for a smart terminal.

	[Examples?]

	(14 Apr 1995)

dump

	<operating system> 1. An undigested and voluminous mass of
	information about a problem or the state of a system,
	especially one routed to the slowest available output device
	(compare {core dump}), and most especially one consisting of
	{hexadecimal} or {octal} {runes} describing the byte-by-byte
	state of memory, mass storage, or some file.  In {elder days},
	debugging was generally done by "groveling over" a dump (see
	{grovel}); increasing use of high-level languages and
	interactive debuggers has made such tedium uncommon, and the
	term "dump" now has a faintly archaic flavour.

	2. A {backup}.  This usage is typical only at large
	{time-sharing} installations.

	{Unix manual page}: dump(1).

	(01 Dec 1994)

dumpster diving

	/dump'-ster di:'-ving/ 1. The practice of sifting refuse from
	an office or technical installation to extract confidential
	data, especially security-compromising information ("dumpster"
	is an Americanism for what is elsewhere called a "skip").
	Back in AT&T's monopoly days, before paper shredders became
	common office equipment, phone phreaks (see {phreaking}) used
	to organise regular dumpster runs against phone company plants
	and offices.  Discarded and damaged copies of AT&T internal
	manuals taught them much.  The technique is still rumored to
	be a favourite of crackers operating against careless targets.

	2. The practice of raiding the dumpsters behind buildings
	where producers and/or consumers of high-tech equipment are
	located, with the expectation (usually justified) of finding
	discarded but still-valuable equipment to be nursed back to
	health in some hacker's den.  Experienced dumpster-divers not
	infrequently accumulate basements full of moldering (but still
	potentially useful) {cruft}.

dup killer

	/d[y]oop kill'r/ Software that is supposed to detect and
	delete duplicates of a message that may have reached the
	{FidoNet} system via different routes.

	See also {dup loop}.

	(02 Feb 1995)

duplex

	<communications> A half-duplex communication channel can, at
	any given time, carry data in either one direction or the
	other, but not both.  A full-duplex channel can carry data in
	both directions at once.  A {simplex} channel can only ever
	carry data in one direction.

	Early use of the term "duplex" arose in wireless, telegraph,
	and telephone communications, where "duplex" circuits between
	communicating terminals were capable of transmission in both
	directions, and "simplex" indicated transmission from a sender
	to a reciever, or broadcast to several potential receivers.

	In communications between computers or computing processes,
	particularly those involving human keyboarding and/or reading,
	duplex came to mean the re-transmission of a keyboard
	character to the output display.  Early input device such as
	the Teletype {ASR-33} {teleprinter}, being descended from the
	electric typewriter, print all input characters as they are
	typed.  In contrast, the {video terminal}s that have replaced
	them require that, as well as the character be transmitted to
	the receiver, it should also be displayed on the screen
	("{echo}ed").  The echo can be effected locally, but this can
	confuse the operator because characters continue to appear on
	the screen, even when the communication circuit has failed.

	Additionally, if the echo of the character was effected by the
	remote (receiving) process, the operator could see and correct
	not only typing errors, but also transmission errors.  This
	crude but effective mechanism was called, somewhat
	misleadingly, "full duplex", and the echoing of characters by
	the sending process was called half duplex.  The terms "remote
	echo" and "local echo" are now more common.  Nearly all
	communications circuits used by computers are two-way, so the
	distinction between simplex and duplex is seldom made.

	(12 Apr 1995)

Duplex High Speed Data

	(DHSD) A term which describes a {full-duplex} channel that can
	carry 64 kilobits per second.

	This is the kind of service provided by an Inmarsat-B type
	portable earth station or a {leased line} (not {ISDN}).

	(02 Feb 1995)

dup loop

	/d[y]oop loop/ (also "dupe loop") [FidoNet] An infinite stream
	of duplicated, near-identical messages on a FidoNet {echo},
	the only difference being unique or mangled identification
	information applied by a faulty or incorrectly configured
	system or network gateway, thus rendering {dup killer}s
	ineffective.  If such a duplicate message eventually reaches a
	system through which it has already passed (with the original
	identification information), all systems passed on the way
	back to that system are said to be involved in a {dup loop}.

Durra

	Description language for coarse-grained concurrency on
	heterogeneous processors.  "Durra: A Task-level Description
	Language", M.R.  Barbacci et al, CMU/SEI-86-TR-3, CMU 1986.

dusty deck

	Old software (especially applications) which one is obliged to
	remain compatible with, or to maintain.  {DP} types call this
	"legacy code", a term hackers consider smarmy and excessively
	reverent.  The term implies that the software in question is a
	holdover from card-punch days.  Used especially when referring
	to old scientific and {number crunching} software, much of
	which was written in FORTRAN and very poorly documented but is
	believed to be too expensive to replace.  See {fossil};
	compare {crawling horror}.

DV cartridge

	<games> (Digital Video?)  A plug-in circuit cartridge required
	by some games consoles in order to play {MPEG} video material.

	(02 Nov 1994)

DVD

	{Digital Video Disc}

DVD-R

	{Digital Video Disc}

DVD-ROM

	{Digital Video Disc}

DVI

	<file format> Device independent file format.  A dvi file
	containing a description of a formatted document is the usual
	output of {TeX}.  A number of utiltiies exist to view and
	print DVI files on various systems and devices.

	(17 Nov 1996)

Dvorak

	<hardware> A configuration of (computer) keyboard keys
	arranged to increase the speed and ease of typing over the
	normal {qwerty} layout; the most common characters (for
	English) have been put on the home row.

	The standard {Dvorak International
	(http://www.dvorakint.org/)} layout is:

	 `~  1!  2@  3#  4%  5^     6^  7&  8*  9(  0)  [\{  ]\}  \\|
	     '"  ,<  .>  p   y      f   g   c   r   l   /?  +=
	     a   o   e   u   i      d   h   t   n   s   -_
	     ;:  q   j   k   x      b   m   w   v   z

	[Do other Dvorak-like layout standards exist for other
	languages?]

	(15 Jan 1998)

Dwarf Storage Unit

	<humour> (DSU) An {IBM} term for a cupboard.

	(24 Jun 1996)

dweeb

	An even lower form of life than the {spod}, found in much the
	same habitat as the former.  though more prevailent on {talker
	system}s.  Unlike spods, upon receiving the desired response
	to the question "Are you male or female?", dweebs will then
	engage upon a detailed description of themselves and how
	wonderful they are, often in the hopes of truly impressing the
	other with their "charm" and "wit".  Nearly all dweebs are
	male, but very few actually live up to the image that they
	present.  Dweebs, unfortunately, are often the cause of
	ill-will, and may well bring a bad reputation to the system in
	question.  They are often, however, easy to wind up and can be
	the source of great mirth to the seasoned user.

dwg

	<file name extension> The file name extension for {drawing}
	files.

	[From which program(s)?]

	(26 Jan 1997)

DWIM

	/dwim/ [acronym, "Do What I Mean" (not what I say)] 1. Able to
	guess, sometimes even correctly, the result intended when
	bogus input was provided.

	2. The BBNLISP/INTERLISP function that attempted to accomplish
	this feat by correcting many of the more common errors.  See
	{hairy}.

	3. Occasionally, an interjection hurled at a balky computer,
	especially when one senses one might be tripping over
	legalisms (see {legalese}).

	Warren Teitelman originally wrote DWIM to fix his typos and
	spelling errors, so it was somewhat idiosyncratic to his
	style, and would often make hash of anyone else's typos if
	they were stylistically different.  Some victims of DWIM thus
	claimed that the acronym stood for "Damn Warren's Infernal
	Machine!'.

	In one notorious incident, Warren added a DWIM feature to the
	command interpreter used at {Xerox PARC}.  One day another
	hacker there typed "delete *$" to free up some disk space.
	(The editor there named backup files by appending "$" to the
	original file name, so he was trying to delete any backup
	files left over from old editing sessions.)  It happened that
	there weren't any editor backup files, so DWIM helpfully
	reported "*$ not found, assuming you meant 'delete *'".  It
	then started to delete all the files on the disk!  The hacker
	managed to stop it with a {Vulcan nerve pinch} after only a
	half dozen or so files were lost.

	The disgruntled victim later said he had been sorely tempted
	to go to Warren's office, tie Warren down in his chair in
	front of his workstation, and then type "delete *$" twice.

	DWIM is often suggested in jest as a desired feature for a
	complex program; it is also occasionally described as the
	single instruction the ideal computer would have.  Back when
	proofs of program correctness were in vogue, there were also
	jokes about "DWIMC" (Do What I Mean, Correctly).  A related
	term, more often seen as a verb, is DTRT (Do The Right Thing);
	see {Right Thing}.

DX4

	{Intel DX4}

DXF

	{Drawing Exchange Format}

DYANA

	{DYnamics ANAlyzer}.

Dylan

	<language> DYnamic LANguage.

	A simple {object-oriented} {Lisp} dialect, most closely
	resembling {CLOS} and {Scheme}, developed by Advanced
	Technology Group East at {Apple Computer}.

	See also {Marlais}.

	{Compiler implemented in Scheme
	(ftp://crl.dec.com/pub/DEC/Thomas)}.

	E-mail: <dylan-manual-request@cambridge.apple.com>.

	Mailing list: <info-thomas@crl.dec.com>.

	["Dylan, an Object-Oriented Dynamic Language", Apple 1992].

	(19 Apr 1995)

Dylperl

	A {dynamic linking} package for {Perl} by Roberto Salama
	<rs@fi.gs.com>.  Dynamically loaded functions are accessed as
	if they were user-defined functions.  This code is based on
	Oliver Sharp's May 1993 article in Dr. Dobbs Journal ("Dynamic
	Linking under Berkeley Unix").

	Posted to {news:comp.lang.perl}, 11 Aug 1993, article
	<CBM3Bo.Lpw@fi.gs.com>.

	(11 Aug 1993)

dynamic adaptive routing

	Automatic re{routing} of traffic based on analysis of current
	{network} conditions.  This does not include routing decisions
	based on predefined information.

	(30 Jan 1995)

Dynamic Address Translation

	<architecture> (DAT) Conversion of a {virtual address} into a
	{physical address}, as performed by a {memory management unit}
	and an {operating system} which supports {virtual memory}.

	(30 Jan 1995)

Dynamically Linked Library

	<library> (DLL) A {library} which is linked to {application
	programs} when they are loaded or run rather than as the final
	phase of {compilation}.  This means that the same block of
	library code can be shared between several {tasks} rather than
	each task containing copies of the routines it uses.  The
	executable is compiled with a library of "{stubs}" which allow
	{link errors} to be detected at {compile-time}.  Then, at
	{run-time}, either the system {loader} or the task's entry
	code must arrange for library calls to be patched with the
	addresses of the real shared library routines, possibly via a
	{jump table}.

	The alternative is to make library calls part of the
	{operating system} {kernel} and enter them via some kind of
	{trap} instruction.  This is generally less efficient than an
	ordinary {subroutine} call.  It is important to ensure that
	the version of a dynamically linked library is compatible with
	what the executable expects.

	Examples of operating systems using dynamic linking are
	{SunOS}, {Microsoft Windows} and {RISC OS} on the {Acorn}
	{Archimedes}.

	(12 Dec 1995)

dynamic analysis

	<programming> Evaluation of a program based on its execution.
	Dynamic analysis relies on executing a piece of software with
	selected test data.

	(13 May 1996)

dynamic binding

	The property of {object-oriented programming} languages where
	the code executed to perform a given operation is determined
	at run-time from the {class} of the operand(s) (the receiver
	of the message).  There may be several different classes of
	objects which can receive a given message.  An expression may
	denote an object which may have more than one possible class
	and that class can only be determined at run-time.  New
	classes may be created that can receive a particular message,
	without changing (or recompiling) the code which sends the
	message.  An class may be created that can receive any set of
	existing messages.

	{C++} implements dynamic binding using "{virtual member
	function}s".

	One important reason for having dynamic binding is that it
	provides a mechanism for selecting between alternatives which
	is arguably more robust than explicit selection by
	conditionals or {pattern matching}.  When a new {subclass} is
	added, or an existing subclass changes, the necessary
	modifications are localised: you don't have incomplete
	conditionals and broken patterns scattered all over the
	program.

	See {overloading}.

Dynamic Data Exchange

	<language> (DDE, originally Dynamic Data Linking, DDL) A
	{Microsoft Windows} 3 {hotlink} {protocol} that allows
	{application programs} to communicate using a {client-server}
	model.  Whenever the server (or "publisher") modifies part of
	a document which is being shared via DDE, one or more clients
	("subscribers") are informed and include the modification in
	the copy of the data on which they are working.

	(05 Jun 1997)

Dynamic Data Linking

	{Dynamic Data Exchange}

Dynamic Execution

	<processor> A combination of techniques - {multiple branch
	prediction}, {data flow analysis} and {speculative execution}.
	{Intel} implemented Dynamic Execution in the {P6} after
	analysing the execution of billions of lines of code.

	(05 May 1995)

Dynamic Host Configuration Protocol

	(DHCP) A {protocol} introduced by {Microsoft} on their {NT
	server} with version 3.5 in late 1994.  This protocol provides
	a means to dynamically allocate {IP address}es to {IBM PC}s
	running on a {Microsoft Windows} {local area network}.  The
	system administrator assigns a range of IP addresses to DHCP
	and each client PC on the LAN has its {TCP/IP} software
	configured to request an IP address from the DHCP server.  The
	request and grant process uses a lease concept with a
	controllable time period.  More information can be found in
	the Microsoft documentation on NT Server.

	Compare {Reverse Address Resolution Protocol}.

	(12 Jan 1995)

dynamic link

	<compiler> A pointer from an {activation record} to the
	{activation record} for the {scope} from which the current
	scope was called at {run-time}.  This is used in a {statically
	scoped} language to restore the {environment pointer} on exit
	from a scope.  To access a {non-local variable} in a
	{dynamically scoped} language, dynamic links are followed
	until a binding for the given variable name is found.

	(07 Mar 1995)

Dynamic Object-Oriented Requirements System

	<programming, tool, product> (DOORS) A tool from {Quality
	Systems & Software Ltd.} for handling all kinds of
	{requirements} (in fact, any information at all) as modules
	containing trees of text objects, qualified by an arbitrary
	number of user-defined attributes, and cross-linked by
	directional links.

dynamic RAM

	{dynamic random access memory}

dynamic random access memory

	<storage> (DRAM) A type of {semiconductor} memory in which the
	information is stored in {capacitors} on a {MOS} {integrated
	circuit}.  Typically each {bit} is stored as an amount of
	electrical charge in a storage cell consisting of a capacitor
	and a {transistor}.  Due to leakage the capacitor discharges
	gradually and the memory cell loses the information.
	Therefore, to preserve the information, the memory has to be
	refreshed periodically.  Despite this inconvenience, the DRAM
	is a very popular memory technology because of its high
	density and consequent low price.

	The first commercially available DRAM chip was the {Intel
	1103}, introduced in 1970.

	The early DRAM chips up to a 16k x 1 (16384 locations of one
	bit each) model needed 3 supply voltages (+5V, -5V and +12V).
	Beginning with the 64 kilobit chips, {charge pumps} were
	included on-chip to create the necessary supply voltages out
	of a single +5V supply.  This was necessary to fit the device
	into a 16-pin {DIL} package, which was the preferred package
	at the time, and also made them easier to use.

	To reduce the pin count, thereby helping miniaturization,
	DRAMs generally had a single data line which meant that a
	computer with an N bit wide {data bus} needed a "bank" of (at
	least) N DRAM chips.  In a bank, the address and control
	signals of all chips were common and the data line of each
	chip was connected to one of the data bus lines.

	Beginning with the 256 kilobit DRAM, a tendency towards
	{surface mount} packaging arose and DRAMs with more than one
	data line appeared (e.g. 64k x 4), reducing the number of
	chips per bank.  This trend has continued and DRAM chips with
	up to 36 data lines are available today.  Furthermore,
	together with surface mount packages, memory manufacturers
	began to offer memory modules, where a bank of memory chips
	was preassembled on a little {printed circuit} board (SIP =
	Single Inline Pin Module, SIMM = Single Inline Memory Module,
	DIMM = Dual Inline Memory Module).  Today, this is the
	preferred way to buy memory for {workstations} and {personal
	computers}.

	DRAM bit cells are arranged on a chip in a grid of rows and
	columns where the number of rows and columns are usually a
	power of two.  Often, but not always, the number of rows and
	columns is the same.  A one megabit device would then have
	1024 x 1024 memory cells.  A single memory cell can be
	selected by a 10-bit row address and a 10-bit column address.

	To access a memory cell, one entire row of cells is selected
	and its contents are transferred into an on-chip buffer.  This
	discharges the storage capacitors in the bit cells.  The
	desired bits are then read or written in the buffer.  The
	(possibly altered) information is finally written back into
	the selected row, thereby refreshing all bits (recharging the
	capacitors) in the row.

	To prevent data loss, all bit cells in the memory need to be
	refreshed periodically.  This can be done by reading all rows
	in regular intervals.  Most DRAMs since 1970 have been
	specified such that one of the rows needs to be refreshed at
	least every 15.625 microseconds.  For a device with 1024 rows,
	a complete refresh of all rows would then take up to 16 ms; in
	other words, each cell is guaranteed to hold the data for 16
	ms without refresh.  Devices with more rows have accordingly
	longer retention times.

	Many varieties of DRAM exist today.  They differ in the the
	way they are interfaced to the system - the structure of the
	memory cell itself is essentially the same.

	"Traditional" DRAMs have multiplexed address lines and
	separate data inputs and outputs.  There are three control
	signals: RAS\ (row address strobe), CAS\ (column address
	strobe), and WE\ (write enable) (the backslash indicates an
	{active low} signal).  Memory access procedes as follows:
	1. The control signals initially all being inactive (high), a
	memory cycle is started with the row address applied to the
	address inputs and a falling edge of RAS\ .  This latches the
	row address and "opens" the row, transferring the data in the
	row to the buffer.  The row address can then be removed from
	the address inputs since it is latched on-chip.  2. With RAS\
	still active, the column address is applied to the address
	pins and CAS\ is made active as well.  This selects the
	desired bit or bits in the row which subsequently appear at
	the data output(s).  By additionally activating WE\ the data
	applied to the data inputs can be written into the selected
	location in the buffer.  3. Deactivating CAS\ disables the
	data input and output again.  4. Deactivating RAS\ causes the
	data in the buffer to be written back into the memory array.

	Certain timing rules must be obeyed to guarantee reliable
	operation.  1. RAS\ must remain inactivate for a while before
	the next memory cycle is started to provide sufficient time
	for the storage capacitors to charge (Precharge Time).  2. It
	takes some time from the falling edge of the RAS\ or CAS\
	signals until the data appears at the data output.  This is
	specified as the Row Access Time and the Column Access Time.
	Current DRAM's have Row Access Times of 50-100 ns and Column
	Access Times of 15-40 ns.  Speed grades usually refer to the
	former, more important figure.

	Note that the Memory Cycle Time, which is the minimum time
	from the beginning of one access to the beginning of the next,
	is longer than the Row Access Time (because of the Precharge
	Time).

	Multiplexing the address pins saves pins on the chip, but
	usually requires additional logic in the system to properly
	generate the address and control signals, not to mention
	further logic for refresh.  Therefore, DRAM chips are usually
	preferred when (because of the required memory size) the
	additional cost for the control logic is outweighed by the
	lower price.

	Based on these principles, chip designers have developed many
	varieties to improve performance or ease system integration of
	DRAMs:

	PSRAMs (Pseudo Static Random Access Memory) are essentially
	DRAMs with a built-in address {multiplexor} and refresh
	controller.  This saves some system logic and makes the device
	look like a normal {SRAM}.  This has been popular as a lower
	cost alternative for SRAM in {embedded systems}.  It is not a
	complete SRAM substitute because it is sometimes busy when
	doing self-refresh, which can be tedious.

	{Nibble Mode DRAM} can supply four successive bits on one data
	line by clocking the CAS\ line.

	{Page Mode DRAM} is a standard DRAM where any number of
	accesses to the currently open row can be made while the RAS
	signal is kept active.

	Static Column DRAM is similar to Page Mode DRAM, but to access
	different bits in the open row, only the column address needs
	to be changed while the CAS\ signal stays active.  The row
	buffer essentially behaves like SRAM.

	{Extended Data Out DRAM} (EDO DRAM) can continue to output
	data from one address while setting up a new address, for use
	in {pipelined} systems.

	DRAM used for Video RAM ({VRAM}) has an additional long
	shift register that can be loaded from the row buffer.  The
	shift register can be regarded as a second interface to the
	memory that can be operated in parallel to the normal
	interface.  This is especially useful in {frame buffers} for
	{CRT} displays.  These frame buffers generate a serial data
	stream that is sent to the CRT to modulate the electron beam.
	By using the shift register in the VRAM to generate this
	stream, the memory is available to the computer through the
	normal interface most of the time for updating the display
	data, thereby speeding up display data manipulations.

	SDRAM (Synchronous DRAM) adds a separate clock signal to the
	control signals.  It allows more complex {state machines} on
	the chip and high speed "burst" accesses that clock a series
	of successive bits out (similar to the nibble mode).

	CDRAM (Cached DRAM) adds a separate static RAM array used for
	caching.  It essentially combines main memory and {cache}
	memory in a single chip.  The cache memory controller needs to
	be added externally.

	RDRAM (Rambus DRAM) changes the system interface of DRAM
	completely.  A byte-wide bus is used for address, data and
	command transfers.  The bus operates at very high speed: 500
	million transfers per second.  The chip operates synchronously
	with a 250MHz clock.  Data is transferred at both rising and
	falling edges of the clock.  A system with signals at such
	frequencies must be very carefully designed, and the the
	signals on the Rambus Channel use nonstandard signal levels,
	making it incompatible with standard system logic.  These
	disadvantages are compensated by a very fast data transfer,
	especially for burst accesses to a block of successive
	locations.

	A number of different refresh modes can be included in some of
	the above device varieties:

	RAS\ only refresh: a row is refreshed by an ordinary read
	access without asserting CAS\.  The data output remains
	disabled.

	CAS\ before RAS\ refresh: the device has a built-in counter
	for the refresh row address.  By activating CAS\ before
	activating RAS\, this counter is selected to supply the row
	address instead of the address inputs.

	Self-Refresh: The device is able to generate refresh cycles
	internally.  No external control signal transitions other than
	those for bringing the device into self-refresh mode are
	needed to maintain data integrity.

	(11 Jul 1996)

dynamic routing

	<networking> (Or "adaptive routing") {Routing} that adjusts
	automatically to network topology or traffic changes.

	(08 May 1997)

DYnamics ANAlyzer

	<language> (DYANA) An early language specialised for
	vibrational and other dynamic physical systems.

	[Sammet 1969, p. 628].

	(20 Jul 1997)

dynamic scope

	<language> In a dynamically scoped language, e.g. most
	versions of {Lisp}, an {identifier} can be referred to, not
	only in the block where it is declared, but also in any
	function or procedure called from within that block, even if
	the called procedure is declared outside the block.

	This can be implemented as a simple stack of (identifier,
	value) pairs, accessed by searching down from the top of stack
	for the most recent instance of a given identifier.

	The opposite is {lexical scope}.  A common implementation of
	dynamic scope is {shallow binding}.

	(11 Jul 1996)

dynamic scoping

	{dynamic scope}

DYNAMO

	DYNamic MOdels.  A language for continuous {simulation}
	including economic, industrial and social systems, developed
	by Phyllis Fox and A.L. Pugh in 1959.

	Versions include DYNAMO II, DYNAMO II/370, DYNAMO II/F, DYNAMO
	III and Gaming DYNAMO.

	["DYNAMO User's Manual", A.L. Pugh, MIT Press 1976].

Dynix

	<library> A {host-based} library automation system from {Dynix
	Automated Library Systems}.  First installed in 1993, it is
	now used in over 2000 libraries worldwide.

	Dynix runs on {Unix} using the {UniVerse} post relational
	database.  The software is configurable using tables of
	parameters.  It includes modules for cataloguing, circulation,
	OPAC, acquisitions, serials, reserve book room, advance
	bookings, homebound, BiblioBus, Pac Plus for Windows, Kids
	Catalog, Dynix Online Catalog, media bookings, and community
	information.

	{(http://www.uk.dynix.com/classic.html)}

	(28 Apr 1995)

Dynix Automated Library Systems

	<company> The world's largest supplier of library automation
	systems with European offices in France, Germany, Ireland, the
	Netherlands and the UK.

	Dynix sell two library management systems - Horizon
	({client/server}) and, Dynix ({host-based}).  Both have {GUI}
	or {terminal interface}s.  Dynix also sell other products and
	services for {database} enrichment, interconnectivity, and
	on-line and {CD-ROM} databases.

	{Home (http://www.uk.dynix.com/dynix.html)}

	(28 Apr 1995)

dynner

	<data, jargon> /din'r/ 32 {bits}, by analogy with {byte}.
	Usage: rare and extremely silly.

	See also {playte}, {tayste}, {crumb}.

	(03 Dec 1997)

DYSAC

	Digital Simulated Analog Computer.

	[Sammet 1969, p. 629].

DYSTAL

	DYnamic STorage ALlocation.

	Adds lists, strings, sorting, statistics and matrix operations
	to FORTRAN.  Sammet 1969, p.388.  "DYSTAL: Dynamic Storage
	Allocation Language in FORTRAN", J.M. Sakoda, in Symbol
	Manipulation Languages and Techniques, D.G. Bobrow ed, N-H
	1971, pp.302- 311.

	(17 Mar 1995)

E

	1. An extension of {C++} with {database} types and
	{persistent} {object}s.  E is a powerful and flexible
	{procedural} programming language.  It is used in the {Exodus}
	database system.

	See also {GNU E}.

	{(ftp://ftp.cs.wisc.edu/exodus/E/)}

	["Persistence in the E Language: Issues and Implementation",
	J.E. Richardson et al, Soft Prac & Exp 19(12):1115-1150 (Dec
	1989)].

	2. Wouter van Oortmerssen <wouter@mars.let.uva.nl>.  A
	{procedural language} with {semantics} similar to {C}.  E
	features lists, low-level {polymorphism}, {exception}
	handling, quoted expressions, {pattern matching} and {object}
	{inheritance}.  {Amiga E} is a version for the {Amiga}.

E1

	<networking> A kind of {ISDN} {Primary Rate Interface} (PRI).
	Outside North America and Japan a PRI usually has 30 B
	channels and 1 D channel and an E1 interface.

	[But was *is* an E1 interface?]

	(17 Mar 1995)

EAF

	{Effort Adjustment Factor}

EAG

	{Extended Affix Grammar}

eager evaluation

	Any {evaluation strategy} where evaluation of some or all
	function arguments is started before their value is required.
	A typical example is {call-by-value}, where all arguments are
	passed evaluated.  The opposite of eager evaluation is
	{call-by-need} where evaluation of an argument is only started
	when it is required.

	The term "{speculative evaluation}" is very close in meaning
	to eager evaluation but is applied mostly to parallel
	architectures whereas eager evaluation is used of both
	sequential and parallel evaluators.

	Eager evaluation does not specify exactly when argument
	evaluation takes place - it might be done fully speculatively
	(all {redex}es in the program reduced in parallel) or may be
	done by the caller just before the function is entered.

	The term "eager evaluation" was invented by Carl Hewitt and
	Henry Baker <hbaker@netcom.com> and used in their paper ["The
	Incremental Garbage Collection of Processes", Sigplan Notices,
	Aug 1977.
	{(ftp://ftp.netcom.com/pub/hb/hbaker/Futures.html)}].  It was
	named after their "eager beaver" evaluator.

	See also {conservative evaluation}, {lenient evaluation},
	{strict evaluation}.

	(22 Dec 1994)

Eagle

	A {dBASE}-like dialect bundled with {Emerald Bay}, sold by
	{Migent} from 1986-1988, later renamed {Vulcan} when {Wayne
	Ratliff} reacquired the product.

EAPROM

	Electrically Alterable Programmable Read Only Memory.

	See also {PROM}, {EEPROM}.

	[What's the difference between EAPROM and EEPROM?]

	(12 Nov 1995)

earliest deadline first

	<operating system, algorithm> (EDF) A strategy for {CPU} or
	disk access {scheduling}.  With EDF, the task with the
	earliest deadline is always executed first.

	{Scan-EDF} is an example.

	(15 Nov 1995)

Early PL/I

	<language> (EPL) A {PL/I} subset dialect by McIlroy, Morris et
	al, the first running PL/I {compiler}.  It was used by {Bell
	Labs} and {MIT} to write {Multics}.  EPL had extensions to
	handle the segment/offset nature of {Multics} pointers.

	See also {REPL}, {TMG}.

	["EPL Reference Manual", Project MAC, April 1966].

	[Sammet 1969, p. 542].

	(15 Nov 1995)

EARN

	<networking> {European Academic and Research
	Network}.

	(15 Nov 1995)

EAROM

	Electrically Alterable Read Only Memory.

	{EEPROM}

earthquake

	(IBM) The ultimate real-world shock test for computer
	hardware.  Hackish sources at {IBM} deny the rumor that the
	San Francisco Bay Area quake of 1989 was initiated by the
	company to test quality-assurance procedures at its California
	plants.

	(22 Apr 1995)

Ease

	General purpose parallel programming language, combining the
	process constructs of CSP and the distributed data structures
	of Linda.  "Programming with Ease: Semiotic Definition of the
	Language", S.E. Zenith, <zenith-steven@yale.edu> Yale U
	TR-809, Jul 1990.

EASE II

	Early system on IBM 650.  Listed in CACM 2(5):16 (May 1959).

EASIAC

	Early system on Midac computer.  Listed in CACM 2(5):16 (May
	1959).

EAST

	A {Eureka} project developing a {software engineering}
	{platform}.

	(07 Dec 1994)

Easter egg

	<jargon> (From the custom of the Easter Egg hunt observed in
	the US and many parts of Europe)

	1. A message hidden in the {object code} of a program as a
	joke, intended to be found by persons disassembling or
	browsing the code.

	2. A message, graphic, or sound effect emitted by a program
	(or, on an {IBM PC}, the {BIOS} {ROM}) in response to some
	undocumented set of commands or keystrokes, intended as a joke
	or to display program credits.  One well-known early Easter
	egg found in a couple of {operating systems} caused them to
	respond to the command "make love" with "not war?".  Many
	{personal computers} have much more elaborate eggs hidden in
	{ROM}, including lists of the developers' names, political
	exhortations and snatches of music.  The {Tandy} Color
	Computer 3 ({CoCo}) had images of the entire development team.

	(16 May 1997)

Easter egging

	<jargon> ({IBM}) The act of replacing unrelated components
	more or less at random in hopes that a malfunction will go
	away.  Hackers consider this the normal operating mode of
	{field circus} techs and do not love them for it.

	Compare {shotgun debugging}.

	[Why is it called this?]

	(28 Feb 1995)

Eastern Washington University

	A university 20 miles southwest of Spokane, WA on the edge of
	the rolling Palouse Prairie.

	{Home (http://www.ewu.edu/)}

	Address: Cheney, Washington, USA.

	(28 Feb 1995)

EASY FOX

	An early system on the {JOHNNIAC} computer.

	[Listed in CACM 2(5):16 (May 1959)].

eat flaming death

	A construction popularised among hackers by the infamous {CPU
	Wars} comic; supposedly derive from a famously turgid line in
	a WWII-era anti-Nazi propaganda comic that ran "Eat flaming
	death, non-Aryan mongrels!" or something of the sort (however,
	it is also reported that the Firesign Theater's 1975 album "In
	The Next World, You're On Your Own" included the phrase "Eat
	flaming death, fascist media pigs"; this may have been an
	influence).  Used in humorously overblown expressions of
	hostility. "Eat flaming death, {EBCDIC} users!"

EBASIC

	A {BASIC} by Gordon Eubanks, now at {Symantec}, that led to
	{CBASIC}.

EBCDIC

	/eb's*-dik/, /eb'see"dik/, or /eb"k*-dik/ {Extended Binary
	Coded Decimal Interchange Code}.

EBCIDIC

	<spelling> Misspelling of "{EBCDIC}".

	(13 Dec 1996)

EBNF

	<language> {Extended Backus-Naur Form}.

Ebone

	A pan-European {backbone} network service.

EC++

	A preprocessor
	by Glauco Masotti <masotti@lipari.usc.edu>
	that translates Extended C++ into C++.

	{(ftp://ftp.uu.net/languages/c++/EC++.tar.Z)}

	(10 Oct 1989)

ECAP II

	Electronic Circuit Analysis Program.  Simple language for
	analysing electrical networks.  "Introduction to Computer
	Analysis: ECAP for Electronics Technicians and Engineers",
	H. Levin, P-H 1970.

Ecash

	<application> A trial form of {electronic funds transfer} over
	the {Internet} (and soon by {electronic mail}).

	The ecash software stores digital money, signed by a bank, on
	the user's local computer.  The user can spend the digital
	money at any shop accepting ecash, without the trouble of
	having to open an account there first, or having to transmit
	credit card numbers.  The shop just has to accept the money,
	and deposit it at the bank.  The security is provided by a
	{public-key} {digital signature}.

	There process involves the issuing banks who exchange real
	money for ecash, users who have and spend ecash, shops who
	accept ecash payments, and clearing banks who clear payments
	received by shops.

	At the moment, all users and shops must have an account at
	{DigiCash}'s own bank, the "First Digital Bank" at
	bank.digicash.com.  They can withdraw money from the bank, and
	convert it to ecash.  Shops can be started by any ecash user.

	{Home (http://www.digicash.com/ecash/ecash-home.html)}

	(10 Apr 1995)

ECC

	{error detection and correction}

Eccles-Jordan circuit

	{flip-flop}

Echidna

	{Constraint logic programming} embedded in an
	{object-oriented} language.  The {syntax} is an extension of
	{Edinburgh Prolog}.

	["Hierarchical Arc Consistency Applied to Numeric Processing
	in Constraint Logic Programming", G. Sidebottom et al,
	TR-91-06, CSS-IS, Simon Fraser U, and Comp Intell 8(4)
	(1992)].

	{(ftp://cs.sfu.edu/pub/ecl/papers)}

	E-mail: <expert@cs.sfu.edu>.

	(08 Dec 1994)

echo

	1. A {topic group} on {FidoNet}'s {echomail} system.

	Compare {newsgroup}.

	2. A {Unix} command that just prints its arguments.

echo cancellation

	A process which removes unwanted echoes from the signal on a
	telephone line.  Echoes are usually caused by impedance
	mismatches along an analogue line.

ECHT

	European Conference on {Hypertext}.

ECIP2

	An {Esprit} project on the definition of a specification
	language at the requirement level.

ECIS

	{European Committee for Interoperable Systems}

Eckert-Mauchly Computer Corporation

	The company which designed and built {Univac}.

	(01 Mar 1995)

ECL

	1. <hardware> {Emitter Coupled Logic}.

	2. <language> Extensible {CL}.

	Wegbreit, ca 1970.

	["The ECL Programming System", B. Wegbreit, Proc FJCC
	39:253-261, AFIPS (Fall 1971)].

	["ECL Programmer's Manual", B. Wegbreit, TR 23-74, Harvard U
	(Dec 1974)].

	(09 Nov 1994)

ECLIPSE

	A {Prolog} + {CLP} compiler from {ECRC}.

ECM

	<storage> {error correcting memory}.

	(10 Oct 1995)

ECMA

	1. {European Computer Manufacturers Association}.

	2. A subset of {ALGOL}.  [Sammet 1969, p.180].

Econet

	1. One of the IGC networks.  EcoNet serves individuals and
	organisations working for environmental preservation and
	sustainability.  Important issues covered include: global
	warming, energy policy, rainforest preservation, legislative
	activities, water quality, toxics and environmental education.

	EcoNet users can send and receive private messages, including
	fax and telex, to and from more than 18,000 international
	users on the APC networks or to millions on other networks.
	EcoNet seeks to build coalitions and partnerships with
	activist and non-profit organisations to develop the use of
	the electronic communications medium.  EcoNet provides
	subsidies and financial incentives to environmental
	organisations and committed individuals who foster the
	effectiveness of organisations through the use of electronic
	networking.  FTP/Telnet: igc.apc.org.

	2. A network produced by {Acorn Computers} Ltd. for the {BBC
	Microcomputer} and its successors.

ECOOP

	European Conference on Object-oriented Programming.

ECP

	1. {Engineering Change Proposal}.

	2. {Enhanced Capabilities Port}.

	3. {Extended Capabilities Port}.

	4. {Extended Concurrent Prolog}.

	(01 Dec 1997)

ECRC

	European Computer-Industry Research Centre GmbH

	A joint research organisation founded in 1984 on the
	initiative of three major European manufacturers: {Bull}
	(France), {ICL} (UK) and {Siemens} (Germany).  Its activities
	are intended to enhance the future competitive ability of the
	European {Information Technology} industry and thus complement
	the work of national and international bodies.

	The Centre is intended to be the breeding ground for those
	ideas, techniques and products which are essential for the
	future use of electronic information processing.  The work of
	the Centre will focus on advanced information processing
	technology for the next generation of computers.

	ECRC is an independent company, owned equally by its
	shareholders.  The formal interface between ECRC and its
	shareholders consists of two bodies: The Shareholders'
	Council, which approves the Centre's programmes and budgets
	and supervises their execution and the Scientific Advisory
	Board, which advises the Shareholders' Council in determining
	future research directions.

	There are many collaborations between ECRC and its
	shareholders' companies on specific projects (Technology
	Transfer, prospective studies etc).  The Centre is staffed by
	highly qualified scientists drawn from different countries.
	Research staff are hired directly by ECRC, as well as some who
	come on assignment from the member companies, and others
	seconded from public research agencies and universities.

	Seminars are held which bring together specialists from the
	Centre and the member companies.

	ECRC's mission is to pursue research in fundamental areas of
	computer science.  The aim is to develop the theory,
	methodologies and tools needed to build innovative computer
	applications.  ECRC contributes actively to the international
	effort that is expanding the frontiers of knowledge in
	computer science.  It plays an important role in bridging the
	gap between research and industry by striving to work at the
	highest academic level with a strong industrial focus.  ECRC
	constitutes an opportunity in Europe for the best scientists
	and offers young researchers the possibility to mature in an
	environment which exposes them to both fundamental research
	and the process of delivering the results to industry.

	ECRC plays an important role in Europe and is involved in
	several European Community initiatives.  It is regularly
	consulted by the Commission of the European Communities on
	strategic issues, such as the definition of future research
	plans, international co-operation and relationships between
	academia and industry.

	Address: ECRC GmbH, Arabellastrasse 17, D-81925 Munich,
	Germany.

	{(http://www.ecrc.de/)}

	Telephone: +49 (89) 926 99 0.  Fax: +49 (89) 926 99 170.

	(01 Dec 1994)

ECRC-Prolog

	Evidently {Prolog} with {coroutine} extensions.

	See also {SEPIA}.

	["ECRC-Prolog User's Manual Version 1.0", K. Estenfeld,
	TR-LP-08 ECRC, Feb 1986].

	(01 Dec 1994)

ECSL

	Extended CSL.

	A {discrete simulation} language, the successor to {CSL}.

	["Extended Control and Simulation Language", A.T. Clementson,
	Comp J 9(3):215-220 (1966)].

	(08 Dec 1994)

ECSP

	An extension to {CSP}, supporting dynamic communication
	channels and nested processes.

	["Static Type Checking of Interprocess Communication in ECSP",
	F. Baiardi et al, SIGPLAN Notices 19(6):290-299 (June 1984)].

	(08 Dec 1994)

ECSS II

	Extendable Computer System Simulator.

	An extension of {SIMSCRIPT II}.

	["The ECSS II Language for Simulating Computer Systems",
	D.W. Kosy, R-1895-GSA, Rand Corp].

	(08 Dec 1994)

ECSSL

	Formerly APSE.  An equation-oriented specification language
	for {continuous simulation}s.  The {compiler} outputs
	{HYTRAN}, which must be run on an analog processor.

	(08 Dec 1994)

EDA

	1. {Electronic Design Automation}.

	2. {Exploratory Data Analysis}.

	3. A product line from {Dazix}.

	(02 Oct 1995)

Eden

	A concurrent, {object-oriented}, distributed {operating
	system} and language, based on {remote procedure call}.  It
	has both {synchronous} and {asynchronous} {message passing}.

	["The Eden System: A Technical Review", G. Almes et al, IEEE
	Trans Soft Eng SE-11(1):43-59 (Jan 1985)].

EDF

	<algorithm> {earliest deadline first}.

	(12 Nov 1995)

EDI

	{Electronic Data Interchange}

EDIF

	Electronic Design Interchange Format.

	Not a programming language, but a format to simplify data
	transfer between CAD/CAE systems.  LISP-like syntax.  See also
	{Berkeley EDIF200}.

	E-mail: <edif-support@cs.man.ac.uk>
	{(ftp://edif.cs.man.ac.uk/pub/edif)}.

	["Designer's Guide to EDIF", E. Marx et al, EDN 1987."EDIF
	Electronic Design Interchange Format Version 200", ANSI/EIA
	Standard 548].

	(10 Mar 1995)

EDIFACT

	{ISO 9735}:1988

Edinburgh Multi Access System

	<operating system> (EMAS) One of the first {operating systems}
	written in a {high-level language} ({IMProved Mercury
	autocode}), apparently predating {Unix}.

	[Papers in J. {British Computer Society}].

	[More info?  Dates?]

	(07 Apr 1996)

Edinburgh Prolog

	Prolog dialect which eventually developed into the standard,
	as opposed to Marseille Prolog.  (The difference is largely
	syntax.)  Clocksin & Mellish describe Edinburgh Prolog.
	Version: C-Prolog.

	(10 Mar 1995)

Edinburgh SML

	(EdML) Implementation of the {Core} language of {SML}.
	{Byte-code interpreter} in {C}.  Ported to {Amiga}, {Atari},
	{Archimedes} and {IBM PC}.

	Version: 0.44.

	{(ftp://ftp.dcs.ed.ac.uk/pub/edml/EDML4)}

	E-mail: <lfcs@ed.ac.uk>.

	(08 Dec 1994)

Edison

	1. (Named after the American inventor Thomas Edison
	(1847-1931))

	A simplified Pascal by Per Brinch Hansen with {modules} and
	{concurrency} (cobegin/coend).

	["Edison - A Multiprocessor Language", P. Brinch Hansen, CS
	Dept, USC, Sep 1980].

	["Programming a Personal Computer", Brinch Hansen, P-H 1977].

	2. A language which adds an {OPS5}-like {rete}-based
	{production system} system to {C}.  It is implemented as a {C}
	{preprocessor}.

	["Edison, A Unix and C Friendly Rete Based Production System",
	B. Thirion, SIGPLAN Notices 27(1):75-84 (Jan 1992)].

	(08 Dec 1994)

EDL

	1. Experiment Description Language.  J.S. Jenkins.

	"A Programmable System for Acquisition and Reduction of
	Respiratory Physiological Data", J.S. Jenkins et al, Ann
	Biomed Eng, 17:93-108 (1989).

	2. Event Description Language.

	["EDL: A Basis for Distributed System Debugging Tools",
	P.C. Bates et al, in Proc Hawaii Intl Conf on Sys Sci, Jan
	1982, pp.86-93].

EDM

	{Electronic Data Management}

EdML

	{Edinburgh SML}

EDMS

	{Electronic Document Management System}

EDO DRAM

	{Extended Data Out Dynamic Random Access Memory}

EDO memory

	{Extended Data Out Dynamic Random Access Memory}

EDO RAM

	{Extended Data Out Dynamic Random Access Memory}

EDP

	{Electronic Data Processing}

EDRAM

	<storage> {Enhanced Dynamic Random Access Memory}.

	(19 Nov 1995)

EDS+

	A {database accelerator} built by {ICL} as part of the {EDS}
	project.  The machine has up to 64 nodes, each node having
	64Mb of memory, 2 {SPARC} processors and a 1Gb of disk.

	See also {PARADE}.

	(02 Nov 1994)

EDU

	Education.  The {top-level domain} used on the {Internet} for
	educational establishments in the USA (and some other
	countries).  E.g. "mit.edu".  The UK equivalent is "ac.uk",
	e.g. "doc.ic.ac.uk".

	(23 Jun 1997)

edutainment

	<application> Interactive education and entertainment services
	or software, usually supplied commercially via a cable network
	or on {CD-ROM}.

	(30 Mar 1995)

Edward Lorenz

	<person> A mathematical meteorologist who discovered the
	{Lorenz attractor} in the 1960s.

	(13 Jan 1996)

Edward Yourdon

	<person> A {software engineering} consultant, widely known as
	the developer of the "{Yourdon method}" of structured systems
	analysis and design, as well as the co-developer of the
	Coad/Yourdon method of {object-oriented analysis} and design.
	He is also the editor of three software journals - American
	Programmer, Guerrilla Programmer, and Application Development
	Strategies - that analyse software technology trends and
	products in the United States and several other countries
	around the world.

	Ed Yourdon received a B.S. in Applied Mathematics from {MIT},
	and has done graduate work at MIT and at the Polytechnic
	Institute of New York.  He has been appointed an Honorary
	Professor of Information Technology at Universidad CAECE in
	Buenos Aires, Argentina and has received numerous honors and
	awards from other universities and professional societies
	around the world.

	He has worked in the computer industry for 30 years, including
	positions with {DEC} and {General Electric}.  Earlier in his
	career, he worked on over 25 different {mainframe} computers,
	and was involved in a number of pioneering computer projects
	involving {time-sharing} and {virtual memory}.

	In 1974, he founded the consulting firm, {Yourdon, Inc.}.  He
	is currently immersed in research in new developments in
	software engineering, such as object-oriented software
	development and {system dynamics} modeling.

	Ed Yourdon is the author of over 200 technical articles; he
	has also written 19 computer books, including a novel on
	{computer crime} and a book for the general public entitled
	Nations At Risk.  His most recent books are Object-Oriented
	Systems Development (1994), Decline and Fall of the American
	Programmer (1992), Object-Oriented Design (1991), and
	Object-Oriented Analysis (1990).  Several of his books have
	been translated into Japanese, Russian, Chinese, Spanish,
	Portugese, Dutch, French, German, and other languages, and his
	articles have appeared in virtually all of the major computer
	journals.

	He is a regular keynote speaker at major computer conferences
	around the world, and serves as the conference Chairman for
	Digital Consulting's SOFTWARE WORLD conference.  He was an
	advisor to Technology Transfer's research project on software
	industry opportunities in the former Soviet Union, and a
	member of the expert advisory panel on CASE acquisition for
	the U.S. Department of Defense.

	Mr. Yourdon was born on a small planet at the edge of one of
	the distant red-shifted galaxies.  He now lives in the Center
	of the Universe (New York City) with his wife, three children,
	and nine Macintosh computers, all of which are linked together
	through an Appletalk network.

	(16 Apr 1995)

EEMA

	{European Electronic Messaging Association}

EEPROM

	{Electrically Erasable Programmable Read Only Memory}

	See also {EAPROM}.

EER

	An extended {entity-relationship model}.

E. F. Codd

	<person> The inventor of the {relational data model} of
	{databases}.

	[Name?  More?]

	(29 Nov 1995)

EFF

	{Electronic Frontier Foundation}

effective computable

	<theory> A term describing a {function} for which there is an
	{effective algorithm} that correctly calculates the function.
	The algorithm must consist of a {finite} sequence of
	instructions.

	(03 May 1996)

Effort Adjustment Factor

	<programming> (EAF) A term used in {COCOMO} to calculate a
	{cost driver attribute}'s effect on a project.  It is the
	product of the effort multipliers corresponding to each of the
	cost drivers for the project.

	(29 May 1996)

EFL

	{Extended FORTRAN Language}

EFNet

	<networking> (From "Eris-free Net", eris being
	eris.berkeley.edu).

	The dominant {Internet Relay Chat} network.

	See also {Undernet}.

	(09 Nov 1995)

Eforth

	<language> A system produced by Ting to help implementers
	produce Forths for different targets, using {assemblers}.

	(28 Jul 1996)

E-Forth

	<language> A {Forth} {interpreter} written in {Motorla 6809}
	assembly code by Lennart Benschop
	<lennart@blade.stack.urc.tue.nl>.  Posted to {Usenet}
	newsgroup {alt.sources} on 03 Nov 1993 with a {Motorola 6809}
	{assembler}.

	(03 Nov 1993)

EGA

	{Enhanced Graphics Adapter}

egosurfing

	<jargon> Scanning the {World-Wide Web}, databases, print media
	or research papers looking for the mention of your name.

	(17 Apr 1997)

EGP

	{Exterior Gateway Protocol}

egrep

	An extended version of the {Unix} command {grep}.  Egrep
	accepts extended {regular expression}s (RE) including "*"
	following multi-character REs; "+" (one or more matches); "?"
	(zero or one matches); "|" separating two REs matches either.
	REs may be bracketed with ().  Despite its additional
	complexity, egrep is usually faster that {fgrep} or {grep}.

Eh

	/A/.  Software Portability Group, U Waterloo.  A typeless
	language derived from (and similar to) B.  Provides guaranteed
	order of evaluation for side effects in expressions.  Also
	character indexing operators.

	See also {Zed}.

	["Eh Reference Manual", R.S.C. Braga, RR CS-76-45, U Waterloo,
	Nov 1976].

EHTS

	Emacs HyperText System.

	An experimental multi-user {hypertext} system from the
	{University of Aalborg}.  It consists of a text editor (based
	on {Epoch} and {GNU Emacs} and written in {elisp}) and a
	graphical {browser} (based on {XView} and written in {C})
	running under the {X Window System} and {OpenWindows}.  Both
	tools use {HyperBase} as their {database}.

	(05 Jan 1995)

EIA

	{Electronics Industry Association}

EIDE

	{Extended Integrated Drive Electronics}

Eiffel

	<language> An {object-oriented} language produced by {Bertrand
	Meyer} <bertrand@eiffel.com> in 1985.  Eiffel has {classes}
	with {multiple inheritance} and {repeated inheritance},
	{deferred class}es (like {Smalltalk}'s {abstract class}), and
	{cluster}s of classes.  Objects can have both {static type}s
	and {dynamic type}s.  The dynamic type must be a descendant of
	the static (declared) type.  {Dynamic binding} resolves
	{multiple inheritance} clashes.  It has flattened forms of
	classes, in which all of the inherited features are added at
	the same level and {generic class}es parametrised by type.

	Other features are {persistent object}s, {garbage collection},
	{exception} handling, {foreign language interface}.  Classes
	may be equipped with {assertions} (routine preconditions and
	postconditions, class {invariant}s) implementing the theory of
	"{Design by Contract}" and helping produce more reliable
	software.

	Eiffel is compiled to {C}.  It comes with libraries containing
	several hundred classes: data structures and {algorithm}s
	(EiffelBase), graphics and user interfaces (EiffelVision) and
	language analysis (EiffelLex, EiffelParse).

	The first release of Eiffel was release 1.4, introduced at the
	first {OOPSLA} in October 1986.  The language proper was first
	described in a University of California, Santa Barbara report
	dated September 1985.  The latest version is {Eiffel 3}.

	See also {Sather}, {Distributed Eiffel}, {Lace}, {shelf}.

	E-mail: <queries@eiffel.com>.

	["Eiffel: The Language", Bertrand Meyer, P-H 1992].

	(12 Nov 1995)

Eiffel 3

	<language> A version of the {Eiffel} language.

	Eiffel is available, with different libraries, from several
	sources including {Interactive Software Engineering}, USA (ISE
	Eiffel version 3.3); Sig Computer GmbH, Germany (Eiffel/S);
	and {Tower, Inc.}, Austin (Tower Eiffel).

	The language definition is administered by an open
	organisation, the Nonprofit International Consortium for
	Eiffel (NICE).  There is a standard kernel library.

	An {Eiffel source checker} and compiler {front-end} is
	available.

	(29 Dec 1995)

Eiffel source checker

	A compiler {front-end} for {Eiffel 3} by Olaf Langmack
	<langmack@inf.fu-berlin.de> and Burghardt Groeber.  It was
	generated automatically with the {Karlsruhe toolbox} for
	compiler construction according to the most recent public
	language definition.  The {parser} derives an easy-to-use
	{abstract syntax tree}, supports elementary error recovery and
	provides a precise source code indication of errors.  It
	performs a strict syntax check and analyses 4000 lines of
	source code per second on a {Sun} {SPARC} {workstation}.

	{(ftp://ftp.fu-berlin.de/pub/heron/ep.tar.Z)}

	(14 Dec 1992)

eigenvalue

	<mathematics> The factor by which a {linear transformation}
	multiplies one of its {eigenvector}s.

	(10 Apr 1995)

eigenvector

	<mathematics> A {vector} which, when acted on by a particular
	{linear transformation}, produces a scalar multiple of the
	original vector.  The scalar in question is called the
	{eigenvalue} corresponding to this eigenvector.

	It should be noted that "vector" here means "element of a
	vector space" which can include many mathematical entities.
	Ordinary vectors are elements of a vector space, and
	multiplication by a matrix is a {linear transformation} on
	them; {smooth functions} "are vectors", and many partial
	differential operators are linear transformations on the space
	of such functions; quantum-mechanical states "are vectors",
	and {observables} are linear transformations on the state
	space.

	An important theorem says, roughly, that certain linear
	transformations have enough eigenvectors that they form a
	{basis} of the whole vector states.  This is why {Fourier
	analysis} works, and why in quantum mechanics every state is a
	superposition of eigenstates of observables.

	An eigenvector is a (representative member of a) {fixed point}
	of the map on the {projective plane} induced by a {linear
	map}.

	(27 Sep 1996)

eight bit clean

	A term which describes a system that deals correctly with
	extended character sets which (unlike ASCII) use all eight
	bits of a byte.  Many programs and communications systems
	assume that all characters have codes in the range 0 to 127.
	This leaves the top bit of each byte free for use as a
	{parity} bit or some kind of flag bit.  These assumptions
	break down when the program is used in some
	non-english-speaking countries with larger alphabets.

	If a binary file is transmitted via a communications link
	which is not eight bit clean, it will be corrupted.  To combat
	this you can encode it with {uuencode} which uses only {ASCII}
	characters.  There are some links however which are not even
	"seven bit clean" and cause problems even for uuencoded data.

	(05 Jan 1995)

Eight Queens Problem

	{Eight Queens Puzzle}

Eight Queens Puzzle

	<algorithm> A puzzle in which one has to place eight queens on
	a chessboard such that no queen is attacking any other,
	i.e. no two queens occupy the same row, column or diagonal.
	One may have to produce just one such configuration or all
	possible such configurations.

	It is a common students assignment to devise a program to
	solve the Eight Queens Puzzle - presumably without using a
	{bogo-sort} {algorithm} which tried all the several billion
	possible layouts of eight pieces on a chessboard to see which
	ones meet the no-check criterion.  The puzzle may be varied
	with different number os pieces and different size boards.

	(17 May 1997)

eighty-column mind

	The sort said to be possessed by persons for whom the
	transition from {punched card} to tape was traumatic (nobody
	has dared tell them about disks yet).  It is said that these
	people, including (according to an old joke) the founder of
	{IBM}, will be buried "face down, 9-edge first" (the 9-edge
	being the bottom of the card).  This directive is inscribed on
	IBM's 1402 and 1622 card readers and is referenced in a famous
	bit of doggerel called "The Last Bug", the climactic lines of
	which are as follows:

	  He died at the console
	  Of hunger and thirst.
	  Next day he was buried,
	  Face down, 9-edge first.

	The eighty-column mind is thought by most hackers to dominate
	IBM's customer base and its thinking.

	See {fear and loathing}, {card walloper}.

	(16 Aug 1996)

EISA

	{Extended Industry-Standard Architecture}

EL1

	Extensible Language One.  An extensible language by
	B. Wegbreit of Harvard ca 1974.  EL1 is internally somewhat
	{Lisp}-like, but fully typed with {record}s and pointers.  The
	external {syntax} is {ALGOL}-like and extensible, supporting
	user-defined {data structure}s, control structures and
	operations.  The {parser} is table-driven, with a modifiable
	set of productions.  Used as the basis for the {ECL}
	{operating system}.

	["Studies in Extensible Programming Languages", B. Wegbreit,
	Garland.  Pub 1980].

el(alpha)

	Aims to be a high-level language that knows about real
	hardware, for systems programming.  "Essential Language
	el(alpha) - A Reduced Expression Set Language for Systems
	Programming", T. Watanabe et al, SIGPLAN Notices 26(1):85-98.

Elan

	["Top-down Programming with Elan", C.H.A. Koster, Ellis
	Horwood 1987].

El Camino Bignum

	<humour> /el' k*-mee'noh big'nuhm/ The road mundanely called
	El Camino Real, a road through the San Francisco peninsula
	that originally extended all the way down to Mexico City and
	many portions of which are still intact.  Navigation on the
	San Francisco peninsula is usually done relative to El Camino
	Real, which defines {logical} north and south even though it
	isn't really north-south many places.  El Camino Real runs
	right past {Stanford University}.

	The Spanish word "real" (which has two syllables: /ray-al'/)
	means "royal"; El Camino Real is "the royal road".  In the
	{FORTRAN} language, a "{real}" quantity is a number typically
	precise to seven significant digits, and a "{double
	precision}" quantity is a larger {floating-point} number,
	precise to perhaps fourteen significant digits (other
	languages have similar "real" types).

	When a {hacker} from {MIT} visited Stanford in 1976, he
	remarked what a long road El Camino Real was.  Making a pun on
	"real", he started calling it "El Camino Double Precision" -
	but when the hacker was told that the road was hundreds of
	miles long, he renamed it "El Camino Bignum", and that name
	has stuck.  (See {bignum}).

	(16 Jul 1996)

elder days

	The heroic age of hackerdom (roughly, pre-1980); the era of
	the {PDP-10}, {TECO}, {ITS} and the {ARPANET}.  This term has
	been rather consciously adopted from J. R. R. Tolkien's
	fantasy epic "The Lord of the Rings".

	Compare {Iron Age}.  See also {elvish} and {Great Worm}.

Electing a Pope

	<electronics, humour> (From the smoke signals given out when
	the guys in funny hats choose a new Pope) Causing an
	{integrated circuit} or other electronic component to emit
	smoke by passing too much current through it.

	See {magic smoke}.

	(18 Aug 1995)

Electrically Erasable Programmable Read Only Memory

	<storage> (EEPROM) A {non-volatile storage} device using a
	technique similar to the floating gates in {EPROM}s but with
	the capability to discharge the floating gate electrically.
	Usually bytes or words can be erased and reprogrammed
	individually during system operation.

	In contrast to {RAM}, writing takes much longer than reading
	and EEPROM is more expensive and less dense than RAM.  It is
	appropriate for storing small amounts of data which is changed
	infrequently, e.g. the hardware configuration of an {Acorn}
	{Archimedes}.

	(22 Apr 1995)

Electromagnetic Compatibility

	<hardware, testing> (EMC) The extent to which a piece of
	hardware will tolerate electrical interference from other
	equipment, and will interfere with other equipment.

	There are strict legal EMC requirements for the sale of any
	electrical or electronic hardware in most countries, although
	the actual standards differ.  See, for example, {EMCNet
	(http://www.emcnet.com/)}.

	See also {Electrostatic Discharge}, {Radio Frequency
	Interference}.

	(19 Dec 1997)

electromigration

	<electronics> The progressive damage done to the {silicon}
	layers of an {integrated circuit} operated at excessive
	temperature (e.g. 80 degrees Celsius).  This may occur, for
	example, of {CPU}s that are over-clocked and inadequately
	cooled.

	[What migrates?]

	(31 Aug 1997)

electron

	<electronics> A sub-atomic particle with a negative quantized
	{charge}.  A flow of electrical {current} consists of the
	unidirectional (on average) movement of many electrons.  The
	more mobile electrons are in a given material, the greater its
	electrical conductance (or equivalently, the lower its
	resistance).

	(06 Oct 1995)

electronic commerce

	<application, communications> (EC) The conducting of business
	communication and transactions over networks and through
	computers.  As most restrictively defined, electronic commerce
	is the buying and selling of goods and services, and the
	transfer of funds, through digital communications.  However EC
	also includes all inter-company and intra-company functions
	(such as marketing, finance, manufacturing, selling, and
	negotiation) that enable commerce and use {electronic mail},
	{EDI}, file transfer, fax, {video conferencing}, {workflow},
	or interaction with a remote computer.

	Electronic commerce also includes buying and selling over the
	{World-Wide Web} and the {Internet}, {electronic funds
	transfer}, {smart card}s, {digital cash} (e.g. Mondex), and all
	other ways of doing business over digital networks.

	[{Electronic Commerce Dictionary}].

	(08 Oct 1995)

Electronic Commerce Dictionary

	<publication> A lexicon of {electronic commerce} terms.  It
	includes over 900 terms and acronyms, and over 200 {web site}
	addresses.  It has entries on commerce over the {World-Wide
	Web}, {Internet} payment systems, The {National Information
	Infrastructure}, {Electronic Data Interchange}, {Electronic
	Funds Transfer}, {Public Key Cryptography}, {smart cards} and
	{digital cash}, computer and network security for commerce,
	marketing through electronic media.

	[URL?]

	(05 May 1996)

electronic data interchange

	<application, communications> (EDI) The exchange of
	standardised document forms between computer systems for
	business use.  EDI is part of {electronic commerce}.

	EDI is most often used between different companies ("trading
	partners") and uses some variation of the {ANSI X12}
	{standard} (USA) or {EDIFACT} (UN sponsored global standard).

	[{Electronic Commerce Dictionary}].

	(06 Oct 1995)

Electronic Data Processing

	<application> (EDP) {data processing} by electronic machines,
	i.e. computers.

	(30 Mar 1995)

Electronic Design Automation

	<application> (EDA) Software tools for the development of
	{integrated circuit}s and systems.

	Companies selling EDA tools include {Cadence}, {Intergraph},
	{Mentor}, {Synopsys}, {Viewlogic}.  {Zuken-Redac Dazix} has
	been acquired by Intergraph.

	(09 Oct 1995)

Electronic Frontier Foundation

	<body> (EFF) A group established to address social and legal
	issues arising from the impact on society of the increasingly
	pervasive use of computers as a means of communication and
	information distribution.  EFF is a non-profit civil liberties
	public interest organisation working to protect freedom of
	expression, privacy, and access to on-line resources and
	information.

	{Home (http://www.eff.org/)}

	(08 Dec 1994)

electronic magazine

	<messaging, publication, World-Wide Web> (e-zine) A regular
	publication on some particular topic distributed in digital
	form, cheifly now via the {World-Wide Web} but also by
	{electronic mail} or {floppy disk}.  E-zines are often
	distributed for free by enthusiasts.

	(04 Aug 1996)

electronic mail

	<messaging> (e-mail) Messages automatically passed from one
	computer user to another, often through computer {networks}
	and/or via {modems} over telephone lines.

	A message, especially one following the common {RFC 822}
	{standard}, begins with several lines of {headers}, followed
	by a blank line, and the body of the message.  An increasing
	number of e-mail systems support the {MIME} {standard} which
	allows the message body to contain "{attachments}" of
	different kinds rather than just one block of plain {ASCII}
	text.  It is conventional for the body to end with a
	{signature}.

	Headers give the name and {electronic mail address} of the
	sender and recipient(s), the time and date when it was sent
	and a subject.  There are many other headers which may get
	added by different {message handling systems} during delivery.

	The message is "composed" by the sender, often using a special
	program - a "{Mail User Agent}" (MUA).  It is then passed to
	some kind of "{Message Transfer Agent}" (MTA) - a program
	which is responsible for either delivering the message locally
	or passing it to another MTA, probably on another {host}.
	MTAs on different hosts on a network often communicate using
	{SMTP}.  The message is eventually delivered to the
	recipient's {mailbox} - normally a file on his computer - from
	where he can read it using a mail reading program (which may
	or may not be the same {MUA} as used by the sender).

	Contrast {snail-mail}, {paper-net}, {voice-net}.

	The form "email" is also seen, but is less common and less
	suggestive of the correct pronunciation and derivation than
	"e-mail".

	Oddly enough, the word "emailed" is actually listed in the
	Oxford English Dictionary.  It means "embossed (with a raised
	pattern) or arranged in a net work".  A use from 1480 is
	given.  The word is derived from French "emmailleure",
	network.  Also "email" is German for enamel.

electronic mail address

	<messaging> (Usually "e-mail address") The string used to
	specify the source or destination of an {electronic mail}
	message.  E.g. "john@doc.acme.ac.uk".

	The {RFC 822} standard is probably the most widely used on the
	{Internet} though {X.400} is also in use in Europe and Canada.
	{UUCP}-style ({bang path}) addresses or other kinds of {source
	route} became virtually extinct in the 1990s.

	In the example above, "john" is the {local part} which is the
	name of a {mailbox} on the destination computer.  If the
	sender and recipient use the same computer, or the same {LAN},
	for electronic mail then the local part is usually all that is
	required.

	If they use different computers, e.g. they work at different
	companies or use different {Internet service providers}, then
	the "host part", e.g. "sales.acme.com" must be appended after
	an "@".  This usually takes the form of a {fully qualified
	domain name} or, within a large organisation, it may be just
	the {hostname} part, e.g. "sales".  The destination computer
	named by the host part is often a {server} of some kind rather
	than an individual's {workstation} or {PC}.  The user's mail
	is stored on the server and read later via {client} mail
	software running on the user's computer.

	Large organisations, such as universities will often set up a
	global {alias} directory which maps a simple username such as
	"jsmith" to an address which contains more information such as
	"jsmith@london.bigcomp.co.uk".  This hides the detailed
	knowledge of where the message will be delivered from the
	sender, making it much easier to redirect mail if a user
	leaves or moves to a different computer for example.

	(22 Oct 1996)

Electronic Numerical Integrator and Computer

	<computer> (ENIAC) The first ever general-purpose digital
	electronic computer and the ancestor of most computers in use
	today.  ENIAC was developed by {John Mauchly} and {J. Presper
	Eckert} during World War II at the Moore School of the
	{University of Pennsylvania} and was released publicly in
	1946.

	ENIAC was underwritten and its development overseen by
	Lieutenant Herman Goldstine of the U.S. Army Ballistic
	Research Laboratory (BRL).  While the prime motivation for
	constructing the machine was to automate the wartime
	production of firing and bombing tables, the very first
	program run on ENIAC was a highly classified computation
	for Los Alamos.  Later applications included weather
	prediction, cosmic ray studies, wind tunnel design,
	petroleum exploration, and optics.

	The machine performed an addition in 200 {microseconds}, a
	multiplication in about three {milliseconds}, and a division
	in about 30 milliseconds.

	{John von Neumann}, a world-renowned mathematician serving on
	the BRL Scientific Advisory Committee, soon joined the
	developers of ENIAC and made some critical contributions.
	While Mauchly, Eckert and the Penn team continued on the
	technological problems, he, Goldstine, and others took up the
	logical problems.  In 1947, while working on the design for
	the successor machine, EDVAC, von Neumann realized that
	ENIAC's lack of a centralized control unit could be overcome
	to obtain a rudimentary stored program computer.
	Modifications were undertaken, that eventually led to an
	{instruction set} of 92 "orders".  Von Neumann also proposed
	the {Fetch-Execute cycle}.

	[R. F. Clippinger, "A Logical Coding System Applied to the
	ENIAC", Ballistic Research Laboratory Report No. 673, Aberdeen
	Proving Ground, MD, September 1948.
	{(http://ftp.arl.mil/~mike/comphist/48eniac-coding)}].

	[H. H. Goldstine, "The Computer from Pascal to von Neumann",
	Princeton University Press, 1972].

	[K. Kempf, "Electronic Computers within the Ordnance Corps",
	Aberdeen Proving Ground, MD, 1961.
	{(http://ftp.arl.mil/~mike/comphist/61ordnance)}].

	[M. H. Weik, "The ENIAC Story", J. American Ordnance Assoc.,
	1961. {(http://ftp.arl.mil/~mike/comphist/eniac-story.html)}].

	(03 Aug 1997)

Electronic Performance Support System

	<tool> (EPSS) A system that provides electronic task guidance
	and support to the user at the moment of need.  EPSS can
	provide {application} help, reference information, guided
	instructions and/or tutorials, subject matter expert advice
	and hints on how to perform a task more efficiently.  An EPSS
	can combine various technologies to present the desired
	information.  The information can be in the form of text,
	{graphical displays}, sound, and {video} presentations.

	["Electronic Performance Support Systems: How and Why to
	Remake the Workplace Through the Strategic Application of
	Technology", Gloria Gerry, Weingarten Press].

	(24 Oct 1997)

Electronics Industry Association

	<body, standard> (EIA) A body which publishes "Recommended
	Standards" (RS) for physical devices and their means of
	interfacing.  {RS-232} is their standard that defines a
	computer's {serial port}, connector pin-outs, and electrical
	signaling.

	(02 Mar 1995)

electronic whiteboarding

	{Audiographic Teleconferencing}

electron model

	<electronics> A {model} of {semiconductor} behaviour in which
	{donors} contribute the {charge} of an {electron}, and
	{acceptors} contribute a space for same, in effect
	contributing a fictional positive charge of similiar
	magnitude.  Physicists use the {electron model}.  Some
	language theorists consider language and the {electron} to be
	{model}s in themselves.

	Contrast {hole model}.

	(06 Oct 1995)

electron tube

	<electronics> (Or tube, vacuum tube, UK: valve, electron
	valve, thermionic valve, firebottle, glassfet) An electronic
	component consisting of a space exhausted of gas to such an
	extent that electrons may move about freely, and two or more
	electrodes with external connections.  Nearly all tubes are of
	the thermionic type where one electrode, called the cathode,
	is heated, and electrons are emitted from its surface with a
	small energy (typically a volt or less).  A second electrode,
	called the anode (plate) will attract the electrons when it is
	positive with respect to the cathode, allowing current in one
	direction but not the other.

	In types which are used for amplification of signals,
	additional electrodes, called grids, beam-forming electrodes,
	focussing electrodes and so on according to their purpose, are
	introduced between cathode and plate and modify the flow of
	electrons by electrostatic attraction or (usually) repulsion.
	A voltage change on a grid can control a substantially greater
	change in that between cathode and anode.

	Unlike {semiconductor}s, except perhaps for {FET}s, the
	movement of electrons is simply a function of electrostatic
	field within the active region of the tube, and as a
	consequence of the very low mass of the electron, the currents
	can be changed quickly.  Moreover, there is no limit to the
	current density in the space, and the electrodes which do
	dissapate power are usually metal and can be cooled with
	forced air, water, or other refrigerants.  Today these
	features cause tubes to be the active device of choice when
	the signals to be amplified are a power levels of more than
	about 500 watts.

	The first electronic digital computers used hundreds of vacuum
	tubes as their active components which, given the reliability
	of these devices, meant the computers needed frequent repairs
	to keep them operating.  The chief causes of unreliability are
	the heater used to heat the cathode and the connector into
	which the tube was plugged.

	Vacuum tube manufacturers in the US are nearly a thing of the
	past, with the exception of the special purpose types used in
	broadcast and image sensing and displays.  Eimac, GE, RCA, and
	the like would probably refer to specific types such as "Beam
	Power Tetrode" and the like, and rarely use the generic terms.

	The {cathode ray tube} is a special purpose type based on
	these principles which is used for the visual display in
	television and computers.  X-ray tubes are diodes (two element
	tubes) used at high voltage; a tungsten anode emits the
	energetic photons when the energetic electrons hit it.
	Magnetrons use magnetic fields to constrain the electrons;
	they provide very simple, high power, ultra-high frequency
	signals for radar, microwave ovens, and the like.  Klystrons
	amplify signals at high power and microwave frequencies.

	(05 Feb 1996)

Electrostatic Discharge

	<hardware, testing> (ESD) One kind of test that hardware
	usually has to pass to prove it is suitable for sale and use.
	The hardware must still work after is has been subjected to
	some level of electrostatic discharge.  Some organisations
	have their own ESD requirements which hardware must meet
	before it will be considered for purchase.

	Different countries have different legal regulations about
	levels of ESD.

	See also {Radio Frequency Interference}, {Electromagnetic
	Compatibility}.

	(19 Dec 1997)

elegant

	(From Mathematics) Combining simplicity, power, and a certain
	ineffable grace of design.  Higher praise than "clever",
	"winning" or even {cuspy}.

	The French aviator, adventurer, and author Antoine de
	Saint-Exup'ery, probably best known for his classic children's
	book "The Little Prince", was also an aircraft designer.  He
	gave us perhaps the best definition of engineering elegance
	when he said "A designer knows he has achieved perfection not
	when there is nothing left to add, but when there is nothing
	left to take away."

	(29 Nov 1994)

elephant

	Large, grey, four-legged mammal.

elephantine

	Used of programs or systems that are both conspicuous {hog}s
	(owing perhaps to poor design founded on {brute force and
	ignorance}) and exceedingly {hairy} in source form.  An
	elephantine program may be functional and even friendly, but
	(as in the old joke about being in bed with an elephant) it's
	tough to have around all the same (and, like a pachyderm,
	difficult to maintain).  In extreme cases, hackers have been
	known to make trumpeting sounds or perform expressive
	proboscatory mime at the mention of the offending program.
	Usage: semi-humorous.  Compare "has the elephant nature" and
	the somewhat more pejorative monstrosity.  See also
	{second-system effect} and {baroque}.

elevator controller

	An archetypal dumb embedded-systems application, like
	{toaster} (which superseded it).  During one period (1983--84)
	in the deliberations of ANSI X3J11 (the C standardisation
	committee) this was the canonical example of a really stupid,
	memory-limited computation environment.  "You can't require
	"printf(3)" to be part of the default run-time library - what
	if you're targeting an elevator controller?"  Elevator
	controllers became important rhetorical weapons on both sides
	of several {holy wars}.

ELF

	Binary format used by System V Release 4 Unix.

ELI

	1. <language> An early system on the {IBM 705} and {IBM 650}.

	[Listed in CACM 2(5):16 (May 1959)].

	2. {Embedded Lisp Interpreter}.

Eli Compiler Construction System

	<tool> A compiler generation package which integrates
	off-the-shelf tools and libraries with specialised language
	processors to generate complete compilers quickly and
	reliably.  It simplifies the development of new
	special-purpose languages, implementation of existing
	languages on new hardware and extension of the constructs and
	features of existing languages.

	Version 3.5 runs on {Sun-4} ({SunOS} 4, 5), {Ultrix}/{MIPS},
	{RS/6000}, {HP-UX}, {SGI}, {Linux}.

	{Colorado U (ftp://ftp.cs.colorado.edu/pub/cs/distribs/eli/)}.
	{Europe (ftp://ftp.uni-paderborn.de/Unix/eli)}.

	Mailing list: <eli-request@cs.colorado.edu>.

	E-mail: <compiler@cs.colorado.edu>,
	<compiler@uni-paderborn.de>.

	(01 Nov 1993)

ELISP

	1. <language> A {Lisp} variant originally implemented for
	{DEC-20}s by Chuck Hedrick of Rutgers.

	2. <language> A common abbreviation for {Emacs Lisp}.  Use of
	this abbreviation is discouraged because "Elisp" is or was a
	trademark.

	[Still a trademark?  Whose?]

	(04 Apr 1995)

elite

	1. <security> A term used to describe skilled {crackers} or
	{hackers}, or their deeds.  In the last sense, compare to
	{elegant}.

	The term is also used to describe exclusive forums ({ftp}
	sites, {BBS}s) used for trading pirated software, {crack}ing
	tools, or {phreaking} codes.

	(31 Jan 1997)

ELIZA

	<artificial intelligence> A famous program by {Joseph
	Weizenbaum}, which simulated a Rogerian psychoanalyst by
	rephrasing many of the patient's statements as questions and
	posing them to the patient.  It worked by simple {pattern
	recognition} and substitution of key words into canned
	phrases.  It was so convincing, however, that there are many
	anecdotes about people becoming very emotionally caught up in
	dealing with ELIZA.  All this was due to people's tendency to
	attach to words meanings which the computer never put there.

	See also {ELIZA effect}.

	(13 Sep 1997)

ELIZA effect

	<jargon> /e-li:'z* *-fekt'/ (From {ELIZA}) The tendency of
	humans to attach associations to terms from prior experience.
	For example, there is nothing magic about the symbol "+" that
	makes it well-suited to indicate addition; it's just that
	people associate it with addition.  Using "+" or "plus" to
	mean addition in a computer language is taking advantage of
	the ELIZA effect.

	The ELIZA effect is a {Good Thing} when writing a programming
	language, but it can blind you to serious shortcomings when
	analysing an {Artificial Intelligence} system.

	Compare {ad-hockery}; see also {AI-complete}.

	(13 Sep 1997)

Elk

	{Extension Language Kit}

ELLA

	A hardware design language from DRA Malvern.  Implemented in
	{ALGOL68-RS}.

	E-mail: <ella@dra.hmg.gb>.  {SPARC version
	(ftp://src.doc.ic.ac.uk/packages/ELLA)}.

	["ELLA 2000: A Language for Electronic System Design",
	J.D. Morison and A.S. Clarke, McGraw-Hill 1993].

Ellemtel

	A {C++} style-guide originated by {Ellemtel Telecom Systems},
	Stockholm.

Ellie

	Object-oriented language with fine-grained parallelism for
	distributed computing.  Based on BETA, Smalltalk, and others.
	Parallelism by unbounded RPC and 'future' objects.
	Synchronisation by 'dynamic interfaces.  Classes, methods,
	blocks and objects all modelled by first- class 'Ellie
	objects'.  Genericity, polymorphism and
	delegation/inheritance.  "Ellie Language Definition Report",
	Birger Andersen <birger@diku.dk>, SIGPLAN Notices 25(11):45-65
	(Nov 1990).  doc: diku.dk:ellie/papers

ELLIS

	EuLisp LInda System.  An object-oriented Linda system written
	for EuLisp.  "Using Object-Oriented Mechanisms to Describe
	Linda", P. Broadbery <pab@maths.bath.ac.uk> et al, in
	Linda-Like Systems and Their Implementation, G. Wilson ed, U
	Edinburgh TR 91-13, 1991.

elm

	<messaging> A {full-screen} {MUA} for {Unix}, {MS-DOS}, {MS
	Windows}, and {OS/2}.

	{Usenet} newsgroup: {news:comp.mail.elm}.

	{FAQ
	(http://www.cis.ohio-state.edu/hypertext/faq/usenet/elm/FAQ/faq.html)}.

	(20 Mar 1996)

ELMAGUIDE

	<language> The {metalanguage} used for interpretation of user
	actions in the {ELMA} compiler writer developed at Tallinn
	Poly Institute in 1978.

	(20 Mar 1996)

ELMAMETA

	A FORTRAN extension, written at the {Tallinn Poly Inst} in
	1978, used for lexical, syntactic and semantic sepecification
	in the {ELMA} {compiler} writer.  This system was widely used
	in the Soviet Union, and produced an {Ada} to {Diana}
	{compiler}.

	(08 Dec 1994)

ELP

	1. English Language Programs.  Language for testing avionics
	equipment, on Varian 620/i.

	"Multiband Automatic test Equipment - A Computer Controlled
	Checkout System", T. Kuroda et al, Proc SJCC, 38 (1971).

	2. Equational Logic Programming.  A semantically pure, fully
	{lazy} language by M.J. O'Donnell <odonnell@cs.uchicago.edu>.
	Current version: 4.2.

	{Sun and DEC versions
	(ftp://gargoyle.uchicago.edu/pub/equations/eq4.2.tar.Z)}.

	["Equational Logic as a Programming Language", M.J. O'Donnell,
	MIT Press 1985].

ELSIE

	<language> A distributed version of {ELLIS}.

	["Using Object-Oriented Mechanisms to Describe Linda",
	P. Broadbery <pab@maths.bath.ac.uk> et al, in "Linda-Like
	Systems and Their Implementati"on, G. Wilson ed, U Edinburgh
	TR 91-13, 1991].

	(16 Nov 1995)

Elvis

	<tool> A {vi} lookalike which supports nearly all of the vi/ex
	commands, in both visual mode and colon mode.

	Like vi/ex, elvis stores most of the text in a temporary file
	instead of RAM.  This allows it to edit files that are too
	large to fit in a single process' data space.

	Elvis runs under {BSD} UNIX, AT&T {SysV} UNIX, {MINIX},
	{MS-DOS}, {Atari TOS}, {Coherent}, {OS9}/68000 and {VMS}.  The
	next version is also expected to add {OS/2}, {AmigaDOS}, and
	{Mac OS}.

	Elvis is just as awful to use as vi, so someone will like it.

	Version 1.8pl14 (04 Sep 1995).

	{FTP Delft (ftp://dutepp0.et.tudelft.nl/pub/Unix/Editors/)},
	{FTP PDX (ftp://ftp.cs.pdx.edu/pub/elvis/)}.

	E-mail: Steve Kirkendall <kirkenda@cs.pdx.edu>.

	(16 Nov 1995)

elvish

	1. The Tengwar of Feanor, a table of letterforms resembling
	the beautiful Celtic half-uncial hand of the "Book of Kells".
	Invented and described by J.R.R. Tolkien in "The Lord of The
	Rings" as an orthography for his fictional "elvish" languages,
	this system (which is both visually and phonetically
	{elegant}) has long fascinated hackers (who tend to be
	intrigued by artificial languages in general).  It is
	traditional for graphics printers, plotters, window systems,
	and the like to support a Feanorian typeface as one of their
	demo items.  See also {elder days}.

	2. By extension, any odd or unreadable typeface produced by a
	graphics device.

	3. The typeface mundanely called "B"ocklin", an art-decoish
	display font.

EM

	{End of Medium}

EM-1

	<language> A {stack}-oriented intermediate language from
	{Vrije University Amsterdam}, used by the {Amsterdam Compiler
	Kit}.

	E-mail: Andrew Tanenbaum <ast@cs.vu.nl>.

	(07 Apr 1996)

EMA

	Extended Mercury Autocode.

	See {Autocode}.

	(24 Jan 1995)

Emacs

	<text, tool> /ee'maks/ Editing MACroS, or Extensible MACro
	System.  A popular {screen editor} used on {Unix}, {VMS} and
	other systems.  Emacs is distributed by the {Free Software
	Foundation} and was {Richard Stallman}'s first step in the
	{GNU} project.  Emacs is extensible - it is easy to add new
	functions; customisable - you can rebind keys, and modify the
	behaviour of existing functions; self-documenting - there is
	extensive on-line, context-sensitive help; and has a real-time
	"what you see is what you get" display.  Emacs is writen in
	{C} and the higher levels are programmed in {Emacs Lisp}.

	Emacs has an entire {Lisp} system inside it.  It was
	originally written in {TECO} under {ITS} at the {MIT} {AI
	lab}.  AI Memo 554 described it as "an advanced,
	self-documenting, customisable, extensible real-time display
	editor".  It has since been reimplemented any number of times,
	by various hackers, and versions exist that run under most
	major {operating systems}.

	It includes facilities to view directories, run compilation
	subprocesses and send and receive {electronic mail} and
	{Usenet} {news} ({GNUS}).  The {efs} package (originally
	ange-ftp) provides transparent access to files on remote {FTP}
	{servers}.  {Calc} is a calculator and {symbolic mathematics}
	package.  There are "modes" provided to assist in editing most
	well-known programming languages.  Many hackers spend more
	than 80% of their {tube time} inside Emacs.

	Other variants include {GOSMACS}, CCA EMACS, UniPress EMACS,
	Montgomery EMACS, {jove}, {epsilon}, {Lucid Emacs} and
	{MicroEMACS}.

	Some EMACS versions running under {window managers} iconify as
	an overflowing kitchen sink, perhaps to suggest the one
	feature the editor does not (yet) include.  Indeed, some
	hackers find EMACS too {heavyweight} and {baroque} for their
	taste, and expand the name as "Escape Meta Alt Control Shift"
	to spoof its heavy reliance on keystrokes decorated with
	{bucky bits}.  Other spoof expansions include "Eight Megabytes
	And Constantly Swapping", "Eventually "malloc()'s All Computer
	Storage", and "EMACS Makes A Computer Slow" (see {recursive
	acronym}).  See also {vi}.

	Version 19.25 (30 May 1994) includes the editor, Lisp
	{interpreter}, documentation and source debugger as well as a
	great many standard Lisp packages.

	{FTP} from your nearest {GNU archive site}.

	E-mail: (bug reports only) <bug-gnu-emacs@prep.ai.mit.edu>.

	{Usenet} newsgroups: {news:gnu.emacs.help},
	{news:gnu.emacs.bug}, {news:alt.religion.emacs},
	{news:gnu.emacs.sources}, {news:gnu.emacs.announce}.

	(04 Feb 1997)

Emacs Lisp

	<language> A dialect of {Lisp} used to implement the higher
	layers of the {Free Software Foundation}'s editor, {GNU}
	{Emacs}.  Sometimes abbreviated to "{elisp}".  An enormous
	number of Emacs Lisp packages have been written including
	modes for editing many programming languages and interfaces to
	many {Unix} programs.

e-mail

	{electronic mail}

e-mail address

	{electronic mail address}

EMAS

	{Edinburgh Multi Access System}

Embedded Lisp Interpreter

	<language> (ELI) A small {Common Lisp}-like {interpreter}
	embedded in the {Andrew mail system} by Bob Glickstein
	<bobg@andrew.cmu.edu>.

	(04 Apr 1995)

Embedded Mode

	<programming> A term used by {COCOMO} to describe a project
	development that is characterised by tight, inflexible
	constraints and interface requirements.  The product must
	operate within (is embedded in) a strongly coupled complex of
	hardware, software, regulations and operational procedures.
	An embedded mode project will require a great deal of
	innovation.  An example would be a {real-time system} with
	timing constraints and customised hardware.

	(29 May 1996)

embedded system

	<computer> Hardware and software which forms a component of
	some larger system and which is expected to function without
	human intervention.

	A typical embedded system consists of a single-board
	{microcomputer} with software in {ROM}, which starts running
	some special purpose {application program} as soon as it is
	turned on and will not stop until it is turned off (if ever).

	An embedded system may include some kind of {operating system}
	but often it will be simple enough to be written as a single
	program.  It will not usually have any of the normal
	{peripheral}s such as a keyboard, monitor, serial connections,
	mass storage, etc. or any kind of user interface software
	unless these are required by the overall system of which it is
	a part.  Often it must provide {real-time} response.

	{Usenet} newsgroup: {news:comp.arch.embedded}.

	(12 Apr 1995)

embedding

	1. <mathematics> One instance of some mathematical object
	contained with in another instance, e.g. a {group} which is a
	subgroup.

	2. <theory> ({domain theory}) A {complete partial order} F in
	[X -> Y] is an embedding if

	(1) For all x1, x2 in X, x1 <= x2 <=> F x1 <= F x2 and

	(2) For all y in Y, {x | F x <= y} is {directed}.

	("<=" is written in {LaTeX} as {\sqsubseteq}).

	(27 Mar 1995)

EMBLA Pro

	<messaging, tool> An {IMAP}-compliant {electronic mail}
	{client} from {WinSoft Products Ltd}.  EMBLA Pro allows you to
	use an IMAP mail server in a true client/server network
	manner, once you've connected to the IMAP server, you can
	organise messages into folders on the server and you can view
	messages and any attached files at the server before deciding
	whether or not to download them to your local system.  IMAP
	allows the user to select individual message attachments to be
	viewed and/or downloaded.  You can delete files and messages
	from the server, move or copy them to the local computer or
	leave them for future retrieval.  EMBLA Pro also supports the
	standard {POP3} protocol.  Both POP3 and IMAP2 run over
	{E-SMTP}.

	The IMAP {Unix} {daemons} can support specific environments,
	for example, Sun MailTool attachments.  All flavours of Unix
	are catered for with a suite of binary mail daemons, eg:
	{SunSoft} {Solaris}, {HP}, {IBM} and {SCO}.

	EMBLA conforms to the SMTP, E-SMTP, {MIME} and IMAP {Internet}
	standards - RFC1590 (RFC1521), RFC1522, RFC1426, RFC1425,
	RFC1176, RFC0822, RFC0821 and the draft update of RFC1176.

	{Home (http://www.ftech.co.uk/~winsoft/embla.htm)}

	(11 Mar 1996)

EMC

	{Electromagnetic Compatibility}

EMD Enterprises, Inc.

	<company> A software development and consulting firm
	specialising in {database} and {client-server} applications.

	{(http://www.emdent.com/)}

	(12 Dec 1994)

EMDIR

	The CERN {Electronic Mail DIRectory} utility.

	[Details?]

	(23 Feb 1995)

Emerald

	An {object-oriented} distributed programming language and
	environment developed at the {University of Washington} in the
	early 1980s.  Emeral was the successor to {EPL}.  It is
	{strongly typed} and uses {signature}s and {prototype}s rather
	than {inheritance}.

	["Distribution and Abstract Types in Emerald", A. Black et al,
	IEEE Trans Soft Eng SE-13(1):65-76 (Jan 1987)].

	(09 Nov 1994)

Emitter Coupled Logic

	(ECL) (Or "Current Mode Logic") A technology for building
	logic gates where the emitter of a {transistor} is used as the
	output rather than its collector.  ECL has a propagation time
	of 0.5 - 2 ns (faster than {TTL}) and a power dissipation 3 -
	10 times higher than {TTL}.

	(09 Nov 1994)

EML

	Extended ML.  A language for formally specifying {SML}
	programs.

	["Formal Program Development in Extended ML for the Working
	Programmer", D.  Sannella, Proc 3rd BCS/FACS Workshop on
	Refinement", Springer 1990].

EMM

	<storage> {Expanded Memory Manager}.

	(12 Jan 1996)

EMM386

	<software, storage> An {expanded memory manager} for {IBM PCs}
	with an {Intel 80386} or higher processor, part of {MS-DOS}
	version 5.00 or higher.  EMM386 uses {extended memory} to
	simulate {expanded memory} and also provides {upper memory
	blocks}.  It must be loaded by a DEVICE= command in your
	{CONFIG.SYS} file.

	(13 Jan 1996)

emote

	<chat> (emotion) A command used on {talk} systems and {MUD}s
	to indicate the performance of an action, usually a facial
	expression of emotional state.

	(28 Nov 1996)

emoticon

	/ee-moh'ti-kon/ An {ASCII} {glyph} used to indicate an
	emotional state in {electronic mail} or {news}.  Although
	originally intended mostly as jokes, emoticons (or some other
	explicit humour indication) are virtually required under
	certain circumstances in high-volume text-only communication
	forums such as {Usenet}; the lack of verbal and visual cues
	can otherwise cause what were intended to be humorous,
	sarcastic, ironic, or otherwise non-100%-serious comments to
	be badly misinterpreted (not always even by {newbie}s),
	resulting in arguments and {flame war}s.

	Hundreds of emoticons have been proposed, but only a few are
	in common use.  These include:

	 :-)	"smiley face" (for humour, laughter,
		friendliness, occasionally sarcasm)

	 :-(	"frowney face" (for sadness, anger, or upset)

	 ;-)	"half-smiley" (ha ha only serious); also
		known as "semi-smiley" or "winkey face".

	 :-/	"wry face"

	These may become more comprehensible if you tilt your head
	sideways, to the left.  The first two are by far the most
	frequently encountered.  Hyphenless forms of them are common
	on {CompuServe}, {GEnie}, and {BIX}; see also {bixie}.  On
	{Usenet}, "smiley" is often used as a generic term synonymous
	with emoticon, as well as specifically for the happy-face
	emoticon.

	It appears that the emoticon was invented by one Scott Fahlman
	on the {CMU} {bboard} systems around 1980.  He later wrote: "I
	wish I had saved the original post, or at least recorded the
	date for posterity, but I had no idea that I was starting
	something that would soon pollute all the world's
	communication channels."  [GLS confirms that he remembers this
	original posting].

	As with exclamation marks, overuse of the smiley is a mark of
	loserhood!  More than one per paragraph is a fairly sure sign
	that you've gone over the line.

	(02 Dec 1994)

empire

	<games> Any of a family of military simulations derived from a
	game written by Peter Langston many years ago.  Five or six
	multi-player variants of varying degrees of sophistication
	exist, and one single-player version implemented for both
	{Unix} and {VMS}; the latter is even available as {MS-DOS}
	{freeware}.  All are notoriously addictive.

	(06 Aug 1995)

EMS

	{Expanded Memory Specification}

EMU8000

	<multimedia, hardware> The "{Advanced WavEffect}" music
	synthesizer {integrated circuit} used on the {SB AWE32} card.

	The EMU8000 is a sub-system offering high quality music
	synthesis and an "effect {engine}" which provides musical
	effects like reverb and chorus to {MIDI} playback.  The
	EMU8000 supports up to 32 voices, and the effect amount for
	each voice can be controlled via MIDI.

	(15 Dec 1996)

emulation

	One system is said to emulate another when it performs in
	exactly the same way, though perhaps not at the same speed.  A
	typical example would be emulation of one computer by (a
	program running on) another.  You might use an emulation as a
	replacement for a system whereas you would use a simulation if
	you just wanted to analyse it and make predictions about it.

	(12 May 1995)

emulator

	{Hardware} or {software} that performs {emulation}.

	(12 May 1995)

EMX

	A programming environment for {OS/2} by Eberhard Mattes
	<mattes@azu.informatik.uni-stuttgart.de>.  EMX supports
	programming in {C}, {C++} and {Objective C}.  It works with
	{gcc}, {g++}, {gdb}, {libg++}, .obj linkage, {DLL} and
	{header}s.  Version 0.8g.

	{Europe (ftp://ftp.uni-stuttgart.de/soft/os2/emx-0.8g)}.  {US
	(ftp://ftp-os2.cdrom.com/os2/2_x/Unix/gnu/emx0.8g)}.

	Mailing list: <listserv@ludd.luth.se> ("subscribe to
	emx-list").

	(21 Sep 1992)

Encapsulated PostScript

	(EPS) An extension of the {PostScript} graphics file format
	developed by {Adobe Systems}.  EPS is used for {PostScript}
	graphics files that are to be incorporated into other
	documents.  An EPS file includes {pragma}s (special PostScript
	comments) giving information such as the bounding box, page
	number and fonts used.

	On some computers, EPS files include a low resolution version
	of the PostScript image.  On the {Macintosh} this is in {PICT}
	format, while on the {IBM PC} it is in {TIFF} or {Microsoft
	Windows} {metafile} format.

	[Spec?]

	(04 Jan 1995)

encapsulation

	1. The technique used by layered protocols in which a layer
	adds header information to the protocol data unit (PDU) from
	the layer above.  As an example, in Internet terminology, a
	packet would contain a header from the physical layer,
	followed by a header from the network layer (IP), followed by
	a header from the transport layer (TCP), followed by the
	application protocol data.

	2. The ability to provide users with a well-defined interface
	to a set of functions in a way which hides their internal
	workings.  In object-oriented programming, the technique of
	keeping together data structures and the methods (procedures)
	which act on them.

encode

	1. <algorithm, hardware> To convert {data} or some physical
	quantity into a given format.  E.g. {uuencode}.

	See also {encoder}.

	2. <encryption> To encrypt, to perform {encryption}.

	(04 Mar 1997)

encoder

	1. <algorithm, hardware> Any program, circuit or {algorithm}
	which {encode}s.

	Example usages: "{MPEG} encoder", "{NTSC} encoder",
	"{RealAudio} encoder".

	2. <hardware> A sensor or transducer for converting rotary
	motion or position to a series of electronic pulses.

	(04 Mar 1997)

encryption

	<algorithm, cryptography> Any procedure used in {cryptography}
	to convert {plaintext} into {ciphertext} in order to prevent
	any but the intended recipient from reading that data.

	There are many types of data encryption, and they are the
	basis of network security.  Common types include {Data
	Encryption Standard} and {public-key encryption}.

	The {Unix} command {crypt} performs encryption.

	{(http://eff.org/)}

	(02 May 1995)

-endian

	<architecture> The ordering of {byte}s in a multi-byte number.

	See {big-endian}, {little-endian}, {holy wars}.

	(02 May 1995)

endless loop

	{infinite loop}

End Of Line

	(EOL) Synonym for {newline}, derived perhaps from the original
	{CDC6600} {Pascal}.  Now rare, but widely recognised and
	occasionally used for brevity.  Used in the example entry
	under {BNF}.

	Out of context this would probably be (deliberately) ambiguous
	because different systems used different (combinations of)
	characters to mark the end of a line.  {Unix} uses a {line
	feed}; DOS uses {carriage return}, line feed ({CRLF}) and the
	{Macintosh} uses carriage return.

	See also {EOF}.

	(14 Jul 1997)

End of Medium

	<character> (EM) {ASCII} character 25.

	(28 Jun 1996)

End Of Text

	{control-C}

End Of Transmission

	<character> (EOT) The {mnemonic} for {ASCII} character 4.

End Transmission Block

	<character> (ETB) The {mnemonic} for {ASCII} character 23.

	(28 Jun 1996)

end-user

	<job> The person who uses a computer application, as opposed
	to those who developed or support it.  The end-user may or may
	not know anything about computers, how they work, or what to
	do if something goes wrong.  End-users do not usually have
	administrative responsibilities or privileges.

	End users are certain to have a different set of assumptions
	than the developers who created the application.

	(29 Mar 1997)

engine

	<jargon> 1. A piece of {hardware} that encapsulates some
	function but can't be used without some kind of {front end}.
	Today we have, especially, "{print engine}": the guts of a
	{laser printer}.

	2. An analogous piece of software; notionally, one that does a
	lot of noisy {crunching}, such as a "database engine", or
	"{search engine}".

	The hackish senses of "engine" are actually close to its
	original, pre-Industrial-Revolution sense of a skill, clever
	device, or instrument (the word is cognate to "ingenuity").
	This sense had not been completely eclipsed by the modern
	connotation of power-transducing machinery in {Charles
	Babbage}'s time, which explains why he named the
	stored-program computer that he designed in 1844 the
	"{Analytical Engine}".

	(31 May 1996)

English

	1. (Obsolete) The source code for a program, which may be in
	any language, as opposed to the linkable or executable binary
	produced from it by a compiler.  The idea behind the term is
	that to a real hacker, a program written in his favourite
	programming language is at least as readable as English.
	Usage: mostly by old-time hackers, though recognisable in
	context.

	2. The official name of the {database} language used by the
	{Pick} {operating system}, actually a sort of crufty,
	brain-damaged {SQL} with delusions of grandeur.  The name
	permits {marketroid}s to say "Yes, and you can program our
	computers in English!" to ignorant {suit}s without quite
	running afoul of the truth-in-advertising laws.

	["Exploring the Pick Operating System", J.E. Sisk et al,
	Hayden 1986].

Enhanced Capabilities Port

	<hardware> (ECP) The most common {parallel printer interface}
	on current (1997) {IBM PC} compatibles.

	Enhanced Capabilities Port is defined in standard IEEE 1284.
	It is bi-directional and faster than earlier parallel ports.

	Not to be confused with {Extended Capabilities Port}.

	(01 Dec 1997)

Enhanced Dynamic Random Access Memory

	(EDRAM)
	{(http://www.ruralnet.net/~prairie)}.

	[Summary?]

	(23 Nov 1995)

Enhanced Graphics Adapter

	<graphics, hardware> (EGA) An {IBM PC} {display standard} with
	a {resolution} of 640 x 350 {pixel}s of 16 colours.

	(28 Jun 1995)

Enhanced IDE

	A enhanced version of the {IDE} hard disk standard capable of
	tranfer rates up to 7 MBytes/s.

	[Details?]

	(16 Feb 1995)

enhanced parallel port

	<hardware> (EPP) A {parallel port} that confirms to the
	{IEEE}'s EPP {standard}.  An EPP is actually an expansion bus
	that can handle 64 {disk drives} and other {peripherals}.

	["PC Magazine", 09 Jan 1996, p. 262].

	[Details?  Manufacturers?]

	(07 Apr 1996)

Enhanced Small Disk Interface

	<storage, hardware> (ESDI) {Compaq}'s {hard disk} {controller}
	{standard} which was supposed to be faster than {SCSI} and
	{IDE} but unfortunately never caught on.  It is found in some
	Compaq {personal computers} and most {MicroChannel} {IBM}
	{PS/2}s.

	(23 Nov 1995)

enhancement

	{Marketroid}-speak for a {bug} {fix}.  This abuse of language
	is a popular and time-tested way to turn incompetence into
	increased revenue.  A hacker being ironic would instead call
	the fix a {feature} - or perhaps save some effort by
	declaring the bug itself to be a feature.

	(16 Feb 1995)

ENIAC

	{Electronic Numerical Integrator and Computer}

Enigma

	<hardware, cryptography> The mechanical {cipher} engine used
	by the Germans in World War II.  Many of their messages were
	deciphered at {Bletchley Park}, by {Alan Turing} and others.

	(25 Mar 1995)

ENQ

	1. <character> /enkw/ or /enk/ ENQuire.  The {mnemonic} for
	{ASCII} character 5.

	2. <chat> An on-line convention for querying someone's
	availability.  After opening a {chat} connection to someone
	apparently in heavy hack mode, one might type "SYN SYN ENQ?"
	(the SYNs representing notional synchronisation bytes), and
	expect a return of {ACK} or {NAK} depending on whether or not
	the person felt interruptible.

	Compare {ping}, {finger}.

	(18 Jan 1998)

Ente Nazionale Italiano di Unificazione

	(UNI) The Italian national standards body, a member of {ISO}.

enterprise

	<body> A business, generally a large one.

	(22 Nov 1994)

enterprise resource planning

	<application> (ERP) A type of application performed by {SAP}
	R/2, R/3, and {Baan}.

	(28 Nov 1996)

Enterprise Systems CONnectivity

	<networking> (ESCON) {Optical fibre} connections between a
	{mainframe} and its {peripherals}.  Also an {IBM} registered
	trademark.

	(31 Mar 1997)

Entity-Relationship

	An approach to data modelling proposed by P. Chen in 1976.

	["The entity-relationship model: toward a unified view of
	data", P.P. Chen, ACM Transactions on Database Systems 1:1 pp
	9-36, 1976].

	[Details?]

	(18 Jan 1995)

Entity-Relationship diagram

	A type of diagram used in the {Entity-Relationship} model.

	(18 Jan 1995)

entropy

	A measure of the disorder of a system.  Systems tend to go
	from a state of order (low entropy) to a state of maximum
	disorder (high entropy).

	The entropy of a system is related to the amount of
	{information} it contains.  A highly ordered system can be
	described using fewer bits of information than a disordered
	one.  For example, a string containing one million "0"s can be
	described using {run-length encoding} as [("0", 1000000)]
	whereas a string of random symbols (e.g. bits, or characters)
	will be much harder, if not impossible, to compress in this
	way.

	[Shannon's formula relating entropy & information?]

	(18 Jan 1995)

enumerated type

	<programming> (Or "enumeration") A {type} which includes in
	its definition an exhaustive list of possible values for
	variables of that type.  Common examples include {Boolean},
	which takes values from the list [true, false], and
	day-of-week which takes values [Sunday, Monday, Tuesday,
	Wednesday, Thursday, Friday, Saturday].  Enumerated types are
	a feature of {strongly typed languages}, including {C} and
	{Ada}.

	Characters, (fixed-size) integers and even {floating-point}
	types could be (but are not usually) considered to be (large)
	enumerated types.

	(28 Nov 1996)

enumeration

	1. <mathematics> A {bijection} with the {natural numbers}.

	Compare {well-ordered}.

	2. <programming> {enumerated type}.

	(28 Nov 1996)

environment

	A list of variable bindings.  When evaluating an expression in
	some environment, the evaluation of a variable consists of
	looking up its value in the environment.  The environment is
	extended with new bindings when a function's {parameter}s are
	bound to its {actual argument}s or when new variables are
	declared.  In a {block-structured} {procedural} language, the
	environment usually consists of a linked list of {activation
	record}s.

	(18 Jan 1995)

Envoy

	{Motorola}'s integrated personal wireless communicator.  Envoy
	is a {personal digital assistant} which incorporates two-way
	wireless and wireline communication.  It was announced on 7
	March 1994 and released in the third quarter of 1994.  It runs
	{Genral Magic}'s {Magic Cap} {operating system} and
	Telescript(TM) communications language on Motorola's {Dragon}
	chip set.  This includes the highly integrated {Motorola
	68349} processor and a special purpose {application specific
	integrated circuit} (ASIC) referred to as Astro.  This chip
	set was designed specifically for {Magic Cap} and
	{Telescript}.

	A user can write on the Envoy communicator with the
	accompanying stylus or a finger, to type and select or move
	objects on its screen.  An on-screen keyboard can be used to
	input information, draw or write personal notations, or send
	handwritten messages and faxes.

	Envoy can send a wireless message to another Envoy, {PC} or
	fax; broadcast a message to a group, with each member of that
	group receiving the message in their preferred format; gather
	information based on your requirements; schedule a meeting and
	automatically invite attendees; screen, route and organize
	messages; send a business card to another Envoy across a
	conference room table; access real-time scheduling and pricing
	information for US airline flights, then order tickets via fax
	or {electronic mail}; keep track of contacts through an
	address book; receive daily news summaries and stock
	information; capture, organize and review business and
	personal expenses on-the-go; gather, edit and analyze
	information in spreadsheets and graphs compatible with {Lotus
	1-2-3} and {Excel}; shop in an electronic mall.

	{(http://www.motorola.com/MIMS/WDG/Technology/Envoy/)}

	[Was it released in Q3 '94?]

	(18 Jan 1995)

EOF

	End Of File

	1. The {out-of-band} value returned by {C}'s sequential
	character-input functions (and their equivalents in other
	environments) when end of file has been reached.  This value
	is -1 under {C} libraries postdating V6 Unix, but was
	originally 0.

	2. The keyboard character (usually control-D, the ASCII EOT
	(End Of Transmission) character) that is mapped by the {Unix}
	terminal driver into an end-of-file condition.

	(18 Jan 1995)

EOL

	1. {End Of Line}.

	2. Expression Oriented Language.  A low-level language for
	strings. Versions: EOL-1, EOL-2, EOL-3.  ["EOL - A Symbol
	Manipulation Language", L. Lukaszewicz, Computer J 10(1):53
	(May 1967)].

EOT

	1. <character> {End Of Transmission}

	2. <storage> End Of Tape.  A marker used on {magnetic tapes}.

	(24 Jun 1996)

EOU

	<character, humour> The mnemonic of a mythical {ASCII} control
	character (End Of User) that would make an {ASR-33} {Teletype}
	explode on receipt.  This construction parodies the numerous
	obscure {delimiter} and control characters left in ASCII from
	the days when it was associated more with wire-service
	teletypes than computers (e.g. {FS}, {GS}, {RS}, {US}, {EM},
	{SUB}, {ETX}, and especially {EOT}).  It is worth remembering
	that ASR-33s were big, noisy mechanical beasts with a lot of
	clattering parts; the notion that one might explode was
	nowhere near as ridiculous as it might seem to someone sitting
	in front of a {tube} or flatscreen today.

	(29 Jun 1996)

EOUG

	European {ORACLE} Users Group.

EPCS

	{Experimental Physics Control Systems}

EPILOG

	1. Extended Programming In LOGic.  {PROLOG} with several AND's
	having different time constraints.

	["Epilog: A Language for Extended Programming in Logic",
	A. Porto in Implementations of Prolog, J.A. Campbell ed, Ellis
	Horwood 1984].

	2. A {data-driven} {PROLOG}, with both {AND parallelism} and
	{OR parallelism}.  ["EPILOG = PROLOG + Data Flow", M.J. Wise,
	SIGPLAN Noices 17:80-86 (1982)].

EPIM

	{Enterprise Product Information Management}

EPL

	1. {Early PL/I}.

	2. {Experimental Programming Language}.

	3. Eden Programming Language.  U Washington.  Based on
	Concurrent Euclid and used with the Eden distributed OS.
	Influenced Emerald and Distributed Smalltalk.  "EPL
	Programmer's Guide", A. Black et al, U Washington June 1984.

	4. Equational Programming Language. Szymanski, RPI.
	Equational language for parallel scientific applications.
	"EPL - Parallel Programming with Recurrent Equations",
	B. Szymanski in Parallel Functional Languages and Compilers,
	B. Szymanski et al, A-W 1991.

epoch

	1. [Unix: probably from astronomical timekeeping] The time and
	date corresponding to 0 in an operating system's clock and
	timestamp values.  Under most Unix versions the epoch is
	00:00:00 GMT, January 1, 1970; under VMS, it's 00:00:00 of
	November 17, 1858 (base date of the US Naval Observatory's
	ephemerides); on a Macintosh, it's the midnight beginning
	January 1 1904.  System time is measured in seconds or {tick}s
	past the epoch.  Weird problems may ensue when the clock wraps
	around (see {wrap around}), which is not necessarily a rare
	event; on systems counting 10 ticks per second, a signed
	32-bit count of ticks is good only for 6.8 years.  The
	1-tick-per-second clock of Unix is good only until January 18,
	2038, assuming at least some software continues to consider it
	signed and that word lengths don't increase by then.  See also
	{wall time}.

	2. (Epoch) A version of {GNU Emacs} for the {X Window System}
	from {NCSA}.

EPP

	{Enhanced Parallel Port}

EPROM

	{Erasable Programmable Read Only Memory}

EPROM OTP

	{Erasable Programmable Read Only Memory One Time Programmable}

EPROS

	A specification/prototyping language.  Implemented in {Franz
	Lisp}.

	{(ftp://utsun.s.u-tokyo.jp/lang/epros)}

	["Software Prototyping, Formal Methods and VDM", Sharam
	Hekmatpour et al, A-W 1988].

EPS

	{Encapsulated PostScript}

EPSILON

	<language> A {macro} language with high level features
	including strings and lists, developed by A.P. Ershov at
	Novosibirsk in 1967.  EPSILON was used to implement {ALGOL 68}
	on the {M-220}.

	["Application of the Machine-Oriented Language Epsilon to
	Software Development", I.V. Pottosin et al, in Machine
	Oriented Higher Level Languages, W. van der Poel, N-H 1974,
	pp. 417-434].

	(10 May 1995)

epsilon

	1.  A small quantity of anything.  "The cost is epsilon."

	2. Very small, negligible; less than {marginal}.  "We can get
	this feature for epsilon cost."

	3. "within epsilon of": close enough to be indistinguishable
	for all practical purposes, even closer than being "within
	delta of".  "That's not what I asked for, but it's within
	epsilon of what I wanted."  Alternatively, it may mean not
	close enough, but very little is required to get it there: "My
	program is within epsilon of working."

epsilon squared

	<jargon> A quantity even smaller than {epsilon}, as small in
	comparison to epsilon as epsilon is to something normal;
	completely negligible.  If you buy a supercomputer for a
	million dollars, the cost of the thousand-dollar terminal to
	go with it is {epsilon}, and the cost of the ten-dollar cable
	to connect them is epsilon squared.

	Compare {lost in the underflow}, {lost in the noise}.

	(05 Sep 1997)

EPSIMONE

	Concurrent simulation language derived from Simone.  "EPSIMONE
	Manual", J. Beziin et al, Pub Int No 90, IRISA, Sept 1978.

EPSS

	{Electronic Performance Support System}

EqL

	An equational language.  Bharat Jayaraman
	<bharat@cs.buffalo.edu>.  "EqL: The Language and its
	Implementation", B. Jayaraman et al, IEEE Trans Soft Eng
	SE-15(6):771-780 (June 1989).

EQLOG

	Equality, types and generic modules for logic programming.
	A language using Horn clauses.  J.A. Goguen, J. Meseguer.

EQLog

	OBJ2 plus logic programming based on Horn logic with equality.

	"EQLog: Equality, Types and Generic Modules for Logic
	Programming", J.  Goguen et al in Functional and Logic
	Programming, D. DeGroot et al eds, pp.295-363, P-H 1986.

Eqn

	Language for typesetting mathematics.

	"A System for Typesetting Mathematics", B.W. Kernighan and
	L.L. Cherry, CACM 18(3):151-157 (Mar 1975).

equals

	<character> "=", {ASCII} character 61.

	Common names: {ITU-T}: equals; gets; takes.  Rare:
	quadrathorpe; {INTERCAL}: half-mesh.

	Equals is used in many languages as the {assignment} operator
	though earlier languages used ":=" ("becomes equal to") to
	avoid upsetting mathematicians with statements such as "x =
	x+1".  It is also used in compounds such as "<=", ">=", "==",
	"/=", "!=" for various comparison operators and in {C}'s "+=",
	"*=" etc. which mimic the {primitive} operations of
	{two-address code}.

	(29 Mar 1995)

equational logic

	<logic> First-order equational logic consists of
	{quantifier}-free terms of ordinary {first-order logic}, with
	equality as the only {predicate} symbol.  The {model theory}
	of this logic was developed into {Universal algebra} by
	Birkhoff et al.  [Birkhoff, Gratzer, Cohn].  It was later made
	into a branch of {category theory} by Lawvere ("algebraic
	theories").

	(21 Feb 1995)

Equel

	Embedded Quel.  {INGRES, Inc.}  Combines QUEL theories with C
	code.

equivalence class

	<mathematics> An equivalence class is a subset whose elements
	are related to each other by an {equivalence relation}.  The
	equivalence classes of a set under some relation form a
	{partition} of that set (i.e. any two are either equal or
	{disjoint} and every element of the set is in some class).

	(13 May 1996)

equivalence class partitioning

	<programming> A software testing technique that involves
	identifying a small set of representative input values that
	invoke as many different input conditions as possible.

	(13 May 1996)

equivalence relation

	<mathematics> A relation R on a set including elements a, b,
	c, which is reflexive (a R a), symmetric (a R b => b R a) and
	transitive (a R b R c => a R c).  An equivalence relation
	defines an {equivalence} class.

	See also {partial equivalence relation}.

	(13 May 1996)

ER

	{Entity-Relationship}

ERA

	{Entity-Relationship-Attribute}

era

	Synonym {epoch}.  Webster's Unabridged makes these words
	almost synonymous, but "era" usually connotes a span of time
	rather than a point in time.

Erasable Programmable Read Only Memory

	<storage> (EPROM) A type of storage device in which the data
	is determined by electrical charge stored in an isolated
	("floating") {MOS} {transistor} {gate}.  The isolation is good
	enough to retain the charge almost indefinitely (more than ten
	years) without an external power supply.  The EPROM is
	programmed by "injecting" charge into the floating gate, using
	a technique based on the tunnel effect.  This requires higher
	voltage than in normal operation (usually 12V - 25V).  The
	floating gate can be discharged by applying ultraviolet light
	to the chip's surface through a quartz window in the package,
	erasing the memory contents and allowing the chip to be
	reprogrammed.

	(22 Apr 1995)

erase

	{delete}

ERC

	<database> An extended {entity-relationship model}.

	[Details?  What does it stand for?]

	(23 Dec 1997)

ERCIM

	European Research Consortium on Informatics and Mathematics.
	An association of European research organisations promoting
	cooperative research on key issues in information technology.

ERD

	{entity-relationship diagram}

EREW PRAM

	exclusive read, exclusive write {PRAM}.

ERFPI

	An early system on the {LGP-30} computer.

	[Listed in CACM 2(5):16 (May 1959)].

	(08 Dec 1994)

ergonomic

	Concerning {ergonomics} or exhibitting good ergonimics.

	(14 Apr 1995)

ergonomics

	The study of the design and arrangement of equipment so that
	people will interact with the equipment in healthy,
	comfortable, and efficient manner.  As related to computer
	equipment, ergonomics is concerned with such factors as the
	physical design of the keyboard, screens, and related
	hardware, and the manner in which people interact with these
	hardware devices.

	(14 Apr 1995)

ERGO-Shell

	<operating system, tool> An ergonomic {X Window System} {Unix}
	{shell} for software engineers by Regine Freitag
	<freitag@gmd.de>.

	Version: 2.1.

	{(ftp://ftp.gmd.de/gmd/ergo/)}

	E-mail: Dr. Wolfgang Dzida, GMD <dzida@gmd.de> or the author.

	(04 Jun 1993)

Eric Conspiracy

	A shadowy group of moustachioed hackers named Eric first
	pinpointed as a sinister conspiracy by an infamous
	talk.bizarre posting ca. 1986.  This was doubtless influenced
	by the numerous "Eric" jokes in the Monty Python oeuvre.
	There do indeed seem to be considerably more moustachioed
	Erics in hackerdom than the frequency of these three traits
	can account for unless they are correlated in some arcane way.
	Well-known examples include Eric Allman (he of the "Allman
	style" described under {indent style}) and Erik Fair
	(co-author of NNTP); your editor has heard from about fifteen
	others by e-mail, and the organisation line "Eric Conspiracy
	Secret Laboratories" now emanates regularly from more than one
	site.

Eric S. Raymond

	<person> One of the authors of the Hacker's Online {Jargon
	File}.  Eric is now (1996) involved in the {JOLT} project as
	well as maintaining several {FAQ} lists.

	{Home (http://www.ccil.org/~esr/home.html)}.

	E-mail: <esr@thyrsus.com>

	(17 Dec 1996)

Eris

	/e'ris/ The Greek goddess of Chaos, Discord, Confusion, and
	Things You Know Not Of; her name was latinised to Discordia
	and she was worshiped by that name in Rome.  Not a very
	friendly deity in the Classical original, she was reinvented
	as a more benign personification of creative anarchy starting
	in 1959 by the adherents of {Discordianism} and has since been
	a semi-serious subject of veneration in several "fringe"
	cultures, including hackerdom.

	See {Church of the SubGenius}.

	(08 Dec 1994)

Erlang

	1. <language> A concurrent {functional language} for large
	industrial {real-time} systems by Armstrong, Williams and
	Virding of Ellemtel, Sweden.

	Erlang is untyped.  It has {pattern matching} syntax,
	{recursion equation}s, explicit {concurrency}, {asynchronous
	message passing} and is relatively free from {side-effect}s.
	It supports transparent cross-{platform} distribution.  It has
	primitives for detecting run-time errors, real-time {garbage
	collection}, {modules}, {dynamic code replacement} (change
	code in a continuously running real-time system) and a
	{foreign language interface}.

	An unsupported free version is available (subject to a
	non-commercial licence).  Commercial versions with support are
	available from {Erlang Systems AB}.  An {interpreter} in
	{SICStus Prolog} and compilers in {C} and Erlang are available
	for several {Unix} {platform}s.

	{(http://www.ericsson.se/erlang/)}.  {Information
	(ftp://euagate.eua.ericsson.se/pub/eua/erlang/info)}.  E-mail:
	<erlang@erix.ericsson.se>.

	[Erlang - "Concurrent Programming in Erlang", J. Armstrong, M.
	& Williams R. Virding, Prentice Hall, 1993. ISBN 13-285792-8.]

	2. <unit> 36 {CCS} per hour, or 1 call-second per second.

	Erlang is a unit without dimension, accepted internationally
	for measuring the traffic intensity.  This unit is defined as
	the aggregate of continuous occupation of a channel for one
	hour (3600 seconds).  An intensity of one Erlang means the
	channel is continuously occupied.

erotica

	{pornography}

ERP

	{enterprise resource planning}

error

	1. A discrepancy between a computed, observed, or measured
	value or condition and the true, specified, or theoretically
	correct value or condition.

	2. A mental mistake made by a programmer that may result in a
	program fault.

	(13 May 1996)

error-based testing

	<programming> Testing where information about programming
	style, error-prone language constructs, and other programming
	knowledge is applied to select test data capable of detecting
	faults, either a specified class of faults or all possible
	faults.

	(13 May 1996)

error correcting memory

	<storage> (ECM) {RAM} using some kind of {error detection and
	correction} (EDAC) scheme.  The two types of memory errors in
	RAM (especially {DRAM}) are "soft" errors due to
	radiation-induced bit switching, and "hard" errors due to the
	unexpected deterioration of a memory chip.  Soft errors do not
	indicate lasting damage to the memory board, but they do
	corrupt programs or data.  Hard errors demand physical
	repairs.  Single bit memory failures are the most common.  A
	hard single bit failure, such as that caused by a completely
	dead chip can be corrected by EDAC if each chip supplies only
	one bit of each word.  EDAC memory is the most common level of
	protection for {minicomputer}s and {mainframe}s whereas the
	cheaper parity protection is more common in {microcomputer}s.

	[Clearpoint, "The Designer's Guide to Add-In Memory", Third
	Addition].

	(10 Oct 1995)

error detection and correction

	<algorithm, storage> (EDAC, or "error checking and
	correction", ECC) A collection of methods to detect errors in
	transmitted or stored data and to correct them.  This is done
	in many ways, all of them involving some form of coding.  The
	simplest form of error detection is a single added {parity
	bit} or a {cyclic redundancy check}.  Multiple parity bits can
	not only detect that an error has occurred, but also which
	bits have been inverted, and should therefore be re-inverted
	to restore the original data.  The more extra bits are added,
	the greater the chance that multiple errors will be detectable
	and correctable.

	Several codes can perform Single Error Correction, Double
	Error Detection (SECDEC).  One of the most commonly used is
	the {Hamming code}.

	At the other technological extreme, cuniform texts from about
	1500 B.C. which recorded the dates when Venus was visible,
	were examined on the basis of contained redundancies (the
	dates of appearance and disappearance were suplemented by the
	length of time of visibility) and "the worst data set ever
	seen" by [Huber, Zurich] was corrected.

	{RAM} which includes EDAC circuits is known as {error
	correcting memory} (ECM).

	[Wakerly, "Error Detecting Codes", North Holland 1978].

	[Hamming, "Coding and Information Theory", 2nd Ed, Prentice
	Hall 1986].

	(14 Mar 1995)

es

	1. Extensible Shell.  A {Unix} {shell} written by Byron
	Rakitzis <byron@netapp.com> and Paul Haahr <haahr@adobe.com>,
	derived from {rc}.  Es has real functions, {closure}s,
	exceptions and the ability to redefine most internal shell
	operations.

	Version 0.84.  {(ftp://ftp.sys.utoronto.ca/pub/es/)}.

	["Es - A Shell with Higher Order Functions", P. Haahr et al,
	Proc Winter 1993 Usenix Technical Conference].

	(30 Apr 1993)

	2. Expert System.  An {expert system} for the {IBM PC}.  It
	features {forward chaining}, {backward chaining} and {fuzzy
	set} relations.

	{(ftp://ftp.uu.net/pub/ai/expert-sys/summers.tar.Z)}

	[BYTE Oct 1990].

ES-1

	Early text editing interpreter.  Sammet 1969, p.684.

ESA

	European Space Agency.

ESC

	{escape}

ESCAPE

	<language> An early system on the {IBM 650}.

	[Listed in CACM 2(5):16 (May 1959)].

	(05 Jan 1995)

escape

	<character> (ESC) {ASCII} character 27.

	When sent by the user, escape is often used to abort execution
	or data entry.  When sent by the computer it often starts an
	{escape sequence}.

	(27 Nov 1997)

escape sequence

	<character> (Or "escape code") A series of characters starting
	with the {escape} character (ASCII 27).  Escape sequences are
	often used to control display devices such as {VDU}s.  An
	escape sequence might change the colour of subsequent text,
	reassign keys on the keyboard, change printer settings or
	reposition the cursor.  The escape sequences of the {DEC}
	{vt100} {video terminal} have become a {de facto standard} for
	this purpose.

	The term is also used for any sequence of characters that
	temporarily suspends normal processing of a stream of
	characters to perform some special function.  For example, the
	{Hayes} {modem} uses the sequence "+++" to escape to command
	mode in which characters are interpreted as commands to the
	modem itself rather than as data to pass through.

	[Was the character named after this use or vice versa?]

	(27 Nov 1997)

ESCD

	{Extended System Configuration Data}

ESCON

	{Enterprise Systems CONnectivity}

ESD

	{Electrostatic Discharge}

ESDI

	{Enhanced Small Disk Interface}

ESF

	Eureka Software Factory.

ESI

	1. {European Software Institute}.

	2. A dialect of {JOSS}.

	[Sammet 1969, p. 217].

esim

	A language for {simulation} of {VLSI} at the {switch level}.
	The {primitive}s are nodes and {transistor}s.

	[C.M. Baker et al, "Tools for Verifying Integrated CIrcuit
	Design", Lambda 1(3):22-30 (1980)].

	(20 Oct 1994)

ESL

	{Expert Systems} Ltd.

ESLPDPRO

	{ESL} public domain version of Edinburgh {Prolog} for
	{MS-DOS}.  The code is totally compatible with C-Prolog.

	{(ftp://aisun1.ai.uga.edu/ai.prolog/eslpdpro.zip)}

ESML

	Extended Systems Modelling Language: a real-time software
	engineering methodology based on RTSA.

ESMTP

	<messaging, protocol> Extended {SMTP}.  Initially defined in
	{RFC 1869} and extended thereafter.

	See also {ETRN}.

	(21 Nov 1997)

ESP

	1. Extra Simple Pascal.  Subset of Pascal.

	2. Econometric Software Package.  Statistical analysis of time
	series.  "Econometric Software Package, User's Manual",
	J.P. Cooper, Graduate School of Business, U Chicago.  Sammet
	1978.

	3. {Extended Self-containing Prolog}.

	4. An early {symbolic mathematics} system.

	[A. Rom, Celest Mech 3:331-345 (1971)].

	(08 Dec 1994)

ESPOL

	An {ALGOL} superset used to write the MCP (Master Control
	Program) on the {Burroughs 6700}.  Superseded by {NEWP}.

	["The B6700 ESPOL Reference Manual", Burroughs, 1970].

ESPRIT

	{European Strategic Programme for Research in Information Technology}

ESR

	{Eric S. Raymond}

essential complexity

	<programming> A measure of the "structuredness" of a program.

	(13 May 1996)

Estelle

	A {Pascal} extension for formal specification of computer
	{network} {protocol}s.  Protocols are described by {modules}
	which are communicating {NFA}s.  Modules are arranged in a
	dynamic hierarchy and communicate at named interaction points.

	{EstPC (ftp:osi.ncsl.nist.gov/pub/osikit/estpc)} Compiles
	Estelle into C.  {petdingo} Translates Estelle into C++

	Adopted by {ITU-T}.  ISO 9074 (1989).

	["The Formal Description Technique Estelle", M.  Diaz et al
	eds, N-H 1989].

Esterel

	A distributed language for synchronous interaction of
	{real-time} systems with their environment.  Uses explicit
	timing requests.  Esterel programs are compiled into finite
	{automata}.

	["The ESTEREL Programming Language and its Mathematical
	Semantics", G. Berry & L. Cosserat, TR 327, INRIA, 1984].

EstPC

	A {compiler} from {Estelle} to {C}.

	{(ftp:osi.ncsl.nist.gov/pub/osikit/estpc)}

	(19 Sep 1994)

ET

	Bernd Gersdorf, U Bremen.  An integration of functional and
	logic programming.

ET++

	A {Smalltalk}-like system for {Sun}s, built on {C++} by
	Weinand of UBILAB Zurich.  Version 3.0-alpha includes {class}
	libraries and documentation.

	{(ftp://iamsun.unibe.ch/C++/ET++/et2.2.tar.Z)}

	E-mail: Erich Gamma <gamma@ifi.unizh.ch>.

	(26 Oct 1992)

eta abstraction

	See {eta conversion}.

eta conversion

	In {lambda-calculus}, the eta conversion rule states

		\ x . f x  <-->  f

	provided x does not occur free in f and f is a function.  Left
	to right is eta reduction, right to left is eta abstraction
	(or eta expansion).

	This conversion is only valid if {bottom} and \ x . bottom are
	equivalent in all contexts.  They are certainly equivalent
	when applied to some argument - they both fail to terminate.
	If we are allowed to force the evaluation of an expression in
	any other way, e.g. using {seq} in {Miranda} or returning a
	function as the overall result of a program, then bottom and
	\ x . bottom will not be equivalent.  See also {observational
	equivalence}, {reduction}.

eta expansion

	See {eta conversion}.

eta reduction

	See {eta conversion}.

ETB

	{End Transmission Block}

ETC

	ExTendible Compiler.  FORTRAN-like, macro extendible.  "ETC -
	An Extendible Macro-Based Compiler", B.N. Dickman, Proc SJCC
	38 (1971).

e-text

	{electronic text}

ETHER

	<language> A {concurrent} {object-oriented} language?

	(18 Mar 1997)

EtherGate

	Multi-protocol Ethernet gateway made by LRT.
	See Computer Systems, October 1985.

Ethernet

	<networking> A coaxial cable {local area network} first
	described by Metcalfe & Boggs of {Xerox PARC} in 1976.
	Specified by {DEC}, {Intel} and {XEROX} (DIX) as {IEEE 802.3}
	and now recognised as the industry standard.

	Data is broken into {packets} which are transmitted using the
	{CSMA/CD} {algorithm} until they arrive at the destination
	without colliding with any other.  The first {contention slot}
	after a transmission is reserved for an {acknowledge} packet.
	A {node} is either transmitting or receiving at any instant.
	The {bandwidth} is about 10 Mbit/s.  Disk-Ethernet-Disk
	transfer rate with {TCP/IP} is typically 30 kilobyte per
	second.  The cable is a 50 ohm coaxial cable with multiple
	shielding.

	Version 2 specifies that {collision} detect of the transceiver
	must be activated during the {inter-packet gap} and that when
	transmission finishes the differential transmit lines are
	driven to 0V (half step).  It also specifies some {network
	management} functions such as reporting {collisions}, retries
	and {deferrals}.

	{Usenet} newsgroup: {news:comp.dcom.lans.ethernet}.

	{(http://wwwhost.ots.utexas.edu/ethernet/ethernet-home.html)}

	See also {cheapernet}, {Fast Ethernet}.

	(16 Apr 1997)

Ethernet address

	(Or "{MAC} address") The physical address identifying an
	individual {Ethernet controller} board.  An Ethernet addess is
	a 48-bit number aabbccddeeff where a-f are {hexadecimal}
	digits.  The first 24 bits, aabbcc, identify the manufacturer
	of the controller.  The Ethernet address is hard-wired on some
	controllers, stored in a {ROM} on some, and others allow it to
	be changed from software.  It is usually written as six
	hexadecimal numbers, e.g. 08:00:20:03:72:DC.

	See also {ARP}, {Internet address}.

	(21 Feb 1996)

Ethernet meltdown

	A {network meltdown} on {Ethernet}.

	(29 Nov 1994)

EtherTalk

	<networking> An {Apple Computer} {network} {standard} used to
	extend an {AppleTalk} network across an {Ethernet} network.

	Compare {LocalTalk}.

	(29 Nov 1994)

ethics

	{computer ethics}

ETM

	<database> An {active DBMS} from the {University of
	Karlsruhe}.

	[Expansion?  Features?]

	(23 Jun 1997)

ETRN

	<messaging, protocol> ("Extended {TURN}") An {ESMTP} command
	(first defined in {RFC 1985}) with which a {client} asks the
	{server} to deliver queued mail to the client via a new ESMTP
	connection.

	ETRN supercedes the {SMTP} "TURN" command in the same way that
	ESMTP's "{EHLO}" supercedes SMTP's "{HELO}".

	(21 Nov 1997)

ETSI

	{European Telecommunications Standards Institute}

ETX

	{End Of Text}

Euclid

	(Named after the Greek geometer, fl ca 300 BC.)  A {Pascal}
	descendant for development of verifiable system software.  No
	{goto}, no {side effect}s, no global assignments, no
	functional arguments, no nested procedures, no floats, no
	{enumeration type}s.  Pointers are treated as indices of
	special arrays called collections.  To prevent {aliasing},
	Euclid forbids any overlap in the list of actual parameters of
	a procedure.  Each procedure gives an imports list, and the
	compiler determines the identifiers that are implicitly
	imported.  Iterators.

	["Report on the Programming Language Euclid", B.W. Lampson et
	al, SIGPLAN Notices 12(2):1-79 (Feb 1977)].

Euclid's Algorithm

	<algorithm> An {algorithm} for finding the {greatest common
	divisor} (GCD) of two numbers.  It relies on the identity

		gcd(a, b) = gcd(a-b, b)

	To find the GCD of two numbers by this algorithm, repeatedly
	replace the larger by subtracting the smaller from it until
	the two numbers are equal.  E.g. 132, 168 -> 132, 36 -> 96, 36
	-> 60, 36 -> 24, 36 -> 24, 12 -> 12, 12 so the GCD of 132 and
	168 is 12.

	This algorithm requires only subtraction and comparison
	operations but can take a number of steps proportional to the
	difference between the initial numbers (e.g. gcd(1, 1001) will
	take 1000 steps).

	(30 Jun 1997)

Eudora

	{Electronic mail} software for communicating over {TCP/IP}
	from {Macintosh}, {Microsoft Windows}, {Windows NT}, and {IBM}
	{OS/2} computers.  Both commercial and free versions are
	produced by {QUALCOMM, Inc.}

EULER

	[Named after the Swiss mathematician Leonhard Euler
	(1707-1783)] A revision of {ALGOL} by {Niklaus Wirth}.  A
	small predecessor of {Pascal}.

	["EULER: A Generalisation of ALGOL and Its Formal Definition",
	N. Wirth, CACM 9(1) (Jan 1966) and 9(2) (Feb 1966)].

EuLisp

	1985-present.  A {Lisp} dialect intended to be a common
	European {standard}, with influences from {Common LISP}, {Le
	LISP}, {Scheme} and {T}.  {First-class function}s, {class}es
	and {continuation}s, both {static scope} and {dynamic scope},
	{modules}, support for {parallelism}.  The class system
	({TELOS}) incorporates ideas from {CLOS}, {ObjVLisp} and
	{Oaklisp}.

	See also {Feel}.

	E-mail: <eudist@maths.bath.ac.uk>.

EUnet Ltd.

	EUnet Ltd. is jointly owned by the EUnet national service
	providers and {EurOpen}, the European Forum for Open Systems.

	EUnet services include {electronic mail} ({Internet}-style
	{RFC 822} as well as {X.400}), {InterEUnet} ({Internet
	Protocol}) connectivity and services such as {remote login}
	and {file transfer} over {leased line}s, {dial-up line}s,
	{X.25} and {Integrated Services Digital Network}.  EUnet is
	the primary European region provider of {network news} and the
	top-level European distributor of {Internet Talk Radio}.

	EUnet operates its own infrastructure across Europe and is the
	largest European component of the {Internet}.  EUnet is a
	member of {Commercial Internet Exchange} and {Ebone93}, a
	research network consortium.

	E-mail: <info@EU.net>.  {(http://www.eu.net/)}.

Euphoria

	End User Programming with Hierarchical Objects for Robust
	Interpreted Applications.  Interpreted language with dynamic
	storage and dynamic typing.  Rapid Deployment Software.

	E-mail: <robert.craig@canrem.com>.

Eureka

	A European technological development programme.

Eureka step

	In {program transformation}, a transformation which is not
	obvious or easy to define as an {algorithm}.

	(08 Dec 1994)

Eurisko

	A language for "{opportunistic programming}" written by Lenat
	in 1978.  Eurisko constructs its own methods and modifies its
	strategies as it tries to solve a problem.

	[Mentioned by Alan Kay, SIGPLAN Notices 28(3) (March 1993),
	p. 88].

	(08 Dec 1994)

Eurocard

	A range of standard circuit board sizes.

	Normal	       double Eurocard = 233.4 x 160 mm
	Extended       double Eurocard = 233.4 x 220 mm
	Super extended double Eurocard = 233.4 x 250 mm
	Hyper extended double Eurocard = 233.4 x 280 mm

Euro-ISDN

	European Integrated Services Digital Network.

	An {ETSI} standard for {Integrated Services Digital Network}
	being phased in in March 1994.  Euro-ISDN will allow full
	transparent interworking between all European countries
	(members of the {CEPT}).  It is available on a commercial
	basis in most European countries.

	(08 Dec 1994)

EuroNet

	<company> A company operating from Amsterdam, The Netherlands
	which has connected users of {Apple Macintosh}, {IBM PC} and
	other {personal computer}s to the {Internet} since 1 Aug 1994.
	They recommend a graphical based connection using {PPP} or
	{SLIP} for Apple Macintosh and {MS Windows}.  {Atari} and
	{Amiga} users are equally welcome.  They offer a full
	graphic-based connection to the Internet.  All subscribers
	have their own address and can use all services of the
	Internet including {electronic mail}, {Usenet} news, {FTP}
	files transfer, {WWW} ({Mosaic}) and {telnet}.

	{(http://www.euro.net/)}.  E-mail: <info@euro.net>.  Telephone:
	+? (020) 625 6161.  Fax: (020) 625 7435.  Address: Prins
	Hendrikkade 48, 1012AC Amsterdam, The Netherlands.

	(26 Oct 1994)

EuropaNET

	A combination of pan-European backbone services run by DANTE.

European Academic and Research Network

	<networking> (EARN) A self-managing network in the research
	community originally sponsored by {IBM}.  It uses {BITNET}
	{protocols} and connects to BITNET in the USA.

	(15 Nov 1995)

European Strategic Programme for Research in Information Technology

	<project> (ESPRIT) A funding programme to develop Information
	Technology in the European Economic Communities.  Superseded
	by {Framework 4}.

	(13 May 1996)

European Telecommunications Standards Institute

	<body> (ETSI) A European version of the {ITU-T}(?).

	(13 May 1996)

EUUG

	{European Unix User Group}

Eva

	1. A toy ALGOL-like language used in "Formal Specification of
	Programming Languages: A Panoramic Primer", F.G. Pagan, P-H
	1981.

	2. Explicit Vector Language.

EVALUATE

	<programming> The {COBOL85} {keyword} for a {switch
	statement}.

	(10 Jun 1997)

evaluation

	<programming> 1. Converting an expression into a value using
	some {reduction strategy}.

	2. The process of examining a system or system component to
	determine the extent to which specified properties are
	present.

	(13 May 1996)

evaluation strategy

	{reduction strategy}

evaluator

	<theory> Geoff Burn defines evaluators E0, E1, E2 and E3 which
	when applied to an expression, reduce it to varying degrees.
	E0 does no evaluation, E1 it evaluates to {weak head normal
	form} (WHNF), E2 evaluates the structure of a list, i.e. it
	evaluates it either to NIL or evaluates it to a CONS and then
	applies E2 to the second argument of the CONS.  E3 evaluates
	the structure of a list and evaluates each element of the list
	to {WHNF}.  This concept can be extended to data structures
	other than lists and forms the basis of the {evaluation
	transformer} style of {strictness analysis}.

	(12 Dec 1994)

event

	1. An occurance or happening of significance to a task or
	program, such as the completion of an asynchronous
	input/output operation.

	See also {event-driven}.

	2. A transaction or other activity that affects the records in
	a file.

	(12 Dec 1994)

event-driven

	A kind of program, such as a {graphical user interface}, with
	a main loop which just waits for {event}s to occur.  Each
	event has an associated handler which is passed the details of
	the event, e.g. mouse button 3 pressed at position (355,990).

	For example, {X window system} {application program}s are
	event-driven.

	See also {callback}.

	(12 Dec 1994)

evil

	As used by a {hacker}, implies that some system, program,
	person, or institution is sufficiently maldesigned as to be
	not worth the bother of dealing with.  Unlike the adjectives
	in the cretinous, {losing}, {brain-damaged} series, "evil"
	does not imply incompetence or bad design, but rather a set of
	goals or design criteria fatally incompatible with the
	speaker's.  This usage is more an aesthetic and engineering
	judgment than a moral one in the mainstream sense.  "We
	thought about adding a {Blue Glue} interface but decided it
	was too evil to deal with."  "{TECO} is neat, but it can be
	pretty evil if you're prone to typos."  Often pronounced with
	the first syllable lengthened, as /eeee'vil/.

	Compare {evil and rude}.

	(12 Dec 1994)

evil and rude

	Both {evil} and {rude}, but with the additional connotation
	that the rudeness was due to malice rather than incompetence.
	Thus, for example: {Microsoft}'s {Windows NT} is evil because
	it's a competent implementation of a bad design; it's rude
	because it's gratuitously incompatible with {Unix} in places
	where compatibility would have been as easy and effective to
	do; but it's evil and rude because the incompatibilities are
	apparently there not to fix design bugs in {Unix} but rather
	to lock hapless customers and developers into the {Microsoft}
	way.  Hackish evil and rude is close to the mainstream sense
	of "evil".

	(12 Dec 1994)

evolutionary algorithm

	(EA) An {algorithm} which incorporates aspects of natural
	selection or survival of the fittest.  An evolutionary
	algorithm maintains a population of structures (usually
	randomly generated initially), that evolves according to rules
	of selection, recombination, mutation and survival, referred
	to as genetic operators.  A shared "environment" determines
	the fitness or performance of each individual in the
	population.  The fittest individuals are more likely to be
	selected for reproduction (retention or duplication), while
	recombination and mutation modify those individuals, yielding
	potentially superior ones.

	EAs are one kind of {evolutionary computation} and differ from
	{genetic algorithm}s.  A GA generates each individual from
	some encoded form known as a "chromosome" and it is these
	which are combined or mutated to breed new individuals.

	EAs are useful for optimisation when other techniques such as
	{gradient descent} or direct, analytical discovery are not
	possible.  Combinatoric and real-valued function optimisation
	in which the optimisation surface or fitness landscape is
	"rugged", possessing many {locally optimal} solutions, are
	well suited for evolutionary algorithms.

	(03 Feb 1995)

evolutionary computation

	Computer-based problem solving systems that use computational
	models of evolutionary processes as the key elements in design
	and implementation.

	A number of evolutionary computational models have been
	proposed, including {evolutionary algorithm}s, {genetic
	algorithm}s, the {evolution strategy}, {evolutionary
	programming}, and {artificial life}.

	{The Hitchhiker's Guide to Evolutionary Computation
	(http://www.cis.ohio-state.edu/hypertext/faq/bngusenet/comp/ai/genetic/top.html)}.

	{Bibliography
	(http://liinwww.ira.uka.de/bibliography/Ai/EC-ref.html)}.

	{Usenet} newsgroup: {news:comp.ai.genetic}.

	(02 Mar 1995)

evolutionary programming

	(EP) A {stochastic} optimisation strategy originally conceived
	by Lawrence J. Fogel in 1960.

	An initially random population of individuals (trial
	solutions) is created.  Mutations are then applied to each
	individual to create new individuals.  Mutations vary in the
	severity of their effect on the behaviour of the individual.
	The new individuals are then compared in a "tournament" to
	select which should survive to form the new population.

	EP is similar to a {genetic algorithm}, but models only the
	behavioural linkage between parents and their offspring, rather
	than seeking to emulate specific genetic operators from nature
	such as the encoding of behaviour in a genome and
	recombination by genetic crossover.

	EP is also similar to an {evolution strategy} (ES) although
	the two approaches developed independently.  In EP, selection
	is by comparison with a randomly chosen set of other
	individuals whereas ES typically uses {deterministic}
	selection in which the worst individuals are purged from the
	population.

	(03 Feb 1995)

evolution strategy

	(ES) A kind of {evolutionary algorithm} where individuals
	(potential solutions) are encoded by a set of real-valued
	"object variables" (the individual's "genome").  For each
	object variable an individual also has a "strategy variable"
	which determines the degree of mutation to be applied to the
	corresponding object variable.  The strategy variables also
	mutate, allowing the rate of mutation of the object variables
	to vary.

	An ES is characterised by the population size, the
	number of offspring produced in each generation and whether
	the new population is selected from parents and offspring or
	only from the offspring.

	ES were invented in 1963 by Ingo Rechenberg, Hans-Paul
	Schwefel at the {Technical University of Berlin} (TUB) while
	searching for the optimal shapes of bodies in a flow.

	(03 Feb 1995)

EWOS

	{European Workshop for Open Systems}

exa-

	{prefix}

Exabyte

	<company, storage> A company and, by extension, a tape format
	for computer data backup and transfer.  The tape is a data
	quality 8mm video cassette recorder tape.  Exabyte units can
	store between five and fourteen {gigabyte}s of data per tape.
	Exabytes are usually attached to {Unix} {workstation}s.

	[What different tape capacities exist?  Compare with DAT?]

	(06 Jul 1995)

exabyte

	<unit> 2^60 = 1,152,921,504,606,846,976 {bytes} = 1024
	{petabytes} or roughly 10^18 bytes.

	See {prefix}.

	(12 Aug 1996)

examining the entrails

	The process of {grovel}ling through a {core dump} or {hex}
	image in an attempt to discover the bug that brought a program
	or system down.  The reference is to divination from the
	entrails of a sacrified animal.

	Compare {runes}, {incantation}, {black art}, {desk check}.

	(12 Dec 1994)

EXAPT

	EXtended {APT}.

Excel

	{Microsoft Excel}

Excelan

	Manufacturers of intelligent {Ethernet} cards.  Software and
	addresses are down-loadable.  The cards have their own {RAM}
	for buffers.

Excelerator

	A set of {CASE} tools from {Index Technology Corporation}.

exception

	An error condition that changes the normal {flow of control}
	in a program.  An exception may be generated ("raised") by
	{hardware} or {software}.  Hardware exceptions include
	{reset}, {interrupt} or a signal from a {memory management
	unit}.  Exceptions may be generated by the {arithmetic logic
	unit} or {floating-point unit} for numerical errors such as
	divide by zero, {overflow} or {underflow} or {instruction
	decoding} errors such as privileged, reserved, {trap} or
	undefined instructions.  Software exceptions are even more
	varied and the term could be applied to any kind of error
	checking which alters the normal behaviour of the program.

	(31 Oct 1994)

exception handler

	Special code which is called when an {exception} occurs during
	the execution of a program.  If the programmer does not
	provide a handler for a given exception, a built-in system
	exception handler will usually be called resulting in abortion
	of the program run and some kind of error indication being
	returned to the user.

	Examples of exception handler mechanisms are {Unix}'s signal
	calls and {Lisp}'s {catch} and {throw}.

	(31 Oct 1994)

EXCH

	/eks'ch*/ or /eksch/ To exchange two things, each for the
	other; to swap places.  If you point to two people sitting
	down and say "Exch!", you are asking them to trade places.
	EXCH, meaning EXCHange, was originally the name of a PDP-10
	instruction that exchanged the contents of a register and a
	memory location.  Many newer hackers are probably thinking
	instead of the {PostScript} exchange operator (which is
	usually written in lowercase).

excl

	/eks'kl/ exclamation mark.

	See {bang}, {shriek}, {ASCII}.

	(31 Jan 1995)

exclamation mark

	!

	Common: {bang}; pling; excl; {shriek}; {ITU-T}: exclamation
	mark.  Rare: factorial; exclam; smash; cuss; boing; yell; wow;
	hey; wham; eureka; soldier; {INTERCAL}: spark-spot.

	(06 Mar 1995)

EXE

	/eks'ee/ or /eek'see/ or /E-X-E/ An executable binary file.
	Some operating systems (notably {MS-DOS}, VMS, and TWENEX) use
	the extension .EXE to mark such files.  This usage is also
	occasionally found among Unix programmers even though Unix
	executables don't have any required suffix.

EXEC

	Early batch language for IBM VM/CMS systems.  SC19-6209
	Virtual Machine/ System Product CMS Command and Macro
	Reference (Appendix F. CMS EXEC Control Statements)

exec

	/eg-zek'/ <operating system> 1. execute.

	A synonym for {chain} derived from the {Unix} "exec" {system
	call}.

	{Unix manual page}: execve(2).

	2. (Obsolete) {executive}.

	The mainstream "exec" as an abbreviation for (human) executive
	is *not* used.  To a hacker, an "exec" is a always a program,
	never a person.

	3. At {IBM} and {VM}/{CMS} shops, the equivalent of a {shell}
	command file.

	4. <operating system> The innermost {kernel} of the {Amiga}
	{operating system} which provides shared-library support,
	device interface, {memory management}, {CPU} management, basic
	{IPC}, and the basic structures for OS extension.  The rest of
	the Amiga OS (windowing, filesystem, third-party extensions,
	etc.) is built using these structures.

	(01 Aug 1997)

EXEC 2

	1. A {script}ing language produced by {IBM} in the late 1970s.

	Superseded by {REXX}.

	[SC24-5219, "Virtual Machine/System Product EXEC 2
	Reference"].

	2. An archaic {operating system} from {UNIVAC}.

	(20 Feb 1995)

	[Were they written with or without a space?]

executable

	<operating system> A {binary} file containing a program in
	{machine language} which is ready to be {execute}d (run).

	The term might also be, but generally isn't, applied to
	{scripts} which are interpreted by a {command line
	interpreter}.  Executables are distinguished in {Unix} by
	having the execute permission bits set, at least for the
	owner.  {MS-DOS} uses the {filename extension} ".exe".

	(21 Jun 1997)

executable content

	<operating system> Executable programs sent by one computer to
	another via a network.  For example a {Java} {applet} is
	executable content.

	[In what context is this term used?]

	(10 Jan 1997)

execute

	{execution}

execution

	<operating system, programming> The process of carrying out
	the {instructions} in a computer program by a computer.

	See also {dry run}.

	(13 May 1996)

executive

	The {command interpreter} or {shell} for an {operating
	system}.  The term is used especially around {mainframe}s and
	probably derived from {UNIVAC}'s archaic {EXEC 2} and {EXEC 8}
	{operating system}s.

	(30 Nov 1994)

exercise, left as an

	Used to complete a proof in technical books when one doesn't
	mind a {handwave}, or to avoid one entirely.  The complete
	phrase is: "The proof [or "the rest"] is left as an exercise
	for the reader."  This comment *has* occasionally been
	attached to unsolved research problems by authors possessed of
	either an evil sense of humour or a vast faith in the
	capabilities of their audiences.

	(20 Feb 1995)

exhaustive testing

	<programming> Executing a program with all possible
	combinations of inputs or values for program variables.

	(13 May 1996)

existential quantifier

	{quantifier}

EXODUS

	<database> An extensible {database} project developed at the
	University of Wisconsin.

	(13 May 1996)

eXodus

	A package from White Pines allowing the Macintosh to be used
	as an X server.

EXOS

	A brand of {Ethernet controller} card and Ethernet software
	for {Unix}.

	(12 Jan 1995)

expanded memory

	<storage> Memory used through {EMS}.  In systems based on
	{Intel 80386} or later processor expanded memory is part of
	the {extended memory} that is mapped into the {expanded memory
	page frame} by the processor.  The mapping is controlled by
	the {EMM}.  In earlier systems, a dedicated {EMS} hardware
	adaptor is needed to map memory into the page frame.  In both
	cases, an appropriate {device driver} is needed for the proper
	communication between hardware and {EMM}.

	(10 Jan 1996)

expanded memory manager

	<software, storage> (EMM) {IBM PC} memory manager software
	implementing {Expanded Memory Specification}, such as {EMM386}
	or {QEMM386}.  EMMs can usually provide {UMB} as well.

	(10 Jan 1996)

expanded memory page frame

	<storage> The part of the {IBM PC} {reserved memory} address
	space used by {EMS}.

	(10 Jan 1996)

Expanded Memory Specification

	<storage> (EMS) An {IBM PC} memory {paging} scheme enabling
	access to memory other than {conventional memory} in {real
	mode}.

	{Expanded memory} is provided through a {page frame} of at
	least 64 {kilobytes} in the {reserved memory} address region.
	Access to this memory is provided by an {expanded memory
	manager} (EMM) software.  The EMM functions are accessible
	through {interrupt} 67H.

	In {8086} or {8088} based systems this is the only way to use
	memory beyond conventional memory.  In systems based on
	{80286} or later, {XMS} and {HMA} provide alternative methods.

	EMS was developed jointly by {Lotus}, {Intel}, and {Microsoft}
	prior to 1988.  Accordingly, this specification is sometimes
	referred to as LIM EMS.

	A complete discussion of EMS and programming examples can be
	found in ["PC System Programming for developers", 1989, ISBN
	1-55755-035-2 (Book only) and ISBN 1-55755-036-0 (Book and
	diskette)].

	{LIM EMS 4.0 spec
	(ftp://ftp.intel.com/pub/PCandNetworkSupport/FAQs-Self-Help_Docs/SPEC.EMS)}.

	{EEMS}, a competing expanded memory management standard, was
	developed by {AST Research}, {Quadram} and {Ashton-Tate}.

	See also {upper memory block}.

	(10 Jan 1996)

expect

	<language, tool> A {Unix} tool written in {Tcl} and a {script
	language} for automating the operation of {interactive}
	applications such as {telnet}, {FTP}, {passwd}, {fsck},
	{rlogin}, {tip}, etc..  Expect is also useful for testing
	these applications.  By adding {Tk}, you can also wrap
	interactive applications in {X11} {GUI}s.

	{Home (http://expect.nist.gov/)}.

	["expect: Scripts for Controlling Interactive Tasks", Don
	Libes, Comp Sys 4(2), U Cal Press Journals, Nov 1991].

	(09 Jun 1997)

Experimental Physics Control Systems

	(EPCS) A group of the European Physical Society, focussing on
	all aspects of controls, especially {informatics}, in
	experimental physics, including accelerators and experiments.

	(12 Dec 1994)

Experimental Programming Language

	(EPL) A language by David May which influenced {occam}.

	["EPL: An Experimental Language for Distributed Computing",
	D.C. May, in Trends and Applications 1978: Distributed
	Processing, NBS, pp.69-71].

	(18 Nov 1994)

Expert Judgement Models

	<programming> A method of software estimation that is based on
	consultation with one or more experts that have experience
	with similar projects.  An expert-consensus mechanism such as
	the {Delphi Technique} may be used to produce the estimate.

	(29 May 1996)

expert system

	<artificial intelligence> A computer program that contains a
	{knowledge base} and a set of {algorithm}s or rules that infer
	new facts from knowledge and from incoming data.

	An expert system is an artificial intelligence application
	that uses a knowledge base of human expertise to aid in
	solving problems.  The degree of problem solving is based on
	the quality of the data and rules obtained from the human
	expert.  Expert systems are designed to perform at a human
	expert level.  In practice, they will perform both well below
	and well above that of an individual expert.

	The expert system derives its answers by running the knowledge
	base through an inference engine, a software program that
	interacts with the user and processes the results from the
	rules and data in the knowledge base.

	Expert systems are used in applications, such as medical
	diagnosis, equipment repair, investment analysis, financial,
	estate and insurance planning, route scheduling for delivery
	vehicles, contract bidding, counseling for self-service
	customers, production control and training.

	(29 May 1996)

Expert Systems Ltd.

	<company> (ESL) Distributors of {ESLPDPRO}.

	Adderss: Magdalen Centre, Oxford Science Park, Oxford, OX4
	4GA.  Telephone +44 (865) 784474.

	(29 May 1996)

explicit parallelism

	A feature of a programming language for a {parallel
	processing} system which allows or forces the programmer to
	annotate his program to indicate which parts should be
	executed as independent parallel tasks.  This is obviously
	more work for the programmer than a system with {implicit
	parallelism} (where the system decides automatically which
	parts to run in parallel) but may allow higher performance.

exploit

	<security> A security hole or an instance of taking advantage
	of a security hole.

	"[...] {hackers} say exploit. {sysadmin}s say hole"
	-- {Mike Emke (http://emke.com/)}

	Emke reports that the stress is on the second syllable.  If
	this is true, this may be a case of of hackerly zero-deriving
	verbs (especially instatials) from nouns, akin to "write" as a
	noun to describe an instance of a disk drive writing to a
	disk.

	(31 Jan 1997)

Exploratory Data Analysis

	(EDA)

	[J.W.Tukey, "Exploratory Data Analysis", 1977, Addisson
	Wesley].

exponent

	<programming> (Or "characteristic") The part of a
	{floating-point} number specifying the power of ten by which
	the {mantissa} should be multiplied.  In the common notation,
	e.g. 3.1E8, the exponent is 8.

	(27 Feb 1995)

exponential

	1. <mathematics> A function which raises some given constant
	(the "base") to the power of its argument.  I.e.

		f x = b^x

	If no base is specified, {e}, the base of {natural
	logarthim}s, is assumed.

	2. <complexity> {exponential-time algorithm}.

	(27 Apr 1995)

exponential-time

	<complexity> The set or property of problems which can be
	solved by an {exponential-time algorithm} but for which no
	{polynomial-time algorithm} is known.

	(27 Apr 1995)

exponential-time algorithm

	<complexity> An {algorithm} (or {Turing Machine}) that is
	guaranteed to terminate within a number of steps which is a
	{exponential} function of the size of the problem.

	For example, if you have to check every number of n digits to
	find a solution, the {complexity} is O(10^n), and if you add
	an extra digit, you must check ten times as many numbers.

	Even if such an algorithm is practical for some given value of
	n, it is likely to become impractical for larger values.  This
	is in contrast to a {polynomial-time algorithm} which grows
	more slowly.

	See also {computational complexity}, {polynomial-time},
	{NP-complete}.

	(27 Apr 1995)

Express

	1. A language supporting {concurrency} through {message
	passing} to named message queues from {ParaSoft} Corporation

	{(ftp://ftp.parasoft.com/express/docs)}

	2. Data definition language, meant to become an ISO standard
	for product data representation and exchange.  TC 184/SC4 N83,
	ISO, 31 May 1991.  E-mail: <smith@cme.nist.gov>.

	3. A data modelling language adopted by the {ISO} working
	group on {STEP}.

extend

	<programming> To add {features} to a program, especially
	through the use of {hooks}.

	"Extend" is very often used in the phrase "extend the
	{functionality} of a program."

	{Plug-ins} are one form of extension.

	(21 Jun 1997)

Extended Affix Grammar

	<language, grammar> (EAG) A formalism developed by Marc
	Seutter <marcs@cs.kun.nl> for describing both the {context
	free syntax} and the {context sensitive syntax} of languages.

	EAG is a member of the family of two-level grammars.  They are
	very closely related to two-level {van Wijngaarden grammars}.
	The EAG compiler will generate either a {recogniser}, a
	{transducer}, a {translator}, or a {syntax directed editor}
	for a language described in the EAG formalism.

	{FTP KUN (ftp://hades.cs.kun.nl/pub/eag/)}

	(29 May 1996)

Extended ALGOL

	<language> An extension of {ALGOL 60}, used to write the
	{ESPOL} compiler on the {Burroughs B5500}, {Burroughs B6500},
	and {Burroughs B6700}.

	["Burroughs B6700 Extended ALGOL Language Information Manual",
	No. 5000128 (Jul 1971)].

	[Sammet 1969, p. 196].

	(09 May 1995)

Extended Architecture

	<storage> (XA) A {CD-ROM} drive specification required by
	{Green Book CD-ROM} and {White Book CD-ROM} formats.  Drives
	labelled "XA ready" may require a {firmware} upgrade.

	(02 Nov 1994)

Extended Backus-Naur Form

	<language> Any variation on the basic {Backus-Naur Form} (BNF)
	{meta-syntax} notation with (some of) the following additional
	constructs: {square bracket}s "[..]" surrounding optional
	items, suffix "*" for {Kleene closure} (a sequence of zero or
	more of an item), suffix "+" for one or more of an item,
	{curly bracket}s enclosing a list of alternatives, and
	super/subscripts indicating between n and m occurrences.

	All these constructs can be expressed in plain BNF using extra
	{production}s and have been added for readability and
	succinctness.

	(28 Apr 1995)

Extended Binary Coded Decimal Interchange Code

	<character, standard> /eb's*-dik/, /eb'see`dik/, or
	/eb'k*-dik/ (EBCDIC) An alleged {character set} used on {IBM}
	{dinosaurs}.  It exists in at least six mutually incompatible
	versions, all featuring such delights as non-contiguous letter
	sequences and the absence of serveral punctuation characters
	fairly important for modern computer languages.  IBM adapted
	EBCDIC from {punched card} code early in the 1960s and
	promulgated it as a customer control tactic (see {connector
	conspiracy}).

	In one variant each character is represented by 5 bits and one
	code (11111?) switches between character sets.

	US EBCDIC used more or less the same characters as {ASCII},
	but used different {code points}.  Some ASCII characters did
	not exist in EBCDIC (e.g. {square brackets}) and EBCDIC had
	some ({cent sign}, {not sign}) that were not in ASCII.  As a
	consequence, the translation between ASCII and EBCDIC was
	strictly speaking undefined, and IBM never officially defined
	a complete one.  Users defined one translation which resulted
	in a so-called de-facto EBCDIC containing all the characters
	of ASCII, that all ASCII-related programs use.

	Some printers, telex machines, and even electronic shop tills
	can speak EBCDIC, but only so they can converse with IBM
	mainframes.

	For an in-depth discussion of character code sets, and full
	translation tables, see {Guidelines on 8-bit character codes
	(ftp://ftp.ulg.ac.be/pub/docs/iso8859/iso8859.networking)}.

	Here is a simple translation table:

		   Least significant nibble ->

		   0 1 2 3 4 5 6 7 8 9 A B C D E F
		0  ... controls ...
		1
		2
		3                 ... controls ...
		4               . < ( + |
		5  &          ! $ * ) ; ^
		6  - /          , % _ > ?
		7           ` : # @ ' = "
		8   a b c d e f g h i      
		9   j k l m n o p q r      
		A   ~ s t u v w x y z    [  
		B               ]  
		C  { A B C D E F G H I      
		D  } J K L M N O P Q R      
		E  \  S T U V W X Y Z      
		F  0 1 2 3 4 5 6 7 8 9     

	E.g. the EBCDIC code for "A" is {hexadecimal} "C1".

	(10 Nov 1995)

Extended BNF

	<language> {Extended Backus-Naur Form}.

Extended C++

	<language> {EC++} extended by G. Masotti
	<masotti@lipari.usc.edu> with preconditions, postconditions
	and {class invariants}, {parameterised classes}, {exception
	handling} and {garbage collection}.  {EC++} translates
	Extended C++ into C++.

	(10 Oct 1989)

Extended Capabilities Port

	<hardware> (ECP) A {parallel printer interface} for {IBM PC}
	compatibles, supported by several, mainly US, manufacturers.

	Not to be confused with the more common {Enhanced Capabilities
	Port}.

	(01 Dec 1997)

Extended Concurrent Prolog

	<language> (ECP) {Concurrent Prolog} with {OR parallelism},
	{set abstraction} and {meta-inference} features.

	["AND-OR Queuing in Extended Concurrent Prolog", J. Tanaka et
	al, Proc Logic Prog Conf '85, LNCS 193, Springer 1985].

	(01 Dec 1994)

Extended Data Out Dynamic Random Access Memory

	<storage> (EDO DRAM, EDO RAM) A type of {DRAM} designed to
	access nearby memory locations faster than {FPM DRAM}.

	Extended Data Out DRAM (EDO-DRAM) allows the data outputs to
	be kept active after the CAS\ signal goes inactive, using an
	additional signal OE\ to control the data outputs.  This can
	be used in {pipelined} systems for overlapping accesses where
	the next cycle is started before the data from the last cycle
	is removed from the bus.

	EDO DRAM is primarily used with {Intel}'s {Pentium} processors
	since with slower processors there is no significant
	performance gain.  To make use of the advanced features of EDO
	an appropriate {chipset}, such as {Triton}, must be used.  In
	early 1995, EDO DRAM was available for computers from
	{Micron}, {Gateway 2000}, and {Intel Corporation}; since then
	other manufactures followed suit.

	Note that in comparison to {Burst EDO} EDO is sometimes
	referred to as "Standard EDO".

	(25 Jun 1996)

Extended Data Out Random Access Memory

	{Extended Data Out Dynamic Random Access Memory}

Extended FORTRAN Language

	(EFL) A {FORTRAN} {preprocessor} to provide {structured
	programming} constructs much like {C}.  EFL is a descendant of
	{RATFOR}.  It is written in C.

	["An Informal Description of EFL", S.I. Feldman].

Extended Industry-Standard Architecture

	<architecture, standard> (EISA) /eesa/ A {bus} standard for
	{IBM-compatibles} that extends the {ISA} bus architecture to
	32 bits and allows more than one {CPU} to share the bus.  The
	{bus mastering} support is also enhanced to provide access to
	4 GB of memory.  Unlike {MCA}, EISA can accept older {XT bus
	architecture} and {ISA} boards.

	EISA was announced in late 1988 by compatible vendors as a
	counter to {IBM}'s MCA in its {PS/2} series.  Although
	somewhat inferior to the MCA it became much more popular due
	to the proprietary nature of MCA.

	[Main sponsors?  Open standard?]

	(25 Jun 1996)

Extended Integrated Drive Electronics

	<storage, hardware> An improved version of {AT Attachment},
	with faster data rates, 32-bit transactions, and (in some
	drives) {DMA}.  EIDE was coined by {Western Digital} around
	1994, and the standard is also referred to as "Fast ATA-2",
	based on its {ANSI} designation.

	See also {IDE}, {Advanced Technology Attachment}.

	(21 Mar 1996)

extended memory

	<storage> Memory above the first {megabyte} of {address space}
	in an {IBM PC} with an {80286} or later processor.

	Extended memory is not directly available in {real mode}, only
	through {EMS}, {UMB}, {XMS}, or {HMA}; only applications
	executing in {protected mode} can use extended memory
	directly.  In this case, the extended memory is provided by a
	supervising {protected-mode} {operating system} such as
	{Microsoft Windows}.  The processor makes this memory
	available through a system of {global descriptor tables} and
	{local descriptor tables}.  The memory is "protected" in the
	sense that memory assigned a local descriptor cannot be
	accessed by another program without causing a hardware {trap}.
	This prevents programs running in protected mode from
	interfering with each other's memory.

	A {protected-mode} {operating system} such as Windows can also
	run {real-mode} programs and provide {expanded memory} to
	them.  {DOS Protected Mode Interface} is {Microsoft}'s
	prescribed method for an {MS-DOS} program to access extended
	memory under a {multitasking} environment.

	Having extended memory does not necessarily mean that you have
	more than one megabyte of memory since the reserved memory
	area may be partially empty.  In fact, if your 386 or higher
	uses extended memory as expanded memory then that part is not
	in excess of 1Mb.

	See also {conventional memory}.

	(10 Jan 1996)

extended memory manager

	<software, storage> (XMM) The memory manager software
	implementing {Extended Memory Specification}, such as {HIMEM}
	or {QEMM386}.  XMM's can usually also act as {A20 handlers}.

	(10 Jan 1996)

Extended Memory Specification

	<storage> (XMS) The specification describing the use of {IBM
	PC} {extended memory} in {real mode} for storing data (but not
	executable code).  Memory is made available by {extended
	memory manager} (XMM) software.  The XMM functions are
	accessible through {interrupt} 2FH.

	(10 Jan 1996)

Extended ML

	A language by Don Sannella of the {University of Edinburgh}
	combining {algebraic specification} and {functional
	programming}.

	["Program Specification and Development in Standard ML",
	D. Sannella et al, 12th POPL, ACM 1985].

	(12 Dec 1994)

Extended Pascal

	A superset of {ANSI} and {ISO Pascal} with many enhancements,
	including {modules}, {separate compilation}, {type schema}ta,
	variable-length strings, direct-access files, complex numbers,
	initial values, constant expressions.  ANSI/IEEE770X3.160-1989
	and ISO 10206.

	(12 Dec 1994)

Extended Self-containing Prolog

	(ESP) An {object-oriented} extension of {KL0} by Chikayama.
	ESP has {backtracking}-based control, {unification}-based
	parameter passing and {object-oriented} calling.  An {object}
	in ESP is an axiom set.  A {class} definition consists of
	nature definitions ({inheritance}), slot definitions ({class
	variable}s) and clause definitions.  It has {multiple
	inheritance} similar to {Flavors}.  It has been implemented
	for {ICOT}'s {PSI} Sequential Inference machine.

	See also {CESP}.

	E-mail: <k-hata@air.co.jp>.

	["Unique Features of ESP", T. Chikayama, Proc Intl Conf 5th
	Gen Comp Sys, ICOT 1984].

	(08 Dec 1994)

Extended System Configuration Data

	<operating system> (ESCD) A four-kilobyte area of memory in
	{MS-DOS}(?) at offset 1D000h-1DFFFh.  This area is used as
	{NVRAM} for {PNP BIOS} and {PNP OS}.  Intel's {ICU} also uses
	ESCD to store information for PNP {ISA} cards and {legacy} ISA
	cards.  It must be writeable at {runtime}.

	{(http://www.adosea.com/vendors/asus/products/tb/flash-pnpbios.txt)}.

	(28 Apr 1997)

Extended Tiny

	A research/educational tool for experimenting with {array}
	data dependence tests and reordering transformations.  It
	works with a language {tiny}, which does not have procedures,
	{goto}'s, pointers, or other features that complicate
	dependence testing.

	Michael Wolfe's original {tiny} has been extended
	substantially by William Pugh <pugh@cs.umd.edu> et al. at the
	{University of Maryland}.

	Version 3.0 (Dec 12th, 1992) includes a programming
	environment, dependence tester, tests translator
	({Fortran}->tiny), documentation, and technical reports.  It
	should run on any {Unix} system.

	{(ftp://cs.umd.edu/pub/omega)}

	E-mail: Omega test research group <omega@cs.umd.edu>.

	(12 Dec 1992)

eXtended Video Graphics Array

	<hardware> (XVGA) A {display standard} with a {resolution} of
	1024 by 768 {pixels} of 256 colours.  {IBM} call this mode
	"8514".

	(11 Dec 1997)

extensible

	<programming> Said of a system (e.g., {program}, {file
	format}, {programming language}, {protocol}, etc.) designed to
	easily allow the addition of new {features} at a later date,
	e.g. through the use of {hooks}, an {API} or {plug-ins}.

	See also {extend}, {forward compatible}.

	(15 Jan 1998)

extensible database

	<database> A {DBMS} that allows access to data from remote
	sources as if the remote data were part of the {database}.

	[Example?]

	(20 Nov 1997)

Extensible Markup Language

	<language, text> (XML) An initiative from the {W3C} defining
	an "extremely simple" dialect of {SGML} suitable for use on
	the {World-Wide Web}.

	{(http://www.w3.org/XML/)}.

	[Relationship to the {XSL} forthcoming subset of {DSSSL}?]

	(20 Nov 1997)

extension

	1. <filename extension> {filename extension}.

	2. <programming> A {feature} or piece of {code} which
	{extends} a program's {functionality}, e.g. a {plug-in}.

	(21 Jun 1997)

extensional

	Extensional properties, e.g. extensional equality, relate to
	the "black-box" behaviour of an object, i.e. how its output
	depends on its input.  The opposite is intensional which
	concerns how the object is implemented.

extensional equality

	(Or extensionality).  Functions, f and g are extensionally
	equal if and only if

		f x = g x  for all x.

	where "=" means both expressions fail to terminate (under some
	given {reduction strategy}) or they both terminate with the
	same basic value.

	Two functions may be extensionally equal but not
	inter-convertible (neither is reducible to the other).  E.g.
	\ x . x+x and \ x . 2*x.  See also {observational
	equivalence}, {referential transparency}.

extensionality

	{extensional equality}

Extension Language Kit

	<language> (Elk) A {Scheme} {interpreter} by Oliver Laumann
	<net@cs.tu-berlin.de> and Carsten Bormann
	<cabo@cs.tu-berlin.de> of the {Technical University of
	Berlin}.  Elk was designed to be used as a general extension
	language.  New {types} and {primitive} procedures can easily
	be added.  It has {first-class environments}, {dynamic-wind},
	{fluid-let}, {macros}, {autoload}ing and a {dump}.  It
	provides interfaces to {Xlib}, {Xt} and various {widget} sets;
	{dynamic loading} of extensions and {object files}; almost all
	artificial limitations removed; {generational}/{incremental
	garbage collector}; {Unix} {system call} extensions; {Records}
	(structures) and {bit-strings}.

	Version: 2.2 is mostly {R3RS} compatible and runs on {Unix},
	{Ultrix}, {VAX}, {Sun3}, {Sun4}, {68000}, {i386}, {MIPS}, {IBM
	PC RT}, {RS/6000}, {HP700}, {SGI}, {Sony}, {MS-DOS}
	({gcc}+{DJGPP} or {go32}).

	{Germany
	(ftp://ftp.fu-berlin.de/pub/Unix/languages/scheme/elk-2.2.tar.gz)}.
	{US (ftp://ftp.x.org/contrib/elk-2.2.tar.gz)}.  {US
	(ftp://gatekeeper.dec.com/pub/comp.sources.misc/volume8/elk)}.

	(15 Dec 1994)

Exterior Gateway Protocol

	(EGP) A protocol which distributes routing information to the
	{router}s which connect {autonomous system}s.  The term
	"{gateway}" is historical, and "router" is currently the
	preferred term.  There is also a routing protocol called {EGP}
	defined in STD 18, RFC 904.  See also {Border Gateway
	Protocol}, {Interior Gateway Protocol}.

eXternal Data Representation

	(XDR) A {standard} for machine independent data structures
	developed by {Sun Microsystems} for use in {remote procedure
	call} systems.  It is defined in {RFC 1014} and is similar to
	{ASN.1}.

	(13 Dec 1994)

external memory

	<storage> A vague term for slower, {non-volatile storage},
	usually {magnetic disk}, in contrast to {main memory} which is
	usually volatile {semiconductor} {RAM}.

	(17 Feb 1997)

EXTRA

	Object-oriented, Pascal style, handles sets.  "A Data Model
	and Query Language for EXODUS", M.J. Carey et al, SIGMOD 88
	Conf Proc, pp.413- 423, ACM SIGMOD Record 17:3 (Sept 1988).

extranet

	<World-Wide Web> The extension of a company's {intranet} out
	onto the {Internet}, e.g. to allow selected customers,
	suppliers and mobile workers to access the company's private
	data and applications via the {World-Wide Web}.  This is in
	contrast to, and usually in addition to, the company's public
	{web site} which is accessible to everyone.  The difference
	can be somewhat blurred but generally an extranet implies
	real-time access through a {firewall} of some kind.

	Such facilities require very careful attention to security but
	are becoming an increasingly important means of delivering
	services and communicating efficiently.

	[Did {Marc Andreessen} invent the term in September 1996?]

	(17 Dec 1997)

EXUG

	{European X User Group}

eyeball search

	<jargon> (Or vgrep) To look for something in a mass of code or
	data with one's own native optical sensors, as opposed to
	using some sort of pattern matching software like {grep} or
	any other automated search tool.

	Compare {vdiff}, {desk check}.

	(17 Dec 1997)

EZ

	High-level string-processing language derived from SNOBOL4,
	SL5 and Icon.

	["The EZ Reference Manual", C.W. Fraser et al, CS TR 84-1, U
	Arizona, 1984].

ezd

	[Easy drawing] A graphics server that sits between an
	{application program} and an {X} server and allows both
	existing and new programs easy access to structured graphics.
	Ezd users have been able to have their programs produce
	interactive drawings within hours of reading the manual page.
	Structured graphics: application defined graphical objects are
	ordered into drawings by the application.  Unlike most X
	tools, ezd does not require any event handling by the
	application.  The ezd server maintains the window contents.
	When an event occurs an application supplied {Scheme}
	expression is evaluated.

	{Version 15mar93 (ftp://gatekeeper.dec.com/pub/DEC/ezd/)}

	E-mail: Joel Bartlett <bartlett@decwrl.dec.com> ?

	(10 Mar 1993)

e-zine

	{electronic magazine}

f2c

	A {Fortran 77} to {C} translator by S. I. Feldman, D. M. Gay,
	M. W. Maimone and N. L. Schryer.  Produces {ANSI C} or {C++}.

	{(ftp://netlib.bell-labs.com/netlib/f2c)}.

	E-mail: <dmg@bell-labs.com>.

	Current version: 1997.07.24.

	(01 Aug 1997)

F2F

	{face-to-face}

F68K

	A portable {Forth} system for {Motorola} {680x0} computers by
	Joerg Plewe <joerg.plewe@mpi-dortmund.mpg.de>.  Ported to
	{Atari ST}, {Atari TT}, {Amiga}, {Sinclair QL} and {OS9}.
	Easily ported to {Motorola} {68000} based systems.

	{(ftp://archive.umich.edu/atari/Languages/)}

	(14 Dec 1992)

FAC

	Functional Array Calculator.  An {APL}-like language, but
	{purely functional} and {lazy}.  It allows infinite {array}s.

	["FAC: A Functional APL Language", H.-C. Tu and A.J. Perlis,
	IEEE Trans Soft Eng 3(1):36-45 (Jan 1986)].

face time

	<jargon> Time spent interacting with somebody face-to-face (as
	opposed to via electronic links).  "Oh, yeah, I spent some
	face time with him at the last Usenix."

face-to-face

	<jargon, chat> (F2F, {IRL}) Used to describe personal
	interaction in real life as opposed to via some digital or
	electronic communications medium.

	(31 Jan 1997)

Facile

	A {concurrent} extension of {ML} from {ECRC}.

	{(http://www.ecrc.de/facile/facile_home.html)}

	["Facile: A Symmetric Integration of Concurrent and Functional
	Programming", A. Giacalone <ag@ecc.de> et al, Intl J Parallel
	Prog 18(2):121-160 (Apr 1989)].

	(01 Dec 1994)

facsimile

	<communications> ("fax") A process by which fixed graphic
	material including pictures, text, or images is scanned and
	the information converted into electrical signals which are
	transmitted via telephone to produce a paper copy of the
	graphics on the receiving fax machine.

	Some {modems} can be used to send and receive fax data.

	[Details?  Standards?]

	(15 Nov 1995)

FACT

	{Fully Automated Compiling Technique}

fact

	<artificial intelligence, programming> The kind of {clause}
	used in {logic programming} which has no {subgoals} and so is
	always true (always succeeds).  E.g.

		wet(water).
		male(denis).

	This is in contrast to a {rule} which only succeeds if all its
	subgoals do.  Rules usually contain {logic variables}, facts
	rarely do, except for oddities like "equal(X,X).".

	(20 Oct 1996)

factor

	A quantity which is multiplied by another quantity.  See
	{coefficient of X}.  See also {divisor}.

FAD

	["FAD, A Simple and Powerful Database Language", F. Bancilon
	et al, Proc 13th Intl Conf on VLDB, Brighton, England, Sep
	1987].

failure

	The inability of a system or system component to perform a
	required function within specified limits.  A failure may be
	produced when a {fault} is encountered.

	(13 May 1996)

failure-directed testing

	<programming> (Or "heuristics testing") Software testing based
	on the knowledge of the types of {errors} made in the past
	that are likely for the system under test.

	(16 May 1996)

FAIR

	<language> An early system on the {IBM 705}.

	[Listed in CACM 2(5):16 May 1959].

	(13 May 1996)

Fairchild F8

	<computer> An 8-bit {microprocessor}.  The processor itself
	had no {address bus} - program and data memory access were
	contained in separate units, which reduced the number of pins
	and the associated cost.  It also featured 64 {register}s,
	accessed by the ISAR register in cells ({register window}s) of
	eight, which meant external {RAM} wasn't always needed for
	small applications.  In addition, the 2-chip processor didn't
	need support chips, unlike others which needed seven or more.

	The F8 inspired other similar {CPU}s, such as the {Intel
	8048}.  The use of the ISAR register allowed a subroutine to
	be entered without saving a bunch of registers, speeding
	execution - the ISAR would just be changed.  Special purpose
	registers were stored in the second cell (regs 9-15), and the
	first eight registers were accessed directly.  The windowing
	concept was useful, but only the register pointed to by the
	ISAR could be accessed - to access other registers the ISAR
	was incremented or decremented through the window.

	(16 Nov 1994)

fall back

	A feature of a {modem} {protocol} where two modems which
	experience data corruption, e.g. due to line noise, can
	renegotiate to use a lower speed connection.  See also {fall
	forward}.

fall forward

	A feature of a {modem} {protocol} where two modems which {fall
	back} to a lower speed because of data corruption can later
	return to the higher speed if the connection improves.

fall over

	[IBM] Yet another synonym for {crash} or {lose}.  "Fall over
	hard" equates to {crash and burn}.

fall through

	<programming> (The American misspelling "fall thru" is
	also common)

	1. To exit a loop by exhaustion, i.e. by having fulfilled its
	exit condition rather than via a break or exception condition
	that exits from the middle of it.  This usage appears to be
	*really* old, dating from the 1940s and 1950s.

	2. To fail a test that would have passed control to a
	subroutine or some other distant portion of code.

	3. In C, "fall-through" occurs when the flow of execution in a
	{switch statement} reaches a "case" label other than by
	jumping there from the switch header, passing a point where
	one would normally expect to find a "break".  A trivial
	example:

		switch (colour)
		{
		case GREEN:
		  do_green();
		  break;
		case PINK:
		  do_pink();
		  /* FALL THROUGH */
		case RED:
		  do_red();
		  break;
		default:
		  do_blue();
		  break;
		}

	The effect of the above code is to "do_green()" when colour is
	"GREEN", "do_red()" when colour is "RED", "do_blue()" on any
	other colour other than "PINK", and (and this is the important
	part) "do_pink()" *and then* "do_red()" when colour is "PINK".
	Fall-through is {considered harmful} by some, though there are
	contexts (such as the coding of state machines) in which it is
	natural; it is generally considered good practice to include a
	comment highlighting the fall-through where one would normally
	expect a break.  See also {Duff's Device}.

fall thru

	<spelling> Misspelling of "{fall through}".

	(13 Dec 1996)

FALSE

	A small, compiled extensible language with {lambda
	abstraction}s by W. van Oortmerssen.

	{For Amiga (ftp://ftp.cso.uiuc.edu/pub/amiga/fish/ff885)}

fandango on core

	(Unix/C, from the Mexican dance) In {C}, a wild pointer that
	runs out of bounds, causing a {core dump}, or corrupts the
	{malloc} {arena} in such a way as to cause mysterious failures
	later on, is sometimes said to have "done a fandango on core".
	On low-end personal machines without an {MMU}, this can
	corrupt the {operating system} itself, causing massive
	lossage.  Other frenetic dances such as the rhumba, cha-cha,
	or watusi, may be substituted.

	See {aliasing bug}, {precedence lossage}, {smash the stack},
	{memory leak}, {memory smash}, {overrun screw}, {core}.

	(16 Dec 1994)

FAP

	The {assembly language} for {Sperry-Rand 1103} and 1103A.

	[Listed in CACM 2(5):16 (May 1959)].

	(16 Dec 1994)

FAQ

	{frequently asked question}

FAQL

	{frequently asked question}

FAQ list

	{frequently asked question}

faradise

	/far'*-di:z/ [US Geological Survey] To start any
	hyper-addictive process or trend, or to continue adding
	current to such a trend.  Telling one user about a new
	octo-tetris game you compiled would be a faradising act - in
	two weeks you might find your entire department playing the
	faradic game.

farkled

	/far'kld/ [DeVry Institute of Technology, Atlanta] Synonym
	{hosed}.  Possibly owes something to Yiddish "farblondjet"
	and/or the "Farkle Family" skits on Saturday Nite Live.

farming

	[Adelaide University, Australia] What the heads of a disk
	drive are said to do when they plow little furrows in the
	magnetic media.  Associated with a {head crash}.  Typically
	used as follows: "Oh no, the machine has just crashed; I hope
	the hard drive hasn't gone {farming} again."

FARNET

	A non-profit corporation, established in 1987, whose mission
	is to advance the use of computer networks to improve research
	and education.

fas

	1. Frankenstein Cross Assemblers.  A reconfigurable assembler
	package, especially suited for 8-bit processors, consisting of
	a base assembler module and a {yacc} parser, for each
	{microprocessor}, to handle {mnemonics} and addressing.
	Second party parser modules available from many sites.

	Base assembler and yacc parser modules by Mark Zenier.  FTP:
	ftp.njit.edu/pub/msdos/frankasm/frankasm.zoo.

	2. FAS.  A general purpose language sponsored by the Finnish
	government in the 70's and 80's.

FASBOL

	["FASBOL. A SNOBOL4 Compiler", P.J. Santos, Memo ERL-M134, UC
	Berkeley 1971].

fascist

	1. Said of a computer system with excessive or annoying
	security barriers, usage limits, or access policies.  The
	implication is that said policies are preventing hackers from
	getting interesting work done.  The variant "fascistic" seems
	to have been preferred at {MIT}, possibly by analogy with
	"touristic" (see {tourist}).

	2. In the design of languages and other software tools, "the
	fascist alternative" is the most restrictive and structured
	way of capturing a particular function; the implication is
	that this may be desirable in order to simplify the
	implementation or provide tighter error checking.  Compare
	{bondage-and-discipline language}, although that term is
	global rather than local.

FASE

	Fundamentally Analyzable Simplified English.

	L.E. McMahon, Bell Labs.

	[Sammet 1969, p.720].

	(09 Nov 1994)

FAST

	1. <body> {Federation Against Software Theft}.

	2. <language> {FORTRAN Automatic Symbol Translator}.

	(19 May 1996)

Fast ATA

	{Advanced Technology Attachment Interface with Extensions}

Fast Ethernet

	<networking> A version of {Ethernet} developed in the 1990s(?)
	which can carry 100 {Mbps} compared with standard Ethernet's
	10 Mbps.  It requires upgraded {network cards} and {hubs}.

	[Standards?]

	(16 Apr 1997)

Fast Fourier Transform

	<algorithm> (FFT) An {algorithm} for computing the {Fourier
	transform} of a set of discrete data values.  Given a finite
	set of data points, for example a periodic sampling taken from
	a real-world signal, the FFT expresses the data in terms of
	its component frequencies.  It also solves the essentially
	identical inverse problem of reconstructing a signal from the
	frequency data.

	The FFT is a mainstay of {numerical analysis}.  Gilbert Strang
	described it as "the most important algorithm of our
	generation".  The FFT also provides the asymptotically fastest
	known algorithm for multiplying two {polynomial}s.

	Versions of the algorithm (in {C} and {Fortran}) can be found
	on-line from the {GAMS} server {here
	(http://gams.nist.gov/cgi-bin/gams-serve/class/J1.html)}.

	["Numerical Methods and Analysis", Buchanan and Turner].

	(09 Nov 1994)

Fast Packet

	{Asynchronous Transfer Mode}

Fast Page Mode Dynamic Random Access Memory

	<hardware, storage> Is this the same as {Page Mode Dynamic
	Random Access Memory}?

	(06 Oct 1996)

Fast SCSI

	<hardware> A variant on the {SCSI-2} bus.  It uses the same
	8-bit bus as the original {SCSI}-1 but runs at up to 10MB/s -
	double the speed of SCSI-1.

	(24 Nov 1994)

FAT

	{File Allocation Table}

fatal

	<programming> Resulting in termination of the program.

	(03 Aug 1997)

fatal error

	<programming, operating system> Any {error} which causes
	abrupt {termination} of the program.  The program may be
	terminated either by itself or by the {operating system} (a
	"{fatal exception}").  In the former instance, the program
	contains code which catches the error and, as a result,
	returns to the operating system or calls an operating system
	service to terminate the program.

	(03 Aug 1997)

fatal exception

	<programming, operating system> A program execution error
	which is trapped by the {operating system} and which results
	in abrupt termination of the program.

	It may be possible for the program to catch some such errors,
	e.g. a {floating point} {underflow}; others, such as an
	invalid memory access (an attempt to write to read-only memory
	or an attempt to read memory outside of the program's {address
	space}), may always cause control to pass to the operating
	system without allowing the program an opportunity to handle
	the error.  The details depend on the language's {run-time
	system} and the operating system.

	See also: {fatal error}.

	(03 Aug 1997)

fat binary

	<operating system> An executable file containing code for more
	than one {CPU}.  The correct code is selected automatically at
	run-time.  This is convenient for distributing {software} and
	sharing it between multiple {platforms}.

	{NEXTSTEP} supports fat binaries, e.g. for {Motorola 68000},
	{Intel 80486} and {SPARC} ("triple fat").  {Mac OS} supports
	fat binaries for both {680x0} and {PowerPC} native code.

	[Other OSes?]

	(23 Sep 1995)

fat client

	<networking> Opposite of "{thin client}".

	(08 Dec 1996)

fat electrons

	<electronics, humour> Old-time hacker David Cargill's theory
	on the cause of computer glitches.  Your typical electricity
	company draws its line current out of the big generators with
	a pair of coil taps located near the top of the dynamo.  When
	the normal tap brushes get dirty, they take them off line to
	clean them up, and use special auxiliary taps on the *bottom*
	of the coil.  Now, this is a problem, because when they do
	that they get not ordinary or "thin" electrons, but the fat
	sloppy electrons that are heavier and so settle to the bottom
	of the generator.  These flow down ordinary wires just fine,
	but when they have to turn a sharp corner (as in an
	integrated-circuit via), they're apt to get stuck.  This is
	what causes computer glitches.

	[Obviously, fat electrons must gain mass by {bogon} absorption
	- ESR]

	Compare {bogon}, {magic smoke}.

	(08 Dec 1996)

fault

	1. <programming> A manifestation of an error in software.  A
	fault, if encountered, may cause a {failure}.

	2. <architecture> {page fault}.

	(14 May 1996)

fault-based testing

	<programming> Software testing that employs a test data
	selection strategy designed to generate test data capable of
	demonstrating the absence of a set of pre-specified {faults};
	typically, frequently occurring faults.

	(15 May 1996)

fault tolerance

	<architecture> 1. The ability of a system or component to
	continue normal operation despite the presence of hardware or
	software faults.  This often involves some degree of
	{redundancy}.

	2. The number of faults a system or component can withstand
	before normal operation is impaired.

	(06 Apr 1995)

fault tolerant

	{fault tolerance}

fault tree analysis

	<programming> A form of safety analysis that assesses hardware
	safety to provide failure statistics and sensitivity analyses
	that indicate the possible effect of critical failures.

	(15 May 1996)

fax

	{facsimile}

FC

	<language> A {functional language}.

	["FC Manual", L. Augustsson, Memo 13, Programming Methodology
	Group, Chalmers U, Sweden 1982].

	(22 Mar 1995)

FC-AL

	{Fibre Channel-Arbitrated Loop}.

FCB

	<operating system> {file control block}.

F-code

	The code for the {FP/M} {abstract machine}.

	["FP/M Abstract Syntax Description", Roger Bailey, Dept
	Computing, Imperial College, U London, 1985]1w.

	(01 Dec 1994)

FCP

	Flat Concurrent Prolog.

	["Design and Implementation of Flat Concurrent Prolog",
	C. Mierowsky, TR CS84-21 Weizmann Inst, Dec 1984].

	(20 Oct 1994)


FCS

	{Frame Check Sequence} ({X.25}).

	[What is it?]

	(27 Oct 1997)

FDC

	{Floppy Disk Controller}

FDDI

	{Fiber Distributed Data Interface}

FDISK

	<operating system, tool> (Fixed disk utility) An {MS-DOS}
	utility program which prepares a {hard disk} so that it can be
	used as a {boot disk} and {file systems} can be created on it.
	{OS/2}, {NT}, {Windows 95}, {Linux}, and other {Unix} versions
	all have this command or something similar.

	(23 Dec 1996)

fd leak

	{file descriptor leak}

fdlibm

	A new version of the {C} maths library, libm, by Dr. K-C Ng.
	It is the basis for the bundled /usr/lib/libm.so in Solaris
	2.3 for SPARC and for future Solaris 2 releases for x86 and
	PowerPC.  It provides the standard functions necessary to pass
	the usual test suites.  This new libm can be configured to
	handle exceptions in accordance with various language
	standards or in the spirit of {IEEE 754}. The C source code
	should be portable to any IEEE 754 system.

	E-mail: <netlib@research.att.com> ("send all from fdlibm"),
	<fdlibm-comments@sunpro.eng.sun.com> (comments and bug
	reports).

	{(ftp://netlib.att.com/netlib)}.

	(18 Dec 1993).

FDMA

	{frequency division multiple access}

FDSE

	{full-duplex Switched Ethernet}

FDT

	{Formal Description Technique}

FDX

	{full duplex}

FEA

	{finite element analysis}

fear and loathing

	(Hunter S. Thompson) A state inspired by the prospect of
	dealing with certain real-world systems and standards that are
	totally {brain-damaged} but ubiquitous - {Intel 8086}s,
	{COBOL}, {EBCDIC}, or any {IBM} machine except the {Rios}
	(also known as the {RS/6000}).

	(06 Dec 1994)

feature

	<jargon> 1. A good property or behaviour (as of a program).
	Whether it was intended or not is immaterial.

	2. An intended property or behaviour (as of a program).
	Whether it is good or not is immaterial (but if bad, it is
	also a {misfeature}).

	3. A surprising property or behaviour; in particular, one that
	is purposely inconsistent because it works better that way -
	such an inconsistency is therefore a {feature} and not a
	{bug}.  This kind of feature is sometimes called a {miswart}.

	4. A property or behaviour that is gratuitous or unnecessary,
	though perhaps also impressive or cute.  For example, one
	feature of {Common LISP}'s "format" function is the ability to
	print numbers in two different Roman-numeral formats (see
	{bells, whistles, and gongs}).

	5. A property or behaviour that was put in to help someone
	else but that happens to be in your way.

	6. A bug that has been documented.  To call something a
	feature sometimes means the author of the program did not
	consider the particular case, and that the program responded
	in a way that was unexpected but not strictly incorrect.  A
	standard joke is that a bug can be turned into a {feature}
	simply by documenting it (then theoretically no one can
	complain about it because it's in the manual), or even by
	simply declaring it to be good.  "That's not a bug, that's a
	feature!" is a common catch-phrase.  Apparently there is a
	Volkswagen Beetle in San Francisco whose license plate reads
	"FEATURE".

	See also {feetch feetch}, {creeping featurism}, {wart}, {green
	lightning}.

	The relationship among bugs, features, misfeatures, warts and
	miswarts might be clarified by the following hypothetical
	exchange between two hackers on an airliner:

	A: "This seat doesn't recline."

	B: "That's not a bug, that's a feature.  There is an emergency
	exit door built around the window behind you, and the route
	has to be kept clear."

	A: "Oh.  Then it's a misfeature; they should have increased
	the spacing between rows here."

	B: "Yes.  But if they'd increased spacing in only one section
	it would have been a wart - they would've had to make
	nonstandard-length ceiling panels to fit over the displaced
	seats."

	A: "A miswart, actually.  If they increased spacing throughout
	they'd lose several rows and a chunk out of the profit margin.
	So unequal spacing would actually be the Right Thing."

	B: "Indeed."

	"Undocumented feature" is a common euphemism for a {bug}.

	7. An attribute or function of a {class} in {Eiffel}.

	(22 Oct 1995)

feature creature

	[Possibly from slang "creature feature" for a horror movie]
	1. One who loves to add features to designs or programs,
	perhaps at the expense of coherence, concision or {taste}.

	2. Alternately, a mythical being that induces otherwise
	rational programmers to perpetrate such crocks.  See also
	{feeping creaturism}, {creeping featurism}.

feature creep

	{creeping featurism}

featurectomy

	/fee"ch*r-ek"t*-mee/ The act of removing a {feature} from a
	program.  Featurectomies come in two flavours, the "righteous"
	and the "reluctant".  Righteous featurectomies are performed
	because the remover believes the program would be more elegant
	without the feature, or there is already an equivalent and
	better way to achieve the same end.  (Doing so is not quite
	the same thing as removing a {misfeature}.)  Reluctant
	featurectomies are performed to satisfy some external
	constraint such as code size or execution speed.

	(20 Oct 1994)

feature key

	<hardware> (Or "flower", "pretzel", "clover", "propeller",
	"beanie" (from propeller beanie), {splat}, "command key") The
	{Macintosh} key with the cloverleaf graphic on its keytop.

	The feature key is the Mac's equivalent of an {alt} key (and
	so labelled on on some Mac II keyboards).  The proliferation
	of terms for this creature may illustrate one subtle peril of
	iconic interfaces.

	Many people have been mystified by the cloverleaf-like symbol
	that appears on the feature key.  Its oldest name is "cross of
	St. Hannes", but it occurs in pre-Christian Viking art as a
	decorative motif.  Throughout Scandinavia today the road
	agencies use it to mark sites of historical interest.  {Apple
	Computer} picked up the symbol from an early {Macintosh}
	developer who happened to be Swedish.  Apple documentation
	gives the translation "interesting feature"!

	There is some dispute as to the proper (Swedish) name of this
	symbol.  It technically stands for the word "sev"ardhet"
	(interesting feature) many of these are old churches.  Some
	Swedes report as an idiom for it the word "kyrka", cognate to
	English "church" and Scots-dialect "kirk" but pronounced
	/shir'k*/ in modern Swedish.  Others say this is nonsense.

	(20 Nov 1997)

feature shock

	[Alvin Toffler's book title "Future Shock"] A user's (or
	programmer's!) confusion when confronted with a package that
	has too many features and poor introductory material.

FEC

	{Forward Error Correction}

Federal Geographic Data Committee

	(FGDC)

	{(ftp://fgdc.er.usgs.gov/gdc/html/fgdc.html)}

	[Summary?]

	(06 Mar 1995)

Federal Information Exchange

	(FIX) One of the connection points between the American
	governmental {internet}s and the {Internet}.

Federal Information Processing Standards

	(FIPS) United States Government technical {standard}s
	published by the {National Technical Information Service}
	(NTIS).  Computer-related products bought by the US Government
	must conform to these standards.

	(01 Mar 1995)

Federal Networking Council

	(FNC) The coordinating group of representatives from federal
	agencies involved in the development and use of federal
	networking, especially those networks using {TCP/IP} and the
	{Internet}.  Current members include representatives from DOD,
	DOE, {DARPA}, {NSF}, NASA, and HHS.

	(17 Nov 1994)

Federation Against Software Theft

	<body, legal> (FAST) A non-profitmaking organisation, formed
	in 1984 by the software industry with the aim of eradicating
	{software theft} within the UK.  Prosecuting on average one
	organisation every ten days, FAST gives a member organisation,
	which has signed a Code of Ethics and is committed to the
	carrying out of a regular {software audit}, a period of grace
	before bringing action if there is evidence of irregularities
	by the member organisation.

	In addition to prosecuting organisations and individuals for
	software theft, FAST set up a campaign of public education and
	awareness to ensure that users of commercial software
	understand the effects of software theft - primarily the legal
	penalties for copyright breach and the increased risk of virus
	infection through the uncontrolled spread of software.  It is
	estimated that European software houses alone lose $6 billion
	per year through the unlawful copying and distribution of
	software, with much of this loss being through business users
	rather than "basement hackers".  One Italian pirating operation
	employed over 100 staff and had a turnover of $10m.

	However, FAST is limited to the UK and in 1995 proposed to
	merge with the {Business Software Alliance} created by
	{Microsoft} and which has a world-wide influence.  However, the
	talks fell through and in 1996, {Novell} and {Adobe} defected
	to BSA.

	{Home (http://www.serverworld/com/fast.html)}.

	Telephone: +44 (1753) 527 999.

	(27 Sep 1996)

feedback

	<electronics> Part of a system output presented at its input.
	Feedback may be unintended.  When used as a design feature,
	the output is usually transformed by passive components which
	attenuate it in some manner; the result is then presented at
	the system input.

	Feedback is positive or negative, depending on the sign with
	which a positive change in the original input reappears after
	transformation.  Negative feedback was invented by Black to
	stabilise {vacuum tube} amplifiers.  The behaviour becomes
	largely a function of the feedback transformation and only
	minimally a function of factors such as transistor gain which
	are imperfectly known.

	Positive feedback can lead to instability; it finds wide
	application in the construction of oscillators.

	Feedback can be used to control a system, as in {feedback
	control}.

	(02 Jan 1996)

feedback control

	<electronics> A control system which monitors its effect on
	the system it is controlling and modifies its output
	accordingly.  For example, a thermostat has two inputs: the
	desired temperature and the current temperature (the latter is
	the feedback).  The output of the thermostat changes so as to
	try to equalise the two inputs.

	Computer {disk drives} use feedback control to position the
	read/write heads accurately on a recording track.  Complex
	systems such as the human body contain many feedback systems
	that interact with each other; the homeostasis mechanisms that
	control body temperature and acidity are good examples.

	(02 Jan 1996)

feed-forward

	A {multi-layer perceptron} network in which the outputs from
	all neurons (see {McCulloch-Pitts}) go to following but not
	preceding layers, so there are no feedback loops.

Feel

	(Free and Eventually Eulisp) An initial implementation of an
	{EuLisp} {interpreter} by Pete Broadbery
	<pab@maths.bath.ac.uk>.  Version 0.75 features an integrated
	{object} system, {modules}, {parallelism}, interfaces to {PVM}
	library, {TCP/IP} {socket}s, {future}s, {Linda} and {CSP}.
	Portable to most {Unix} systems.  Can use {shared memory} and
	{thread}s if available.

	{(ftp://ftp.bath.ac.uk/pub/eulisp/)}

	(14 Sep 1992)

feep

	/feep/ 1.  The soft electronic "bell" sound of a display
	terminal (except for a VT-52); a beep (in fact, the
	microcomputer world seems to prefer {beep}).

	2. To cause the display to make a feep sound.  ASR-33s (the
	original TTYs) do not feep; they have mechanical bells that
	ring.  Alternate forms: {beep}, "bleep", or just about
	anything suitably onomatopoeic.  (Jeff MacNelly, in his comic
	strip "Shoe", uses the word "eep" for sounds made by computer
	terminals and video games; this is perhaps the closest written
	approximation yet.)  The term "breedle" was sometimes heard at
	SAIL, where the terminal bleepers are not particularly soft
	(they sound more like the musical equivalent of a raspberry or
	Bronx cheer; for a close approximation, imagine the sound of a
	Star Trek communicator's beep lasting for five seconds).  The
	"feeper" on a VT-52 has been compared to the sound of a '52
	Chevy stripping its gears.  See also {ding}.

feeper

	/fee'pr/  The device in a terminal or workstation (usually
	a loudspeaker of some kind) that makes the {feep} sound.

feeping creature

	[{feeping creaturism}] An unnecessary feature; a bit of
	{chrome} that, in the speaker's judgment, is the camel's nose
	for a whole horde of new features.

feeping creaturism

	/fee'ping kree"ch*r-izm/ A deliberate spoonerism for {creeping
	featurism}, meant to imply that the system or program in
	question has become a misshapen creature of hacks.  This term
	isn"t really well defined, but it sounds so neat that most
	hackers have said or heard it.  It is probably reinforced by
	an image of terminals prowling about in the dark making their
	customary noises.

FEL

	Function Equation Language.  Programs are sets of definitions.
	Sequences are lists stored in consecutive memory.  "FEL
	Programmer's Guide", R. M. Keller, AMPS TR 7, U Utah, March
	1982.

femto-

	{prefix}

fence

	1. A sequence of one or more distinguished ({out-of-band})
	characters (or other data items), used to delimit a piece of
	data intended to be treated as a unit (the computer-science
	literature calls this a "sentinel").  The NUL (ASCII 0000000)
	character that terminates strings in C is a fence.  {Hex} FF
	is also (though slightly less frequently) used this way.  See
	{zigamorph}.

	2. An extra data value inserted in an array or other data
	structure in order to allow some normal test on the array's
	contents also to function as a termination test.  For example,
	a highly optimised routine for finding a value in an array
	might artificially place a copy of the value to be searched
	for after the last slot of the array, thus allowing the main
	search loop to search for the value without having to check at
	each pass whether the end of the array had been reached.

	3. [among users of optimising compilers] Any technique,
	usually exploiting knowledge about the compiler, that blocks
	certain optimisations.  Used when explicit mechanisms are not
	available or are overkill.  Typically a hack: "I call a dummy
	procedure there to force a flush of the optimiser's
	register-colouring info" can be expressed by the shorter
	"That's a fence procedure".

fencepost error

	1. A problem with the discrete equivalent of a boundary
	condition, often exhibited in programs by iterative loops.
	From the following problem: "If you build a fence 100 feet
	long with posts 10 feet apart, how many posts do you need?"
	(Either 9 or 11 is a better answer than the obvious 10).

	For example, suppose you have a long list or array of items,
	and want to process items m through n; how many items are
	there?  The obvious answer is n - m, but that is off by one;
	the right answer is n - m + 1.  A program that used the
	"obvious" formula would have a fencepost error in it.  See
	also {zeroth} and {off-by-one error}, and note that not all
	off-by-one errors are fencepost errors.  The game of Musical
	Chairs involves a catastrophic off-by-one error where N people
	try to sit in N - 1 chairs, but it's not a fencepost error.
	Fencepost errors come from counting things rather than the
	spaces between them, or vice versa, or by neglecting to
	consider whether one should count one or both ends of a row.

	2. (Rare) An error induced by unexpected regularities in input
	values, which can (for instance) completely thwart a
	theoretically efficient binary tree or hash table
	implementation.  The error here involves the difference
	between expected and worst case behaviours of an algorithm.

	(01 Dec 1994)

fepped out

	<jargon> /fept owt/ The {Symbolics 3600} {LISP Machine} has a
	{Front-End Processor} (FEP).  When the main processor gets
	{wedged}, the FEP takes control of the keyboard and screen.
	Such a machine is said to have "fepped out" or "dropped into
	the fep".

	(01 Dec 1994)

FEPROM

	{Flash Erasable Programmable Read Only Memory}

Fermat prime

	<mathematics> A {prime number} of the form 2^2^n + 1.  Any
	prime number of the form 2^n+1 must be a Fermat prime.
	{Fermat} conjectured in a letter to someone or other that all
	numbers 2^2^n+1 are prime, having noticed that this is true
	for n=0,1,2,3,4.

	{Euler} proved that 641 is a factor of 2^2^5+1.  Of course
	nowadays we would just ask a computer, but at the time it was
	an impressive achievement (and his proof is very elegant).

	No further Fermat primes are known; several have been
	factorised, and several more have been proved composite
	without finding explicit factorisations.

	{Gauss} proved that a regular N-sided {polygon} can be
	constructed with ruler and compasses if and only if N is a
	power of 2 times a product of distinct Fermat primes.

	(10 Apr 1995)

Ferranti F100-L

	An 8-bit processor, with 16-bit addressing, but which could
	only access 32K of memory (1-bit for indirection).  The
	Ferranti F100-L was designed by a British company for the
	British Military.

	The unique feature of the F100-L was that it had a complete
	control bus available for a {coprocessor}.  Any instruction
	the F100-L couldn't decode was sent directly to the
	coprocessor for processing.  Applications for coprocessors at
	the time were limited, but the design is still used in modern
	processors, such as the {National Semiconductor} {320xx}
	series.

	(17 Nov 1994)

ferrite core memory

	<storage> (Or "core") An early form of {non-volatile storage}
	built (by hand) from tiny rings of magnetisable material
	threaded onto very fine wire to form large (e.g. 13"x13" or
	more) rectangluar arrays.  Each core stored one {bit} of data.
	These were sandwiched between {printed circuit boards}(?).
	Sets of wires ran horizontally and vertically and where a
	vertical and horizontal wire crossed, a core had both wires
	threaded through it.

	A single core could be selected and magnetised by passing
	sufficient current through its horizontal and vertical wires.
	A core would retain its magnetisation until it was
	re-magnetised.  The two possible polarities of magnetisation
	were used to represent the binary values zero and one.

	A third "sense" wire, passed through the core and, if the
	magnetisation of the core was changed, a small pulse would be
	induced in the sense wire which could be detected and used to
	deduce the core's original state.

	Some core memory was immersed in a bath of heated oil to
	improve its performance.

	Core memory was rendered obsolete by {semiconductor} memory.

	For example, the 1970s-era {NCR 499} had two boards, each with
	16 {kilobytes} of core memory.

	(04 Mar 1996)

Ferroelectric RAM

	{Ferroelectric Random Access Memory}

Ferroelectric Random Access Memory

	<storage> (FRAM) A type of {non-volatile} read/write {random
	access} {semiconductor} memory.  FRAM combines the advantages
	of {SRAM} - writing is roughly as fast as reading, and {EPROM}
	- non-volatility and in-circuit programmability.  Current (Feb
	1997) disadvantages are high cost and low density, but that
	may change in the future.  Density is currently at most 32KB
	on a chip, compared with 512KB for SRAM, 1MB for EPROM and 8MB
	for DRAM.

	A ferroelectric memory cell consists of a ferroelectric
	{capacitor} and a {MOS} {transistor}.  Its construction is
	similar to the storage cell of a {DRAM}.  The difference is in
	the dielectric properties of the material between the
	capacitor's electrodes.  This material has a high dielectric
	constant and can be polarized by an electric field.  The
	polarization remains until it gets reversed by an opposite
	electrical field.  This makes the memory non-volatile.  Note
	that ferroelectric material, despite its name, does not
	necessarily contain iron.  The most well-known ferroelectric
	substance is BaTiO3, which does not contain iron.

	Data is read by applying an electric field to the capacitor.
	If this switches the cell into the opposite state (flipping
	over the electrical dipoles in the ferroelectric material)
	then more charge is moved than if the cell was not flipped.
	This can be detected and amplified by sense amplifiers.
	Reading destroys the contents of a cell which must therefore
	be written back after a read.  This is similar to the
	{precharge} operation in DRAM, though it only needs to be done
	after a read rather than periodically as with DRAM {refresh}.
	In fact it is most like the operation of {ferrite core
	memory}.

	FRAM has similar applications to EEPROM, but can be written
	much faster.  The simplicity of the memory cell promises high
	density devices which can compete with DRAM.

	{RAMTRON} is the company behind FRAM.

	(17 Feb 1997)

Fetch

	A {Macintosh} program by Jim Matthews <Fetch@Dartmouth.edu>
	for transferring files using {File Transfer Protocol} (FTP).
	Fetch requires a Mac 512KE, System 4.1, and either {KSP} 1.03
	or {MacTCP}.

	The current version of Fetch is 2.1.2.

	Fetch is Copyright 1992, Trustees of Dartmouth College.

	{(ftp://ftp.Dartmouth.edu/pub/mac/Fetch_2.1.2.sit.hqx)}.
	{(ftp://src.doc.ic.ac.uk/computing/systems/mac/info-mac/comm/tcp)}.

	(30 Nov 1994)

FF

	{form feed}

ffccc

	{Floppy} {Fortran} coding convention checker.

FFP

	Formal FP.  A language similar to FP, but with regular
	sugarless {syntax}, for machine execution.

	See also {FL}.

	["Can Programming be Liberated From the von Neumann Style?  A
	Functional Style and Its Algebra of Programs", John Backus,
	1977 Turing Award Lecture, CACM 21(8):165-180 (Aug 1978)].

	(24 Oct 1994)

FFT

	{Fast Fourier Transform}

FGDC

	{Federal Geographic Data Committee}

FGHC

	Flat GHC.  A {flat} variant of {GHC} in which {guard} calls
	can be only to {primitive}s.

	See also {KL1}.

	(24 Oct 1994)

FGL

	1. Flow Graph Lisp.  A distributed dataflow language for AMPS
	(Applicative Multi-Processing System).  "A Loosely-Coupled
	Applicative Multi-Processing System", R. Keller et al, NCC,
	AFIPS June 1979, pp.613- 622.

	2. Function Graph Language.  Related to FEL.

FGL+LV

	["Functional Programming and the Logical Variable",
	G. Lindstrom, POPL 1985, pp. 266-280].

	(30 Nov 1994)

FGRAAL

	FORTRAN extended GRAph Algorithmic Language.  A FORTRAN
	extension for handling sets and graphs.  "On a Programming
	Language for Graph Algorithms", W.C. Rheinboldt et al, BIT
	12(2) 1972.

fgrep

	<tool> A variant of the {Unix} {grep} command which searches
	for fixed (uninterpreted) strings rather than {regular
	expressions}.  Surprisingly, this is not always faster.

	(27 Oct 1996)

Fiber Distributed Data Interface

	(FDDI) A 100 Mbit/s {ANSI} {standard} {local area network}
	architecture, defined in X3T9.5.  The underlying medium is
	{optical fibre} (though it can be copper cable, in which case
	it may be called {CDDI}) and the topology is a
	{dual-attached}, counter-rotating {token ring}.

	FDDI rings are normally constructed in the form of a "dual
	ring of trees".  A small number of devices, typically
	infrastructure devices such as {router}s and {concentrator}s
	rather than {host} computers, are connected to both rings -
	these are referred to as "{dual-attached}".  Host computers
	are then connected as {single-attached} devices to the
	{router}s or {concentrator}s.  The dual ring in its most
	degenerate form is simply collapsed into a single device.  In
	any case, the whole dual ring is typically contained within a
	computer room.

	This network topology is required because the dual ring
	actually passes through each connected device and requires
	each such device to remain continuously operational (the
	standard actually allows for optical bypasses but these are
	considered to be unreliable and error-prone).  Devices such as
	{workstation}s and {minicomputer}s that may not be under the
	control of the {network manager}s are not suitable for
	connection to the dual ring.

	As an alternative to a dual-attached connection, the same
	degree of resilience is available to a {workstation} through a
	{dual-homed} connection which is made simultaneously to two
	separate devices in the same FDDI ring.  One of the
	connections becomes active while the other one is
	automatically blocked.  If the first connection fails, the
	backup link takes over with no perceptible delay.

	{Usenet} newsgroup: {news:comp.dcom.lans.fddi}.

	(13 Dec 1994)

fiber optics

	<spelling> US spelling of "fibre optics".  See {optical
	fibre}.

	(31 Mar 1997)

Fibonacci series

	<mathematics> The {infinite} sequence of numbers beginning

		1, 1, 2, 3, 5, 8, 13, ...

	in which each term is the sum of the two terms preceding it.

	The ratio of successive Fibonacci terms tends to the golden
	ratio, namely (1 + sqrt 5)/2.

	(14 Jul 1997)

Fibre Channel

	<communications> An {ANSI} {standard}.

	{WebStart C&C (http://www.cmpcmm.com/cc/standards.html#FCS)}.

	{Amdahl Introduction
	(http://www.amdahl.com/ext/CARP/FCA/FCintro.html)}.

	[Summary?]

	(30 Oct 1996)

Fibre Channel-Arbitrated Loop

	<hardware, standard> (FC-AL) A fast serial bus interface
	standard intended to replace {SCSI} on high-end {servers}.

	FC-AL has a number of advantages over SCSI.  It offers higher
	speed: the base speed is 100 {Mbps}, which likely to increase
	to 200, 400, and 800 in the next few years.  Many devices are
	dual ported, i.e., can be accessed through two independent
	ports, which doubles speed and increases fault tolerance.
	Cables can be as long as 30 m (coaxial) or 10 km (optical).
	FC-AL enables {self-configuring} and {hot swapping} and the
	maximum number of devices on a single port is 126.  Finally,
	it provides software compatibility with SCSI.

	Despite all these features FC-AL is unlikely to appear on
	desktops anytime soon, partly because its price, partly
	because typical {desktop computers} would not take advantage
	of many of the advanced features.  On these systems {FireWire}
	has more potential.

	(15 Mar 1997)

fibre optics

	{optical fibre}

FIDIL

	Based on "maps", generalised arrays whose index sets
	("domains") are arbitrary D-dimensional sets.  Domains are
	first-class objects and may be constructed by union,
	intersection, etc.

	["Fidil: A Language for Scientific Programming",
	P.N. Hilfinger et al, TR UCRL-98057, LLNL Jan 1988].

FIDO

	FInite DOmains.  A constraint language implemented on top of
	Prolog.

	{(ftp://ftp.uni-kl.de/pub1/Unix/languages/fido/)}

FidoNet

	A worldwide hobbyist network of personal computers which
	exchanges {e-mail}, discussion groups, and files.  Founded in
	1984 and originally consisting only of {IBM PC}s and
	compatibles, FidoNet now includes such diverse machines as
	{Apple II}s, {Atari}s, {Amiga}s, and {Unix} systems.  Though
	it is much younger than {Usenet}, FidoNet is already (in early
	1991) a significant fraction of {Usenet}'s size at some 8000
	systems.

field circus

	A derogatory pun on "field service".  The field service
	organisation of any hardware manufacturer, but especially
	{DEC}.  There is an entire genre of jokes about DEC field
	circus engineers:

	Q: How can you recognise a DEC field circus engineer with a
	flat tire?

	A: He's changing one tire at a time to see which one is flat.

	Q: How can you recognise a DEC field circus engineer who is
	out of gas?

	A: He's changing one tire at a time to see which one is flat.

	See {Easter egging} for additional insight on these jokes.

	There is also the "Field Circus Cheer" (from the {plan file}
	for {DEC} on MIT-AI):

	 Maynard! Maynard!
	 Don't mess with us!
	 We're mean and we're tough!
	 If you get us confused
	 We'll screw up your stuff.

	(DEC's service HQ is located in Maynard, Massachusetts).

	(01 Dec 1994)

field effect transistor

	<electronics> (FET) A {transistor} with a region of {donor}
	material with two terminals called the "source" and the
	"drain", and an adjoining region of {acceptor} material
	between, called the "gate".  The voltage between the gate and
	the {substrate} controls the current flow between source and
	drain by depleting the donor region of its charge carriers to
	greater or lesser extent.

	There are two kinds of FET's, {Junction FETs} and {MOSFETs}.

	Because no current (except a minute leakage current) flows
	through the gate, FETs can be used to make circuits with very
	low power consumption.

	Contrast {bipolar transistor}.

	(05 Oct 1995)

field-programmable gate array

	<hardware> (FPGA) A {gate array} where the logic network can
	be programmed into the device after its manufacture.  An FPGA
	consists of an array of logic elements, either gates or lookup
	table {RAM}s, {flip-flops} and programmable interconnect
	wiring.

	Most FPGAs are reprogrammable, since their logic functions and
	interconnect are defined by RAM cells.  The {Xilinx} LCA,
	{Altera} FLEX and {AT&T} ORCA devices are examples.  Others
	can only be programmed once, by closing "antifuses".  These
	retain their programming permanently.  The {Actel} FPGAs are
	the leading example of such devices.  Atmel FPGAs are
	currently (July 1997) the only ones in which part of the array
	can be reprogrammed while other parts are active.

	As of 1994, FPGAs have logic capacity up to 10K to 20K
	2-input-NAND-equivalent gates, up to about 200 I/O pins and
	can run at {clock rate}s of 50 MHz or more.  FPGA designs must
	be prepared using {CAD} software tools, usually provided by
	the chip vendor, to do technology mapping, partitioning and
	placement, routing, and binary output.  The resulting binary
	can be programmed into a {ROM} connected to the FPGA or
	{downloaded} to the FPGA from a connected computer.

	In addition to ordinary logic applications, FPGAs have enabled
	the development of {logic emulators}.  There is also research
	on using FPGAs as computing devices, taking direct advantage
	of their reconfigurability into problem-specific hardware
	processors.

	{Usenet} newsgroup: {news:comp.arch.fpga}.

	(11 Jul 1997)

field servoid

	[Play on "android"] /fee'ld ser'voyd/ Representative of a
	field service organisation (see {field circus}).  This has
	many of the implications of {droid}.

FIFO

	{First In First Out}

Fifth

	An enhanced version of FORTH.  M.S. Dissertation, Cliff Click
	<cliff@cs.rice.edu>, Texas A&M, 1985.  Available from the
	Software Construction Co, (409)696-5432.

Fifth Dimension Technologies

	<company, virtual reality> (5DT) Manufacturers of the {5th
	Glove}.

	(04 Apr 1995)

fifth generation language

	<language, artificial intelligence> A myth the Japanese spent
	a lot of money on.  In about 1982, {MITI} decided it would
	spend ten years and a lot of money applying {artificial
	intelligence} to programming, thus solving the {software
	crisis}.  The project spent its money and its ten years and in
	1992 closed down with a wimper.

	(06 Nov 1996)

Fight-o-net

	<messaging> A distortion of {FidoNet}, often applied after a
	flurry of {flamage} in a particular {echo}, especially the
	SYSOP echo or Fidonews (see {'Snooze}).

	(04 Nov 1996)

file

	<file system> An element of data storage in a {file system}.

	The history of computing is rich in varied kinds of files and
	{filesystems}, whether ornate (e.g., {Macintosh file system}
	for a well-known case) or deficient (e.g., many simple
	pre-1980s file systems don't allow {directories}).

	However, the prototypical file has these characteristics:

	* It is a single sequence of bytes (but consider {Macintosh}
	{resource forks}).

	* It has a finite length, unlike, e.g. a {Unix} {device}.

	* It is stored in a {non-volatile storage} medium (but see
	{ramdrive}).

	* It exists (nominally) in a {directory}.

	* It has a name that it can be referred to by in file
	operations, possibly in combination with its {path}.

	Additionally, a filesystem may associate other information
	with a file, such as {permission} bits or other {file
	attributes}; timestamps for file creation, last revision, and
	last access; revision numbers (a` la VMS), and other kinds of
	{magic}.

	(08 Apr 1997)

File Allocation Table

	<file system> (FAT) The component of an {MS-DOS} {file system}
	which describes the files on a {hard disk} or {floppy disk}
	and records the status of each {cluster} - allocated or free.

	The FAT is usually stored at the beginning of the drive [What
	does that mean?].  It lists the name, type, size, date and the
	{clusters} allocated to each {file} on a drive.

	Originally created for the {PC-M} {operating systems}, files
	were catalogued using 8-bit addressing.  With the introduction
	of MS-DOS 4 an incompatible 16-bit FAT was introduced that
	allowed {partitions} larger than 60 megabytes.

	{MS DOS}'s FAT allows only 8-letter filenames with a 3 letter
	{filename extension}.  To access partitions larger than 2
	gigabytes and support {pathnames} greater that 256 characters,
	{Microsoft} created a 32-bit fat (FAT32) not fully {backward
	compatible} with the 16-bit and 8-bit FATs.

	{(http://www.ora.com/reference/dictionary/terms/F/File_Allocation_Table.htm)}.

	Compare: {NTFS}.

	[How big is a FAT?  Is the term used outside MS DOS?  Where
	was FAT32 first used?]

	(29 Nov 1997)

File Attach

	[FidoNet] 1.  A file sent along with a mail message from one
	BBS to another.

	2. Sending someone a file by using the File Attach option in a
	BBS mailer.

File Composition

	A typesetting language.

	["File Composition System Reference Manual", No. 90388,
	Information Intl].

file compression

	<algorithm> The {compression} of data in a file, usually to
	reduce storage requirements.

	(06 Apr 1995)

file control block

	<operating system> (FCB) An {MS-DOS} data structure that
	stores information about an open file.  The number of FCBs is
	configured in {CONFIG.SYS} with a command

		FCBS=x,y

	where x (between 1 and 255 inclusive, default 4) specifies the
	number of file control blocks to allocate and therefore the
	number of files that MS-DOS can have open at one time.  y (not
	needed from DOS 5.0 onwards) specifies the number of files to
	be closed automatically if all x are in use.

	(21 Mar 1995)

file descriptor

	<programming, operating system> An integer that identifies an
	open {file} within a {process}.  This number is obtained as a
	result of opening a file.  Operations which read, write, or
	close a file would take the file descriptor as an input
	parameter.

	In many {operating system} implementations, file descriptors
	are small integers which index a table of open files.  In
	{Unix}, file descriptors 0, 1 and 2 correspond to the
	{standard input}, {standard output} and {standard error} files
	respectively.

	See {file descriptor leak}.

	(06 Feb 1998)

file descriptor leak

	<programming> (Or "fd leak" /F D leek/) A kind of programming
	{bug} analogous to a {core leak}, in which a program fails to
	close {file descriptors} ("fd"s) after file operations are
	completed, and thus eventually runs out of them.

	See {leak}.

	(30 Nov 1994)

file extension

	{filename extension}

filename extension

	<filename extension> The portion of a filename, following the
	final point, which indicates the kind of data stored in the
	file.  Many {operating system}s use filename extensions,
	e.g. {Unix}, {VMS}, {MS-DOS}.  They are usually from one to
	three letters (some sad old OSes support no more than three).
	Examples include "c" for {C} {source code}, "ps" for
	{PostScript}, "txt" for arbitrary text.

	Compare: {MIME type}.

	{Tony Warr's comprehensive list
	(http://camalott.com/~rebma/filex.html)}.

	(08 Jan 1998)

FileNet

	<storage> A system for storage of {images} on laser disk using
	{COLD}.

	(09 Nov 1995)

File Request

	1. The {FidoNet} equivalent of {FTP}, in which one {BBS}
	system automatically dials another and {snarf}s one or more
	files.  Often abbreviated "FReq"; files are often announced as
	being "available for FReq" in the same way that files are
	announced as being "available for/by {anonymous FTP}" on the
	{Internet}.

	2. The act of getting a copy of a file by using the File
	Request option of the {BBS} mailer.

	(05 Jan 1995)

File Separator

	<character> (FS) {ASCII} character 28.

	(28 Jun 1996)

file server

	Hardware and software that together provide file-handling and
	storage functions for multiple users on a {local area
	network}.  The most common choices for file server software
	are {Sun Microsystems}' {Network File System} for {Unix} and
	{Novell Netware} for {IBM PC} compatibles.  There is also a
	version of NFS for PCs called {PC-NFS}.  Storing files on a
	file server saves having multiple copies stored on individual
	computers, thus economising on disk space and also makes
	administrating and updating the files easier.

File Service Protocol

	<protocol> (FSP) A {protocol}, similar to {FTP}, for copying
	{files} between computers.  It's designed for {anonymous
	archives}, and has protection against {server} and {network}
	overloading.  It doesn't use connections so it can survive
	interruptions in service.

	Until 12 Aug 1993, FSP didn't stand for anything.  Wen-King
	was responsible for the initials and Michael Grubb
	<mg@ac.duke.edu> for their eventual expansion.  Other
	suggestions were "File Slurping Protocol", "Flaky Stream
	Protocol" and "FTP's Sexier Partner".

	{FAQ
	(ftp://ftp.germany.eu.net/pub/networking/inet/fsp/fsp-faq/)}.

	[fsp-faq, 12 Aug 1993].

	(07 Dec 1997)

file signature

	A {magic number}.

file system

	<operating system> (FS, or "filesystem") 1. A system for
	organizing {directories} and {files}, generally in terms of
	how it is implemented in the {disk operating system}.  E.g.,
	"The {Macintosh file system} is just dandy as long as you
	don't have to interface it with any other file systems".

	2. The collection of files and directories stored on a given
	drive (floppy drive, hard drive, disk {partition}, {logical}
	drive, {RAM drive}, etc.).  E.g., "mount attaches a named file
	system to the file system hierarchy at the pathname location
	directory [...]" -- {Unix manual page} for "mount(8)".

	As an extension of this sense, "file system" is sometimes used
	to refer to the representatation of the file system's
	organization (e.g. its {file allocation table}) as opposed the
	actual content of the files in the file system.

	{Unix manual page}: fs(5), mount(8).

	(10 Apr 1997)

file transfer

	<networking> Copying a {file} from one computer to another
	over a computer {network}.

	See also {File Transfer Protocol}, {Kermit}, {Network File
	System}, {rcp}, {uucp}, {XMODEM}, {ZMODEM}.

	(10 Apr 1997)

File Transfer Protocol

	(FTP) A {client-server} protocol which allows a user on one
	computer to transfer files to and from another computer over a
	{TCP/IP} network.  Also the client program the user executes
	to transfer files.  It is defined in {STD 9}, {RFC 959}.

	See also {anonymous FTP}, {FSP}, {TFTP}.

	{Unix manual page}: ftp(1).

	(01 Dec 1994)

file type

	<file format> The kind of data stored in a file.  Most modern
	{operating systems} use the {filename extension} to determine
	the file type though some store this information elsewhere in
	the {file system}.  The file type is used to choose an
	appropriate icon to represent the file in a {GUI} and the
	correct {application} with which to view, edit, run, or print
	the file.

	Different operating systems support different sets of file
	types though most agree on a large common set and allow
	arbitrary new types to be defined.

	See also {MIME}.

	[URL of list of file types?]

	(13 Feb 1997)

filing system

	{file system}

filk

	/filk/ [SF fandom, where a typo for "folk" was adopted as a
	new word] A popular or folk song with lyrics revised or
	completely new lyrics, intended for humorous effect when
	read, and/or to be sung late at night at SF conventions.
	There is a flourishing subgenre of these called "computer
	filks", written by hackers and often containing rather
	sophisticated technical humour.  See {double bucky} for an
	example.  Compare {grilf}, {hing} and {newsfroup}.

fill-out form

	A type of user interface used, for example, on the {World-Wide
	Web}, to organise a set of questions or options for the user
	so that it resembles a traditional paper form that is filled
	out.  Typical query types are: fill-in-the-blank (text), menu
	of options, select zero or more, or select exactly one
	("{radio buttons}").

	{Mosaic} is one {World-Wide Web} {browser} which supports
	fill-out forms, see {here
	(http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/fill-out-forms/overview.html)}.

	(16 Dec 1994)

film at 11

	[MIT: in parody of TV newscasters] 1. Used in conversation to
	announce ordinary events, with a sarcastic implication that
	these events are earth-shattering.  "{ITS} crashes; film at
	11."  "Bug found in scheduler; film at 11."

	2. Also widely used outside MIT to indicate that additional
	information will be available at some future time, *without*
	the implication of anything particularly ordinary about the
	referenced event.  For example, "The mail file server died
	this morning; we found garbage all over the root directory.
	Film at 11." would indicate that a major failure had occurred
	but that the people working on it have no additional
	information about it as yet; use of the phrase in this way
	suggests gently that the problem is liable to be fixed more
	quickly if the people doing the fixing can spend time doing
	the fixing rather than responding to questions, the answers to
	which will appear on the normal "11:00 news", if people will
	just be patient.

films

	There is a {database of films
	(http://www.cm.cf.ac.uk/Movies/)} at Cardiff, UK, collected
	from the {news:rec.arts.movies} {Usenet} newsgroup.

	(25 Oct 1995)

FILO

	First In, Last Out; a {stack}.

	Compare {FIFO}.

	(13 Feb 1996)

Filtabyte

	<networking, hardware> An {Ethernet controller} card made by
	{LRT} based on the {LANCE} and {SIA}.  It uses {DMA}.  Its
	{Ethernet address} can be changed by software.

	(01 Dec 1994)

filter

	1. (Originally {Unix}, now also {MS-DOS}) A program that
	processes an input data stream into an output data stream in
	some well-defined way, and does no I/O to anywhere else except
	possibly on error conditions; one designed to be used as a
	stage in a {pipeline} (see {plumbing}).  Compare {sponge}.

	2. ({functional programming}) A {higher-order function} which
	takes a {predicate} and a list and returns those elements of
	the list for which the predicate is true.  In {Haskell}:

		filter p []     = []
		filter p (x:xs) = if p x then x : rest else rest
				  where
				  rest = filter p xs

	See also {filter promotion}.

filter promotion

	In a generate and test algorithm, combining part of the filter
	with the generator in order to reduce the number of potential
	solutions generated.  A trivial example:

		filter (< 100) [1..1000]  ==>  [1..99]

	where [1..n] generates the list of integers from 1 to n.  Here
	the filter has been combined completely with the generator.
	This is an example of {fusion}.

FIMS

	Form Interface Management System.

Finagle's Law

	<humour> The generalised or "folk" version of {Murphy's Law},
	fully named "Finagle's Law of Dynamic Negatives" and usually
	rendered "Anything that can go wrong, will".  One variant
	favoured among hackers is "The perversity of the Universe
	tends towards a maximum".

	The label "Finagle's Law" was popularised by SF author Larry
	Niven in several stories depicting a frontier culture of
	asteroid miners; this "Belter" culture professed a religion
	and/or running joke involving the worship of the dread god
	Finagle and his mad prophet Murphy.

	(14 Dec 1995)

fine grain

	{granularity}

finger

	<tool> 1. (From {WAITS}, via {BSD Unix}) A program that
	displays information about a particular user or all users
	logged on the system, or a remote system.  Finger typically
	shows full name, last login time, idle time, terminal line,
	and terminal location (where applicable).  It may also display
	a {plan file} left by the user (see also {Hacking X for Y}).
	Some versions take a "-l" (long) argument which yeilds more
	information.

	2. Any picture (composed of {ASCII art}) depicting "the
	finger".  Originally a humorous component of one's {plan
	file} to deter the curious fingerer, it has entered the
	arsenal of some {flamer}s.

	(14 Dec 1995)

finger-pointing syndrome

	<programming> All-too-frequent result of {bugs}, especially in
	new or experimental configurations.  The hardware vendor
	points a finger at the software.  The software vendor points a
	finger at the hardware.  All the poor users get is the finger.

	(14 Dec 1995)

finite

	{compact}

finite differencing

	See {strength reduction}.

Finite State Automata

	{Finite State Machine}

Finite State Automaton

	{Finite State Machine}

Finite State Machine

	<mathematics, algorithm> (FSM or "Finite State Automaton",
	"transducer") An {abstract machine} consisting of a set of
	states (including the initial state), a set of input events, a
	set of output events and a state transition function.  The
	function takes the current state and an input event and
	returns the new set of output events and the next state.  Some
	states may be designated as "terminal states".  The state
	machine can also be viewed as a function which maps an ordered
	sequence of input events into a corresponding sequence of
	(sets of) output events.

	A {deterministic} FSM is one where the next state is uniquely
	determinied by a single input event.  A {nondeterministic} FSM
	may have several next states for a given input event, which
	one is actually chosen may either be random or, according to a
	different definition, it may depend on an arbitrary number of
	subsequent input events.  In the latter case, until these
	subsequent events occur it is not possible to determine which
	state the machine is in.  It is possible to automatically
	translate a nondeterministic FSM into a deterministic one
	which will produce the same output given the same input.

	See also {state transition diagram}, {Turing Machine}.

	[J.H. Conway, "regular algebra and finite machines", 1971, Eds
	Chapman & Hall].

	[S.C. Kleene, "Representation of events in nerve nets and
	finite automata", 1956, Automata Studies. Princeton].

	[Hopcroft & Ullman, 1979, "Introduction to automata theory,
	languages and computations", Addison-Wesley].

	(12 Apr 1995)

finn

	To pull rank on somebody based on the amount of time one has
	spent on {IRC}.  The term derives from the fact that IRC was
	originally written in Finland in 1987.

	(24 Jan 1995)

FIPS

	{Federal Information Processing Standards}

FIR

	<electronics> {Finite Impulse Response} (filter).

firebottle

	<electronics, humour> {vacuum tube}.

firefighting

	1. What sysadmins have to do to correct sudden operational
	problems.  An opposite of hacking.  "Been hacking your new
	newsreader?"  "No, a power glitch hosed the network and I
	spent the whole afternoon fighting fires."

	2. The act of throwing lots of manpower and late nights at a
	project, especially to get it out before deadline.  See also
	{gang bang}, {Mongolian Hordes technique}; however, the term
	"firefighting" connotes that the effort is going into chasing
	bugs rather than adding features.

	(01 Dec 1994)

firehose syndrome

	In mainstream folklore it is observed that trying to drink
	from a firehose can be a good way to rip your lips off.  On
	computer networks, the absence or failure of flow control
	mechanisms can lead to situations in which the sending system
	sprays a massive flood of packets at an unfortunate receiving
	system, more than it can handle.

	Compare {overrun}, {buffer overflow}.

firewall

	1. {firewall code}.

	2. {firewall machine}.

firewall code

	1. The code you put in a system (say, a telephone switch) to
	make sure that the users can't do any damage. Since users
	always want to be able to do everything but never want to
	suffer for any mistakes, the construction of a firewall is a
	question not only of defensive coding but also of interface
	presentation, so that users don't even get curious about those
	corners of a system where they can burn themselves.

	2. Any sanity check inserted to catch a {can't happen} error.
	Wise programmers often change code to fix a bug twice: once to
	fix the bug, and once to insert a firewall which would have
	arrested the bug before it did quite as much damage.

firewall machine

	<networking> A dedicated gateway machine with special security
	precautions on it, used to service outside network, especially
	{Internet}, connections and dial-in lines.  The idea is to
	protect a cluster of more loosely administered machines hidden
	behind it from {crackers}.  The typical firewall is an
	inexpensive {microprocessor}-based {Unix} machine with no
	critical data, with modems and public network ports on it, but
	just one carefully watched connection back to the rest of the
	cluster.  The special precautions may include threat
	monitoring, {call-back}, and even a complete {iron box}
	keyable to particular incoming IDs or activity patterns.

	Firewalls often run {proxy gateways}.

	Synonym {flytrap}, {Venus flytrap}.

	(08 Jun 1997)

FireWire

	{High Performance Serial Bus}

fireworks mode

	The mode a machine is sometimes said to be in when
	it is performing a {crash and burn} operation.

Firmware

	Software stored in read-only memory (ROM) or programmable ROM
	(PROM).  Easier to change than hardware but harder than
	software stored on disk.  Firmware is often responsible for
	the behaviour of a system when it is first switched on.  A
	typical example would be a "monitor" program in a
	microcomputer which loads the full operating system from disk
	or from a network and then passes control to it.

firmy

	{stiffy}

first class module

	<programming> A {module} that is a {first class data object}
	of the {programming language}, e.g. a {record} containing
	{functions}.  In a {functional language}, it is standard to
	have first class programs, so program building blocks can have
	the same status.

	{Claus Reinke's Virtual Bookshelf
	(http://www.informatik.uni-kiel.de/~cr/bib/bookshelf/Modules.html)}.
	{Mark Jones' home page
	(http://www.cs.nott.ac.uk/Department/Staff/mpj/)}.

	(17 Jun 1997)

First Fit

	<algorithm> A {resource} allocation scheme (usually for
	{memory}).  First Fit fits data into memory by scanning from
	the beginning of available memory to the end, until the first
	free space which is at least big enough to accept the data is
	found.  This space is then allocated to the data.  Any left
	over becomes a smaller, separate free space.

	If the data to be allocated is bigger than the biggest free
	space, the request cannot be met, and an error is generated.

	Compare {Best Fit}.

	(02 Jun 1997)

first generation computer

	<architecture> A prototype computer based on {vacuum tubes}
	and other esoteric technologies.  Chronologically, any
	computer designed before the mid-1950s.  Examples include
	{Howard Aiken}'s {Mark 1} (1944), Maunchly and Eckert's
	{ENIAC} (1946), and the {IAS} computer.

	(22 Nov 1996)

first generation language

	Raw {machine code}.  When computers were first "programmed"
	from an input device, rather than by being rewired, they were
	fed input in the form of numbers, which they then interpreted
	as commands.  This was really low level, and a program
	fragment might look like "010307 010307".  Almost no one
	programs in machine language anymore, because translators are
	nearly trivial to write.

	(01 Dec 1994)

first in first out

	(FIFO) A queue.  A data structure or hardware buffer from
	which items are taken out in the same order they were put in.
	Also known as a "shelf" from the analogy with pushing items
	onto one end of a shelf so that they fall off the other.  A
	FIFO is useful for buffering a stream of data between a sender
	and receiver which are not synchronised - i.e. not sending and
	receiving at exactly the same rate.  Obviously if the rates
	differ by too much in one direction for too long then the FIFO
	will become either full ({block}ing the sender) or empty
	({block}ing the receiver).  A {Unix} {pipe} is a common
	example of a FIFO.

	The opposite of a FIFO is a LIFO ({last in first out}) which
	is the same as a {stack}.

	(20 Oct 1994)

first-order

	Not {higher-order}.

	(06 Mar 1995)

first-order logic

	<language, logic> The language describing the truth of
	mathematical {formula}s.  Formulas describe properties of
	terms and have a truth value.  The following are atomic
	formulas:

	 True
	 False
	 p(t1,..tn)	where t1,..,tn are terms and p is a predicate.

	If F1, F2 and F3 are formulas and v is a variable then the
	following are compound formulas:

	 F1 ^ F2	conjunction - true if both F1 and F2 are true,

	 F1 V F2	disjunction - true if either or both are true,

	 F1 => F2	implication - true if F1 is false or F2 is
			true, F1 is the antecedent, F2 is the
			consequent (sometimes written with a thin
			arrow),

	 F1 <= F2	true if F1 is true or F2 is false,

	 F1 == F2	true if F1 and F2 are both true or both false
			(normally written with a three line
			equivalence symbol)

	 ~F1		negation - true if f1 is false (normally
			written as a dash '-' with a shorter vertical
			line hanging from its right hand end).

	 For all v . F	universal quantification - true if F is true
			for all values of v (normally written with an
			inverted A).

	 Exists v . F	existential quantification - true if there
			exists some value of v for which F is true.
			(Normally written with a reversed E).

	The operators ^ V => <= == ~ are called connectives.  "For
	all" and "Exists" are {quantifier}s whose {scope} is F.  A
	term is a mathematical expression involving numbers,
	operators, functions and variables.

	The "order" of a logic specifies what entities "For all" and
	"Exists" may quantify over.  First-order logic can only
	quantify over sets of {atomic} {proposition}s.  (E.g. For all p
	. p => p).  Second-order logic can quantify over functions on
	propositions, and higher-order logic can quantify over any
	type of entity.  The sets over which quantifiers operate are
	usually implicit but can be deduced from well-formedness
	constraints.

	In first-order logic quantifiers always range over ALL the
	elements of the domain of discourse.  By contrast,
	second-order logic allows one to quantify over subsets of M.

	["The Realm of First-Order Logic", Jon Barwise, Handbook of
	Mathematical Logic (Barwise, ed., North Holland, NYC, 1977)].

	(02 May 1995)

First Party DMA

	{bus mastering}

fish

	(Adelaide University, Australia) 1. Another {metasyntactic
	variable}.  See {foo}.  Derived originally from the Monty
	Python skit in the middle of "The Meaning of Life" entitled
	"Find the Fish".

	2. <storage> microfiche.  A microfiche file cabinet may be
	referred to as a "fish tank".

	(01 Dec 1994)

FISH queue

	(By analogy with {FIFO} - First In, First Out) First In, Still
	Here.

	A joking way of pointing out that processing of a particular
	sequence of events or requests has stopped dead.  Also "FISH
	mode" and "FISHnet"; the latter may be applied to any network
	that is running really slowly or exhibiting extreme flakiness.

	(01 Dec 1994)

FITNR

	({Thinking Machines, Inc.}) Fixed In the Next Release.

	A written-only notation attached to bug reports.  Often
	wishful thinking.

	(01 Dec 1994)

FITS

	Flexible Image Transport System.  The standard data
	interchange and archive format of the astronomy community.

	(01 Dec 1994)

FIX

	{Federal Information Exchange}

fix

	<mathematics> The {fixed point} {combinator}.  Called Y in
	{combinatory logic}.  Fix is a {higher-order function} which
	returns a fixed point of its argument (which is a function).

		fix :: (a -> a) -> a
		fix f = f (fix f)

	Which satisfies the equation

		fix f = x such that f x = x.

	Somewhat surprisingly, fix can be defined as the non-recursive
	{lambda abstraction}:

		fix = \ h . (\ x . h (x x)) (\ x . h (x x))

	Since this involves self-application, it has an {infinite
	type}.  A function defined by

		f x1 .. xN = E

	can be expressed as

		f = fix (\ f . \ x1 ... \ xN . E)
		  = (\ f . \ x1 ... \xN . E)
			(fix (\ f . \ x1 ... \ xN . E))
		  = let f = (fix (\ f . \ x1 ... \ xN . E))
		    in \ x1 ... \xN . E

	If f does not occur {free} in E (i.e. it is not {recursive})
	then this reduces to simply

		f = \ x1 ... \ xN . E

	In the case where N = 0 and f is free in E, this defines an
	infinite data object, e.g.

		ones = fix (\ ones . 1 : ones)
		     = (\ ones . 1 : ones) (fix (\ ones . 1 : ones))
		     = 1 : (fix (\ ones . 1 : ones))
		     = 1 : 1 : ...

	Fix f is also sometimes written as mu f where mu is the Greek
	letter or alternatively, if f = \ x . E, written as mu x . E.

	Compare {quine}.

	(13 Apr 1995)

fixed disk

	<storage> A {hard disk} which is not a {removable disk}.

fixed point

	<mathematics> The fixed point of a function, f is any value, x
	for which f x = x.  A function may have any number of fixed
	points from none (e.g. f x = x+1) to infinitely many (e.g. f x
	= x).  The {fixed point combinator}, written as either "fix"
	or "Y" will return the fixed point of a function.

	See also {least fixed point}.

	(13 Apr 1995)

fixed point combinator

	<mathematics> (Y) The name used in {combinatory logic} for the
	{fixed point} function, also written as "{fix}".

	(20 Oct 1994)

FIXME

	A standard tag often put in comments near a piece of code that
	needs work.  The point of doing so is that a {grep} or a
	similar pattern-matching tool can find all such places
	quickly.  This is common in {GNU} code.  Compare {XXX}.

fixpoint

	{fixed point}

Fjolnir

	<language> An Icelandic programming language for the {IBM PC}
	from the {University of Iceland}.

	[Pall Haraldsson <pallha@rhi.hi.is>].

	(17 Mar 1995)

FL

	<language> Function Level.

	John Backus's successor to {FP}, developed ca. 1985.  FL is
	{dynamically typed} and adds {higher-order function}s,
	{exception}s, {user-defined type}s and other features.

	["FL Language Manual, Parts 1 & 2", J. Backus et al, IBM
	Research Report RJ 7100 (1989)].

	(20 Oct 1994)

F+L

	<language> Functions plus Logic.  Equational clauses within
	function definitions to solve for {logic variable} bindings.

	["Functions plus Logic in Theory and Practice", R.B.
	Kieburtz, Feb 1987, unpublished].

	(20 Oct 1994)

flag

	A variable or quantity that can take on one of two values; a
	bit, particularly one that is used to indicate one of two
	outcomes or is used to control which of two things is to be
	done.  "This flag controls whether to clear the screen before
	printing the message."  "The program status word contains
	several flag bits."  See also {hidden flag}, {mode bit}.

flag day

	<jargon> A software change that is neither forward- nor
	backward-compatible, and which is costly to make and costly to
	reverse.  E.g. "Can we install that without causing a flag day
	for all users?"

	This term has nothing to do with the use of the word {flag} to
	mean a variable that has two values.  It came into use when a
	massive change was made to the {Multics} {time-sharing} system
	to convert from the old {ASCII} code to the new one; this was
	scheduled for Flag Day (a US holiday), June 14, 1966.

	See also {backward combatability}, {lock-in}.

	(15 Jan 1998)

FLAIR

	<language> An early system on the {IBM 650}.

	[Listed in CACM 2(5):16 (May 1959)].

	(17 Mar 1995)

flaky

	(Or "flakey") Subject to frequent {lossage}.  This use is of
	course related to the common slang use of the word to describe
	a person as eccentric, crazy, or just unreliable.  A system
	that is flaky is working, sort of - enough that you are
	tempted to try to use it - but fails frequently enough that
	the odds in favour of finishing what you start are low.
	Commonwealth hackish prefers {dodgy}.

	(05 Jan 1996)

flamage

	/flay'm*j/ Flaming verbiage, especially high-noise, low-signal
	postings to {Usenet} or other electronic {fora}.  Often in the
	phrase "the usual flamage".  "Flaming" is the act itself;
	"flamage" the content; a "{flame}" is a single flaming
	message.

flame

	<messaging> 1. An {electronic mail} or {Usenet} news message
	intended to insult, provoke or rebuke, or the act of sending
	such a message.  Sometimes a flame will be delimited by marks
	such as "flame on...flame off".

	2. To speak incessantly and/or rabidly on some relatively
	uninteresting subject or with a patently ridiculous attitude
	or with hostility towards a particular person or group of
	people.

	{Usenetter} Marc Ramsey, who was at {WPI} from 1972 to 1976,
	adds: "I am 99% certain that the use of "flame" originated at
	WPI.  Those who made a nuisance of themselves insisting that
	they needed to use a {TTY} for "real work" came to be known as
	"flaming asshole lusers".  Other particularly annoying people
	became "flaming asshole ravers", which shortened to "flaming
	ravers", and ultimately "flamers".  I remember someone picking
	up on the Human Torch pun, but I don't think "flame on/off"
	was ever much used at WPI."  See also {asbestos}.

	The term may have been independently invented at several
	different places; it is also reported that "flaming" was in
	use to mean something like "interminably drawn-out
	semi-serious discussions" (late-night bull sessions) at
	Carleton College during 1968-1971.

	It is possible that the hackish sense of "flame" is much older
	than that.  The poet Chaucer was also what passed for a wizard
	hacker in his time; he wrote a treatise on the astrolabe, the
	most advanced computing device of the day.  In Chaucer's
	"Troilus and Cressida", Cressida laments her inability to
	grasp the proof of a particular mathematical theorem; her
	uncle Pandarus then observes that it's called "the fleminge of
	wrecches."  This phrase seems to have been intended in context
	as "that which puts the wretches to flight" but was probably
	just as ambiguous in Middle English as "the flaming of
	wretches" would be today.  One suspects that Chaucer would
	feel right at home on {Usenet}.

flame bait

	A posting intended to trigger a {flame war}, or one that
	invites {flame}s in reply.

flame off

	{flame on}

flame on

	<messaging, jargon> To begin or continue to {flame}.  The
	punning reference to Marvel Comics's Human Torch is no longer
	widely recognised.

	The phrase "flame on" may actually precede the flame, in which
	case "flame off" will follow it.

	See {rave}, {burble}.

	(29 Oct 1996)

flamer

	<jargon, person> (Or "pain in the net") One who habitually
	{flame}s.  Said especially of obnoxious {Usenet}
	personalities.

	(26 Aug 1996)

flame war

	An acrimonious dispute conducted on a public electronic forum
	such as {Usenet}.  See {flame}.

FLAP

	A {symbolic mathematics} package for {IBM 360}.

	["FLAP Programmer's Manual", A.H. Morris Jr., TR-2558 (1971)
	US Naval Weapons Lab].

	[Sammet 1969, p. 506].

	(17 Oct 1994)

flap

	1. <storage, jargon> To unload a {DECtape} (so it goes flap,
	flap, flap).  Old-time {hackers} at {MIT} tell of the days
	when the disk was device 0 and {microtapes} were 1, 2,
	etc. and attempting to flap device 0 would instead start a
	motor banging inside a cabinet near the disk.

	The term is used, by extension, for unloading any magnetic
	tape.  See also {macrotape}.  Modern {cartridge tapes} no
	longer actually flap, but the usage has remained.

	The term could well be re-applied to {DEC}'s {TK50} cartridge
	tape drive, a spectacularly misengineered contraption which
	makes a loud flapping sound, almost like an old reel-type
	lawnmower, in one of its many tape-eating failure modes.

	3. <networking> See {flapping router}.

	(17 Jun 1997)

flapping router

	<networking> A {router} that transmits routing updates
	alternately advertising a destination network first via one
	route, then via a different route.  The analogy is with a flag
	flapping to and fro.

	Flapping routers are often identified on more advanced
	{protocol analysers} such as the Network General (TM) Sniffer.

	(17 Jun 1997)

flarp

	/flarp/ [Rutgers University] Yet another {metasyntactic
	variable} (see {foo}).  Among those who use it, it is
	associated with a legend that any program not containing the
	word "flarp" somewhere will not work.  The legend is
	discreetly silent on the reliability of programs which *do*
	contain the magic word.

flash

	1. <chat> A program which allows one to flood another {Unix}
	user's {terminal} with {garbage}, through exploiting a common
	security hole in the victim's {host}'s {talk} {daemon}.  Users
	with "messages off" (mesg n) and users on systems running
	fixed talk daemons, or not running talk daemons at all, are
	immune.

	(08 Sep 1996)

	2. See {Flash Erasable Programmable Read Only Memory}.

	(02 Feb 1997)

Flash EPROM

	{Flash Erasable Programmable Read Only Memory}

Flash Erasable Programmable Read Only Memory

	<storage> (FEPROM, "flash memory") A kind of {non-volatile
	storage} device similar to {EEPROM}, but where erasing can
	only be done in blocks or the entire chip.

	In 1995 this relatively new technology started to replace
	{EPROM}s because reprogramming could be done with the chip
	installed.  At that time FEPROMs could be rewritten about 1000
	times.

	Like {EAPROM} and ferro-magnetic material, FEPROMs rely on {FN
	tunnelling}.  Some flash memory supports block erase.

	(22 Apr 1995)

flash memory

	{Flash Erasable Programmable Read Only Memory}

Flash ROM

	{Flash Erasable Programmable Read Only Memory}

flat

	1. Lacking any complex internal structure.  "That {bitty box}
	has only a flat file system, not a hierarchical one."  The verb
	form is {flatten}.  Usually used pejoratively (at least with
	respect to file systems).

	2. Said of a memory architecture like that of the {VAX} or
	{Motorola} {680x0} that is one big linear address space
	(typically with each possible value of a processor register
	corresponding to a unique address).  This is a {Good Thing}.
	The opposite is a "{segmented}" architecture like that of the
	{Intel 80x86} in which addresses are composed from a
	base-register/offset pair.  Segmented designs are generally
	considered cretinous.

	3. A flat {domain} is one where all elements except {bottom}
	are incomparable (equally well defined).  E.g. the integers.

flat address space

	<architecture> The memory architecture in which any memory
	location can be selected from a single contiguous block by a
	single integer offset.

	Almost all popular {processors} have a flat address space, but
	the {Intel x86} family has a {segmented address space}.  A
	flat address space greatly simplifies programming because of
	the simple correspondence between addresses (pointers) and
	integers.

	(10 Sep 1996)

flat ASCII

	<text> (Or "plain ASCII") Said of a text file that contains
	only 7-bit {ASCII} characters and uses only ASCII-standard
	{control characters} (that is, has no embedded codes specific
	to a particular text formatter {markup} language, or output
	device, and no {meta}-characters).

	Compare {flat file}.

	(26 Jan 1996)

flat file

	<operating system, storage> A single file containing {flat
	ASCII} representing or encoding some structure, e.g. of a
	{database}, tree, or network.  Flat files can be processed
	with general purpose tools (e.g. {awk} or {Perl}) and {text
	editors} but are often less efficient than some kind of
	{binary file} if they must be {parsed} repeatedly by a
	program.  Flat files are more portable between different
	{operating systems} and {application programs} than binary
	files, and are more easily transmitted in {electronic mail}.

	See also {flatten}, {sharchive}.

	(26 Jan 1996)

flatten

	To remove structural information, especially to filter
	something with an implicit tree structure into a simple
	sequence of leaves; also tends to imply mapping to
	{flat ASCII}.  "This code flattens an expression with
	parentheses into an equivalent {canonical} form."

flavor

	<spelling> US spelling of "{flavour}".

	(18 Mar 1997)

flavorful

	{flavour}

Flavors

	{Lisp} with {object-oriented} features by D. Weinreb and
	D.A. Moon <moon@cambridge.apple.com>, 1980.

	["Object-Oriented Programming with Flavors", D.A. Moon,
	SIGPLAN Notices 21(11):1-8 (OOPSLA '86) (Nov 1986)].

	(01 Dec 1994)

flavour

	<jargon> (US: flavor) 1. Variety, type, kind.  "DDT commands
	come in two flavors."  "These lights come in two flavors, big
	red ones and small green ones."  See {vanilla}.

	2. The attribute that causes something to be {flavourful}.
	Usually used in the phrase "yields additional flavour".  "This
	convention yields additional flavor by allowing one to print
	text either right-side-up or upside-down."  See {vanilla}.

	This usage was certainly reinforced by the terminology of
	quantum chromodynamics, in which quarks (the constituents of,
	e.g. protons) come in six flavors (up, down, strange, charm,
	top, bottom) and three colours (red, blue, green), however,
	hackish use of "flavor" at {MIT} predated QCD.

	3. The term for "{class}" (in the {object-oriented} sense) in
	the {LISP Machine} {Flavors} system.  Though the Flavors
	design has been superseded (notably by the {Common LISP}
	{CLOS} facility), the term "flavor" is still used as a general
	synonym for "class" by some {Lisp} hackers.

	(01 Nov 1994)

Fleng

	A parallel logic language.

	["Massively Parallel Implementation of Flat GHC on the
	Connection Machine", M. Nilsson, Proc Intl Conf on 5th Gen
	Comp Sys, 1988, pp.1031-1040].

FLEX

	<language> 1. Faster LEX.  A reimplementation of the {Lex}
	{scanner} generator by Vern Paxson <vern@ee.lbl.gov>.

	{Flex++} produces {C++} and {aflex} produces {Ada}.

	FTP flex-2.3.8.tar.Z from a {GNU archive site} or
	{(ftp://ftp.ee.lbl.gov/pub/flex-2.4.3.tar.Z)}.

	["The FLEX Scanner Generator", Vern Paxson <vern@ee.lbl.gov>,
	Systems Engineering, LBL, CA].

	2. A {real-time} language for dynamic environments.

	["FLEX: Towards Flexible Real-Time Programs", K. Lin et al,
	Computer Langs 16(1):65-79, Jan 1991].

	3. An early {object-oriented} language developed for the
	{FLEX} machine by {Alan Kay} in about 1967.  The FLEX language
	was a simplification of {Simula} and a predecessor of
	{Smalltalk}.

	(29 Mar 1995)

Flex

	<software, hardware> A system developed by Ian Currie (Iain?)
	at the (then) {Royal Signals and Radar Establishment} at
	Malvern in the late 1970s.  The hardware was custom and
	{microprogrammable}, with an {operating system}, (modular)
	{compiler}, editor, {garbage collector} and {filing system}
	all written in {Algol-68}.  Flex was also re-implemented on
	the {Perq}(?).

	[I. F. Currie and others, "Flex Firmware", Technical Report,
	RSRE, Number 81009, 1981].

	[I. F. Currie, "In Praise of Procedures", RSRE, 1982].

	(17 Nov 1997)

Flex++

	{GNU}'s {Flex} {scanner generator} retargeted to {C++} by
	Alain Coetmeur <coetmeur@icdc.fr>.  Version 3.0.

	{(ftp://iecc.com/pub/file/flex++.tar.gz)}.
	{(ftp://iecc.com/pub/file/misc++.tar.gz)}.
	{(ftp://ftp.th-darmstadt.de/pub/programming/languages/C++/tools/flex++-3.0.tar.gz)}.

	(08 Jul 1993)

Flex 2

	A preprocessor designed to make {FORTRAN} look more like
	{Pascal}.  (About 1980).  DECUS?

flib

	/flib/ ({WPI}) A meta-number, said to be an integer between 3
	and 4.

	See {grix}, {N}.

	(31 Jan 1995)

FLIC

	Functional Language Intermediate Code.

	An {intermediate language} used in the {Chalmers} {LML}
	compiler.

	["FLIC - A Functional Language Intermediate Code", S. Peyton
	Jones <simonpj@dcs.gla.ac.uk> et al, RR 148, U Warwick, Sep
	1989].

	(31 Jan 1995)

FLIP

	1. An early {assembly language} on the {G-15}.

	[Listed in CACM 2(5):16 (May 1959)].

	2. ["FLIP User's Manual", G. Kahn, TR 5, INRIA 1981].

	3. Formal LIst Processor.

	An early language for {pattern-matching} on {Lisp} structures,
	similar to {CONVERT}.

	["FLIP, A Format List Processor", W. Teitelman, Memo
	MAC-M-263, MIT 1966].

	(31 Jan 1995)

flip-flop

	<hardware> A digital logic circuit that can be in one of two
	states which it switches (or "{toggles}") between under
	control of its inputs.  It can thus be considered as a one bit
	memory.  Three types of flip-flop are common: the {SR
	flip-flop}, the {JK flip-flop} and the {D-type flip-flop} (or
	{latch}).

	Early literature refers to the "Eccles-Jordan circuit" and the
	"Eccles-Jordan binary counter", using two {vacuum tubes} as
	the active (amplifying) elements for each {bit} of information
	storage.  Later implementations using {bipolar transistors}
	could operate at up to 20 million state transitions per second
	as early as 1963.

	(11 Nov 1995)

flippy

	<storage> /flip'ee/ A single-sided {floppy disk} altered for
	double-sided use by addition of a second write-notch, so
	called because it must be flipped over for the second side to
	be accessible.  No longer common.

	(25 Sep 1995)

FLIP-SPUR

	Early system on IBM 1103 or 1103A.  Listed in CACM 2(5):16
	(May 1959).

floating-point

	<programming> A number representation consisting of a
	{mantissa}, M, an {exponent}, E, and an (assumed) {radix} (or
	"base") .  The number represented is M*R^E where R is the
	radix - usually ten but sometimes 2.

	Many different representations are used for the mantissa and
	exponent themselves.  The {IEEE} specify a {standard}
	representation which is used by many hardware floating-point
	systems.

	See also {floating-point accelerator}, {floating-point unit}.

	{Normalisation} is the process of converting a floating point
	number into {canonical} form where any number other than zero
	has a mantissa whose first digit is non-zero.

	Opposite: {fixed-point}.

	(21 Mar 1995)

floating-point accelerator

	(FPA) Additional hardware to perform functions on
	floating-point numbers such as addition, multiplication,
	logarithms, exponentials, trigonometric functions and various
	kinds of rounding and error detection.  A floating-point
	accelerator often functions as a {co-processor} to the {CPU}.

	The term "floating-point accelerator" suggests a physically
	larger system, often an extra circuit board, whereas a
	"floating-point unit" is probably a single chip or even part
	of a chip.

	(01 Dec 1994)

Floating-Point SPECbaserate

	{SPECrate_base_fp92}

Floating-Point SPECbaseratio

	{SPECbase_fp92}

Floating-Point SPECrate

	{SPECrate_fp92}

Floating-Point SPECratio

	{SPECfp92}

floating point underflow

	{underflow}

Floating-Point Unit

	(FPU) A {floating-point accelerator}, usually in a single
	{integrated circuit}, possible on the same IC as the {central
	processing unit}.

	(27 Oct 1994)

floating underflow

	{underflow}

F-Logic

	An {object-oriented} language and {deductive database} system.

	["F-Logic: A Higher-Order Language for Reasoning about
	Objects, Inheritance and Scheme", ACM SIGMOD May 1989,
	pp. 134-146].

	(20 Oct 1994)
flood

	<chat> On a real-time network (whether at the level of
	{TCP/IP}, or at the level of, say, {IRC}), to send a huge
	amount of data to another user (or a group of users, in a
	channel) in an attempt to annoy him, lock his terminal, or to
	overflow his network buffer and thus lose his network
	connection.

	The basic principles of flooding are that you should have
	better network {bandwidth} than the person you're trying to
	flood, and that what you do to flood them (e.g., generate ping
	requests) should be *less* resource-expensive for your machine
	to produce than for the victim's machine to deal with.  There
	is also the corrolary that you should avoid being caught.

	Failure to follow these principles regularly produces
	hilarious results, e.g., an IRC user flooding himself off the
	network while his intended victim is unharmed, the attacker's
	flood attempt being detected, and him being banned from the
	network in semi-perpetuity.

	See also {pingflood}, {clonebot} and {botwar}.

	(07 Apr 1997)

FLOP

	1. An early system on the {IBM 701}.

	[Listed in CACM 2(5):16 (May 1959)].

	(14 Nov 1994)

	2. Erroneous singular of {FLOPS}.

Floppy

	<programming, tool> A {Fortran} coding convention checker.
	A later version can generate {HTML}.

	See also {Flow}.

	ffccc posted to comp.sources.misc volume 12.

	(23 Aug 1996)

floppy

	{floppy disk}

floppy disk

	<hardware, storage> (Or "floppy", "diskette") A small,
	portable plastic disk coated in a magnetisable substance used
	for storing computer data, readable by a computer with a
	floppy disk drive.  The physical size of disks has shrunk from
	the early 8 inch, to 5 1/4 inch ("minifloppy") to 3 1/2 inch
	("microfloppy") while the data capacity has risen.

	These disks are known as "floppy" disks (or diskettes) because
	the disk is flexible and the read/write head is in physical
	contact with the surface of the disk in contrast to "{hard
	disks}" (or winchesters) which are rigid and rely on a small
	fixed gap between the disk surface and the heads.  Floppies
	may be either single-sided or double-sided.

	3.5 inch floppies are less floppy than the larger disks
	because they come in a stiff plastic "envelope" or case, hence
	the alternative names "stiffy" or "crunchy" sometimes used to
	distinguish them from the floppier kind.

	The following formats are used on {IBM PC}s:

	 Capacity  Density  Width
	  360K	   double   5 1/4"
	  720K	   double   3 1/2"
	  1.2M	   high	    5 1/4"
	 1.44M	   high	    3 1/2"

	(23 Aug 1996)

floppy disk drive

	{disk drive}

floppy drive

	{disk drive}

FLOPS

	{Floating-point} operations per second.

Flops

	The {MFLOPS} {benchmark}.

floptical

	<hardware, storage> (From "floppy disk" and "optical") A
	{floppy disk} which uses an optical tracking mechanism to
	improve the positioning accuracy of an ordinary magnetic head,
	thereby allowing more tracks and greater density.

	{Storage media FAQ
	(http://www.cis.ohio-state.edu/hypertext/faq/usenet/arch-storage/part1/faq.html)}.

	(15 Mar 1995)

Flow

	<tool> A companion utility to {Floppy} by Julian James Bunn
	<julian@vxcrna.cxern.ch>.  Flow allows the user to produce
	various reports on the structure of {Fortran 77} code, such as
	{flow diagram}s and common block tables.  It runs under {VMS},
	{Unix}, {CMS}.

	Posted to comp.sources.misc volume 31.

	(14 Mar 1995)

flow chart

	<programming> An archaic form of visual control-flow
	specification employing arrows and "speech balloons" of
	various shapes.

	Hackers never use flow charts, consider them extremely silly,
	and associate them with {COBOL} programmers, {card walloper}s,
	and other lower forms of life.  This attitude follows from the
	observations that flow charts (at least from a hacker's point
	of view) are no easier to read than code, are less precise,
	and tend to fall out of sync with the code (so that they
	either obfuscate it rather than explaining it, or require
	extra maintenance effort that doesn't improve the code).

	See also {Program Design Language}.

	(01 Dec 1994)

flow control

	<communications, protocol> The collection of techniques used
	in serial communications to stop the sender sending data until
	the receiver can accept it.  This may be either {software flow
	control} or {hardware flow control}.  The receiver typically
	has a fixed size {buffer} into which received data is written
	as soon as it is received.  When the amount of buffered data
	exceeds a "high water mark", the receiver will signal to the
	transmitter to stop transmitting until the process reading the
	data has read sufficient data from the buffer that it has
	reached its "low water mark", at which point the receiver
	signals to the transmitter to resume transmission.

	(22 Mar 1995)

flower key

	The {Macintosh} {feature key}.

	(01 Dec 1994)

FLOW-MATIC or FLOWMATIC

	(Originally B-0) Possibly the first English-like {DP}
	language.  Developed at Remington Rand in 1958 for the
	{UNIVAC} I.

	[Sammet 1969, pp. 316-324].

	(24 Oct 1994)

flow of control

	{control flow}

FLPL

	FORTRAN List Processing Language.  A package of {FORTRAN}
	subroutines for handling lists by H. Gelernter et al, ca 1960.

	[Sammet 1969, p. 388].

	(24 Oct 1994)

FLUB

	<language> The {abstract machine} for {bootstrapping}
	{STAGE2}.

	[Mentioned in Machine Oriented Higher Level Languages, W. van
	der Poel, N-H 1974, p. 271].

	(13 Mar 1995)

flush

	1. To delete something, usually superfluous, or to abort an
	operation.

	"Flush" was standard {ITS} terminology for aborting an output
	operation.  One spoke of the text that would have been
	printed, but was not, as having been flushed.  It is
	speculated that this term arose from a vivid image of flushing
	unwanted characters by hosing down the internal output buffer,
	washing the characters away before they could be printed.

	2. To force temporarily buffered data to be written to more
	permanent memory.  E.g. flushing buffered disk I/O to disk, as
	with {C}'s {standard I/O} library "fflush(3)" call.  This
	sense was in use among {BLISS} programmers at {DEC} and on
	{Honeywell} and {IBM} machines as far back as 1965.  Another
	example of this usage is flushing a {cache} on a {context
	switch} where modified data stored in the cace which belongs
	to one processes must be written out to main memory so that
	the cache can be used by another process.

Flynn's taxonomy

	A classification of computer architectures based on the number
	of streams of instructions and data:

	{Single instruction/single data} stream (SISD) - a sequential
	computer.

	Multiple instruction/single data stream (MISD) - unusual.

	{Single instruction/multiple data} streams (SIMD) - e.g. an
	{array processor}.

	{Multiple instruction/multiple data} streams (MIMD) - multiple
	autonomous processors simultaneously executing different
	instructions on different data.

	["A Survey of Parallel Computer Architectures", Duncan, Ralph,
	IEEE Computer. February 1990, pp. 5-16].

	(08 Nov 1994)

	[Flynn's original paper?]

fly page

	/fli:'payj/ {banner}.

Flyspeck 3

	Standard name for any {font} that is so tiny as to be
	unreadable (by analogy with names like "Helvetica 10" for
	10-point Helvetica).  Legal boilerplate is usually printed in
	Flyspeck 3.

	(08 Nov 1994)

flytrap

	See {firewall machine}.

FM

	Not "Frequency Modulation" but "Fucking Manual", a
	back-formation from {RTFM}.  Used to refer to the manual
	itself.

	(08 Nov 1994)

FMPL

	(FMPL of Accardi) Frobozz Magic Programming Language.  A
	{prototype-based}, {object-oriented}, {event-driven} (mainly
	I/O events) interpreted language with {functional} features.
	Developed at the {Experimental Computing Facility},
	{University of California, Berkeley}.

	There is an {interpreter} by Jon Blow
	<blojo@xcf.berkeley.edu>.  Version 1.

	{(ftp://xcf.berkeley.edu/src/local/fmpl)}

	Mailing list: <fmpl@xcf.berkeley.edu>.

	E-mail: Jack Hsu <tcl-archive@barkley.berkeley.edu>.

	(02 Jun 1992)

FMQ

	A {BNF}-based {paser generator} with an error corrector
	generator, by Jon Mauney.

	{(ftp://csczar.ncsu.edu/)}

	(31 Mar 1990)

FMV

	{full-motion video}

FNAL

	Fermi National Accelerator Laboratory (Illinois, USA).

FNC

	{Federal Networking Council}

fnord

	1. <convention> A word used in {electronic mail} and {news}
	messages to tag utterances as surrealist mind-play or humour,
	especially in connection with {Discordianism} and elaborate
	conspiracy theories.  "I heard that David Koresh is sharing an
	apartment in Argentina with Hitler. (Fnord.)"  "Where can I
	fnord get the Principia Discordia from?"

	2. <programming> A {metasyntactic variable}, commonly used by
	hackers with ties to {Discordianism} or the {Church of the
	SubGenius}.

	The word "fnord" was invented in the "Illuminatus!" trilogy by
	Robert Shea and Robert Anton Wilson.

	(28 Feb 1995)

FN tunnelling

	{Fowler-Nordheim tunnelling}

FOAD

	<chat> fuck off and die.

	(18 Jan 1998)

FOAF

	[{Usenet}] Friend Of A Friend.  The source of an unverified,
	possibly untrue story.  This term was not originated by
	hackers (it is used in Jan Brunvand's books on urban
	folklore), but is much better recognised on {Usenet} and
	elsewhere than in mainstream English.

FOCAL

	1. FOrmula CALculator.

	An interactive system written by Rick Merrill of {DEC} in 1969
	for {PDP-5} and {PDP-8}.  It was a descendant of {AID}/{JOSS}.

	Versions: FOCAL-69, FOCAL-1971, FOCAL-11 (for {PDP-11} under
	{RT-11}).

	(21 Dec 1994)

	2. Forty-One CAlculator Language.

	The programming language of the HP-41 calculator line.

	(21 Dec 1994)

FOCL

	An {expert system shell} and {backward chaining} rule
	{interpreter} for the {Macintosh}.

	{(ftp://ics.uci.edu/pub/machine-learning-programs/KR-FOCL-ES.cpt.hqx)}

	E-mail: <pazzani@ics.uci.edu>.

	(21 Dec 1994)

FOCUS

	A hierarchical {database} language from {Information
	Builders, Inc.}

	(21 Dec 1994)

FOD

	/fod/ [Abbreviation for "Finger of Death", originally a
	spell-name from fantasy gaming] To terminate with extreme
	prejudice and with no regard for other people.  From {MUD}s
	where the wizard command "FOD <player>" results in the
	immediate and total death of <player>, usually as punishment
	for obnoxious behaviour.  This usage migrated to other
	circumstances, such as "I'm going to fod the process that is
	burning all the cycles."  Compare {gun}.

	In aviation, FOD means Foreign Object Damage, e.g. what happens
	when a jet engine sucks up a rock on the runway or a bird in
	flight.  Finger of Death is a distressingly apt description of
	what this generally does to the engine.

FOIL

	File Oriented Interpretive Language.  CAI language.

	["FOIL - A File Oriented Interpretive Language",
	J.C. Hesselbart, Proc ACM 23rd National Conf (1968)].

fold case

	{case sensitivity}

folder

	<operating system> A {directory} in the sense of a collection
	of computer {files}.  The term is more common in systems such
	as the {Macintosh} or {Windows 95} which have a {graphical
	user interface} and provide a graphical {file browser} in
	which directories are traditionally depicted as folders (like
	small briefcases).

	(20 Mar 1997)

FOLDOC

	{Free On-line Dictionary of Computing}

followup

	On {Usenet}, a {posting} generated in response to another
	posting (as opposed to a {reply}, which goes by e-mail rather
	than being broadcast).  Followups include the ID of the
	{parent message} in their headers; smart news-readers can use
	this information to present {Usenet} news in "conversation"
	sequence rather than order-of-arrival.  See {thread}.

font

	<text> A set of images representing the characters from some
	particular {character set} in a particular size and style
	({typeface}).  The image of each character may be encoded
	either as a {bitmap} (in a {bitmap font}) or by a higher-level
	description in terms of lines and areas (a {vector font}).

	There are several different representations for fonts on
	computers, one of the most widely known is that used in
	{PostScript}.  Most {window systems} include support for
	displaying different fonts on the screen and printing them.

	[Other types of font?]

	(29 Jul 1995)

fontology

	({XEROX PARC}) The body of knowledge dealing with the
	construction and use of new {font}s (e.g. for window systems
	and typesetting software).  It has been said that fontology
	recapitulates file-ogeny.

	Unfortunately, this reference to the embryological dictum
	that "Ontogeny recapitulates phylogeny" is not merely a joke.
	On the Macintosh, for example, System 7 has to go through
	contortions to compensate for an earlier design error that
	created a whole different set of abstractions for fonts
	parallel to "files" and "folders" - ESR

	(01 Dec 1994)

foo

	/foo/ A sample name for absolutely anything, especially
	programs and files (especially scratch files).  First on the
	standard list of {metasyntactic variable}s used in syntax
	examples.  See also {bar}, {baz}, {qux}, {quux}, {corge},
	{grault}, {garply}, {waldo}, {fred}, {plugh}, {xyzzy}, {thud}.

	The etymology of "foo" is obscure.  When used in connection
	with "bar" it is generally traced to the WWII-era Army slang
	acronym {FUBAR}, later bowdlerised to {foobar}.

	However, the use of the word "foo" itself has more complicated
	antecedents, including a long history in comic strips and
	cartoons.

	"FOO" often appeared in the "Smokey Stover" comic strip by
	Bill Holman.  This surrealist strip about a fireman appeared
	in various American comics including "Everybody's" between
	about 1930 and 1952.  FOO was often included on licence plates
	of cars and in nonsense sayings in the background of some
	frames such as "He who foos last foos best" or "Many smoke but
	foo men chew".

	Allegedly, "FOO" and "BAR" also occurred in Walt Kelly's
	"Pogo" strips.  In the 1938 cartoon "The Daffy Doc", a very
	early version of Daffy Duck holds up a sign saying "SILENCE IS
	FOO!".  Oddly, this seems to refer to some approving or
	positive affirmative use of foo.  It has been suggested that
	this might be related to the Chinese word "fu" (sometimes
	transliterated "foo"), which can mean "happiness" when spoken
	with the proper tone (the lion-dog guardians flanking the
	steps of many Chinese restaurants are properly called "fu
	dogs").

	Earlier versions of this entry suggested the possibility that
	hacker usage actually sprang from "FOO, Lampoons and Parody",
	the title of a comic book first issued in September 1958, a
	joint project of Charles and Robert Crumb.  Though Robert
	Crumb (then in his mid-teens) later became one of the most
	important and influential artists in underground comics, this
	venture was hardly a success; indeed, the brothers later
	burned most of the existing copies in disgust.  The title FOO
	was featured in large letters on the front cover.  However,
	very few copies of this comic actually circulated, and
	students of Crumb's "oeuvre" have established that this title
	was a reference to the earlier Smokey Stover comics.

	An old-time member reports that in the 1959 "Dictionary of the
	TMRC Language", compiled at {TMRC} there was an entry that
	went something like this:

	FOO: The first syllable of the sacred chant phrase "FOO MANE
	PADME HUM."  Our first obligation is to keep the foo counters
	turning.

	For more about the legendary foo counters, see {TMRC}.  Almost
	the entire staff of what became the {MIT} {AI LAB} was
	involved with TMRC, and probably picked the word up there.

	Very probably, hackish "foo" had no single origin and derives
	through all these channels from Yiddish "feh" and/or English
	"fooey".

	(04 Oct 1994)

foobar

	Another common {metasyntactic variable}; see {foo}.  Hackers
	do *not* generally use this to mean {FUBAR} in either the
	slang or jargon sense.

foogol

	A tiny {ALGOL}-like language by Per Lindberg, based on the
	{VALGOL} I compiler, G.A. Edgar, DDJ May 1985.  Runs on
	{vaxen}.  Posted to comp.sources.Unix archive volume 8.

	{(ftp://ftp.wustl.edu/systems/amiga/fish/fish/ff066)}

FOOL

	Fool's Lisp.  A small {Scheme} {interpreter}.

	{(ftp://scam.berkeley.edu/src/local/fools.tar.Z)}

	(04 Oct 1994)

fool file

	[{Usenet}] A notional repository of all the most dramatically
	and abysmally stupid utterances ever.  An entire subgenre of
	{sig block}s consists of the header "From the fool file:"
	followed by some quote the poster wishes to represent as an
	immortal gem of dimwittery; for this usage to be really
	effective, the quote has to be so obviously wrong as to be
	laughable.  More than one {Usenet}ter has achieved an unwanted
	notoriety by being quoted in this way.

Fools' Lisp

	A small {Scheme} {interpreter} by Jonathan Lee
	<jonathan@scam.berkeley.edu>.  Version 1.3.2 is R4RS
	conformant.  It runs on {Sun-3}, {Sun-4}, {Decstation}, {VAX}
	({Ultrix}), {Sequent}, {Apollo}.

	{(ftp://scam.berkeley.edu/src/local/fools.tar.Z)}

	(31 Oct 1991)

Foonly

	1. The {PDP-10} successor that was to have been built by the
	Super Foonly project at the {Stanford Artificial Intelligence
	Laboratory} along with a new operating system.  The intention
	was to leapfrog from the old DEC {time-sharing} system SAIL
	was then running to a new generation, bypassing TENEX which at
	that time was the {ARPANET} {standard}.  {ARPA} funding for
	both the Super Foonly and the new operating system was cut in
	1974.  Most of the design team went to DEC and contributed
	greatly to the design of the PDP-10 model KL10.

	2. The name of the company formed by Dave Poole, one of the
	principal Super Foonly designers, and one of hackerdom's more
	colourful personalities.  Many people remember the parrot
	which sat on Poole's shoulder and was a regular companion.

	3. Any of the machines built by Poole's company.  The first
	was the F-1 (a.k.a.  Super Foonly), which was the
	computational engine used to create the graphics in the movie
	"TRON".  The F-1 was the fastest PDP-10 ever built, but only
	one was ever made.  The effort drained Foonly of its financial
	resources, and the company turned towards building smaller,
	slower, and much less expensive machines.  Unfortunately,
	these ran not the popular {TOPS-20} but a TENEX variant called
	Foonex; this seriously limited their market.  Also, the
	machines shipped were actually wire-wrapped engineering
	prototypes requiring individual attention from more than
	usually competent site personnel, and thus had significant
	reliability problems.  Poole's legendary temper and
	unwillingness to suffer fools gladly did not help matters.  By
	the time of the Jupiter project cancellation in 1983, Foonly's
	proposal to build another F-1 was eclipsed by the {Mars}, and
	the company never quite recovered.  See the {Mars} entry for
	the continuation and moral of this story.

FOOP

	OBJ2 plus object-orientation.  "Extensions and Foundations for
	Object-Oriented Programming", J. Goguen et al, in Research
	Directions in Object-Oriented Programming, B. Shriver et al
	eds, MIT Press 1987.

footprint

	1. <jargon, hardware> The floor or desk area taken up by a
	piece of hardware.

	2. <jargon, storage> The amount of {disk} or {RAM} taken up by
	a program or file.

	3. ({IBM}) The {audit trail} left by a crashed program (often
	"footprints").

	See also {toeprint}.

	(25 Apr 1995)

fora

	Plural of {forum}.

FORC

	Early system on IBM 704.  Listed in CACM 2(5):16 (May 1959).

Force

	A {dBASE} dialect for {MS-DOS}.

ForceOne

	A programming language by Andrew K. Wright.

	["Polymorphism in the Compiled Language ForceOne",
	G.V. Cormack et al, Proc 20th Annual Hawaii Intl Conf on
	System Sciences, 1987, pp.284-292].

	["Design of the Programming Language ForceOne", A.K. Wright,
	MS Thesis, U Waterloo 1987].

	(24 Oct 1994)

ForceTwo

	An unofficial successor to {ForceOne} by Andrew K. Wright.

foreground

	(Unix) On a {time-sharing} system, a task executing in
	foreground is one able to accept input from and return output
	to the user in contrast to one running in the {background}.
	Nowadays this term is primarily associated with {Unix}, but it
	appears first to have been used in this sense on {OS/360}.
	Normally, there is only one foreground task per terminal (or
	terminal window).  Having multiple processes simultaneously
	reading the keyboard is confusing.

	(24 Oct 1994)

foreign key

	<database> {Attributes} contained within a database {record}
	(or other collection of related data items) which uniquely
	identify another record, but not the one within which they are
	contained.  A foreign key is a reference from one record to
	another.

	(28 Apr 1997)

Foresight

	<graphics, tool> A software product from {Nu Thena} providing
	graphical modelling tools for high level system design and
	{simulation}.

	(24 Oct 1994)

for free

	Said of a capability of a programming language or hardware
	equipment that is available by its design without needing
	cleverness to implement: "In APL, we get the matrix operations
	for free."  "And owing to the way revisions are stored in this
	system, you get revision trees for free."  The term usually
	refers to a serendipitous feature of doing things a certain
	way (compare {big win}), but it may refer to an intentional
	but secondary feature.

	(14 Dec 1994)

fork

	<operating system> A {Unix} {system call} used by a {process}
	(the "parent") to make a copy (the "child") of itself.  The
	child process is identical to the parent except it has a
	different {process identifier} and a zero return value from
	the fork call.  It is assumed to have used no resources.

	A fork followed by an {exec} can be used to start a different
	process but this can be inefficient and some later Unix
	variants provide {vfork} as an alternative mechanism for this.

	See also {fork bomb}.

	(08 Dec 1996)

fork bomb

	<programming> A particular species of {wabbit} that can be
	written in one line of {C}:

		main() {for(;;)fork();}

	or {shell}:

		$0 & $0 &

	on any {Unix} system, or occasionally created by an egregious
	coding bug.  A fork bomb process "explodes" by {recursive}ly
	spawning copies of itself using the {Unix} {system call}
	"{fork}(2)".  Eventually it eats all the process table entries
	and effectively wedges the system.  Fortunately, fork bombs
	are relatively easy to spot and kill, so creating one
	deliberately seldom accomplishes more than to bring the just
	wrath of the {god}s down upon the perpetrator.

	See also {logic bomb}.

	(14 Dec 1994)

forked

	(Unix; probably after "fucked") Terminally slow, or dead.
	Originated when one system was slowed to a snail's pace by an
	inadvertent {fork bomb}.

	(14 Dec 1994)

FORM

	<mathematics, tool> A system written by Jos Vermaseren
	<t68@nikhefh.nikhef.nl> in 1989 for fast handling of very
	large-scale {symbolic mathematics} problems.  FORM is a
	descendant of {Schoonschip} and is available for many
	{personal computer}s and {workstation}s.

	{(ftp://acm.princeton.edu/)}, {(ftp://nikhefh.nikhef.nl/)}.

	Mailing list: <form@can.nl>.

	(12 Apr 1995)

FORMAC

	FORmula MAnipulation Compiler.  J. Sammet & Tobey, IBM Boston
	APD, 1962.  An extension of {FORTRAN} for {symbolic
	mathematics}.  Versions: PL/I-FORMAC and FORMAC73.

	["Introduction to FORMAC", J.E. Sammet et al, IEEE Trans Elec
	Comp (Aug 1964)].

	[Sammet 1969, pp. 474-491].

FORMAL

	1. FORmula MAnipulation Language.

	An early {FORTRAN} extension for {symbolic mathematics}.

	["FORMAL, A Formula Manipulation Language", C.K. Mesztenyi,
	Computer Note CN-1, CS Dept, U Maryland (Jan 1971)].

	2.  A data manipulation language for nonprogrammers from {IBM}
	{LASC}.

	["FORMAL: A Forms-Oriented and Visual-Directed Application
	System", N.C. Shu, IEEE Computer 18(8):38-49 (1985)].

	(06 Dec 1994)

Formal Description Technique

	<specification, protocol> (FDT) A {formal method} for
	developing telecomunications services and {protocol}s.  FDTs
	range from abstract to implementation-oriented descriptions.
	All FDTs offer the means for producing unambiguous
	descriptions of {OSI} services and {protocol}s in a more
	precise and comprehensive way than {natural language}
	descriptions.  They provide a foundation for analysis and
	verification of a description.  The target of analysis and
	verification may vary from abstract properties to concrete
	properties.  {Natural language} descriptions remain an
	essential adjunct to formal description, enabling an
	unfarmiliar reader to gain rapid insight into the structre and
	function of services and protocols.

	Examples of FDTs are {LOTOS}, {Z}, {SDL} and {Estelle}.

	[ISO/IEC DTR10167: "Guidelines for the application of
	{Estelle}, {LOTOS} and {SDL}"].

	(06 Dec 1994)

formal methods

	<mathematics, specification> Mathematically based techniques
	for the {specification}, development and verification of
	software and hardware systems.

	{Referentially transparent} languages are amenable to symbolic
	manipulation allowing {program transformation} (e.g. changing
	a clear inefficient specification into an obscure but
	efficient program) and proof of correctness.

	{Oxford FM archive
	(http://www.comlab.ox.ac.uk/archive/formal-methods.html)}

	(15 May 1996)

Formal Object Role Modeling Language

	<language> (FORML) A {CASE} language?

	(12 Apr 1997)

formal review

	<project> A technical review conducted with the customer
	including the types of reviews called for in DOD-STD-2167A
	(Preliminary Design Review, Critical Design Review, etc.)

	(15 May 1996)

FORMAT-FORTRAN

	{FORTRAN Matrix Abstraction Technique FORTRAN}

Formatting Output Specification Instance

	<text, standard> (FOSI) An old {SGML} {DTD} {standard} for
	{document management} in the US military, to be replaced (soon
	after Oct 1996?) by the {ISO} standard {DSSSL}.

	(07 Oct 1996)

Formes

	<language> An {object-oriented} language for music composition
	and synthesis, written in {VLISP}.

	["Formes: Composition and Scheduling of Processes", X. Rodet &
	P. Cointe, Computer Music J 8(3):32-50 (Fall 1984)].

	(24 Jun 1996)

form feed

	<character> (FF, Control-L, {ASCII} 12) The character used to
	start a new page on a printer.  This is done by "feeding" a
	new page (or "form") through the printer.

	(24 Jun 1996)

form function

	<jargon> The shape of something designed.  This term is
	currently (Feb 1998) in vogue among {marketroids}.

	(11 Feb 1998)

FORML

	1. <language> {Formal Object Role Modeling Language}.

	2. <event> {Forth Modification Lab}.

	(12 Apr 1997)

forms

	See {fill-out form}.

	[Is there a package/language known as "Forms"?]

formula

	1. In logic, a sequence of symbols representing terms,
	{predicate}s, {connective}s and {quantifier}s which is either
	true or false.

	2. FORTH Music Language.  An extension of {FORTH} with
	concurrent note-playing processes.  Runs on {Macintosh} and
	{Atari ST} with {MIDI} output.

	["Formula: A Programming Language for Expressive Computer
	Music", D.P. Anderson et al Computer 24(7):12 (Jul 1991)].

	3. Preprocessor language for the {Acorn Archimedes}, allowing
	inline high-level statements to be entered in an assembly
	program.  Written in {nawk}.

Formula ALGOL

	An {ALGOL} extension for {symbolic mathematics}, strings and
	lists, developed by A.J. Perlis and R. Iturriaga at {Carnegie}
	for the {CDC G-20} in 1962.

	["An Extension of ALGOL for Manipulating Formulae",
	A.J. Perlis et al, CACM 7(2):127-130 (Feb 1964)].

	[Sammet 1969, p. 583].

	(15 Feb 1995)

Forsythe

	A descendent of {Algol 60}, intended to be as uniform and
	general as possible, while retaining the basic character of
	its progenitor.  Forsythe features {higher-order procedure}s
	and {intersection type}s.

	{(ftp://e.ergo.cs.cmu.edu/)}

	["Preliminary Design of the Programming Language Forsythe",
	J.C. Reynolds, CMU-CS-88-159, 1988].

FORTH

	1. <language> An interactive extensible language using
	{postfix syntax} and a data stack, developed by Charles
	H. Moore in the 1960s.  FORTH is highly user-configurable and
	there are many different implementations, the following
	description is of a typical default configuration.

	Forth programs are structured as lists of "words" - FORTH's
	term which encompasses language keywords, primitives and
	user-defined {subroutines}.  Forth takes the idea of
	subroutines to an extreme - nearly everything is a subroutine.
	A word is any string of characters except the separator which
	defaults to space.  Numbers are treated specially.  Words are
	read one at a time from the input stream and either executed
	immediately ("interpretive execution") or compiled as part of
	the definition of a new word.

	The sequential nature of list execution and the implicit use
	of the data stack (numbers appearing in the lists are pushed
	to the stack as they are encountered) imply postfix syntax.
	Although postfix notation is initially difficult, experienced
	users find it simple and efficient.

	Words appearing in executable lists may be "{primitives}"
	(simple {assembly language} operations), names of previously
	compiled procedures or other special words.  A procedure
	definition is introduced by ":" and ended with ";" and is
	compiled as it is read.

	Most Forth dialects include the source language structures
	BEGIN-AGAIN, BEGIN-WHILE-REPEAT, BEGIN-UNTIL, DO-LOOP, and
	IF-ELSE-THEN, and others can be added by the user.  These are
	"compiling structures" which may only occur in a procedure
	definition.

	FORTH can include in-line {assembly language} between "CODE"
	and "ENDCODE" or similar constructs.  Forth primitives are
	written entirely in {assembly language}, secondaries contain a
	mixture.  In fact code in-lining is the basis of compilation
	in some implementations.

	Once assembled, primitives are used exactly like other words.
	A significant difference in behaviour can arise, however, from
	the fact that primitives end with a jump to "NEXT", the entry
	point of some code called the sequencer, whereas
	non-primitives end with the address of the "EXIT" primitive.
	The EXIT code includes the scheduler in some {multi-tasking}
	systems so a process can be {deschedule}d after executing a
	non-primitive, but not after a primitive.

	Forth implementations differ widely.  Implementation
	techniques include {threaded code}, dedicated Forth
	processors, {macros} at various levels, or interpreters
	written in another language such as {C}.  Some implementations
	provide {real-time} response, user-defined data structures,
	{multitasking}, {floating-point} arithmetic, and/or {virtual
	memory}.

	Some Forth systems support virtual memory without specific
	hardware support like {MMU}s.  However, Forth virtual memory
	is usually only a sort of extended data space and does not
	usually support executable code.

	FORTH does not distinguish between {operating system} calls
	and the language.  Commands relating to I/O, {file systems}
	and {virtual memory} are part of the same language as the
	words for arithmetic, memory access, loops, IF statements, and
	the user's application.

	Many Forth systems provide user-declared "vocabularies" which
	allow the same word to have different meanings in different
	contexts.  Within one vocabulary, re-defining a word causes
	the previous definition to be hidden from the interpreter (and
	therefore the compiler), but not from previous definitions.

	FORTH was first used to guide the telescope at NRAO, Kitt
	Peak.  Moore considered it to be a {fourth-generation
	language} but his {operating system} wouldn't let him use six
	letters in a program name, so FOURTH became FORTH.

	Versions include fig-FORTH, FORTH 79 and FORTH 83.

	{FAQs
	(http://www.complang.tuwien.ac.at/forth/faq/faq-general-2.html)}.
	{ANS Forth standard, dpANS6
	(http://www.taygeta.com/forth/dpans.html)}.

	FORTH Interest Group, Box 1105, San Carlos CA 94070.

	See also {51forth}, {F68K}, {cforth}, {E-Forth}, {FORML},
	{TILE Forth}.

	[Leo Brodie, "Starting Forth"].

	[Leo Brodie, "Thinking Forth"].

	[Jack Woehr, "Forth, the New Model"].

	[R.G. Loeliger, "Threaded Interpretive Languages"].

	2. {FOundation for Research and Technology - Hellas}.

	(16 Apr 1997)

for The Rest Of Them

	{for The Rest Of Us}

for The Rest Of Us

	(From the {Macintosh} slogan "The computer for the rest of
	us") 1. Used to describe a {spiffy} product whose
	affordability shames other comparable products, or (more
	often) used sarcastically to describe {spiffy} but very
	overpriced products.

	2. Describes a program with a limited interface, deliberately
	limited capabilities, non-{orthogonal}ity, inability to
	compose primitives, or any other limitation designed to not
	"confuse" a nave user.  This places an upper bound on how far
	that user can go before the program begins to get in the way
	of the task instead of helping accomplish it.  Used in
	reference to {Macintosh} software which doesn't provide
	obvious capabilities because it is thought that the poor
	{luser} might not be able to handle them.  Becomes "the rest
	of *them*" when used in third-party reference; thus, "Yes, it
	is an attractive program, but it's designed for The Rest Of
	Them" means a program that superficially looks neat but has no
	depth beyond the surface flash.

	See also {WIMP}, {Macintrash}, {point-and-drool interface},
	{user-friendly}.

	(15 Feb 1995)

Forth Modification Lab

	<event> (FORML) A {Forth} conference held every November on
	the West coast of the USA ().

	(12 Apr 1997)

FORTRAN

	FORmula TRANslator.

	The first and still the most widely used programming language
	for numerical and scientific applications.  The original
	versions lacked {recursive} procedures and {block structure}
	and had a line-oriented {syntax} in which certain columns had
	special significance.

	There have been a great many versions.

	See also {convert.f90}, {Fortrash}.

	[Was {FORTRAN I} the first version?]

	(24 Oct 1994)

FORTRAN 66

	FORTRAN IV standardised.  ASA X3.9-1966.

FORTRAN 77

	A popular version of {FORTRAN} with Block IF, PARAMETER and
	SAVE statements added, but still no WHILE.  It has
	fixed-length character strings, format-free I/O, and {array}s
	with lower bounds.

	[ANSI X3.9-1978].

	{GNU version (ftp://prep.ai.mit.edu/pub/gnu/g77)}

	{Amiga version (ftp://ftp.cso.uiuc.edu/amiga/fish/ff470/BCF)}.

	(16 Dec 1994)

Fortran 90

	(Previously "Fortran 8x" and "Fortran Extended") An extensive
	enlargement of {FORTRAN 77}.  Fortran 90 has {derived type}s,
	{assumed shape array}s, {array section}s, functions returning
	arrays, case statement, {module} subprograms and internal
	subprograms, optional and keyword subprogram arguments,
	{recursion}, and {dynamic allocation}.  It is defined in ISO
	1539:1991, soon to be adopted by {ANSI}.

	["Fortran 90 Explained", M. Metcalf et al, Oxford University
	Press 1990].

	(16 Dec 1994)

FORTRAN Automatic Symbol Translator

	<language> (FAST) An {assembly language} for the {IBM 650} by
	{MITRE Corporation}.

	[CACM 2(5):16 (May 1959)].

	[Sammet 1969, p.526].

	(09 Nov 1994)

Fortran D

	A {data-parallel} {FORTRAN} developed by {Ken Kennedy} at
	{Rice University}.

	["Fortran D Language Specification", G. Fox et al, TR 90079,
	Rice U, March 1991].

	E-mail: Theresa Chapman <tlc@cs.rice.edu>.

	(16 Dec 1994)

FORTRAN I

	An early version of {FORTRAN} designed by {John Backus} at
	{IBM} for the {IBM 704}.  The design was begun in 1954 and a
	{compiler} released in April 1957.

	[Was this the first FORTRAN?]

	(15 Feb 1995)

FORTRAN II

	1958.  Added subroutines.

FORTRAN III

	This was only distributed to ca. 20 sites.  See Wexelblat.

FORTRAN IV

	IBM 1962.  For the IBM 7090/94.  Many implementations went
	well beyond the original definition.

Fortran-Linda

	Scientific Computer Assocs <linda@sca.com>.

Fortran M

	Parallel extensions to Fortran with processes and channels by
	Ian Foster <fortran-m@mcs.anl.gov>.

	["Fortran M: A Language for Modular Parallel Programming",
	I. Foster et al, MCS-P327-0992, ANL, 1992].

	(26 Oct 1994)

FORTRAN Matrix Abstraction Technique FORTRAN

	<language> (FORMAT-FORTRAN) A language for manipulation,
	printing and plotting of large matrices.

	["FORMAT-FORTRAN Matrix Abstraction Technique (Vol. V)"
	AFFDL-TR-66-207, Douglas Aircraft Co.  Oct 1968].

	(29 Sep 1996)

FORTRAN-Plus

	FORTRAN for the DAP parallel machine, implements many
	Fortran 90 features.

FORTRANSIT

	<language> FORTRAN Internal Translator.

	A subset of {FORTRAN} translated into {IT} on the {IBM 650}.
	It was in use in the late 1950s and early 1960s.

	Compilation took place in several steps (using {punched card}s
	as the only input/output media).  FORTRANSIT was converted to
	IT {Internal Translator} which was converted into {SOAP} and
	thence to {machine code}.

	In the SOAP -> machine code step, the user had to include card
	decks for all the subroutines used in his FORTRANSIT program
	(including e.g. square root, sine, and even basic {floating
	point} routines).

	[Sammet 1969, p. 141].

	(30 Mar 1995)

FORTRAN V

	Preliminary work on adding character handling to {FORTRAN} by
	{IBM} ca. 1962.  This name as never really used.

	(26 Oct 1994)

FORTRAN VI

	{IBM}'s internal name for early {PL/I} work ca. 1963.

	[Sammet 1969, p. 540].

	(25 Oct 1994)

Fortrash

	/for'trash/ Hackerism for the {FORTRAN} language, referring to
	its primitive design, gross and irregular {syntax}, limited
	{control construct}s, and slippery, exception-filled
	{semantics}.

	(26 Oct 1994)

FORTRUNCIBLE

	A cross between FORTRAN and RUNCIBLE for the IBM 650.
	Listed in CACM 2(5):16 (May 1959).

fortune cookie

	({WAITS}, via the {Unix} "fortune" program) A quotation, item
	of trivia, joke, or maxim selected at random from a collection
	(the "{cookie file}") and printed to the user's tty at login
	time or (less commonly) at logout time.

	There was a fortune program on {TOPS-20}.

	[First program?]

	(14 Feb 1995)

forum

	<messaging> (Plural "fora" or "forums") Any discussion group
	accessible through a dial-in {BBS} (e.g. {GEnie}, {CI$}), a
	{mailing list}, or a {Usenet} {newsgroup} (see {network,
	the}).  A forum functions much like a {bulletin board}; users
	submit {postings} for all to read and discussion ensues.

	Contrast real-time {chat} or point-to-point personal {e-mail}.

	(18 Jan 1998)

for values of

	<jargon> A common rhetorical maneuver at {MIT} is to use any
	of the canonical {random numbers} as placeholders for
	variables.  "The max function takes 42 arguments, for
	arbitrary values of 42".  "There are 69 ways to leave your
	lover, for 69 = 50".  This is especially likely when the
	speaker has uttered a random number and realises that it was
	not recognised as such, but even "non-random" numbers are
	occasionally used in this fashion.  A related joke is that pi
	equals 3 - for small values of pi and large values of 3.

	This usage probably derives from the programming language MAD
	({Michigan Algorithm Decoder}), an {ALGOL}-like language that
	was the most common choice among mainstream (non-hacker) users
	at {MIT} in the mid-1960s.  It had a {control structure} FOR
	VALUES OF X = 3, 7, 99 DO ... that would repeat the indicated
	instructions for each value in the list (unlike the usual FOR
	that generates an {arithmetic sequence} of values).  MAD is
	long extinct, but similar for-constructs still flourish
	(e.g. in {Unix}'s {shell} languages).

	(16 Dec 1994)

forward analysis

	An analysis which determines properties of the output of a
	program from properties of the inputs.

forward chaining

	A data-driven technique used in constructing {goal}s or
	reaching {inference}s derived from a set of {fact}s.  Forward
	chaining is the basis of {production system}s.  Oppose
	{backward chaining}.

	(28 Oct 1994)

forward compatibility

	{forward compatible}

forward compatible

	<jargon> A system is foreward compatible if it is designed to
	be {compatible} with planned later versions of itself.

	See also {extensible}.

	Compare: {backward compatible}.

	(15 Jan 1998)

forward delta

	The delta which, when combined with a version, creates a child
	version.  See change management

forward engineering

	<process> The traditional process of moving from high-level
	abstractions and logical, implementation-independent designs
	to the physical implementation of a system.

	Contrast {reverse engineering}.

	(02 Oct 1996)

Forward Error Correction

	<algorithm> (FEC) A class of methods for controling errors in
	a one-way {communication} system.  FEC sends extra information
	along with the data, which can be used by the receiver to
	check and correct the data.

	A {CPU} writing data to {RAM} is a kind of one-way
	communication - see {error correcting memory} and {error
	checking and correction}.

	(02 Oct 1996)

forwards compatibility

	{forward compatible}

forwards compatible

	{forward compatible}

FORWISS

	Bayerische Forschungszentrum fuer Wissensbasierte Systeme
	(Bavarian research centre for knowledge-based systems) in
	Passau.

For Your Information

	(FYI) A subseries of {RFC}s that are not technical {standard}s
	or descriptions of {protocol}s.  FYIs convey general
	information about topics related to {TCP/IP} or the
	{Internet}.

	See also {STD}.

	(26 Oct 1994)

FOSI

	{Formatting Output Specification Instance}

FOSIL

	Fredette's Operating System Interface Language.  A portable
	{job control language} for {IBM} {OS360}, {UNIVAC} {EXEC 8}
	and {Honeywell} {GCOS}.

	["Fredette's Operating System Interface Language (FOSIL)",
	G.N. Baird in Command Languages, C. Unger ed, N-H 1973].

	(26 Oct 1994)

fossil

	1. In software, a misfeature that becomes understandable only
	in historical context, as a remnant of times past retained so
	as not to break compatibility.  Example: the retention of
	{octal} as default base for string escapes in {C}, in spite of
	the better match of {hexadecimal} to ASCII and modern
	byte-addressable architectures.  See {dusty deck}.

	2. More restrictively, a feature with past but no present
	utility.  Example: the force-all-caps (LCASE) bits in the V7
	and {BSD} Unix tty driver, designed for use with monocase
	terminals.  (In a perversion of the usual
	backward-compatibility goal, this functionality has actually
	been expanded and renamed in some later {USG Unix} releases as
	the IUCLC and OLCUC bits.)

	3. The FOSSIL (Fido/Opus/Seadog Standard Interface Level)
	driver specification for serial-port access to replace the
	{brain-dead} routines in the IBM PC ROMs.  Fossils are used by
	most {MS-DOS} {BBS} software in preference to the "supported"
	ROM routines, which do not support interrupt-driven operation
	or setting speeds above 9600; the use of a semistandard FOSSIL
	library is preferable to the {bare metal} serial port
	programming otherwise required.  Since the FOSSIL
	specification allows additional functionality to be hooked in,
	drivers that use the {hook} but do not provide serial-port
	access themselves are named with a modifier, as in "video
	fossil".

foundation

	The axiom of foundation states that the membership relation is
	well founded, i.e. that any non-empty collection Y of sets has
	a member y which is disjoint from Y.  This rules out sets
	which contain themselves (directly or indirectly).

FOundation for Research and Technology - Hellas

	<company> (FORTH) A small Greek software and research company
	associated with the Institute of Computer Science,

	Address: Science and Technology Park of Crete, Vassilika
	Vouton, P.O.Box 1385 GR 711 10 Heraklion, Crete, Greece.

	Telephone: +30 (81) 39 16 00, Fax: +30 (81) 39 16 01.

	(12 Apr 1997)

four-colour glossies

	1. Literature created by {marketroid}s that allegedly contains
	technical specs but which is in fact as superficial as
	possible without being totally {content-free}.  "Forget the
	four-colour glossies, give me the tech ref manuals."  Often
	applied as an indication of superficiality even when the
	material is printed on ordinary paper in black and white.
	Four-colour-glossy manuals are *never* useful for finding a
	problem.

	2. [rare] Applied by extension to manual pages that don't
	contain enough information to diagnose why the program doesn't
	produce the expected or desired output.

four colour map theorem

	<mathematics, application> (Or "four colour theorem") The
	theorem stating that if the plane is divided into connected
	regions which are to be coloured so that no two adjacent
	regions have the same colour (as when colouring countries on a
	map of the world), it is never necessary to use more than four
	colours.  The proof, due to Appel and Haken, attained
	notoriety by using a computer to check tens of thousands of
	cases and is thus not humanly checkable, even in principle.
	Some thought that this brought the philosophical status of the
	proof into doubt.

	There are now rumours of a simpler proof, not requiring the
	use of a computer.

	(25 Mar 1995)

four colour theorem

	{four colour map theorem}

Fourier transform

	<mathematics> A technique for expressing a waveform as a
	weighted sum of sines and cosines.

	Computers generally rely on the version known as {discrete
	Fourier transform}.

	Named after J. B. Joseph Fourier (1768 -- 1830).

	See also {wavelet}, {discrete cosine transform}.

	(9 Mar 1997)

fourth generation computer

	<architecture> A computer built using {Very Large Scale
	Integration} (VLSI) {integrated circuits}, especially a
	{microcomputer} based on a {microprocesseor}, or a {parallel
	processor} containing two to thousands of {CPU}s.

	VLSI made it routine to fabricate an entire CPU, main memory,
	or similar device with a single integrated circuit that can be
	mass produced at very low cost.  This has resulted in new
	classes of machines such as {personal computers}, and high
	performance parallel processors that contains thousands of
	CPUs.

	(22 Nov 1996)

fourth generation language

	An "application specific" language.  The term was invented by
	Jim Martin to refer to non-procedural {high level language}s
	built around {database} systems.  The first three generations
	were developed fairly quickly, but it was still frustrating,
	slow, and error prone to program computers, leading to the
	first "programming crisis", in which the amount of work that
	might be assigned to programmers greatly exceeded the amount
	of programmer time available to do it.  Meanwhile, a lot of
	experience was gathered in certain areas, and it became clear
	that certain applications could be generalised by adding
	limited programming languages to them.  Thus were born
	report-generator languages, which were fed a description of
	the data format and the report to generate and turned that
	into a {COBOL} (or other language) program which actually
	contained the commands to read and process the data and place
	the results on the page.

	Some other successful 4th-generation languages are: {database
	query language}s, e.g. {SQL}; {Focus}, {Metafont},
	{PostScript}, {RPG-II}, {S}, {IDL-PV/WAVE}, {Gauss},
	{Mathematica} and {data-stream language}s such as {AVS},
	{APE}, {Iris Explorer}.

Fowler-Nordheim tunnelling

	<electronics> (US: "tunneling") The quantum mechanical effect
	exploited in {EAPROM} and {Flash Erasable Programmable Read
	Only Memory}.  It differs from {Frenkel-Pool Tunnelling} in
	that it does not rely on defects in the {semicondictor}.

	[More detail?]

	(02 Feb 1997)

FoxBASE+

	<database> A {dBASE} III+-like product from {Fox Software}.

	[Features?  Dates?  Status?]

	(18 Nov 1997)

FoxPRO

	<database> A {dBASE} IV-like product from {Fox Software}.

	[Features?  Dates?  Status?]

	(18 Nov 1997)

Fox Software

	<company> Developers of {FoxBASE+} and {FoxPRO}.  Fox Software
	merged with {Microsoft} around 1992.

	Addresss: Perrysburg, OH, USA.

	[More details?]

	(18 Nov 1997)

FP

	1. {functional programming}.

	2. {floating-point}.

	3. Functional Programming.  A {combinator}-based {functional
	language} by John Backus stressing the use of {higher-order
	function}s.

	Implementation by Andy Valencia.
	{(ftp://apple.com/comp.sources.Unix/volume13)}.

	See also {FFP}, {FL}, {IFP}, {Berkeley FP}.

	["Can Programming be Liberated From the von Neumann Style?  A
	Functional Style and Its Algebra of Programs", John Backus,
	1977 Turing Award Lecture, CACM 21(8):165-180 (Aug 1978)].

	4. <programming> {Function Point}.

	(12 Mar 1995)

FP2

	Functional Parallel Programming.  A {term rewriting} language
	which unifies {functional programming} and {parallel
	programming}.  Every object is a term and every computation is
	done by rewriting.  Rewrite rules are used to specify
	{algebraic data type}s and parallel processes.

	["Term Rewriting as a Basis for the Design of a Functional and
	Parallel Programming Language.  A Case Study: The Language
	FP2", Ph. Jorrand in Fundamentals of Artificial Intelligence,
	LNCS 258, Springer 1986, pp. 221-276].

	(20 Oct 1994)

FPA

	1. <hardware> {floating-point accelerator}.

	2. <programming> {Function Point Analysis}.

fpc

	A translator from {Backus}'s {FP} to {C}.

	{(ftp://apple.com/comp.sources.Unix/Volume20)}

FPGA

	{Field-Programmable Gate Array}

FPLMTS

	<communications> {Future Public Land Mobile
	Telecommunications System}.

FPM

	{Fast Page Mode Dynamic Random Access Memory}

FP/M

	<programming> An {abstract machine} and intermediate language
	for {functional languages}, used to implement {Hope}.  FP/M is
	an optimisation of the {SECD machine}.

	["The Compilation of FP/M Programs into Conventional Machine
	Code", A.J. Field, Imperial College, London, 1985].

	["Functional Programming", A.J. Field & P.G. Harrison, A-W
	1988].

	(20 Oct 1994)

FPM DRAM

	{Fast Page Mode Dynamic Random Access Memory}

fprintf

	<library> Variant of the {C} library routine {printf} which
	prints to a given {stream}.  E.g.

		fprintf(stderr, "%s: can't open file \"%s\".",
			argv[0], argv[1]);

	which prints to the "{standard error}" output stream.

	(25 Apr 1995)

FPU

	{floating-point unit}

FQDN

	{fully qualified domain name}

FQL

	<language> A {functional database} language.

	["An Implementation Technique for Database Query Languages",
	O.P. Buneman et al, ACM Trans Database Sys 7(2):164-186 (June
	1982)].

	(27 Apr 1995)

fractal

	<mathematics, graphics> A fractal is a rough or fragmented
	geometric shape that can be subdivided in parts, each of which
	is (at least approximately) a smaller copy of the whole.
	Fractals are generally self-similar (bits look like the whole)
	and independent of scale (they look similar, no matter how
	close you zoom in).

	Many mathematical structures are fractals; e.g. {Sierpinski
	triangle}, {Koch snowflake}, {Peano curve}, {Mandelbrot set}
	and {Lorenz attractor}.  Fractals also describe many
	real-world objects that do not have simple geometric shapes,
	such as clouds, mountains, turbulence, and coastlines.

	{Benoit Mandelbrot}, the discoverer of the {Mandelbrot set},
	coined the term "fractal" in 1975 from the Latin fractus or
	"to break".  He defines a fractal as a set for which the
	Hausdorff Besicovich dimension strictly exceeds the
	topological dimension.  However, he is not satisfied with this
	definition as it excludes sets one would consider fractals.

	{sci.fractals FAQ
	(ftp://src.doc.ic.ac.uk/usenet/usenet-by-group/sci.fractals/)}.

	See also {fractal compression}, {fractal dimension}.

	{Usenet} newsgroups: {news:sci.fractals},
	{news:alt.binaries.pictures.fractals}, {news:comp.graphics}.

	[Are there non-self-similar fractals?]

	(02 Jul 1997)

fractal compression

	<algorithm> See {Yuval Fisher's fractal image compression site
	(http://inls.ucsd.edu/y/Fractals/)}.

	[Summary?]

	(27 Apr 1995)

fractal dimension

	<mathematics> A common type of fractal dimension is the
	Hausdorff-Besicovich Dimension, but there are several
	different ways of computing fractal dimension.  Fractal
	dimension can be calculated by taking the limit of the
	quotient of the log change in object size and the log change
	in measurement scale, as the measurement scale approaches
	zero.  The differences come in what is exactly meant by
	"object size" and what is meant by "measurement scale" and how
	to get an average number out of many different parts of a
	geometrical object.  Fractal dimensions quantify the static
	*geometry* of an object.

	For example, consider a straight line.  Now blow up the line
	by a factor of two.  The line is now twice as long as before.
	Log 2 / Log 2 = 1, corresponding to dimension 1.  Consider a
	square.  Now blow up the square by a factor of two.  The
	square is now 4 times as large as before (i.e. 4 original
	squares can be placed on the original square).  Log 4 / log 2
	= 2, corresponding to dimension 2 for the square.  Consider a
	snowflake curve formed by repeatedly replacing ___ with _/\_,
	where each of the 4 new lines is 1/3 the length of the old
	line.  Blowing up the snowflake curve by a factor of 3 results
	in a snowflake curve 4 times as large (one of the old
	snowflake curves can be placed on each of the 4 segments
	_/\_).  Log 4 / log 3 = 1.261...  Since the dimension 1.261 is
	larger than the dimension 1 of the lines making up the curve,
	the snowflake curve is a fractal.  [sci.fractals FAQ].

FRAD

	<communications> {Frame Relay Access Device}.

fragile

	{brittle}

fragment

	1. A piece of a {packet}.  When a {router} is forwarding an
	{IP} packet to a network that has a maximum packet size
	smaller than the packet size, it is forced to break up that
	packet into multiple fragments.  These fragments will be
	reassembled by the IP layer at the destination host.

fragmentation

	1. The {IP} process in which a packet is broken into smaller
	pieces, {fragment}s, to fit the requirements of a physical
	network over which the packet must pass.  The inverse is
	{reassembly}.

	2. The process, or result, of splitting a large area of free
	memory (on disk or in main memory) into smaller non-contiguous
	blocks.  This happens after many blocks have been allocated
	and freed.  For example, if there is 3 kilobytes of free space
	and two 1k blocks are allocated and then the first one (at the
	lowest address) is freed, then there will be 2k of free space
	split between the two 1k blocks.  The maximum size block that
	could then be allocated would be 1k, even though there was 2k
	free.  The solution is to "compact" the free space by moving
	the allocated blocks to one end (and thus the free space to
	the other).  See {garbage collection}.

FRAM

	{Ferroelectric Random Access Memory}

frame

	1. <networking> A {data link layer} "packet" which contains the
	header and trailer information required by the physical
	medium.  That is, {network layer} {packets} are encapsulated
	to become frames.

	See also {datagram}, {encapsulation}, {packet}.

	2. <programming> (language implementation) See {activation
	record}.

	3. <hardware> One complete scan of the active area of a
	{display screen}.  Each frame consists of a number N of
	horizontal {scan lines}, each of which, on a computer display,
	consists of a number M of {pixels}.  N is the {vertical
	resolution} of the display and M is the {horizontal
	resolution}.  The rate at which the displayed image is updated
	is the {refresh rate} in frames per second.

	(16 Dec 1994)

frame buffer

	<hardware> Part of a video system in which an {image} is
	stored, {pixel} by pixel and which is used to refresh a
	{raster} image.  The term "{video memory}" suggests a fairly
	static display whereas a frame buffer holds one frame from a
	sequence of frames forming a moving image.

	Frame buffers are found in {frame grabbers} and {time base
	correction} systems, for example.

	(03 Oct 1997)

frame grabber

	<hardware> A device that captures a single {frame} from an
	{analog} {video} signal (from a video camera or {VCR}) and
	stores it as a digital {image} under computer control.

	(11 Jul 1997)

FrameKit

	<language> A {frame language}.

	["The FrameKit User's Guide", E. Nyberg, TR CMU- CMT-88-MEMO,
	CMU 1988].

	(20 Oct 1994)

FrameMaker

	<text> A commercial document preparation program produced by
	{Frame Technology Corporation} who were taken over by {Adobe}
	in 1995/6.  FrameMaker is available for a wide variety of
	{workstations} and is designed for technical and scientific
	documents.  It uses a powerful system of templates and
	paragraph styles to control {WYSIWYG} formatting.  It supports
	graphics, tables and contents pages among other things.

	Version: FrameMaker 5.

	See also {Maker Interchange Format}.

	(13 Dec 1996)

frame pointer

	A pointer to the current {activation record} in an
	implementation of a {block structured} language.

	(20 Oct 1994)

frame rate

	<graphics> The number of {frame}s of an animation which are
	displayed every second.  The higher the frame rate, the
	smoother the animation will appear but the more processing
	power and system {bandwidth} is required.

	(01 Apr 1995)

Frame Relay

	<communications> A {DTE}-{DCE} interface specification based
	on {LAPD} (Q.921), the {Integrated Services Digital Network}
	version of {LAPB} ({X.25} {data link layer}).  A common
	specification was produced by a consortium of {StrataCom},
	{cisco}, {Digital} and Northern Telecom.

	Frame Relay is the result of {wide area network}ing
	requirements for speed; {LAN}-{WAN} and LAN-LAN
	{internetworking}; "bursty" data communications; multiplicity
	of {protocol}s and {protocol transparency}.  These
	requirements can be met with technology such as {optical
	fibre} lines, allowing higher speeds and fewer transmission
	errors; intelligent network end devices ({personal computers},
	{workstations}, and {servers}); standardisation and adoption
	of ISDN protocols.  Frame Relay could connect dedicated lines
	and {X.25} to {ATM}, {SMDS}, {BISDN} and other "{fast packet}"
	technologies.

	Frame Relay uses the same basic {data link layer} {framing} and
	{Frame Check Sequence} so current {X.25} hardware still works.
	It adds addressing (a 10-bit {Data Link Connection Identifier}
	(DLCI)) and a few control bits but does not include
	retransmissions, link establishment, windows or error
	recovery.  It has none of X.25's {session layer} but adds some
	simple interface management.  Any {network layer} protocol can
	be used over the data link layer Frames.

	{(ftp://funet.fi/documents/IETF-Frame-Relay-Intro.ps)}

	(16 Nov 1996)

Frame Relay Access Device

	<communications> (FRAD) Hardware and software that turns
	{packets} from {TCP}, {SNA}, {IPX}, etc into {frames} that can
	be sent over a {frame relay} {wide area network}.

	FRADs are a hot topic in data comms because companies like
	{Netlink}, {Motorola}, {Stratacom} are making lots of money
	out of them.

	(17 Nov 1995)

Frame Technology Corporation

	<company> The company which developed {FrameMaker}, taken over
	by {Adobe} in late 1995/early 1996.

	(30 Jan 1995)

framework

	In {object-oriented} systems, a set of {class}es that embodies
	an abstract design for solutions to a number of related
	problems.

	(30 Jan 1995)

Framework 4

	A European Union funding programme, the {information
	technology} portion of which replaced {ESPRIT}.

	(19 Sep 1994)

framing specification

	A specification of the "{protocol} bits" that surround the
	"data bits" on a communications channel to allow the data to
	be "framed" into chunks, like start and {stop bit}s in
	{RS-232}.  It allows a receiver to synchronize at points along
	the data stream.

	(13 Jan 1995)

FRANK

	["Using BINS for Interprocess Communication", P.C.J. Graham,
	SIGPLAN Notices 20(2):32-41 (Feb 1985)].

	(13 Jan 1995)

Franz Lisp

	Named after the Hungarian composer Franz Liszt (1811-1886).
	R. Fateman et al, UC Berkeley ca 1980.  A {MacLisp}-like
	dialect of {Lisp}, developed primarily for work in symbolic
	algebra.  Written in {C}.  "The FRANZ LISP Manual",
	J.K. Foderaro et al. UC Berkeley 1980.  Version: Opus 38.22.
	Liszt (the compiler) Version 8.08.

	{(ftp://ted.cs.uidaho.edu/pub/hol/franz.tar.Z)}

	See also {Liszt}.

FRED

	Robert Carr.  Language used by Framework, Ashton-Tate.

fred

	1. The personal name most frequently used as a {metasyntactic
	variable} (see {foo}).  Allegedly popular because it's easy
	for a non-touch-typist to type on a standard QWERTY keyboard.
	Unlike {J. Random Hacker} or "J. Random Loser", this name has
	no positive or negative loading (but see {Mbogo, Dr. Fred}).
	See also {barney}.

	2. An acronym for "Flipping Ridiculous Electronic Device";
	other F-verbs may be substituted for "flipping".

frednet

	/fred'net/ Used to refer to some {random} and uncommon
	{protocol} encountered on a {network}.  "We're implementing
	bridging in our {router} to solve the frednet problem."

free

	See {free software}, {free variable}.

FreeBSD

	<operating system> A free {operating system} based on the {BSD
	4.4-lite} release from {Computer Systems Research Group} at
	the {University of California at Berkeley}.

	FreeBSD requires an {ISA}, {EISA}, {VESA}, or {PCI} based
	computer with an {Intel 80386SX} to {Pentium} CPU (or
	compatible {AMD} or {Cyrix} CPU) with 4 megabytes of {RAM} and
	60MB of disk space.

	Some of FreeBSD's features are: {preemptive multitasking} with
	dynamic priority adjustment to ensure smooth and fair sharing
	of the computer between applications and users.  Multiuser
	access - {peripherals} such as printers and tape drives can be
	shared between all users.  Complete {TCP/IP} networking
	including {SLIP}, {PPP}, {NFS} and {NIS}.  {Memory
	protection}, {demand-paged virtual memory} with a merged
	{VM}/{buffer cache} design.  FreeBSD was designed as a {32 bit
	operating system}.  {X Window System} (X11R6) provides a
	{graphical user interface}.  {Binary compatibility} with many
	programs built for {SCO}, {BSDI}, {NetBSD}, {386BSD}, and
	{Linux}.  Hundreds of ready-to-run applications in the FreeBSD
	ports collection.  FreeBSD is {source code compatible} with
	most popular commercial {Unix} systems and thus most
	applications require few, if any, changes to compile.  {Shared
	libraries}.  A full compliment of {C}, {C++}, {Fortran} and
	{Perl} development tools and many other languages.  {Source
	code} for the entire system is available.  Extensive on-line
	documentation.

	{Home (http://www.freebsd.org/welcome.html)}

	{(ftp://ftp.freebsd.org/pub/FreeBSD)} or try your nearest
	{mirror site} listed at the home site or buy the {CD-ROM} from
	{Walnut Creek}.

	(18 Dec 1995)

FreeHEP

	An organisation offering a repository of software and related
	information for high energy physics applications.

Freenet

	Community-based bulletin board system with e-mail, information
	services, interactive communications, and conferencing.
	Freenets are funded and operated by individuals and volunteers
	- in one sense, like public television.  They are part of the
	National Public Telecomputing Network (NPTN), an organisation
	based in Cleveland, Ohio, devoted to making computer
	telecommunication and networking services as freely available
	as public libraries.

freerexx

	{REXX} {interpreter}s for {Unix} in {C++}.

	{(ftp://rexx.uwaterloo.ca/pub/freerexx/rx102.tar.Z)}

free software

	According to {Richard Stallman} and the {Free Software
	Foundation}, free software is software that everyone is free
	to copy, redistribute and modify.  That implies it must be
	available as source code.  It does not imply that it is free
	of charge, so anyone can sell free software so long as they
	don't impose any new restrictions on its redistribution or
	use.

	{This dictionary} is free in this sense, though it is not
	really {software}.

	There are many other kinds of "free software" in the more
	obvious sense of "free of charge".  See "{-ware}".

Free Software Foundation

	<body> (FSF) An organisation devoted to the creation and
	dissemination of {free software}, i.e. software that is free
	from licensing fees or restrictions on use.  The Foundation's
	main work is supporting the {GNU} project, started by {Richard
	Stallman} (RMS), partly to proselytise for his position that
	information is community property and all software source
	should be shared.

	The GNU project has developed the GNU {Emacs} editor and a {C}
	compiler, {gcc}, replacements for many Unix utilities and many
	other tools.  A complete {Unix}-like operating system ({HURD})
	is in the works (April 1994).

	Software is distributed under the terms of the {GNU General
	Public License}, which also provides a good summary of the
	Foundation's goals and principles.  The Free Software
	Foundation raises most of its funds from distributing its
	software, although it is a charity rather than a company.
	Although the software is freely available (e.g. by {FTP} - see
	below) users are encouraged to support the work of the FSF by
	paying for their distribution service or by making donations.

	One of the slogans of the FSF is "Help stamp out software
	hoarding!"  This remains controversial because authors want to
	own, assign and sell the results of their labour.  However,
	many hackers who disagree with RMS have nevertheless
	cooperated to produce large amounts of high-quality software
	for free redistribution under the Free Software Foundation's
	imprimatur.

	See {copyleft}, {General Public Virus}, {GNU archive site}.

	{(ftp://ftp.gnu.ai.mit.edu)}

	Unofficial WWW pages: {PDX
	(http://www.cs.pdx.edu/~trent/gnu/)}, {DeLorie
	(http://www.delorie.com/gnu/)}.

	E-mail: <gnu@prep.ai.mit.edu>.

	Address: Free Software Foundation, Inc., 675 Massachusetts
	Avenue, Cambridge, MA 02139, USA.

	Telephone: +1 (617) 876 3296.

	(10 Dec 1995)

free variable

	1. A variable referred to in a function, which is not an
	argument of the function.  In {lambda-calculus}, x is a {bound
	variable} in the term M = \ x . T, and a free variable of T.
	We say x is bound in M and free in T.  If T contains a subterm
	\ x . U then x is rebound in this term.  This nested, inner
	binding of x is said to "shadow" the outer binding.
	Occurrences of x in U are free occurrences of the new x.

	Variables bound at the top level of a program are technically
	free variables within the terms to which they are bound but
	are often treated specially because they can be compiled as
	fixed addresses.  Similarly, an identifier bound to a
	recursive function is also technically a free variable within
	its own body but is treated specially.

	A {closed term} is one containing no free variables.

	See also {closure}, {lambda lifting}, {scope}.

	2. In {logic}, a variable which is not quantified (see
	{quantifier}).

freeware

	<legal> {Software}, often written by enthusiasts and
	distributed at no charge by users' groups, or via {electronic
	mail}, local {bulletin board}s, {Usenet}, or other electronic
	media.

	At one time, "freeware" was a trademark of {Andrew
	Fluegelman}, the author of the well-known {MS-DOS}
	communications program {PC-TALK III}.  It wasn't enforced
	after his mysterious disappearance and presumed death in 1984.

	"Freeware" should not be confused with "{free software}"
	(roughly, software with unrestricted redistribution) or
	"{shareware}" (software distributed without charge for which
	users can pay voluntarily).

	(06 Aug 1995)

freeze

	To lock an evolving software distribution or document against
	changes so it can be released with some hope of stability.
	Carries the strong implication that the item in question will
	"unfreeze" at some future date.

	There are more specific constructions on this term.  A
	"feature freeze", for example, locks out modifications
	intended to introduce new features but still allows bugfixes
	and completion of existing features; a "code freeze" connotes
	no more changes at all.  At {Sun Microsystems} and elsewhere,
	one may also hear references to "code slush" - that is, an
	almost-but-not-quite frozen state.

Frege, Gottlob

	{Gottlob Frege}

Frequency Division Multiple Access

	{Frequency Division Multiplexing}

Frequency Division Multiplexing

	<communications> (FDM) The simultaneous transmission of
	multiple separate signals through a shared medium (such as a
	wire, {optical fibre} or light beam) by modulating, at the
	transmitter, the separate signals into separable frequency
	bands, and adding those results linearly either before
	transmission or within the medium.  While thus combined, all
	the signals may be amplified, conducted, translated in
	frequency and routed toward a destination as a single signal,
	resulting in economies which are the motivation for
	multiplexing.  Apparatus at the reciever separates the
	multiplexed signals by means of frequency passing or rejecting
	filters, and demodulates the results individually, each in the
	manner appropriate for the modulation scheme used for that
	band or group.

	Bands are joined to form groups, and groups may then be joined
	into larger groups; this process may be considered
	recursively, but such technique is common only in large and
	sophisticated systems and is not a necessary part of FDM.

	Neither the transmitters nor the recievers need be close to
	each other; ordinary radio, television, and cable service are
	examples of FDM.  It was once the mainstay of the long
	distance telephone system.  The more recently developed {time
	division multiplexing} in its several forms lends itself to
	the handling of digital data, but the low cost and high
	quality of available FDM equipment, especially that intended
	for television signals, make it a reasonable choice for many
	purposes.

	(08 Mar 1995)

Frequency Shift Keying

	<communications> (FSK) The use of {frequency modulation} to
	transmit digital data, i.e. two different {carrier}
	frequencies are used to represent zero and one.

	FSK was originally used to transmit {teleprinter} messages by
	radio ({RTTY}) but can be used for most other types of radio
	and land-line digital telegraphy.  More than two frequencies
	can be used to increase transmission rates.

	(14 Jul 1997)

frequently asked question

	<convention> (FAQ, or rarely FAQL, FAQ list) A document
	provided for many {Usenet} {newsgroups} (and, more recently,
	{World-Wide Web} services) which attempts to answer questions
	which new readers often ask.  These are maintained by
	volunteers and posted regularly to the newsgroup.  You should
	always consult the FAQ list for a group before posting to it
	in case your question or point is common knowledge.

	The collection of all FAQ lists is one of the most precious
	and remarkable resources on the {Internet}.  It contains a
	huge wealth of up-to-date expert knowledge on many subjects of
	common interest.  Accuracy of the information is greatly
	assisted by its frequent exposure to criticism by an
	interested, and occasionally well-informed, audience (the
	readers of the relevant newsgroup).

	The main {FTP archive} for FAQs is on a computer called {RTFM}
	at {MIT}, where they can be accessed either {by group
	(ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/)} or {by
	hierarchy (ftp://rtfm.mit.edu/pub/usenet-by-hierarchy/)}.
	There is another archive at {Imperial College
	(ftp://src.doc.ic.ac.uk/usenet/news-info/)}, London, UK and a
	{World-Wide Web} archive in {Ohio
	(http://www.cis.ohio-state.edu/hypertext/faq/usenet/top.html)},
	USA.

	The FAQs are also posted to {Usenet} newsgroups:
	{news:comp.answers}, {news:news.answers} and
	{news:alt.answers}.

	(08 Dec 1997)

Fresco

	1. <standard, programming> An {object-oriented} {API} for
	{graphical user interface}s, under development by the {X
	Consortium} as an open, multi-vendor {standard}.

	2. <language, specification> An {object-oriented}
	{specification language}.

	["Refinement in Fresco", in Object Oriented Specification Case
	Studies, K. Lano et al eds, P-H 1993].

	(28 Apr 1996)

Fresh

	<language>

	["Fresh: A Higher-Order Language Based on Unification",
	G. Smolka, in Logic Programming: Functions, Relations and
	Equations", D. DeGroot et al, P-H 1986, pp. 469-524].

	(28 Apr 1996)

friction feed

	<printer> A method some {printers} and {plotters} use to move
	paper by rotating one or both of a pair of spring-loaded
	rubber-coated rollers with the paper sandwiched between them.

	Friction feed printers are notorious for slipping when the
	rollers wear out, but can take standard typing paper.

	For printers with a {sheet feeder}, friction feed is more
	appropriate than {sprocket feed} which requires the holes in
	the paper to engage with the sprockets of the feed mechanism.

	(09 Jul 1997)

fried

	1. <hardware> Non-working due to hardware failure; burnt out.
	Especially used of hardware brought down by a "power glitch"
	(see {glitch}), {drop-outs}, a short, or some other electrical
	event.  (Sometimes this literally happens to electronic
	circuits!  In particular, resistors can burn out and
	transformers can melt down, emitting noxious smoke - see
	{friode}, {SED} and {LER}.  However, this term is also used
	metaphorically.)  Compare {frotzed}.

	2. <jargon> Of people, exhausted.  Said particularly of those
	who continue to work in such a state.  Often used as an
	explanation or excuse.  "Yeah, I know that fix destroyed the
	file system, but I was fried when I put it in."  Especially
	common in conjunction with "brain": "My brain is fried today,
	I'm very short on sleep."

	(28 Apr 1996)

Friend

	Relationship between classes in the language C++.

FRINGE

	C. Katz, GE, 1961.  Subcomponent of GE-255 GECOM system.
	Sorting and merging of data, reports and file maintenance.

frink

	/frink/ The unknown ur-verb, fill in your own meaning.  Found
	especially on the {Usenet} newsgroup {news:alt.fan.lemurs},
	where it is said that the lemurs know what "frink" means, but
	they aren't telling.

	Compare {gorets}.

	(16 Dec 1994)

friode

	<humour, electronics> /fri:'ohd/ (TMRC) A reversible (that is,
	fused, blown, or {fried}) {diode}.  A friode may have been a
	{SED} at some time.

	See also {LER}.

	(28 Apr 1996)

fritterware

	An excess of capability that serves no productive end.  The
	canonical example is font-diddling software on the Mac (see
	{macdink}); the term describes anything that eats huge amounts
	of time for quite marginal gains in function but seduces
	people into using it anyway.  See also {window shopping}.

FRL

	Frame Representation Language.

	MIT.

	["The FRL Manual", R. Roberts et al, AI Memo 409, MIT AI Lab,
	1977].

	(16 Dec 1994)

FRMT-FTRN

	Scientific language.  1976.

frob

	/frob/ 1.  [MIT] The {TMRC} definition was "FROB = a
	protruding arm or trunnion"; by metaphoric extension, a "frob"
	is any random small thing; an object that you can comfortably
	hold in one hand; something you can frob (sense 2).  See
	{frobnitz}.

	2. Abbreviated form of {frobnicate}.

	3. [{MUD}] A command on some {MUD}s that changes a player's
	experience level (this can be used to make wizards); also, to
	request {wizard} privileges on the "professional courtesy"
	grounds that one is a wizard elsewhere.  The command is
	actually "frobnicate" but is universally abbreviated to the
	shorter form.

frobnicate

	/frob'ni-kayt/ (Possibly from {frobnitz}, and usually
	abbreviated to {frob}, but "frobnicate" is recognised as the
	official full form).  To manipulate or adjust, to {tweak}.
	One frequently frobs bits or other 2-state devices.  Thus:
	"Please frob the light switch" (that is, flip it), but also
	"Stop frobbing that clasp; you'll break it".  One also sees
	the construction "to frob a frob".

	Usage: frob, {twiddle}, and {tweak} sometimes connote points
	along a continuum.  "Frob" connotes aimless manipulation;
	"twiddle" connotes gross manipulation, often a coarse search
	for a proper setting; "tweak" connotes fine-tuning.  If
	someone is turning a knob on an oscilloscope, then if he's
	carefully adjusting it, he is probably tweaking it; if he is
	just turning it but looking at the screen, he is probably
	twiddling it; but if he's just doing it because turning a knob
	is fun, he's frobbing it.  The variant "frobnosticate" has
	also been reported.

	(16 Dec 1994)

frobnitz

	/frob'nits/, plural "frobnitzem" /frob'nit-zm/ or "frobni"
	/frob'ni:/ (TMRC) An unspecified physical object, a widget.
	Also refers to electronic {black boxes}.  This rare form is
	usually abbreviated to "frotz", or more commonly to {frob}.
	Also used are "frobnule" (/frob'n[y]ool/) and "frobule"
	(/frob'yool/).  Starting perhaps in 1979, "frobozz" /fr*-boz'/
	(plural: "frobbotzim" /fr*-bot'zm/) has also become very
	popular, largely through its exposure as a name via {Zork}.
	These variants can also be applied to nonphysical objects,
	such as data structures.

	Pete Samson, compiler of the original {TMRC} lexicon, adds,q
	"Under the TMRC (railway) layout were many storage boxes,
	managed (in 1958) by David R. Sawyer.  Several had fanciful
	designations written on them, such as "Frobnitz Coil Oil".
	Perhaps DRS intended Frobnitz to be a proper name, but the
	name was quickly taken for the thing".  This was almost
	certainly the origin of the term.

	(16 Dec 1994)

frogging

	({University of Waterloo}) 1. Partial corruption of a text
	file or input stream by some bug or consistent glitch, as
	opposed to random events like line noise or media failures.
	Might occur, for example, if one bit of each incoming
	character on a tty were stuck, so that some characters were
	correct and others were not.

	See {terminak} for a historical example.

	2. By extension, accidental display of text in a mode where
	the output device emits special symbols or {mnemonic}s rather
	than conventional ASCII.  This often happens, for example,
	when using a terminal or comm program on a device like an {IBM
	PC} with a special "high-half" character set and with the
	bit-parity assumption wrong.  A hacker sufficiently familiar
	with ASCII bit patterns might be able to read the display
	anyway.

Frolic

	A {Prolog} system in {Common Lisp}.

	{(ftp://ftp.cs.utah.edu/pub/frolic.tar.Z)}

	(23 Nov 1991)

front end

	1. An intermediary computer that does set-up and filtering for
	another (usually more powerful but less friendly) machine (a
	"back end").

	2. Software that provides an interface to another program
	"behind" it, which may not be as {user-friendly}.  Probably
	from analogy with hardware front-ends that interfaced with
	{mainframe}s.

front-end processor

	(FEP) 1. A small computer necessary to enable an {IBM}
	{mainframe} using {SNA} to communicate beyond the limits of
	the {dinosaur pen}.

	2. A small computer controlling the screen and keyboard of a
	{Symbolics 3600} {LISP Machine}.

frotz

	/frots/ 1.  See {frobnitz}.

	2. "mumble frotz": An interjection of mildest disgust.

frotzed

	/frotst/ {down} because of hardware problems.  Compare
	{fried}.  A machine that is merely frotzed may be fixable
	without replacing parts, but a fried machine is more seriously
	damaged.

frowney

	(Or "frowney face") See {emoticon}.

fry

	1. To fail.  Said especially of smoke-producing hardware
	failures.  More generally, to become non-working.  Usage:
	never said of software, only of hardware and humans.  See
	{fried}, {magic smoke}.

	2. To cause to fail; to {roach}, {toast}, or {hose} a piece of
	hardware.  Never used of software or humans, but compare
	{fried}.

FS

	1. <file system> {file system}.

	2. <character> {File Separator}.

FSF

	{Free Software Foundation}

FSK

	{Frequency Shift Keying}

FSL

	Formal Semantics Language.

	A language for {compiler} writing.

	["A Formal Semantics for Computer Languages and its Application
	in a Compiler-Compiler", J.A. Feldman, CACM 9(1) (Jan 1966)].

	[Sammet 1969, p. 641].

	(23 Jan 1995)

FSM

	1. <theory> {Finite State Machine}.

	2. <networking> {FDDI Switching Module}.

	({3Com} implements this device on its {LAN} switches).

	[What is it?]

	(16 May 1997)

FSP

	{File Service Protocol}

fsplit

	A tool to split up monolithic {Fortran} programs.

FT

	{fault tolerant}

FTAM

	File Transfer, Access, and Management: an application layer
	protocol for file transfer and remote manipulation (ISO 8571).

FTP

	{File Transfer Protocol}

FTP archive

	See {archive site}.

FTP by mail

	A service offered by {DEC} to allow people without {Internet}
	access to get copies of files which are available by
	{anonymous FTP}.  Send a message with just the word "help" in
	the body to <ftpmail@decwrl.dec.com>.

FTP Software, Inc.

	<company> Developers of the original {PC/TCP} {Packet Driver}
	specification.

	Address: 26 Princess St. Wakefield, MA 01880-3004.  Telephone:
	+1 (617) 246 0900.

	(05 Dec 1994)

FTTP

	Do you mean {FTP} or {HTTP}?

FUBAR

	1. (WWII military slang) Fucked up beyond all
	recognition (or repair).

	See {foobar}.

	2. <hardware> The Failed UniBus Address Register in a
	{VAX}.  A good example of how jargon can occasionally be snuck
	past the {suit}s.

	Larry Robinson <lrobins@indiana.edu> reports the following
	nonstandard use for FUBAR:

	One day somebody got mad at the {card reader} (or card eater
	that day) on our {Univac 3200}.  He taped a sign, "This thing
	is FUBAR", on the metal weight that sits on the stack of
	unread cards.  The sign stayed there for over a year.  One
	day, somebody said, "Don't forget to put the fubar on top of
	the stack".  It stuck!  We called that weight the fubar until
	they took away the machine.  The replacement card reader had
	two spring loaded card clamps, one for the feed and one for
	the return, and we called THOSE fubars until we dumped punch
	cards.

	Incidently, the way he taped the sign on the weight made up
	for the lack of a little nylon piece that was missing from it,
	and fixed the card reader.  That's why the sign stayed there.

	(18 Mar 1997)

FUD

	<jargon> /fuhd/ An acronym invented by {Gene Amdahl}
	after he left {IBM} to found his own company: "FUD is the
	fear, uncertainty, and doubt that {IBM} sales people instill
	in the minds of potential customers who might be considering
	[Amdahl] products."  The idea, of course, was to persuade them
	to go with safe IBM gear rather than with competitors'
	equipment.  This implicit coercion was traditionally
	accomplished by promising that Good Things would happen to
	people who stuck with IBM, but Dark Shadows loomed over the
	future of competitors' equipment or software.

	(23 May 1995)

fudge

	1. To perform in an incomplete but marginally acceptable way,
	particularly with respect to the writing of a program.  "I
	didn't feel like going through that pain and suffering, so I
	fudged it - I'll fix it later."

	2.  The resulting code.

fudge factor

	A value or parameter that is varied in an ad hoc way to
	produce the desired result.  The terms "tolerance" and {slop}
	are also used, though these usually indicate a one-sided
	leeway, such as a buffer that is made larger than necessary
	because one isn't sure exactly how large it needs to be, and
	it is better to waste a little space than to lose completely
	for not having enough.  A fudge factor, on the other hand, can
	often be tweaked in more than one direction.  A good example
	is the "fuzz" typically allowed in {floating-point}
	calculations: two numbers being compared for equality must be
	allowed to differ by a small amount; if that amount is too
	small, a computation may never terminate, while if it is too
	large, results will be needlessly inaccurate.  Fudge factors
	are frequently adjusted incorrectly by programmers who don't
	fully understand their import.  See also {coefficient of X}.

Fudgets

	<programming> (From "functional widgets") {Graphical user
	interface} {widgets} available as The Fudget library - a
	toolkit for concurrent programming of graphical user
	interfaces, {client/servers} and more written in {Haskell} by
	Thomas Hallgren <hallgren@cs.chalmers.se> and Magnus Carlsson
	<magnus@cs.chalmers.se>.

	Version: h9 04 Jul 1995 (Baastad Spring School Release).

	{Home (http://www.cs.chalmers.se/Fudgets/)}

	{(ftp://ftp.cs.chalmers.se/pub/haskell/chalmers)}

	(17 Mar 1996)

FUDGIT

	A double-precision multi-purpose fitting program by Thomas
	Koenig <ig25@rz.uni-karlsruhe.de>.  It can manipulate complete
	columns of numbers in the form of vector arithmetic.  FUDGIT
	is also an expression language {interpreter} understanding
	most of {C} {grammar} except pointers.  Morever, FUDGIT is a
	front end for any plotting program supporting commands from
	stdin, e.g. {Gnuplot}.

	Version 2.27 runs on {AIX}, {HP-UX}, {Linux}, {IRIX}, {NeXT},
	{SunOS}, {Ultrix}.

	{(ftp://tsx-11.mit.edu/pub/linux/sources/usr.bin/)}

	(22 Mar 1993)

FUD wars

	/fuhd worz/ Political posturing, intended to create {FUD},
	engaged in by hardware and software vendors ostensibly
	committed to standardisation but actually willing to fragment
	the market to protect their own shares.  The {Unix
	International} vs. {OSF} conflict is but one outstanding
	example.

	(01 Dec 1994)

Fuel-can

	A derogatory term for the {Atari Falcon}.

	(22 Dec 1994)

Fugue

	A music language implemented in {Xlisp}.

	["Fugue: A Functional Language for Sound Synthesis",
	R.B. Dannenberg et al, Computer 24(7):36-41 (Jul 1991)].

	(01 Dec 1994)

Fujitsu

	<company> A Japanese elecronics corporation.  It owns {ICL}.

	Home {USA (http://www.fujitsu.com/)}, {Japan
	(http://www.fujitsu.co.jp/index-e.html)}.

	(14 Mar 1995)

full-custom

	Design of {integrated circuit}s at the transistor or polygon
	level.  This is in contrast to the use of libraries of
	components.  Full-custom design requires considerable skill
	and experience and is usually only feasible for simple
	circuits, especially ones with much repetition, such as memory
	device, where a small saving in the size and power consumption
	of a component will yeild a large overall saving.

	(01 Dec 1994)

full-duplex

	<communications> 1. A term used to describe a communications
	channel down which data can travel in both directions at once.

	2. An obsolete term for {remote echo}.

	Compare {simplex}, {half-duplex}.

	(01 Dec 1994)

full-duplex Switched Ethernet

	<networking> (FDSE) A {Switched Ethernet} link which can carry
	data in both directions simultaneously, doubling transmission
	capacity from the usual 10 to 20 megabits per second.

	(20 Jun 1996)

full laziness

	<functional programming> A transformation, described by
	Wadsworth in 1971, which ensures that subexpressions in a
	function body which do not depend on the function's arguments
	are only evaluated once.  E.g. each time the function

		f x = x + sqrt 4

	is applied, (sqrt 4) will be evaluated.  Since (sqrt 4) does
	not depend on x, we could transform this to:

		f x = x + sqrt4
		sqrt4 = sqrt 4

	We have replaced the dynamically created (sqrt 4) with a
	single shared constant which, in a {graph reduction} system,
	will be evaluated the first time it is needed and then updated
	with its value.

	See also {fully lazy lambda lifting}, {let floating}.

	(09 Nov 1994)

full-motion video

	(FMV) Any system used to deliver moving video images and sound
	on a computer.  Video images and sound are stored on disk;
	{compact disc} is preferred because of the amount of data
	required.  Some form of {video compression} is used to reduce
	the amount of data and to allow it to be read from disk
	quickly enough.  Compression can be relatively slow but
	decompression is done in {real-time} with the picture quality
	and {frame rate} varying with the processing power available,
	the size of the picture and whether it appears in a {window}
	or uses the whole screen.

	{Acorn Computers}' system is called {Replay} and {Apple
	Computer}'s is {QuickTime}.

	Compare {MPEG}, {H.261}.

	[IBM PC equivalent?  Do they all use compression?  Web page?]

	(09 Nov 1994)

fully associative cache

	A cache where data from any address can be stored in any cache
	location.  The whole address must be used as the tag.  All
	tags must be compared simultaneously (associatively) with the
	requested address and if one matches then its associated data
	is accessed.  This requires an associative memory to hold the
	tags which makes this form of cache more expensive.  It does
	however solve the problem of contention for cache locations
	({cache conflict}) since a block need only be flushed when the
	whole cache is full and then the block to flush can be
	selected in a more efficient way.

	See also {direct mapped cache}, {set associative cache}.

Fully Automated Compiling Technique

	<language> (FACT, "Honeywell-800 Business Compiler") A
	pre-{COBOL} English-like business data processing language for
	the {Honeywell 800}, developed ca. 1959.

	[Sammet 1969, p. 327].

	(01 Dec 1994)

fully lazy lambda lifting

	John Hughes's optimisation of {lambda lifting} to give {full
	laziness}.  {Maximal free expression}s are shared to minimise
	the amount of recalculation.  Each inner sub-expression is
	replaced by a function of its maximal free expressions
	(expressions not containing any {bound variable}) applied to
	those expressions.  E.g.

		f = \ x . (\ y . (+) (sqrt x) y)

	((+) (sqrt x)) is a maximal free expression in
	(\ y . (+) (sqrt x) y) so this inner {abstraction} is replaced
	with

		(\ g . \ y . g y) ((+) (sqrt x))

	Now, if a {partial application} of f is shared, the result of
	evaluating (sqrt x) will also be shared rather than
	re-evaluated on each application of f.  As Chin notes, the
	same benefit could be achieved without introducing the new
	{higher-order function}, g, if we just extracted out (sqrt x).

	This is similar to the {code motion} optimisation in
	{procedural language}s where constant expressions are moved
	outside a loop or procedure.

	(01 Dec 1994)

fully qualified domain name

	(FQDN) The full name of a system, consisting of its local
	{hostname} and its {domain} name.  For example, "venera" is a
	hostname and "venera.isi.edu" is an FQDN.  A FQDN should be
	sufficient to determine a unique {Internet address} for any
	host on the {Internet}.  The same naming scheme is also used
	for some hosts which are not on the Internet, but share the
	same name-space for {electronic mail} addressing.  A host
	which does not have a FQDN (which is not "{domainist}") must
	be addressed using a {bang path}.

	All {Internet} computers and most {UUCP} sites can now resolve
	FQDNs, thanks to a large amount of behind-the-scenes magic and
	{PD} software written since 1980 or so.

	See also {network, the}, {network address}.

	(01 Dec 1994)

fum

	[XEROX PARC]  At PARC, often the third of the standard
	{metasyntactic variable}s (after {foo} and {bar}).  Competes
	with {baz}, which is more common outside PARC.

Fun

	A {typed lambda-calculus}, similar to {SOL}[2].  "On
	Understanding Types, Data Abstractions and Polymorphism",
	L. Cardelli et al, ACM Comp Surveys 17(4) (Dec 1985).

function

	1. <mathematics> (Or "map") If D and C are sets (the domain
	and codomain) then a function f from D to C, normally written
	"f : D -> C" is a subset of D x C such that:

	1. For each d in D there exists some c in C such that (d,c) is
	an element of f.  I.e. the function is defined for every
	element of D.

	2. For each d in D, c1 and c2 in C, if both (d,c1) and (d,c2)
	are elements of f then c1 = c2.  I.e. the function is uniquely
	defined for every element of D.

	See also {image}, {inverse}, {partial function}.

	2. <programming> Computing usage derives from the mathematical
	term but is much less strict.  In programming (except in
	{functional programming}), a function may return different
	values each time it is called with the same argument values
	and may have {side effects}.

	A {procedure} is a function which returns no value but has
	only {side-effects}.  The {C} language, for example, has no
	procedures, only functions.  {ANSI C} even defines a {type},
	{void}, for the result of a function that has no result.

	(01 Sep 1996)

functional

	1. Working correctly.

	2. Pertaining to {functional programming}.

	3. {higher-order function}.

functional database

	<database, language> A {database} which uses a {functional
	language} as its {query language}.

	Databases would seem to be an inappropriate application for
	functional languages since, a {purely functional language}
	would have to return a new copy of the entire database every
	time (part of) it was updated.  To be practically {scalable},
	the update mechanism must clearly be {destructive} rather than
	functional; however it is quite feasible for the {query
	language} to be purely functional so long as the database is
	considered as an argument.

	One approach to the update problem would use a {monad} to
	encapsulate database access and ensure it was {single
	threaded}.  Alternative approaches have been suggested by
	Trinder, who suggests non-destructive updating with shared
	data structures, and Sutton who uses a variant of a Phil
	Wadler's {linear type} system.

	There are two main classes of functional database languages.
	The first is based upon {Backus}' {FP} language, of which
	{FQL} is probably the best known example.  {Adaplan} is a more
	recent language which falls into this category.

	More recently, people have been working on languages which are
	syntactically very similar to modern {functional programming
	language}s, but which also provide all of the features of a
	database language, e.g. bulk data structures which can be
	incrementally updated, type systems which can be incrementally
	updated, and all data persisting in a database.  Examples are
	{PFL} [Poulovassilis&Small, VLDB-91], and {Machiavelli} [Ohori
	et al, ACM SIGMOD Conference, 1998].

	{Query optimisation} is very important for database languages
	in general and the {referential transparency} of functional
	languages allows optimisations which would be harder to verify
	in presence of {side-effect}s.

	[Trinder, P., "Referentially transparent database languages",
	1989 Glasgow Workshop on Functional programming]

	[Breazu-Tannen et al., DBPL-91].

	[Poulovassilis, VLDB-94].

	(09 May 1995)

functional dependency

	<database> Given a relation R (in a {relational database}),
	attribute Y of R is functionally dependent on attribute X of R
	and X of R functionally determines Y of R (in symbols R.X ->
	R.Y) if and only if each X in R has associated with it
	precisely one Y in R (at any one time).  Attributes X and Y
	may be {composite}.

	This is very close to a {function} in the mathematical sense.

	(01 Sep 1997)

functionality

	<programming> Waffle for "{features}" or "function".  The
	capabilities or behaviours of a program, part of a program or
	system, seen as the sum of its {features}.  Roughly, "the
	things it can do".  Generally used in a comparitive sense,
	e.g. "The latest update adds some useful functionality".

	(14 Jul 1997)

functional language

	<language> A language that supports and encourages {functional
	programming}.

	(08 Nov 1995)

functional program

	<language> A program employing the {functional programming}
	approach or written in a {functional language}.

	(07 Nov 1995)

functional programming

	<programming> (FP) A program in a functional language consists
	of a set of (possibly {recursive}) {function} definitions and
	an expression whose value is output as the program's result.
	Functional languages are one kind of {declarative language}.
	They are based on the {typed lambda-calculus} with constants.
	There are no {side-effect}s to expression evaluation so an
	expression (e.g. a function applied to certain arguments) will
	always evaluate to the same value (if its evaluation
	terminates).  Furthermore, an expression can always be
	replaced by its value without changing the overall result
	({referential transparency}).

	The order of evaluation of subexpressions is determined by the
	language's {evaluation strategy}.  In a {strict}
	({call-by-value}) language this will specify that arguments
	are evaluated before applying a function whereas in a
	non-strict ({call-by-name}) language arguments are passed
	unevaluated.

	Programs written in a functional language are generally
	compact and elegant, but have tended, until recently, to run
	slowly and require a lot of memory.

	Examples of functional languages are {Clean}, {FP}, {Haskell},
	{Hope}, {LML}, {Miranda} and {SML}.  Many other languages such
	as {Lisp} have a subset which is {purely functional} but also
	contain non-functional constructs.

	See also {lazy evaluation}, {reduction}.

	{Lecture notes
	(ftp://ftp.cs.olemiss.edu/pub/tech-reports/umcis-1995-01.ps)}
	or the same {in dvi-format
	(ftp://ftp.cs.olemiss.edu/pub/tech-reports/umcis-1995-01.dvi)}.

	{FAQ
	(http://www.cs.nott.ac.uk/Department/Staff/mpj/faq.html)}.
	{SEL-HPC Article Archive
	(http://www.lpac.ac.uk/SEL-HPC/Articles/)}.

	(08 Nov 1995)

functional programming language

	<language> A language that supports and encourages {functional
	programming}.

	(08 Nov 1995)

functional testing

	<testing> (Or "black-box testing", "closed-box testing") The
	application of test data derived from the specified functional
	requirements without regard to the final program structure.

	(15 May 1996)

functional unit

	A subsystem of the {central processing unit} of a computer.
	E.g. {arithmetic and logic unit}, {memory address register},
	{barrel shifter}, {register file}.

	(10 Feb 1995)

function application

	A {function} applied to (some of) its {argument}s.  If it is
	not applied to all its argument then it is a "{partial
	application}".  Application is usually written in the form
	f(x) but some languages such as command line interpreters and
	many {functional language}s use {juxtaposition}: f x.  {Lisp}
	places the parentheses around the whole application: (f x).

Function Graph Language

	(FGL) Used as the machine language for the AMPS (Applicative
	Multi-Processing System) proposed by Robert Keller, Gary
	Lindstrom and Suhas Patil at the University of Utah.

function key

	(From the {IBM 3720} terminal's Programmed Function Keys (PF
	keys)) One of a set of special keys on a computer or
	{terminal} keyboard which can be programmed so as to cause an
	{application program} to perform certain actions.

	Function keys on a terminal may either generate short fixed
	sequences of characters, often beginning with the {escape}
	character ({ASCII} 27), or the characters they generate may be
	configured by sending special character sequences to the the
	terminal.

	On a {microcomputer} keyboard, the function keys may generate
	a fixed, single byte code, outside the normal {ASCII} range,
	which is translated into some other configurable sequence by
	the keyboard {device driver} or interpreted dircetly by the
	{application program}.

	(07 Feb 1995)

Function Point Analysis

	<programming> (FPA) A standard metric for the relative size
	and complexity of a software system, originally developed by
	Alan Albrecht of {IBM} in the late 1970s.

	Functon points (FPs) can be used to estimate the relative size
	and complexity of software in the early stages of development
	- analysis and design.  The size is determined by identifying
	the components of the system as seen by the end-user: the
	inputs, outputs, inquiries, interfaces to other systems, and
	logical internal files.  The components are classified as
	simple, average, or complex.  All of these values are then
	scored and the total is expressed in Unadjusted FPs (UFPs).
	Complexity factors described by 14 general systems
	characteristics, such as reusability, performance, and
	complexity of processing can be used to weight the UFP.
	Factors are also weighted on a scale of 0 - not present, 1 -
	minor influence, to 5 - strong influence.  The result of these
	computations is a number that correlates to system size.

	Although the FP metric doesn't correspond to any actual
	physical attribute of a software system (such as {lines of
	code} or the number of subroutines) it is useful as a relative
	measure for comparing projects, measuring productivity, and
	estimating the amount a development effort and time needed for
	a project.

	See also {International Function Point Users Group}.

	(16 May 1996)

functor

	In {category theory}, a functor F is an operator on types.  F
	is also considered to be a {polymorphic} operator on functions
	with the type

		F : (a -> b) -> (F a -> F b).

	Functors are a generalisation of the function "{map}".  The
	type operator in this case takes a type T and returns type
	"list of T".  The map function takes a function and applies it
	to each element of a list.

	(07 Feb 1995)

funky

	Said of something that functions, but in a slightly strange,
	{kluge}y way.  It does the job and would be difficult to
	change, so its obvious non-optimality is left alone.  Often
	used to describe interfaces.  The more bugs something has that
	nobody has bothered to fix because workarounds are easier, the
	funkier it is.  {TECO} and {UUCP} are funky.  The {Intel}
	{i860}'s exception handling is extraordinarily funky.  Most
	standards acquire funkiness as they age.  "The new mailer is
	installed, but is still somewhat funky; if it bounces your
	mail for no reason, try resubmitting it."  "This {UART} is
	pretty funky.  The data ready line is active-high in interrupt
	mode and active-low in {DMA} mode."

FUNLOG

	Functional programming plus unification.  "Lazy" in the sense
	that expressions are reduced only if they are not unifiable.

	["FUNLOG: A Computational Model Integrating Logic Programming
	and Functional Programming", P.A. Subrahmanyam et al, in Logic
	Programming: Functions, Relations and Equations, D. DeGroot et
	al eds, P-H 1986].

FunnelWeb

	A {literate-programming} tool by Ross Williams
	<ross@spam.adelaide.edu.au>.  It emphasises simplicity and
	reliability.  It provides a {macro} facility and assists in
	the production of typeset {documentation}.  It is independent
	of the input programming language.

	Posted to comp.sources.unix volume 26 under {CopyLeft}.  Runs
	on {Sun}, {Vax}, {Macintosh} and {IBM PC}.

	(11 Apr 1993)

funny money

	Notional units of computing time and/or storage handed to
	students at the beginning of a computer course; also called
	"play money" or "purple money" (in implicit opposition to real
	or "green" money).

	In New Zealand and Germany the odd usage "paper money" has
	been recorded; in Germany, the particularly amusing synonym
	"transfer ruble" commemorates the funny money used for trade
	between COMECON countries back when the Soviet Bloc still
	existed.

	When your funny money ran out, your account froze and you
	needed to go to a professor to get more.  Fortunately, the
	plunging cost of {time-sharing} cycles has made this less
	common.  The amounts allocated were almost invariably too
	small, even for the non-hackers who wanted to slide by with
	minimum work.  In extreme cases, the practice led to
	small-scale black markets in bootlegged computer accounts.  By
	extension, phantom money or quantity tickets of any kind used
	as a resource-allocation hack within a system.

furrfu

	<jargon> Written-only equivalent of "Sheesh!"; it is, in fact,
	"sheesh" modified by {rot13}.  Evolved in mid-1992 as a
	response to notably silly postings repeating urban myths on
	the {Usenet} {news:newsgroup alt.folklore.urban}, after some
	posters complained that "Sheesh!" as a response to {newbie}s
	was being overused.

	See also {FOAF}.

	(25 Oct 1995)

FUSE

	A {DEC} {software development environment} for {ULTRIX},
	offering an integrated toolkit for developing, testing,
	debugging and maintenance.

FUSION

	Software package supplied by Network Research Corporation
	claiming to connect various different configurations of LAN.

fusion

	<programming> A {program transformation} where a {composition}
	of two functions is replaced by in-lining them and combining
	their bodies.  E.g.

		f x = g (h x)	==>	f x = g (2 * x)
		g x = x + 1		f x = 2 * x + 1
		h x = 2 * x

	This has the beneficial effect of reducing the number of
	function calls.  It can be especially useful where the
	intermediate result is a large data structure which can be
	eliminated.

	See also {vertical loop combination}.

	(05 Dec 1994)

FutureBasic

	<language> A {BASIC} compiler for the {Macintosh}.

	{Unofficial home (http://users.ids.net/~paumic/FutureBasic/)}.
	{Staz Software (http://www.stazsoftware.com/fbinfo.html)}.

	(17 Dec 1996)

futz

	<jargon> To waste time on non-productive activity.  Not
	normally used for game playing.

	(27 Mar 1995)

fuzzball

	A {DEC} {LSI-11} running a particular suite of homebrewed
	software written by Dave Mills and assorted co-conspirators,
	used in the early 1980s for {Internet} {protocol} testbedding
	and experimentation.  These were used as {NSFnet} {backbone}
	sites in its early 56KB-line days.  A few were still active on
	the {Internet} in early 1991, doing odd jobs such as network
	time service.

	(05 Dec 1994)

fuzzy computing

	{fuzzy logic}

fuzzy logic

	A superset of {Boolean logic} dealing with the concept of
	partial truth -- {truth value}s between "completely true" and
	"completely false".  It was introduced by Dr. Lotfi Zadeh of
	{UCB} in the 1960's as a means to model the uncertainty of
	{natural language}.

	Any specific theory may be generalised from a discrete (or
	"crisp") form to a continuous (fuzzy) form, e.g. "fuzzy
	calculus", "fuzzy differential equations" etc.  Fuzzy logic
	replaces Boolean truth values with degrees of truth which are
	very similar to probabilities except that they need not sum to
	one.  Instead of an assertion pred(X), meaning that X
	definitely has the property associated with {predicate}
	"pred", we have a truth function truth(pred(X)) which gives
	the degree of truth that X has that property.  We can combine
	such values using the standard definitions of fuzzy logic:

		truth(not x)   = 1.0 - truth(x)
		truth(x and y) = minimum (truth(x), truth(y))
		truth(x or y)  = maximum (truth(x), truth(y))

	(There are other possible definitions for "and" and "or",
	e.g. using sum and product).  If truth values are restricted to
	0 and 1 then these functions behave just like their Boolean
	counterparts.  This is known as the "extension principle".

	Just as a Boolean predicate asserts that its argument
	definitely belongs to some subset of all objects, a fuzzy
	predicate gives the degree of truth with which its argument
	belongs to a {fuzzy subset}.

	{Usenet} newsgroup: {news:comp.ai.fuzzy}.

	E-mail servers: <fuzzynet@aptronix.com>,
	<rnalib@its.bldrdoc.gov>, <fuzzy-server@til.com>.

	{(ftp://ftp.hiof.no/pub/Fuzzy)},
	{(ftp://ntia.its.bldrdoc.gov/pub/fuzzy)}.

	{FAQ
	(ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/fuzzy-logic)}.

	{James Brule, "Fuzzy systems - a tutorial", 1985
	(http://life.anu.edu.au/complex_systems/fuzzy.html)}.

	{STB Software Catalog
	(http://krakatoa.jsc.nasa.gov/stb/catalog.html)}, includes a
	few fuzzy tools.

	[H.J. Zimmerman, "Fuzzy Sets, Decision Making and Expert
	Systems", {Kluwer}, Dordrecht, 1987].

	["Fuzzy Logic, State of the Art", Ed. R. Lowen, Marc Roubens,
	Theory and Decision Library, D: System theory, Knowledge
	Engineering and Problem Solving 12, {Kluwer}, Dordrecht, 1993,
	ISBN 0-7923-2324-6].

	(21 Feb 1995)

fuzzy subset

	In {fuzzy logic}, a fuzzy subset F of a set S is defined by a
	"membership function" which gives the degree of membership of
	each element of S belonging to F.

fweep

	({WPI}) One step below a {gweep}, a person who uses the system
	solely to play games and use {electronic mail}.

	Compare {dweeb}, {twink}, {terminal junkie}, {tourist},
	{weenie}.

	(31 Jan 1995)

FWIW

	For what it's worth.

FX-87

	Effects.  A {polymorphic} language based on {Scheme}, allowing
	{side effects} and {first-class} functions.  It attempts to
	integrate functional and {imperative} programming.
	Expressions have types, side effects (e.g. reading, writing or
	allocating) and regions (stating where the effects may occur).

	Versions: FX-89, {FX-90}.

	{(ftp://brokaw.lcs.mit.edu/)}

	["The FX-87 Reference Manual", D.K. Gifford
	<gifford@lcs.mit.edu> et al, MIT/LCS/TR-407, Oct 1987].

	(31 Jan 1995)

FX-90

	A language with partial type and effect reconstruction and
	first-class {modules}.

	(31 Jan 1995)

FYA

	For your amusement.

FYI

	{For Your Information}

FYI4

	[Malkin, G., and A. Marine, "FYI on Questions and Answers:
	Answers to Commonly asked "New Internet User" Questions", FYI
	4, RFC 1325, Xylogics, SRI, May 1992.]

G

	1. <language> ["G: A Functional Language with Generic Abstract
	Data Types", P.A.G. Bailes, Computer Langs 12(2):69-94
	(1987)].

	2. <language> A language developed at {Oregon State
	University} in 1988 which combines {functional programming},
	{object-oriented programming}, relational, {imperative} and
	{logic programming} (you name it we got it).

	["The Multiparadigm Language G", J. Placer, Computer Langs
	16:235-258(1991)].

	3. <unit> The abbreviated form of {giga-}.

	(12 Aug 1996)

<g>

	<chat> grin.  An alternative to {smiley}.

	(18 Jan 1998)

G2

	A {real-time} {expert system} from {Gensym Corporation}.

G3

	Enhanced fax protocol standard with facilities for receiving
	and distributing e-mail, pictures, FILES, postScript.
	Finalised but not yet implemented (Sep 1993).

GA

	{genetic algorithm}

Gabriel

	A graphical {DSP} language for {simulation} and real systems.

	["A Design Tool for Hardware and Software for Multiprocessor
	DSP Systems," E.A.  Lee, E. Goei, J. Bier & S. Bhattacharya,
	DSP Systems, Proc ISCAS-89, 1989].

	(23 Dec 1994)

gabriel

	/gay'bree-*l/ [Dick Gabriel, SAIL LISP hacker and volleyball
	fanatic] An unnecessary (in the opinion of the opponent)
	stalling tactic, e.g. tying one's shoelaces or combing one's
	hair repeatedly, asking the time, etc.  Also used to refer to
	the perpetrator of such tactics.  Also, "pulling a Gabriel",
	"Gabriel mode".

GADS

	Picture retrieval language.  "Integrated Geographical
	Databases: The GADS Experience", P.E. Mantey et al, in
	Database Techniques for Pictorial Applications, A. Blaser ed,
	pp.193-198.

Gaelic

	For automated test programs.  Used in military, essentially
	replaced by ATLAS.

gag

	Equivalent to {choke}, but connotes more disgust. "Hey, this
	is FORTRAN code.  No wonder the C compiler gagged."  See also
	{barf}.

GAIA

	GUI Application Interoperability Architecture.  An {OSF}
	project.

GAL

	<hardware> {Generic Array Logic}.

	(09 Dec 1995)

Galaxy

	<language> An extensible language in the vein of {EL/1} and
	{RCC}.

	["Introduction to the Galaxy Language", Anne F. Beetem et al,
	IEEE Software 6(3):55-62].

	(09 Dec 1995)

Galileo

	["Galileo: A Strongly Typed Interactive Conceptual Language",
	A.  Albano et al, ACM Trans Database Sys 10(2):230-260 (June
	1985)].

Gambit

	<language> A variant of {Scheme} R3.99 supporting the {future}
	construct of {Multilisp} by Marc Feeley
	<feeley@iro.umontreal.ca>.  Implementation includes optimising
	compilers for {Macintosh} (with Toolbox and built-in editor)
	and {Motorola} {680x0} {Unix} systems and {HP300}, {BBN}
	{GP100} and {NeXT}.  Version 2.0 conforms to the {IEEE}
	{Scheme} standard.

	Gambit used {PVM} as its intermediate language.

	{(ftp://acorn.cs.brandeis.edu/dist)},
	{(ftp://ftp.cso.uiuc.edu/pub/amiga/fish/f7/ff764/Gambit_Terp)}.
	{(ftp://ftp.iro.umontreal.ca/pub/parallele/gambit/)}.

	Mailing list: gambit@trex.umontreal.ca.

	(10 Feb 1998)

games

	<games> "The time you enjoy wasting is not time wasted." --
	{Bertrand Russell}.

	Here are some games-related pages on the {Web}: {Imperial
	Nomic (http://www.mit.edu:8001/people/achmed/fascist/)},
	{Thoth's games and recreations page
	(http://www.cis.ufl.edu/~thoth/library/recreation.html)},
	{Games Domain (http://wcl-rs.bham.ac.uk/GamesDomain)},
	{Zarf's	List of Games on the Web
	(http://www.leftfoot.com/games.html)},
	{Dave's list of pointers to games resources
	(http://wcl-rs.bham.ac.uk/~djh/index.html)},
	{Collaborative Fiction
	(http://asylum.cid.com/fiction/fiction.html)}.

	See also {3DO}, {ADL}, {ADVENT}, {ADVSYS}, {alpha/beta
	pruning}, {Amiga}, {CHIP-8}, {Core Wars}, {DROOL}, {empire},
	{I see no X here.}, {Infocom}, {Inglish}, {initgame}, {life},
	{minimax}, {moria}, {mudhead}, {multi-user Dimension},
	{nethack}, {ogg}, {plugh}, {rogue}, {SPACEWAR}, {virtual
	reality}, {wizard mode}, {wumpus}, {xyzzy}, {ZIL}, {zorkmid}.

	See also {game theory}.

	(03 Mar 1996)

GAMMA

	<language> 1. A language for matrices and generation of
	mathematical programming reports.

	["GAMMA 3.3 for MPS/MPSX, IBM System:/360", Bonnor & Moore
	Assocs (Mar 1975)].

	2. A high-level parallel language.

	[Research Directions in High-Level Parallel Languages,
	LeMetayer ed, Springer 1992].

	(29 Nov 1994)

gamma correction

	<hardware> Adjustments applied during the display of a digital
	representation of colour on a screen in order to compensate
	for the fact that the {Cathode Ray Tubes} used in computer
	{monitors} (and televisions) produce a light intensity which
	is not proportional to the input {voltage}.  The light
	intensity is actually equal to the input voltage raised to the
	power of some constant, called gamma.  Its value varies from
	one display to another, but is usually around 2.5.

	Because it is more intuitive for the colour components (red,
	green and blue) to be varied linearly in the computer, the
	actual voltages sent to the monitor by the {display hardware}
	must be adjusted in order to make the colour component
	intensity on the screen proportional to the value stored in
	the computer's {display memory}.  This process is most easily
	achieved by a dedicated module in the display hardware which
	simply scales the outputs of the {display memory} before
	sending them to the {digital-to-analogue converters}.

	More expensive {graphics cards} and {workstations}
	(particularly those used for {CAD} applications) will have a
	gamma correction facility.

	In combination with the "{white-point}" gamma correction is
	used to achieve precise colour matching.

	{Robert Berger's explanation of monitor gamma
	(http://www.cs.cmu.edu/afs/cs.cmu.edu/user/rwb/www/gamma.html)}.

	(25 Jun 1997)

GAMS

	{Guide to Available Mathematical Software}

gamut

	The gamut of a {monitor} is the set of colours it can display.
	There are some colours which can't be made up of a mixture of
	red, green and blue phosphor emissions and so can't be
	displayed by any monitor.

	[Examples?]

	(29 Nov 1994)

GAN

	Generating and Analyzing Networks.  "GAN - A System for
	Generating and Analyzing Activity Networks", A. Schurmann,
	CACM 11(10) (Oct 1968).

GANDALF

	A software development environment from Carnegie Mellon
	University.

gang bang

	The use of large numbers of loosely coupled programmers in an
	attempt to wedge a great many features into a product in a
	short time.  Though there have been memorable gang bangs
	(e.g. that over-the-weekend assembler port mentioned in
	Steven Levy's "Hackers"), most are perpetrated by large
	companies trying to meet deadlines; the inevitable result is
	enormous buggy masses of code entirely lacking in
	{orthogonal}ity.  When market-driven managers make a list of
	all the features the competition has and assign one programmer
	to implement each, the probability of maintaining a coherent
	(or even functional) design goes infinitesimal.  See also
	{firefighting}, {Mongolian Hordes technique}, {Conway's Law}.

GAP

	<mathematics, tool> Groups Algorithms and Programming.

	A system for {symbolic mathematics} for computational discrete
	algebra, especially group theory, by Johannes Meier, Alice
	Niemeyer, Werner Nickel, and Martin Schonert of Aachen.  GAP
	was designed in 1986 and implemented 1987.  Version 2.4 was
	released in 1988 and version 3.1 in 1992.

	{Sun version (ftp://ftp.math.rwth-aachen.de/pub/gap)}

	["GAP 3.3 Manual, M. Schonert et al, Lehrstuhl D Math, RWTH
	Aachen, 1993].

	(12 Apr 1995)

GAPLog

	General Amalgamated Programming with Logic.  {LOGPRO} group,
	Linkoping Sweden.  A restricted version of {constraint logic
	programming}, using {S-unification} but not restricted to a
	single domain.

	[Chapter in forthcoming Springer book on ESPRIT]

garbageabetical order

	<humour> 1. The result of using an {insertion} sort to merge
	data into an unsorted list.

	2. The state of any file or list that is supposed to be
	sorted, but is not.

	(11 Feb 1997)

garbage collect

	{garbage collection}

garbage collection

	<programming> (GC) The process by which dynamically allocated
	storage is reclaimed during the execution of a program.  The
	term usually refers to automatic periodic storage reclamation
	by the garbage collector (part of the {run-time system}), as
	opposed to explicit code to free specific blocks of memory.

	Automatic garbage collection is usually triggered during
	memory allocation when the amount free memory falls below some
	threshold or after a certain number of allocations.  Normal
	execution is suspended and the garbage collector is run.
	There are many variations on this basic scheme.

	Languages like {Lisp} represent expressions as {graphs} built
	from {cells} which contain pointers and data.  These languages
	use automatic {dynamic storage allocation} to build
	expressions.  During the evaluation of an expression it is
	necessary to reclaim space which is used by subexpressions but
	which is no longer pointed to by anything.  This reclaimed
	memory is returned to the free memory pool for subsequent
	reallocation.

	Without garbage collection the program's memory requirements
	would increase monotonically throughout execution, possibly
	exceeding system limits on {virtual memory} size.

	The three main methods are {mark-sweep garbage collection},
	{reference counting} and {copying garbage collection}.

	See also the {AI koan} about garbage collection.

	(25 Aug 1997)

Gargoyle

	A language for compiler writing.

	[J.V. Garwick, CACM 7(1):16-20, (Jan 1964)].

	(04 Nov 1994)

Garnet

	1. A graphical object editor and {Macintosh} environment.

	2. A user interface development environment for {Common Lisp}
	and {X11} from The Garnet project team.  It helps you create
	graphical, interactive user interfaces.

	Version 2.2 includes the following: a custom {object-oriented
	programming} system which uses a {prototype-instance model}.
	automatic {constraint} maintenance allowing properties of
	objects to depend on properties of other objects and be
	automatically re-evaluated when the other objects change.  The
	constraints can be arbitrary Lisp expressions.  Built-in,
	high-level input event handling.  Support for {gesture
	recognition}.  {Widget}s for multi-font, multi-line,
	mouse-driven text editing.  Optional automatic layout of
	application data into lists, tables, trees or graphs.
	Automatic generation of {PostScript} for printing.  Support
	for large-scale applications and data {visualisation}.

	Also supplied are: two complete widget sets, one with a
	{Motif} {look and feel} implemented in {Lisp} and one with a
	custom {look and feel}.  Interactive design tools for creating
	parts of the interface without writing code: Gilt interface
	builder for creating {dialog box}es.  Lapidary interactive
	tool for creating new {widget}s and for drawing
	application-specific objects.  C32 {spreadsheet} system for
	specifying complex {constraint}s.

	Not yet available: Jade automatic dialog box creation system.
	Marquise interactive tool for specifying behaviours.

	{(ftp://a.gp.cs.cmu.edu/usr/garnet/garnet)}.  E-mail:
	<Brad_Myers@bam.garnet.cs.cmu.edu>.

	(15 Oct 1993)

GARP

	A graphical language for {concurrent} programming.

	["Visual Concurrent Programmint in GARP", S.K. Goering er al,
	PARLE '89 v.II, LNCS 366, pp. 165-180].

	(03 Nov 1994)

garply

	/gar'plee/ A {metasyntactic variable} like {foo}, once popular
	among {SAIL} hackers.

	(03 Nov 1994)

Gartner Group

	<company> One of the biggest IT industry research firms.

	Address: Connecticut, USA.

	[URL?]

	(30 Sep 1997)

gas

	{GNU assembler}

gaseous

	Deserving of being gassed.  Disseminated by Geoff Goodfellow
	while at SRI; became particularly popular after the
	Moscone-Milk killings in San Francisco, when it was learned
	that the defendant Dan White (a politician who had supported
	Proposition 7) would get the gas chamber under Proposition 7
	if convicted of first-degree murder (he was eventually
	convicted of manslaughter).

GASP

	Graph Algorithm and Software Package.  A {PL/I} extension for
	programming graph {algorithm}s.

	["GASP - Gprah Algorithm Software Package", S. CHase, TR CS
	Dept, U Illinois, Dec 1969].

GAT

	Generalized Algebraic Translator.  Improved version of IT.  On
	IBM 650 RAMAC.

	[Sammet 1969, p. 142].

GATE

	GAT Extended?  Based on {IT}.

	[Sammet 1969, p. 139].

gated

	/gayt-dee/ Gate daemon.

	A program which supports multiple routing {protocol}s and
	protocol families.  It may be used for routing, and makes an
	effective {platform} for routing {protocol} research.

	{(ftp://gated.cornell.edu)}

	See also {Exterior Gateway Protocol}, {Open Shortest Path
	First}, {Routing Information Protocol}, {routed}.

	(07 Dec 1994)

Gates

	{Bill Gates}

gateway

	1. <networking> {protocol converter}.

	2. <networking> This term was previously used for a {router}
	or other kind of {internetworking} device but this use is now
	deprecated.  By this definition, a {router} is a layer 3
	({network layer}) gateway, and a {mail gateway} is a layer 7
	({application layer}) gateway.

	3. <hypertext> An interface between some external source of
	information and a {World-Wide Web} {server}.  {Common Gateway
	Interface} is a {standard} for such interfaces.

	(07 Mar 1996)

Gateway 2000

	<company> US manufacturer of {IBM-compatibles} and, since 15
	May 1997, owner of the {Amiga} brand.  Ted Waitt is the CEO.
	Quarterly sales $617M, profits $4M (Aug 1994).

	{Home (http://www.gw2k.com/)}.

	(22 Sep 1997)

Gauss

	1. <person> {Carl Friedrich Gauss}

	2. <statistics> Gaussian distribution.

	See {normal distribution}.

	3. <unit> The unit of magnetic field strength. 1 gauss = 1
	Maxwell / cm^2.

	A good loudspeaker coil magnet flux density is of the order of
	10 000 gauss.

	(18 Mar 1995)

Gaussian distribution

	<statistics> {normal distribution}.

gawk

	{GNU} {awk}.  Gawk is a superset of standard awk and includes
	some {Plan 9} features.

	Version 2.15.3 by David Trueman <david@cs.dal.ca> and Arnold
	Robbins <arnold@cc.gatech.edu> is actively developed.  It has
	been ported to {Unix}, {MS-DOS}, {Macintosh} and {Archimedes}.

	Available by {FTP} from your nearest {GNU archive site} or
	{(ftp://prep.ai.mit.edu/pub/gnu/)}, {Mac version
	(ftp://archive.umich.edu/mac/utilities/developerhelps/macgawk2.11.cpt.hqx)}.

	(08 Nov 1993)

GB

	<unit> {gigabytes} or {gigabits} - see {MB}.  Giga stands for
	10^9 - a US billion, or in computing for 2^30.

	The text of a thirty volume encyclopaedia would require about
	one gigabyte of {ASCII} storage.

	(27 Mar 1997)

Gb

	<unit> Gigabit.  10^9 {bit}s.  Might also be wrongly used for
	{gigabyte} ({GB}).

	(27 Mar 1997)

g-bell

	{bell}

GBIP

	{General Purpose Interface Bus}

GBML

	{Genetics Based Machine Learning}

gbps

	{gigabits per second}

GC

	1. {garbage collection}.

	2. A storage allocator with {garbage collection} by
	Hans-J. Boehm <boehm@parc.xerox.com> and Alan J. Demers.  Gc
	is a plug-in replacement for {C}'s {malloc}.  Since the
	collector does not require pointers to be tagged, it does not
	attempt to ensure that all inaccessible storage is reclaimed.

	Version 3.4 has been ported to {Sun-3}, {Sun-4}, {Vax}/{BSD},
	{Ultrix}, {Intel 80386}/{Unix}, {SGI}, {Alpha}/{OSF/1},
	{Sequent} (single threaded), {Encore} (single threaded),
	{RS/600}, {HP-UX}, {Sony News}, {A/UX}, {Amiga}, {NeXT}.

	{(ftp://parcftp.xerox.com/pub/russell/gc3.4.tar.Z)}

	(05 Nov 1993)

GCC

	The {GNU} {C} {compiler} by {Richard Stallman} et al.  A very
	high quality, very portable compiler for {C}, {C++} and
	{Objective C}.  The compiler is designed to support multiple
	{front-end}s and multiple {back-end}s by translating first
	into {Register Transfer Language} and from there into
	{assembly code} for the target architecture.  Front ends for
	{Ada}, {Pascal} and {Fortran} are under development.

	GNU C is a superset of {K&R C} and {ANSI C}.  The extensions
	include compound statement within an expression, pointers to
	labels, local labels, nested functions, {typeof} operator,
	compound and conditional expressions and casts allowed as
	lvalues, long long ints, {array}s of variable length, {macro}s
	with variable number of arguments, nonconstant initialisers,
	constructor expressions, labelled elements in initialisers,
	case ranges, variable attributes, {global register variable}s.

	Version: 2.5.7.  Distributed under {GNU} {General Public
	License}.  Ported to {3b1}, {AMD 29k}, {AIX385}, {DEC Alpha},
	{Altos3068}, {Amix}, {ARM}, {Convex}, {CRDS}, {Elxsi},
	{FX2800}, {FX80}, {Genix}, {HP320}, {Clipper}, {Intel 80386} -
	{MS-DOS}, {ISC}, {SCO}, {SysV.3}, {SysV.4}, {Mach}, {BSD},
	{Linux}, {MS Windows}, {OS/2} - {Iris}, {i860}, {i960},
	{Irix4}, {68000}, {Motorola m88k} {SvsV.3}, {MIPS}-news,
	{mot3300}, {NeXT}, {NS32K}, {NWS3250}-v.4, {HP-PA}, {PC532},
	{Plexus}, {Pyramid}, {ROMP}, {RS/6000}, {SPARC}-{SunOs},
	{SPARC}-{Solaris2}, {SPARC}-{SysV}.4, {SPUR}, {Sun386},
	{Tahoe}, {TOW}, {Umpis}, {VAX}-{VMS}, {VAX}-{BSD}, {WE32K},
	{Hitachi}-{SH}, {Hitachi}-{8300}.

	{dsp56k-gcc} is {Motorola}'s port to the {Motorola}
	{DSP56000}.

	{FTP} gcc-2.X.X.tar.gz from your nearest {GNU archive site}.
	{MS-DOS (ftp://oak.oakland.edu/pub/msdos/djgpp/)}.  Mailing
	list: gnu.gcc.help.  E-mail: gnu.gcc.bug (bug reports),
	gnu.gcc.announce (announcements).

	["Using and Porting GNU CC", R.M. Stallman, 16 Dec 1992].

	(27 Nov 1993)

GCL

	General Control Language.  A portable job control language.

	["A General Control Interface for Satellite Systems",
	R.J. Dakin in Command Languages, C. Unger ed, N-H 1973].

G-Code

	1. Johnsson & Augustsson, Chalmers Inst Tech.  Intermediate
	language used by the G-machine, an implementation of graph
	reduction based on supercombinators.  "Efficient Compilation
	of Lazy Evaluation", T. Johnsson, SIGPLAN Notices 19(6):58-69
	(June 1984).

	2. A machine-like language for the representation and
	interpretation of attributed grammars.  Used as an
	intermediate language by the Coco compiler generator.  "A
	Compiler Generator for Microcomputers", P. Rechenberg et al,
	P-H 1989.

GCOS

	<operating system> /jee'kohs/ An {operating system} developed
	by {General Electric} from 1962; originally called GECOS (the
	General Electric Comprehensive Operating System).

	The GECOS-II operating system was developed by {General
	Electric} for the 36-bit {GE-635} in 1962-1964.  Contrary to
	rumour, GECOS was not cloned from {System/360} [{DOS/360}?] -
	the GE-635 architecture was very different from the {IBM 360}
	and GECOS was more ambitious than DOS/360.

	GE-ISD developed a large special multi-computer system that
	was not publicised because they did not wish time sharing
	customers to challenge their bills.  Although GE Information
	Service Divsion was marketing {DTSS} - the first commercial
	time sharing system - GE Computer division had no license from
	Dartmouth and GE-ISD to market it to external customers, so
	they designed a time-sharing system to sell as a standard part
	of GECOS-III, which replaced GECOS-II in 1967.  The purpose of
	GECOS TSS was more general than DTSS, it was more a
	programer's tool (program editing, e-mail on a single system)
	than a BASIC TS.

	The {GE-645}, a modified 635 built by the same people, was
	selected by {MIT} and {Bell} for the {Multics} project.
	Multics' infancy was as painful as any infancy.  Bell pulled
	out in 1969 and later produced {Unix}.

	After the buy-out of GE's computer division by {Honeywell},
	GECOS-III was renamed GCOS-3 (General Comprehensive Operating
	System).  Other OS groups at Honeywell began referring to it
	as "God's Chosen Operating System", allegedly in reaction to
	the GCOS crowd's uninformed and snotty attitude about the
	superiority of their product.  [Can anyone confirm this?]
	GCOS won and this led in the orphaning and eventual death of
	Honeywell {Multics}.

	Honeywell also decided to launch a new product line called
	Level64, and later DPS-7.  It was decided to mainatin, at
	least temporarily, the 36-bit machine as top of the line,
	because GCOS-3 was so successfull in the 1970s.  The plan in
	1972-1973 was that GCOS-3 and Multics should converge.  This
	plan was killed by Honeywell management in 1973 for lack of
	resources and the inability of Multics, lacking databases and
	transaction processing, to act as a business operating system
	without a substantial reinvestment.

	The name "GCOS" was extended to all Honeywell-marketed product
	lines and GCOS-64, a completely different 32-bit operating
	system, significanctly inspired by Multics, was designed in
	France and Boston.  GCOS-62, another different 32-bit low-end
	DOS level was designed in Italy.  GCOS-61 represented a new
	version of a small system made in France and the new DPS-6
	16-bit {minicomputer} line got GCOS-6.

	When the intended merge between GCOS-3 and Multics failed, the
	Phoenix designers had in mind a big upgrade of the
	architecture to introduce {segmentation} and {capabilities}.
	GCOS-3 was renamed GCOS-8, well before it started to use the
	new features which were introduced in next generation
	hardware.

	The GCOS licenses were sold to the Japanese companies {NEC}
	and {Toshiba} who developed the Honeywell products, including
	GCOS, much further, surpassing the {IBM 3090} and {IBM 390}.

	When Honeywell decided in 1984 to get its top of the range
	machines from NEC, they considered running Multics on them but
	the Multics market was considered too small.  Due to the
	difficulty of porting the ancient Multics code they considered
	modifying the NEC hardware to support the Multics compilers.

	Several versions of transaction processing were designed for
	GCOS-3 and GCOS-8.  The original GCOS-III designers had no
	idea about TP.  They assumed that, as in {Unix}, a new process
	should be started to handle each transaction.  IBM customers
	required a more efficient model where multiplexed {threads}
	wait for messages and can share resources.  Those features
	were implemented as subsystems like in IBM {CICS}.

	GCOS-6 and GCOS-4 (ex-GCOS-62) were superseded by {Motorola
	68000}-based {minicomputers} running {Unix} and the product
	lines were discontinued.

	In the late 1980s Bull took over Honeywell and Bull's
	management choose Unix, probably with the intent to move out
	of hardware into {middleware}.  Bull killed the Boston
	proposal to port Multics to a platform derived from DPS-6.
	Very few customers rushed to convert from GCOS to Unix and new
	machines (of CMOS technology) are still to be introduced in
	1997 with GCOS-8.  GCOS played a major role in keeping
	Honeywell a dismal also-ran in the {mainframe} market.

	Some early Unix systems at {Bell Labs} used GCOS machines for
	print spooling and various other services.  The field added to
	"/etc/passwd" to carry GCOS ID information was called the
	"{GECOS field}" and survives today as the "pw_gecos" member
	used for the user's full name and other human-ID information.

	(16 Sep 1997)

GCR

	{Group Code Recording}

GCT

	A {test-coverage} tool by Brian Marick <marick@cs.uiuc.edu>,
	based on {GNU C}.  Version 1.4.

	Commercial support is available from the author (+1 217 351
	7228).

	Ported to {Sun3}, {Sun4}, {RS/6000}, {68000}, {88000},
	{HP-PA}, {IBM 3090}, {Ultrix}, {Convex}, {SCO}.

	E-mail: <Gct-Request@cs.uiuc.edu>.
	{(ftp://cs.uiuc.edu/pub/testing/gct.file/)}.

	(12 Feb 1993)

GDB

	{GNU} debugger.  The {FSF}'s {symbolic debugger} for {C},
	{C++} and other languages.  Developed by many people but most
	recently Fred Fish <fnf@cygnus.com>, Stu Grossman
	<grossman@cygnus.com> and John Gilmore <gnu@cygnus.com> all of
	{Cygnus} Support.  GDB fills the same niche as {dbx}.
	Programs must be compiled to include debugging symbols.

	Version 4.11.  Distributed under {GNU} {CopyLeft}.  It runs on
	most {Unix} variants, {VMS}, {VXWorks}, {Amiga} and {MS-DOS}.

	FTP gdb-*.tar.[zZ] from a {GNU archive site}.
	E-mail: <bug-gdb@prep.ai.mit.edu> (bug reports).

	(29 Oct 1993)

GDBPSK

	{Gaussian Differential Binary Phase Shift Keying}

GDI

	{Graphic Display Interface}

GDMO

	Guidelines for the Definition of Managed Objects.

	A standard (ISO/IEC 10165-4) for defining data models on ASN.1

GDPL

	Generalized Distributed Programming Language.  "GDPL - A
	Generalized Distributed Programming Language", K. Ng et al,
	Proc 4th Intl Conf Distrib Comp Sys, IEEE 1984, pp.69-78.

GEA

	Graph Extended ALGOL.  Extension of ALGOL 60 for graph
	manipulation, on UNIVAC 1108.  "A Language for Treating
	Graphs", S. Crespi-Reghizzi et al, CACM 13(5) (May 1970).

GEANT

	A simulation, tracking and drawing package for HEP.

GECOM

	<language> A language for the {GE-255} series, like {COBOL}
	with some {ALGOL} features added, in use around 1964-5.  GECOM
	included many of the early COBOL constructs including {report
	writer} and {TABSOL} (programming by {truth table}).  Another
	(planned but unimplemented?) component was {FRINGE}.

	[Sammet 1969, p. 329].

	[Dates?]

	(15 Sep 1996)

GECOS

	{GCOS}

Gedanken

	John Reynolds, 1970.  "GEDANKEN - A Simple Typeless Language
	Based on the Principle of Completeness and the Reference
	Concept", J.C.  Reynolds, CACM 13(5):308-319 (May 1970).

gedanken

	/g*-dahn'kn/ Ungrounded; impractical; not well-thought-out;
	untried; untested.

	"Gedanken" is a German word for "thought".  A thought
	experiment is one you carry out in your head.  In physics, the
	term "gedanken experiment" is used to refer to an experiment
	that is impractical to carry out, but useful to consider
	because it can be reasoned about theoretically.  (A classic
	gedanken experiment of relativity theory involves thinking
	about a man in an elevator accelerating through space.)
	Gedanken experiments are very useful in physics, but must be
	used with care.  It's too easy to idealise away some important
	aspect of the real world in constructing the "apparatus".

	Among hackers, accordingly, the word has a pejorative
	connotation.  It is typically used of a project, especially
	one in artificial intelligence research, that is written up in
	grand detail (typically as a Ph.D.  thesis) without ever being
	implemented to any great extent.  Such a project is usually
	perpetrated by people who aren't very good hackers or find
	programming distasteful or are just in a hurry.  A "gedanken
	thesis" is usually marked by an obvious lack of intuition
	about what is programmable and what is not, and about what
	does and does not constitute a clear specification of an
	algorithm.  See also {AI-complete}, {DWIM}.

geef

	(Ostensibly from "gefingerpoken") {mung}.

	See also {blinkenlights}.

	(18 Jan 1995)

geek

	{computer geek}

geek out

	To temporarily enter techno-nerd mode while in a non-hackish
	context, for example at parties held near computer equipment.
	Especially used when you need to do or say something highly
	technical and don't have time to explain: "Pardon me while I
	geek out for a moment."

	See {computer geek}, {propeller head}.

	(18 Jan 1995)

GEI

	A German software engineering company.

GE Information Services

	<networking, company> One of the leading on-line services,
	started on 1st October 1985, providing subscribers with
	hundreds of special interest areas, computer hardware and
	software support, award-winning multi-player games, the most
	software files in the industry (over 200 000), worldwide news,
	sports updates, business news, investment strategies, and
	{Internet} {electronic mail} and fax (GE Mail).  Interactive
	conversations (Chat Lines) and {bulletin board}s (Round
	Tables) with associated software archives are also provided.

	GEnie databases (through the ARTIST gateway) allow users to
	search the full text of thousands of publications, including
	Dun & Bradstreet Company Profiles; a GEnie NewsStand with more
	than 900 newspapers, magazines, and newsletters; a Reference
	Center with information ranging from Agriculture to World
	History; the latest in medical information from MEDLINE; and
	patent and trademark registrations.

	{Home (http://www.genie.com/)}.  {Shopping 2000
	(http://www.shopping2000.com/shopping2000/genie/)}.

	Telephone: +1 (800) 638 9636.

	TDD: +1 (800) 238 9172.

	E-mail: <info@genie.geis.com>.

	[Connection with: GE Information Services, Inc., a division of
	General Electric Company, Headquarters: Rockville, Maryland,
	USA?]

	(13 Apr 1995)

GEM

	<operating system> One of the first commercially available
	{GUI}s.  Borrowing heavily from the {Macintosh} {WIMP}-style
	interface it was available for both the {IBM} compatible
	market (being packaged with {Amstrad}'s original {PC} series)
	and more successfully for the {Atari} ST range.  The PC
	version was produced by {Digital Research} (more famous for
	{DR-DOS}, their {MS-DOS} clone), and was not developed very
	far.  The Atari version, however, continued to be developed
	until the early 1990s and the later versions supported 24-bit
	colour modes, full colour {icons} and a nice looking sculpted
	3D interface.

	(10 Jan 1997)

gen

	{generate}

gender mender

	<hardware> (Or "gender bender", "gender blender", "sex
	changer", and even "homosexual adaptor") A cable connector
	shell with either two male or two female connectors on it,
	used to correct the mismatches that result when some {loser}
	didn't understand the {RS-232C} specification and the
	distinction between {DTE} and {DCE}.  Used especially for
	RS-232C parts in either the original {D-25} or the {IBM PC}'s
	{D-9} connector.

	There appears to be some confusion as to whether a "male
	homosexual adaptor" has pins on both sides (is doubly male) or
	sockets on both sides (connects two males).

	(16 Apr 1995)

Gene Amdahl

	<person> A former {IBM} engineer who founded {Amdahl
	Corporation}.

	(23 May 1995)

General Electric Comprehensive Operating System

	{GCOS}

General Magic

	A software company based in Mountain View, California.
	Products released in 1994 after four years in development
	include: {Telescript} - a communications-oriented programming
	language; {Magic Cap} - an {OOPS} designed for {PDA}s; and a
	new, third generation {GUI}.  {Motorola}'s {Envoy}, due for
	release in the third quarter of 1994, will use {Magic Cap} as
	its {OS}.

	What {PostScript} did for cross-{platform}, device-independent
	documents, Telescript aims to do for cross-{platform},
	network-independent messaging.  Telescript protects
	programmers from many of the complexities of network
	protocols.

	Competitors for Magic Cap include {Microsoft}'s {Windows for
	Pens}/{Winpad}, {PenPoint}, {Apple Computer}'s {Newton
	Intelligence} and {GEOS} by {GeoWorks}.

	{Home (http://www.genmagic.com/)}

	(23 Feb 1995)

General Protection Failure

	(GPF, or General Protection Fault) An addressing error, caught
	by the processor's {memory protection} hardware, that cannot
	be attributed to any expected condition such as a {page
	fault}.

	(28 Mar 1995)

General Protection Fault

	{General Protection Failure}

General Public Licence

	<spelling> Misspelling of "{General Public License}".

	(In the UK, "licence" is a noun and "license" is a verb (like
	"advice"/"advise") but in the US both are spelled "license").

	(12 May 1995)

General Public License

	<legal> (GPL, note US spelling) The licence applied to most
	{software} from the {Free Software Foundation} and the {GNU}
	project and other authors who choose to use it.

	The licences for most software are designed to prevent users
	from sharing or changing it.  By contrast, the GNU General
	Public License is intended to guarantee the freedom to share
	and change {free software} - to make sure the software is free
	for all its users.  The GPL is designed to make sure that
	anyone can distribute copies of free software (and charge for
	this service if they wish); that they receive source code or
	can get it if they want; that they can change the software or
	use pieces of it in new free programs; and that they know they
	can do these things.  The GPL forbids anyone to deny others
	these rights or to ask them to surrender the rights.  These
	restrictions translate to certain responsibilities for those
	who distribute copies of the software or modify it.

	See also {General Public Virus}.

	(27 Oct 1994)

General Public Virus

	A pejorative name for some versions of the {GNU} project
	{copyleft} or {General Public License} (GPL), which requires
	that any tools or {application program}s incorporating
	copylefted code must be source-distributed on the same terms
	as GNU code.  Thus it is alleged that the copyleft "infects"
	software generated with GNU tools, which may in turn infect
	other software that reuses any of its code.

	{Copyright} law limits the scope of the GPL to "programs
	textually incorporating significant amounts of GNU code" so
	GPL is only passed on if actual GNU source is transmitted (as
	in, for example, use of the {Bison} parser skeleton).

	(27 Oct 1994)

General Purpose Graphic Language

	["A General Purpose Graphic Language", H.E. Kulsrud, CACM
	11(4) (Apr 1968)].

General Purpose Interface Bus

	{IEEE 488}

General Purpose Language

	(GPL) An {ALGOL 60} variant with user-definable types and
	operators.

	[Sammet 1969, p. 195].

	["The GPL Language", J.V. Garwick et al, TER-05, CDC, Palo
	Alto 1969].

General Recursion Theorem

	<mathematics> {Cantor}'s {theorem}, originally stated for
	{ordinal}s, which extends {inductive} proof to {recursive}
	construction.  The proof is by pasting together "attempts"
	(partial solutions).

	[Better explanation?]

	(15 Jun 1995)

generate

	To produce something according to an {algorithm} or program or
	set of rules, or as a (possibly unintended) {side effect} of
	the execution of an algorithm or program.

	The opposite of {parse}.

	(15 Jun 1995)

generation

	An attempt to classify the degree of sophistication of
	programming languages.

	See {First generation language} -- {Fifth generation
	language}.

	(15 Jun 1995)

Generic Array Logic

	<hardware, integrated circuit> (GAL) A newer kind of
	{Programmable Array Logic} based on {EEPROM} storage cells,
	been pioneered by {Lattice}.  GALs can be erased and
	reprogrammed and usually replace a whole set of different PALs
	(hence the name).

	(09 Dec 1995)

genericity

	<programming> The possibility for a language to provided
	parameterised {modules} or types.  E.g. List(of:Integer) or
	List(of:People).

	(19 May 1996)

generic markup

	<text> In computerised document preparation, a method of
	adding information to the text indicating the logical
	components of a document, such as paragraphs, headers or
	footnotes.  {SGML} is an example of such a system.  Specific
	instructions for layout of the text on the page do not appear
	in the markup.

	(19 May 1996)

generic programming

	<programming> A programming technique which aims to make
	programs more adaptable by making them more general.  Generic
	programs often embody non-traditional kinds of {polymorphism};
	ordinary programs are obtained from them by suitably
	instantiating their parameters.  In contrast with normal
	programs, the parameters of a generic programs are often quite
	rich in structure.  For example they may be other programs,
	{types} or {type constructors} or even programming
	{paradigms}.

	(22 Nov 1997)

Generic Routing Encapsulation

	<networking, protocol> (GRE) A {protocol} which allows an
	arbitrary network protocol A to be transmitted over any other
	arbitrary network protocol B, by encapsulating the {packets}
	of A within GRE packets, which in turn are contained within
	packets of B.

	Defined in {RFC 1701} and {RFC 1702} (GRE over IP).

	{Encapsulation Methods
	(http://www.csl.sony.co.jp/person/demizu/inet/encaps.html)}.

	(02 Apr 1997)

Generic Security Service Application Programming Interface

	<security, programming> (GSS-API) An application level
	interface ({API}) to system security services.  It provides a
	generic interface to services which may be provided by a
	variety of different security mechanisms.  {Vanilla} GSS-API
	supports {security contexts} between two entities (known as
	"principals").

	GSS-API is a draft internet standard which is being developed
	in the {Common Authentication Technology Working Group}
	(cat-wg) of the {Internet Engineering Task Force} (IETF).

	Initial specifications for GSS-API appeared in {RFC 1508} and
	{RFC 1509}.  Subsequent revisions appeared in several draft
	standards documents.

	{(http://www.dstc.qut.edu.au/~barton/work/project.html)}.

	(19 May 1996)

generic type variable

	<programming> (Also known as a "schematic type variable").
	Different occurrences of a generic type variable in a type
	expression may be instantiated to different types.  Thus, in
	the expression

		let id x = x in
		(id True, id 1)

	id's type is (for all a: a -> a).  The universal {quantifier}
	"for all a:" means that a is a generic type variable.  For the
	two uses of id, a is instantiated to Bool and Int.  Compare
	this with

		let id x = x in
		let f g = (g True, g 1) in
		f id

	This looks similar but f has no legal {Hindley-Milner type}.
	If we say

		f :: (a -> b) -> (b, b)

	this would permit g's type to be any instance of (a -> b)
	rather than requiring it to be at least as general as (a ->
	b).  Furthermore, it constrains both instances of g to have
	the same result type whereas they do not.  The type variables
	a and b in the above are implicitly quantified at the top
	level:

		f :: for all a: for all b: (a -> b) -> (b, b)

	so instantiating them (removing the {quantifier}s) can only be
	done once, at the top level.  To correctly describe the type
	of f requires that they be locally quantified:

		f :: ((for all a: a) -> (for all b: b)) -> (c, d)

	which means that each time g is applied, a and b may be
	instantiated differently.  f's actual argument must have a
	type at least as general as ((for all a: a) -> (for all b:
	b)), and may not be some less general instance of this type.
	Type variables c and d are still implicitly quantified at the
	top level and, now that g's result type is a generic type
	variable, any types chosen for c and d are guaranteed to be
	instances of it.

	This type for f does not express the fact that b only needs to
	be at least as general as the types c and d.  For example, if
	c and d were both Bool then any function of type (for all a: a
	-> Bool) would be a suitable argument to f but it would not
	match the above type for f.

Genesia

	An {expert system} developed by Electricite de France and
	commercialised by {STERIA} (Paris).

genetic algorithm

	(GA) An {evolutionary algorithm} which generates each
	individual from some encoded form known as a "chromosome" or
	"genome".  Chromosomes are combined or mutated to breed new
	individuals.  "Crossover", the kind of recombination of
	chromosomes found in sexual reproduction in nature, is often
	also used in GAs.  Here, an offspring's chromosome is created
	by joining segments choosen alternately from each of two
	parents' chromosomes which are of fixed length.

	GAs are useful for multidimensional optimisation problems in
	which the chromosome can encode the values for the different
	variables being optimised.

	{Illinois Genetic Algorithms Laboratory
	(http://GAL4.GE.UIUC.EDU/illigal.home.html)} (IlliGAL).

	(03 Feb 1995)

genetic algorithms

	{genetic algorithm}

genetic programming

	<programming> (GP) A programming technique which extends the
	{genetic algorithm} to the domain of whole computer programs.
	In GP, populations of programs are genetically bred to solve
	problems.  Genetic programming can solve problems of system
	identification, classification, control, robotics,
	optimisation, game playing, and {pattern recognition}.

	Starting with a primordial ooze of hundreds or thousands of
	randomly created programs composed of functions and terminals
	appropriate to the problem, the population is progressively
	evolved over a series of generations by applying the
	operations of Darwinian fitness proportionate reproduction and
	crossover (sexual recombination).

	(31 Mar 1995)

GEnie Services

	{GE Information Services}

Genken Programming Language

	<language> (GPL) A variant of {PL360} by K. Asai of the Japan
	Atomic Energy Research Institute.

	["Experience With GPL", K. Asai, in Machine Oriented Higher
	Level Languages, W. van der Poel, N-H 1974, pp. 371-376].

	(13 Apr 1995)

GENOVA

	An old statistical package still in use on some {VM}
	computers.

	(28 Nov 1995)

gensym

	/jen'sim/ [MacLISP for "generated symbol"] 1. To invent a new
	name for something temporary, in such a way that the name is
	almost certainly not in conflict with one already in use.

	2. The resulting name.  The canonical form of a gensym is
	"Gnnnn" where nnnn represents a number; any LISP hacker would
	recognise G0093 (for example) as a gensym.

	3. A freshly generated data structure with a gensymmed name.
	Gensymmed names are useful for storing or uniquely identifying
	crufties (see {cruft}).

Gensym Standard Interface

	<programming> (GSI) A set of {C} libraries and programming
	tools used to interface {G2} to external systems.
	Commercially available bridges are available to {SCADA}
	systems and {PLC}s.

	(11 Feb 1997)

Gentleman's Portable Coroutine System

	A {coroutine} package in {FORTRAN}.

	["A Portable Coroutine System", W.M. Gentleman, Info Proc 71,
	C.V. Freiman ed, 1972].

	(01 Feb 1995)

GEN-X

	An expert system developed by General Electric.

Geographical Information System

	{Geographic Information System}

	[Which is more common?]

	(21 Dec 1995)

Geographic Information System

	<application> (GIS) A computer system for capturing, storing,
	checking, integrating, manipulating, analysing and displaying
	data related to positions on the Earth's surface.  Typically,
	a GIS is used for handling maps of one kind or another.  These
	might be represented as several different layers where each
	layer holds data about a particular kind of feature
	(e.g. roads).  Each feature is linked to a position on the
	graphical image of a map.

	Layers of data are organised to be studied and to perform
	statistical analysis (i.e. a layer of customer locations could
	include fields for Name, Address, Contact, Number, Area).
	Uses are primarily government related, town planning, local
	authority and public utility management, environmental,
	resource management, engineering, business, marketing, and
	distribution.

	{GIS dictionary
	(http://www.geo.ed.ac.uk/root/agidict/html/welcome.html)}.

	{(http://www.ncl.ac.uk/~ngraphic/wotzagis.html)}

	(21 Dec 1995)

GEORGE

	Charles Hamblin, 1957.  One of the earliest programming
	languages, stack-oriented, used reverse Polish notation.
	Implemented on the English Electric DEUCE.  "GEORGE: A
	Semi-Translation Programming Scheme for the DEUCE, Programming
	and Operations Manual", C. L. Hamblin, U New S Wales (1958).
	"Computer Languages", C.L. Hamblin, Aust J Sci 20(5):135-139
	(Dec 1957) and Aust Comp J 17(4):195-198 (Nov 1985).

George Boole

	<person> 2 Nov 1815 - 8 Dec 1864.  An Irish mathematician best
	known for his contribution to symbolic logic ({Boolean
	Algebra}) but also active in other fields such as probability
	theory, {algebra}, analysis, and differential equations.  He
	lived, thought and is buried in Cork City, Ireland.  The Boole
	library at University College Cork is named after him.

	(24 Sep 1997)

GEOS

	A small windowing, {microkernel} (less than 64 kbytes long)
	operating system written in heavily {bum}med {assembly
	language} for {MS-DOS} computers.  It {multitask}s rather
	nicely on a 6 Mhz {Intel 80286} with at least 512K memory.

	It was adapted to {PDA}s by adding pen recognition, which
	doesn't work very well.

	{Usenet} newsgroup: {news:comp.os.geos}.

	(21 Jan 1995)

GEPURS

	An early system on the {IBM 701}.

	[Listed in CACM 2(5):16 (May 1959)].

	(21 Jan 1995)

Gerald

	["Gerald: An Exceptional Lazy Functional Programming
	Language", A.C. Reeves et al, in Functional Programming,
	Glasgow 1989, K. Davis et al eds, Springer 1990].

	(10 Jan 1995)

Gerald Sussman

	<person> (Gerald J. Sussman, Jerry) A noted {hacker} at {MIT}
	and one of the developers of {SCHEME} and {6.001}.

	{(http://martigny.ai.mit.edu/~gjs/gjs.html)}

	(29 Nov 1996)

german

	<human language> \'j*r-m*n\ A human language written (in latin
	alphabet) and spoken in Germany, Austria and parts of
	Switzerland.

	German writing normally uses four non-{ASCII} characters:
	"", the first three have "umlauts" (two dots over the
	top): A O and U and the last is a double-S ("scharfes S")
	which looks like the Greek letter beta (except in capitalised
	words where it should be written "SS").  These can be written
	in ASCII in several ways, the most common are ae, oe ue AE OE
	UE ss or sz and the {TeX} versions "a "o "u "A "O "U "s.

	See also {ABEND}, {blinkenlights}, {DAU}, {DIN}, {gedanken},
	{GMD}, {kluge}.

	{Usenet} newsgroup: {news:soc.culture.german}.
	{(ftp://src.doc.ic.ac.uk/usenet/news-info/soc.answers/german-faq)},
	{(ftp://alice.fmi.uni-passau.de/pub/dictionaries/german.dat.Z)}.

	(31 Mar 1995)

GEST

	Generic Expert System Tool.

	An {expert system shell} for {Symbolics} {Lisp machine}, with
	{frame}s, {forward chaining}, {backward chaining} and {fuzzy
	logic}.

	Version 4.0.

	{(ftp://ftp.gatech.edu/pub/ai/gest.tar.Z)}

	E-mail: John Gilmore <John.Gilmore@gtri.gatech.edu>.

	(16 Apr 1995)

Get a life!

	<abuse> Standard way of suggesting that someone has succumbed
	to terminal {geek}dom.  Often heard on {Usenet}, especially as
	a way of suggesting that the target is taking some obscure
	issue of {theology} too seriously.  This exhortation was
	popularised by William Shatner on a "Saturday Night Live"
	episode in a speech that ended "Get a *life*!", but some
	respondents believe it to have been in use before then.  It
	was certainly in wide use among hackers for at least five
	years before achieving mainstream currency in early 1992.

	(18 Jan 1995)

Get a real computer!

	Typical hacker response to news that somebody is having
	trouble getting work done on a system that (a) is
	single-tasking, (b) has no hard disk, or (c) has an address
	space smaller than 16 megabytes.  This is as of mid-1993; note
	that the threshold for "real computer" rises with time, and it
	may well be (for example) that machines with character-only
	displays will be generally considered "unreal" in a few years
	(GLS points out that they already are in some circles).  See
	{bitty box} and {toy}.

get.com

	<operating system> A command which can be created using debug
	in {MS DOS} to set the errorlevel according to which key is
	pressed.  The errorlevel can then be interrogated from a
	{batch file} by a series of commands like this:

	 get
	 if errorlevel 118 goto E118
	 if errorlevel 117 goto E117
	 if errorlevel 116 goto E116
	 if errorlevel 115 goto E115
	 if errorlevel 114 goto E114

	where E118 etc. are labels in the batch file.

	(01 Feb 1996)

getty

	<operating system> A {Unix} program which sets terminal type,
	modes, speed and line discipline for a {serial port}, and is
	used in the login process.

	(08 Dec 1996)

g file

	<messaging> (General file) A mid 1980s term for text files,
	usually short and unpublished found on {BBS}s.  The g-files
	section on BBSs contain text files of general interest,
	viewable online; this is as opposed to files in the file
	transfer section, which are generally downloadable but not
	viewable online.

	When used on the {Internet}, this term generally refers to the
	types of file most often associated with old BBSs such as
	instructions on {phreak}ing or making bombs.

	(20 Jun 1996)

GFLOPS

	{gigaflops}

GFR

	{Grim File Reaper}

GHC

	1. {Guarded horn clauses}.

	2. {Glasgow Haskell Compiler}.

ghost

	<chat> (Or "zombie") The image of a user's session on {IRC}
	and similar systems, left when the session has been terminated
	(properly or, often, improperly) but the server (or the
	network at large) believes the connection is still active and
	belongs to a real user.

	Compare {clonebot}.

	(07 Apr 1997)

ghostscript

	The {GNU} {PostScript} {interpreter} with {previewer}s for
	serval systems and many {font}s.  Written by L. Peter Deutsch
	<ghost@aladdin.com>.  Version 2.6.1.

	FTP from a {GNU archive site} or
	{(ftp://ftp.cs.wisc.edu/pub/X)}.

	(29 May 1993)

ghostview

	An {X Window System} interface to the {ghostscript}
	{PostScript} {interpreter}.

Gibson, William

	{William Gibson}

gid

	1. <operating system> {group identifier}.

	2. <filename extension> {global index}.

	(30 Jan 1997)

GIF

	{Graphics Interchange Format}

GIFF

	Do you mean {GIF} or is this some kind of {IFF}?

gig

	/jig/ or /gig/ {gigabyte}.

giga-

	{prefix}

gigabit

	<unit> 2^30 {bits}, 1,073,741,824 bits.

	See {prefix}.

	(12 Nov 1995)

gigabits per second

	<unit> {Gbps} A unit of information transfer rate.

	See {gigabit}.

	(25 May 1996)

gigabyte

	<unit> 2^30 = 1,073,741,824 {byte}s = 1024 {megabytes}.

	Roughly the amount of data required to encode a human gene
	sequence (including all the redundant codons).

	See {prefix}.

	(29 Sep 1995)

gigaflop

	{gigaflops}

gigaflops

	<unit> (GFLOPS) One thousand million (10^9) {floating point}
	operations per second.

	One of them is strictly "one gigaflops" in the same way that
	one mile per hour isn't 1 MP.

	(17 Mar 1995)

GIGO

	/gi:'goh/ 1. Garbage In, Garbage Out.  A reference to the fact
	that computers, unlike humans, will unquestioningly process
	the most nonsensical of input data and produce nonsensical
	output.  Of course a properly written program will reject
	input data that is obviously erroneous but such checking is
	not always easy to specify and is tedious to write.

	GIGO is usually said in response to {luser}s who complain that
	a program didn't "do the right thing" when given imperfect
	input or otherwise mistreated in some way.  Also commonly used
	to describe failures in human decision making due to faulty,
	incomplete, or imprecise data.

	2. Garbage In, Gospel Out.  This more recent expansion is a
	sardonic comment on the tendency human beings have to put
	excessive trust in "computerised" data.

gilley

	<humour> ({Usenet}) The unit of analogical bogosity.
	According to its originator, the standard for one gilley was
	"the act of bogotoficiously comparing the shutting down of
	1000 machines for a day with the killing of one person".  The
	milligilley has been found to suffice for most normal
	conversational exchanges.

	(17 Mar 1995)

gillion

	<unit> /gil'y*n/ or /jil'y*n/ (From {giga-} by analogy with
	mega/million and tera/trillion) 10^9.

	Same as an American billion or a British "milliard".  How one
	pronounces this depends on whether one speaks {giga-} with a
	hard or soft "g".

	(17 Mar 1995)

Gilmore, John

	{John Gilmore}

GIM-1

	Generalized Information Management Language.  Nelson, Pick,
	Andrews.  Proc SJCC 29:169-73, AFIPS (Fall 1966).

GIN

	A special-purpose {macro assembler} used to build the {GEORGE
	3} {operating system} for {ICL1900} series computers.

	(02 Nov 1994)

GINA

	Generic Interactive Application.  An {application framework}
	based on {Common Lisp} and {OSF}/{Motif}, designed to simplify
	the construction of graphical interactive applications.

	GINA consists of {CLM} - a language binding for {OSF}/{Motif}
	in {Common Lisp}; the GINA application framework - a {class
	library} in {CLOS}; the GINA interface builder - an
	interactive tool implemented with GINA to design {Motif}
	windows.

	Version 2.2 requires {OSF}/{Motif} 1.1 or better, {Common
	Lisp} with {CLX}, {CLOS}, {PCL} and processes.  It runs with
	{Franz Allegro}, {Lucid}, {CMU CL} and {Symbolics} {Genera}.

	{Germany (ftp://ftp.gmd.de/gmd/gina)}.  {N. America
	(ftp://export.lcs.mit.edu/contrib/)}.  Mailing list:
	gina-users-request@gmdzi.gmd.de.

	(02 Nov 1994)

Ginger

	A simple {functional language} from the {University of
	Warwick} with parallel constructs.

	(02 Nov 1994)

GIP

	1. General Interpretive Programme.

	A 1956 interpreted language for the {English Electric}
	{DEUCE}, with {array} operations and an extensive library of
	numerical methods.

	["Interpretive and Brick Schemes, with Special Reference to
	Matrix Operations", English Electric COmpany, DEUCE News
	No. 10 (1956)].

	(02 Nov 1994)

	2. An erroneous singular of {GIPS}.

GIPS

	/gips/ or /jips/ [Analogy with {MIPS}] Giga-Instructions per
	Second (or possibly "Gillions of Instructions per Second"; see
	{gillion}).

	In 1991, this was used of only a handful of highly parallel
	machines and one sequential processor built with {Josephson
	device}s.  {DEC}'s {Alpha AXP 21164} processor was the first
	commercially available 1 GIPS sequential processor (7 Sep
	1994).  Compare {KIPS}.

	["A 1-GIPS Josephson Data Processor", Yuji Hatano et al, IEEE
	J Solid State Circuits, vol 26, 6, June 1991]

	(02 Nov 1994)

GIRL

	Graph Information Retrieval Language.  A language for handling
	{directed graph}s.

	["Graph Information Retrieval Language", S. Berkowitz, Report
	76-0085, Naval Ship Res Dev Center, (Feb 1976)].

	(02 Nov 1994)

GIS

	{Geographical Information System}

GKS

	{Graphical Kernel System}

GKS-3D

	The three-dimensional version of {GKS}, a {standard} for
	graphics I/O ({ISO} 8805).

	(02 Nov 1994)

GL

	Graphics Language.  A graphics package from {Silicon
	Graphics}.

Glammar

	A pattern transformation language for text-to-text
	translation.  Used for compiler writing and linguistics.

	{(ftp://phoibos.cs.kun.nl/pub/GLASS/glammar.tar.Z)}

glark

	/glark/ To figure something out from context.  "The System III
	manuals are pretty poor, but you can generally glark the
	meaning from context."  Interestingly, the word was originally
	"glork"; the context was "This gubblick contains many
	nonsklarkish English flutzpahs, but the overall pluggandisp
	can be glorked [sic] from context" (David Moser, quoted by
	Douglas Hofstadter in his "Metamagical Themas" column in the
	January 1981 "Scientific American").  It is conjectured that
	hackish usage mutated the verb to "glark" because {glork} was
	already an established jargon term.

	Compare {grok}, {zen}.

Glasgow Haskell Compiler

	(GHC) A {Haskell} 1.2 compiler written in Haskell by the AQUA
	project at {Glasgow University}, headed by Simon Peyton Jones
	<simonpj@dcs.glasgow.ac.uk>.  GHC can generate either {C} or
	{native code} for {SPARC} or {DEC} {Alpha}.  It can take
	advantage of features of {gcc} such as global register
	variables and has an extensive set of optimisations.

	GHC features an extensible I/O system based on a "{monad}",
	in-line {C} code, fully fledged {unboxed} data types,
	incrementally-updatable {array}s, {mutable reference type}s,
	{generational garbage collector}, {concurrent} {thread}s.
	Time and space {profiling} is also supported.

	It requires {GNU} gcc 2.1+ and {Perl}.

	Version 0.24 runs on {Sun4}, {DEC Alpha}, {Sun3}, {NeXT},
	{DECstation}, {HP-PA} and {SGI}.

	{Glasgow FTP
	(ftp://ftp.dcs.glasgow.ac.uk/pub/haskell/glasgow/)}.  {Yale
	(ftp://nebula.cs.yale.edu/pub/haskell/glasgow/)}.  {Sweden
	(ftp://ftp.cs.chalmers.se/pub/haskell/glasgow/)}.

	{Papers (ftp://ftp.dcs.glasgow.ac.uk/pub/glasgow-fp)}

	["Imperative functional programming", Peyton Jones & Wadler,
	POPL '93].

	["Unboxed data types as first-class citizens", Peyton Jones &
	Launchbury, FPCA '91].

	["Profiling lazy functional languages", Sansom & Peyton Jones,
	Glasgow workshop '92].

	["Implementing lazy functional languages on stock hardware",
	Peyton Jones, Journal of Functional Programming, Apr 1992].

	E-mail: <glasgow-haskell-request@dcs.glasgow.ac.uk>.

	(07 Mar 1995)

GLASS

	General LAnguage for System Semantics.

	An {Esprit} project at the {University of Nijmegen}.

	{(ftp://phoibos.cs.kun.nl/pub/GLASS)}

	(25 Jan 1995)

glass

	(IBM) {silicon}.

glass box testing

	{white box testing}

glassfet

	/glas'fet/ [Analogy with {MOSFET}] (or "{firebottle}") A
	humorous way to refer to a {vacuum tube}.

glass tty

	/glas T-T-Y/ or /glas ti'tee/ A terminal that has a display
	screen but which, because of hardware or software limitations,
	behaves like a teletype or some other printing terminal,
	thereby combining the disadvantages of both: like a printing
	terminal, it can't do fancy display hacks, and like a display
	terminal, it doesn't produce hard copy.  An example is the
	early "dumb" version of Lear-Siegler ADM 3 (without cursor
	control).  See {tube}, {tty}; compare {dumb terminal}, {smart
	terminal}.  See "{TV Typewriters}" for an interesting true
	story about a glass tty.

GLB

	{greatest lower bound}

glibc

	{GNU C Library}

Glish

	Glish is an interpretive language for building loosely-coupled
	distributed systems from modular, event-oriented programs.
	Written by Vern Paxson <vern@ee.lbl.gov>.  These programs are
	written in conventional languages such as C, C++, or Fortran.

	Glish scripts can create local and remote processes and
	control their communication.  Glish also provides a full,
	array-oriented programming language (similar to {S}) for
	manipulating binary data sent between the processes.  In
	general Glish uses a centralised communication model where
	interprocess communication passes through the Glish
	{interpreter}, allowing dynamic modification and rerouting of
	data values, but Glish also supports point-to-point links
	between processes when necessary for high performance.

	Version 2.4.1 includes an {interpreter}, {C++} {class} library
	and user manual.  It requires C++ and there are ports to
	{SunOS}, {Ultrix}, an {HP/UX} (rusty).

	{(ftp://ftp.ee.lbl.gov/glish/glish-2.4.1.tar.Z)}

	["Glish: A User-Level Software Bus for Loosely-Coupled
	Distributed Systems," Vern Paxson and Chris Saltmarsh,
	Proceedings of the 1993 Winter USENIX Conference, San Diego,
	CA, January, 1993].

	(01 Nov 1993)

Glisp

	Generalized LISP.  D.C. Smith, Aug 1990.  A coordinated set of
	high-level syntaxes for Common LISP.  Contains Mlisp, Plisp
	and ordinary LISP, with an extensible framework for adding
	others.  Written in Plisp.

	{(ftp://bric-a-brac.apple.com/dts/mac/lisp)}

glitch

	/glich/ [German "glitschen" to slip, via Yiddish "glitshen",
	to slide or skid] 1. (Electronics) When the inputs of a
	circuit change, and the outputs change to some {random} value
	for some very brief time before they settle down to the
	correct value.  If another circuit inspects the output at just
	the wrong time, reading the random value, the results can be
	very wrong and very hard to debug (a glitch is one of many
	causes of electronic {heisenbug}s).

	2. A sudden interruption in electric service, sanity,
	continuity, or program function.  Sometimes recoverable.  An
	interruption in electric service is specifically called a
	"power glitch" (or {power hit}), of grave concern because it
	usually crashes all the computers.  See also {gritch}.

	2. [Stanford] To scroll a display screen, especially several
	lines at a time.  {WAITS} terminals used to do this in order
	to avoid continuous scrolling, which is distracting to the
	eye.

	4. Obsolete.  Same as {magic cookie}.

glob

	/glob/, *not* /glohb/ To expand {wild card} characters in a
	{path name}.

	In {Unix} the {file name} wild cards are:

	 * = zero or more characters (E.g. {UN*X})

	 ? = any single character

	 [] any of the enclosed characters

	 {} indicate alternation of comma-separated alternatives, thus
	 foo{baz,qux} would expand to "foobaz" or "fooqux".  This
	 syntax generates a list of all possible expansions, rather
	 than matching one.

	These have become sufficiently pervasive that hackers use them
	in written English, especially in {electronic mail} or
	{Usenet} news on technical topics.  E.g. "He said his name was
	[KC]arl" (expresses ambiguity).  "I don't read
	talk.politics.*" (any of the talk.politics subgroups on
	{Usenet}).  Other examples are given under the entry for {X}.
	Note that glob patterns are similar, but not identical, to
	those used in {regexps}.

	"glob" was a subprogram that expanded wild cards in archaic
	pre-{Bourne} versions of the {Unix} {shell}.

	(16 Jul 1997)

global index

	<filename extension> (gid) The filename extension of a
	{Windows 95} "global index" file.  .gid files are created by
	the help {browser} internal to Windows 95 (also available for
	other Windows versions) for WinHelp files ({hlp}), as well as
	for storing user preferences, such as window position.

	(30 Jan 1997)

Global Network Navigator

	(GNN) A collection of free services provided by {O'Reilly &
	Associates}.

	The Whole Internet Catalog describes the most useful Net
	resources and services with live links to those resources.
	The GNN Business Pages list companies on the Internet.  The
	Internet Help Desk provides help in starting {Internet}q
	exploration.  NetNews is a weekly publication that reports on
	the news of the {Internet}, with weekly articles on Internet
	trends and special events, sports, weather, and comics.  There
	are also pages aobut travel and personal finance.

	{Home page (http://www.gnn.com/)}

	E-mail: <support@gnn.com>.

	Telephone: (800) 998 9938 (USA), +1 (707) 829 0515 (outside
	USA).

	(10 Jan 1995)

Global Positioning System

	<communications> (GPS) A system for determining postion on the
	Earth's surface by comparing radio signals from several
	satellites.  When completed the system will consist of 24
	satellites equipped with radio transmitters and atomic clocks.

	Depending on your geographic location, the GPS receiver
	samples data from up to six satellites, it then calculates the
	time taken for each satellite signal to reach the GPS
	receiver, and from the difference in time of reception,
	determines your location.

	["Global Positioning by Satellite"?  Precison?  Coverage?  Web
	page?]

	(10 Feb 1998)

Global System for Mobile communications

	<communications> (GSM) A {standard} for digital {cellular}
	communications (in the process of being) adopted by over 60
	countries.  The GSM standard is currently used in the 900 MHz
	and 1800 MHz bands.  In the USA trial systems akin to the
	related Digital Cellular System (DCS) 18000 have been set up
	in several metropolitan areas.

	(25 Apr 1995)

glork

	/glork/ 1. Used as a name for just about anything.

	See {foo}.

	2. Similar to {glitch}, but usually used reflexively.  "My
	program just glorked itself."

	See also {glark}.

GLOS

	Graphics Language Object System.  Dan Johnston
	dan@cs.uq.oz.au> and Brian Hicks <cs.uq.oz.au>, U Queensland,
	St. Lucia 1978.  Graphics objects correspond to language
	statements (e.g. line, circle, polygon etc).  New objects
	defined using procedures.  2-D Transformations are context
	dependent and may be nested.

GLOW

	<language> A POP-11 variant with {lexical scope}.

	Available from Andrew Arnblaster, Bollostraat 6, B-3140
	Keerbergen, Belgium, for Mac or {MS-DOS}.

	[Byte's UK edition, May 1992, p.84UK-8].

	(07 Feb 1997)

GLS

	{Guy Lewis Steele, Jr.}

GLU

	A practical course grain implementation of the Lucid dataflow
	language for networks.

glue

	Generic term for any interface logic or protocol that connects
	two component blocks.  For example, {Blue Glue} is IBM's SNA
	protocol, and hardware designers call anything used to connect
	large VLSI's or circuit blocks "glue logic".

glyph

	One of the characters or symbols available within a {font}.
	Usually used in reference to {outline font}s, in particular
	{TrueType}.

Glypnir

	1966.  An ALGOL-like language with parallel extensions.
	Similar to Actus.  "GLYPNIR - A Programming Language for the
	Illiac IV", D.H.  Lawrie et al, CACM 18(3) (Mar 1975).

GMAP

	GCOS Macro Assembler Program.  The {macro assembler} for the
	{GCOS 8} {operating system} on {Honeywell}/{Bull} {DPS-8}
	computers.

	["GCOS8 OS GMAP User's Guide", Bull].

GMD

	<company> Full name: "GMD - Forschungszentrum
	Informationstechnik GmbH" (German National Research Center for
	Information Technology).

	Before April 1995, GMD stood for "Gesellschaft fr Mathematik
	und Datenverarbeitung" - National Research Center for Computer
	Science, it is retained for historical reasons.

	{Home (http://www.gmd.de/GMDHome.english.html)}

	Address: D-53754 Sankt Augustin, Germany.

	(10 Apr 1995)

GMD Toolbox for Compiler Construction

	(Or Cocktail) A huge set of compiler building tools for
	{MS-DOS}, {Unix} and {OS/2}.

	parser generator (LALR -> C, Modula-2), documentation, parser
	generator (LL(1) -> C, Modula-2), tests, scanner generator (->
	C, Modula-2), tests translator (Extended BNF -> BNF),
	translator (Modula-2 -> C), translator (BNF (yacc) -> Extended
	BNF), examples abstract syntax tree generator,
	attribute-evaluator generator, code generator

	Current version 9209.  The {MS-DOS} version requires DJ
	Delorie's DOS extender ({go32}) and the {OS/2} version
	requires the {emx} programming environment.

	{(ftp://ftp.karlsruhe.gmd.de/pub/cocktail/dos)}.  {OS/2 FTP
	(ftp://ftp.eb.ele.tue.nl/pub/src/cocktail/dos-os2.zoo)}.

	Mailing list: listserv@eb.ele.tue.nl (subscribe to Cocktail).
	E-mail: Josef Grosch <grosch@karlsruhe.gmd.de>, Willem Jan
	Withagen <wjw@eb.ele.tue.nl> (OS/2).

	(01 Jan 1992)

gnarly

	<jargon> /nar'lee/ Both obscure and {hairy}.  "{Yow}! - the
	tuned {assembler} implementation of {BitBlt} is really
	gnarly!"  From a similar but less specific usage in surfer
	slang.

	(17 Sep 1996)

GNAT

	A {bootstrap}ped implementation of an {Ada83} subset.
	Currently only a subset of of Ada 83 is working.  Compliance
	to {Ada 95} being worked on.

	Version 1.4.5 is a very early release, but able to compile
	itself.  It includes a {parser} and library management system.

	{(ftp://cs.nyu.edu/pub/gnat/)}.  E-mail: The GNAT Development
	Team <gnat-request@cs.nyu.edu>.

	(29 Aug 1993)

GNN

	{Global Network Navigator}

Gnome Computers

	<company> A small UK hardware and software company.  They make
	{transputer} boards for the {Acorn} {Archimedes} among other
	things.

	E-mail: Chris Stenton <chris@gnome.co.uk>.

	(30 Sep 1994)

GNU

	<body, project> /g*noo/ 1. A {recursive acronym}:
	"GNU's Not Unix!".  The {Free Software Foundation}'s project
	to provide a freely distributable replacement for {Unix}.  The
	GNU Manifesto was published in the March 1985 issue of
	Dr. Dobb's Journal but the GNU project started a year and a
	half earlier when {Richard Stallman} was trying to get funding
	to work on his freely distributable editor, {Emacs}.

	{Emacs} and the GNU {C} compiler, {gcc}, two tools designed
	for this project, have become very popular.  GNU software is
	available from many {GNU archive site}s.

	See also {Hurd}.

	2. <person> {John Gilmore}.

	(12 Apr 1997)

GNU archive site

	<body> The main {GNU} {FTP archive} is on prep.ai.mit.edu but
	copies ("{mirror}s") of some or all of the files there are
	also held on many other computers around the world.  To avoid
	overloading prep.ai.mit.edu and the {Internet} you should
	{FTP} files from the machine closest to yours (you may be able
	to use {traceroute} to determine which is logically closest if
	it's not obvious from the transfer rate).  Trans-ocean
	{TCP/IP} links are very expensive and usually very slow.

	The following {host}s mirror GNU files.  Look for a directory
	like /pub/gnu, /mirrors/gnu, /systems/gnu or /archives/gnu.
	{Electronic mail address}es of administrators and {Internet
	address}es are given for some hosts.  This list was taken from
	{this file (ftp://src.doc.ic.ac.uk/gnu/GNUinfo/FTP)}.

	Australia: archie.au, archie.oz, archie.oz.au

	Brazil: ccsun.unicamp.br (143.106.1.5, <root@ccsun.unicamp.br>)

	Denmark: ftp.denet.dk

	Europe: archive.eu.net (192.16.202.1)

	Finland: ftp.funet.fi (128.214.6.100, gnu-adm)

	France: irisa.irisa.fr, ftp.univ-lyon1.fr
	(<ftpmaint@ftp.univ-lyon1.fr>)

	Germany: ftp.informatik.tu-muenchen.de,
	ftp.informatik.rwth-aachen.de, ftp.germany.eu.net
	(<archive-admin@germany.eu.net>)

	Israel: ftp.technion.ac.il (<ftp-admin@ftp.technion.ac.il>)

	Japan: utsun.s.u-tokyo.ac.jp, ftp.cs.titech.ac.jp

	Korea: cair.kaist.ac.kr (143.248.11.170)

	Netherlands: hp4nl.nluug.nl, ftp.win.tue.nl (131.155.70.100)

	Norway: ugle.unit.no (129.241.1.97)

	South Africa: ftp.sun.ac.za

	Sweden: isy.liu.se, ftp.stacken.kth.se, ftp.luth.se,
	ftp.sunet.se (130.238.127.3, <archive@ftp.sunet.se>)

	Switzerland: ftp.eunet.ch, nic.switch.ch

	Thailand: ftp.nectec.or.th (192.150.251.32,
	<ftp@nwg.nectec.or.th>)

	UK: src.doc.ic.ac.uk (146.169.3.7, <info-server@doc.ic.ac.uk>,
	<lmjm@doc.ic.ac.uk> also sun cartridge or exabyte tapes);
	info-server@cs.nott.ac.uk (<jpo@cs.nott.ac.uk>)
	BattenIG@computer-science.birmingham.ac.uk,
	I.G.Batten@fulcrum.bt.co.uk (also qic-21 and qic-24 tapes);
	ftp.mcc.ac.uk (130.88.203.12); Unix.hensa.ac.uk;
	ftp.warwick.ac.uk (137.205.192.14, <Unixhelp@warwick.ac.uk>).

	USA: louie.udel.edu, ftp.kpc.com (Silicon Valley, CA)
	ftp.hawaii.edu, f.ms.uky.edu, ftp.digex.net (Internet address
	164.109.10.23, run by <mcguire@digex.net>),
	wuarchive.wustl.edu, col.hp.com, ftp.cs.columbia.edu,
	vixen.cso.uiuc.edu, mrcnext.cso.uiuc.edu, jaguar.utah.edu,
	gatekeeper.dec.com, labrea.stanford.edu, ftp.cs.widener.edu,
	archive.cis.ohio-state.edu, and ftp.uu.net.

	Western Canada: ftp.cs.ubc.ca (<ftp-admin@cs.ubc.ca>)

	(30 Apr 1995)

GNU assembler

	(GAS) A {Unix} {assembler} for the {GNU} project.  Many {CPU}
	types are handled and {COFF} and {IEEE-695} formats are
	supported as well as standard {a.out}.

	Current version 2.2 ported to {Sun-3}, {Sun-4}, {i386},
	{386BSD}, {BSD/386}, {Linux}, {PS/2-AIX}, {VAX}, {Ultrix},
	{BSD}, {VMS}.

	The assembler has been merged with {GNU Binutils}.

	E-mail: <bug-gnu-utils@prep.ai.mit.edu>.

	(18 Apr 1995)

GNU awk

	{gawk}

GNU BC

	A {GNU} version of {BC} which is self-contained and internally
	executes its own compiled code rather than acting as a
	{front-end} to {DC} like the standard {Unix} bc.

	Version 1.02

	parser (yacc), interpreter, BC math library

	Philip A. Nelson <phil@cs.wwu.edu>

	FTP bc-1.02.tar.Z from a {GNU archive site}.

	requires:	vsprintf and vfprintf routines

	ports: Unix (BSD, System V, MINIX, POSIX) Superset of POSIX BC
	(P10003.2/D11), with a POSIX-only mode.

GNU C

	<language> The extension of {C} compiled by {gcc}.

	(30 Sep 1997)

GNU C Library

	<library> (glibc) The {run-time} library for the {GNU C}
	{compiler}, {gcc}.  The source for libc.a.  This package is
	separately maintained.

	It is a superset of {ANSI C} and {POSIX}.1 and a large subset
	of POSIX.2.

	Current version (25 Jun 1993): 1.06.

	Available from your nearest {GNU archive site}.

	Mailing list: <bug-glibc@prep.ai.mit.edu> (bugs).

	(25 Jun 1993)

GNU DC

	GNU Desktop Calculator.

	An {interpreter} for a subset of the standard {Unix} {DC} that
	handles all its operations, except the (undocumented) {array}
	operations.  Integration with GNU BC is being attempted.

	Version 0.2.

	{FTP} dc-0.2.tar.Z from your nearest {GNU archive site}.

	(21 May 1993)

GNU E

	A persistent C++ variant

	Version 2.3.3

	compiler

	{(ftp://ftp.cs.wisc.edu/exodus/E/)}

	GNU E is a persistent, object oriented programming language
	developed as part of the Exodus project.  GNU E extends C++
	with the notion of persistent data, program level data objects
	that can be transparently used across multiple executions of a
	program, or multiple programs, without explicit input and
	output operations.

	GNU E's form of {persistence} is based on extensions to the
	C++ type system to distinguish potentially persistent data
	objects from objects that are always memory resident.  An
	object is made persistent either by its declaration (via a new
	"persistent" storage class qualifier) or by its method of
	allocation (via persistent dynamic allocation using a special
	overloading of the new operator).  The underlying object
	storage system is the Exodus storage manager, which provides
	concurrency control and recovery in addition to storage for
	persistent data.

	restriction: Copyleft; not all run-time sources are available
	(yet)

	requires:	release 2.1.1 of the Exodus storage manager

	E-mail: <exodus@cs.wisc.edu>.

	(1993/01/20)

GNU Emacs

	{Emacs}

GNU General Public License

	{General Public License}

GNUMACS

	/gnoo'maks/ [contraction of "GNU EMACS"] Often-heard
	abbreviated name for the {GNU} project's flagship tool,
	{EMACS}.  Used especially in contrast with {GOSMACS}.

GNU mirror site

	{GNU archive site}

Gnuplot

	<tool> A command-driven interactive graphing program.  Gnuplot
	can plot two-dimensional functions and data points in many
	different styles (points, lines, error bars); and
	three-dimensional data points and surfaces in many different
	styles (contour plot, mesh).  It supports {complex} arithmetic
	and user-defined functions and can label title, axes, and data
	points.  It can output to several different graphics file
	formats and devices.  Command line editing and history are
	supported and there is extensive on-line help.

	Gnuplot is {copyright}ed, but freely distributable.  It was
	written by Thomas Williams, Colin Kelley, Russell Lang, Dave
	Kotz, John Campbell, Gershon Elber, Alexander Woo and many
	others.  Despite its name, gnuplot is not related to the {GNU}
	project or the {FSF} in any but the most peripheral sense.  It
	was designed completely independently and is not covered by
	the {General Public License}.  However, the {FSF} has decided
	to distribute gnuplot as part of the {GNU} system, because it
	is useful, redistributable software.

	Gnuplot is available for: {Unix} ({X11} and {NEXTSTEP}),
	{VAX}/{VMS}, {OS/2}, {MS-DOS}, {Amiga}, {MS-Windows},
	{OS-9}/68k, {Atari ST} and {Macintosh}.

	E-mail: <info-gnuplot@dartmouth.edu>.

	{FAQ} - {Germany
	(http://fg70.rz.uni-karlsruhe.de/~ig25/gnuplot-faq/)}, {UK
	(ftp://src.doc.ic.ac.uk/usenet/news-info/comp.graphics.gnuplot)},
	{USA
	(http://www.cis.ohio-state.edu/hypertext/faq/usenet/graphics/gnuplot-faq/faq.html)}.

	{Usenet} newsgroup: {news:comp.graphics.gnuplot}.

	(04 May 1995)

GNU public licence

	<legal> Properly known as the {General Public License}.
	Improperly known as the {General Public Virus}.

	(04 May 1995)

GNUS

	<tool, networking> GNU news.

	A {GNU} {Emacs} subsystem for reading and sending {Usenet}
	{news}, written by Masanobu Umeda <umerin@mse.kyutech.ac.jp>.
	You can use GNUS to browse through news groups, look at
	summaries of articles in a specific group, and read articles
	of interest.  You can respond to authors or write articles or
	replies to all the readers of a news group.

	GNUS can be configured to use the {NNTP} {protocol} to get
	news from a remove {server} or it can read it from local news
	{spool} files.

	{Usenet} newsgorup: {news:gnu.emacs.gnus}.

	(04 May 1995)

GNU sed

	<tool, text> A {GNU} version of the standard {Unix} {Sed}
	stream editor.  GNU sed was written by Tom Lord
	<lord+@andrew.cmu.edu>.  Version 2.03.

	FTP from your nearest {GNU archive site}.

	E-mail: <bug-gnu-utils@prep.ai.mit.edu> (bugs).

	(09 Aug 1993)

GNU Smalltalk

	<language> A {GNU} version of {Smalltalk}, by Steven Byrne
	<sbb@eng.sun.com>.

	Version 1.1.1,

	{FTP} from your nearest {GNU archive site}.

	{msgGUI} is a {graphical user interface} library for GNU
	Smalltalk.

	(15 Sep 1991)

GNUStep

	<operating system> A planned {GNU} implementation of
	{OpenStep}.  Work has started on an implementation using an
	existing library written in {Objective-C}.  Much work remains
	to be done to bring this library close to the OpenStep
	specifications.

	E-mail: <Paul_Kunz@slac.stanford.edu> (volunteers).

	(18 Apr 1995)

GNU superoptimiser

	(GSO) A function sequence generator that uses an exhaustive
	generate-and-test approach to find the shortest instruction
	sequence for a given function.  Written by Torbjorn Granlund
	<tege@gnu.ai.mit.edu> and Tom Wood.  You have to tell the
	superoptimiser which function and which {CPU} you want to get
	code for.  This is useful for compiler writers.

	FTP superopt-2.2.tar.Z from a {GNU archive site}.

	Generates code for {DEC} {Alpha}, {SPARC}, {Intel 80386},
	{88000}, {RS/6000}, {68000}, {29000} and {Pyramid} (SP, AP and
	XP).

	(16 Feb 1993)

Go

	<games, application> A thinking game with an oriental origin
	estimated to be around 4000 years old.  Nowadays, the game is
	played by millions of people in (most notably) China, Japan,
	Korea and Taiwan.  In the Western world the game is practised
	by a yearly increasing number of players.  On the {Internet}
	Go players meet, play and talk 24 hours/day on the {Internet
	Go Server} (IGS).

	{(http://www.cwi.nl/~jansteen/go/go.html)}

	{Usenet} newsgroup: {news:rec.games.go}.

	(17 Mar 1995)

goal

	<programming> In {logic programming}, a {predicate} applied to
	its {arguments} which the system attempts to prove by matching
	it against the {clauses} of the program.  A goal may fail or
	it may succeed in one or more ways.

	(14 Jul 1997)

Go Back N

	A {data link layer} {protocol}.

gobble

	1. To consume, usually used with "up".  "The output
	spy gobbles characters out of a {tty} output buffer."

	2. To obtain, usually used with "down".  "I guess I'll gobble
	down a copy of the documentation tomorrow."

	See also {snarf}.

Godzillagram

	/god-zil'*-gram/ [Japan's national hero and {datagram}] 1. A
	network packet that in theory is a broadcast to every machine
	in the universe.  The typical case is an IP datagram whose
	destination IP address is [255.255.255.255].  Fortunately, few
	gateways are foolish enough to attempt to implement this case!

	2. A network packet of maximum size.  An {IP} Godzillagram has
	65,536 {octets}.  Compare {super source quench}.

Goedel

	<language> (After the mathematician {Kurt Gdel}) A
	{declarative}, general-purpose language for {artificial
	intelligence} based on {logic programming}.  It can be
	regarded as a successor to {Prolog}.  The {type system} is
	based on {many-sorted logic} with {parametric polymorphism}.
	Modularity is supported, as well as {infinite precision
	arithmetic} and {finite set}s.

	Goedel has a rich collection of system {modules} and provides
	{constraint} solving in several domains.  It also offers
	{metalogical} facilities that provide significant support for
	{metaprogram}s that do analysis, transformation, compilation,
	verification, and debugging.

	A significant subset of Goedel has been implemented on top of
	{SISCtus Prolog} by Jiwei Wang <jiwei@lapu.bristol.ac.uk>.

	{FTP Bristol, UK (ftp://ftp.cs.bris.ac.uk/goedel)}, {FTP K U
	Leuven (ftp://ftp.cs.kuleuven.ac.be/pub/logic-prgm/goedel)}.

	E-mail: <goedel@compsci.bristol.ac.uk>.

	(02 May 1995)

go-faster stripes

	<jargon> {chrome}.  Mainstream in some parts of UK.

Gofer

	<language> A {lazy} {functional language} designed by Mark
	Jones <mpj@cs.nott.ac.uk> at the {Programming Research Group},
	Oxford, UK in 1991.  It is very similar to {Haskell} 1.2.  It
	has {lazy evaluation}, {higher order function}s, {pattern
	matching}, and {type class}es, lambda, case, conditional and
	let expressions, and wild card, "as" and {irrefutable
	patterns}.  It lacks {modules}, {arrays} and standard
	{classes}.

	Gofer comes with an {interpreter} (in C), a {compiler} which
	compiles to {C}, documentation and examples.  Unix Version
	2.30 (10 Jun 1994) Mac_Gofer version 0.16 beta.  Ported to
	{Sun}, {Acorn} {Archimedes}, {IBM PC}, {Macintosh}, {Atari},
	{Amiga}.

	Version 2.30 added support for contexts in datatype and member
	function definitions, Haskell style {arrays}, an external
	function calling mechanism for gofc, an experimental
	implementation of Launchbury/Peyton Jones style lazy
	functional state threads, an experimental implementation of
	"do" notation for {monad comprehensions}.

	The latest version of Gofer is known as {HUGS}.

	["Introduction to Gofer 2.20", M.P. Jones.]

	[The implementation of the Gofer functional programming
	system, Mark P. Jones, Research Report YALEU/DCS/RR-1030, Yale
	University, Department of Computer Science, May 1994.  FTP:
	nebula.cs.yale.edu/pub/yale-fp/reports].

	{(http://www.cs.nott.ac.uk/Department/Staff/mpj/)}

	{FTP Yale (ftp://nebula.cs.yale.edu/)}, {FTP Glasgow
	(ftp://ftp.dcs.glasgow.ac.uk/)}, {FTP Chalmers
	(ftp://ftp.cs.chalmers.se/pub/haskell/gofer/)}.

	(14 Feb 1995)

Goffin

	<language> A {definitional constraint language} for
	{declarative} parallel programming.  Goffin systematically
	integrates {equational constraint}s and functions within a
	uniform framework of {concurrent} programming.

	Goffin is an embedding of a functional language kernel
	({Haskell}) into a layer of constraint logic, which allows
	{logical variable}s inside functional expressions.  In order
	to preserve {referential transparency}, functional {reduction}
	suspends until logical variables become bound.

	Logical variables are bound by equational constraints, which
	impose relations over expressions.  Hence, constraints are the
	means to structure the concurrent reduction of functional
	expressions.

	(21 Feb 1995)

go flatline

	[{Cyberpunk} SF, refers to flattening of EEG traces upon
	brain-death] also "flatlined". 1. To {die}, terminate, or
	fail, especially irreversibly.  In hacker parlance, this is
	used of machines only, human death being considered somewhat
	too serious a matter to employ jargon-jokes about.

	2. To go completely quiescent; said of machines undergoing
	controlled shutdown.  "You can suffer file damage if you shut
	down Unix but power off before the system has gone flatline."

	3. Of a video tube, to fail by losing vertical scan, so all
	one sees is a bright horizontal line bisecting the screen.

GO-GO

	{ALPS}

GOL

	General Operating Language.  Subsystem of {DOCUS}.  [Sammet
	1969, p.678].

golden

	[Probabaly from folklore's "golden egg"] When used to describe
	a magnetic medium (e.g. "golden disk", "golden tape"),
	describes one containing a tested, up-to-spec, ready-to-ship
	software version.  Compare {platinum-iridium}.

golf ball printer

	<printer> The IBM 2741, a slow but letter-quality printing
	device and terminal based on the IBM Selectric typewriter.
	The "golf ball" was a little spherical frob bearing reversed
	embossed images of 88 different characters arranged on four
	parallels of latitude; one could change the font by swapping
	in a different golf ball.

	This was the technology that enabled {APL} to use a
	non-{EBCDIC}, non-{ASCII}, and in fact completely non-standard
	{character set}.  This put it 10 years ahead of its time -
	where it stayed, firmly rooted, for the next 20, until
	{character displays} gave way to programmable {bit-mapped}
	devices with the flexibility to support other character sets.

	(15 Dec 1994)

GOM

	Good Old MAD.

	Don Boettner, U Mich.  MAD for the IBM 360.  Parts of the MTS
	{time-sharing} system were written in GOM.

gonk

	<jargon> /gonk/ 1. To prevaricate or to embellish the truth
	beyond any reasonable recognition.  In German the term is
	(mythically) "gonken"; in Spanish the verb becomes "gonkar".
	"You're gonking me.  That story you just told me is a bunch of
	gonk."  In German, for example, "Du gonkst mir" (You're
	pulling my leg).

	See also {gonkulator}.

	2. (British) To grab some sleep at an odd time.

	Compare {gronk out}.

	(07 Mar 1995)

gonkulator

	/gon'kyoo-lay-tr/ (From "Hogan's Heroes", the TV series) A
	pretentious piece of equipment that actually serves no useful
	purpose.  Usually used to describe one's least favourite piece
	of computer hardware.

	See {gonk}.

	(07 Mar 1995)

GOOD

	<language, database> {Graph-Oriented Object
	Database}.

Good Thing

	<convention> (From the 1930 Sellar and Yeatman parody "1066
	And All That") Often capitalised; always pronounced as if
	capitalised.

	1. Self-evidently wonderful to anyone in a position to notice:
	"The {Trailblazer}'s 19.2 K{baud} {PEP} mode with {on-the-fly}
	{Lempel-Ziv compression} is a Good Thing for sites relaying
	{netnews}".

	2. Something that can't possibly have any ill side-effects and
	may save considerable grief later: "Removing the
	{self-modifying code} from that {shared library} would be a
	Good Thing".

	3. When said of software tools or libraries, as in "{Yacc} is
	a Good Thing", specifically connotes that the thing has
	drastically reduced a programmer's work load.

	Opposite: {Bad Thing}, compare {big win}.

	(07 May 1995)

Gopher

	<networking, protocol> A popular distributed document
	retrieval system which started as a {Campus Wide Information
	System} at the {University of Minnesota}.  Many {host}s on the
	{Internet} now run Gopher servers which provide a menu of
	documents.  A document may be a plain text file, sound, image,
	submenu or other {Gopher object type}.  It may be stored on
	another host or may provide the ability to search through
	certain files for a given string.

	Gopher is defined in {RFC 1436}.

	To access Gopher you need a {Gopher client}.  Next you need to
	know the name of a gopher {server}.  A good place to start is
	gopher.micro.umn.edu {(gopher://gopher.micro.umn.edu/)}.

	The latest releases of gopher software (including {client}
	software) are available via {anonymous FTP} from
	boombox.micro.umn.edu in the /pub/gopher directory
	{(ftp://boombox.micro.umn.edu/pub/gopher)}.

	Gopher has been largely superceded by the {World-Wide Web}
	(WWW), a similar document retrieval system which includes
	access to Gopher documents as one of its {access schemes}.

	(07 May 1995)

Gopher client

	A program which runs on your local machine and provides a user
	interface to the {Gopher} {protocol}.  Gopher clients are
	available for ordinary terminals, the {X Window System}, {GNU
	Emacs} and other systems.

	{(ftp://boombox.micro.umn.edu/)}

Gopher object type

	A character specifying how to display a {Gopher} document.
	Current types are:

	0  document
	1  menu
	2  CSO phone book entity
	3  error
	4  binhex binary
	5  DOS binary (deprecated)
	6  UU  binary (deprecated)
	7  index search
	8  telnet connection
	9  binary
	+  duplicate server for previous object
	I  image
	M  MIME document
	T  tn3270 based telnet connection
	c  cal
	g  GIF image
	h  HTML
	s  binary
	u  {Usenet} newsgroup

gorets

	/gor'ets/ The unknown ur-noun, fill in your own meaning.
	Found especially on the {Usenet} newsgroup alt.gorets, which
	seems to be a running contest to redefine the word by
	implication in the funniest and most peculiar way, with the
	understanding that no definition is ever final.  [A
	correspondent from the Former Soviet Union informs me that
	"gorets" is Russian for "mountain dweller" - ESR] Compare
	{frink}.

gorilla arm

	The side-effect that destroyed touch-screens as a mainstream
	input technology despite a promising start in the early 1980s.
	It seems the designers of all those {spiffy} touch-menu
	systems failed to notice that humans aren't designed to hold
	their arms in front of their faces making small motions.
	After more than a very few selections, the arm begins to feel
	sore, cramped, and oversized - the operator looks like a
	gorilla while using the touch screen and feels like one
	afterwards.  This is now considered a classic cautionary tale
	to human-factors designers; "Remember the gorilla arm!" is
	shorthand for "How is this going to fly in *real* use?".

go root

	[Unix] To temporarily enter {root mode} in order to perform a
	privileged operation.  This use is deprecated in Australia,
	where the verb "root" refers to animal sex.  See {su}.

gorp

	/gorp/ (CMU, perhaps from the canonical hiker's food, Good Old
	Raisins and Peanuts) Another {metasyntactic variable}, like
	{foo} and {bar}.

GOSIP

	{Government OSI Profile}

Gosling, James

	{James Gosling}

GOSMACS

	/goz'maks/ Gosling EMACS.  The first {EMACS} implementation in
	{C}, predating but now largely eclipsed by {GNU} {Emacs}.
	Originally {freeware}; a commercial version is now modestly
	popular as {UniPress Emacs}.  The author (James Gosling) went
	on to invent {NeWS}.

Gosperism

	/gos'p*r-izm/ A hack, invention, or saying due to arch-hacker
	R. William (Bill) Gosper.  This notion merits its own term
	because there are so many of them.  Many of the entries in
	{HAKMEM} are Gosperisms.

	See also {life}.

GOSPL

	Graphics-Oriented Signal Processing Language.  A graphical DSP
	language for simulation.

	["Graphic Oriented Signal Processing Language - GOSPL",
	C.D. Covington et al, Proc ICASSP-87, 1987].

gotcha

	<jargon, programming> A {misfeature} of a system, especially a
	programming language or environment, that tends to breed
	{bug}s or mistakes because it both enticingly easy to invoke
	and completely unexpected and/or unreasonable in its outcome.

	For example, a classic gotcha in {C} is the fact that

		if (a=b) {code;}

	is syntactically valid and sometimes even correct.  It puts
	the value of "b" into "a" and then executes "code" if "a" is
	non-zero.  What the programmer probably meant was

		if (a==b) {code;}

	which executes "code" if "a" and "b" are equal.

	(17 Apr 1995)

goto

	<programming> (Or "GOTO", "go to", "GO TO", "JUMP", "JMP") A
	construct and {keyword} found in several higher-level
	programming languages (e.g. {FORTRAN}, {COBOL}, {BASIC}, {C})
	to cause an {unconditional jump} or transfer of {control} from
	one point in a program to another.  The destination of the
	jump is usually indicated by a {label}.

	In some languages, a label is a line number, in which case
	every statement may be labelled, in others a label is an
	optional alphanumeric {identifier}.  In any case, the
	destination label usually follows the GOTO keyword.

	Use of the GOTO instruction in {high level language}
	programming fell into disrepute with the development and
	general acceptance of {structured programmimg}, and especially
	following the famous article "GOTO statement {considered
	harmful}".  Since a GOTO is effectively an {assignment} to the
	{program counter}, it is tempting to make the generalisation
	"assignment considered harmful" and indeed, this is the basis
	of {functional programming}.

	Nearly(?) all {machine language} {instruction set}s include a
	GOTO instruction, though in this context it is usually called
	branch or jump or some {mnemonic} based on these.

	See also {COME FROM}.

	(17 Apr 1995)

Gottlob Frege

	<person, history, philosophy, mathematics, logic, theory>
	(1848-1925) A mathematician who put mathematics on a new and
	more solid foundation.  He purged mathematics of mistaken,
	sloppy reasoning and the influence of Pythagoras.  Mathematics
	was shown to be a subdivision of {formal logic}.

	[Where?]

	(14 Jul 1997)

Government OSI Profile

	<networking, standard> (GOSIP) A subset of {OSI} {standards}
	specific to US Government procurements, designed to maximize
	{interoperability} in areas where plain OSI standards are
	ambiguous or allow excessive options.

	(13 Dec 1995)

go voice

	<communications> When two or more parties stop communicating
	digitally and resuming the conversation via voice
	communication over the telephone.

	Prototypically this is used (e.g., "Wanna go voice?") between
	two modem users to denote the action of picking up the phone
	while shutting off the modem, in order to use the same line
	for voice communication as had was being used for data
	transmission.

	Compare: {Voice-Net}.

	(31 Jan 1997)

GP

	Early system on UNIVAC I or II.  Listed in CACM 2(5):16 (May
	1959).

GPF

	{General Protection failure}/fault

GPIB

	{IEEE 488}

GPL

	1. {General Purpose Language}.

	2. ["A Sample Management Application Program in a Graphical
	Data-driven Programming language", A.L. Davis et al, Digest of
	Papers, Compcon Spring 81, Feb 1981, pp. 162-167].

	3. {Genken Programming Language}.

	4. {General Public License}.

GPM

	General Purpose Macro-generator.  Early text-processing
	language similar to TRAC, implemented on Atlas 2.  "A General
	Purpose Macrogenerator", C. Strachey, Computer J 8(3):225-241
	(Oct 1965).

GPS

	{Global Positioning System}

GPSS

	General Purpose Systems Simulator.  Geoffrey Gordon, 1960.
	Discrete simulations.  "The Application of GPSS V to Discrete
	System Simulation", G.  Gordon, P-H 1975.  Versions include
	GPSS II (1963), GPSS III (1965), GPS/360 (1967), and GPSS V
	(1970).

GPV

	{General Public Virus}

GPX

	Early system on UNIVAC II.  Listed in CACM 2(5):16 (May 1959).

GRAAL

	("Grail") General Recursive Applicative and Algorithmic
	Language.  FP with polyadic combinators.  "Graal: A Functional
	Programming System with Uncurryfied Combinators and its
	Reduction Machine", P. Bellot in ESOP 86, G. Goos ed, LNCS
	213, Springer 1986.

Grace Hopper

	<person> Rear Admiral Grace Hopper (1906-1992) US Navy, is
	believed to have concieved the concept of the {compiler} with
	the {A-0} in 1952.  She also developed the first commercial
	{high-level language}, which eventually evolved into {COBOL}.
	She worked on the {Mark I} computer with Howard Aiken and with
	{BINAC} in 1949.

	See also {bug}.

	(31 Jan 1995)

GRAF

	GRaphic Additions to FORTRAN.

	{FORTRAN} plus graphic data types.

	["GRAF: Graphic Additions to FORTRAN", A. Hurwitz et al, Proc
	SJCC 30 (1967)].

	[Sammet 1969, p. 674].

	(23 Jan 1995)

Graffiti

	Handwriting recognition software for the {Newton} and {Zoomer}
	which recognises symbols that aren't necessarily letters.
	This gives greater speed and accuracy.  It was written by
	{Berkeley Softworks}.

	(24 Jan 1995)

GRAIL

	Graphical Input Language.

	A {flow chart} language entered on a graphics tablet.  The
	graphical follow-on to {JOSS}.

	["The GRAIL Language and Operations", T.O. Ellis et al,
	RM-6001-ARPA, RAND, Sept 1969].

	(23 Jan 1995)

GRAIN

	A pictorial {query language}.

	["Pictorial Information Systems", S.K.  Chang et al eds,
	Springer 1980].

	(23 Jan 1995)

grain

	{granularity}

GRAM

	An extension of {BNF} used by the {SIS} compiler generator.

	["SIS - Semantics Implementation System", P.D. Mosses, TR
	DAIMI MD-30, Aarhus U, Denmark].

	(23 Jan 1995)

grammar

	A formal definition of the syntactic structure of a language
	(see {syntax}), normally given in terms of {production rule}s
	which specify the order of constituents and their
	sub-constituents in a {sentence} (a well-formed string in the
	language).  Each rule has a left-hand side symbol naming a
	syntactic category (e.g. "noun-phrase" for a {natural
	language} grammar) and a right-hand side which is a sequence
	of zero or more symbols.  Each symbol may be either a
	{terminal symbol} or a non-terminal symbol.  A terminal symbol
	corresponds to one "{lexeme}" - a part of the sentence with
	no internal syntactic structure (e.g. an identifier or an
	operator in a computer language).  A non-terminal symbol is
	the left-hand side of some rule.

	One rule is normally designated as the top-level rule which
	gives the structure for a whole sentence.

	A grammar can be used either to parse a sentence (see
	{parser}) or to generate one.  Parsing assigns a terminal
	syntactic category to each input token and a non-terminal
	category to each appropriate group of tokens, up to the level
	of the whole sentence.  Parsing is usually preceded by
	{lexical analysis}.  Generation starts from the top-level rule
	and chooses one alternative production wherever there is a
	choice.

	See also {BNF}, {yacc}, {attribute grammar}, {grammar
	analysis}.

grammar analysis

	A program written in {ABC} for answering such questions as
	"what are the start symbols of all rules", "what symbols can
	follow this symbol", "which rules are left recursive", and so
	on.  Includes a grammar of {ISO Pascal}.

	Version 1 by Steven Pemberton <Steven.Pemberton@cwi.nl>.
	Ports to {Unix}, {MS-DOS}, {Atari}, {Macintosh}.  FTP:
	ftp.eu.net, ftp.nluug.net
	programming/languages/abc/examples/grammar/.

	(05 Jul 1993)

grammatical inference

	Deducing a {grammar} from given examples.  Also known as
	"inductive inference" and recently as "computational
	learning".

granularity

	<jargon, parallelism> The size of the units of {code} under
	consideration in some context.  The term generally refers to
	the level of detail at which code is considered, e.g. "You can
	specify the granularity for this profiling tool".

	The most common computing use is in parallelism where "fine
	grain parallelism" means individual tasks are relatively small
	in terms of code size and execution time, "course grain" is
	the opposite.  You talk about the "granularity" of the
	parallelism.

	The smaller the granularity, the greater the potential for
	parallelism and hence speed-up but the greater the overheads
	of synchronisation and communication.

	(08 May 1997)

Grapes

	A {Modula}-like system description language.

	E-mail: <peter@cadlab.cadlab.de>.

	["GRAPES Language Description.  Syntax, Semantics and Grammar
	of GRAPES-86", Siemens Nixdorf Inform, Berlin 1991, ISBN
	3-8009-4112-0].

Grapevine

	A distributed system project.

	[Who?  Where?  Why?]

graph

	1. <mathematics> A collection of {nodes} and {edges}.

	See also {connected graph}, {degree}, {directed graph}, {Moore
	bound}, {regular graph}, {tree}.

	2. <graphics> A visual representation of algebraic equations
	or data.

	(22 Sep 1996)

graph coloring

	{graph colouring}

graph colouring

	<application> A {constraint-satisfaction} problem often used
	as a test case in research, which also turns out to be
	equivalent to certain real-world problems (e.g. {register
	allocation}).  Given a {connected graph} and a fixed number of
	colours, the problem is to assign a colour to each node,
	subject to the constraint that any two connected nodes cannot
	be assigned the same colour.  This is an example of an
	{NP-complete} problem.

	See also {four colour map theorem}.

Graphic ALGOL

	Generation of shaded perspective picures in real time.

	["An Extended ALGOL 60 for Shaded Computer Graphics",
	B. Jones, Proc ACM Symp on Graphic Languages, Apr 1976].

Graphical Kernel System

	(GKS) A {standard} for graphical input/output.  {ANSI} X3.124.
	Worked on by the {ISO}/{IEC} group {JTC1/SC24}.

	[More detail?].

Graphical User Interface

	<operating system> (GUI) The use of pictures rather than just
	words to represent the input and output of a program.  A
	program with a GUI runs under some {windowing system}
	(e.g. The {X Window System}, {Microsoft Windows}, {Acorn}
	{RISC OS}, {NEXTSTEP}).  The program displays certain {icons},
	{buttons}, {dialogue boxes} etc. in its {windows} on the
	screen and the user controls it mainly by moving a {pointer}
	on the screen (typically controlled by a {mouse}) and
	selecting certain objects by pressing buttons on the mouse
	while the pointer is pointing at them.

	Though {Apple Computer} would like to claim they invented the
	GUI with their {Macintosh} {operating system}, the concept
	originated in the early 1970s at {Xerox}'s {PARC} laboratory.

	Compare {command line interface}.

	(12 Jan 1996)

Graphic Display Interface

	<hardware> (GDI) {graphics adaptor}.

	(16 Mar 1995)

Graphic Language

	For specifying graphic operations.

	["A Problem Oriented Graphic Language", P.J. Schwinn, proc ACM
	22nd Natl Conf, 1967].

	[Sammet 1969, p. 677].

graphics accelerator

	<graphics, hardware> {Hardware} (often an extra circuit board)
	to perform tasks such as plotting lines and surfaces in two or
	three dimensions, filling, shading and hidden line removal.

	(14 Jul 1997)

graphics adapter

	{graphics adaptor}

graphics adaptor

	<hardware, graphics> (Or "graphics adapter", "graphics card",
	"video adaptor", etc.) A circuit board fitted to a computer,
	especially an {IBM PC}, containing the necessary {video
	memory} and other electronics to provide a {bitmap display}.

	Adaptors vary in the {resolution} (number of {pixels}) and
	number of colours they can display, and in the {refresh rate}
	they support.  These parameters are also limited by the
	{monitor} to which the adaptor is connected.  A number of such
	{display standards}, e.g. {SVGA}, have become common and
	different {software} requires or supports different sets.

	(16 Sep 1996)

graphics card

	{graphics adaptor}

Graphics Interchange Format

	<graphics, file format> /gif/, occasionally /jif/ (GIF, GIF
	89A) A standard for digitised {images} compressed with the
	{LZW} {algorithm}, defined in 1987 by {CompuServe} (CIS).

	Graphics Interchange Format and GIF are service marks of
	{CompuServe} Incorporated.  This only affects use of GIF
	within Compuserve, and pass-through licensing for software to
	access them, it doesn't affect anyone else's use of GIF.  It
	followed from a 1994 legal action by {Unisys} against CIS for
	violating Unisys's {LZW} {software patent}.  The CompuServe
	Vice President has stated that "CompuServe is committed to
	keeping the GIF 89A specification as an open, fully-supported,
	non-proprietary specification for the entire on-line community
	including the {World-Wide Web}".

	{Filename extension}: .gif.

	{File format (ftp://peipa.essex.ac.uk/ipa/info/file-formats)}.

	{GIF89a specification
	(http://asterix.seas.upenn.edu/~mayer/lzw_gif/gif89a.html)}.

	{(Animated GIFs (http://www.n-vision.com/panda/gifanim/)}.

	(14 Dec 1997)

Graph-Oriented Object Database

	<language, database> (GOOD) A graph manipulation language for
	use as a {database query language}.

	["A Graph-Oriented Object Database Model", M. Gyssens et al,
	Proc ACM Symp Princs of Database Sys, Mar 1990].

	(07 Mar 1995)

graph plotter

	{plotter}

graph reduction

	A technique invented by Chris Wadsworth where an expression is
	represented as a {directed graph} (usually drawn as an
	inverted tree).  Each node represents a function call and its
	subtrees represent the arguments to that function.  Subtrees
	are replaced by the expansion or value of the expression they
	represent.  This is repeated until the tree has been reduced
	to a value with no more function calls (a {normal form}).

	In contrast to {string reduction}, graph reduction has the
	advantage that common subexpressions are represented as
	pointers to a single instance of the expression which is only
	reduced once.  It is the most commonly used technique for
	implementing {lazy evaluation}.

graph rewriting system

	An extension of a {term rewriting system} which uses {graph
	reduction} on terms represented by {directed graph}s to avoid
	duplication of work by sharing expressions.

GRAPPLE

	GRAPh Processing LanguagE.  1968.

	["A Directed Graph Representation for Computer Simulation of
	Belief Systems", L.G. Tesler et al, Math Biosciences 2:19-40
	(1968)].

GRAS

	A {public domain} {graph-oriented database} system for
	{software engineering} applications from {RWTH Aachen}.

GRASP/Ada

	Graphical Representation of Algorithms, Structures and
	Processes.

	["A Graphically Oriented Specification Language for Automatic
	Code Generation", J.H. Cross, Auburn U, NASA CR-183212, 1989].

GRASPIN

	An Esprit project to develop a personal software engineering
	environment to support the construction and verification of
	distributed and non-sequential software systems.

grault

	/grawlt/ Yet another {metasyntactic variable}, invented by
	Mike Gallaher and propagated by the {GOSMACS} documentation.
	See {corge}.

Gray

	A {parser generator} written in {Forth} by Martin Anton Ertl
	<anton@mips.complang.tuwien.ac.at>.  Gray takes grammars in an
	{extended BNF} and produces executable Forth code for
	{recursive descent parser}s.  There is no special support for
	error handling.  Version 3 runs under {Tile Forth} Release 2
	by Mikael Patel.

	(22 May 1992)

graybar land

	<jargon> The place you go while you're staring at a computer
	that's processing something very slowly (while you watch the
	grey bar creep across the screen).

	"I was in graybar land for hours, waiting for that CAD
	rendering".

	(17 Apr 1997)

gray code

	A binary sequence used to convert the angular position of a
	disk to digital form.  Gray code has the property that only
	one bit changes between any two positions.  A radial line of
	sensors reads the code off the surface of the disk and if the
	disk is half-way between two positions each sensor might read
	its bit from both positions at once but since only one bit
	differs between the two, the value read is guaranteed to be
	one of the two valid values rather than some third (invalid)
	combination (a {glitch}).

	One possible {algorithm} for generating a gray code sequence
	is to toggle bits in the order 0, 1, 0, 2, 0, 1, 0, 3, ...
	This can also be stated as "toggle the lowest numbered bit
	that results in a new code".  Here is a four bit gray code
	sequence generated in this way:

		0 0 0 0
		0 0 0 1
		0 0 1 1
		0 0 1 0
		0 1 1 0
		0 1 1 1
		0 1 0 1
		0 1 0 0
		1 1 0 0
		1 1 0 1
		1 1 1 1
		1 1 1 0
		1 0 1 0
		1 0 1 1
		1 0 0 1
		1 0 0 0

	[Why "Gray"?]

	(09 Nov 1994)

gray-scale

	<spelling> US spelling of "{grey-scale}".

<gr&d>

	<chat> Grinning, running and ducking.

	See {emoticon}.

	(17 Mar 1995)

GRE

	{Generic Routing Encapsulation}

greater than

	<character> ">" {ASCII} character 62.

	Common names: {ITU-T}: greater than; ket ("<" = bra); right
	angle; right angle bracket; right broket.  Rare: into,
	towards; write to; blow ("<" = suck); gozinta; out; zap (all
	from {Unix} {I/O redirection}); {INTERCAL}: right angle.

	See also {less than}.

	(17 Mar 1995)

greatest lower bound

	<theory> (glb, meet, infimum) The greatest lower bound of two
	elements, a and b is an element c such that c <= a and c <= b
	and if there is any other lower bound c' then c' <= c.

	The greatest lower bound of a set S is the greatest element b
	such that for all s in S, b <= s.  The glb of mutually
	comparable elements is their minimum but in the presence of
	incomparable elements, if the glb exists, it will be some
	other element less than all of them.

	glb is the dual to {least upper bound}.

	(In {LaTeX} "<=" is written as {\sqsubseteq}, the glb of two
	elements a and b is written as a {\sqcap} b and the glb of set
	S as \bigsqcap S).

	(03 Feb 1995)

Great Renaming

	The {flag day} in 1985 on which all of the non-local groups on
	the {Usenet} had their names changed from the net.- format to
	the current multiple-hierarchies scheme.  Used especially in
	discussing the history of newsgroup names.  "The oldest
	sources group is comp.sources.misc; before the Great Renaming,
	it was net.sources."

Great Runes

	Uppercase-only text or display messages.  Some archaic
	{operating system}s still emit these.

	See also {runes}, {smash case}, {fold case}.

	Decades ago, back in the days when it was the sole supplier of
	long-distance hardcopy transmittal devices, the Teletype
	Corporation was faced with a major design choice.  To shorten
	code lengths and cut complexity in the printing mechanism, it
	had been decided that teletypes would use a monocase font,
	either ALL UPPER or all lower.  The Question Of The Day was
	therefore, which one to choose.  A study was conducted on
	readability under various conditions of bad ribbon, worn print
	hammers, etc.  Lowercase won; it is less dense and has more
	distinctive letterforms, and is thus much easier to read both
	under ideal conditions and when the letters are mangled or
	partly obscured.  The results were filtered up through
	{management}.  The chairman of Teletype killed the proposal
	because it failed one incredibly important criterion:

	  "It would be impossible to spell the name of the Deity
	  correctly."

	In this way (or so, at least, hacker folklore has it)
	superstition triumphed over utility.  Teletypes were the major
	input devices on most early computers, and terminal
	manufacturers looking for corners to cut naturally followed
	suit until well into the 1970s.  Thus, that one bad call stuck
	us with Great Runes for thirty years.

	(02 Dec 1994)

Great Worm

	{Internet Worm}

greek

	1. <text, graphics> To display text as abstract dots and lines
	in order to give a preview of layout without actually being
	legible.  This is faster than drawing the characters correctly
	which may require scaling or other transformations.  Greeking
	is particularly useful when displaying a reduced image of a
	document where the text would be too small to be legible on
	the display anyway.

	2. <text> {content-free} text used as mock-{content} when
	testing a given page layout or {font}.  The most common bit of
	greek (or "greeking" or "greeked text") is:

	"Lorem ipsum dolor sit amet, consectetaur adipisicing elit,
	sed do eiusmod tempor incididunt ut labore et dolore magna
	aliqua. Ut enim ad minim veniam, quis nostrud exercitation
	ullamco laboris nisi ut aliquip ex ea commodo consequat.  Duis
	aute irure dolor in reprehenderit in voluptate velit esse
	cillum dolore eu fugiat nulla pariatur. Excepteur sint
	occaecat cupidatat non proident, sunt in culpa qui officia
	deserunt mollit anim id est laborum."

	This continues at length and variously.  This is not really
	Greek, but badly garbled Latin.  It started life as section
	1.10.32 of Cicero's "De Finibus Bonorum et Malorum", beginning
	"Neque porro quisquam est qui dolorem ipsum quia dolor sit
	amet, consectetur, adipisci velit..." (meaning roughly: "Nor,
	moreover, is there anyone who loves pain itself, /as/ pain
	[or: simply because it is pain], and who seeks after it [and
	wants it?].")  However, since textual fidelity was unimportant
	to the goal of having {random} text to fill a page, it has
	degraded over the centuries.

	The point of using this text, or some other text of incidental
	intelligibility, is that it has a more-or-less normal (for
	English and Latin, at least) distribution of {ascenders},
	{descenders}, and word-lengths, as opposed to just using "abc
	123 abc 123", "Content here content here", or the like.

	(07 Jul 1997)

greeking

	{greek}

Green

	A language proposed by Cii {Honeywell-Bull} to meet the DoD
	{Ironman} requirements which led to {Ada}.  This language won
	in 1979.

	["On the GREEN Language Submitted to the DoD", E.W. Dijkstra,
	SIGPLAN Notices 13(10):16-21 (Oct 1978)].

	(02 Dec 1994)

Green Book

	1.  <publication> Informal name for one of the four standard
	references on {PostScript}.  The other three official guides
	are known as the {Blue Book}, the {Red Book}, and the {White
	Book}.

	["PostScript Language Program Design", Adobe Systems,
	Addison-Wesley, 1988 (ISBN 0-201-14396-8)].

	2. <publication> Informal name for one of the three standard
	references on {SmallTalk}.  Also associated with blue and red
	books.

	["Smalltalk-80: Bits of History, Words of Advice", by Glenn
	Krasner (Addison-Wesley, 1983; QA76.8.S635S58; ISBN
	0-201-11669-3)].

	3.  <publication> The "X/Open Compatibility Guide", which
	defines an international standard {Unix} environment that is a
	proper superset of {POSIX}/SVID.  It also includes
	descriptions of a standard utility toolkit, systems
	administrations features, and the like.  This grimoire is
	taken with particular seriousness in Europe.  See {Purple
	Book}.

	4.  <publication> The {IEEE} 1003.1 {POSIX} Operating Systems
	Interface standard has been dubbed "The Ugly Green Book".

	5.  <publication> Any of the 1992 standards issued by the
	{ITU-T}'s tenth plenary assembly.  These include, among other
	things, the dreadful {X.400} {electronic mail} standard and
	the Group 1 through 4 fax standards.

	6. {Green Book CD-ROM}.

	See also {book titles}.

	(03 Dec 1996)

Green Book CD-ROM

	A standard {CD-ROM} format developed by {Philips} for {CD-i}.
	It is {ISO 9660} compliant and uses mode 2 form 2 addressing.
	It can only be played on drives which are XA ({Extended
	Architecture}) compatible.

	Many Green Book discs contain {CD-i} applications which can
	only be played on a {CD-i} player but many others contain
	films or music videos.  Video CDs in Green Book format are
	normally labelled "Digital Video on CD"

	Green Book was obsoleted by {White book CD-ROM} in March 1994.

	(02 Nov 1994)

green bytes

	(Or "green words") Meta-information embedded in a file, such
	as the length of the file or its name; as opposed to keeping
	such information in a separate description file or record.
	The term comes from an {IBM} user's group meeting (ca. 1962)
	at which these two approaches were being debated and the
	diagram of the file on the blackboard had the "green bytes"
	drawn in green.

	By extension, the non-data bits in any self-describing format.
	"A GIF file contains, among other things, green bytes
	describing the packing method for the image".

	Compare {out-of-band}, {zigamorph}, {fence}.

	(02 Nov 1994)

green card

	[after the "IBM System/360 Reference Data" card] A summary of
	an assembly language, even if the colour is not green.  Less
	frequently used now because of the decrease in the use of
	assembly language.  "I'll go get my green card so I can check
	the {addressing mode} for that instruction."  Some green cards
	are actually booklets.

	The original green card became a yellow card when the
	System/370 was introduced, and later a yellow booklet.  An
	anecdote from IBM refers to a scene that took place in a
	programmers' terminal room at Yorktown in 1978.  A luser
	overheard one of the programmers ask another "Do you have a
	green card?"  The other grunted and passed the first a thick
	yellow booklet.  At this point the luser turned a delicate
	shade of olive and rapidly left the room, never to return.

green lightning

	[IBM] 1. Apparently random flashing streaks on the face of
	3278-9 terminals while a new symbol set is being downloaded.
	This hardware bug was left deliberately unfixed, as some
	genius within IBM suggested it would let the user know that
	"something is happening".  That, it certainly does.  Later
	microprocessor-driven IBM colour graphics displays were
	actually *programmed* to produce green lightning!

	2. [proposed] Any bug perverted into an alleged feature by
	adroit rationalisation or marketing.  "Motorola calls the CISC
	cruft in the 88000 architecture "compatibility logic", but I
	call it green lightning".  See also {feature}.

green machine

	A computer or peripheral device that has been designed and
	built to military specifications for field equipment (that is,
	to withstand mechanical shock, extremes of temperature and
	humidity, and so forth).  Comes from the olive-drab "uniform"
	paint used for military equipment.

green monitor

	{Advanced Power Management}

Green's Theorem

	<humour> (TMRC) For any story, in any group of people there
	will be at least one person who has not heard the story.  A
	refinement of the theorem states that there will be *exactly*
	one person (if there were more than one, it wouldn't be as bad
	to re-tell the story).  The name of this theorem is a play on
	a fundamental theorem in calculus.

	(16 Dec 1994)

grep

	<tool> A {Unix} command for searching files for lines matching
	a given {regular expression} (RE).  Named after the {qed}/{ed}
	editor subcommand "g/re/p", where re stands for a regular
	expression, to Globally search for the Regular Expression and
	Print the lines containing matches to it.  There are two other
	variants, fgrep which searches only for fixed strings and
	{egrep} which accepts extended REs but is usually the fastest
	of the three.

	Used by extension to mean "to look for something by pattern".
	When browsing through a large set of files, one may speak of
	"grepping around".  "Grep the bulletin board for the system
	backup schedule, would you?"  See also {vgrep}.

grey-scale

	<graphics> (US "gray-scale") 1. Composed of (discrete) shades
	of grey.  If the {pixels} of a grey-scale {image} have N
	{bit}s, they may take values from zero, representing black up
	to 2^N-1, representing white with intermediate values
	representing increasingly light shades of grey.  If N=1 the
	image is not called grey-scale but could be called
	{monochrome}.

	2. A range of acurately known shades of grey printed out for
	use in calibrating those shades on a display or printer.

	(17 Mar 1995)

Greystone Technologies

	<company> The producers of the {GT/M} {MUMPS} compiler and
	{GT/SQL} {pre-processor} for {VAX} and {DEC Alpha}.

	[Address?]

	(10 Jan 1995)

GRG

	A computer algebra system for differential geometry,
	gravitation and field theory.  Version 3.1 works with
	PSL-based REDUCE 3.3 or 3.4.

	E-mail: V.V. Zhytnikov <vvzhy@phy.ncu.edu.tw>.

	(16 Dec 1994)

GRIB

	GRid In Binary.

	The World Meteorological Organization's data format.

	(10 Jan 1995)

grick

	/grik/ ({WPI}, first used by Tim Haven to describe "grick
	trigonometry", a shortcut method of determing attack angles in
	grid-based games like Star Trek) Any integral increment of
	measurement.  E.g. "Please turn the stereo up a few gricks".

	(31 Jan 1995)

grilf

	Girl-friend.

	Like {newsfroup} and {filk}, a typo incarnated as a new word.
	Seems to have originated sometime in 1992.

	(31 Jan 1995)

Grim File Reaper

	<storage, operating system> (GFR) An {ITS} and {LISP Machine}
	utility to remove files according to some program-automated or
	semi-automatic manual procedure, especially one designed to
	reclaim mass storage space or reduce name-space clutter (the
	original GFR actually moved files to tape).

	See also {prowler}, {reaper}.  Compare {GC}, which discards
	only provably worthless stuff.

	(20 Jun 1996)

GRIND

	GRaphical INterpretive Display.

	A graphics input language for the {PDP-9}.

	["GRIND: A Language and Translator for Computer Graphics",
	A.P. Conn, Dartmouth, June 1969].

	(31 Jan 1995)

grind

	1. (MIT and Berkeley) To prettify hardcopy of code, especially
	LISP code, by reindenting lines, printing keywords and
	comments in distinct fonts (if available), etc.  This usage
	was associated with the MacLISP community and is now rare;
	{prettyprint} was and is the generic term for such operations.

	2. (Unix) To generate the formatted version of a document from
	the {nroff}, {troff}, {TeX}, or Scribe source.

	3. To run seemingly interminably, especially (but not
	necessarily) if performing some tedious and inherently useless
	task.  Similar to {crunch} or {grovel}.  Grinding has a
	connotation of using a lot of CPU time, but it is possible to
	grind a disk, network, etc.

	See also {hog}.

	4. To make the whole system slow.  "Troff really grinds a
	PDP-11."

	5. "grind grind" excl. Roughly, "Isn't the machine slow
	today!"

	(16 Dec 1994)

grind crank

	A mythical accessory to a {terminal}.  A crank on the side of
	a monitor, which when operated makes a zizzing noise and
	causes the computer to run faster.  Usually one does not refer
	to a grind crank out loud, but merely makes the appropriate
	gesture and noise.  See {grind} and {wugga wugga}.

	Historical note: At least one real machine actually had a
	grind crank - the R1, a research machine built toward the
	end of the days of the great vacuum tube computers, in 1959.
	R1 (also known as "The Rice Institute Computer" (TRIC) and
	later as "The Rice University Computer" (TRUC)) had a
	{single-step}/free-run switch for use when debugging programs.
	Since single-stepping through a large program was rather
	tedious, there was also a crank with a cam and gear
	arrangement that repeatedly pushed the single-step button.
	This allowed one to "crank" through a lot of code, then slow
	down to single-step for a bit when you got near the code of
	interest, poke at some registers using the console typewriter,
	and then keep on cranking.

GRIP

	Graph Reduction In Parallel.

	Simon Peyton Jones's GRIP machine built at {UCL}, now at the
	{University of Glasgow}.  It has many processors ({Motorola
	68020} or other) on {Futurebus} with intelligent memory units.

	(14 Dec 1994)

gripenet

	[IBM] A wry (and thoroughly unofficial) name for {IBM}'s
	internal {VNET} system, deriving from its common use by IBMers
	to voice pointed criticism of IBM management that would be
	taboo in more formal channels.

gritch

	/grich/ 1.  A complaint (often caused by a {glitch}).

	2. To complain.  Often verb-doubled: "Gritch gritch".

	3. A synonym for {glitch} (as verb or noun).

	(31 Jan 1995)

grix

	/griks/ ({WPI}) A meta-number, said to be an integer between 6
	and 7.  Used either alone or with {flib} or suffixes such as
	-ty, -teen, etc. to denote an arbitrary integer (see {N}).
	"This system will {bomb} if there are grixty-flib users on
	it."

	(31 Jan 1995)

groff

	GNU roff.

	{GNU}'s implementation of {roff} in {C++}.

	See also {nroff}, {troff}.

	Version 1.07 by James Clark <jjc@jclark.com>.

	FTP groff-1.07.tar.z from a {GNU archive site}.

	(03 Mar 1993)

grok

	/grok/, /grohk/ (From the novel "Stranger in a Strange Land",
	by Robert A. Heinlein, where it is a Martian word meaning
	literally "to drink" and metaphorically "to be one with")

	1. To understand, usually in a global sense.  Connotes
	intimate and exhaustive knowledge.

	Contrast {zen}, which is similar supernal understanding
	experienced as a single brief flash.  See also {glark}.

	2. Used of programs, may connote merely sufficient
	understanding.  "Almost all C compilers grok the "void" type
	these days."

	(31 Jan 1995)

gronk

	/gronk/ Popularised by Johnny Hart's comic strip "B.C." but
	the word apparently predates that.

	1. To clear the state of a {wedged} device and restart it.
	More severe than "to {frob}" (sense 2).

	2. [TMRC] To cut, sever, smash, or similarly disable.

	3. The sound made by many 3.5-inch diskette drives.  In
	particular, the microfloppies on a Commodore {Amiga} go
	"grink, gronk".

gronked

	1. Broken.  "The teletype scanner was gronked, so we took the
	system down."

	2. Of people, the condition of feeling very tired or (less
	commonly) sick.  "I've been chasing that bug for 17 hours now
	and I am thoroughly gronked!"  Compare {broken}, which means
	about the same as {gronk} used of hardware, but connotes
	depression or mental/emotional problems in people.

group

	A group G is a non-empty {set} upon which a {binary} operator
	* is defined with the following properties for all a,b,c in G:

	  Closure:     G is closed under *,  a*b in G
	  Associative: * is associative on G, (a*b)*c = a*(b*c)
	  Identity:    There is an identity element  e  such that
		       a*e = e*a = a.
	  Inverse:     Every element has a unique inverse a' such that
		       a * a' = a' * a = e.  The inverse is usually
		       written with a superscript -1.

Group Code Recording

	<storage> (GCR) A recording method used for 6250 BPI {magnetic
	tapes}.

	GCR typically uses a group of five bits of code to represent
	four bits of data, where the encoding ensures no more than two
	or three zeros occur in a row, and no more than eight or so
	ones occur in a row, where zeros represent an absense of
	magnetic change.

	GCR is also used on {Commodore Business Machines} {diskette}
	drives; the 4040, 8050, 154x, 157x and 158x series of 5.25"
	and 3.5" low and high density diskette drives used with 8-bit
	home computers circa 1977 to 1992.  Also used on {Amiga}
	internal and external drives.

	Compare {NRZI}, {PE}.

	(29 Aug 1997)

group identifier

	<operating system> (gid) A unique number, between 0 an 32767,
	identifying a set of {users} under {Unix}.  Gids are found in
	the /etc/{passwd} and /etc/group databases (or their {NIS}
	equivalents) and one is also associated with each file,
	indicating the group to which its group {permissions} apply.

	(01 Dec 1996)

Group Separator

	<character> (GS) {ASCII} character 29.

	(28 Jun 1996)

Group-Sweeping Scheduling

	<storage, algorithm> (GSS) A disk scheduling strategy in which
	requests are served in cycles, in a round-robin manner.  To
	reduce disk arm movements ("{seek}ing"), the set of streams is
	divided into groups that are served in fixed order.  Streams
	within a group are served according to "{SCAN}".

	If all clients are assigned to one group, GSS reduces to SCAN,
	and if all clients are assigned to separate groups, GSS
	effectively becomes round-robin scheduling.  The service order
	within one group is not fixed, and a stream may in fact be
	first in one cycle while last in the next.  This variation has
	to be masked by extra buffering but whereas SCAN requires
	buffer space for all streams, GSS can reuse the buffer for
	each group and effect a trade-off between {seek optimisation}
	and buffer requirements.

	(12 Nov 1995)

Groupware

	See {CSCW}.

Groupwise

	<software, networking> A {workgroup} application suite
	offering {electronic mail} and diary scheduling from {Novell,
	Inc.}. It can operate on a number of {platforms}.

	Groupwise was previously known as {WordPerfect Office}, and is
	an extensible system suitable for {LAN} or {WAN} operation.
	{Mail gateway} software is available for a number of
	{protocol}s including {SMTP}, allowing the exchange of mail
	with the {Internet}.

	(23 Sep 1995)

grovel

	1. To work interminably and without apparent progress.  Often
	used transitively with "over" or "through".  "The file
	scavenger has been groveling through the /usr directories for
	10 minutes now."  Compare {grind} and {crunch}.  Emphatic
	form: "grovel obscenely".

	2. To examine minutely or in complete detail.  "The compiler
	grovels over the entire source program before beginning to
	translate it."  "I grovelled through all the documentation,
	but I still couldn't find the command I wanted."

grunge

	/gruhnj/ 1. That which is grungy, or that which makes it so.

	2. [Cambridge] Code which is inaccessible due to changes in
	other parts of the program.  The preferred term in North
	America is {dead code}.

GS

	{Group Separator}

GSBL

	"GSBL: An Algebraic Specification Language Based on
	Inheritance", S.  Clerici et al in in ECOOP '88, S. Gjessing
	et al eds, LNCS 322, Springer 1988, pp.78-92.

GSI

	{Gensym Standard Interface}

GSL

	Grenoble System Language.  M. Berthaud, IBM, Grenoble.  "GSL
	Language Reference Manual", M. Berthaud et al, March 1973.  "A
	MOL-Based Software Construction System", M. Berthaud et al, in
	Machine Oriented Higher Level Languages, W. van der Poel, N-H
	1974, pp.151-157.

GSM

	<communications> {Global System for Mobile
	Communications}.

GSPL

	<language> {Greenberg's System Programming Language}.

	Bernard Greenberg.

	(09 May 1995)

GSS

	<storage> {Group-Sweeping Scheduling}.

	(12 Nov 1995)

GSS-API

	{Generic Security Service Application Programming Interface}

GT/SQL

	<tool> An {SQL} {pre-processor} from {Greystone Technologies}
	which combines {MUMPS} code with {SQL} code and generates code
	that can work with a {database} from both the MUMPS and SQL
	perspectives.  This is often done when a database is to be
	made available in a {client/server} environment, where the
	MUMPS database serves one or more SQL {client}s.

	(10 Jan 1995)

guard

	<programming> 1. In {functional programming}, a {Boolean}
	expression attached to a function definition specifying when
	(for what arguments) that definition is appropriate.

	2. In (parallel) {logic programming}, a Boolean expression
	which is used to select a {clause} from several alternative
	matching clauses.

	See {Guarded Horn Clauses}.

	3. In {parallel} languages, a {Boolean} expression which
	specifies when an message may be sent or received.

	(09 May 1995)

Guarded Horn Clauses

	<language> (GHC) A parallel dialect of {Prolog} by K. Ueda in
	which each {clause} has a {guard}.  GHC is similar to
	{Parlog}.  When several clauses match a {goal}, their guards
	are evaluated in parallel and the first clause whose guard is
	found to be true is used and others are rejected.  It uses
	{committed-choice nondeterminism}.

	See also {FGHC}, {KL1}.

	(09 May 1995)

gubbish

	<jargon> /guhb'*sh/ (A portmanteau of "garbage" and "rubbish"
	which may have originated with SF author Philip K. Dick)
	Garbage; crap; nonsense.  "What is all this gubbish?"  The
	opposite portmanteau "rubbage" is also reported.

	(09 May 1995)

GUI

	{Graphical User Interface}

GUIDE

	{Graphical User Interface} Development Environment from {Sun}.

Guide

	A {hypertext} system from the University of Kent (GB) and
	{OWL} for displaying on-line documentation.

Guide to Available Mathematical Software

	<mathematics>

	{Home (http://gams.nist.gov/)}

	(28 Apr 1995)

guiltware

	/gilt'weir/ 1. A piece of {freeware} decorated with a message
	telling one how long and hard the author worked on it and
	intimating that one is a no-good freeloader if one does not
	immediately send the poor suffering martyr gobs of money.

	2. {Shareware} that works.

gun

	<jargon> ({ITS}, from the ":GUN" command) To forcibly
	terminate a program or job (computer, not career).  "Some
	idiot left a background process running soaking up half the
	cycles, so I gunned it."

	Compare {can}.

	(27 Feb 1995)

gunch

	/guhnch/ <jargon> ({TMRC}) To push, prod, or poke at a device
	that has almost (but not quite) produced the desired result.
	Implies a threat to {mung}.

	(27 Feb 1995)

gunzip

	<tool, compression> The decompression utility corresponding to
	{gzip}.  In operating systems with links, gunzip is just a
	link to gzip and its function can be invoked by passing a "-d"
	flag to gzip.

	(03 Jan 1996)

Gupta Corporation

	<company> The vendor of {SQLWindows}.

	Gupta Corporation provides application development and
	deployment software for {client-server} {applications},
	consisting of a {relational database}, application development
	tools and transparent connectivity software.

	Gupta employs 400 people in 15 offices worldwide, including
	the United States, Europe and Asia.  Gupta's 1993 fiscal year
	income was $5.6 million and their revenue was $56.1 million.
	Gupta sells client-server system components for networks of
	{personal computers}.

	{Home (http://www.wji.com/gupta/htmls/homepage.html)}.

	Address: 1060 Marsh Road, Menlo Park, CA 94025, USA.

	Telephone: +1 (415) 321 9500.  Fax: +1 (415) 321 5471.

	(28 Apr 1997)

gurfle

	<exclamation> /ger'fl/ An expression of shocked disbelief.
	"He said we have to recode this thing in {FORTRAN} by next
	week.  Gurfle!"

	Compare {weeble}.

	(01 Jun 1996)

guru

	<job> An expert, especially in "{Unix} guru".  Implies not
	only {wizard} skill but also a history of being a knowledge
	resource for others.  Less often, used (with a qualifier) for
	other experts on other systems, as in "VMS guru".

	See {source of all good bits}.

	(01 Jun 1996)

guru meditation

	{Amiga} equivalent of {panic} in {Unix} (sometimes just called
	a "guru" or "guru event").  When the system crashes, a cryptic
	message of the form "GURU MEDITATION #XXXXXXXX.YYYYYYYY" may
	appear, indicating what the problem was.  An Amiga guru can
	figure things out from the numbers.  Generally a {guru} event
	must be followed by a {Vulcan nerve pinch}.

	This term is (no surprise) an in-joke from the earliest days
	of the Amiga.  There used to be a device called a "Joyboard"
	which was basically a plastic board built onto a joystick-like
	device; it was sold with a skiing game cartridge for the Atari
	game machine.  It is said that whenever the prototype OS
	crashed, the system programmer responsible would calm down by
	concentrating on a solution while sitting cross-legged on a
	Joyboard trying to keep the board in balance.  This position
	resembled that of a meditating guru.  Sadly, the joke was
	removed in AmigaOS 2.04.

Guy Lewis Steele, Jr.

	<person> A software engineer, currently at {Sun Microsystems,
	Inc.}  His most notable contributions to the art of computing
	include the design of {Scheme} (in cooperation with {Gerald
	Sussman}) and the design of the original command set of
	{Emacs}.  He is also known for his contribution to the {Jargon
	File} and for being the first to port {TeX} [from where to
	where?].

	(03 Dec 1996)

Guy Steele

	{Guy Lewis Steele, Jr.}

GVL

	Graphical View Language.  A visual language for specifying
	interactive graphical output by T.C.N. Graham & J.R. Cordy,
	Queen's University, Canada.

	["GVL: A Graphical, Functional Language for the Specification
	of Output in Programming Languages", J.R. Cordy &
	T.C.N. Graham, Proc IEEE Intl Conf on Comp Lang ICCL'90 (March
	1990)].

GW-Ada

	A new version of {Ada/Ed}?

	{MS-DOS version
	(ftp://wuarchive.wustl.edu/languages/ada/compiler/adaed/gwu/9309/dos)},
	{Macintosh version
	(ftp://wuarchive.wustl.edu/languages/ada/compilers/adaed/gwu/mac)}.

	(01 Sep 1993)

GW-BASIC

	<language> An early version of {MS-BASIC}.

	(12 May 1995)

gweep

	/gweep/ To {hack}, usually at night, or one who does so.  At
	{WPI}, from 1977 onwards, gweeps could often be found at the
	College Computing Center punching cards or crashing the
	{PDP-10} or, later, the {DEC-20}.  The term has survived the
	demise of those technologies, however, and is still alive in
	late 1991.  "I'm going to go gweep for a while.  See you in
	the morning."  "I gweep from 8 PM till 3 AM during the week."

	"Gweep" originated as an onomatopeiac term, evoking the sound
	of the (once-ubiquitous) {Hazeltine 9000} terminals' bell on
	WPI campus.

	A gweep is one step above a {fweep}.

	(31 Jan 1995)

GWHIS

	<World-Wide Web> A commercial version of {NCSA} {Mosaic} for
	{MS Windows} 3.x and {Windows for Workgroups}.  GWHIS was
	released by {Quadralay} Corporation on 30 September 1994.

	GWHIS Viewer for {Microsoft Windows} differs from {NCSA}
	{Mosaic} for {Microsoft Windows} in several ways including:

	A {hotlist} similiar to the {X Window System} version.  Edit
	Annotation and Delete Annotation work.  All Buttons and Menu
	Items are "greyed out" while files are being retreived and
	processed.  This prevents the user from queing up requests to
	the {TCP/IP} stack which causes many crashes.  {Look and Feel}
	are similiar to the X version.  Online Help is complete.
	Functional Setup program.  Greater overall stability.

	(16 Dec 1994)

GWM

	Generic Window Manager.  An extensible window manager for the
	{X Window System}.  It is built on top of an {interpreter} for
	the {WOOL} language.

	{(ftp://export.lcs.mit.edu/contrib/gwm)},
	{(ftp://avahi.inria.fr/contrib/gwm)}.

Gypsy

	Specification and verification of {concurrent} systems
	software.  {Message} passing using named {mailbox}es.
	Separately compilable units: routine (procedure, function, or
	process), type and constant definition, each with a list of
	access rights.

	["Report on the Language Gypsy", A.L.  Ambler et al, UT Austin
	ICSCS-CMP-1 Aug 1976].

gz

	{gzip}

gzip

	<tool, compression> {GNU} compression utility.  Gzip reduces
	the size of the named files using {Lempel-Ziv} {LZ77
	compression}.  Whenever possible, each file is replaced by one
	with the {filename extension} ".gz".  Compressed files can be
	restored to their original form using gzip -d or gunzip or
	zcat.

	The Unix "{compress}" utility is patented (by two separate
	patents, in fact) and is thus shunned by the GNU Project since
	it is not {free software}.  They have therefore chosen gzip,
	which is free of any known {software patent}s and which tends
	to compress better anyway.  All compressed files in the {GNU}
	{anonymous FTP} area (prep.ai.mit.edu/pub/gnu) are in gzip
	format and their names end in ".gz" (as opposed to
	"compress"-compressed files, which end in ".Z").

	Gzip can uncompress "compress"-compressed files and "pack"
	files (which end in ".z").  The decompression algorithms are
	not patented, only compression is.

	The gzip program is available from any {GNU archive site} in
	{shar}, {tar}, or gzipped tar format (for those who already
	have a prior version of gzip and want faster data
	transmission).  It works on virtually every {Unix} system,
	{MS-DOS}, {OS/2} and {VMS}.

h

	1. A simple {markup} language intended for quick conversion of
	existing text to {hypertext}.

	2. A method of marking common words to call attention to the
	fact that they are being used in a nonstandard, ironic, or
	humorous way.  Originated in the fannish catchphrase "Bheer
	is the One True Ghod!" from decades ago.  H-infix marking of
	"Ghod" and other words spread into the 1960s counterculture
	via underground comix, and into early hackerdom either from
	the counterculture or from SF fandom (the three overlapped
	heavily at the time).  More recently, the h infix has become
	an expected feature of benchmark names (Dhrystone, Rhealstone,
	etc.); this follows on from the original Whetstone (the name
	of a laboratory) but may have been influenced by the
	fannish/counterculture h infix.

	(04 Nov 1994)

H.261

	<networking, standard> A {video compression} {standard}
	developed by {ITU-T} before 1992 to work with {integrated
	service digital network}.  Data is compressed at the rate of
	64P kilobits per second, where P can range from 1 to 30
	depending on the number of ISDN channels used.  This standard
	was developed primarily to support {video phones} and {video
	conferencing}.

	See also {ivs}.

	{(http://www.crs4.it/~luigi/MPEG/mpeggloss-h.html#H.261)}

	[Date?  Details?]

	(03 Nov 1994)

Habitat

	<networking, graphics> The original term for online graphical
	{virtual communities} or worlds.  Created at Lucasfilm in 1985
	by Randy Farmer and Chip Morningstar.

	{(http://www.communities.com/habitat.html)}.

	(12 Jun 1996)

hack

	<jargon> 1. Originally, a quick job that produces what is
	needed, but not well.

	2.  An incredibly good, and perhaps very time-consuming, piece
	of work that produces exactly what is needed.

	3. To bear emotionally or physically.  "I can't hack this
	heat!"

	4. To work on something (typically a program).  In an
	immediate sense: "What are you doing?"  "I'm hacking TECO."
	In a general (time-extended) sense: "What do you do around
	here?"  "I hack TECO."  More generally, "I hack "foo"" is
	roughly equivalent to ""foo" is my major interest (or
	project)".  "I hack solid-state physics."  See {Hacking X for
	Y}.

	5. To pull a prank on.  See {hacker}.

	6. To interact with a computer in a playful and exploratory
	rather than goal-directed way.  "Whatcha up to?"  "Oh, just
	hacking."

	7.  Short for {hacker}.

	8. See {nethack}.

	9. (MIT) To explore the basements, roof ledges, and steam
	tunnels of a large, institutional building, to the dismay of
	Physical Plant workers and (since this is usually performed at
	educational institutions) the Campus Police.  This activity
	has been found to be eerily similar to playing adventure games
	such as {Dungeons and Dragons} and {Zork}.  See also
	{vadding}.

	See also {neat hack}, {real hack}.

	(26 Aug 1996)

hack attack

	<jargon> (Possibly by analogy with "Big Mac Attack" from
	advertisements for the McDonald's fast-food chain; the variant
	"big hack attack" is reported) Nearly synonymous with {hacking
	run}, though the latter more strongly implies an all-nighter.

	(26 Aug 1996)

hacked off

	<jargon> (Analogous to "pissed off") Said of {system
	administrators} who have become annoyed, upset, or touchy
	owing to suspicions that their sites have been or are going to
	be victimised by {crackers}, or used for inappropriate,
	technically illegal, or even overtly criminal activities.  For
	example, having unreadable files in your home directory called
	"worm", "lockpick", or "goroot" would probably be an effective
	(as well as impressively obvious and stupid) way to get your
	sysadmin hacked off at you.

	(26 Aug 1996)

hacked up

	<jargon, programming> Sufficiently {patched}, {kluge}d, and
	{tweaked} that the surgical scars are beginning to crowd out
	normal tissue (compare {critical mass}).  Not all programs
	that are hacked become "hacked up"; if modifications are done
	with some eye to coherence and continued maintainability, the
	software may emerge better for the experience.

	Contrast {hack up}.

	(26 Aug 1996)

hacker

	<person, jargon> (Originally, someone who makes furniture with
	an axe) 1. A person who enjoys exploring the details of
	programmable systems and how to stretch their capabilities, as
	opposed to most users, who prefer to learn only the minimum
	necessary.

	2. One who programs enthusiastically (even obsessively) or who
	enjoys programming rather than just theorizing about
	programming.

	3. A person capable of appreciating {hack value}.

	4. A person who is good at programming quickly.

	5. An expert at a particular program, or one who frequently
	does work using it or on it; as in "a {Unix} hacker".
	(Definitions 1 through 5 are correlated, and people who fit
	them congregate.)

	6. An expert or enthusiast of any kind.  One might be an
	astronomy hacker, for example.

	7. One who enjoys the intellectual challenge of creatively
	overcoming or circumventing limitations.

	8. (Deprecated) A malicious meddler who tries to discover
	sensitive information by poking around.  Hence "password
	hacker", "network hacker".  The correct term is {cracker}.

	The term "hacker" also tends to connote membership in the
	global community defined by the net (see {The Network} and
	{Internet address}).  It also implies that the person
	described is seen to subscribe to some version of the {hacker
	ethic}.

	It is better to be described as a hacker by others than to
	describe oneself that way.  Hackers consider themselves
	something of an elite (a meritocracy based on ability), though
	one to which new members are gladly welcome.  Thus while it is
	gratifying to be called a hacker, false claimants to the title
	are quickly labelled as "{bogus}" or a "{wannabee}".

	9. (University of Maryland, rare) A programmer who does not
	understand proper programming techniques and principles and
	doesn't have a Computer Science degree.  Someone who just
	bangs on the keyboard until something happens.  For example,
	"This program is nothing but {spaghetti code}.  It must have
	been written by a hacker".

	(26 Aug 1996)

hacker ethic

	<philosophy> 1. The belief that information-sharing is a
	powerful positive good, and that it is an ethical duty of
	hackers to share their expertise by writing free software and
	facilitating access to information and to computing resources
	wherever possible.

	2. The belief that system-cracking for fun and exploration is
	ethically OK as long as the cracker commits no theft,
	vandalism, or breach of confidentiality.

	Both of these normative ethical principles are widely, but by
	no means universally, accepted among hackers. Most hackers
	subscribe to the hacker ethic in sense 1, and many act on it
	by writing and giving away free software.  A few go further
	and assert that *all* information should be free and *any*
	proprietary control of it is bad; this is the philosophy
	behind the {GNU} project.

	Sense 2 is more controversial: some people consider the act of
	cracking itself to be unethical, like breaking and entering.
	But the belief that "ethical" cracking excludes destruction at
	least moderates the behaviour of people who see themselves as
	"benign" crackers (see also {samurai}).  On this view, it may
	be one of the highest forms of hackerly courtesy to (a) break
	into a system, and then (b) explain to the sysop, preferably
	by e-mail from a {superuser} account, exactly how it was done
	and how the hole can be plugged - acting as an unpaid (and
	unsolicited) {tiger team}.

	The most reliable manifestation of either version of the
	hacker ethic is that almost all hackers are actively willing
	to share technical tricks, software, and (where possible)
	computing resources with other hackers.  Huge cooperative
	networks such as {Usenet}, {FidoNet} and Internet (see
	{Internet address}) can function without central control
	because of this trait; they both rely on and reinforce a sense
	of community that may be hackerdom's most valuable intangible
	asset.

	(18 Dec 1995)

hacker humour

	A distinctive style of shared intellectual humour found among
	hackers, having the following marked characteristics:

	1. Fascination with form-vs.-content jokes, paradoxes, and
	humour having to do with confusion of metalevels (see {meta}).
	One way to make a hacker laugh: hold a red index card in front
	of him/her with "GREEN" written on it, or vice-versa (note,
	however, that this is funny only the first time).

	2. Elaborate deadpan parodies of large intellectual
	constructs, such as specifications (see {write-only memory}),
	standards documents, language descriptions (see {INTERCAL}),
	and even entire scientific theories (see {quantum
	bogodynamics}, {computron}).

	3. Jokes that involve screwily precise reasoning from bizarre,
	ludicrous, or just grossly counter-intuitive premises.

	4. Fascination with puns and wordplay.

	5. A fondness for apparently mindless humour with subversive
	currents of intelligence in it - for example, old Warner
	Brothers and Rocky & Bullwinkle cartoons, the Marx brothers,
	the early B-52s, and Monty Python's Flying Circus.  Humour
	that combines this trait with elements of high camp and
	slapstick is especially favoured.

	6. References to the symbol-object antinomies and associated
	ideas in Zen Buddhism and (less often) Taoism.  See {has the X
	nature}, {Discordianism}, {zen}, {ha ha only serious}, {AI
	koan}.

	See also {filk} and {retrocomputing}.  If you have an itchy
	feeling that all 6 of these traits are really aspects of one
	thing that is incredibly difficult to talk about exactly, you
	are (a) correct and (b) responding like a hacker.  These
	traits are also recognizable (though in a less marked form)
	throughout {science-fiction fandom}.

	(18 Dec 1995)

hacking run

	<jargon> (Analogy with "bombing run" or "speed run") A hack
	session extended long outside normal working times, especially
	one longer than 12 hours.  May cause you to "change {phase}
	the hard way".

	(26 Aug 1996)

Hacking X for Y

	[ITS] Ritual phrasing of part of the information which ITS
	made publicly available about each user.  This information
	(the INQUIR record) was a sort of form in which the user could
	fill out various fields.  On display, two of these fields were
	always combined into a project description of the form
	"Hacking X for Y" (e.g. ""Hacking perceptrons for Minsky"").
	This form of description became traditional and has since been
	carried over to other systems with more general facilities for
	self-advertisement (such as Unix {plan file}s).

Hackintosh

	1. <jargon, computer> An {Apple Lisa} that has been hacked
	into emulating a {Macintosh} (also called a "Mac XL").

	2. <jargon, computer> A {Macintosh} assembled from parts
	theoretically belonging to different models in the line.

	(08 Mar 1995)

hackish

	<jargon> /hak'ish/ 1. Said of something that is or involves a
	{hack}.

	2. Of or pertaining to {hacker}s or the hacker subculture.

	See also {true-hacker}.

	(08 Mar 1995)

hackishness

	<jargon> The quality of being or involving a {hack}.  This
	term is considered mildly silly.

	Synonym {hackitude}.

	(08 Mar 1995)

hackitude

	<jargon> An even sillier word for {hackishness}.

	(08 Mar 1995)

hack mode

	<jargon> Engaged in {hack}ing.  A Zen-like state of total
	focus on The Problem that may be achieved when one is hacking
	(this is why every good hacker is part mystic).  Ability to
	enter such concentration at will correlates strongly with
	wizardliness; it is one of the most important skills learned
	during {larval stage}.  Sometimes amplified as "deep hack
	mode".

	Being yanked out of hack mode (see {priority interrupt}) may
	be experienced as a physical shock, and the sensation of being
	in hack mode is more than a little habituating.  The intensity
	of this experience is probably by itself sufficient
	explanation for the existence of hackers, and explains why
	many resist being promoted out of positions where they can
	code.  See also {cyberspace}.

	Some aspects of hackish etiquette will appear quite odd to an
	observer unaware of the high value placed on hack mode.  For
	example, if someone appears at your door, it is perfectly okay
	to hold up a hand (without turning one's eyes away from the
	screen) to avoid being interrupted.  One may read, type, and
	interact with the computer for quite some time before further
	acknowledging the other's presence (of course, he or she is
	reciprocally free to leave without a word).  The understanding
	is that you might be in {hack mode} with a lot of delicate
	state in your head, and you dare not {swap} that context out
	until you have reached a good point to pause.  See also
	{juggling eggs}.

	(31 Jul 1996)

hack on

	To {hack}; implies that the subject is some pre-existing hunk
	of code that one is evolving, as opposed to something one
	might {hack up}.

hack together

	To throw something together so it will work.  Unlike "kluge
	together" or {cruft together}, this does not necessarily have
	negative connotations.

hack up

	To {hack}, but generally implies that the result is a quick
	hack.  Contrast this with {hack on}.  To "hack up on" implies
	a {quick-and-dirty} modification to an existing system.
	Contrast {hacked up}; compare {kluge up}, {monkey up}, {cruft
	together}.

hack value

	Often adduced as the reason or motivation for expending effort
	toward a seemingly useless goal, the point being that the
	accomplished goal is a hack.  For example, MacLISP had
	features for reading and printing Roman numerals, which were
	installed purely for hack value.  See {display hack} for one
	method of computing hack value, but this cannot really be
	explained, only experienced.  As Louis Armstrong once said
	when asked to explain jazz: "Man, if you gotta ask you'll
	never know."  (Feminists please note Fats Waller's explanation
	of rhythm: "Lady, if you got to ask you ain't got it.")

ha ha only serious

	(SF fandom, originally as mutation of HHOK, "Ha Ha Only
	Kidding") A phrase (often seen abbreviated as HHOS) that aptly
	captures the flavour of much hacker discourse.  Applied
	especially to parodies, absurdities, and ironic jokes that are
	both intended and perceived to contain a possibly disquieting
	amount of truth, or truths that are constructed on in-joke and
	self-parody.

	The {Jargon File} contains many examples of ha-ha-only-serious
	in both form and content.  Indeed, the entirety of hacker
	culture is often perceived as ha-ha-only-serious by hackers
	themselves; to take it either too lightly or too seriously
	marks a person as an outsider, a {wannabee}, or in {larval
	stage}.  For further enlightenment on this subject, consult
	any Zen master.  See also {AI koan}.

hair

	[back-formation from {hairy}] The complications that make
	something hairy.  "Decoding {TECO} commands requires a certain
	amount of hair."  Often seen in the phrase "infinite hair",
	which connotes extreme complexity.  Also in "hairiferous"
	(tending to promote hair growth): "GNUMACS elisp encourages
	lusers to write complex editing modes."  "Yeah, it's pretty
	hairiferous all right." (Or just: "Hair squared!")

hairy

	1. Annoyingly complicated.  "{DWIM} is incredibly hairy."

	2. Incomprehensible.  "{DWIM} is incredibly hairy."

	3. Of people, high-powered, authoritative, rare, expert,
	and/or incomprehensible.  Hard to explain except in context:
	"He knows this hairy lawyer who says there's nothing to worry
	about."  See also {hirsute}.

	A well-known result in {topology} called the Brouwer
	Fixed-Point Theorem states that any continuous transformation
	of a surface into itself has at least one {fixed point}.
	Mathematically literate hackers tend to associate the term
	"hairy" with the informal version of this theorem; "You can't
	comb a hairy ball smooth."

	The adjective "long-haired" is well-attested to have been in
	slang use among scientists and engineers during the early
	1950s; it was equivalent to modern "hairy" and was very likely
	ancestral to the hackish use.  In fact the noun "long-hair"
	was at the time used to describe a hairy person.  Both senses
	probably passed out of use when long hair was adopted as a
	signature trait by the 1960s counterculture, leaving hackish
	"hairy" as a sort of stunted mutant relic.

	(16 Apr 1995)

HAKMEM

	<publication> /hak'mem/ MIT AI Memo 239 (February 1972).  A
	legendary collection of neat mathematical and programming
	hacks contributed by many people at MIT and elsewhere.  (The
	title of the memo really is "HAKMEM", which is a 6-letterism
	for "hacks memo".)  Some of them are very useful techniques,
	powerful theorems, or interesting unsolved problems, but most
	fall into the category of mathematical and computer trivia.
	Here is a sampling of the entries (with authors), slightly
	paraphrased:

	Item 41 (Gene Salamin): There are exactly 23,000 prime numbers
	less than 2^18.

	Item 46 (Rich Schroeppel): The most *probable* suit
	distribution in bridge hands is 4-4-3-2, as compared to
	4-3-3-3, which is the most *evenly* distributed.  This is
	because the world likes to have unequal numbers: a
	thermodynamic effect saying things will not be in the state of
	lowest energy, but in the state of lowest disordered energy.

	Item 81 (Rich Schroeppel): Count the magic squares of order 5
	(that is, all the 5-by-5 arrangements of the numbers from 1 to
	25 such that all rows, columns, and diagonals add up to the
	same number).  There are about 320 million, not counting those
	that differ only by rotation and reflection.

	Item 154 (Bill Gosper): The myth that any given programming
	language is machine independent is easily exploded by
	computing the sum of powers of 2.  If the result loops with
	period = 1 with sign +, you are on a sign-magnitude machine.
	If the result loops with period = 1 at -1, you are on a
	twos-complement machine.  If the result loops with period
	greater than 1, including the beginning, you are on a
	ones-complement machine.  If the result loops with period
	greater than 1, not including the beginning, your machine
	isn't binary - the pattern should tell you the base.  If you
	run out of memory, you are on a string or bignum system.  If
	arithmetic overflow is a fatal error, some fascist pig with a
	read-only mind is trying to enforce machine independence.  But
	the very ability to trap overflow is machine dependent.  By
	this strategy, consider the universe, or, more precisely,
	algebra: Let X = the sum of many powers of 2 = ...111111 (base
	2).  Now add X to itself: X + X = ...111110.  Thus, 2X = X -
	1, so X = -1.  Therefore algebra is run on a machine (the
	universe) that is two's-complement.

	Item 174 (Bill Gosper and Stuart Nelson): 21963283741 is the
	only number such that if you represent it on the {PDP-10} as
	both an integer and a {floating-point} number, the bit
	patterns of the two representations are identical.

	Item 176 (Gosper): The "banana phenomenon" was encountered
	when processing a character string by taking the last 3
	letters typed out, searching for a random occurrence of that
	sequence in the text, taking the letter following that
	occurrence, typing it out, and iterating.  This ensures that
	every 4-letter string output occurs in the original.  The
	program typed BANANANANANANANA....  We note an ambiguity in
	the phrase, "the Nth occurrence of."  In one sense, there are
	five 00's in 0000000000; in another, there are nine.  The
	editing program TECO finds five.  Thus it finds only the first
	ANA in BANANA, and is thus obligated to type N next.  By
	Murphy's Law, there is but one NAN, thus forcing A, and thus a
	loop.  An option to find overlapped instances would be useful,
	although it would require backing up N - 1 characters before
	seeking the next N-character string.

	Note: This last item refers to a {Dissociated Press}
	implementation.  See also {banana problem}.

	HAKMEM also contains some rather more complicated mathematical
	and technical items, but these examples show some of its fun
	flavour.

	HAKMEM is available from MIT Publications as a {TIFF} file.

	{(ftp://ftp.netcom.com/pub/hb/hbaker)}

	(19 Jan 1996)

hakspek

	<jargon> /hak'speek/ A shorthand method of spelling found on
	many British academic bulletin boards and {chat} systems.
	Syllables and whole words in a sentence are replaced by single
	{ASCII} characters the names of which are phonetically similar
	or equivalent, while multiple letters are usually dropped.
	Hence, "for" becomes "4"; "two", "too", and "to" become "2";
	"ck" becomes "k".  "Before I see you tomorrow" becomes "b4 i c
	u 2moro".  First appeared in London about 1986, and was
	probably caused by the slowness of available {talk} systems,
	which operated on archaic machines with outdated {operating
	systems} and no standard methods of communication.  Has become
	rarer since.

	See also {chat}, {B1FF}, {ACSIIbonics}.

	(25 Jan 1998)

HAL

	1. <computer> HAL 9000, the murdering computer on the
	spaceship in the science fiction classic "2001, A Space
	Odyssey" by Arthur C. Clark.

	"HAL" is "{IBM}" with each letter changed to the one before
	and there is an unconfirmed rumour that 9000 is the sum of the
	various IBM computer numbers that were in service at the time.
	However, in the sequel "2010", Clarke emphatically denies that
	HAL's name is supposed to be "one step ahead of IBM".  It is,
	rather, short for "heuristic algorithm".

	2. <operating system> {Hardware Abstraction Layer}.

	(09 Nov 1995)

half-duplex

	<communications> 1. A communications challe which can carry
	data in either direction but not both directions at once.

	2. An obsolete term for {local echo}.

	(12 Apr 1995)

halftone

	<graphics> The reproducion of {greyscale} {images} using dots
	of a single shade but varying size to simulate the different
	shades of grey.

	{Laser printers} that cannot print different sized dots,
	halftones are produced by varying the numbers of dots in a
	given area.

	This process is also used to produce a black and white version
	of a colour original using shades of grey in place of colours.

	See also {device independent bitmap}.

	(20 Sep 1996)

HALGOL

	<language> A simple language from {Hewlett-Packard} for
	communicating with devices such as {modem}s and {X.25} {PAD}s.

	(12 Apr 1995)

HALMAT

	Intermediate language used by {HAL/S}.

HAL/S

	A {real-time} language used by {NASA} for onboard shuttle
	software.

	["Two-Dimensional Characteristics of HAL, A Language for
	Spaceflight Applications", J.S. Miller, SIGPLAN Notices 7(10)
	(Oct 1972)].

	(20 Oct 1994)

Halt and Catch Fire

	<humour, processor> (HCF) Any of several undocumented and
	semi-mythical {machine instructions} with destructive
	side-effects, supposedly included for test purposes on several
	well-known architectures going as far back as the {IBM 360}.
	The {Motorola} {6800} {microprocessor} was the first for which
	an HCF {opcode} became widely known.  This instruction caused
	the processor to {toggle} a subset of the {bus} lines as
	rapidly as it could; in some configurations this could
	actually cause lines to burn up.

	[Confirm?]

	(14 Dec 1995)

halting problem

	The problem of determining in advance whether a particular
	program or {algorithm} will terminate or run forever.  The
	halting problem is the {canonical} example of a {provably
	unsolvable} problem.  Obviously any attempt to answer the
	question by actually executing the algorithm or simulating
	each step of its execution will only give an answer if the
	algorithm under consideration does terminate, otherwise the
	algorithm attempting to answer the question will itself run
	forever.

	Some special cases of the halting problem are partially
	solvable given sufficient resources.  For example, if it is
	possible to record the complete state of the execution of the
	algorithm at each step and the current state is ever identical
	to some previous state then the algorithm is in a loop.  This
	might require an arbitrary amount of storage however.
	Alternatively, if there are at most N possible different
	states then the algorithm can run for at most N steps without
	looping.

	A program analysis called {termination analysis} attempts to
	answer this question for limited kinds of input algorithm.

	(20 Oct 1994)

Hamilton

	{William Hamilton}

Hamiltonian cycle

	{Hamiltonian problem}

Hamiltonian path

	{Hamiltonian problem}

Hamiltonian problem

	<computability> (Or "Hamilton's problem") A problem in {graph
	theory} posed by {William Hamilton}: given a {graph}, is there
	a path through the graph which visits each {vertex} precisely
	once (a "Hamiltonian path")?  Is there a Hamiltonian path
	which ends up where it started (a "Hamiltonian cycle" or
	"Hamiltonian tour")?

	Hamilton's problem is {NP-complete}.  It has numerous
	applications, sometimes completely unexpected, in computing.

	{Home (http://www.ing.unlp.edu.ar/cetad/mos/Hamilton.html)}.

	(18 Jul 1997)

Hamiltonian tour

	{Hamiltonian problem}

Hamilton's problem

	{Hamiltonian problem}

hammer

	Commonwealth hackish synonym for {bang on}.

	(16 Feb 1995)

Hamming code

	<algorithm> Extra, redundant bits added to stored or
	transmitted data for the purposes of {error detection and
	correction}.

	Hamming codes provide a great improvement in the reliability
	of data from distant space probes, where it is impractical,
	because of the long transmission delay, to correct errors by
	requesting retransmission.

	[Detail?]

	(14 Mar 1995)

hamster

	1. ({Fairchild}) A particularly slick little piece of code
	that does one thing well; a small, self-contained hack.  The
	image is of a hamster {happily} spinning its exercise wheel.

	2. A tailless mouse; that is, one with an infrared link to a
	receiver on the machine, as opposed to the conventional cable.

	3. (UK) Any item of hardware made by {Amstrad}, a company
	famous for its cheap plastic PC-almost-compatibles.

	(16 Feb 1995)

Han character

	<character> (From the Han dynasty, 206 B.C.E to 25 C.E.)  One
	of the set of {glyphs} common to Chinese (where they are
	called "hanzi"), Japanese (where they are called {kanji}), and
	Korean (where they are called {hanja}).

	Han characters are generally described as "ideographic", i.e.,
	picture-writing; but see the reference below.

	[John DeFrancis, "The Chinese Language: Fact and Fantasy",
	University of Hawaii Press, 1984].

	(16 Jul 1997)

hand cruft

	<humour, jargon> A pun on "hand craft".

	See {cruft}.

	(16 Feb 1995)

Handel

	<language> An imperative language with primitives for
	controlling parallel programs.

	Used by Wayne Luk for work in compilation of programs to
	hardware ({FPGA}s).

	(28 Feb 1995)

hand-hacking

	1. The practice of translating a {hot spot} of a program in a
	{HLL} into hand-tuned {assembly language}, as opposed to
	trying to coerce the {compiler} into generating better code.
	Both the term and the practice are becoming uncommon.

	See {tune}, {bum}, {by hand}; synonym with {cruft}.

	2. More generally, manual construction or patching of data
	sets that would normally be generated by a translation utility
	and interpreted by another program, and aren't really designed
	to be read or modified by humans.

	(16 Feb 1995)

Hand-held Personal Computer

	<computer> (H/PC) A small device similar to a {Personal
	Digitial Assistant}.  In some cases an H/PC has a larger
	keyboard and more {RAM}.  It is usually loaded with an
	{operating system} such as {Windows CE}.  Data can be
	transferred between the H/PC and a desktop {PC}.

	(15 Feb 1998)

handle

	1. <jargon> (From Citizen's Band amateur radio slang) An
	electronic pseudonym or "nom de guerre" intended to conceal
	the user's true identity.  Network and BBS handles function as
	the same sort of simultaneous concealment and display one
	finds on CB.

	Use of grandiose handles is characteristic of {cracker}s,
	{weenie}s, {spod}s, and other lower forms of network life;
	true hackers travel on their own reputations rather than
	invented legendry.

	Compare {nick}.

	2. <programming> (Macintosh) A pointer to a pointer to
	dynamically-allocated memory.  The extra level of indirection
	allows on-the-fly memory compaction (to cut down on
	{fragmentation}) or garbage collection of unused resources,
	with minimal impact on the (possibly multiple) parts of the
	larger program containing references to the allocated memory.

	Compare {snap} (to snap a handle would defeat its purpose).
	See also {aliasing bug}, {dangling pointer}.

	(28 Feb 1995)

hand-roll

	<jargon> (From mainstream slang "hand-rolled cigarette" in
	opposition to "ready-made") To perform a normally automated
	software installation or configuration process {by hand};
	implies that the normal process failed due to bugs or was
	defeated by something exceptional in the local environment.
	"The worst thing about being a gateway between four different
	nets is having to hand-roll a new sendmail configuration every
	time any of them upgrades."

	(28 Feb 1995)

handshake

	{handshaking}

handshaking

	1. Predetermined hardware or software activity designed to
	establish or maintain two machines or programs in
	synchronisation.  Handshaking often concerns the exchange of
	messages or {packet}s of data between two systems with limited
	{buffer}s.  A simple handshaking {protocol} might only involve
	the receiver sending a message meaning "I received your last
	message and I am ready for you to send me another one."  A
	more complex handshaking {protocol} might allow the sender to
	ask the receiver if he is ready to receive or for the receiver
	to reply with a negative acknowledgement meaning "I did not
	receive your last message correctly, please resend it" (e.g. if
	the data was corrupted en route).

	{Hardware handshaking} uses voltage levels or pulses on wires
	to carry the handshaking signals whereas {software
	handshaking} uses data units (e.g. {ASCII} characters) carried
	by some underlying communication medium.

	{Flow control} in bit-serial data transmission such as
	{RS-232} may use either hardware or software handshaking.

	2. The method used by two {modem}s to establish contact with
	each other and to agreee on {baud rate}, {error correction}
	and {compression} {protocol}s.

	3. The exchange of predetermined signals between agents
	connected by a communications channel to assure each that it
	is connected to the other (and not to an imposter).  This may
	also include the use of passwords and codes by an operator.

	(13 Jan 1995)

handwave

	[possibly from gestures characteristic of stage magicians] To
	gloss over a complex point; to distract a listener; to support
	a (possibly actually valid) point with blatantly faulty logic.

	If someone starts a sentence with "Clearly..." or
	"Obviously..." or "It is self-evident that...", it is a good
	bet he is about to handwave (alternatively, use of these
	constructions in a sarcastic tone before a paraphrase of
	someone else's argument suggests that it is a handwave).  The
	theory behind this term is that if you wave your hands at the
	right moment, the listener may be sufficiently distracted to
	not notice that what you have said is {bogus}.  Failing that,
	if a listener does object, you might try to dismiss the
	objection with a wave of your hand.

	The use of this word is often accompanied by gestures: both
	hands up, palms forward, swinging the hands in a vertical
	plane pivoting at the elbows and/or shoulders (depending on
	the magnitude of the handwave); alternatively, holding the
	forearms in one position while rotating the hands at the wrist
	to make them flutter.  In context, the gestures alone can
	suffice as a remark; if a speaker makes an outrageously
	unsupported assumption, you might simply wave your hands in
	this way, as an accusation, far more eloquent than words could
	express, that his logic is faulty.

hang

	1. To wait for an event that will never occur.  "The system is
	hanging because it can't read from the crashed drive".  See
	{wedged}, {hung}.

	2. To wait for some event to occur; to hang around until
	something happens.  "The program displays a menu and then
	hangs until you type a character."  Compare {block}.

	3. To attach a peripheral device, especially in the
	construction "hang off": "We're going to hang another tape
	drive off the file server."  Implies a device attached with
	cables, rather than something that is strictly inside the
	machine's chassis.

hanja

	{Han characters}

hanzi

	{Han characters}

happily

	Of software, used to emphasise that a program is unaware of
	some important fact about its environment, either because it
	has been fooled into believing a lie, or because it doesn't
	care.  The sense of "happy" here is not that of elation, but
	rather that of blissful ignorance.  "The program continues to
	run, happily unaware that its output is going to /dev/null."

Happy

	<tool> A dyslexic acronym for "A Yacc-like Haskell Parser
	generator".

	An {LALR1 grammar} {parser generator} for {Haskell}.  Happy is
	written in Haskell, uses a parser generated by itself, and can
	be compiled using {ghc}, {hbc} or {gofer}.  Happy uses an
	implementation of {monadic IO} built on top of stream IO, but
	this should change when the {Haskell 1.3} {standard} has been
	implemented.

	Version: 0.9 (28 Feb 1996).

	Happy is covered by the {General Public License}.

	{Home (http://www.dcs.gla.ac.uk/fp/software/happy.html)}

	{(ftp://ftp.dcs.gla.ac.uk/pub/haskell/happy/)}

	E-mail: <andy@dcs.gla.ac.uk>, <simonm@dcs.gla.ac.uk>.

	(21 Mar 1996)

haque

	<spelling, jargon> /hak/ ({Usenet}) A variant spelling of
	{hack}, used only for the noun form and connoting an {elegant}
	hack.

	(22 Feb 1995)

hard boot

	<operating system> A {boot} which resets the entire {system}.

	The phrase has connations of hostility towards, or frustration
	with, the computer being booted.  For example, "I'll have to
	hard boot this {losing} {Sun}", or "I recommend booting it
	hard".

	Hard boots are often performed with a {power cycle}.

	Contrast {soft boot}.  See also {cold boot} and {reboot}

	(27 Nov 1995)

hard-coded

	(By analogy with a "{hard-wired}" function of an electronic
	circuit) Said of data or behaviour inserted directly into a
	program, where it cannot be easily modified, as opposed to
	data in some {profile}, resource (see {de-rezz}) or
	{environment variable} that a {user} can easily modify.

	In {C}, this is especially applied to use of a literal instead
	of a "#define" {macro}.

	See {magic number}.

	(22 Feb 1995)

hardcopy

	<jargon> A paper printout of data displayed on a screen.

	Contrast {softcopy}.

	(31 Aug 1995)

hard disk

	<storage> (In contrast to {floppy disk}).  One or more rigid
	{magnetic disks} rotating about a central axle with associated
	read/write heads and electronics, used to store data.  Most
	hard disks are permanently connected to the drive (fixed
	disks) though there are also {removable disks}.

	High speed disks have an {access time} of 28 milliseconds or
	less, and low-speed disks run 65 milliseconds or more.  The
	higher speed disks also transfer their data faster than the
	slower speed units.

	See also {ATA}, {IDE}, {sector}, {track}, {winchester},
	{SCSI}.

	(06 Jun 1997)

hard disk drive

	<storage> (HDD) A {disk drive} used to read and write {hard
	disk}s.

	(14 Mar 1995)

hard drive

	{hard disk drive}

hard link

	<filesystem> One of several directory entries which refer to
	the same {Unix} {file}.  A hard link is created with the "ln"
	(link) command:

		ln <old name> <new name>

	where <old name> and <new name> are {pathnames} within the
	same {file system}.  Hard links to the same file are
	indistinguishable from each other except that they have
	different pathnames.  They all refer to the same {inode} and
	the inode contains all the information about a file.

	The standard ln command does not usually allow you to create a
	hard link to a directory, chiefly because the standard {rm}
	and {rmdir} commands do not allow you to delete such a link.
	Some systems provide link and {unlink} commands which give
	direct access to the {system calls} of the same name, for
	which no such restrictions apply.

	Normally all hard links to a file must be in the same
	{filesystem} because a directory entry just relates a pathname
	to an inode within the same filesystem.  The only exception is
	a {mount point}.

	The restrictions on hard links to directories and between
	filesystems are very common but are not mandated by {POSIX}.
	{Symbolic links} are often used instead of hard links because
	they do not suffer from these restrictions.

	The space associated with a file is not freed until all the
	hard links to the file are deleted.  This explains why the
	system call to delete a file is called "unlink".

	(22 Oct 1997)

hard sector

	<storage> An archaic {floppy disk} format employing multiple
	synchronisation holes in the media to define the {sectors}.

	(24 Jan 1995)

hardware

	<hardware> The physical, touchable, material parts of a
	computer or other system.  The term is used to distinguish
	these fixed parts of a system from the more changable
	{software} or {data} components which it executes, stores, or
	carries.

	Computer hardware typically consists chiefly of electronic
	devices ({CPU}, {memory}, {display}) with some
	electromechanical parts (keyboard, {printer}, {disk drives},
	{tape drives}, loudspeakers) for input, output, and storage,
	though completely non-electronic (mechanical,
	electromechanical, hydraulic, biological) computers have also
	been conceived of and built.

	See also {firmware}, {wetware}.

	(23 Jan 1997)

Hardware Abstraction Layer

	<operating system> (HAL) The layer of {Microsoft} {Windows NT}
	where they have isolated their {assembly language} code.

	(17 Apr 1995)

Hardware Description Language

	<language> (HDL) A kind of language used for the conceptual
	design of {integrated circuit}s.  Examples are {VHDL} and
	{Verilog}.

	(18 Apr 1995)

hardware handshaking

	<communications> A technique for regulating the flow of data
	across an interface by means of signals carried on separate
	wires.

	A common example is the RTS (Request to Send) and CTS (Clear
	to Send) signals on an {RS-232} {serial line}.

	The alternative, {software handshaking}, uses two special
	characters inserted into the data stream to carry the same
	information.

	(23 Jan 1995)

hardwarily

	/hard-weir'*-lee/ In a way pertaining to hardware.  "The
	system is hardwarily unreliable."  The adjective "hardwary" is
	*not* traditionally used, though it has recently been reported
	from the U.K.

	See {softwarily}.

	(23 Jan 1995)

hard-wired

	1. An aspect of an electronic circuit which is determined by
	the wiring of the hardware, as opposed to being programmable
	in software or controlled by a switch.

	2. In software, a synonym for {hardcoded}.

	3. By extension, anything that is not modifiable, especially
	in the sense of customisable to one's particular needs or
	tastes.

Harris Semiconductor Ltd.

	<company>

	Address: Riverside Way, Camberley, Surrey, CU15 3YQ, UK.

	Telephone: +44 (1276) 686 886.  Fax: +44 (1276) 682 323.

	(21 Nov 1995)

Harvest

	<tool, networking> A highly scalable, customisable system for
	discovering resources on the {Internet}.

	Version: 1.3.

	{Home
	(http://harvest.cs.colorado.edu/harvest/gettingsoftware.html)}.

	(03 Oct 1995)

Harvest C

	A {C} compiler, assembler and linker for the {Macintosh} by
	Eric W. Sink.  The parts of the system are integrated in a
	single application, which manages a "project" composed by
	several C source files and resource files (which contain
	data).  Version 1.3.

	{(ftp://archive.umich.edu/mac/development/languages/)}

	(26 May 1992)

hash

	1. <character> "#", {ASCII} code 35.

	Common names: number sign; pound; pound sign; hash; sharp;
	{crunch}; hex; {INTERCAL}: mesh.  Rare: grid; crosshatch;
	octothorpe; flash; {ITU-T}: square, pig-pen; tictactoe;
	scratchmark; thud; thump; {splat}.

	The pronunciation of "#" as "pound" is common in the US but a
	bad idea; {Commonwealth Hackish} has its own, rather more
	apposite use of "pound sign" (confusingly, on British
	keyboards the pound graphic happens to replace "#"; thus
	Britishers sometimes call "#" on a US-ASCII keyboard "pound",
	compounding the American error).  The US usage derives from an
	old-fashioned commercial practice of using a "#" suffix to tag
	pound weights on bills of lading.  The character is usually
	pronounced "hash" outside the US

	2. <programming> {hash table}.

	3. The preferred term for a {Perl} {associative array}.

	(06 Mar 1995)

hash bucket

	{hash table}

hash collision

	<programming> (Or "hash clash") When two different keys hash
	to the same value, i.e. to the same location in a {hash
	table}.

	{ESR} once asked a friend what he expected Berkeley to be
	like.  The friend replied, "Well, I have this mental picture
	of naked women throwing Molotov cocktails, but I think that's
	just a collision in my hash tables."

	(23 Jan 1995)

hash function

	<programming> A {function} which assigns a data item
	distinguished by some "key" into one of a number of possible
	"hash buckets" in a {hash table}.  The hash function is
	usually combined with another more precise function.

	For example a program might take a string of letters and put
	it in one of of twenty six lists depending on its first
	letter.  Ideally, a hash function should distribute items
	evenly between the buckets to reduce the number of {hash
	collisions}.  If, for example, the strings were names
	beginning with "Mr.", "Miss" or "Mrs." then taking the first
	letter would be a very poor hash function because all names
	would hash the same.

	(03 Aug 1997)

hashing

	{hash table}

hash table

	<programming, algorithm> (Or "hash coding") A scheme for
	providing rapid access to data items which are distinguished
	by some key.  Each data item to be stored is associated with a
	key, e.g. the name of a person.  A {hash function} is applied
	to the item's key and the resulting hash value is used as an
	index to select one of a number of "hash buckets" in a hash
	table.  The table contains pointers to the original items.

	If the hash table already has an entry at the indicated
	location then that entry's key must be compared with the given
	key to see if it is the same.  If two items' keys hash to the
	same value (a "{hash collision}") then some alternative
	location is used (e.g. the next free location cyclically
	following the indicated one).  For best performance, the table
	size and {hash function} must be tailored to the number of
	entries and range of keys to be used.  The hash function
	usually depends on the table size so if the table needs to be
	enlarged it must usually be completely rebuilt.

	When you look up a name in the phone book (for example), you
	typically hash it by extracting its first letter; the hash
	buckets are the alphabetically ordered letter sections.

	See also: {btree}, {checksum}, {CRC}, {pseudorandom number},
	{random}, {random number}, {soundex}.

	(03 Aug 1997)

Haskell

	<language> (Named after the logician {Haskell Curry}) A {lazy}
	{purely functional} language largely derived from {Miranda}
	but with several extensions.  Haskell was designed by a
	committee from the {functional programming} community in April
	1990.  It features static {polymorphic} typing, {higher-order
	function}s, user-defined {algebraic data type}s, and
	{pattern-matching} {list comprehension}s.  Innovations include
	a {class} system, systematic operator {overloading}, a
	{functional I/O} system, functional {arrays}, and {separate
	compilation}.

	Haskell 1.3 added many new features, including {monadic I/O},
	standard libraries, {constructor classes}, {labeled fields} in
	datatypes, {strictness} {annotations}, an improved {module}
	system, and many changes to the Prelude.

	{Gofer} is a cut-down version of Haskell with some extra
	features.

	{Filename extension}: .hs, .lhs ({literate programming}).

	{Home (http://haskell.org/)}.

	["Report on the Programming Language Haskell Version 1.1",
	Paul Hudak & P. Wadler eds, CS Depts, U Glasgow and Yale U.,
	Aug 1991].

	[Version 1.2: SIGPLAN Notices 27(5), Apr 1992].

	{Haskell 1.3 Report
	(http://haskell.cs.yale.edu/haskell-report/haskell-report.html)}.

	Mailing list: <haskell-request@cs.yale.edu>,
	HASKLD-L@YALEVM.BITNET.

	Yale Haskell - Version 2.0.6, Haskell 1.2 built on {Common
	Lisp}.

	{(ftp://nebula.cs.yale.edu/pub/haskell/yale/)}

	E-mail: <haskell-request@cs.yale.edu>.

	Glasgow Haskell (GHC) - Version 2.04 for {DEC Alpha}/{OSF}2;
	{HPPA1.1}/{HPUX}9,10; {SPARC}/{SunOs} 4, {Solaris} 2;
	{MIPS}/{Irix} 5,6; {Intel 80386}/{Linux},{Solaris}
	2,{FreeBSD},{CygWin} 32; {PowerPC}/{AIX}.  GHC generates {C}
	or {native code}.

	{(ftp://ftp.dcs.glasgow.ac.uk/pub/haskell/glasgow/)}

	E-mail: <glasgow-haskell-request@dcs.glasgow.ac.uk>.

	Haskell-B - Haskell 1.2 implemented in {LML}, generates
	{native code}.

	{(ftp://ftp.cs.chalmers.se/pub/haskell/chalmers/)}

	E-mail: <hbc@cs.chalmers.se>.

	(06 Jun 1997)

Haskell B

	<language> An early version of {Haskell} by Lennart Augustsson
	<augustss@cs.chalmers.se> from {Chalmers}.  Haskell B evolved
	into a full-featured implementation of Haskell 1.2, with quite
	a few extensions.

	Ports exist for many {platforms} including {Sun}, {DEC},
	{Sequent}, {IBM PC}, {Symmetry} and unsupported versions for
	{NS32000}, {IBM RT/PC}, {Cray}, {Sun3}, {Vax}, {ARM}, and
	{RS/6000}.

	Version 0.999.5 included a compiler, interpreter, library,
	documentation, and examples.

	{(ftp://ftp.cs.chalmers.se/pub/haskell/chalmers/)}.

	Mailing list: <haskell-request@cs.yale.edu>.

	E-mail: <hbc@cs.chalmers.se>.

	(21 Aug 1996)

Haskell Curry

	<person> Haskell B. Curry.  The logician who re-invented and
	developed {combinatory logic}.

	The {functional programming} language {Haskell} was named
	after him.

	[Dates?]

	(11 Jan 1995)

Haskell User's Gofer System

	<language> (HUGS) An implementation of {Haskell} derived from
	{Gofer} 2.30b with an interactive development environment much
	like Gofer's.  Almost all of the features of Haskell 1.2 are
	implemented with the exception of the {module} system.  Hugs
	supports Haskell style {type class}es, a full prelude,
	{derived instance}s, defaults, {overloaded} numeric {literal}s
	and {pattern matching}, and {bignum} arithmetic.

	{Home
	(http://www.cs.nott.ac.uk/Department/Staff/mpj/hugs.html)}.

	{(ftp://ftp.cs.nott.ac.uk/pub/haskell/hugs)}

	E-mail: Mark P. Jones <mpj@cs.nott.ac.uk>.

	(14 Feb 1995)

HASL

	<language> {SASL} plus {conditional unification}.

	["A Prological Definition of HASL, A Purely Functional
	Language with Unification Based Conditional Binding
	Expressions", H. Abramson in Logic Programming: Functions,
	Relations and Equations, D. DeGroot et al eds, P-H 1986].

	(21 Aug 1996)

has the X nature

	(From Zen Buddhist koans of the form "Does an X have the
	Buddha-nature?") Common hacker construction for "is an X",
	used for humorous emphasis.  "Anyone who can't even use a
	program with on-screen help embedded in it truly has the
	{loser} nature!"  See also {the X that can be Y is not the
	true X}.

	(11 Jan 1995)

hat

	A common (spoken) name for the circumflex ("^", ASCII 94)
	character.

	See {ASCII} for other synonyms.

Hayes

	A {modem} manufacturer.

	{(gopher://leapfrog.almac.co.uk:70/00/business/comms/hayes/corporat.txt)}

	Address: Atlanta, Georgia, USA.

	(30 Jan 1995)

Hayes-compatible

	<communications> A descrition of a {modem} which understands
	the same set of commands as one made by {Hayes}.

	(08 Dec 1996)

HBOOK

	A histogramming package in the CERN program library.

hc

	The compiler for the {h} {hyperbook} language.

HCF

	{Halt and Catch Fire}

HCI

	{Human-Computer Interaction}

HCLP

	Hierarchical {CLP}.

	["Constraint Hierarchies and Logic Programming", A. Borning et
	al, in Proc Sixth Intl Logic Prog Conf, June 1989,
	pp. 149-164].

HCPRVR

	"HCPRVR: An Interpreter for Logic Programs", D. Chester in
	Proc First Natl Conf on AI, Stanford, 1980.

HCS

	{Heterogeneous Computer System}

	A {distributed system} project.

	[Where?  When?  What?]

	(01 Feb 1995)

HD6309

	{Hitachi 6309}

HDC

	<storage> {Hard Disk Controller}.

	(03 Feb 1996)

HDD

	<storage> {hard disk drive}.

	(07 Jan 1996)

HDF

	Hierarchical Data Format from NCSA.

HDFL

	A {single assignment} language.

	["Methods for Handling Structures in Data-Flow Systems",
	J.L. Gaudiot, Proc 12th Intl Symp Comp Arch, June 1985].

HDL

	{Hardware Description Language}

HDLC

	{High-level Data Link Control}

HDM

	See SPECIAL.

HDSL

	{Digital Subscriber Line}

HDTV

	High Definition Television.

header

	1. The portion of a {packet}, preceding the actual data,
	containing source and destination addresses, error checking
	and other fields.

	2. The part of an {electronic mail} message or {news} article
	that precedes the body of a message and contains, among other
	things, the sender's name and e-mail address and the date and
	time the message was sent.

head normal form

	(HNF) A lambda expression is in head normal form if its top
	level is either a variable, a data value, a built-in function
	applied to too few arguments or a lambda abstraction whose
	body is not reducible.  I.e. the top level is neither a redex
	nor a lambda abstraction with a reducible body.

	An expression in HNF may contain redexes in argument postions
	whereas a normal form may not.  See also Weak head normal
	form.

head normalisation theorem

	Under the typed lambda-calculus, beta/delta reduction of the
	left-most redex (normal order reduction) is guaranteed to
	terminate with a head normal form if one exists.  See also
	Church-Rosser theorem.

heads down

	[Sun] Concentrating, usually so heavily and for so long that
	everything outside the focus area is missed.  See also {hack
	mode} and {larval stage}, although this mode is hardly
	confined to fledgling hackers.

head-strict

	<theory> A head-strict function will not necessarily evaluate
	every {cons} cell of its (list) argument, but whenever it does
	evaluate a cons cell it will also evaluate the element in the
	head of that cell.  An example of a head-strict function is

		beforeZero :: [Int] -> [Int]
		beforeZero []     = []
		beforeZero (0:xs) = []
		beforeZero (x:xs) = x : beforeZero xs

	which returns a list up to the first zero.

	This pattern of evaluation is important because it is common
	in functions which operate on a list of inputs.

	See also {tail-strict}, {hyperstrict}.

	(11 May 1995)

heap

	1. <programming> An area of memory used for {dynamic memory
	allocation} where blocks of memory are allocated and freed in
	an arbitrary order and the pattern of allocation and size of
	blocks is not known until {run-time}.  Typically, a program
	has one heap which it may use for several different purposes.

	Heap is required by languages in which functions can return
	arbitrary data structures or functions with {free variables}
	(see {closure}).  In {C} functions {malloc} and {free} provide
	access to the heap.

	Contrast {stack}.  See also {dangling pointer}.

	2. <programming> A data structure with its elements partially
	ordered (sorted) such that finding either the minimum or the
	maximum (but not both) of the elements is computationally
	inexpensive (independent of the number of elements), while
	both adding a new item and finding each subsequent
	smallest/largest element can be done in O(log n) time, where n
	is the number of elements.

	Formally, a heap is a {binary tree} with a key in each {node},
	such that all the {leaves} of the tree are on two adjacent
	levels; all leaves on the lowest level occur to the left and
	all levels, except possibly the lowest, are filled; and the
	key in the {root} is at least as large as the keys in its
	children (if any), and the left and right subtrees (if they
	exist) are again heaps.

	Note that the last condition assumes that the goal is finding
	the minimum quickly.

	Heaps are often implemented as one-dimensional {arrays}.
	Still assuming that the goal is finding the minimum quickly
	the {invariant} is

	   heap[i] <= heap[2*i] and heap[i] <= heap[2*i+1] for all i,

	where heap[i] denotes the i-th element, heap[1] being the
	first.  Heaps can be used to implement {priority queues} or in
	{sort} algorithms.

	(26 Feb 1996)

heartbeat

	1. <networking> The signal emitted by a Level 2 Ethernet
	transceiver at the end of every {packet} to show that the
	collision-detection circuit is still connected.

	2. A periodic synchronisation signal used by software or
	hardware, such as a {bus} clock or a periodic {interrupt}.

	3. The "natural" oscillation frequency of a computer's clock
	crystal, before frequency division down to the machine's clock
	rate.

	4. A signal emitted at regular intervals by software to
	demonstrate that it is still alive.  Sometimes hardware is
	designed to reboot the machine if it stops hearing a
	heartbeat.  See also {breath-of-life packet}, {watchdog}.

	(12 Mar 1996)

heatseeker

	<person, jargon> (IBM) A customer who can be relied upon to
	buy, without fail, the latest version of an existing product
	(not quite the same as a member of the {lunatic fringe}).  A
	1993 example of a heatseeker is someone who, owning a 286 PC
	and Windows 3.0, goes out and buys {Windows 3.1} (which offers
	no worthwhile benefits unless you have a 386).  If all
	customers were heatseekers, vast amounts of money could be
	made by just fixing the bugs in each release (n) and selling
	it to them as release (n+1).

	(12 Mar 1996)

heat sink

	<hardware> /heet sink/ (from "sink", electronics jargon for
	something which takes in current) A piece of thermally
	conductive metal attached to a {semiconductor} or other
	electronic device and designed to prevent it from overheating
	by conducting heat away from it and radiating it to the
	environment.  Heat sinks often have fins to increase their
	surface area.  They occasionally have fans attached.  Heat
	sink compound can be smeared between the device and the heat
	sink to improve thermal conduction.

	(10 Jun 1997)

heavy metal

	(Cambridge) {big iron}.

heavyweight

	High-overhead; {baroque}; code-intensive; featureful, but
	costly.  Especially used of communication protocols, language
	designs, and any sort of implementation in which maximum
	generality and/or ease of implementation has been pushed at
	the expense of mundane considerations such as speed, memory
	use and startup time.  {EMACS} is a heavyweight editor; {X} is
	an *extremely* heavyweight window system.  This term isn't
	pejorative, but one hacker's heavyweight is another's
	{elephantine} and a third's monstrosity.

	Opposite: "lightweight".  Usage: now borders on technical
	especially in the compound "heavyweight process".

	(22 Dec 1994)

heavy wizardry

	Code or designs that trade on a particularly intimate
	knowledge or experience of a particular operating system or
	language or complex application interface.  Distinguished from
	{deep magic}, which trades more on arcane *theoretical*
	knowledge.  Writing device drivers is heavy wizardry; so is
	interfacing to {X} (sense 2) without a toolkit.  Especially
	found in source-code comments of the form "Heavy wizardry
	begins here".

	Compare {voodoo programming}.

Hebbian

	Refers to the most common way for a neural network to learn,
	namely supervised learning.  Using a training sample which
	should produce known responses, the connection weights are
	adjusted so as to minimise the differences between the desired
	and actual outputs for the training sample.

heisenbug

	<jargon> /hi:'zen-buhg/ (From Heisenberg's Uncertainty
	Principle in quantum physics) A bug that disappears or alters
	its behaviour when one attempts to probe or isolate it.  (This
	usage is not even particularly fanciful; the use of a debugger
	sometimes alters a program's operating environment
	significantly enough that buggy code, such as that which
	relies on the values of uninitialised memory, behaves quite
	differently.)

	In {C}, nine out of ten heisenbugs result from uninitialised
	auto variables, {fandango on core} phenomena (especially
	lossage related to corruption of the malloc {arena}) or errors
	that {smash the stack}.

	Opposite: {Bohr bug}.  See also {mandelbug}, {schroedinbug}.

	(28 Feb 1995)

Helen Keller mode

	1. State of a hardware or software system that is deaf, dumb,
	and blind, i.e. accepting no input and generating no output,
	usually due to an infinite loop or some other excursion into
	{deep space}.  (Unfair to the real Helen Keller, whose success
	at learning speech was triumphant.)  See also {go flatline},
	{catatonic}.

	2. On {IBM PCs} under {MS-DOS}, refers to a specific failure
	mode in which a screen saver has kicked in over an
	{ill-behaved} application which bypasses the very interrupts
	the screen saver watches for activity.  Your choices are to
	try to get from the program's current state through a
	successful save-and-exit without being able to see what you're
	doing, or to {re-boot} the machine.  This isn't (strictly
	speaking) a crash.

Helix

	A {hardware description language} from {Silvar-Lisco}.

hello, sailor!

	Occasional West Coast equivalent of {hello, world}; seems to
	have originated at SAIL, later associated with the game {Zork}
	(which also included "hello, aviator" and "hello,
	implementor").  Originally from the traditional hooker's
	greeting to a swabbie fresh off the boat, of course.

hello, world

	The canonical minimal test message in the {C}/{Unix} universe
	or any of the minimal programs that emit this message.
	Traditionally, the first program a C coder writes in a new
	environment is one that just prints "hello, world" to standard
	output (and indeed it is the first example program in {K&R}).
	Environments that generate an unreasonably large executable
	for this trivial test or which require a {hairy}
	compiler-linker invocation to generate it are considered bad
	(see {X}).

HELP

	1. {DEA}.  A Language for industrial robots.

	2. (Help Est un Lisp Paresseux - Help Is a Lazy Lisp).  A
	{lazy} version of {Scheme} with strictness {annotation}s, by
	Thomas Schiex <schiex@europe.cert.fr>.

henry

	<unit> (H) The {SI} unit of inductance: one henry is the
	inductance of a closed loop in which the induced voltage is
	one volt if the current flowing through it changes by one
	ampere each second, i.e., 1 H = 1 Vs/A.  Named after the
	American physicist Joseph Henry (1797-1878).

	(16 Mar 1997)

HENSA

	{Higher Education National Software Archive}

HEP

	High Energy (Particle) Physics.

HEPDB

	A {database management system} for {HEP}.

HEPiX

	A recently formed collaboration among various HEP institutes
	aiming at providing "compatible" versions of the Unix
	operating system at their sites.

HEPnet

	An association concerned with networking requirements for high
	energy physicists.

HEPVM

	A collaboration among various HEP institutes to implement
	"compatible" versions of IBM's VM-CMS operating system at
	their sites.

HEQS

	E. Derman.  Constraint language for financial modeling.  Uses
	an extension of the equation solver in IDEAL.  "A Simple
	Equation Solver and Its Application to Financial Modeling",
	E. Derman et al, Soft Prac & Exp 14(12):1169-1181 (Dec 1984).

HERA

	An electron-proton collider at DESY, W. Germany.

HERAKLIT

	<language> A distributed {object-oriented} language.

	["Definition einer objektorientierten Programmiersprache mit
	hierarchischem Typkonzept", B. Hindel, diss U
	Erlangen-Nuernberg, Dec 1987].

	(16 Mar 1995)

here document

	<operating system> Data included in a {Unix} {shell script} or
	{Perl} script using the "<<" syntax.

	(19 Apr 1995)

Herman Hollerith

	<person> The inventor of the {punched card}.  Hollerith was
	born on 29 Feb 1860 and died on 17 Nov 1929.  He graduated
	from Columbia University, NewYork, NY, USA.  He joined the US
	Census Bureau as a statistician where he used a punched card
	device to help analyse the 1880 US census data.  This punched
	card system stored data in 80 columns.  This "80-column"
	concept has carried forward in various forms into modern
	applications.

	In 1896, Hollerith founded the {Tabulating Machine Company} to
	exploit his invention and, in 1924, his firm became part of
	{IBM}.  The Hollerith system was used for the 1911 UK census.

	(02 Jan 1996)

Hermes

	Hermes is an experimental, very high level, integrated
	language and system from the {IBM} {Watson Research Centre},
	produced in June 1990.  It is designed for implementation of
	large systems and distributed applications, as well as for
	general-purpose programming.  It is an {imperative}, {strongly
	typed} and {process-oriented} successor to {NIL}.

	Hermes hides distribution and heterogeneity from the
	programmer.  The programmer sees a single {abstract machine}
	containing processes that communicate using calls or sends.
	The {compiler}, not the programmer, deals with the complexity
	of data structure layout, local and remote communication, and
	interaction with the {operating system}.  As a result, Hermes
	programs are portable and easy to write.  Because the
	programming paradigm is simple and high level, there are many
	opportunities for optimisation which are not present in
	languages which give the programmer more direct control over
	the machine.

	Hermes features {thread}s, {relational table}s, {typestate}
	checking, {capability}-based access and {dynamic
	configuration}.

	Version 0.8alpha patchlevel 01 runs on {RS/6000}, {Sun-4},
	{NeXT}, {IBM-RT}/{BSD4.3} and includes a {bytecode compiler},
	a bytecode->C compiler and {run-time support}.

	{0.7alpha for Unix
	(ftp://software.watson.ibm.com/pub/hermes)}.

	E-mail: <hermes-request@watson.ibm.com>, Andy Lowry
	<lowry@watson.ibm.com>.

	{Usenet} newsgroup: {news:comp.lang.hermes}.

	["Hermes: A Language for Distributed Computing".  Strom,
	Bacon, Goldberg, Lowry, Yellin, Yemini.  Prentice-Hall,
	Englewood Cliffs, NJ.  1991.  ISBN: O-13-389537-8].

	(22 Mar 1992)

Hesiod

	<project> The {name server} of the {Athena} project.

	[Details?]

	(27 Oct 1997)

heterogeneous network

	<networking> A {network} running multiple {network layer}
	{protocols} such as {DECnet}, {IP}, {IPX}, {XNS}.

	(27 Oct 1997)

heuristic

	1. <programming> A rule of thumb, simplification or educated
	guess that reduces or limits the search for solutions in
	domains that are difficult and poorly understood.  Unlike
	{algorithms}, heuristics do not guarantee {feasible} solutions
	and are often used with no theoretical guarantee.

	2. <algorithm> {approximation algorithm}.

	(27 Oct 1997)

heuristics testing

	{failure-directed testing}

Hewlett-Packard

	(HP) Hewlett-Packard designs, manufactures and services
	electronic products and systems for measurement, computation
	and communications.  The company's products and services are
	used in industry, business, engineering, science, medicine and
	education in approximately 110 countries.

	HP was founded in 1939 and employs 96600 people, 58900 in the
	USA.  They have manufacturing and R&D establishments in 54
	cities in 16 countries and approximately 600 sales and service
	offices in 110 countries.  Their revenue (in 1992/1993?) was
	$20.3 billion.  The Chief Executive Officer is Lewis E. Platt.
	HP's stock is traded on the New York Stock Exchange and the
	Pacific, Tokyo, London, Frankfurt, Zurich and Paris exchanges.

	Quarterly sales $6053M, profits $347M (Aug 1994).

	{(http://www.hp.com/home.html)}

	(26 Sep 1994)

Hewlett-Packard Graphics Language

	<graphics, language> (HP-GL) A {vector graphics} language used
	by {HP} plotters.

	[Details?  On-line spec?]

	(27 Oct 1994)

Hewlett-Packard Interface Bus

	{IEEE 488}

Hewlett Packard Multi Processing Executive

	<operating system> (HP-MPE) The standard {operating system} on
	all {HP3000} {minicomputers} in the same way that HP9000
	computers run {HP-UX}.

	Current version: MPE/IX Version 5.0.

	(19 Nov 1995)

Hewlett Packard Precision Architecture

	(HP-PA) {Hewlett Packard}'s range of RISC processors.

	[Details?]

	(22 Feb 1995)

Hewlett-Packard Visual Engineering Environment

	(HP VEE) A package similar in intention to {LabVIEW}, running
	on {Unix} {workstations} under {OSF}/{Motif}.

	(12 May 1997)

hex

	1. {hexadecimal}.

	2. A 6-pack of anything (compare {quad}).  Neither usage has
	anything to do with {magic} or {black art}, though the pun is
	appreciated and occasionally used by hackers.  True story: As
	a joke, some hackers once offered some surplus ICs for sale to
	be worn as protective amulets against hostile magic.  The
	chips were, of course, hex inverters.

	3. <character> The {hash} character, used to introduce
	{hexadecimal} constants in some {assembly language}s.

	(06 Mar 1995)

hexadecimal

	<mathematics> (Or "hex") Base 16.  A number representation
	using the digits 0-9, with their usual meaning, plus the
	letters A-F (or a-f) to represent hexadecimal digits (or
	"{hexits}") with values of (decimal) 10 to 15.  The right-most
	digit counts ones, the next counts multiples of 16, then 16^2
	= 256, etc..

	For example, hexadecimal BEAD is decimal 48813:

		digit    weight        value
		B = 11   16^3 = 4096   11*4096 = 45056
		E = 14   16^2 =  256   14* 256 =  3584
		A = 10   16^1 =   16   10*  16 =   160
		D = 13   16^0 =    1   13*   1 =    13
						 -----
					BEAD   = 48813

	There are many conventions for distinguishing hexadecimal
	numbers from decimal or other bases in programs.  In {C} for
	example, the prefix "0x" is used, e.g. 0x694A11.  Hexadecimal
	is more succinct than {binary} for representing bit-masks,
	machines addresses, and other low-level constants but it is
	still reasonably easy to split a hex number into different bit
	positions, e.g the top 16 bits of a 32-bit word are the first
	four hex digits.

	The term was coined in the early 1960s to replace earlier
	"sexadecimal", which was too racy and amusing for stuffy
	{IBM}, and later adopted by the rest of the industry.

	Actually, neither term is etymologically pure.  If we take
	"binary" to be paradigmatic, the most etymologically correct
	term for base 10, for example, is "denary", which comes from
	"deni" (ten at a time, ten each), a Latin "distributive"
	number; the corresponding term for base-16 would be something
	like "sendenary".  "Decimal" is from an ordinal number; the
	corresponding prefix for 6 would imply something like
	"sextidecimal".  The "sexa-" prefix is Latin but incorrect in
	this context, and "hexa-" is Greek.  The word {octal} is
	similarly incorrect; a correct form would be "octaval" (to go
	with decimal), or "octonary" (to go with binary).  If anyone
	ever implements a base-3 computer, computer scientists will be
	faced with the unprecedented dilemma of a choice between two
	*correct* forms; both "ternary" and "trinary" have a claim to
	this throne.

	(09 Mar 1996)

hexit

	<jargon> /hek'sit/ A {hexadecimal} digit (0-9, and A-F or
	a-f).  Used by people who claim that there are only *ten*
	digits, sixteen-fingered human beings being rather rare,
	despite what some keyboard designs might seem to imply (see
	{space-cadet keyboard}).

	(09 Mar 1996)

HFC

	{hydrofluorocarbon}

HHCP

	{Host Host Copy}

HHOJ

	<chat> ha ha only joking.

	Contrast {ha ha only serious}.

	(18 Jan 1998)

HHOK

	ha ha only kidding.  See {ha ha only serious}.

HHOS

	{ha ha only serious}

HIBOL

	A variant of {DIBOL}, used in {Infotec} computers.

	(24 Nov 1994)

hidden flag

	(scientific computation) An extra option added to a routine
	without changing the calling sequence.  For example, instead
	of adding an explicit input variable to instruct a routine to
	give extra diagnostic output, the programmer might just add a
	test for some otherwise meaningless feature of the existing
	inputs, such as a negative mass.  The use of hidden flags can
	make a program very hard to debug and understand, but is all
	too common wherever programs are hacked in a hurry.

	(24 Nov 1994)

hierarchical file system

	<file system> A {file system} in which the {files} are
	organised into a {hierarchy}.  The nodes of the hierarchy are
	called {directories} while the leaves are the files
	themselves.

	See also {root directory}.  Compare {flat file system}.

	(21 Nov 1996)

hierarchical routing

	The complex problem of routing on large networks can be
	simplified by breaking a network into a hierarchy of smaller
	networks, where each level is responsible for its own routing.
	The Internet has, basically, three levels: the backbones, the
	mid-levels, and the stub networks.  The backbones know how to
	route between the mid-levels, the mid-levels know how to route
	between the sites, and each site (being an autonomous system)
	knows how to route internally.  See also Exterior Gateway
	Protocol, Interior Gateway Protocol, transit network.

hierarchy

	An organisation with few things, or one thing, at the top and
	with several things below each other thing.  An inverted tree
	structure.  Examples in computing include a directory
	hierarchy where each directory may contain files or other
	directories; a hierarchical {network} (see {hierarchical
	routing}), a {class hierarchy} in {object-oriented
	programming}.

	(11 Oct 1994)

high bit

	[high-order bit] The most significant bit in a {byte}.  See
	also {meta bit}, {hobbit}, {dread high bit disease}.

Higher Education National Software Archive

	(HENSA)

	{Home (http://www.hensa.ac.uk/)}

	(06 Jan 1995)

higher-order function

	(HOF) A function that can take one or more functions as
	argument and/or return a function as its value.  E.g. map in
	(map f l) which returns the list of results of applying
	function f to each of the elements of list l.  See also
	{curried function}.

higher-order macro

	A means of expressing certain {higher-order function}s in a
	first order language.  Proposed by Phil Wadler.  Higher-order
	macros cannot be recursive at the top level but they may
	contain recursive definitions.  E.g.

		map f l = m l
			  where
			  m []	   = []
			  m (x:xs) = f x : m xs

	Expanding a call to this macro is equivalent to specialising a
	call to map in its first argument.

	See {partial evaluation}.

High-level Data Link Control

	<networking> (HDLC) A general-purpose {data link} control
	{protocol} defined by {ISO} for use on both point-to-point and
	{multipoint} (multidrop) data links.  It supports
	{full-duplex}, {transparent-mode} operation.  It is used
	extensively in both multipoint and computer networks.

	Some manufacturers and other standards bodies still use their
	own acronyms, e.g. {IBM}'s SDLC ({Synchronous Data Link
	Control}), the forerunner of HDLC and {ANSI}'s ADCCP
	({Advanced Data Communications Control Procedure}).

	[Fred Halsall, "Data Communications, Computer Networks and
	Open Systems" 4th edition, 1996, p.237, Addison-Wesley
	Publishing Co. Reading, Mass., USA].

	(09 Nov 1997)

high-level language

	(HLL) A programming language which provides some level of
	abstraction above {assembly language}.  These normally use
	statements consisting of English-like keywords such as "FOR",
	"PRINT" or "GOTO", where each statement corresponds to several
	{machine language} instructions.  It is much easier to program
	in a high-level language than in {assembly language} though
	the efficiency of execution depends on how good the {compiler}
	or {interpreter} is at optimising the program.

	Rarely, the variants "{VHLL}" and "{MLL}" are found.

	See also {languages of choice}, {generation}.

	(07 Dec 1994)

high memory area

	<storage> (HMA) The first 64 {kilobytes} (minus 16 byte) of
	the {extended memory} on an {IBM PC}.  By a strange design
	glitch the {Intel 80x86} processors can actually address 17*64
	kbyte minus 16 byte of memory (from 0000:0000 to ffff:ffff) in
	real mode.  In the {Intel 8086} and {Intel 8088} processors,
	unable to handle more than 1 {megabyte} of memory, addressing
	wrapped around, that is, address ffff:0010 was equivalent to
	0000:0000.  For compatibility reasons, later processors still
	wrapped around by default, but this feature could be switched
	off.  Special programs called {A20 handlers} can control the
	addressing mode dynamically, thereby allowing programs to load
	themselves into the 1024--1088 kbyte region and run in {real
	mode}.  From version 5.0 parts of {MS-DOS} can be loaded into
	HMA as well freeing up to 46 kbytes of {conventional memory}.

	(10 Jan 1995)

high moby

	/hi:' mohb'ee/ The high half of a 512K {PDP-10}'s physical
	address space; the other half was of course the low moby.
	This usage has been generalised in a way that has outlasted
	the {PDP-10}; for example, at the 1990 Washington D.C.  Area
	Science Fiction Conclave (Disclave), when a miscommunication
	resulted in two separate wakes being held in commemoration of
	the shutdown of MIT's last {ITS} machines, the one on the
	upper floor was dubbed the "high moby" and the other the "low
	moby".  All parties involved {grok}ked this instantly.  See
	{moby}.

High Performance Computing and Communications

	(HPCC) High performance computing includes scientific
	workstations, supercomputer systems, high speed networks,
	special purpose and experimental systems, the new generation
	of large scale parallel systems, and application and systems
	software with all components well integrated and linked over a
	high speed network.

	["Grand Challenges 1993: High Performance Computing and
	Communications", Committee on Physical, Mathematical and
	Engineering Sciences of the Federal Coordinating Council for
	Science, Engineering and Technology.]

High Performance File System

	<file system> (HPFS) The {native} {file system} for {IBM}'s
	{OS/2}.

	(06 Mar 1995)

High Performance Fortran

	<language> (HPF) A {data parallel} language extension to
	{Fortran 90} which provides a portable programming interface
	for a wide variety of target {platforms}.  The original HPF
	language specification was produced by the High Performance
	Fortran Forum, a broad consortium of industry and academia,
	which met regularly throughout 1992 and early 1993.  HPF
	{compilers} are now available on most commonly-used computing
	systems, and users are beginning to gain first hand experience
	with this language.  The Forum has continued to meet in order
	to address advanced topics.

	{HPF+ at Vienna (http://www.par.univie.ac.at/hpf+/)}.

	["High Performance Fortran: Status Report", G.L. Steele Jr
	<gls@think.com>, SIGPLAN Notices 28(1):1-4 (Jan 1993)].

	(09 Sep 1996)

High Performance Parallel Interface

	<hardware, standard> (HIPPI, previously HPPI) A
	{connection-oriented}, point-to-point networking {standard}
	using {circuit-switching} technology at a speed of 800 Mbits/s
	or 1.6 Gbits/s (simplex or full-duplex).  HIPPI is often used
	for short distances (up to 10km depending on cable type) to
	connect a {supercomputer} to {routers}, {frame buffers},
	{mass-storage} peripherals and other computers.

	HIPPI was developed at {Los Alamos National Laboratory} and is
	now {ANSI} standard X3T9/88-127.  Standards for
	interconnecting with {ATM}, {SONet}, and {fibre channel} are
	in development.

	{HIPPI Networking Forum (http://www.esscom.com/hnf)}.

	(29 Jun 1997)

High Performance Routing

	<networking> (HPR) Routing designed to work in conjunction
	with {APPN} {Intermediate Session Routing} (ISR) network
	nodes.  HPR nodes perform many of the same functions as ISR
	nodes.  For example, HPR nodes use the same method of
	calculating routes based on the {Topology} Routing Service
	database and {class of service} tables.  HPR nodes also
	supports such APPN features as connection networks and support
	for parallel {transmission groups} (TGs).  In the HPR
	architecture, both partner nodes must support HPR for {RTP}
	connections to take place between the nodes.  If one node
	supports HPR and the partner node does not, then the link will
	support ISR functionality only.

	["APPN Architecture and Product Implementations Tutorial",
	IBM, GG24-3669-92].

	(08 May 1997)

High Performance Serial Bus

	<hardware, standard> (Or {IEEE} 1394, formerly FireWire) A
	1995 {Macintosh}/{IBM PC} serial bus interface standard
	offering high-speed communications and {isochronous}
	{real-time} data services.

	1394 can transfer data between a computer and its
	{peripherals} at 100, 200, or 400 {Mbps}, with a planed
	increase to 2 {Gbps}.  Cable length is limited to 4.5 m but up
	to 16 cables can be daisy-chained yielding a total length of
	72 m.

	It can {daisy-chain} together up to 63 peripherals in a
	tree-like structure (as opposed to {SCSI}'s linear structure).
	It allows peer-to-peer device communication, such as
	communication between a {scanner} and a {printer}, to take
	place without using system memory or the {CPU}.  It is
	designed to support {plug-and-play} and {hot swapping}.  Its
	6-wire cable is not only more convenient than the SCSI cables
	but can supply up to 60 watts of power, allowing
	low-consumption devices to operate without a separate power
	cord.

	Some expensive camcorders have included this bus since Autumn
	1995.  It is expected to be used to carry {SCSI}, with
	possible application to {home automation} using {repeaters}.

	See also {Universal Serial Bus}, {FC-AL}.

	(25 May 1996)

High Speed Connect

	<hardware> (HSC) A {Hewlett-Packard} bus like {EISA}.

	[HP9000 Configuration Guide, January 1996].

	[Details?]

	(06 Jun 1996)

high speed serial interface

	<hardware, communications> (HSSI) A {serial port} which
	supports serial transmit speeds of up to 52 megabits per
	second.  It is typically used for leased lines such as {DS3}
	(44.736 Mbps) and {E3} (34 Mbps) and for {Wide Area Network}
	devices such as {routers}.

	(20 Nov 1995)

HIGZ

	High Level Interface to Graphics and Zebra.  Part of the {PAW}
	system.

hill climbing

	<algorithm> A {graph} search {algorithm} where the current
	path is extended with a successor node which is closer to the
	solution than the end of the current path.

	In simple hill climbing, the first closer node is chosen
	whereas in steepest ascent hill climbing all successors are
	compared and the closest to the solution is chosen.  Both
	forms fail if there is no closer node.  This may happen if
	there are local maxima in the {search space} which are not
	solutions.  Steepest ascent hill climbing is similar to {best
	first search} but the latter tries all possible extensions of
	the current path in order whereas steepest ascent only tries
	one.

	(09 Dec 1995)

HiLog

	A {higher-order logic} programming language.  An extension of
	normal {logic programming} where {predicate} symbols may be
	variable or structured.  This allows {unification} to be
	performed on the predicate symbols themselves in addition to
	their arguments.

	{(ftp://sbcs.sunysb.edu/SB-hilog)}

	["HiLog as a Platform for Database Languages (Or Why Predicate
	Calculus is Not Enough)", W. Chen et al, Stony Brook, 2nd Intl
	Workshop on Database Prog Langs, Morgan Kaufmann, 1989].

	(07 Dec 1994)

HIMEM

	<software, storage> An {IBM PC} {extended memory manager},
	part of {MS-DOS} version 5.00 or higher.  HIMEM can also act
	as an {A20 handler}.

	(10 Jan 1996)

hing

	({IRC}) Fortuitous typo for "hint", now in wide intentional
	use among players of {initgame}.

	Compare {newsfroup}, {filk}.

	(07 Dec 1994)

HINT

	Hierarchical Information NeTs.

	A language for the {CDC 3600}.

	["HINT: A Graph Processing Language", R.D. Hart, Michigan
	State U, Apr 1970].

	(07 Dec 1994)

HiPAC

	An active DBMS from Xerox Advanced Information Technology.

HIPPI

	{High Performance Parallel Interface}

hirsute

	Occasionally used as a humorous synonym for {hairy}.

HISTORIAN

	A {source code management} system sold by {OPCODE, Inc.}

history

	1. <operating system> A record of previous user inputs (e.g. to
	a {command interpreter}) which can be re-entered without
	re-typing them.  The major improvement of the {C shell} (csh)
	over the {Bourne shell} (sh) was the addition of a command
	history.  This was still inferior to the history mechanism on
	{VMS} which allowed you to recall previous commands as the
	current input line.  You could then edit the command using
	cursor motion, insert and delete.  These sort of history
	editing facilities are available under {tcsh} and {GNU Emacs}.

	2. <history> {The history of computing
	(http://ei.cs.vt.edu/~history/index.html)}.

	3. See {Usenet} newsgroups {news:soc.history} and
	{news:alt.history} for discussion of the history of the world.

	(05 Apr 1995)

Hitachi 6309

	<processor> (HD6309) {Hitachi}'s version of the {Motorola
	6809} {microprocessor}.  Compatible with the 6809, it added
	two new eight-bit {registers} that could be added to form a
	second 16-bit register, and all four eight-bit registers could
	form a 32-bit register.  It also featured division, and some
	32-bit arithmetic and was generally 30% faster in native mode.
	This information, surprisingly, was never published by
	Hitachi.

	{Technical reference
	(http://www.sandelman.ottawa.on.ca/People/Alan_DeKok/interests/6309.techref)}.

	(21 Mar 1997)

Hitachi HD64180

	<processor> A processor family which adds peripherals and an
	{MMU} to the {Zilog Z80}.

	(06 Oct 1995)

HITL

	The {Human Interface Technology Laboratory}.

hit rate

	<storage> The fraction of all memory accesses which are
	satisfied from the {cache}.

	(21 Jan 1997)

HLISP

	"Monocopy and Associative Algorithms in an Extended Lisp",
	E. Goto, U Tokyo May 1974.

HLL

	{high-level language}

HLLAPI

	{High Level Language Application Programming Interface}

hlp

	<filename extension> A {Microsoft Windows} {filename
	extension} for {hypertext} {WinHelp} files.  These are in a
	{proprietary} format, and are compiled from {source files}
	written in a dialect of {RTF}.

	See also {gid}.

	{Usenet} newsgroup:
	{news:comp.os.ms-windows.programmer.winhelp}.

	(30 Jan 1997)

HMA

	{High Memory Area}

HMAC

	{Keyed-Hashing Message Authentication}

HMP

	{hybrid multiprocessing}

HMTL

	Do you mean {HTML}?

Hoare powerdomain

	See {powerdomain}.

Hobbit

	A {Scheme} to {C} compiler by Tanel Tammet
	<tammet@cs.chalmers.se>.  Hobbit attempts to retain most of
	the original Scheme program structure, making the output C
	program readable and modifiable.  Hobbit is written in Scheme
	and is able to self-compile.  Hobbit release 1 works together
	with the {scm} release scm4b3.  Future releases of scm and
	hobbit will be coordinated.

	Current version: release 2.

	{(ftp://altdorf.ai.mit.edu/archive/scm/hobbit2.tar.Z)}

	(1993/04/25)

	2. The non-{ITS} name of <vad@ai.mit.edu> (*Hobbit*), master of
	lasers.

hobbit

	High order bit.  The most significant bit (of a byte).  Also
	known as the {meta bit} or {high bit}.

hog

	1. Favoured term to describe programs or hardware that seem to
	eat far more than their share of a system's resources,
	especially those which noticeably degrade interactive
	response.  *Not* used of programs that are simply extremely
	large or complex or that are merely painfully slow themselves
	(see {pig, run like a}).  More often than not encountered in
	qualified forms, e.g. "memory hog", "core hog", "hog the
	processor", "hog the disk".  "A controller that never gives up
	the I/O bus gets killed after the bus-hog timer expires."

	2. Also said of *people* who use more than their fair share of
	resources (particularly disk, where it seems that 10% of the
	people use 90% of the disk, no matter how big the disk is or
	how many people use it).  Of course, once disk hogs fill up
	one file system, they typically find some other new one to
	infect, claiming to the sysadmin that they have an important
	new project to complete.

HOL

	Higher Order Logic.  A proof-generating system for {higher
	order logic} based on {LCF}.  Implementations include {HOL-88}
	and {HOL-90}.

	{(ftp://ted.cs.uidaho.edu/pub/hol)}.  Mailing list:
	info-hol@ted.cs.uidaho.edu.

	["HOL: A Machine Oriented Formulation of Higher Order Logic",
	M.J.C. Gordon, Report 68, Comp Lab U Cambridge (1985)].

	["Introduction to HOL", M.J.C. Gordon et al, Cambridge U Press
	1993 ISBN 0-521-441897].

HOL-88

	An implementation of {HOL} built on {ML} by Mike Gordon
	<mjcg@cl.cam.ac.uk>.

HOL-90

	An implementation of {HOL} built on {SML/NJ} by Brian Graham
	<graham@cpsc.ucalgary.ca>.  Runs on {Sun-4}.

	{(ftp://fsa.cpsc.ucalgary.ca/pub/hol90.tar.Z)}.  Mailing list:
	info-hol@clover.ucdavis.edu.

hole

	<electronics> The absence of an {electron} in a
	{semiconductor} material.  In the {electron model}, a hole can
	be thought of as an incomplete outer electron shell in a
	doping substance.  Holes can also be thought of as positive
	charge carriers; while this is in a sense a fiction, it is a
	useful abstraction.

	(06 Oct 1995)

hole model

	<electronics> A {model} of semiconductor behaviour in which
	{donors} contribute a positive charge equal in magnitude to
	the charge of an {electron}, and {acceptors} contribute space
	for such a charge within the crystal lattice.  Honored by
	history well before electrons were discovered and described,
	much of {electronics}, especially at the engineering level,
	continues to consider {current} as flowing from positive to
	negative.

	(05 Oct 1995)

Hollerithabetical order

	<algorithm> Sorted into the order a standard {Hollerith} {card
	sorting machine} produces, with special characters interleaved
	within the alphabet.

	(11 Feb 1997)

HOL-UNITY

	A verification tool for {UNITY}?  Version 2.1.

	E-mail: Flemming Andersen <fa@tfl.dk>?

holy wars

	[{Usenet}, but may predate it] {flame war}s over {religious
	issues}.  The paper by Danny Cohen that popularised the terms
	{big-endian} and {little-endian} was entitled "On Holy Wars
	and a Plea for Peace".  Other perennial Holy Wars have
	included {EMACS} vs. {vi}, my personal computer vs. everyone
	else's personal computer, {ITS} vs. {Unix}, {Unix} vs. {VMS},
	{BSD} Unix vs. {USG Unix}, {C} vs. {Pascal}, {C} vs. FORTRAN,
	etc., ad nauseam.  The characteristic that distinguishes holy
	wars from normal technical disputes is that in a holy wars
	most of the participants spend their time trying to pass off
	personal value choices and cultural attachments as objective
	technical evaluations.  See also {theology}.

home box

	A hacker's personal machine, especially one he or she owns.
	"Yeah?  Well, *my* home box runs a full {4.2BSD}, so there!"

home machine

	1. Synonym {home box}.

	2. The machine that receives your e-mail.  These senses might
	be distinct, for example, for a hacker who owns one computer
	at home, but reads e-mail at work.

home page

	<World-Wide Web> The top-level document relating to an
	individual or institution.  This often has a {URL} consisting
	of just a {hostname}, e.g. http://www.ncsa.uiuc.edu/.  All
	other pages on a server are usually accessible by following
	{links} from the home page.

	{CERN's home pages list
	(http://www.w3.org/hypertext/DataSources/WWW/Servers.html)}.
	{NCSA New home pages list
	(http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/whats-new.html)}.

	(16 Dec 1994)

homomorphism

	A map f between groups A and B is a homomorphism of A into B
	if
		f(a1 * a2) = f(a1) * f(a2)  for all a1,a2 in A.

	where the *s are the respective group operations.

Honeywell-800 Business Compiler

	Another name for FACT.  Sammet 1969,
	p.327.

HOOD

	Hierarchical Object Oriented Design: a method for
	Architectural Design primarily for software to be developed in
	Ada, leading to automated checking, documentation and source
	code generation.

HOOK

	? Object Oriented Kernel.  Delphia.  An object-oriented
	extension of Delphia Prolog.

hook

	<programming> A {software} or {hardware} feature included in
	order to simplify later additions or changes by a user.

	For example, a simple program that prints numbers might always
	print them in base 10, but a more flexible version would let a
	variable determine what base to use; setting the variable to 5
	would make the program print numbers in base 5.  The variable
	is a simple hook.  An even more flexible program might examine
	the variable and treat a value of 16 or less as the base to
	use, but treat any other number as the address of a
	user-supplied routine for printing a number.  This is a
	{hairy} but powerful hook; one can then write a routine to
	print numbers as Roman numerals, say, or as Hebrew characters,
	and plug it into the program through the hook.

	Often the difference between a good program and a superb one
	is that the latter has useful hooks in judiciously chosen
	places.  Both may do the original job about equally well, but
	the one with the hooks is much more flexible for future
	expansion of capabilities.

	{Emacs}, for example, is *all* hooks.

	The term "user exit" is synonymous but much more formal and
	less hackish.

	(25 Jun 1997)

hop

	1. <messaging> One point-to-point transmission in a series
	required to get a message from point A to point B on a
	store-and-forward network.  On such networks (including
	{UUCPNET} and {FidoNet}), an important inter-machine metric is
	the hop count of the shortest path between them.  This can be
	more significant than their geographical separation.  See also
	{bang path}.

	2. <networking> One direct host-to-host connection forming
	part of the route between two hosts in a {routed} {network}
	such as the {Internet}.  Some {protocols} place an upper limit
	on the hop count in order to detect routing loops.

	3. <jargon, networking> To {log in} to a {remote} computer,
	especially via {rlogin} or {telnet}.  "I'll hop over to foovax
	to FTP that."

	(25 Jun 1997)

Hope

	<language> A {functional programming} language designed by
	R.M. Burstall, D.B. MacQueen and D.T. Sanella at {University
	of Edinburgh} in 1978.  It is a large language supporting
	user-defined {prefix}, {infix} or {distfix} operators.  Hope
	has {polymorphic} typing and allows {overloading} of operators
	which requires explicit type declarations.  Hope has {lazy
	lists} and was the first language to use {call-by-pattern}.

	It has been ported to {Unix}, {Macintosh}, and {IBM PC}.

	See also {Hope+}, {Hope+C}.

	{(ftp://brolga.cc.uq.oz.au/pub/hope)}.

	[R.M.Burstall, D.B.MacQueen, D.T.Sanella, "HOPE: An
	experimental applicative language", Proc. 1980 Lisp conf.,
	Stanford, CA, p.136-143, Aug 1980].

	["A HOPE Tutorial", R. Bailey, BYTE Aug 1985, pp.235-258].

	["Functional Programming with Hope", R. Bailey, Ellis Horwood
	1990].

	(27 Nov 1992)

Hope+

	An extension of {Hope} implemented in the Alvey {Flagship}
	project at Imperial College.  Hope+ has vectors, real numbers,
	best fit {pattern matching}, lazy data constructors, absolute
	{set abstraction}s and constraints.  It has a
	{continuation}-based I/O system which posesses {referential
	transparency} and is capable of handling all common I/O tasks
	such as terminal and file I/O, signal handling and
	interprocess communications.  It has modules and {separate
	compilation}.

	["Hope+", N. Perry, Imperial College, IC/FPR/LANG/2.5.1/7,
	1988.]

Hope+C

	Further evolution of {Hope+} with {continuation-based I/O},
	{coroutine}s, and {RFC}s.  {Flagship} project, {Imperial
	College}.  For {Sun-3}'s with {Motorola} {FPU}'s.  (See
	{Massey Hope}).

	E-mail: John Darlington <jd@dic.ic.ac.uk>.

Hopfield model

	{Hopfield network}

Hopfield network

	<artificial intelligence> (Or "Hopfield model") A kind of
	{neural network} investigated by John Hopfield in the early
	1980s.  The Hopfield network has no special input or output
	neurons (see {McCulloch-Pitts}), but all are both input and
	output, and all are connected to all others in both directions
	(with equal weights in the two directions).  Input is applied
	simultaneously to all neurons which then output to each other
	and the process continues until a stable state is reached,
	which represents the network output.

	(11 Oct 1997)

horizontal application

	An {application program} common to different business
	processes, e.g. {office automation}.

	Compare {vertical application}.

	(12 Dec 1994)

horizontal encoding

	<processor> An {instruction set} where each field (a bit or
	group of bits) in an instruction word controls some
	{functional unit} or {gate} directly, as opposed to {vertical
	encoding} where instruction fields are decoded (by
	{hard-wired} {logic} or {microcode}) to produce the control
	signals.  Horizontal encoding allows all possible combinations
	of control signals (and therefore operations) to be expressed
	as instructions whereas vertical encoding uses a shorter
	instruction word but can only encode those combinations of
	operations built into the decoding logic.

	An {instruction set} may use a mixture of horizontal and
	vertical encoding within each instruction.  Because an
	architecture using horizontal encoding typically requires more
	instruction word bits it is sometimes known as a {very long
	instruction word} (VLIW) architecture.

	(23 Apr 1995)

horizontal loop combination

	See {tupling}.

horizontal microcode

	<processor> {Microcode} using {horizontal encoding}.

	(23 Apr 1995)

horizontal scan rate

	<hardware> (HSR) The measure of how many {scan lines} of
	{pixels} a {monitor} can display in one second, expressed in
	kHz (generally somewhere between 20 and 100 kHz).

	The HSR is controlled by the horizontal sync signal generated
	by the {video controller}, but is limited by the speed with
	which the monitor can scan the electron beam horizontally
	across the screen and then return it to the beginning of the
	next line.

	(09 Feb 1996)

Horn clause

	Also known as a definite clause.  A set of atomic literals
	with one positive literal.  Usually written

		L <- L1, ..., Ln where n>=0.

	If L is false the clause is regarded as a goal.  Horn clauses
	can express a subset of statements of {first order logic}.

hose

	1. To make non-functional or greatly degraded in performance.
	"That big ray-tracing program really hoses the system."  See
	{hosed}.

	2. A narrow channel through which data flows under pressure.
	Generally denotes data paths that represent performance
	bottlenecks.

	3. Cabling, especially {thick Ethernet cable}.  This is
	sometimes called "bit hose" or "hosery" (a play on "hosiery")
	or "etherhose".  See also {washing machine}.

hosed

	Same as {down}.  Used primarily by {Unix} hackers.  Humorous:
	also implies a condition thought to be relatively easy to
	reverse.  Probably derived from the Canadian slang "hoser"
	popularised by the Bob and Doug Mackenzie skits on SCTV, but
	this usage predated SCTV by years in hackerdom (it was
	certainly already live at {CMU} in the 1970s).  See {hose}.
	It is also widely used of people in the mainstream sense of
	"in an extremely unfortunate situation".

	Once upon a time, a {Cray} that had been experiencing periodic
	difficulties crashed, and it was announced to have been hosed.
	It was discovered that the crash was due to the disconnection
	of some coolant hoses.  The problem was corrected, and users
	were then assured that everything was OK because the system
	had been rehosed.  See also {dehose}.

HOS-STPL

	Hospital Operating System - STructured Programming Language.
	A {FORTRAN}-like language with structured extensions.

	["HOS-STPL User Manual", Health Services Research, US Public
	Health Service (Jan 1975)].

host

	1. <networking> A computer connected to a {network}.

	The term {node} includes devices such as routers and printers
	which would not normally be called "hosts".

	2. <communications> A computer to which one connects using a
	{terminal emulator}.

	(16 Feb 1995)

host-host layer

	{transport layer}

hostname

	1. (Or "sitename").  The unique name by which a computer is
	known on a {network}, used to identify it in {electronic
	mail}, {Usenet} {news}, or other forms of electronic
	information interchange.

	On {Internet} the hostname is an {ASCII} string,
	e.g. "wombat.doc.ic.ac.uk" which, consists of a local part
	(wombat) and a {domain} name (doc.ic.ac.uk).  The hostname is
	translated into an {Internet address} either via the
	/etc/hosts file, {NIS} or by the {Domain Name System} (DNS) or
	{resolver}.  It is possible for one computer to have several
	hostnames (aliases) though one is designated as its
	{canonical} name.

	It is often possible to guess a hostname for a particular
	institution.  This is useful if you want to know if they
	operate network services like {anonymous FTP}, {World-Wide
	Web} or {finger}.  First try the institution's name or obvious
	abbreviations thereof, with the appropriate {domain} appended,
	e.g. "mit.edu".  If this fails, prepend "ftp." or "www." as
	appropriate, e.g. "www.data-io.com".  You can use the {ping}
	command as a quick way to test whether a hostname is valid.

	The folklore interest of hostnames stems from the creativity
	and humour they often display.  Interpreting a sitename is not
	unlike interpreting a vanity licence plate; one has to
	mentally unpack it, allowing for mono-case and length
	restrictions and the lack of whitespace.  Hacker tradition
	deprecates dull, institutional-sounding names in favour of
	punchy, humorous, and clever coinages (except that it is
	considered appropriate for the official public gateway machine
	of an organisation to bear the organisation's name or
	acronym).  Mythological references, cartoon characters, animal
	names, and allusions to SF or fantasy literature are probably
	the most popular sources for sitenames (in roughly descending
	order).  The obligatory comment is Harris's Lament: "All the
	good ones are taken!"

	See also {network address}.

	2. {Berkeley} {Unix} command to set and get the application
	level name used by the host.

	{Unix manual page}: hostname(1).

	(16 Feb 1995)

host number

	<networking> The host part of an {Internet address}.  The rest
	is the {network number}.

	(27 Oct 1994)

Hot Fix

	<storage> {Novell, Inc.}'s term for the feature of their
	network {file server} {operating system}, {Novell NetWare},
	which handles errors in disk write operations.  The OS
	re-reads every block it writes to disk while it holds the data
	to be written in memory.  In the case of an error, the data
	block is written to a spare area on the disk.

	The feature lost much of its importance with the widespread
	use of hard disk drives with built-in {error correction} and
	{bad block} re-mapping.

	(27 May 1997)

HotJava

	<World-Wide Web> A modular, extensible {World-Wide Web}
	{browser} from {Sun Microsystems} that can execute programs
	written in the {Java} programming language.  These programs,
	known as "{applets}", can be included (like images) in {HTML}
	pages.  Because Java programs are compiled into machine
	independent {bytecodes}, applets can run on any {platform} on
	which HotJava runs - currently (December 1995)
	{SPARC}/{Solaris} 2 and {Intel 80x86}/{Windows 95}, {Windows
	NT}.

	{Home (http://java.sun.com/hotjava.html)}

	(10 Dec 1995)

hotlink

	A mechanism for sharing data between two {application
	program}s where changes to the data made by one application
	appear instantly in the other's copy.

	Under {System 7} on the {Macintosh} the users establishes a
	hotlink by doing a "Create Publisher" on the server and
	"Subscribe" on the client.

	Under {Windows 3} it's "Cut Special"(?) and "Paste Special"
	(as opposed to the normal Cut and Paste).

	(16 Feb 1995)

hotlist

	<World-Wide Web> (From {hypertext} "{hot spot}") A {document}
	on the {World-Wide Web} or a user's {browser} configuration
	file containing {hypertext} {link}s, often unorganised and
	undocumented, to notable pages on the Web.

	Compare the 19th century notion of a {commonplace book
	(http://c.gp.cs.cmu.edu:5103/prog/webster?commonplace+book)}.

	(16 Apr 1995)

hot spot

	1. (primarily used by {C}/{Unix} programmers, but spreading)
	It is received wisdom that in most programs, less than 10% of
	the code eats 90% of the execution time; if one were to graph
	instruction visits versus code addresses, one would typically
	see a few huge spikes amidst a lot of low-level noise.  Such
	spikes are called "hot spots" and are good candidates for
	heavy optimisation or {hand-hacking}.  The term is especially
	used of tight loops and recursions in the code's central
	algorithm, as opposed to (say) initial set-up costs or large
	but infrequent I/O operations.

	See {tune}, {bum}, {hand-hacking}.

	2. The active location of a cursor on a bit-map display.  "Put
	the mouse's hot spot on the "ON" widget and click the left
	button."

	3. A screen region that is sensitive to mouse clicks, which
	trigger some action.  {Hypertext} help screens are an example,
	in which a hot spot exists in the vicinity of any word for
	which additional material is available.

	4. In a {massively parallel} computer with {shared memory},
	the one location that all 10,000 processors are trying to read
	or write at once (perhaps because they are all doing a
	{busy-wait} on the same lock).

	5. More generally, any place in a hardware design that turns
	into a performance {bottleneck} due to resource contention.

	(16 Feb 1995)

Hot Swapable Routing Protocol

	<protocol> (HSRP) A mirrored {router} in passive mode sending
	{hello packets}, waiting for a lead router to die and, without
	dropping a {packet}, take over from that router.

	[Specification?]

	(25 Apr 1997)

hot swapping

	<hardware> The connection and disconnection of {peripherals}
	or other components without interrupting system operation.
	This facility may have design implications for both hardware
	and software.

	[More detail?]

	(15 Mar 1997)

HOTT

	(Hot Off The Tree) An {Internet}-based electronic magazine
	edited by David Scott Lewis <d.s.lewis@ieee.org> and
	distributed by {electronic mail}.

	(23 Dec 1994)

house wizard

	(Probably from ad-agency tradetalk, "house freak") A hacker
	occupying a technical-specialist, R&D, or systems position at
	a commercial shop.  A really effective house wizard can have
	influence out of all proportion to his/her ostensible rank and
	still not have to wear a suit.  Used especially of {Unix}
	{wizard}s.  The term "house guru" is equivalent.

	(16 Feb 1995)

HP

	{Hewlett-Packard}

hp2ps

	Version 1.9c

	interpreter

	Alun Jones <alun@huey.wst.com>

	{(ftp://ftp.wst.com/pub/hp2ps/hp2ps19c.zip)}.
	description: hp2ps is an HP-GL interpreter that is written in
	PostScript.

	It runs on the printer itself.  If there is monetary benefit
	from using hp2ps, it is requested that money be set to Alun
	Jones.  Further, hp2ps may not be distributed as part of a
	commercial offering without prior agreement.

H/PC

	{Hand-held Personal Computer}

HPCC

	{High Performance Computing and Communications}

HPcode

	Stack-based intermediate language used by {HP} in many of its
	compilers for {RISC} and stack-based architectures.  Supports
	{Fortran}, {Ada}, {Pascal}, {COBOL} and {C++}.  Descended from
	Stanford's {U-code}.

HPCode-Plus

	A descendant of {HPcode} with {data type}s, developed to be an
	{ANDF} language.

	["ANDF: Finally an UNCOL After 30 Years", M.E. Benitez, Jack
	Davidson <jwd@virginia.edu> et al, CS TR-91-05 U Virginia (Mar
	1991)].

	(16 Mar 1995)

HPF

	{High Performance Fortran}

HPFS

	{High Performance File System}

HP-GL

	{Hewlett-Packard Graphics Language}

HP-GL/2

	"HP-GL/2 Programmer's Guide", No. 5959-9733, HP.  (See PCL.)

HP-IB

	{IEEE 488}

HPL

	Language used in HP9825A/S/T "Desktop Calculators", 1978(?)
	and ported to the early Series 200 family (9826 and 9836,
	68000).  Fairly simple and standard, but with extensive I/O
	support for data acquisition and control (BCD, Serial, 16 bit
	custom and {IEEE 488} interfaces), including interrupt
	handling.  Currently owned by Structured Software Systems.
	"HPL Operating Manual for Series 200, Models 216, 226 and
	235\6", HP 98614-90010, Jan 1984.

HPLOT

	A graphical output facility for {HBOOK}.

	(22 Feb 1995)

HP-MPE

	{Hewlett Packard Multi Processing Executive}

HP-PA

	{Hewlett Packard Precision Architecture}

HPPI

	{High Performance Parallel Interface}

HPR

	{High Performance Routing}

HP-SUX

	<abuse, operating system> /H-P suhks/ An unflattering
	hackerism for {HP-UX} which features some truly unique
	bogosities in the {file system} internals and elsewhere (these
	occasionally create portability problems).  HP-UX is often
	referred to as "hockey-pux" inside HP, and one respondent
	claims that the proper pronunciation is /H-P ukkkhhhh/ as
	though one were about to spit.  Another such alternate
	spelling and pronunciation is "H-PUX" /H-puhks/.  Hackers at
	HP/Apollo (the former Apollo Computers which was swallowed by
	HP in 1989) have been heard to complain that Mr. Packard
	should have pushed to have his name first, if for no other
	reason than the greater eloquence of the resulting acronym.

	Compare {AIDX}, {buglix}, {Telerat}, {Open DeathTrap},
	{ScumOS}, {sun-stools}.

	(12 May 1997)

HP-UX

	<operating system> The version of {Unix} running on
	{Hewlett-Packard} {workstations}.

	HP-UX conforms to {X/Open}'s Portability Guide Issue 4
	({XPG4}), Federal Information Processing Specification (FIPS)
	151.1, {POSIX} 1003.1, POSIX 1003.2, {AT&T}'s System V
	Interface Definition 2 ({SVID} 2).  HP-UX incorporates
	selected features from the University of California at
	Berkeley Software Distribution 4.3 ({4.3BSD}).

	It is known by some as "{HP-SUX}".

	[Features?]

	(12 May 1997)

HP VEE

	{Hewlett-Packard Visual Engineering Environment}

hqx

	{binhex}

hs

	{Haskell}

HSB

	{hue, saturation, brightness}

HSC

	{High Speed Connect}

HSL-FX

	{Hierarchical Specification Language - Function Extension}

HSRP

	{Hot Swapable Routing Protocol}

HSSI

	{high speed serial interface}

HSV

	{hue, saturation, value}

HT

	<character> (Control-I, HT, {ASCII 9}.  From "tabulation") A
	character which when displayed or printed causes the following
	character to be placed at the next "tabstop" - the column
	whose number is a multiple of the current tab width.  Commonly
	(especially in Unix(?)) the tab width is eight, so, counting
	from the left margin (column zero), the tab stops are at
	columns 8, 16, 24, up to the width of the screen or page.

	A tab width of four is often preferred when indenting program
	{source code} to conserve indentation.

	Represented as "\t" in {C} and {Unix}.

	(24 Jun 1996)

HTLM

	Do you mean {HTML}?

HTML

	{Hypertext Markup Language}

HTML+

	A proposed new {standard} which will supersede {HTML}.  It is
	a superset of HTML which is designed to extend the
	capabilities of the language to incorporate better support for
	{multimedia} objects in documents.

	(27 Oct 1994)

HTTL

	Do you mean {HTTP} or {HTML}?

HTTP

	{Hypertext Transfer Protocol}

HTTP/1.0

	{Hypertext Transfer Protocol} version 1.0.

HTTP cookie

	<World-Wide Web> A packet of information sent by an {HTTP
	server} to a {World-Wide Web} {browser} and then sent back by
	the browser each time it accesses that server.  Cookies can
	contain any arbitrary information the server chooses and are
	used to maintain {state} between otherwise stateless {HTTP}
	transactions.  Typically this is used to authenticate or
	identify a registered user of a {web site} without requiring
	them to sign in again every time they access that site.  Other
	uses are, e.g. maintaining a "shopping basket" of goods you
	have selected to purchase during a session at a site, site
	personalisation (presenting different pages to different
	users), tracking a particular user's access to a site.

	{(http://www.illuminatus.com/cookie)}.

	(15 Jan 1997)

HTTPd

	<World-Wide Web> (Hypertext transfer protocol daemon).

	An {HTTP/1.0}-compatible {server}, written by Rob McCool
	<robm@ncsa.uiuc.edu> of {NCSA}, for making {hypertext} and
	other documents available to {World-Wide Web} {browsers}.

	HTTPd is designed to be small and fast and to work with most
	HTTP/0.9 and HTTP/1.0 {browser}s.  You can customise your
	server to execute searches and handle {HTML} {forms}.  It also
	supports {server side include} files, allowing you to include
	the output of commands or other files in {HTML} documents.

	The current (08 Aug 1994) version is 1.3.

	{(http://hoohoo.ncsa.uiuc.edu/docs/Overview.html)}

	E-mail: <httpd@ncsa.uiuc.edu>.

	(16 Jan 1995)

HTTPS

	{HyperText Transmission Protocol, Secure}

HTTP server

	<World-Wide Web> (Or "web server") A {server} process running
	at a {web site} which sends out {web pages} in response to
	{HTTP} requests from remote {browsers}.

	If one site runs more than one server they must use different
	{port numbers}.  Alternatively, several hostnames may be
	mapped to the same computer in which case they are known as
	"{virtual servers}".

	{Apache} and {NCSA} {HTTPd} are two popular web servers.
	There are many others including some for practically every
	{platform}.  Servers differ mostly in the "server-side"
	features they offer such as {server-side include}, and in
	their {authentication} and access control mechanisms.  All
	decent servers support {CGI} and most have some binary {API}
	as well.

	(05 Feb 1997)

hub

	<networking> (By analogy with the hub of a wheel) A device
	connected to several other devices.

	In {ARCnet}, a hub is used to connect several computers
	together.  In a message handling service, a number of local
	computers might exchange messages solely with a hub computer.
	The hub would be responsible for exchanging messages with
	other hubs and non-local computers.

	(16 Jan 1995)

Hubnet

	<networking> A 50 Mb/s {optical fibre} {network} developed at
	{Toronto University}.  Network {topology} is a rooted tree
	with a maximum of 65536 hosts with maximum separation of 2 km.
	The {protocol} is multiple access, collision avoidance, echo
	detect and retry.

	[Computer Systems Equipment Design, Jan 85].

	(22 Nov 1994)

hubs

	{hub}

hue, saturation, brightness

	<graphics> (HSV) A {colour model} that describes colours in
	terms of {hue} (or "tint"), {saturation} (or "shade") and
	{brightness} (or "tone").

	Compare: {HSV}.

	(03 Aug 1997)

hue, saturation, value

	<graphics> (HSV) A {colour model} that describes colours in
	terms of {hue} (or "tint"), {saturation} (or "shade") and
	{value} (or "tone").

	Compare: {HSB}.

	(03 Aug 1997)

huff

	To compress data using a {Huffman} code.  Various programs
	that use such methods have been called "HUFF" or some variant
	thereof.

	Opposite: {puff}.  Compare {crunch}, {compress}.

	(23 Dec 1994)

Huffman coding

	A {data compression} technique which varies the length of the
	encoded symbol in proportion to its information content, that
	is the more often a symbol or token is used, the shorter the
	binary string used to represent it in the compressed stream.
	Huffman codes can be properly decoded because they obey the
	prefix property, which means that no code can be a prefix of
	another code, and so the complete set of codes can be
	represented as a binary tree, known as a Huffman tree.
	Huffman coding was first described in a seminal paper by
	D.A. Huffman in 1952.

	(23 Dec 1994)

HUGO

	A {bytecode}-interpreted {transaction handler} from {Geac}.

	(23 Dec 1994)

HUGS

	{Haskell User's Gofer System}

Human-Computer Interaction

	(HCI) The study of how humans use computers and how to design
	computer systems which are easy, quick and productive for
	humans to use.

	{(http://www.cs.bgsu.edu/HCI/)}

	(05 Jan 1995)

Human-Computer Interface

	Anything which allows a user to interact with a computer.
	Examples are {WIMP}, {command line interpreter}, or {virtual
	reality}.

	(05 Jan 1995)

Human Interface Technology Laboratory

	(HITL) The Human Interface Technology Laboratory at the
	{University of Washington} was founded in 1990.  It is a
	centre for research and development of advanced interface
	technology.  Located on the university campus, HITL forms a
	bridge between academia and industry.  It maintains its
	industrial focus via the Virtual Worlds Consortium and
	maintains contacts with academia by training students and
	teaching courses.  The lab has access to faculty and students
	throughout the State of Washington.

	Address: Human Interface Technology Laboratory, University of
	Washington, Seattle, USA.

	(13 Feb 1995)

humma

	A filler word used on various "chat" and "talk" programs when
	you had nothing to say but felt that it was important to say
	something.  The word apparently originated (at least with this
	definition) on the MECC Timeshare System (MTS, a now-defunct
	educational {time-sharing} system running in Minnesota during
	the 1970s and the early 1980s) but was later sighted on early
	Unix systems.

humour

	See {hacker humour}.

hung

	["hung up"] Equivalent to {wedged}, but more common at Unix/C
	sites.  Not generally used of people.  Synonym with {locked
	up}, {wedged}; compare {hosed}.  See also {hang}.  A hung
	state is distinguished from {crash}ed or {down}, where the
	program or system is also unusable but because it is not
	running rather than because it is waiting for something.
	However, the recovery from both situations is often the same.

Hungry Programmers

	<body> A group of programmers producing {free software}.

	{Home (http://www.hungry.com/)}

	(20 Mar 1995)

hungry puppy

	Synonym {slopsucker}.

Hungry ViewKit

	<operating system, library> A {C++} {class} library for
	developing {Motif} {application program}s (although this
	restriction will be lifted once {LessTif} is finished).  It
	follows the {API} of the {Iris}(tm) {ViewKit}, put out by
	{SGI}.  The Hungry ViewKit is a superset of the Iris ViewKit,
	so any code developed for the Iris version will work with the
	Hungry version, but possibly not vice versa.

	{Home (http://www.hungry.com/products/viewkit/)}

	(20 Mar 1995)

hungus

	/huhng'g*s/ [perhaps related to slang "humongous"] Large,
	unwieldy, usually unmanageable.  "TCP is a hungus piece of
	code."

Hurd

	The Hurd will be the foundation of the whole {GNU} system.  It
	is built on top of the {Mach} 3.0 {kernel}, a free
	{message-passing} kernel developed by {CMU}.  Mach's {virtual
	memory} management and message-passing facilities are
	extensively used by the Hurd.  The GNU C Library will provide
	the {Unix} {system call} interface, and will call the Hurd for
	needed services it can't provide itself.

	One goal of the Hurd is to establish a framework for shared
	development and maintenance.  The Hurd is like GNU {Emacs} in
	that it will allow a broad range of users to create and share
	useful projects without knowing much about the internal
	workings of the system -- projects that might never have been
	attempted without freely available source, a well-designed
	interface, and a multi-server-based design.

	Currently there are free ports of the {Mach} {kernel} to the
	{Intel 80386} {IBM PC}, the {DEC} {PMAX} {workstation}, the
	{Luna} {88k} and several other machines, with more in
	progress, including the {Amiga} and {DEC} {Alpha}-3000
	machines.  Contact <mach@cs.cmu.edu>, if you want to help with
	one of these or start your own.  Porting the GNU Hurd and GNU
	C Library is easy (easier than porting GNU Emacs, certainly
	easier than porting GCC) once a {Mach} port to a particular
	{platform} exists.

	[June 1994 GNU's Bulletin].

	(07 Dec 1994)

Hybrid

	A {concurrent} {object-oriented} language.

	["Active Objects in Hybrid", O.M. Nierstrasz, SIGPLAN Notices
	22(12):243-253 (OOPSLA '87) (Dec 1987)].

	(07 Dec 1994)

hybrid multiprocessing

	<parallel> (HMP) The kind of {multitasking} which {OS/2}
	supports.  HMP provides some elements of {symmetric
	multiprocessing}, using add-on {IBM} software called MP/2.
	OS/2 SMP was planned for release in late 1993.

	(19 Mar 1995)

hybrid testing

	<testing> A combination of {top-down testing} with {bottom-up
	testing} of prioritised or available components.

	(22 May 1996)

hydrofluorocarbon

	<hardware> (HFC) A suggested replacement for the
	chlorofluorocarbon (CFC) coolant gas used in chillers and air
	conditioners.

	(05 Nov 1996)

HyperBase

	<database> An experimental active multi-user {database} for
	{hypertext} systems from the {University of Aalborg}, written
	in {C++}.  It is built on the {client-server} model enabling
	distributed, {concurrent}, and shared access from
	{workstation}s in a {local area network}.

	See also {EHTS}.

	(19 Mar 1995)

Hyper-C

	A {data parallel} extension of {C} from HyperParallel Tech,
	France, for {PVM}, {CM} and {Maspar}.  It is available from
	Fortunel Systems <fortunel@vnet.net>, +1 (919) 319 1624.

	E-mail: <hyperc-support@hyperparallel.polytechnique.fr>.

	(17 Nov 1994)

HyperCard

	A software package by Bill Atkinson for storage and retrieval
	of information on the {Macintosh}.  It can handle {image}s and
	is designed for {browsing}.  The powerful customisable
	interactive {user interface} allows new {application}s to be
	easily constructed by manipulating objects on the screen,
	often without conventional programming, though the language
	{HyperTalk} can be used for more complex tasks.

	{Usenet} newsgroup: {news:comp.sys.mac.hypercard}.

	["Apple Macintosh HyperCard User Guide", Apple Computer 1987].

	(10 Feb 1995)

hypercube

	A cube of more than three dimensions.  A single (2^0 = 1)
	point (or "node") can be considered as a zero dimensional
	cube, two (2^1) nodes joined by a line (or "edge") are a one
	dimensional cube, four (2^2) nodes arranged in a square are a
	two dimensional cube and eight (2^3) nodes are an ordinary
	three dimensional cube.  Continuing this geometric
	progression, the first hypercube has 2^4 = 16 nodes and is a
	four dimensional shape (a "four-cube") and an N dimensional
	cube has 2^N nodes (an "N-cube").  To make an N+1 dimensional
	cube, take two N dimensional cubes and join each node on one
	cube to the corresponding node on the other.  A four-cube can
	be visualised as a three-cube with a smaller three-cube
	centred inside it with edges radiating diagonally out (in the
	fourth dimension) from each node on the inner cube to the
	corresponding node on the outer cube.

	Each node in an N dimensional cube is directly connected to N
	other nodes.  We can identify each node by a set of N
	{Cartesian coordinates} where each coordinate is either zero
	or one.  Two node will be directly connected if they differ in
	only one coordinate.

	The simple, regular geometrical structure and the close
	relationship between the coordinate system and binary numbers
	make the hypercube an appropriate topology for a parallel
	computer interconnection network.  The fact that the number of
	directly connected, "nearest neighbour", nodes increases with
	the total size of the network is also highly desirable for a
	{parallel computer}.

	(17 Nov 1994)

Hyperion

	<computer> An {MS-DOS} {personal computer} that was
	manufactured in Kanata (near Ottawa, Ontario, Canada) in the
	mid-1980s.  It received considerable government subsidies and,
	while it was considered well-designed and manufactured and a
	real threat to the {Compaq Portable}, the Ottawa firm that
	designed it was unable to beat {Compaq}.

	(21 Jul 1997)

hyperlink

	<hypertext> A reference (link) from some point in one
	{hypertext} document to (some point in) another document or
	another place in the same document.  A {browser} usually
	displays a hyperlink in some distinguishing way, e.g. in a
	different colour, font or style.  When the user activates the
	link (e.g. by clicking on it with the {mouse}) the {browser}
	will display the target of the link.

	(10 Feb 1995)

Hyper-Man

	A {browser} available with {Epoch} giving {hypertext} access
	to the {Unix} manual.

hypermedia

	An extension of {hypertext} to include graphics, sound, video
	and other kinds of data.  See also {hypertext markup
	language}, {World-Wide Web}.

HyperNeWS

	A Hypertext system from the Turing Institute Glasgow, based on
	{NeWS}.

Hyperscript

	Informix.  The object-based programming language for Wingz,
	used for creating charts, graphs, graphics, and customised
	data entry.

hyperspace

	/hi:'per-spays/ A memory location that is *far* away from
	where the {program counter} should be pointing, often
	inaccessible because it is not even mapped in.  (Compare {jump
	off into never-never land}.)

	This usage is from the SF notion of a spaceship jumping "into
	hyperspace", that is, taking a shortcut through
	higher-dimensional space - in other words, bypassing this
	universe.  The variant "east hyperspace" is recorded among
	{CMU} and {Bliss} hackers.

	(23 Nov 1994)

HyperSPARC

	The successor to the {SuperSPARC} processor, based on the
	{SPARC} {ISA}.  The HyperSPARC has smaller {cache}s than the
	{SuperSPARC}: 8kb on-chip and 256kb off-chip (compared with
	36kb and 1Mb).  The HyperSPARC's {memory management} is
	optimised for more efficient out-of-cache addressing which
	means quicker access to external (slower, cheaper) memory.

	(23 Nov 1994)

Hyperstrict

	A function which is hyperstrict in some argument will fully
	evaluate that argument.  To fully evaluate an object, evaluate
	it to WHNF and if it is a constructed data object (e.g. a list
	or tuple) then fully evaluate every component and so on
	recursively.  Thus a hyperstrict function will fail to
	terminate if its argument or any component or sub-component of
	its argument fails to terminate (i.e. if its argument is not
	"total").

HyperTalk

	A verbose semicompiled language by Bill Atkinson and Dan
	Winkler, with loose {syntax} and high readability.

	HyperTalk uses {HyperCard} as an object management system,
	development environment and interface builder.  Programs are
	organised into "stacks" of "cards", each of which may have
	"buttons" and "fields".  All data storage is in
	zero-terminated strings in fields, local, or global variables;
	all data references are through "chunk expressions" of the
	form:

		'last item of background field
		"Name List" of card ID 34217'.

	Flow of control is {event-driven} and uses message-passing
	among scripts that are attached to stack, background, card,
	field and button objects.

	{Apple Computer} has taken back distribution and maintenance of
	HyperCard from {Claris} Corporation

	["HyperTalk Language Reference Manual", A-W 1988].

	(17 Nov 1994)

hypertext

	<hypertext> A term coined by Ted Nelson around 1965 for a
	collection of documents (or "nodes") containing
	cross-references or "links" which, with the aid of an
	interactive {browser} program, allow the reader to move easily
	from one document to another.  See also {hypermedia}.

	(31 May 1996)

Hypertext Markup Language

	<hypertext, World-Wide Web> (HTML) A {Hypertext} document
	format used on the {World-Wide Web}.  Built on top of {SGML}.
	"Tags" are embedded in the text.  A tag consists of a "<", a
	"directive" (case insensitive), zero or more parameters and a
	">".  Matched pairs of directives, like "<TITLE>" and
	"</TITLE>" are used to delimit text which is to appear in a
	special place or style.

	Links to other documents are in the form

	 <A HREF="http://machine.edu/subdir/file.html">foo</A>

	where "A", "/A" delimit an "anchor", "HREF" introduces a
	hypertext reference, which in this case is a {Uniform Resource
	Locator} (URL) (the thing in double quotes in the example
	above).  The text "foo" will be the label appearing on the
	link in the browser.

	A certain place within an HTML document can be marked with a
	named anchor, e.g.:

	 <A NAME="baz">

	The "fragment identifier", "baz", can be used in an HREF by
	appending "#baz" to the document name.

	Other common tags include <P> for a new paragraph, <B>..</B>
	for bold text, <UL> for an unnumbered list, <PRE> for
	preformated text, <H1>, <H2> .. <H6> for headings.

	{HTML} supports some standard {SGML} {national characters} and
	other non-{ASCII} characters through special {escape
	sequences}, e.g. "&eacute;" for a lower case 'e' with an acute
	accent.  You can sometimes get away without the terminating
	semicolon but it's bad style.

	The {World-Wide Web Consortium} is the standards body for
	HTML.

	See also {HTML+}, {weblint}.

	{HTML 3.0 draft specification
	(http://www.w3.org/hypertext/WWW/MarkUp/MarkUp.html)}.

	{One of the definition documents
	(http://www.ucc.ie/info/net/htmldoc.html)}.

	{Character escape sequences
	(http://www.w3.org/hypertext/WWW/MarkUp/ISOlat1.html)}.

	(07 Dec 1997)

Hypertext Transfer Protocol

	<protocol> (HTTP) The {client-server} {TCP/IP} {protocol} used
	on the {World-Wide Web} for the exchange of {HTML} documents.
	It conventionally uses {port} 80.

	Current version (May 1997): HTTP 1.1, defined in {RFC 2068}.

	See also {Uniform Resource Locator}.

	(27 Oct 1994)

HyperText Transmission Protocol, Secure

	<protocol> (HTTPS) A variant of {HTTP} used by {Netscape} for
	handling secure transactions.

	The {Netscape Navigator} supports a {URL} {access method},
	"https", for connecting to {HTTP} {server}s using {SSL}.

	"https" is a unique protocol that is simply {SSL} underneath
	{HTTP}.  You need to use "https://" for HTTP {URL}s with
	{SSL}, whereas you continue to use "http://" for HTTP URLs
	without SSL.  The default "https" {port} number is 443, as
	assigned by the {Internet Assigned Numbers Authority}.

	{(http://www.netscape.com/info/security-doc.html)}

	(16 Jan 1995)

hysterical reasons

	(Or "hysterical raisins") A variant on the stock phrase "for
	historical reasons", indicating specifically that something
	must be done in some stupid way for backwards compatibility,
	and moreover that the feature it must be compatible with was
	the result of a bad design in the first place.  "All IBM PC
	video adaptors have to support MDA text mode for hysterical
	reasons."  Compare {bug-for-bug compatible}.

Hytelnet

	<networking> A {hypertext} database of publicly accessible
	{Internet} sites created and maintained by Peter Scott
	<scottp@moondog.usask.ca>.  Hytelnet currently lists over 1400
	sites, including Libraries, Campus-Wide Information Systems,
	{Gopher}, {WAIS}, {WWW} and {Freenets}.

	Hytelnet software is available for the {IBM PC}, {Macintosh},
	{Unix} and {VMS} systems.

	{(ftp://ftp.usask.ca/pub/hytelnet)} (128.233.3.11).  {Telnet
	(telnet://access.usask.ca/)}, login: hytelnet.

	Mailing list: listserv@library.berkeley.edu (no subject, body:
	subscribe hytelnet FirstName LastName).

	(18 Oct 1995)

HyTime

	Hypermedia/Time-based Structuring Language: an emerging
	ANSI/ISO Standard from the {SGML} Users' Group's Special
	Interest Group on Hypertext and Multimedia (SIGhyper).  A
	hypermedia extension of {SGML}.

	["The HyTime Hypermedia/Time-based Document Structuring
	Language", S. Newcomb et al, CACM 34(11):67-83 (Nov 1991)].

i18n

	{internationalisation}

I2O

	{Intelligent Input/Output}

i386

	{Intel 80386}

i486

	{Intel 486}

i487

	{Intel 487SX}

i860

	A 32/64-bit {superscalar} {RISC} {microprocessor} from
	{Intel}, (released around 1988?).  Originally codenamed "N10".
	It has a 32-bit integer {ALU} and a 64-bit {floating-point
	unit}.  It has a 64-bit data bus with an initialisation mode
	which only uses eight bits of the data bus to allow the use of
	a small boot ROM.  It has a 32-bit wide {instruction cache}
	and a separate 64-bit wide {data cache}.  It uses {register
	scoreboarding} and {register bypassing}.  The {clock rate} is
	33 MHz with a clock-doubled version available.

	[Release date?]

IAB

	{Internet Architecture Board}

IAD

	A dynamic analyser from {IBM} giving information on run-time
	performance and code use.

IAL

	{ALGOL 58}

IAM

	Interactive Algebraic Manipulation.  Interactive {symbolic
	mathematics} for {PDP-10}.

	["IAM, A System for Interactive Algebraic Manipulation", C.
	Christensen et al, Proc Second Symp Symb Alg Manip, ACM Mar
	1971].

IANA

	{Internet Assigned Numbers Authority}

I-APL

	A version of {APL}.
	{(ftp://watserv1.waterloo.edu/languages/apl/)}.

	(06 Jul 1992)

IAR

	Instruction Address Register.

	The {IBM} name for {program counter}.

	(21 Mar 1995)

IAS

	<computer> The first modern computer.  It had main
	{registers}, processing circuits, information paths within the
	{central processing unit} and used {Von Neumann}'s
	{Fetch-Execute} cycle.

	The IAS machine's basic unit of information was a 40 bit
	{word} and the memory had 4096 words.  A word stored in memory
	could represent either an instruction or data.  Each IAS
	instruction was twenty bits long, so that two instructions
	could be stored in each 40-bit memory location.  Each
	instruction consisted of an 8-bit {operation code} and a
	12-bit address that could identify any of 2^12 locations that
	may be used to store an {operand} of the instruction.

	The {CPU} consisted of a data processing unit and a program
	control unit.  It contained various processing and control
	circuits along with a set of high-speed {registers} for the
	temporary storage of instructions, memory addresses and data.

	The main actions specified by instructions were performed by
	the arithmetic-logic circuits of the data processing unit.  An
	electronic clock circuit was used to generate the signals
	needed to synchronise the operation of the different parts of
	the system.

	(24 Nov 1996)

IAW

	inactive window.

	Used in {talk} systems to mean that that person will not be
	taking part in the conversation for a while.  The sadly
	mispelled alternative, "unactive window" (UAW) has also been
	reported.

	(05 Dec 1994)

IBEX

	The command language for {Honeywell}'s {CP-6} {operating
	system}.

	(06 Dec 1994)

IBM

	Inferior But Marketable; It's Better Manually; Insidious Black
	Magic; It's Been Malfunctioning; Incontinent Bowel Movement;
	and a near-{infinite} number of even less complimentary
	expansions, including {International Business Machines}.  See
	{TLA}.  These abbreviations illustrate the considerable
	antipathy most hackers have long felt toward the "industry
	leader" (see {fear and loathing}).

	(07 Feb 1995)

IBM 1620

	<computer> A computer built by {IBM} and released in late
	1959.  The 1620 cost from around $85,000(?) up to hundreds of
	thousands of dollars(?) according to the configuration.  It
	was billed as a "small scientific computer" to distinguish it
	from the business-oriented {IBM 1401}.  It was regarded as
	inexpensive, and many schools started out with one.

	It was either developed for the US Navy to teach computing, or
	as a replacement for the very successful {IBM 650} which did
	quite well in the low end scientific market.  Rumour has it
	that the Navy called this computer the CADET - Can't Add,
	Doesn't Even Try.

	The {ALU} used lookup tables to add, subtract and multiply but
	it could do address increments and the like without the
	tables.  You could change the number base by adjusting the
	tables, which were input during the boot sequence from
	{Hollerith} cards.  The divide instruction required additional
	hardware, as did {floating point} operations.

	The basic machine had 20,000 decimal digits of {ferrite core
	memory} arranged as a 100 by 100 array of 12-bit locations,
	each holding two digits.  Each digit was stored as four
	numeric bits, one flag bit and one parity bit.  The numeric
	bits stored a decimal digit (values above nine were illegal).

	Memory was logically divided into fields.  On the high-order
	digit of a field the flag bit indicated the end of the field.
	On the low-order digit it indicated a negative number.  A flag
	bit on the low order of the address indicated {indirect
	addressing} if you had that option installed.  A few "illegal"
	bit combinations were used to store things like record marks
	and "numeric blanks".

	On a {subroutine} call it stored the {return address} in the
	five digits just before the entry point to the routine, so you
	had to build your own {stack} to do {recursion}.

	The enclosure was grey, and the core was about four or five
	inches across.  The core memory was kept cool inside a
	temperature-controlled box.  The machine took a few minutes to
	warm up after power on before you could use it.  If it got too
	hot there was a thermal cut-out switch that would shut it
	down.

	Memory could be expanded up to 100,000 digits in a second
	cabinet.  The cheapest package used {paper tape} for I/O.  You
	could also get {punched cards} and later models could be
	hooked up to a 1311 {disk drive} (a two-{megabyte} {washing
	machine}), a 1627 {plotter}, and a 1443 {line printer}.

	Because the 1620 was popular with colleges, IBM ran a clearing
	house of software for a nominal cost such as {Snobol},
	{COBOL}, chess games, etc.

	The model II, released about three years later, could add and
	subtract without tables.  The {clock period} decreased from 20
	to 10 microseconds, instruction fetch sped up by a few cycles
	and it added {index registers} of some sort.  Some of the
	model I's options were standard on the model II, like
	{indirect addressing} and the {console} {teletype} changed
	from a model C to a {Selectric}.  Later still, IBM marketed
	the {IBM 1710}.

	A favorite use was to tune a FM radio to pick up the
	"interference" from the lights on the console.  With the right
	delay loops you could generate musical notes.  Hackers wrote
	{interpreters} that played music from notation like "C44".

	1620 consoles were used as props to represent {Colossus} in
	the film "The Forbin Project", though most of the machines had
	been scrapped by the time the film was made.

	{A fully configured 1620
	(http://uranus.ee.auth.gr/TMTh/exhibit.htm)}.

	{IBM 1620 console picture
	(http://wombat.doc.ic.ac.uk/pub/IBM1620-console.jpg)}.

	["Basic Programming Concepts and the IBM 1620 Computer",
	Leeson and Dimitry, Holt, Rinehart and Winston, 1962].

	(05 Aug 1997)

IBM 1710

	<computer> An {IBM 1620} with additional features useful for
	industrial process control: {A/D convertors}, {D/A
	convertors}, general-purpose I/O lines, and {interrupts}.

	[Date?]

	(20 Jul 1997)

IBM 2741

	{golf ball printer}

IBM 3270

	A class of {terminal}s known as Display Devices, normally used
	to talk to {IBM} {mainframe}s.  The 3270 attempts to minimise
	the number of I/O interrupts required by accepting large
	blocks of data, known as datastreams, in which both text and
	control (or formatting functions) are interspersed allowing an
	entire screen to be "painted" as a single output operation.
	The concept of "formatting" in these devices allows the screen
	to be divided into clusters of contiguous character cells for
	which numerous attributes (color, highlighting, character set,
	protection from modification) can be set.  Further, using a
	technique known as 'Read Modified' the changes from any number
	of formatted fields that have been modified can be read as a
	single input without transferring any other data, another
	technique to enhance the terminal throughput of the CPU.

	The 3270 had twelve, and later twenty-four, special Programmed
	Function Keys, or PF keys.  When one of these keys was
	pressed, it would cause the device to generate an I/O
	{interrupt} and present a special code identifying which key
	was pressed.  {Application program} functions such as
	termination, page-up, page-down or help could be invoked by a
	single key-push, thereby reducing the load on very busy
	processors.

	A version of the {IBM PC} called the "3270 PC" was released in
	October 1983.  It included 3270 {terminal emulation}.

	{tn3270} is modified version of {Telnet} which acts as a 3270
	{terminal emulator} and can be used to connect to an IBM
	computer over a network.

	See also {broken arrow}.

	(07 Feb 1995)

IBM 360

	<computer> The generic name for the {CPU}s and architecture
	released by {IBM} in 1964.  Elements of the architecture, such
	as the basic {instruction set}, are still in use on some IBM
	{mainframe}s.

	See also {ABEND}, {ALC}, {BAL}, {Big Red Switch}, {HCF}, {mode
	bit}, {PL360}, {PL/S}.

	[Features?  People?]

	(13 Apr 1995)

IBM 650

	<computer> A computer, produced ca. 1955 and in use in the
	late 1950s, with rotating {magnetic drum} storage and {punched
	card} input.  Its memory words could store 10-digit decimal
	numbers and each instruction had two addresses, one for the
	{operand} and one for address of the next instruction on the
	drum.

	{SOAP} was its (optimising) {assembler}.  Languages used on it
	included {BACAIC}, {BALITAC}, {BELL}, {CASE SOAP III}, {DRUCO
	I}, {EASE II}, {ELI}, {ESCAPE}, {FAST}, {FLAIR}, {FORTRANSIT},
	{FORTRUNCIBLE}, {GAT}, {IPL}, {Internal Translator}, {KISS},
	{MITILAC}, {MYSTIC}, {OMNICODE}, {PIT}, {RELATIVE},
	{RUNCIBLE}, {SIR}, {SOAP}, {Speedcoding}, {SPIT}, {SPUR}.

	[More details?]

	(30 Mar 1995)

IBM 704

	<computer> A large, general-purpose computer made by {IBM} and
	used by the largest commercial, government and educational
	institutions.

	The IBM 704 had 36-bit memory words, 15-bit addresses and
	instructions with one address.  A few {index register}
	instructions had the infamous 15-bit decrement field in
	addition to the 15-bit address.

	The 704, and {IBM 709} which had the same basic architecture,
	represented a substantial step forward from the {IBM 650}'s
	{magnetic drum} storage as they provided random access at
	electronic speed to {core storage}, typically 32k words of 36
	bits each.

	[Or did the 704 actually come *before* the 650?]

	A typical 700 series installation would be in a specially
	built room of perhaps 1000 to 2000 square feet, with a floor
	raised to permit interconnecting cables underneath.
	Substantial air conditioning was required to remove the heat.
	Along one or two walls would be line(s) of {magnetic tape}
	transports, each about 3 x 3 x 6 feet.  Depending on the
	installation, there might be 4 to 8 transports on each of one
	or two "channels."  The 1/2 inch tape had seven tracks and
	moved at 150 inches per second, giving a read/write speed of
	15,000 six bit characters (plus parity) per second.

	In the centre would be the operator's {console} consisting of
	cabinets and tables for storage of tapes and boxes of cards;
	and a {card reader}, a {card punch}, and a {line printer},
	each perhaps 4 x 4 x 5 feet in dimension.  Small {jobs} could
	be entered via {punched cards} at the console, but as a rule
	the user jobs were transferred from cards to {magnetic tape}
	by {off-line} equipment and only control information was
	entered at the console (see {SPOOL}).  Before each job, the
	{operating system} was loaded from a read-only system tape
	(because the system in {core} could have been corrupted by the
	previous user), and then the user's program, in the form of
	card images on the input tape, would be run.  Program output
	would be written to another tape (typically on another
	channel) for printing off-line.

	Well run installations would transfer the user's cards to
	tape, run the job, and print the output tape with a turnaround
	time of one to four hours.

	The processing unit typically occupied a position symmetric
	but opposite the operator's console.  Physically the largest
	of the units, it included a glass enclosure a few feet in
	dimension in which could be seen the "core" about one foot on
	each side.  The 36-bit word could hold two 18-bit addresses
	called the "Contents of the Address Register" ({CAR}) and the
	"Contents of the Decrement Register" ({CDR}).

	On the opposite side of the floor from the tape drives and
	operator's console would be a desk and bookshelves for the
	ever-present (24 hours a day) "field engineer" dressed in, you
	guessed it, a grey flannel suit and tie.  The maintenance of
	the many thousands of {vacuum tubes}, each with limited
	lifetime, and the cleaning, lubrication, and adjustment of
	mechanical equipment, was augmented by a constant flow of
	{bug} reports, change orders to both hardware and software,
	and hand-holding for worried users.

	The 704 was considered a business-oriented machine (early
	version of {COBOL}?), whereas the 709 was oriented toward
	scientific work ({floating point} hardware and {FORTRAN}?).

	Very few 700 series computers remained in service by 1965, but
	the {IBM 7090}, using {transistors} but similar in logical
	structure, remained an important machine until the production
	of the earliest {integrated circuits}.

	[Was the 704 scientific, business or general purpose?
	Difference between 704 and 709?]

	(24 Jan 1996)

IBM 7040

	<computer> A scaled down version of the {IBM 7090}.

	(23 Feb 1997)

IBM 705

	<computer> A business oriented computer from {IBM}.

	Languages incuded {ACOM}, {Autocode}, {ELI}, {PRINT}, {PRINT
	I}, {SOHIO}, {SYMBOLIC ASSEMBLY}.

	(23 Feb 1997)

IBM 709

	<computer> A computer made by {IBM} oriented towards
	scientific work.  The 709 had the same basic architecture as
	the {IBM 704} but with many {I/O} and performance refinements
	over the 704.

	The IBM 709 (like the 704) had 36-bit memory words, 15-bit
	addresses and instructions with one address.  A few {index
	register} instructions had the infamous 15-bit decrement field
	in addition to the 15-bit address.

	[Difference between 704 and 709?]

	(01 May 1995)

IBM 7090

	<computer> A transistorized version of the {IBM 709} which was
	a very popular high end computer in the early 1960s. The 7090
	had 32K of 36-bit {core} memory and hardware {floating point}.
	{Fortran} was its most popular language, but it supported many
	others.  It was later upgraded to the {IBM 7094}, and a scaled
	down version, the IBM 7040 was also introduced.

	IBM 7090s controlled the Mercury and Gemini space flights, the
	Balistic Missile Early Warning System (until well into the
	1980s), and the {CTSS} {time sharing} system at {MIT}.

	The IBM 7090 was generally paired with an {IBM 1401} for
	printing, card to tape and tape to card (see the movie Dr
	Strangelove).

	(23 Feb 1997)

IBM 7094

	<computer> A faster version of the {IBM 7090} with more {index
	registers}.

	(23 Feb 1997)

IBM 801

	The original {IBM} {RISC} processor, developed as a research
	project.  It was named after the building in which it was
	designed.

	[Features?  Dates?]

	(01 Mar 1995)

IBM compatible

	A computer which can use hardware and software designed for
	the {IBM PC}.

	(28 Feb 1995)

IBM discount

	A price increase.  Outside IBM, this derives from the common
	perception that IBM products are generally overpriced (see
	{clone}); inside, it is said to spring from a belief that
	large numbers of IBM employees living in an area cause prices
	to rise.

	(07 Feb 1995)

IBM PC

	<computer> International Business Machines Personal Computer.

	IBM PCs and compatible models from other vendors are the most
	widely used computer systems in the world.  They are typically
	single user {personal computers}, although they have been
	adapted into multi-user models for special applications.

	Note: "IBM PC" is used in this dictionary to denote IBM and
	compatible personal computers, and to distinguish these from
	other {personal computers}, though the phrase "PC" is often
	used elsewhere, by those who know no better, to mean "IBM PC
	or compatible".

	There are hundreds of models of IBM-compatible computers.
	They are based on {Intel}'s {microprocessors}: {Intel 8086},
	{Intel 8088}, {Intel 80286}, {Intel 80386}, {Intel 486} or
	{Pentium}.  The models of IBM's first-generation Personal
	Computer (PC) series have names: IBM PC, {IBM PC XT}, {IBM PC
	AT}, Convertible and Portable.  The models of its second
	generation, the Personal System/2 ({PS/2}), are known by model
	number: Model 25, Model 30.  Within each series, the models
	are also commonly referenced by their {CPU} {clock rate}.

	All IBM personal computers are software compatible with each
	other in general, but not every program will work in every
	machine.  Some programs are time sensitive to a particular
	speed class.  Older programs will not take advantage of newer
	higher-resolution {display standards}.

	The speed of the {CPU} ({microprocessor}) is the most
	significant factor in machine performance.  It is determined
	by its {clock rate} and the number of bits it can process
	internally.  It is also determined by the number of bits it
	transfers across its {data bus}.  The second major performance
	factor is the speed of the {hard disk}.

	{CAD} and other graphics-intensive {application programs} can
	be sped up with the addition of a mathematics {coprocessor}, a
	chip which plugs into a special socket available in almost all
	machines.

	{Intel 8086} and {Intel 8088}-based PCs require {EMS}
	(expanded memory) boards to work with more than one megabyte
	of memory.  All these machines run under {MS-DOS}.  The
	original {IBM PC AT} used an {Intel 80286} processor which can
	access up to 16 megabytes of memory (though standard {MS-DOS}
	applications cannot use more than one megabyte without {EMS}).
	{Intel 80286}-based computers running under {OS/2} can work
	with the maximum memory.

	Although IBM sells {printers} for PCs, most printers will work
	with them.  As with display hardware, the software vendor must
	support a wide variety of printers.  Each program must be
	installed with the appropriate {printer driver}.

	The original 1981 IBM PC's keyboard was severely criticised by
	typists for its non-standard placement of the return and left
	shift keys.  In 1984, IBM corrected this on its AT keyboard,
	but shortened the backspace key, making it harder to reach.
	In 1987, it introduced its Enhanced keyboard, which relocated
	all the function keys and placed the control key in an awkward
	location for touch typists.  The escape key was relocated to
	the opposite side of the keyboard.  By relocating the function
	keys, IBM made it impossible for software vendors to use them
	intelligently.  What's easy to reach on one keyboard is
	difficult on the other, and vice versa.  To the touch typist,
	these deficiencies are maddening.

	An "IBM PC compatible" may have a keyboard which does not
	recognize every key combination a true IBM PC does,
	e.g. shifted cursor keys.  In addition, the "compatible"
	vendors sometimes use proprietary keyboard interfaces,
	preventing you from replacing the keyboard.

	The 1981 PC had 360K {floppy disks}.  In 1984, IBM introduced
	the 1.2 megabyte floppy disk along with its AT model.
	Although often used as {backup} storage, the high density
	floppy is not often used for interchangeability.  In 1986, IBM
	introduced the 720K 3.5" microfloppy disk on its Convertible
	{laptop computer}.  It introduced the 1.44 megabyte double
	density version with the PS/2 line.  These disk drives can be
	added to existing PCs.

	Fixed, non-removable, {hard disks} for IBM-compatibles are
	available with storage capacities from 20 to over 600
	megabytes.  If a hard disk is added that is not compatible
	with the existing {disk controller}, a new controller board
	must be plugged in.  However, one disk's internal standard
	does not conflict with another, since all programs and data
	must be copied onto it to begin with.  Removable hard disks
	that hold at least 20 megabytes are also available.

	When a new peripheral device, such as a {monitor} or
	{scanner}, is added to an IBM-compatible, a corresponding, new
	controller board must be plugged into an {expansion slot} (in
	the bus) in order to electronically control its operation.
	The PC and XT had eight bit busses; the AT had a 16-bit bus.
	16-bit boards will not fit into 8-bit slots, but 8-bit boards
	will fit into 16-bit slots.  {Intel 80286} and {Intel 80386}
	computers provide both 8-bit and 16-bit slots, while the 386s
	also have proprietary 32-bit memory slots.  The bus in
	high-end models of the PS/2 line is called "{Micro Channel}".
	{EISA} is a non-IBM rival to Micro Channel.

	The original IBM PC came with {BASIC} in {ROM}.  Later, Basic
	and BasicA were distributed on floppy but ran and referenced
	routines in ROM.

	IBM PC and PS/2 models

	PC range

			Intro	  CPU	  Features
	 PC		Aug 1981   8088	  Floppy disk system
	 XT		Mar 1983   8088	  Slow hard disk
	 XT/370		Oct 1983   8088	  IBM 370 mainframe emulation
	 3270 PC	Oct 1983   8088	  with 3270 terminal emulation
	 PCjr		Nov 1983   8088	  Floppy-based home computer
	 PC Portable	Feb 1984   8088	  Floppy-based portable
	 AT		Aug 1984   286	  Medium-speed hard disk
	 Convertible	Apr 1986   8088	  Microfloppy laptop portable
	 XT 286		Sep 1986   286	  Slow hard disk

	PS/2 range

			Intro	  CPU	  Features
	 Model 25	Aug 1987   8086	  PC bus (limited expansion)
	 Model 30	Apr 1987   8086	  PC bus
	 Model 30 286	Sep 1988   286	  PC bus
	 Model 50	Apr 1987   286	  Micro Channel bus
	 Model 50Z	Jun 1988   286	  Faster Model 50
	 Model 55 SX	May 1989   386SX  Micro Channel bus
	 Model 60	Apr 1987   286	  Micro Channel bus
	 Model 70	Jun 1988   386	  Desktop, Micro Channel bus
	 Model P70	May 1989   386	  Portable, Micro Channel bus
	 Model 80	Apr 1987   386	  Tower, Micro Channel bus

	IBM PC compatible specifications

	 CPU   CPU    Clock    Bus	    Floppy	  Hard
	       bus    speed   width  RAM    disk	  disk	   OS
	       bit    Mhz     bit   byte    inch   byte	  Mbyte

	 8088  16    4.8-9.5	8    1M*     5.25  360K	  10-40	  DOS
					     3.5   720K
					     3.5   1.44M

	 8086  16     6-12     16    1M*		  20-60

	 286   16     6-25     16   1-8M*    5.25  360K	  20-300  DOS
					     5.25  1.2M		  OS/2

	 386   32     16-33    32   1-16M**  3.5   720K		  Unix
					     3.5   1.44M  40-600

	 386SX 32     16-33    16   1-16M**		  40-600

	*Under DOS, RAM is expanded beyond 1M with EMS memory boards

	**Under DOS, RAM is expanded beyond 1M with normal "extended"
	memory and a memory management program.

	See also {BIOS}, {display standard}.

	(12 May 1995)

IBM PC AT

	<computer> A version of the {IBM PC} released in Aug 1984 with
	an {Intel 80286} processor, a 16-bit bus, a medium-speed {hard
	disk} and a 1.2 megabyte floppy disk drive.  It had a large
	case than the PC, which allowed it to accept "{tall card}s".

	The AT fixed the PC's non-standard placement of the return and
	left shift keys but shortened the backspace key, making it
	harder to reach.

	(01 Mar 1995)

IBM PCjr

	<computer> ({IBM PC} Junior) A {floppy disk}-based home
	computer with an {Intel 8088} {CPU} and a {chiclet keyboard},
	released in November 1983.  The PCjr could be expanded to have
	two floppy drives and 640 kilobytes of {RAM} using {sidecar}s.
	Some even had a {mouse} and could run drawing programs with
	{popup menu}s.

	(06 Oct 1995)

IBM PC XT

	<computer> An {IBM PC} with a (slow) {hard disk}.  The XT was
	released in March 1983.  It had an {Intel 8088} {CPU}.  The
	XT/370, released in October 1983, added {IBM 370} {mainframe}
	{emulation}, and the XT 286 followed in September 1986 with an
	{Intel 80286} CPU [Why?].

	(21 May 1996)

Ibpag2

	Icon-Based Parser Generation System 2

	Ibpag2 is a {parser generator} for {Icon} by Richard
	L. Goerwitz <goer@midway.uchicago.edu>.  It does most of what
	you would expect.  Latest version can handle both {SLR1
	grammar}s and even {GLR grammar}s ({Tomita grammar}s).  Ibpag2
	runs under {Unix}.  Version: 1.0 (beta).

	Posted to comp.sources.misc.

	(13 Jul 1993)

Iburg

	A program by Christopher W. Fraser <cwf@research.att.com>,
	David R. Hanson <drh@princeton.edu> and Todd A. Proebsting
	<todd@cs.arizona.edu> that generates a fast tree parser.

	Iburg is compatible with {Burg}.  Both programs accept a
	cost-augmented tree {grammar} and emit a {C} program that
	discovers an optimal parse of trees in the language described
	by the grammar.  They have been used to construct fast optimal
	instruction selectors for use in code generation.  Burg uses
	{BURS}.  Iburg's matchers do {dynamic programming} at compile
	time.

	{(ftp://ftp.cs.princeton.edu/pub/iburg.tar.Z)}

	(10 Feb 1993)

IC

	1. <hardware> {integrated circuit}.

	2. {Independent Carrier}.

	3. {Imperial College}.

	(12 Apr 1997)

ICAM

	{Integrated Computer Aided Manufacturing}

I-CASE

	Integrated {CASE}.  Another term for an {IPSE}.

ICBM address

	(Or "missile address") The form used to register a site with
	the {Usenet} mapping project includes a blank for longitude
	and latitude, preferably to seconds-of-arc accuracy.  This is
	actually used for generating geographically-correct maps of
	{Usenet} links on a plotter; however, it has become
	traditional to refer to this as one's "ICBM address" or
	"missile address", and many people include it in their {sig
	block} with that name.  (A real missile address would include
	target altitude.)

	(15 Dec 1994)

ICE

	1. {in-circuit emulator}.

	2. {Intrusion Countermeasure Electronics}.

ICES

	Integrated Civil Engineering System.  Subsystems include COGO,
	STRUDL, BRIDGE, LEASE, PROJECT, ROADS and TRANSET.  Internal
	languages include ICETRAN and CDL.  "An Integrated Computer
	System for Engineering Problem Solving", D. Roos, Proc SJCC
	27(2), AFIPS (Spring 1965).  Sammet 1969, pp.615-620.

ICETRAN

	An extension of {FORTRAN IV} and a component of {ICES}.

	[Sammet 1969, p. 617].

ICI

	Interactive C Interpreter?  An extensible, interpreted
	language by Tim Long with {syntax} similar to {C}.  ICI adds
	high-level garbage-collected {associative} data structures.
	{Exception} handling, sets, {regular expression}s, {dynamic
	array}s.

	There are standard functions to provided the sort of support
	provided by the standard I/O and the C libraries, as well as
	additional types and functions to support common needs such as
	simple non-indexed {database}s; character based screen
	handling; direct access to many {system call}s; {safe
	pointer}s and {floating-point}.

	ICI runs on {Sun-4}, {80x86} {Xenix}, {NEXTSTEP} and {MS-DOS}.

	{(ftp://nexus.yorku.ca/pub/oz/ici.cpio.Z)}.  E-mail: Andy
	Newman <andy@research.canon.oz.au>.  Mailing list:
	ici@research.canon.oz.au.

	(10 Nov 1992)

ICL

	<company> {International Computers Limited}.

ICMP

	{Internet Control Message Protocol}

I-Comm

	<tool, World-Wide Web> A graphical {World-Wide Web} {browser}
	for {IBM PC}s with a {window system} ({Windows 95}, {Windows
	NT} or {OS/2}).  I-Comm does NOT require a {SLIP} or {PPP}
	connection, just a {modem}.  It is available as a {shareware}
	program.

	Version: 1.15 Beta1.

	{Home (http://www.talentcom.com/icomm/icomm.htm)}, {mirror
	(http://www.best.com:80/~icomm/icomm/icomm.htm)}.

	{FTP netcom.com (ftp://ftp.netcom.com/pub/ic/icomm/)},
	{FTP best.com (ftp://ftp.best.com/pub/icomm/icomm/)}.

	E-Mail: <icomm@talentcom.com>.

	(22 Mar 1996)
iCOMP

	{Intel Comparative Microprocessor Performance index}

Icon

	<language> A descendant of {SNOBOL4} with {Pascal}-like
	syntax, produced by Griswold in the 1970's.  Icon is a
	general-purpose language with special features for string
	scanning.  It has dynamic types: records, sets, lists,
	strings, tables.  If has some {object oriented} features but
	no {modules} or {exception}s.  It has a primitive {Unix}
	interface.

	The central theme of Icon is the generator: when an expression
	is evaluated it may be suspended and later resumed, producing
	a result sequence of values until it fails.  Resumption takes
	place implicitly in two contexts: iteration which is
	syntactically loop-like ('every-do'), and goal-directed
	evaluation in which a conditional expression automatically
	attempts to produce at least one result.  Expressions that
	fail are used in lieu of Booleans.  Data {backtracking} is
	supported by a reversible {assignment}.  Icon also has
	{co-expression}s, which can be explicitly resumed at any time.

	Version 8.8 by Ralph Griswold <ralph@cs.arizona.edu> includes
	an {interpreter}, a compiler (for some {platform}s) and a
	library (v8.8).  Icon has been ported to {Amiga}, {Atari},
	{CMS}, {Macintosh}, {Macintosh/MPW}, {MS-DOS}, {MVS}, {OS/2},
	{Unix}, {VMS}, {Acorn}.

	See also {Ibpag2}.

	{(ftp://cs.arizona.edu/icon/)}, {MS-DOS FTP
	(ftp://bellcore.com norman/iconexe.zip)}.

	{Usenet} newsgroup: {news:comp.lang.icon}.

	E-mail: <icon-project@cs.arizona.edu>, <mengarini@delphi.com>.

	Mailing list: icon-group@arizona.edu.

	["The Icon Programmming Language", Ralph E. Griswold and Madge
	T. Griswold, Prentice Hall, seond edition, 1990].

	["The Implementation of the Icon Programmming Language", Ralph
	E. Griswold and Madge T. Griswold, Princeton University Press
	1986].

	(21 Aug 1992)

icon

	<graphics> (From minature religious statues) A small picture
	intended to represent something (a file, directory or action)
	in a {graphical user interface}.  When an icon is clicked on,
	some action is performed such as opening a directory or
	aborting a file transfer.  Icons are usually stored as
	{bitmap}s.

	(07 Mar 1995)

Iconicode

	1990-1992.  Visual dataflow language, token-based with
	hierarchical, recursive and iterative constructs.  Version:
	IDF with extensions for image processing.

	["IDF: A Graphical Data Flow Programming Language for Image
	Processing and Computer Vision", Neil Hunt, Proc IEEE Conf on
	Systems Man & Cybernetics, IEEE, Nov 1990.  Available from
	Iconicon <icon@teleos.com>].

ICONIX Software Engineering, Inc.

	<company> Makers of {ICONIX PowerTools}, software development
	tools, and the first {CD-ROM} training course in
	{object-oriented} methods.  ICONIX started operating in 1984.

	{Home (http://www.biap.com/iconix/)}

	E-mail: <ICONIX@eworld.com>.

	Address: 2800 28th Street, Suite 320, Santa Monica, CA 90405,
	USA.  Telephone: +1 (310) 458 0092

	(30 Apr 1995)

IC-Prolog

	Clark & McCabe, Imperial College 1979.  Logic language with
	coroutining.

	["IC-Prolog Language Features", K.L. Clark <klc@doc.ic.ac.uk>
	et al in Logic Programming, K.L. Clark et al eds, pp.253-266,
	Academic Press 1982].

IC Prolog II

	Imperial College Prolog.  A {Prolog} with {multi-threading},
	{TCP} primitives for interprocess communication, {mailbox} and
	an interface to {Parlog}.

	{(ftp://doc.ic.ac.uk/computing/programming/languages)}.
	E-mail: Damien Chu <dac@doc.ic.ac.uk>.

	["IC Prolog II: A Language for Implementing Multi-Agent
	Systems", Y. Cosmadopoulos et al, in Tutorial and Workshop on
	Cooperating Knowledge Based Systems, Keele U 1992].

	(01 Nov 1994)

ICQ

	<chat> 1. Abbreviation for "I seek you".

	2. A proprietary {chat} system.  The name is probably derived
	from sense 1 [Confirm?].

	{Home (http://www.icq.com/)}.

	(25 Jan 1998)

ICSI

	{International Computer Science Institute} at Berkeley, CA.

ICT

	{In Circuit Test}

ICW

	{Interactive CourseWare}

ICWS

	International {Core War} Society.

Id

	{Irvine Dataflow}

I-D

	{Internet-Draft}

IDAMS

	A pictorial retrieval language implemented in {APL}.

	["Concept of the Diagnostic Image Workstation",
	D. Meyer-Ebrecht, Proc 2nd Conf on Picture Archiving (PACS
	II), SPIE 418, pp.180-183 (1983)].

IDE

	1. <storage> {Integrated Drive Electronics}.

	2. <programming, tool> {interactive development environment}.

	3. <company> {Interactive Development Environments}.

	(04 Mar 1996)

IDEA

	1. <language> {Interactive Data Entry/Access}.

	2. <algorithm> {International Data Encryption Algorithm}.

	(16 Feb 1996)

IDEAL

	1. Ideal DEductive Applicative Language.  A language by Pier
	Bosco and Elio Giovannetti combining {Miranda} and {Prolog}.
	Function definitions can have a {guard} condition (introduced
	by ":-") which is a conjunction of equalities between
	arbitrary terms, including functions.  These guards are solved
	by normal {Prolog} {resolution} and {unification}.  It was
	originally compiled into {C-Prolog} but was eventually to be
	compiled to {K-leaf}.

	2. A numerical {constraint} language written by Van Wyk of
	{Stanford} in 1980 for {typesetting} graphics in documents.
	It was inspired partly by {Metafont} and is distributed as
	part of {Troff}.

	["A High-Level Language for Specifying Pictures", C.J. Van
	Wyk, ACM Trans Graphics 1(2):163-182 (Apr 1982)].

	(15 Dec 1994)

ideal

	<theory> In {domain theory}, a non-empty, {downward closed}
	subset which is also closed under binary {least upper bounds}.
	I.e. anything less than an element is also an element and the
	least upper bound of any two elements is also an element.

	(26 Sep 1997)

Idealized CSP

	<language> A programming language combining simply typed,
	{call-by-name} {procedures} with {asynchronous} communicating
	processes, assuming fair parallel execution.  Idealized CSP
	generalises Hoare's original {CSP} and Kahn's networks of
	{deterministic} processes, and is closely related to {Parallel
	Algol} by Stephen Brookes of {CMU}.

	Procedures permit the encapsulation of common {protocols} and
	parallel programming idioms.  {Local variables} and local
	channel declarations provide a way to delimit the scope of
	interference between parallel agents, and allow a form of
	concurrent {object-oriented programming}.

	[Was this language also designed by Brookes?]

	(26 Sep 1997)

IDEF

	{ICAM} Definition.

idempotent

	1. A function f : D -> D is idempotent if

		f (f x) = f x  for all x in D.

	I.e. repeated applications have the same effect as one.  This
	can be extended to functions of more than one argument,
	e.g. Boolean & has x & x = x.  Any value in the {image} of an
	idempotent function is a {fixed point} of the function.

	2. This term can be used to describe {C} header files, which
	contain common definitions and declarations to be included by
	several source files.  If a header file is ever included twice
	during the same compilation (perhaps due to nested #include
	files), compilation errors can result unless the header file
	has protected itself against multiple inclusion; a header file
	so protected is said to be idempotent.

	3. The term can also be used to describe an initialisation
	subroutine that is arranged to perform some critical action
	exactly once, even if the routine is called several times.

	(11 Jan 1995)

IDF

	<networking> {Intermediate Distribution Frame}.

I didn't change anything!

	An aggrieved cry often heard as bugs manifest during a
	regression test.  The {canonical} reply to this assertion is
	"Then it works just the same as it did before, doesn't it?"
	See also {one-line fix}.  This is also heard from applications
	programmers trying to blame an obvious applications problem on
	an unrelated systems software change, for example a
	divide-by-0 fault after terminals were added to a network.
	Usually, their statement is found to be false.  Upon close
	questioning, they will admit some major restructuring of the
	program that shouldn't have broken anything, in their opinion,
	but which actually {hosed} the code completely.

IDL

	1. Interactive Data analysis Language.  {Xerox}.  Built on
	{Interlisp-D}.

	2. {Interface Description Language} (Snodgrass, UNC, Arizona).

	3. {Interface Definition Language} ({SunSoft}, {OMG}).

	4. {Interactive Data Language} ({Research Systems}).

IDMS

	1. <language, database> A pictorial {query language},
	an extension of {Sequel2}.

	["A Management System for an Integrated Database of Pictures
	and Alphanumeric Data", G.Y. Tang, Computer Graphics Image
	Processing 16:270-286 (1981)].

	2. <database> {Integrated Database Management
	System}.

IDMSX

	<database> {IDMS} extended.

	(19 Apr 1995)

Id Nouveau

	A {dataflow} language by Arvind <arvind@lcs.mit.edu> and
	R.S. Nikhil <nikhil@crl.dec.com>, {MIT} {LCS}, ca. 1986.

	Id Nouveau began as a {functional language}, added {stream}s,
	resource managers and {I-structure}s ({mutable array}s).
	Loops are {syntactic sugar} for {tail recursion}.

	See also {Id}.

	["Id Nouveau Reference Manual", R.S.  Nikhil, CS TR, MIT,
	March 1988].

	["Id (Version 90.1) Reference Manual", R.S. Nikhil, CSG Memo
	284-2, LCS MIT, July 15, 1991].

IDOL

	Icon-Derived Object Language.  An {object-oriented}
	{preprocessor} for {Icon}.

	{(ftp://src.doc.ic.ac.uk/pub/languages/icon/idol.tar.Z)}

	["Programming in Idol: An Object Primer", C.L. Jeffery, U
	Arizona CS TR #90-10].

IDS/I

	Integrated Data Store.  AN extension to {COBOL} involving
	"chains" (circular lists), for {General Electric} computers.

	["A General Purpose Programming System for Random Access
	Memories", C.W. Bachman et al, Proc FJCC 26(1), AFIPS (Fall
	1964)].

	[Sammet 1969, p. 376].

id Software

	<games> Creators and publishers of the {DOOM} game for {IBM
	PC}s.

	E-mail: <help@idsoftware.com>.  Telephone: +1 800-ID-GAMES
	(Orders only).

IDSS

	{Intelligent Decision Support Systems}

IEC

	{International Electrotechnical Commission}

IEC 559

	{IEEE Floating Point Standard}

IEEE

	{Institute of Electrical and Electronics Engineers}

IEEE 1076

	The {IEEE} standard for {VHDL}.

IEEE 1394

	{FireWire}

IEEE 488

	<hardware, standard> (GPIB, General-Purpose Interface Bus,
	HP-IB, Hewlett-Packard Interface Bus) An 8-bit parallel {bus}
	common on {test equipment}.

	The IEEE-488 standard was proposed by {Hewlett-Packard} in the
	late 1970s and has undergone a couple of revisions.  HP
	documentation (including data sheets and manuals) calls it
	HP-IB, or Hewlett-Packard Interface Bus.

	It allows up to 15 intelligent devices to share a single bus,
	with the slowest device participating in the control and data
	transfer handshakes to drive the speed of the transaction.
	The maximum data rate is about one {megabit} per second.

	Other standards committees have adopted HP-IB (American
	Standards Institute with ANSI Standard MC 1.1 and
	International Electro-technical Commission with IEC
	Publication 625-1).

	To paraphrase from the HP 1989 Test & Measurement Catalog (the
	50th Anniversary version): The HP-IB has a party-line
	structure wherein all devices on the bus are connected in
	parallel.  The 16 signal lines within the passive
	interconnecting HP-IB (IEEE-488) cable are grouped into three
	clusters according to their functions (Data Bus, Data Byte
	Transfer Control Bus, General Interface Management Bus).

	In June 1987 the IEEE approved a new standard for programmable
	instruments called IEEE Std. 488.2-1987 Codes, Formats,
	Protocols, and Common Commands.  It works with the IEEE
	Standard Digital Interface for Programmable Instrumentation,
	IEEE 488-1978 (now 488.1).  HP-IB is Hewlett-Packard's
	implementation of IEEE 488.1.

	(10 May 1996)

IEEE 754

	{IEEE Floating Point Standard}

IEEE 802

	<networking, standard> The {IEEE} standards for {local area
	networks}.  The {spanning tree algorithm} is defined in {IEEE
	802.1} (under consideration), {Logical Link Control} (LLC, the
	upper portion of the {data link layer}) in {IEEE 802.2},
	{Ethernet} in {IEEE 802.3}, {Token Bus} in IEEE 802.4 and IBM
	{Token Ring} in {IEEE 802.5}.

	The equivalent {ISO} {standard} is IS 8802.

	(15 Feb 1995)

IEEE 802.2

	(Networks) The {IEEE} standard defining {Logical Link Control}
	(LLC, the upper portion of the {data link layer}) for {local
	area network}s.

	(14 Feb 1995)

IEEE 802.3

	The {IEEE} standard defining the {hardware layer} and
	{transport layer} of (a varient of) {Ethernet}.  The maximum
	{segment} length is 500m and the maximum total length is
	2.5km.  The maximum number of hosts is 1024.

	The maximum {packet} size is 1518 bytes.  If the upper layer
	{protocol} submits a {PDU} less than 64 bytes, 802.3 will pad
	the {LLC Info} field to achieve the minimum 64 bytes.

	Although it is not technically correct, the terms "{packet}"
	and frame are used interchangeably.  The {ISO}/{IEC} 8802-3
	{ANSI}/{IEEE} 802.3 Standards refer to {MAC} sub-layer
	{frame}s consisting of the Destination Address, Source
	Address, Length, LLC Info., and {FCS} fields.  The {Preamble}
	and {SFD} are (usually) considered a header to the {MAC}
	Frame.  This header plus the MAC Frame constitute a "Packet".

	(09 Jul 1995)

IEEE 802.4

	<networking, standard> The {IEEE} {Token Bus} {standard}.

	(12 Dec 1996)

IEEE 802.5

	The {IEEE} {token ring} {standard}.  The most common type of
	token ring.

	(27 Oct 1994)

IEEE Computer Society

	<body> The society of the {IEEE} which publishes the journal
	"Computer".

	{Home (http://www.computer.org/)}

	(10 Mar 1995)

IEEE Floating Point Standard

	<standard, mathematics> (IEEE 754) "{IEEE} Standard for Binary
	{Floating-Point} Arithmetic (ANSI/IEEE Std 754-1985)" or {IEC}
	559: "Binary floating-point arithmetic for microprocessor
	systems". A {standard}, used by many {CPU}s and {FPU}s, which
	defines formats for representing floating-point numbers;
	representations of special values (e.g. {infinity}, very small
	values, {NaN}); five {exceptions}, when they occur, and what
	happens when they do occur; four {rounding modes}; and a set
	of floating-point operations that will work identically on any
	conforming system.

	IEEE 754 specifies four formats for representing
	floating-point values: single-precision (32-bit),
	double-precision (64-bit), single-extended precision (80-bit?)
	and double-extended precision (128-bit).  Only 32-bit values
	are required by the standard, the others are optional though
	64-bit is required by standard {C}.

	[On-line document?]

	(19 Dec 1997)

IEF

	{Information Engineering Facility}

IEN

	{Internet Experiment Note}

IEPG

	{Internet Engineering and Planning Group}

IESG

	{Internet Engineering Steering Group}

IETF

	{Internet Engineering Task Force}

IF1

	<language> A graph language used as an intermediate language
	for {dataflow} hardware.  Used by the {OSC} {SISAL} compiler.

	["The Manchester Prototype Dataflow Computer", J.R. Gurd et
	al, CACM 28(1):34-52, Jan 1985].

	(05 Jan 1996)

IF2

	<language> S graph language used by the {OSC} {SISAL}
	compiler, a superset of {IF1}.

	["IF2: An Applicative Language Intermediate Form with Explicit
	Memory Management", M. L. Welcome et al, UC-LLNL, Nov 1986].

	(05 Jan 1996)

IFAC

	International Federation of Automatic Control, involved in
	informatics related to control systems.

ifdef out

	/if'def owt/ v. Synonym for {condition out}, specific
	to {C}.

IFDL

	<language> Independent Form Description Language.

	{DEC}'s language for describing form-based human interfaces in
	{DECforms}.

	(21 Apr 1995)

IFF

	1. <file format> {Interchange File Format}.

	2. Identify friend or foe (radar).

IFIP

	1. {International Federation for Information Processing}.

	2. A subset of {ALGOL}.

	[Sammet 1969, p. 180].

IFP

	Illinois FP.  An {interpreter} written in portable {C} by Arch
	D. Robinson for a variant of Backus' {FP} with syntax like
	{ALGOL} or {Modula-2}.  IFP Runs under {Unix}, {CTSS} ({Cray})
	and {MS-DOS}.  Version 0.5.

	{(ftp://a.cs.uiuc.edu/pub/ifp)}.  Posted to comp.sources.unix
	volume 10.

	["The Illinois Functional Programming Interpreter",
	A.D. Robison, Proc 1987 SIGPLAN Conf on Interpreters and
	Interpretive Techniques (June 1987), pp. 64-73].

	["Illinois Functional Programming: A Tutorial", A.D. Robison,
	BYTE Feb 1987, pp. 115-125].

	(24 Oct 1994)

IFX

	["Type Reconstruction with First-Class Polymorphic Values",
	J. O'Toole et al, SIGPLAN Notices 24(7):207-217 (Jul 1989)].

If you want X, you know where to find it.

	<exclamation> There is a legend that {Dennis Ritchie},
	inventor of {C}, once responded to demands for features
	resembling those of what at the time was a much more popular
	language by observing "If you want {PL/I}, you know where to
	find it."  Ever since, this has been hackish standard form for
	fending off requests to alter a new design to mimic some older
	(and, by implication, inferior and {baroque}) one.  The case X
	= {Pascal} manifests semi-regularly on {Usenet}'s
	{news:comp.lang.c} {newsgroup}.  Indeed, the case X = X has
	been reported in discussions of graphics software (see {X
	Window System}).

	(25 Oct 1995)

IGC

	{Institute for Global Communications}

IGES

	Initial Graphics Exchange Specification: an ASME/ANSI standard
	for the exchange of CAD data.

IGL

	Interactive Graphic Language.  Used primarily by Physics Dept
	at Brooklyn Poly, uses numerical methods on vectors to
	approximate continuous function problems that don't have
	closed form solutions.

	[Is this being confused with Tektronix's graphics library by
	the same name?]

IGMP

	{Internet Group Managment Protocol}

IGP

	{Interior Gateway Protocol}

IGPL

	{Interest Group in Pure and Applied Logics}

IHS

	{Integrated Home System}

IHV

	<company> {Independant Hardware Vendor}.

	(11 Dec 1995)

IIcx

	{Apple IIcx}

IIDMS/R

	Integrated database management system.  A {DBMS} from
	{Cullinet Software, Inc.}

	(07 Nov 1994)

IINREN

	{Interagency Interim National Research and Education Network}

IIOP

	{Internet Inter-ORB Protocol}

IIR

	{Infinite Impulse Response}

IIRC

	<chat> If I recall/remember correctly.

	(28 Nov 1996)

IIS

	Idealized Instruction Set.  The {assembly language} for the
	{Flagship} parallel machine.

	["An Idealized Instruction Set for a Packet Rewrite Machine",
	J. Sargeant, Manchester U, 1988].

	(07 Nov 1994)

IIT

	{Integrated Information Technology}

IITF

	{Information Infrastructure Task Force}

IITRAN

	Simple PL/I-like language for students, on IBM 360.

	["The IITRAN Programming Language", R. Dewar et al, CACM
	12(10):569-575 (Oct 1969)].

ILBM

	<file format> {interleaved bit-map}.

ILIAD

	A {real-time} language.

	["On the Design of a Language for Programming Real-Time
	Concurrent Processes", H.A. Schutz, IEEE Trans Soft Eng
	SE-5(3):248-255 (May 1979)].

ILISP

	A somewhat {LISP Machine}-like interface to {lisp listener}s
	from {Emacs}.

	Version 5.0 Emacs interface by ? Ivan Vazquez
	<ivan@haldane.bu.edu>.

	{(ftp://haldane.bu.edu/)} (128.197.54.25).  E-mail:
	<ilisp-bug@darwin.bu.edu>, <ilisp-bugs@darwin.bu.edu>,
	<ilisp-request@darwin.bu.edu> (discussion).

	(28 Jun 1993)

ill-behaved

	1. [numerical analysis] Said of an {algorithm} or
	computational method that tends to blow up because of
	accumulated roundoff error or poor convergence properties.

	2. Software that bypasses the defined {operating system}
	interfaces to do things (like screen, keyboard, and disk I/O)
	itself, often in a way that depends on the hardware of the
	machine it is running on or which is nonportable or
	incompatible with other pieces of software.

	In the {IBM PC}/{mess-dos} world, there is a folk theorem
	(nearly true) to the effect that (owing to gross inadequacies
	and performance penalties in the OS interface) all interesting
	applications are ill-behaved.

	See also {bare metal}. Opposite: {well-behaved}, compare
	{PC-ism}.

ILLIAC

	Assembly language for the ILLIAC computer.  Listed in CACM
	2(5):16, (May 1959) p.16.

Illiac IV

	<computer> One of the most infamous {supercomputer}s ever.  It
	used early ideas on {SIMD} (single instruction stream,
	multiple data streams).  The project started in 1965, it used
	64 processors and a 13MHz clock.  In 1976 it ran its first
	sucessfull application.  It had 1MB memory (64x16KB).

	Its actual performance was 15 MFLOPS, it was estimated in
	initial predictions to be 1000 MFLOPS.  It totally failed as a
	computer, only a quarter of the fully planned machine was ever
	built, costs escalated from the $8 million estimated in 1966
	to $31 million by 1972, and the computer took three more years
	of enginering before it was operational.

	The only good it did was to push research forward a bit,
	leading way for machines such as the {Thinking Machines}
	{CM-1} and CM-2.

	(28 Apr 1995)

ILOC

	Rice U.  Register-oriented intermediate language targeted to
	PC/RT.  Source languages include {FORTRAN} and {Russell}.

Ilog Solver

	A commercial {constraint} programming system.

	(15 Nov 1994)

image

	1. Data representing a two-dimensional scene.  A digital image
	is composed of {pixel}s arranged in a rectangular array with a
	certain height and width.  Each pixel may consist of one or
	more {bit}s of information, representing the brightness of the
	image at that point and possibly including colour information
	encoded as {RGB} triples.

	{Image}s are usually taken from the real world via a digital
	camera, {frame grabber} or {scanner}.

	See also {image formats}, {image processing}.

	(21 Oct 1994)

	2. <mathematics> The image (or range) of a {function} is the
	set of values of that function applied to all elements of its
	{domain}.  So, if f : D -> C then the set f(D) = { f(d) | d in
	D } is the image of D under f.  The image is a subset of C,
	the {codomain}.

	(21 Oct 1994)

image formats

	<graphics, file format> There are many formats used to store
	{images} in files.  {GIF}, {TIFF} and {JPEG} are very common.
	Others are {BIFF}, {BMP}, {Clear}, {FITS}, {IFF}, {NFF},
	{OFF}, {PCX}, {PNG}, {TGA}, {XBM}.

	Some of these are documented on-line at the following sites:

	{The Graphics File Format Page
	(http://www.dcs.ed.ac.uk/~mxr/gfx/)}.
	{The NCSA file formats archive
	(ftp://ftp.ncsa.uiuc.edu/misc/file.formats/graphics.formats)}.
	{The Avalon repository
	(ftp://avalon.viewpoint.com/pub/format_specs)}.

	[Others?]

	(07 Aug 1997)

image map

	<World-Wide Web> An image in an {HTML} document with "hot
	spots" which when clicked on in a suitable {browser}, act as
	{anchors} or links to other information.  For example, an
	image of a map of the world might provide links to resources
	related to different countries.  Clicking on a country would
	take the user to the relevant information.

	[Documentation URL?]

	(05 Dec 1995)

image processing

	<graphics> Computer manipulation of {images}.  Some of the
	many {algorithms} used in image processing include
	{convolution} (on which many others are based), {FFT}, {DCT},
	{thinning} (or {skeletonisation}), {edge detection} and
	{contrast enhancement}.  These are usually implemented in
	{software} but may also use special purpose {hardware} for
	speed.

	Image processing contrasts with {computer graphics}, which is
	usually more concerned with the generation of artificial
	images, and {visualisation}, which attempts to understand
	(real-world) data by displaying it as an artificial image
	(e.g. a graph).  Image processing is used in {image
	recognition} and {computer vision}.

	{Silicon Graphics} manufacture {workstations} which are often
	used for image processing.  There are a few programming
	languages designed for image processing, e.g. {CELIP}, {VPL}.

	See also {Pilot European Image Processing Archive}.

	{Usenet} newsgroup: {news:sci.image.processing}.

	[Other algorithms, languages?  FAQ?]

	(12 Apr 1995)

image recognition

	<graphics, artificial intelligence> The identification of
	objects in an {image}.  This process would probably start with
	{image processing} techniques such as {noise removal},
	followed by (low-level) {feature extraction} to locate lines,
	regions and possibly areas with certain textures.

	The clever bit is to interpret collections of these shapes as
	single objects, e.g. cars on a road, boxes on a conveyor belt
	or cancerous cells on a microscope slide.  One reason this is
	an {AI} problem is that an object can appear very different
	when viewed from different angles or under different lighting.
	Another problem is deciding what features belong to what
	object and which are background or shadows etc.  The human
	visual system performs these tasks mostly unconsciously but a
	computer requires skillful programming and lots of processing
	power to approach human performance.

	(20 Jul 1997)

imaging

	<graphics> The production of graphic {images}, either from a
	video camera or from digitally generated data (see
	{visualisation}), or the recording of such images on
	microfilm, videotape or laser disk.

	See also {scanner}.

	(20 Jul 1997)

Imago Europe plc

	A UK {Internet} provider.  There sevice is called {Imago
	On-line}.  E-mail: <info@imago.com>.

Imago On-line

	An {Internet} {electronic mail} and {news} service in the
	United Kingdom provided by {Imago Europe} plc.

	A one year subscription to the service costs just seventy five
	pounds plus VAT and offers {dial-up} access with a {graphical
	user interface} for users of {Macintosh} and {Microsoft
	Windows} {PC}s and the {Apple Newton} {MessagePad} {PDA}
	family.

imake

	A tool which generates {Makefile}s from a template, a set of
	{cpp} {macro}s, and a per-directory input file called an
	Imakefile.  This allows machine dependencies (such has
	compiler options, alternate command names, and special make
	rules) to be kept separate from the descriptions of the
	various items to be built.

	imake is distributed with, and used extensively by, the {X
	Window System}.

	(21 Feb 1995)

IMAP

	{Internet Message Access Protocol}

imc

	A {REXX} {interpreter} for {SunOS}.  Version 1.3.

	{(ftp://rexx.uwaterloo.ca/pub/freerexx/imc/rexx-imc-1.3.tar.Z)}

IMHO

	(From SF fandom via {Usenet}) In My Humble Opinion.  Also seen
	in variant forms such as IMO, IMNSHO (In My Not-So-Humble
	Opinion) and IMAO (In My Arrogant Opinion).

IML

	{Initial Microprogram Load}

immediate version

	{child version}

Imminent Death Of The Net Predicted!

	Since {Usenet} first got off the ground in 1980--81, it has
	grown exponentially, approximately doubling in size every
	year.  On the other hand, most people feel the
	{signal-to-noise ratio} of {Usenet} has dropped steadily.
	These trends led, as far back as mid-1983, to predictions of
	the imminent collapse (or death) of the net.  Ten years and
	numerous doublings later, enough of these gloomy
	prognostications have been confounded that the phrase
	"Imminent Death Of The Net Predicted!" has become a running
	joke, hauled out any time someone grumbles about the {S/N
	ratio} or the huge and steadily increasing volume, or the
	possible loss of a key node or link, or the potential for
	lawsuits when ignoramuses post copyrighted material etc.

IMP

	1. <language> {IMProved Mercury autocode}.

	2. <language> An extensible dialect of {ALGOL 60}, for {CDC
	1604}.

	["Experience with an Extensible Language", Edgar T. Irons,
	CACM 13(1):31-39, Jan 1970].

	3. <language> {Interpretive Menu Processor}.

	4. <language> {IMPlementation language}.

	5. <networking> {Interface Message Processor}.

	(07 Apr 1996)

impact printer

	<printer> The earlier, noisier kind of {printer} where part of
	the mechanism comes into contact with the paper.  The term
	would only be only used in contrast to "{non-impact printer}".
	Examples include {line printer}, {daisy wheel printer}, {golf
	ball printer}, {dot matrix printer}.

	(13 Jan 1996)

imperative language

	See {procedural language}.  Compare {declarative language}.

Imperial Software Technology

	<company> A {software engineering} company which emerged from
	{Imperial College} in about 1982.  It enjoys a world-wide
	reputation for technical excellence as a software product and
	technology provider in the Open Systems market.  Its flagship
	product is {X-Designer}, the award-winning {graphical user
	interface builder}.  It also has considerable expertise in the
	{Z} language and {Formal Methods}.

	{Home (http://www.ist.co.uk/)}

	(23 Nov 1995)

IMPlementation language

	<language> (IMP) An extension of {B} with {floating-point}
	operations, developed by W. Davidsen
	<davidsen@ariel.crd.ge.com> in 1970 for the {GE 600}.  It was
	also {cross-compile}d to {VAX} and {Intel 8080}.

	(07 Apr 1996)

implicit parallelism

	A feature of a programming language for a {parallel
	processing} system which decides automatically which parts to
	run in parallel.

	The best way of providing implicit parallelism is still an
	active research topic.  The problem is to generate the right
	number of parallel tasks of the right size (or
	"{granularity}").  Too many tasks and the system gets bogged
	down in house-keeping, or memory for waiting tasks runs out,
	too few tasks and processors are left idle.

	The best performance is usually achieved with {explicit
	parallelism} where the the programmer can annotate his program
	to indicate which parts should be executed as independent
	parallel tasks.

	(16 Feb 1995)

implicit type conversion

	<programming> (Or "coercion") The abilty of some {compilers}
	to automatically insert {type} conversion {functions} where an
	expression of one type is used in a context where another type
	is expected.

	A common example is coercion of {integers} to {reals} so that
	an expression like sin(1) is compiled as sin(integerToReal(1))
	where sin is of type Real -> Real.

	A coercion is usually performed automatically by the compiler
	whereas a {cast} is an {explicit type conversion} inserted by
	the programmer.

	See also {subtype}.

	(28 Jul 1997)

implies

	<logic> (=> or a thin right arrow) A binary {Boolean} function
	and {logical connective}.  A => B is true unless A is true and
	B is false.  The {truth table} is

		A B | A => B
		----+-------
		F F |   T
		F T |   T
		T F |   F
		T T |   T

	It is surprising at first that A => B is always true if A is
	false, but if X => Y then we would expect that (X & Z) => Y
	for any Z.

	(30 Sep 1995)

IMProved Mercury autocode

	<language> (IMP) A version of {Autocode} used to program the
	{Edinburgh Multi Access System} (EMAS), one of the first
	{operating systems} written in a {high-level language},
	apparently predating {Unix}.

	Luis Damas' {Prolog} {interpreter} in IMP for EMAS led to
	{C-Prolog}.

	[Papers in J. {British Computer Society}].

	(07 Apr 1996)

IMR

	{Internet Monthly Report}

IMS

	{Information Management System}

IMS 6100

	{Intersil 6100}

Imsai

	<company> One of the companies that made very early
	{microprocessor} systems.

	[Where?  When?  Who?  What?]

	(12 May 1995)

IMSE

	Integrated Modelling Support Environment.  An {Esprit}
	programme.

Ina Jo

	[FDM?]  ["The Ina Jo Specification Language Reference Manual",
	J.  Scheid et al, TR TM-(L)-6021/001/00, SDC Mar 1985].

inc

	/ink/ increment, i.e. increase by one.  Especially used by
	{assembly} programmers, as many assembly languages have an
	"inc" {mnemonic}.

	Antonym: {dec}.

incantation

	Any particularly arbitrary or obscure command that one must
	mutter at a system to attain a desired result.  Not used of
	passwords or other explicit security features.  Especially
	used of tricks that are so poorly documented that they must be
	learned from a {wizard}.  "This compiler normally locates
	initialised data in the data segment, but if you {mutter} the
	right incantation they will be forced into text space."

include

	[{Usenet}] 1. To duplicate a portion (or whole) of another's
	message (typically with attribution to the source) in a reply
	or followup, for clarifying the context of one's response.
	See the discussion of inclusion styles under "Hacker Writing
	Style".

	2. [{C}] "#include <disclaimer.h>" has appeared in {sig
	block}s to refer to a notional "standard {disclaimer} file".

include war

	Excessive multi-leveled including within a discussion
	{thread}, a practice that tends to annoy readers.  In a forum
	with high-traffic newsgroups, such as {Usenet}, this can lead
	to {flame}s and the urge to start a {kill file}.

inclusive

	<theory> In {domain theory}, a {predicate} P : D -> Bool is
	inclusive iff

		For any {chain} C, a subset of D, and
		for all c in C,
		P(c) => P(lub C)

	In other words, if the predicate holds for all elements of an
	increasing sequence then it holds for their {least upper
	bound}.

	("lub is written in {LaTeX} as {\sqcup}).

	(03 Feb 1995)

incomparable

	<mathematics> Two elements a, b of a set are incomparable
	under some relation <= if neither a <= b, nor b <= a.

	(21 Sep 1995)

incremental analysis

	<testing> Partial analysis of an incomplete product to allow
	early feedback on its development.

	(22 May 1996)

incremental backup

	A copy of all files which have changed since the date of some
	previous backup.  The first backup of a file system should
	include all files.  Call this level 0.  The next backup could
	also be a full level 0 backup but it is usually much quicker
	to do a level 1 backup which will include only those files
	which have changed since the level 0 backup.  Together the
	level 0 and level 1 backups will include the latest version of
	every file.  Level 1 backups can be made until, say, the
	backup tape is nearly full, after which we can switch to level
	2.  Each level includes those files which have changed since
	the last backup at a lower level.  The more levels you use,
	the longer it will take to restore the latest version of a
	file (or all files) if you don't know when it was last
	modified.

incremental constraint solver

	A system in which a {constraint solver} is given {constraint}s
	one at a time by an {inference engine} (as is found in
	{Prolog}).  The solver adds the new constraint to an initially
	empty set of solved constraints.  If the new constraint is
	consistent with the solved constraints it will be added to the
	set.  If it was inconsistent, the inference engine
	{backtrack}s.  This is the basis of {Constraint Logic
	Programming}.

	(01 Nov 1994)

Incremental Prototyping Technology for Embedded Realtime Systems

	An {Esprit} project.

indent style

	<programming> The rules one uses to indent code in a readable
	fashion.  There are four major {C} indent styles, described
	below; all have the aim of making it easier for the reader to
	visually track the {scope} of control constructs.  The
	significant variable is the placement of "{" and "}" with
	respect to the statement(s) they enclose and to the guard or
	controlling statement ("if", "else", "for", "while", or "do")
	on the block, if any.

	"K&R style" - Named after Kernighan & Ritchie, because the
	examples in {K&R} are formatted this way.  Also called "kernel
	style" because the {Unix} {kernel} is written in it, and the
	"{One True Brace Style}" (abbreviation 1TBS) by its partisans.
	The basic indent shown here is eight spaces (or one tab) per
	level; four spaces are occasionally seen, but are much less
	common.

	 if (cond) {
		<body>
	 }

	"Allman style" - named after Eric Allman, a Berkeley hacker
	who wrote a lot of the {BSD} utilities in it (it is sometimes
	called "BSD style").  Resembles normal indent style in
	{Pascal} and {ALGOL}.  Basic indent per level shown here is
	eight spaces, but four spaces are just as common (especially
	in C++ code).

	 if (cond)
	 {
		<body>
	 }

	"Whitesmiths style" - popularised by the examples that came
	with {Whitesmiths C}, an early commercial C compiler.  Basic
	indent per level shown here is eight spaces, but four spaces
	are occasionally seen.

	 if (cond)
		{
		<body>
		}

	"GNU style" - Used throughout {GNU} {EMACS} and the {Free
	Software Foundation} code, and just about nowhere else.
	Indents are always four spaces per level, with "{" and "}"
	halfway between the outer and inner indent levels.

	 if (cond)
	  {
	    <body>
	  }

	Surveys have shown the Allman and Whitesmiths styles to be the
	most common, with about equal shares.  K&R/1TBS used to be
	nearly universal, but is now much less common.  The opening
	brace tends to get lost against the right parenthesis of the
	guard part in an "if" or "while", which is a {Bad Thing}.
	Defenders of 1TBS argue that any putative gain in readability
	is less important than their style's relative economy with
	vertical space, which enables one to see more code on one's
	screen at once.  Doubtless these issues will continue to be
	the subject of {holy wars}.

	(24 Jul 1995)

Independent Verification and Validation

	<testing> (IV&V) The verification and validation of a software
	product by an organization that is both technically and
	managerially separate from the organization responsible for
	developing the product.

	(27 Dec 1996)

index

	(Plural "indices" or "indexes")

	1. <programming> A number used to select an element of a list,
	vector, {array} or other sequence.  Such indices are nearly
	always non-negative integers but see {associative array}.

	2. <database> See {inverted index}.  [Other kinds?]

	3. <World-Wide Web> A {search engine}.

	4. <World-Wide Web> A {subject index}.

	4. <jargon> See {coefficient of X}.

	(09 Apr 1997)

Index Data

	<company> A Danish company who have released a lot of {ANSI
	Z39.50} related source under {GPL}.

	{Home (http://130.228.5.168)}.

	(22 Jul 1996)

Indexed Sequential Access Method

	(ISAM) A file access method supporting both sequential and
	indexed access.

	[Details?  Origin?]

	(28 Mar 1995)

indices

	<spelling> A plural of "{index}".

indirect address

	<processor> An {addressing mode} found in many processors'
	{instruction sets} where the instruction contains the address
	of a memory location which contains the address of the operand
	(the "{effective address}") or specifies a {register} which
	contains the effective address.  In the first case
	(indirection via memory), accessing the operand requires two
	memory accesses - one to fetch the effective address and
	another to read or write the actual operand.  Register
	indirect addressing requires only one memory access.

	An indirect address may be indicated in {assembly language} by
	an operand in parentheses, e.g. in {Motorola 68000} assembly

		MOV D0,(A0)

	writes the contents of register D0 to the location pointed to
	by the address in register A0.

	Indirect addressing is often combined with pre- or post-
	increment or decrement addressing, allowing the address of the
	operand to be increased or decreased by one (or some specified
	number) either before or after using it.

	(07 Nov 1994)

indirect addressing

	{indirect address}

indirection

	<programming> Manipulating data via its address.  Indirection
	is a powerful and general programming technique.  It can be
	used for example to process data stored in a sequence of
	consecutive memory locations by maintaining a {pointer} to the
	current item and incrementing it to point to the next item.

	Indirection is supported at the {machine language} level by
	{indirect addressing}.  Many processor and {operating system}
	architectures use {vectors} which are also an instance of
	indirection, being locations which hold the address of a
	routine to handle a particular event.  The event handler can
	be changed simply by pointing the vector at a new piece of
	code.

	{C} includes operators "&" which returns the address of a
	{variable} and its inverse "*" which returns the variable at a
	given address.

	(06 Feb 1997)

induction

	<logic> A method of proving statements about {well-ordered
	set}s.  If S is a well-ordered set with ordering "<", and we
	want to show that a property P holds for every element of S,
	it is sufficient to show that, for all s in S,

		IF for all t in S, t < s => P(t) THEN P(s)

	I.e. if P holds for anything less than s then it holds for s.
	In this case we say P is proved by induction.

	The most common instance of proof by induction is induction
	over the {natural number}s where we prove that some property
	holds for n=0 and that if it holds for n, it holds for n+1.

	(In fact it is sufficient for S to be a {well-founded}
	{partial order}).

	(25 Mar 1995)

inductive inference

	{grammatical inference}

inductive relation

	A relation R between {domain}s D and E is inductive if for all
	{chain}s {d1 .. dn} in D and {e1 .. en} in E,

		For all i, di R ei  =>  lub(d) R lub(e)

Industrial Programming, Inc.

	<company> The company which developed {MTOS}.

	{Home (http://www.ipi.com)}.

	E-mail: <info@ipi.com>.

	Telephone: +1 (516) 938 6600.  Address: 100 Jericho
	Quadrangle, Jericho, NY 11753, USA.

	(23 Jul 1997)

Industrial Robot Language

	<language> (IRL) A {high-level language} for programming
	industrial {robots}.

	["IRL, Industrial Robot Language", DIN 66312, Beuth-Verlag
	1992].

	(28 Nov 1996)

Industry Standard Architecture

	<architecture> (ISA) A {bus} standard for {IBM-compatibles}
	that extends the {XT bus architecture} to 16 bits.  It also
	allows for {bus mastering} although only the first 16 MB of
	main memory is available for direct access.  In reference to
	the XT bus architecture it is sometimes referred to as "AT bus
	architecture".

	Compare {EISA}, {MCA}.

	(25 Jun 1996)

inetd

	<networking, tool> Berkeley daemon program that listens for
	connection requests or messages for certain ports and starts
	server programs to perform the services associated with those
	ports.  Sometimes known as netd.

	{Unix manual page}: inetd(8).

	(20 Mar 1995)

inews

	<messaging, application> A {Unix} program for posting {Usenet}
	news articles, written by Rich $alz <rsalz@uunet.uu.net> for
	{InterNetNews}.  inews reads an article (perhaps with headers)
	from a file or {standard}, adds some {header}s and possibly a
	{signature}, and, if the article passes some consistency
	checks (too much quoting, non-existent {newsgroup}) then inews
	sends the article to the local news {server} for distribution.

	If an unapproved posting is made to a {moderated} newsgroup,
	inews will try to send the article to the moderator (specified
	in a configuration file) by {electronic mail}.

	Version: 1.25, dated 1993/03/18.

	{Unix manual page}: inews(1).

	(27 Feb 1996)

infant mortality

	<hardware> It is common lore among hackers (and in the
	electronics industry at large) that the chances of sudden
	hardware failure drop off exponentially with a machine's time
	since first use (that is, until the relatively distant time at
	which enough mechanical wear in I/O devices and
	thermal-cycling stress in components has accumulated for the
	machine to start going senile).  Up to half of all chip and
	wire failures happen within a new system's first few weeks;
	such failures are often referred to as "infant mortality"
	problems (or, occasionally, as "sudden infant death
	syndrome").

	See {bathtub curve}, {burn-in period}.

	(20 Mar 1995)

infeasible path

	{dead code}

inference

	<logic> The logical process by which new facts are derived
	from known facts by the application of {inference rule}s.

	See also {symbolic inference}, {type inference}.

	(20 Mar 1995)

inference engine

	A program that infers new {fact}s from known facts using
	{inference rule}s.  Commonly found as part of a {Prolog}
	{interpreter}, {expert system} or {knowledge based system}.

	(01 Nov 1994)

inference rule

	A procedure which combines known facts to produce ("infer")
	new facts.  For example, given that

		1. Socrates is a man and that
		2. all men are motal,

	we can infer that Socrates is mortal.  This uses the rule
	known as "modus ponens" which can be written in {Boolean
	algebra} as

		(A & A => B) => B

	(if proposition A is true, and A implies B, then B is true).

	Or given that,

		1. Either Denis is programming or Denis is sad and
		2. Denis is not sad,

	we can infer that Denis is programming.  This rule can be
	written

		((A OR B) & not B) => A

	(If either A is true or B is true (or both), and B is false,
	then A must be true).

	(31 Oct 1994)

infimum

	{greatest lower bound}

infinite

	<mathematics> 1. Bigger than any {natural number}.  There are
	various formal set definitions in {set theory}: a set X is
	infinite if

	(i) There is a bijection between X and a proper subset of X.

	(ii) There is an injection from the set N of natural numbers
	to X.

	(iii) There is an injection from each natural number n to X.

	These definitions are not necessarily equivalent unless we
	accept the {Axiom of Choice}.

	2. The length of a line extended indefinitely.

	See also {infinite loop}, {infinite set}.

	(29 Mar 1995)

infinite loop

	<programming> (Or "endless loop") Where a piece of program is
	executed repeatedly with no hope of stopping.  This is nearly
	always because of a {bug}, e.g. if the condition for exiting
	the loop is wrong, though it may be intentional if the program
	is controlling an {embedded system} which is supposed to run
	continuously until it is turned off.  The programmer may also
	intend the program to run until interrupted by the user.  An
	endless loop may also be used as a last-resort error handler
	when no other action is appropriate.  This is used in some
	{operating system} kernels following a {panic}.

	A program executing an infinite loop is said to {spin} or
	{buzz} forever and goes {catatonic}.  The program is "wound
	around the axle".

	A standard joke has been made about each generation's exemplar
	of the ultra-fast machine: "The Cray-3 is so fast it can
	execute an infinite loop in under 2 seconds!"

	See also {black hole}, {recursion}, {infinite loop}.

	(11 May 1996)

Infinite-Monkey Theorem

	<humour> "If you put an {infinite} number of monkeys at
	typewriters, eventually one will bash out the script for
	Hamlet."  (One may also hypothesise a small number of monkeys
	and a very long period of time.)  This theorem asserts nothing
	about the intelligence of the one {random} monkey that
	eventually comes up with the script (and note that the mob
	will also type out all the possible *incorrect* versions of
	Hamlet).  It may be referred to semi-seriously when justifying
	a {brute force} method; the implication is that, with enough
	resources thrown at it, any technical challenge becomes a
	{one-banana problem}.

	This theorem was first popularised by the astronomer Sir
	Arthur Eddington.  It became part of the idiom through the
	classic short story "Inflexible Logic" by Russell Maloney, and
	many younger hackers know it through a reference in Douglas
	Adams's "Hitchhiker's Guide to the Galaxy".

	(11 May 1996)

infinite set

	<mathematics> A set with an infinite number of elements.
	There are several possible definitions, e.g.

	(i) ("Dedekind infinite") A set X is infinite if there exists
	a {bijection} (one-to-one mapping) between X and some proper
	subset of X.

	(ii) A set X is infinite if there exists an {injection} from N
	(the set of {natural number}s) to X.

	In the presence of the {Axiom of Choice} all such definitions
	are equivalent.

	(27 Mar 1995)

infinity

	1. <mathematics> The size of something {infinite}.

	Using the word in the context of sets is sloppy, since
	different {infinite set}s aren't necessarily the same size
	{cardinality} as each other.

	See also {aleph 0}

	2. <programming> The largest value that can be represented in
	a particular type of variable ({register}, memory location,
	data type, whatever).

	See also {minus infinity}.

	(18 Nov 1994)

infix notation

	<language> One of the possible orderings of {functions} and
	{operands}: in infix notation the functions are placed between
	their operands, such as "1+2".  Although infix notation is
	limited to binary functions most languages mix infix notation
	with {prefix} or {postfix} notation, as a form of {syntactic
	sugar}.

	(17 Jan 1997)

infix syntax

	{infix notation}

inflate

	{deflate}

INFN

	Istituto Nazionale di Fisica Nucleare: an Italian State
	research organisation.

Infobahn

	(After the German "Autobahn") {Information Superhighway}.

Info BASIC

	Variant of {Pick BASIC} used with {PRIME}'s {PRIMOS}.

Informatics Corporation

	Renamed to {Sterling Software Corp}.

	[When?]

Information Algebra

	Theoretical formalism for DP, never resulted in a language.
	Language Structure Group of CODASYL, ca. 1962.  Sammet 1969,
	709.

Information Builders

	Distributors of {LEVEL5 OBJECT}.  Telephone +1 800 969 INFO.

Information Engineering Facility

	(IEF) A {CASE} tool from {Texas Instruments} which generates
	code from graphical business process models.

	(22 Dec 1994)

information highway

	{information superhighway}

Information Innovation

	A group of companies with offices in Amsterdam and New York
	which acts as an information filter for the {World-Wide Web}.
	They analyse what happens in the Web community and organise
	the Web's information so that it is accessible and efficient
	to use.

	Information Innovation provides:

	"The Management Guide" - a guide for managers in the
	information age.  The Guide consists of 22 parts, each
	concentrating on a particular technology or issue facing
	managers.  Topics range from {Artificial Intelligence} and
	Telecommunications to Finance and Marketing.  Each part
	contains references to additional valuable information,
	including {CD ROM}s, conferences, magazines, articles and
	books.

	"The Hypergraphic Matrix" - a "hypergraphic" matrix of 250
	graphics discussing the interrelationships between technology,
	change, business functions and specific industries.

	"Dictionary" - the largest Internet dictionary on management
	and technology.

	"The Delphi Oracle" - a comprehensive guide to the latest
	management ideas and issues.  Over 500 articles and books have
	been read, analysed, rated and catalogued.

	"Management Software" - a guide to software which is useful to
	managers.  Both Web software, Internet software and commecial
	products are included in this guide.

	"The Web Word" - an information service about the Web.  It
	includes a regular newsletter and databases about Web
	resources, news, interviews with Web personalities and, of
	course, the most comprehensive guide to sites.

	"Web Bibliography" - a guide to the latest Web information
	printed.  Over 150 articles, magazines, market research
	reports and books are catalogued.

	"The Power Launch Pad" - our own list of useful sites on the
	Web.  Also includes links to our own lists of special subjects
	such as Finance, Telecommunications, Manufacturing, Technology
	and so forth.

	{(http://www.euro.net/innovation/WelcomeHP.html)}.  E-mail:
	<innovation@euronet.nl>.

	(27 Oct 1994)

information island

	<jargon> A body of information (i.e. electronic files) that
	needs to be shared but has no network connection.

	(16 Mar 1995)

Information Management

	The planning, budgeting, control and exploitation of the
	information resources in an organisation.  The term
	encompasses both the information itself and the related
	aspects such as personnel, finance, marketing, organisation
	and technologies and systems.  Information Managers are
	responsible for the coordination and integration of a wide
	range of information handling activities within the
	organisation.  These include the formulation of corporate
	information policy, design, evaluation and integration of
	effective information systems and services, the exploitation
	of IT for competitive advantage and the integration of
	internal and external information and data.

Information Management System

	(IMS) A {DBMS} from {IBM}.

	(29 Nov 1994)

Information Processing Language

	(IPL) Said to be the first list-processing language, also the
	first language to support {recursion}.  Written by Allen
	Newell, J.C. Shaw and H. Simon at Carnegie ca. 1956.  It was
	very low level.

	Versions: IPL-I (never implemented), IPL-II (1957 for
	{JOHNNIAC}), IPL-III (existed briefly), IPL-IV, IPL-V (1958,
	for {IBM 650}, {IBM 704}, {IBM 7090}, many others.  Widely
	used), IPL-VI.

	[Sammet 1969, pp. 388-400].

	["Information Processing Language-V Manual", A. Newell ed, P-H
	1965].

	(04 Nov 1994)

Information Resource Management

	(IRM) A philosophical and practical approach to managing
	government information.  Information is regarded as a valuable
	resource which should be managed like other resources, and
	should contribute directly to accomplishing organisational
	goals and objectives.  IRM provides an integrated view for
	managing the entire life-cycle of information, from
	generation, to dissemination, to archiving and/or destruction,
	for maximising the overall usefulness of information, and
	improving service delivery and program management.

	IRM views information and {information technology} as an
	integrating factor in the organisation, that is, the various
	organisational positions that manage information are
	coordinated and work together toward common ends.  Further,
	IRM looks for ways in which the management of information and
	the management of information technology are interrelated, and
	fosters that interrelationship and organisational integration.

	IRM includes the management of (1) the broad range of
	information resources, e.g., printed materials, electronic
	information, and microforms, (2) the various technologies and
	equipment that manipulate these resources, and (3) the people
	who generate, organise, and disseminate those resources.
	Overall the intent of IRM is to increase the usefulness of
	government information both to the government and to the
	public.

	[Gary D. Blass et al. "Finding Government Information: The
	Federal Information Locator System (FILS)", Government
	Information Quarterly, JAI Press, Inc., Greenwich,
	Connecticut. Vol. 8, No. 1, pp.  11-32. 1991].

	(12 Nov 1995)

information superhighway

	(Or "Infobahn", "Info Strada") The name coined by US
	Vice-president Al Gore in the early 1990s for the emerging
	high-speed global communications network capable of carrying
	voice, data, video and other services around the world.  These
	services will use satellite, copper cable, {optical fibre},
	cellular telecommunications and be accessible via {set-top
	box}es or suitably equipped computers.

	{A White House briefing
	(http://clinton.ai.mit.edu/white-house-publications/1993/12/1993-12-20-background-on-information-superhighway.text)}.

	See also {National Information Infrastructure}.

	(02 Nov 1994)

Information Systems Factory

	(ISF) An equivalent to an {SEE}.

Information Technology Infrastructure Library

	(ITIL) A method of organising the system and network
	management departments of large organisations.  ITIL defines
	the (work) processes involved and the interfaces between them.

	(27 Jun 1995)

Informix

	A {relational DBMS} vendor.

InfoSeek

	<company> A company providing InfoSeek Net Search, a free
	{World-Wide Web} search service which, in August 1995, indexed
	the full text of over 400,000 web pages.  Net Search was rated
	as the fourth most popular site on the web by Interactive Age
	magazine.

	The also sell a commercial service, InfoSeek Search, that
	offers access to all the {Usenet} {news groups}, daily
	newswires, business and computer periodicals, and more.

	{Home (http://www2.infoseek.com/)}

	(09 Nov 1995)

InfoStreet, Inc.

	<company> An Internet consulting and development company
	dedicated to assisting companies in establishing an Internet
	presence.  InfoStreet develope Internet strategies, design and
	create web pages, and host and maintain {web sites}.

	InfoStreet, has been recognized by PC/Computing as the "Best
	of the Top Home Page Services" (August 1996) and has been
	featured in Netguide magazine and the Wiley and Son's
	Electronic Marketing book.

	{Home (http://www.InfoStreet.com/)}.

	{Home page hosting service (http://www.instantweb.com)}.

	(30 Jan 1997)

infrared

	<electronics> (IR) Electromagnetic waves in the frequency
	range just below visible light corresponding to radiated heat.
	IR waves can be generated by a kind of {LED} and are often
	used for remote controls for televisions etc. and in some
	{docking stations}.

	(30 Jan 1997)

infrastructure

	Basic support services for computing, particularly national
	networks.

	See also {information superhighway}.

	(27 Jun 1995)

Inglish

	<games> An English-like language used for {Adventure} games
	like "The Hobbit".  Inglish could distinguish between "take
	the rope and axe" and "take the money and run".

	(27 Jun 1995)

INGRES

	A {relational DBMS} vendor.

inheritance

	In {object-oriented programming}, the ability to derive new
	{class}es from existing classes.  A derived class ("subclass")
	inherits the instance variables and {method}s of the base
	class ("superclass"), and may add new instance variables and
	methods.  New methods may be defined with the same names as
	those in the base class, in which case they override the
	original one.

	For example, bytes might belong to the class of integers for
	which an add method might be defined.  The byte class would
	inherit the add method from the integer class.

	See also {multiple inheritance}.

initgame

	<games> /in-it'gaym/ [IRC] An {IRC} version of the venerable
	trivia game "20 questions", in which one user changes his
	{nick} to the initials of a famous person or other named
	entity, and the others on the channel ask yes or no questions,
	with the one to guess the person getting to be "it" next.  As
	a courtesy, the one picking the initials starts by providing a
	4-letter hint of the form sex, nationality, life-status,
	reality-status.  For example, MAAR means "Male, American,
	Alive, Real" (as opposed to "fictional").  Initgame can be
	surprisingly addictive.  See also {hing}.

initialise

	<programming> To give a {variable} its first value.  This may
	be done automatically by some languages or it may require
	explicit code by the programmer.  Some languages allow
	initialisation to be combined with variable definition,
	e.g. in {C}:

		int i = 0;

	Failing to initialise a variable before using it is a common
	programming error, but one which compilers and automatic
	checkers like {lint} can easily detect.

	(08 Jun 1997)

Initial Microprogram Load

	<operating system> (IML) Loading {microcode} into microcode
	memory.

	(31 Aug 1997)

Initial Operational Test and Evaluation

	<testing> (IOT&E) The first phase of {operational test} and
	evaluation conducted on {pre-protectional} items,
	{prototypes}, or pilot production items and normally completed
	prior to the first major production decision.  Conducted to
	provide a valid estimate of expected system operational
	effectiveness and suitability.

	(27 Dec 1996)

Initial Program Load

	<operating system> (IPL) The procedure used to (re-)start a
	computer system by copying the {operating system} {kernel}
	into {main memory} and running it.  Part of the {boot
	sequence}.

	(31 Aug 1997)

Initial Program Loader

	<operating system> (IPL) A {bootstrap loader} which loads the
	part of an {operating system} needed to load the remainder of
	the operating system.

	(31 Aug 1997)

injection

	1. <mathematics> A {function}, f : A -> B, is injective or
	one-one, or is an injection, if and only if

		for all a,b in A, f(a) = f(b) => a = b.

	I.e. no two different inputs give the same output (contrast
	many-to-one).  This is sometimes called an embedding.  Only
	injective functions have left inverses f' where f'(f(x)) = x,
	since if f were not an injection, there would be elements of B
	for which the value of f' was not unique.  If an injective
	function is also a {surjection} then is it a {bijection}.

	2. <reduction> An injection function is one which takes
	objects of type T and returns objects of type C(T) where C is
	some {type constructor}.  An example is

		f x = (x, 0).

	The opposite of an injection function is a {projection}
	function which extracts a component of a constructed object,
	e.g.

		fst (x,y) = x.

	We say that f injects its argument into the data type and fst
	projects it out.

	(14 Mar 1995)

inkjet printer

	<hardware, printer> A class of printer in which small ink
	droplets are sprayed electrostatically from a nozzle onto the
	paper.

	Inkjet printers are very quiet in comparison to {impact
	printer}s.

	A popular example is the {Olivetti} {BJ10}.

	(14 Mar 1995)

inline

	(Or "unfold") To replace a function call with an instance of
	the function's body.  {Actual argument} expressions are
	substituted for {formal parameter}s as in {beta reduction}.
	Inlining us usually done as a compile-time transformation.

	If done recklessly (e.g. attempting to inline a {recursive}
	function) the compiler will fail to terminate.  If done
	over-enthusiastically the code size may increase
	exponentially, e.g. if function f calls g twice, and g calls h
	twice and h is inlined in g which is inlined in f (in either
	order) then there will be four copies of h's body in f.

	See also {linear argument}, {unfold/fold}.

	(03 Nov 1994)

INMOS transputer

	{transputer}

inner product

	<mathematics> In {linear algebra}, any linear map from a
	{vector space} to its {dual} defines a product on the vector
	space: for u, v in V and linear g: V -> V' we have gu in V' so
	(gu): V -> scalars, whence (gu)(v) is a scalar, known as the
	inner product of u and v under g.  If the value of this scalar
	is unchanged under interchange of u and v (i.e. (gu)(v) =
	(gv)(u)), we say the inner product, g, is symmetric.
	Attention is seldom paid to any other kind of inner product.

	An inner product, g: V -> V', is said to be positive definite
	iff, for all non-zero v in V, (gv)v > 0; likewise negative
	definite iff all such (gv)v < 0; positive semi-definite or
	non-negative definite iff all such (gv)v >= 0; negative
	semi-definite or non-positive definite iff all such (gv)v <=
	0.  Outside relativity, attention is seldom paid to any but
	positive definite inner products.

	Where only one inner product enters into discussion, it is
	generally elided in favour of some piece of syntactic sugar,
	like a big dot between the two vectors, and practitioners
	don't take much effort to distinguish between vectors and
	their duals.

	(16 Mar 1997)

InnovAda

	An {object-oriented} extension to {Ada}, said to be
	{Lisp}-like.  Implemented as an {Ada} {preprocessor}.

	(03 Nov 1994)

	[Where?  Who?  When?]

inode

	A data structure holding information about files in a {Unix}
	{file system}.  There is an inode for each file and a file
	is uniquely identified by the file system on which it
	resides and its inode number on that system.  Each inode
	contains the following information: the device where the inode
	resides, locking information, mode and type of file, the
	number of links to the file, the owner's user and group ids,
	the number of bytes in the file, access and modification
	times, the time the inode itself was last modified and the
	addresses of the file's blocks on disk.  A {Unix} directory is
	an association between file leafnames and inode numbers.  A
	file's inode number can be found using the "-i" switch to ls.

	{Unix manual page}: fs(5).

	See also /usr/include/ufs/inode.h.

Input

	{ALPHA}

input

	<architecture> {data} transferred from the outside world into
	a computer system via some kind of {input device}.

	Opposite: {output}.

	(28 Apr 1997)

input device

	<hardware> A {peripheral} used to transfer data from the
	outside world into a computer system.  Some input devices are
	operated directly by the user, e.g. {keyboard}, {mouse},
	{touch screen}, {joystick}, {digitising tablet}, microphone;
	others are sensors or transducers which convert external
	signals into data, e.g. using an {ananlog to digital
	converter} (this would also be true of a microphone).  Other
	kinds of inputs are really one half of a bidirectional link
	with another computer or storage device, e.g. {serial line},
	{SCSI} interface.

	(03 Nov 1996)

input/output redirection

	<operating system> In {Unix}, to send ouput from a {process}
	to a {file} or {device} or to another process via a {pipe}, or
	to have a process read its input from a file, device or pipe.
	Some other {operating systems} have similar facilities.

	(15 Jul 1997)

inquiry/response system

	<business> Any computer system in which data is entered
	{offline} and processed in {batch} form, but information can
	be retrieved online.  An example is the checking of credit
	cards.

	["Computer Information Systems for Business V", Thomas Dock
	and James C Wetherbe, West Publishing Company 1988].

	(24 Jun 1996)

INRIA

	{Institut National de Recherche en Informatique et Automatique}

insanely great

	({Macintosh} community, from {Steve Jobs}; also {BSD Unix}
	people via {Bill Joy}) Something so incredibly {elegant} that
	it is imaginable only to someone possessing the most puissant
	of {hacker}-natures.

	(06 Dec 1994)

insertion sort

	<algorithm> A sorting {algorithm} that inserts each item in
	the proper place into an initially empty list by comparing it
	with each item in the list until it finds the new element's
	successor or the end of the list.

	Compare {bubble sort}.

	(12 Feb 1997)

INSIGHT

	A {simulation} and modeling language especially for health
	care problems.

	["Simulation Modeling with INSIGHT", S.D. Roberts Proc 1983
	Winter Sim Conf, S.D. Roberts et al eds, pp.7-16].

	(03 Mar 1995)

Insignia Solutions, Inc.

	<company> /in-sig'nee-* s*-loosh'nz/ A leading provider of
	{cross-platform} compatibility software for desktop computers,
	including {Unix} {workstations}, {Macintosh}, {IBM PCs}, {X
	terminals}, {Windows terminals} and {network computers}.

	Insignia's {cross-platform} compatibility software allows
	users to run {Microsoft Windows} and {MS-DOS} {application
	programs} on different hardware {platforms}.  The company's
	technology has been specifically developed for {Digital},
	{HP}, {IBM}, {Motorola}, {NeXT}, {Silicon Graphics} and
	{Sun}/{SPARC} {workstations}, {X terminals}, {Java} desktops
	and {Apple Computer}'s {Power Macintosh} and {Motorola
	68000}-based computers.

	Insignia Solutions was founded in 1986 to develop software to
	enable users of non-{Intel} {Unix} computers to run {IBM PC}
	applications.  The company's first product, {SoftPC} 1.0 for
	Sun workstations, was introduced in 1988.  Also in 1988,
	Insignia shipped its first version of SoftPC for Apple
	Computer's Macintosh.  As the demand to run Windows and MS-DOS
	applications on non-Intel computers grew, Insignia Solutions
	signed {OEM} agreements with several companies including {Data
	General}, Digital, {Fujitsu}, HP, {Intergraph Corp.},
	Motorola, Silicon Graphics and Sun Microsystems.

	{Home Page (http://www.insignia.com/)}.

	(23 Jun 1997)

inspection

	<testing> A formal evaluation technique in which software
	{requirements}, design, or code are examined in detail by a
	person or group other than the author to detect faults,
	violations of development standards, and other problems.

	(22 May 1996)

installed user base

	{user base}

installer

	<operating system> A {utility} program to ease the
	installation of another, probably larger, {application}.  It
	is also possible for {hardware} to have an installer accompany
	it, to install any low level {device drivers} required.

	The installer commonly asks the user to enter desired
	configuration options for the main program or hardware, and
	sets up various initialisation files accordingly, as well as
	copying the main program to a {hard disc}.

	Some badly designed operating systems require applications to
	provide an {uninstaller} because of the number of different
	files modified or created during the installation process.

	(09 Feb 1998)

instance variable

	<programming> In {object-oriented programming}, one of the
	variables of a {class template} which may have a different
	value for each {object} of that {class}.  Instance variables
	hold the {state} of an object.

	(16 Jan 1998)

instantiate

	{instantiation}

instantiation

	<programming> Producing a more defined version of some object
	by replacing variables with values (or other variables).

	1. In {object-oriented programming}, producing a particular
	{object} from its {class template}.  This involves allocation
	of a structure with the types specified by the template, and
	initialisation of {instance variable}s with either default
	values or those provided by the class's {constructor}
	function.

	2. In {unification}, (as used in {logic programming}, {type
	checking} and {type inference}), binding a {logic variable}
	({type variable}) to some value (type).

	(28 Mar 1995)

Institute for Global Communications

	(IGC) Provider of computer networking tools for international
	communications and information exchange.  The IGC Networks --
	PeaceNet, EcoNet, ConflictNet and LaborNet -- comprise the
	world's only computer communications system dedicated solely
	to environmental preservation, peace, and human rights.  New
	technologies are helping these worldwide communities cooperate
	more effectively and efficiently.

	Address: 18 De Boom Street, San Francisco, CA 94107 USA.  A
	division of the Tides Foundation, a 501(c)(3) tax-exempt
	organisation.  A founding member of the world-wide Association
	of Progressive Communications (APC).

	{Home (ftp://igc.apc.org)}

	E-mail: <support@igc.apc.org>.

	(24 Jun 1996)

Institute of Electrical and Electronics Engineers, Inc.

	(IEEE) The world's largest technical professional society,
	based in the USA.  Founded in 1884 by a handful of
	practitioners of the new electrical engineering discipline,
	today's Institute has more than 320,000 members who
	participate in its activities in 147 countries.  The IEEE
	sponsors technical conferences, symposia and local meetings
	worldwide, publishes nearly 25% of the world's technical
	papers in electrical, electronics and computer engineering and
	computer science, provides educational programs for its
	members and promotes standardisation.  Areas covered include
	aerospace, computers and communications, biomedical
	technology, electric power and consumer electronics.

	{Home (http://www.ieee.org/)}.
	{Gopher (gopher://gopher.ieee.org/)}.
	{(ftp://ftp.ieee.org/)}.

	E-mail file-server: <fileserver-help@info.ieee.org>.

	{ IEEE Standards Process Automation (SPA) System
	(http://stdsbbs.ieee.org/)},
	{telnet	(telnet:stdsbbs.ieee.org)} [140.98.1.11].

	(10 Mar 1995)

Institut National de Recherche en Informatique et Automatique

	<body> (INRIA) A French computer science research institute.

	(24 Jun 1996)

Instruction Address Register

	(IAR) The {IBM} name for {program counter}.

	The IAR can be accessed by way of a {supervisor} call in
	{supervisor state}, but cannot be directly addressed in
	{problem state}.

	(21 Mar 1995)

instruction mnemonic

	<programming> A word or acronym used in {assembly language} to
	represent a {binary} machine instruction {operation code}.
	Different processors have different {instruction set} and
	therefore use a different set of {mnemonics} to represent
	them.

	E.g. ADD, B (branch), BLT (branch if less than), {SVC}, MOVE,
	LDR (load register).

	(18 Feb 1997)

instruction prefetch

	A technique which attempts to minimise the time a processor
	spends waiting for instructions to be fetched from memory.
	Instructions following the one currently being executed are
	loaded into a prefetch queue when the processors extenal bus
	is otherwise idle.  If the processor executes a branch
	instruction or receives an {interrupt} then the queue must be
	flushed and reloaded from the new address.

	Instruction prefetch is often combined with {pipelining}.

	The latest versions of the {Motorola 680x0} and {Intel 80x86}
	use pre-fetching.

	[Which versions?  Other processors?  Relation to pipelining?]

	(16 Feb 1995)

instruction scheduling

	The {compiler} phase that orders instructions on a
	{pipelined}, {superscalar}, or {VLIW} architecture so as to
	maximise the number of function units operating in parallel
	and to minimise the time they spend waiting for each other.

	Examples are filling a {delay slot}; interspersing
	{floating-point} instructions with integer instructions to
	keep both units operating; making adjacent instructions
	independent, e.g. one which writes a register and another which
	reads from it; separating memory writes to avoid filling the
	{write buffer}.

	Norman P. Jouppi and David W. Wall, {"Available
	Instruction-Level Parallelism for Superscalar and
	Superpipelined Processors"
	(ftp://gatekeeper.dec.com/archive/pub/DEC/WRL/research-reports/WRL-TR-89.7.ps.Z)},
	Proceedings of the Third International Conference on
	Architectural Support for Programming Languages and Operating
	Systems, pp. 272--282, 1989.

	[The SPARC Architecture Manual, v8, ISBN 0-13-825001-4]

instruction set architecture

	(ISA) The programmer-visible portions of a {processor}'s
	architecture, such as the {machine language} instructions and
	{register}s.  Parts of the architecture that are left to the
	implementation, such as number of {superscalar} {functional
	unit}s, {cache} size, and {cycle} speed, are not part of the
	ISA.

	The definition of {SPARC}, for example, carefully
	distinguishes between an implementation and a specification.

	(22 Nov 1994)

Instruction Set Processor

	<language> (ISP) A family of languages for describing the
	{instruction set}s of computers.

	["Computer Structures: Readings and Examples", D.P. Siewiorek
	et al, McGraw-Hill 1982].

	(12 Oct 1995)

instrument

	<programming> To install devices or instructions into hardware
	or software to monitor the operation of a system or component.

	(22 May 1996)

INTCODE

	A low-level interpreted language used in {bootstrapping} the
	{BCPL} compiler.  The INTCODE machine has six control
	{register}s and eight functions.  {OCODE} was used as the
	intermediate language.

	["INTCODE - An Interpretive Machine Code for BCPL",
	M. Richards, Computer Lab, U Cambridge 1972].

	["BCPL - The Language and its Compiler", Martin Richards &
	Colin Whitby-Stevens, Cambridge U Press 1979].

integer

	<mathematics> (Or "whole number") One of the finite numbers in
	the infinite set

		..., -3, -2, -1, 0, 1, 2, 3, ...

	An {inductive definition} of an integer is a number which is
	either zero or an integer plus or minus one.  An integer is a
	number with no fractional part.  If written in as a
	{fixed-point} number, the part after the decimal (or other
	base) point will be zero.

	A {natural number} is a non-negative integer.

	(25 Mar 1995)

Integer SPECbaserate

	{SPECrate_base_int92}

Integer SPECbaseratio

	{SPECbase_int92}

Integer SPECrate

	{SPECrate_int92}

Integer SPECratio

	{SPECint92}

integrated circuit

	<electronics> (IC, or "chip") A microelectronic
	{semiconductor} device consisting of many interconnected
	transistors and other components.  ICs are constructed
	("fabricated") on a small rectangle (a "die") cut from a
	Silicon (or for special applications, Sapphire) wafer.  This
	is known as the "substrate".  Different areas of the substrate
	are "doped" with other elements to make them either "p-type"
	or "n-type" and polysilicon or aluminium tracks are etched in
	one to three layers deposited over the surface.  The die is
	then connected into a package using gold wires which are
	welded to "pads", usually found around the edge of the die.

	Integrated circuits can be classified into analogue, digital
	and hybrid (both analogue and digital on the same chip).
	Digital integrated circuits can contain anything from one to
	millions of {logic gates} - {inverters}, {AND}, {OR}, {NAND}
	and {NOR} gates, {flip-flops}, {multiplexors} etc. on a few
	square millimeters.  The small size of these circuits allows
	high speed, low power dissipation, and reduced manufacturing
	cost compared with board-level integration.

	The first integrated circuits contained only a few
	{transistors}.  Small Scale Integration ({SSI}) brought
	circuits containing transistors numbered in the tens.  Later,
	Medium Scale Integration ({MSI}) contained hundreds of
	transistors.  Further development lead to Large Scale
	Integration ({LSI}) (thousands), and VLSI (hundreds of
	thousands and beyond).  In 1986 the first one {meagbyte} {RAM}
	was introduced which contained more than one million
	transistors.

	LSI circuits began to be produced in large quantities around
	1970 for computer main memories and pocket calculators.  For
	the first time it became possible to fabricate a {CPU} or even
	an entire {microprocesor} on a single integrated circuit.  The
	most extreme technique is {wafer-scale integration} which uses
	whole uncut wafers as components.

	(03 Jul 1997)

Integrated Database Management System

	<database> (IDMS) A network {DBMS} written by the staff of
	B.F.Goorich (Akron, Ohio, USA) circa 1972 and sold to
	{Cullinet} (Originally Cullinane, now part of {Computer
	Associates}).

	IDMS was licensed to {ICL} in 1976 for porting to, and
	subsequent development on, their computers.  It was
	implemented on the {ICL 1900} Series ({DME} {George 2},
	{George 3}, {CME}, {TME}), {System 4}, and {ICL 2900} Series
	(later Series 39 Corporate Servers).  The latest version runs
	on Series 39 {OpenVME} as IDMSX (IDMS extended).

	(19 Apr 1995)

Integrated Drive Electronics

	<hardware, standard> (IDE) A disk interface {standard} based
	on the {IBM PC} {ISA} 16-bit {bus} but also used on other
	{personal computer}s.  The IDE specification deals with the
	power and data signal interfaces between the {motherboard} and
	the integrated disk controller and drive.  The IDE "bus" only
	supports two devices - master and slave.

	IDE drives may in fact use any physical interface the
	manufacturer desires, so long as an embedded translator is
	included with the proper IDE interface.  IDE "controllers" are
	actually direct connections to the ISA bus.

	The IDE interface was invented by {Compaq} around 1986, and
	was developed with the help of {Western Digital}, {Imprimis},
	and then-upstart {Conner Peripherals}.  Efforts to codify the
	interface specification started in 1988; the first draft
	appeared in March 1989, and a finished version was sent to
	{ANSI} (who call it {Advanced Technology Attachment}) for
	ratification in November 1990.

	See also {EIDE}.

	(21 Mar 1996)

Integrated Information Technology

	(IIT) A Santa Clara based company producing a programmable,
	single chip solution for {H.261} and {MPEG}.  The chip
	contains a {RISC} processor, originally based on the {MIPS}
	architecture but now called {RISCit}, and a {Pixel Processor}.

	(03 Nov 1994)

Integrated Services Digital Network

	<communications> (ISDN) A set of communications {standards}
	allowing a single wire or {optical fibre} to carry voice,
	digital network services and video.  ISDN is intended to
	eventually replace the {plain old telephone system}.

	ISDN was first published as one of the 1984 {ITU-T} {Red Book}
	recommendations.  The 1988 {Blue Book} recommendations added
	many new features.  ISDN uses mostly existing {Public Switched
	Telephone Network} (PSTN) switches and wiring, upgraded so
	that the basic "call" is a 64 kilobits per second, all-digital
	end-to-end channel.  {Packet} and {frame} modes are also
	provided in some places.

	There are different kinds of ISDN connection of varying
	bandwidth (see {DS level}):

		DS0  =    1 channel  PCM at      64 kbps
	 T1  or DS1  =   24 channels PCM at   1.54  Mbps
	 T1C or DS1C =   48 channels PCM at   3.15  Mbps
	 T2  or DS2  =   96 channels PCM at   6.31  Mbps
	 T3  or DS3  =  672 channels PCM at  44.736 Mbps
	 T4  or DS4  = 4032 channels PCM at 274.1   Mbps

	Each channel here is equivalent to one voice channel.  DS0 is
	the lowest level of the circuit.  T1C, T2 and T4 are rarely
	used, except maybe for T2 over microwave links.

	A {Basic Rate Interface} (BRI) is two 64K "bearer" channels
	and a single "delta" channel ("2B+D").  A {Primary Rate
	Interface} (PRI) in North America and Japan consists of 24
	channels, usually 23 B + 1 D channel with the same physical
	interface as T1.  Elsewhere the PRI usually has 30 B + 1 D
	channel and an {E1} interface.

	A {Terminal Adaptor} (TA) can be used to connect ISDN channels
	to existing interfaces such as {RS-232} and {V.35}.

	Different services may be requested by specifying different
	values in the "Bearer Capability" field in the call setup
	message.  One ISDN service is "telephony" (i.e. voice), which
	can be provided using less than the full 64 kbps bandwidth (64
	kbps would provide for 8192 eight bit samples per second) but
	will require the same special processing or {bit diddling} as
	ordinary PSTN calls.  Data calls have a Bearer Capability of
	"64 kbps unrestricted".

	ISDN is offered by local telephone companies, but most readily
	in Australia, France, Japan and Singapore, with the UK
	somewhat behind and availability in the USA rather spotty.

	(In March 1994) ISDN deployment in Germany is quite
	impressive, although (or perhaps, because) they use a
	specifically German signalling specification, called {1.TR.6}.
	The French {Numeris} also uses a non-standard protocol (called
	{VN4}; the 4th version), but the popularity of ISDN in France
	is probably lower than in Germany, given the ludicrous
	pricing.  There is also a specifically-Belgian V1 experimental
	system.  The whole of Europe is now phasing in {Euro-ISDN}.

	See also {Frame Relay}, {Network Termination}, {SAPI}.

	A {FAQ} is available by
	{(ftp://src.doc.ic.ac.uk/usenet/news-info/comp.dcom.isdn/)}.

	{Usenet} newsgroup: {news:comp.dcom.isdn}.

	[Do people ever call 64 kbps "T-0"?]

	(06 Dec 1994)

Integrated Systems Architecture

	(ISA for {ODP}) An {Esprit} 2 project continuing the {ANSA}
	project.

	(21 Feb 1995)

integration

	<programming> Combining software or hardware components or
	both into an overall system.

	(22 May 1996)

integration testing

	<testing> testing in which software and/or hardware components
	are combined and tested progressively until the entire system
	has been integrated.

	(22 May 1996)

integrity constraint

	<database> A {constraint} (rule) that must remain true for a
	{database} to preserve {integrity}.  Integrity constraints are
	specified at database creation time and enforced by the
	{database management system}.

	Examples from a genealogical database would be that every
	individual must be their parent's child or that they can have
	no more than two natural parents.

	(11 Nov 1995)

Intel 4004

	<processor> The world's first {microprocessor}, released in
	1971.  The 4004 contained 2300 transistors (compared with 5.5
	million in the 1996 {Pentium Pro}) and was intended for use in
	a calculator.  It processed data in 4 bits, but its
	instructions were 8 bits long.  Program and Data memory were
	separate, it had 1 {kilobyte} of data memory and a 12-bit {PC}
	for 4K of program memory (in the form of a 4 level {stack},
	used for CALL and RET instructions).  There were also sixteen
	4-bit (or eight 8-bit) general purpose {registers}.  The 4004
	had 46 instructions.

	(30 Mar 1997)

Intel 4040

	<processor> An enhanced version of the {Intel 4004}, adding 14
	instructions, larger (8 level) {stack}, 8 kbyte program memory
	and {interrupt} abilities (including shadows of the first 8
	{register}s).  The 4040 was similar to the {Intel 8008}.

	(31 Oct 1994)

Intel 486

	<processor> (Or "i486", "iAPX 80486", and "Intel DX4" but
	usually just "486").  A range of {Intel} {CISC}
	{microprocessor}s which is part of the {Intel 80x86} family of
	processors.

	The 486s are very similar to their immediate predecessor, the
	{Intel 80386}DX.  The main differences are that the 486 has an
	optimised {instruction set}, has an on-chip unified
	instruction and data {cache}, an optional on-chip
	{floating-point unit} (FPU), and an enhanced {bus interface
	unit}.  These improvements yield a rough doubling in
	performance over an {Intel 80386} at the same {clock rate}.

	There are several suffixes and variants including:

	{Intel 486SX} - a 486DX with its {FPU} disabled (see
	{crippleware}).

	{Intel 486DX} - 486SX with a working {FPU}.

	486DX-2 - runs at twice the external {clock rate}.

	486SX-2 - runs at twice the external {clock rate}.

	486SL - 486DX with power conservation circuitry.

	486SL-NM - 486SX with power conservation circuitry; SL
	enhanced suffix, denotes a 486 with special power conservation
	circuitry similar to that in the 486SL processors.

	487 - 486DX with a slightly different pinout for use in 486SX
	systems.

	OverDrive - 486DX-2 with a slightly different pinout for use
	in 486SX systems.

	{RapidCAD} - 486DX in a special package with a companion {FPU}
	dummy package for use in {Intel 80386} systems.

	{Intel DX4}, {Cyrix} {Cy486SLC}.

	External {clock rate}s include 16MHz, 20MHz, 25MHz, 33MHz,
	40MHz, although 16Mhz is rare now, and the 20MHz processors
	are often clock doubled.

	The 486 processor has been licensed or reverse engineered by
	other companies such as {IBM}, {AMD}, {Cyrix}, and {Chips &
	Technologies}.  Some are almost exact duplicates in
	specications and performance, some aren't.

	The successor to the 486 is the {Pentium}.

	(21 Feb 1995)

Intel 486DX

	<processor> One of {Intel}'s {Intel 486} family of
	{microprocessors} (one of the last before the {Pentium}).  The
	486DX has a working built-in {floating point unit} (FPU).  The
	{Intel 486SX} is effectively a DX with the FPU disabled.  The
	DX has a pin to select the external {data bus} width (16 or
	32).

	The {Intel 487SX} is a 486DX with a 486SX pinout.

	(09 May 1995)

Intel 486SX

	<processor> An {Intel 486DX} {microprocessor} with its
	{floating-point unit} disconnected.  All 486SX chips were
	fabricated with FPUs.  If testing showed that the CPU was OK
	but the FPU was defective, the FPU's power and bus connections
	were destroyed with a laser and the chip was sold cheaper as
	an SX, if the FPU worked it was sold as a DX.

	[Was this true of all 486SX chips?]

	Some systems, e.g. Aopen 486SX, allowed a DX to be plugged
	into an expansion socket.  A board jumper would disable the SX
	which was hard to remove because it was surface mounted.

	Some SX chips only had a 16-bit wide external {data bus}.  The
	DX has a pin to select the data bus width (16 or 32).  On the
	smaller SX, that line is hardwired to 16 inside the package.
	This is similar to the 286 SX, which was a 16-bit processor
	with an 8-bit external data bus.

	The {Jargon File} claimed that the SX was deliberately
	disabled {crippleware}.  The German computer magazine, "c't",
	made this same theory the basis of an {April Fools Joke}.
	They claimed that if one drilled a hole of a specified
	diameter through the right point on a SX chip, this would
	brake the circuit that disables the FPU.  Some people actually
	tried (and then bought themselves new processors).

	(14 Feb 1997)

Intel 487SX

	<processor> A version of the {Intel 486DX} {microprocessor}
	with an extra pin, for use in the {coprocessor} socket of an
	{Intel 486SX} system.  The 487SX provides the {FPU} which is
	missing in the 486SX.

	Although the 486SX is completely disabled when you install a
	487SX, the 487SX design requires that you leave the 486SX in
	your PC [why?], rather than use it elsewhere.  Intel admits
	that in some systems you can unplug the 486SX and fit a 487SX
	in its place but they don't guarantee that it will always
	work.

	See {Intel 486}.

	(10 May 1995)

Intel 8008

	<processor> A {microprocessor} intended for use as a terminal
	controller, and similar to the {Intel 4040}.  The 8008 had a
	14-bit {PC} and addressing and an eight level internal
	{stack}.  It was followed by the {Intel 8080}.

	[Date?]

	(31 Oct 1994)

Intel 80186

	<processor> A {microprocessor} developed by {Intel} circa
	1982.  The 80186 was an improvement on the {Intel 8086} and
	{Intel 8088}.  As with the 8086, it had a 16-bit external bus
	and was also available as the {Intel 80188}, with an 8 bit
	external data bus.  The initial {clock rate} of the 80186 and
	80188 was 6 MHz.  They were not used in many computers, but
	one notable exception was the {Mindset}, a very advanced
	computer for the time.  They were used as {embedded
	processor}s.

	One major function of the 80186/80188 series was to reduce the
	number of chips required.

	"To satisfy this market, we defined a processor with a
	significant performance increase over the 8086 that also
	included such common peripheral functions as
	software-controlled wait state and chip select logic, three
	timers, priority interrupt controller, and two channels of DMA
	(direct memory access).  This processor, the 80186, could
	replace up to 22 separate VLSI (very large scale integration)
	and TTL (transistor-transistor logic) packages and sell for
	less than the cost of the parts it replaced."

	-- Paul Wells of Intel Corporation writing in Byte, November,
	1984, page 231, article titled "The 80286 Microprocessor".

	New instructions were also introduced as follows:

	 ENTER	Make stcak frame for procedure parameters
	 LEAVE	High-level procedure exit
	 PUSHA	Push all general registers
	 POPA	Pop all general registers
	 BOUND	Check array index against bounds
	 IMUL	Signed (integer) multiply
	 INS	Input from port to string
	 OUTS	Output string to port

	["The Evolution of the iAPX 286", Bob Greene, Intel
	Corporation, PC Tech Journal, December 1984, page 134].

	(13 Jan 1995)

Intel 80188

	<processor> A version of the {Intel 80186} with an 8 bit
	external data bus (instead of 16 bit).  This makes it cheaper
	to connect to peripherals.

	(13 Jan 1995)

Intel 80286

	<processor> (Or "286", "i286") A {microprocessor} developed by
	{Intel}.  THe 80286 processor has a 16-bit {data bus} and
	incorporates a {memory management unit} that allowed a limited
	amount of {multitasking}.  The 80286 only has a segmented MMU
	while the later processors add a {page}d MMU "behind" the
	segmented one.

	The 80286 was the processor in the {IBM PC AT} {personal
	computer}.

	(21 Feb 1995)

Intel 80386

	<process> (Commonly abbreviated to "386", trademark
	"Intel386") {Intel}'s successor to the {80286}
	{microprocessor}.  It was the first Intel processor with
	32-bit data and address {bus}ses.  It can address four
	gigabytes (2^32 bytes) of memory; however, 16 megabytes is a
	typical maximum in {IBM PC}s.  The 386 allows multiple
	applications to run at the same time (when running under
	386-specific {operating system}s) using "{protected mode}".

	The first {IBM-compatible} to use the 386 was the {Compaq}
	386, before {IBM} used it in high-end models of their {PS/2}
	series.  It is also used in {HP}'s {RS} series and many
	others.

	It does not require special {EMS} memory boards to expand
	{MS-DOS} memory limits.  With the 386, the EMS standard can be
	simulated in normal {extended memory}, and all many DOS
	add-ons provide this "Expanded Memory Manager" feature.

	See also {Intel 80386SX}, {BSD386}.

	(21 Feb 1995)

Intel 80386SX

	<processor> A lower-speed version of the {Intel 80386}.  It
	uses a 16-bit data bus instead of a 32-bit data bus.  It is
	faster than the 286, and more importantly, like the full-size
	386, provides more flexibility in running existing DOS
	applications.

	(12 May 1995)

Intel 80486

	{Intel 486}

Intel 8080

	<processor> The successor to the {Intel 8008}.  The 8080 had a
	16-bit {address bus} and an 8-bit {data bus}.  It had seven
	8-bit {registers} (six which could also be combined as three
	16-bit registers), a 16-bit {stack pointer} to memory which
	replaced the 8008's internal stack and a 16-bit {program
	counter}.  It also had 256 I/O ports (so I/O devices could be
	connected without needing to allocate any addressing space as
	is required for {memory mapped} devices) and a signal pin that
	allowed the {stack} to occupy a separate bank of memory.

	Shortly after the 8080, the {Motorola 6800} was introduced.

	[Date?]

	(31 Oct 1994)

Intel 8085

	<processor> A {microprocessor} intended to be an improved
	{Intel 8080}, as was the {Zilog Z80}.

	(31 Oct 1994)

Intel 8086

	<processor> A sixteen bit {microprocessor} chip used in early
	{IBM PC}s.  The {Intel 8088} was a version with an eight bit
	external data bus.

	The Intel 8086 was based on the design of the {Intel 8080} and
	{Intel 8085} (it was {source compatible} with the 8080) with a
	similar {register set}, but was expanded to 16 bits.  The Bus
	Interface Unit fed the instruction stream to the Execution
	Unit through a 6 byte {prefetch} queue, so fetch and execution
	were concurrent - a primitive form of {pipelining} (8086
	instructions varied from 1 to 4 bytes).

	It featured four 16-bit general {register}s, which could also
	be accessed as eight 8-bit registers, and four 16-bit {index
	registers} (including the {stack pointer}).  The data
	registers were often used implicitly by instructions,
	complicating {register allocation} for temporary values.  It
	featured 64K 8-bit I/O (or 32K 16 bit) ports and fixed
	{vectored interrupts}.  There were also four {segment
	registers} that could be set from index registers.

	The segment registers allowed the CPU to access 1 meg of
	memory in an odd way.  Rather than just supplying missing
	bytes, as most segmented processors, the 8086 actually shifted
	the segment registers left 4 bits and added it to the address.
	As a result, segments overlapped, and it was possible to have
	two pointers with the same value point to two different memory
	locations, or two pointers with different values pointing to
	the same location.  Most people consider this a {brain
	damaged} design.

	Although this was largely acceptable for {assembly language},
	where control of the segments was complete (it could even be
	useful then), in higher level languages it caused constant
	confusion (e.g. near/far pointers).  Even worse, this made
	expanding the address space to more than 1 meg difficult.  A
	later version, the {Intel 80386}, expanded the design to 32
	bits, and "fixed" the segmentation, but required extra modes
	(suppressing the new features) for compatibility, and retains
	the awkward architecture.  In fact, with the right assembler,
	code written for the 8008 can still be run on the most recent
	{Intel 486}.

	The {Intel 80386} added new {op code}s in a kludgy fashion
	similar to the {Zilog Z80} and {Zilog Z280}.  The {Intel
	486} added full {pipeline}s, and {clock doubling} (like the
	{Zilog Z280}).

	So why did {IBM} chose the 8086 series when most of the
	alternatives were so much better?  Apparently IBM's own
	engineers wanted to use the {Motorola 68000}, and it was used
	later in the forgotten {IBM Instruments} 9000 Laboratory
	Computer, but IBM already had rights to manufacture the 8086,
	in exchange for giving Intel the rights to its {bubble memory}
	designs.  Apparently IBM was using 8086s in the IBM
	{Displaywriter} {word processor}.

	Other factors were the 8-bit {Intel 8088} version, which could
	use existing {Intel 8085}-type components, and allowed the
	computer to be based on a modified 8085 design.  68000
	components were not widely available, though it could use
	{Motorola 6800} components to an extent.

	{Intel} {bubble memory} was on the market for a while, but
	faded away as better and cheaper memory technologies arrived.

	(23 Dec 1994)

Intel 8088

	<processor> An {Intel 8086} with 16-bit {register}s and an
	8-bit data bus.

	The 8088 was the processor used in the original {IBM PC}.

	(21 Feb 1995)

Intel 80x86

	<processor> One of the family of {Intel} {microprocessors}
	including the {Intel 80186}, {Intel 80286}, {Intel 80386},
	{Intel 486}, and maybe {Intel 8086} or {Pentium}.

	(25 Nov 1995)

Intel 8751

	<processor> A {microcontroller} from {Intel} including a
	{CPU}, two timers.  128 bytes of {RAM}, 4 kBytes of {EEPROM},
	four eight bit biderectional I/O ports and an {RS-232} port.

	The 8751 belongs to the Intel i51 Microcontroller family.  It
	was designed by Intel but is now manufactured by Intel,
	{Philips}, {Siemens}, {AMD} and others.  Motorola's
	microcontroller families (68HC05, 68HC08 and 68HC11) are meant
	to compete with the i51 family.

	(22 Apr 1995)

Intel Comparative Microprocessor Performance index

	<benchmark, unit> (iCOMP) A unit used by {Intel} to indicate
	the relative performance of their {80x86} {microprocessors}.

	{(http://134.134.214.1/procs/perf/icomp/)}.

	(07 Jun 1997)

Intel Corporation

	<company> A US microelectronics manufacturer.  They produced
	the {Intel 4004}, {Intel 8080}, {Intel 8086}, {Intel 80186},
	{Intel 80286}, {Intel 80386}, {Intel 486} and {Pentium}
	{microprocessor} families as well as many other {integrated
	circuit}s and {personal computer} networking and
	communications products.

	Gordon Moore and Robert Noyce founded Intel in 1968 to design,
	manufacture, and market semiconductor computer memory to
	replace {magnetic core} memory, the dominant computer memory
	at that time.  Dr. Andrew S. Grove joined Intel soon after its
	incorporation.  Three years later, in 1971, Intel introduced
	the world's first {microprocessor}, the {Intel 4004}.

	Intel has design, development, production, and administration
	facilities throughout the western US, Europe and Asia.  In
	1995 nearly 75% of the world's {personal computer}s use Intel
	architecture.  Annual revenues are rapidly approaching $10
	billion.  In March, 1994, "Business Week" named Intel one of
	the top ten American companies in terms of profit, one of the
	top 15 market value winners, and 16th out of the magazine's
	top 1,000 companies overall.

	Intel invested a record $2.9 billion in capital and R&D in
	1993, and expects to increase combined spending on these
	activities to $3.5 billion in 1994.  Quarterly sales were
	$2770M and profits, $640M in Aug 1994.

	{(http://www.intel.com/)}

	Address: Santa Clara, CA, USA.

	(01 Mar 1995)

IntelDX4

	<processor> Essentially an {Intel 486DX} {microprocessor} with
	a 16 kilobyte on-chip {cache}.

	The DX4 is the fastest member of the {Intel 486} family.  75
	and 100MHz versions are available.  At an iCOMP index rating
	of 435, the 100 MHz DX4 performs up to 50% faster than the 66
	MHz {Intel DX2}.  The DX4's {clock multiplier} allows the
	processor to run three times faster than the {system clock}.
	This performance is achieved in part by a 16K on-chip {cache}
	(double that of the other 486s).  The DX4 has an integrated
	{floating point unit}.

	Like the other 486s, the DX4 achieves performance through a
	{RISC} integer core that executes frequently used instructions
	in a single {clock cycle} (the {Pentium}'s can execute
	multiple instructions in a single clock cycle).

	Low power consumption has been achieved with {SL} Technology
	and a 0.6 micron manufacturing process, giving 1.6 million
	{transistor}s on a single chip operating at only 3.3 Volts.

	"IntelDX4" is the entire name, the "486" has been dropped and
	I am assured that there is no space in the same.

	(28 Apr 1995)

Intel i960

	<processor> A {superscalar} 32-bit {RISC} {microprocessor}
	from {Intel} intended for {embedded} applications.

	The i960 CA variant can reach 66 native MIPS peak performance
	with a sustained execution of two instructions per clock
	cycle.  The i960 CF has an on-chip, four kilobyte two-way
	{set-associative} {instruction cache} and a one kilobyte {data
	cache}.  Both the CA and CF processors have on-chip {RAM}; a
	four-channel {DMA} unit; and integrated peripherals.

	(23 May 1996)

INTELLECT

	<language> A {query language} written by Larry Harris in 1977,
	close to natural English.

	(14 Apr 1995)

intellectual property

	<legal> (IP) The ownership of ideas and control over the
	tangible or virtual representation of those ideas.  Use of
	another person's intellectual property may or may not involve
	royalty payments or permission, but should always include
	proper credit to the source.

	(27 Mar 1997)

intelligent backtracking

	<algorithm> An improved {backtracking} {algorithm} for
	{Prolog} {interpreters}, which records the point at which each
	{logic variable} becomes bound and, when a given set of
	bindings leads to failure, ignores any {choice point} which
	does not bind any of those variables.  No choice from such a
	choice point can succeed since it does not change the bindings
	which caused the failure.

	(06 Apr 1996)

Intelligent Input/Output

	<architecture> /i:-too-oh/ (I2O) A specification which aims to
	provide an {I/O} {device driver} architecture that is
	independent of both the specific device being controlled and
	the host {operating system}.  The Hardware Device Module (HDM)
	manages the device and the OS Services Module (OSM) interfaces
	to the host operating system.  The HDM is portable across
	multiple operating systems, processors and busses.  The HDM
	and OSM communicate via a two layer {message passing}
	{protocol}.  A Message Layer sets up a communications session
	and runs on top of a Transport Layer which defines how the two
	parties share information.

	I2O is also designed to facilitate intelligent I/O subsystems,
	with support for {message passing} between multiple
	independent processors.  By relieving the host of {interrupt}
	intensive I/O tasks required by the various layers of a driver
	architecture, the I2O intelligent I/O architecture greatly
	improves I/O performance.  I2O systems will be able to more
	efficiently deliver the I/O throughput required by a wide
	range of high bandwidth applications, such as networked
	{video}, {groupware} and {client-server} processing.  I2O does
	not restrict where the layered modules execute, providing
	support for single processor, {multiprocessor}, and
	{clustered} systems.

	I2O is not intended to replace the driver architectures
	currently in existence.  Rather, the objective is to provide
	an open, standards-based approach, which is complementary to
	existing drivers, and provides a framework for the rapid
	development of a new generation of portable, intelligent I/O.

	{Home (http://www.i2osig.org/)}.

	(04 Nov 1997)

Intelligent I/O

	{Intelligent Input/Output}

intelligent terminal

	<hardware> (or "smart terminal", "programmable terminal") A
	terminal that often contains not only a keyboard and screen,
	but also comes with a disk drive and printer, so it can
	perform limited processing tasks when not communicating
	directly with the central computer.  Some can be programmed by
	the user to perform many basic tasks, including both
	arithmetic and logic operations.  In some cases, when the user
	enters data, the {data} will be checked for errors and some
	type of report will be produced.  In addition, the valid data
	that is entered may be stored on the disk, it will be
	transmitted over communication lines to the central computer.

	An intelligent terminal may have enough computing capability
	to draw graphics or to offload some kind of front-end
	processing from the computer it talks to.

	The development of {workstation}s and {personal computer}s has
	made this term and the product it describes semi-obsolescent,
	but one may still hear variants of the phrase "act like a
	smart terminal" used to describe the behaviour of workstations
	or PCs with respect to programs that execute almost entirely
	out of a remote {server}'s storage, using said devices as
	displays.

	The term once meant any terminal with an {addressable cursor};
	the opposite of a {glass tty}.  Today, a terminal with merely
	an addressable cursor, but with none of the more-powerful
	features mentioned above, is called a {dumb terminal}.

	There is a classic quote from Rob Pike (inventor of the {blit}
	terminal): "A smart terminal is not a smart*ass* terminal, but
	rather a terminal you can educate".  This illustrates a common
	design problem: The attempt to make peripherals (or anything
	else) intelligent sometimes results in finicky, rigid "special
	features" that become just so much dead weight if you try to
	use the device in any way the designer didn't anticipate.
	Flexibility and programmability, on the other hand, are
	*really* smart.

	Compare {hook}.

	(14 Apr 1995)

Intel Literature Sales

	Address: PO Box 58130, Santa Clara, CA 95052, USA.

	Telephone: +1 800 548 4725.

	(12 Jan 1995)

Intelsat

	{International Satellite Agency}

intensional

	<philosophy> Intensional properties, e.g. intensional
	equality, relate to how an object is implemented as opposed to
	extensional properties which concern only how its output
	depends on its input.

	(12 Jan 1995)

INTERACTIVE

	A network simulation language.

	["Design and Implementation of a Pascal Based Interactive
	Network Simulation Language", R. Lakshmanan, PhD Thesis,
	Oakland U, Rochester MI 1983].

	(12 Jan 1995)

interactive

	<programming> A term describing a program whose input and
	output are interleaved, like a conversation, allowing the
	user's input to depend on earlier output from the same run.

	The interaction with the user is usually conducted through
	either a text-based interface or a {graphical user interface}.
	Other kinds of interface, e.g. using {speech recognition}
	and/or {speech synthesis}, are also possible.

	This is in contrast to {batch} processing where all the input
	is prepared before the program runs and so cannot depend on
	the program's output.

	(21 Jun 1996)

Interactive CourseWare

	(ICW) A training program controlled by a computer that relies
	on trainee input to determine the order and pace of
	instruction delivery.  The trainee advances through the
	sequence of instructional events by making decisions and
	selections.  The instruction branches according to the
	trainee's responses.

	ICW is a US military term which includes1 {computer-aided
	instruction} and {computer-based training}.

	(08 Nov 1995)

Interactive Data Entry/Access

	<language> (IDEA) A language from {Data General} in which you
	designed the screen first, and then wrote the program around
	the predefined fields.  IDEA was a precursor to the {DG COBOL}
	{Screen Section}.

	(16 Feb 1996)

Interactive Data Language

	(IDL) A commercial {array}-oriented language with numerical
	analysis and display features, first released in 1977.  It
	supports interactive {reduction}, analysis, and
	{visualisation} of scientific data.  It is sold by {Research
	Systems, Inc.}

	Version: 3.6.1 runs under {Unix}, {MS-DOS}, {MS Windows},
	{VAX}/{VMS} and {Macintosh}.

	Not to be confused with any of the other {IDL}s.

	{(ftp://gateway.rs.inc.com/pub/idl)}.

	E-mail: <info@rsinc.com>.

	(07 Oct 1994)

interactive development environment

	<programming, tool> (IDE) A system for supporting the process
	of writing software.  Such a system may include a
	{syntax-directed editor}, graphical tools for program entry,
	and integrated support for compiling and running the program
	and relating compilation errors back to the {source}.

	Examples include {Visual C++} and {Visual Basic}.

	(04 Mar 1996)

Interactive Development Environments

	2. <company> (IDE) A US {software engineering} company.

	(04 Mar 1996)

Interactive Software Engineering

	<company> (ISE) The company set up by {Bertrand Meyer}, now
	its president, to develope and distribute {Eiffel}, the
	language which he created.  The latest version is ISE Eiffel
	version 3.3.  ISE also organises the {TOOLS} conference
	(Technology of Object-Oriented Languages and Systems).

	{Home (http://www.eiffel.com/)}

	E-mail: info@eiffel.com.

	Telephone: +1 (805) 685 1006.

	Address: Santa Barbara, Goleta CA, USA.

	(28 Dec 1995)

Interactive Voice Response

	<communications> (IVR) <communications> A {telecommunications}
	system, prevelant with {PBX} and {voice mail} systems, that
	uses a prerecorded database of voice messages to present
	options to a user, typically over telephone lines.  User input
	is retrieved via {DTMF} tone key presses.

	When used in conjunction with {voice mail}, for example, these
	systems typically allow users to store, retrieve, and route
	messages, as well as interact with an underlying {database}
	server which may allow for automated transactions and {data
	processing}.

	(15 Sept 1997)

	(21 Sep 1997)

Interagency Interim National Research and Education Network

	(IINREN) An evolving operating network system.  Near term
	(1992-1996) research and development activities will provide
	for the smooth evolution of this networking infrastructure
	into the future gigabit {NREN}.

	(06 Dec 1994)

InterBase

	A commercial {active DBMS}.

INTERCAL

	<language, humour> /in't*r-kal/ (Said by the authors to stand
	for "Compiler Language With No Pronounceable Acronym").

	Possibly the most elaborate and long-lived joke in the history
	of programming languages.  It was designed on 26 May 1972 by
	Don Woods and Jim Lyons at Princeton University.

	INTERCAL is purposely different from all other computer
	languages in all ways but one; it is purely a written
	language, being totally unspeakable.  The INTERCAL Reference
	Manual, describing features of horrifying uniqueness, became
	an underground classic.  An excerpt will make the style of the
	language clear:

	It is a well-known and oft-demonstrated fact that a person
	whose work is incomprehensible is held in high esteem.  For
	example, if one were to state that the simplest way to store a
	value of 65536 in a 32-bit INTERCAL variable is:

	    DO :1 <- #0$#256

	any sensible programmer would say that that was absurd.  Since
	this is indeed the simplest method, the programmer would be
	made to look foolish in front of his boss, who would of course
	have happened to turn up, as bosses are wont to do.  The
	effect would be no less devastating for the programmer having
	been correct.

	INTERCAL has many other peculiar features designed to make it
	even more unspeakable.  The Woods-Lyons implementation was
	actually used by many (well, at least several) people at
	{Princeton}.

	Eric S. Raymond <esr@snark.thyrsus.com> wrote C-INTERCAL in
	1990 as a break from editing _The_New_Hacker's_Dictionary_,
	adding to it the first implementation of {COME FROM} under its
	own name.  The compiler has since been maintained and extended
	by an international community of technomasochists and is
	consequently enjoying an unprecedented level of unpopularity.

	The version 0.9 distribution includes the compiler, extensive
	documentation and a program library.  C-INTERCAL is actually
	an INTERCAL-to-C source translator which then calls the local
	{C} compiler to generate a binary.  The code is thus quite
	portable.

	{Intercal Resource Page
	(http://locke.ccil.org/~esr/intercal/)}.

	{Usenet} newsgroup: {news:alt.lang.intercal}.

	["The INTERCAL Programming Language Reference Manual", Donald
	R. Woods & James M. Lyon].

	(09 Apr 1997)

Interchange File Format

	<file format> (IFF, full name "EA IFF 1985") A generic file
	format published by {Electronic Arts} as an open standard.
	IFF is {chunk}-based and hierarchical so files can include
	other files.  It is easily extensible and an all round Good
	Idea.

	An IFF file starts with one of the following "group IDs":
	'FORM', 'LIST' or 'CAT '.  This is followed by an unsigned
	32-bit number of bytes in the remainder of the file.  Then
	comes an ID that indicates which type of IFF file this is.
	The main image type is {ILBM}, {audio} is either {AIFF} or
	{8SVX}, animations are {ANIM} etc.  An IFF file will probably
	have a {filename extension} related to this file type stored
	in the file.  The rest of the file is divided into {chunks}
	each of which also has a four-byte header and byte count.

	{Microsoft} {WAV} and {AVI} are all based around an almost
	identical scheme to IFF called {RIFF}.  The main difference is
	that, in RIFF files, numbers are little-endian as on {Intel}
	processors, whereas in IFF files they are big-endian, as on
	the {Motorola 68000} processors in the {Amiga} where IFF files
	were first used.

	(23 Jul 1997)

INTERCOM

	<language> The {assembly language} for the {G-15}.

	Versions: INTERCOM 101, INTERCOM 1000.

	[Listed in CACM 2(5):16, May 1959].

	(23 Jul 1997)

Interest Group in Pure and Applied Logics

	(IGPL) A body of 700 researchers in various aspects of {logic}
	(symbolic, mathematical, computational, philosophical, etc.)
	from all over the world.  The group's main rle is as a
	research and information clearing house.  The group also:
	supports exchange of information about research problems,
	references and common interest among group members; helps to
	obtain photocopies of papers; supplies review copies of books
	through the Journals on which some members are editors;
	organises exchange visits and workshops; advises on papers for
	publication; edits and distributes a Newsletter and an
	electronic Bulletin; keeps an {FTP archive} of papers,
	abstracts; obtains reductions on group purchases of logic
	books from publishers.

	{Home (http://theory.doc.ic.ac.uk/tfm/igpl.html)}

	E-mail: <igpl-request@doc.ic.ac.uk>.

	(10 Feb 1995)

interesting

	In hacker parlance, this word has strong connotations of
	"annoying", or "difficult", or both.  Hackers relish a
	challenge, and enjoy wringing all the irony possible out of
	the ancient Chinese curse "May you live in interesting times".

interface

	<jargon> A boundary across which two systems communicate.  An
	interface might be a hardware connector used to link to other
	devices, or it might be a convention used to allow
	communication between two software systems.  Often there is
	some intermediate component between the two systems which
	connects their interfaces together.  For example, two {RS-232}
	interfaces connected via a serial cable.

	See also {graphical user interface}, {Application Program
	Interface}.

	(22 May 1996)

interface analysis

	<testing> A software test which checks the interfaces between
	program elements for consistency and adherence to predefined
	rules or {axioms}.

	(09 Jul 1996)

Interface Architect

	An interface builder for Motif distributed by Hewlett-Packard
	(see UIMX).

Interface Definition Language

	(IDL) 1. An {OSF} standard for defining {RPC} stubs.

	[Details?]

	2. Part of an effort by {Project DOE} at {SunSoft, Inc.}  to
	integrate distributed {object} technology into the {Solaris}
	{operating system}.  IDL provides the standard interface
	between objects, and is the base mechanism for object
	interaction.

	The {Object Management Group}'s {CORBA} 1.1 (Common Object
	Request Broker Architecture) specifies the interface between
	objects.  IDL (Interface Definition Language) is the base
	mechanism for object interaction.

	The SunSoft OMG IDL CFE (Compiler Front End) version 1.2
	provides a complete framework for building CORBA 1.1-compliant
	preprocessors for OMG IDL.  To use it you write a back-end.  A
	complete compiler of IDL would translate IDL into {client}
	side and {server} side routines for remote communication in
	the same manner as {Sun}'s current {RPCL} compiler.  The IDL
	compiler front end allows integration of new back ends which
	can translate IDL to various programming languages.

	Several companies including Sunsoft are building back ends to
	the CFE which translate IDL into target languages,
	e.g. {Pascal} or {C++}, in the context of planned
	CORBA-compliant products.  IDL requires C++ 2.1.

	Not to be confused with any of the other {IDL}s.

	E-mail: <idl-cfe@sun.com>.

	{(ftp://omg.org/pub/omg_idl_cfe.tar.Z)},
	{(ftp://omg.org/pub/OMG_IDL_CFE_1.2/)}.

	Telephone: Mache Creeger, SunSoft, Inc. +1 (415) 336 5884.

	(04 May 1993)

Interface Description Language

	(IDL) A language designed by Nestor, Lamb and Wulf of {CMU} in
	1981 for describing the data structures passed between parts
	of an application, to provide a language-independent
	intermediate representation.

	It forms part of Richard Snodgrass <rts@cs.arizona.edu>'s
	{Scorpion} environment development system.

	Not to be confused with any of the other {IDL}s.

	Mailing list: info-idl@sei.cmu.edu.

	["The Interface Description Language: Definition and Use," by
	Richard Snodgrass, Computer Science Press, 1989, ISBN
	0-7167-8198-0].

	[SIGPLAN Notices 22(11) (Nov 1987) special issue].

	(11 Nov 1994)

Interface Message Processor

	<networking> (IMP) The original {message switching node} on
	the {ARPANET}.

	[More details?]

	(07 Apr 1996)

Interior Gateway Protocol

	(IGP) An {Internet} {protocol} which distributes {routing}
	information to the {router}s within an {autonomous system}.
	The term "{gateway}" is historical, "router" is currently the
	preferred term.

	See also {Exterior Gateway Protocol}, {Open Shortest Path
	First}, {Routing Information Protocol}.

	(09 Nov 1994)

interlace

	Storage or transfer of information such that some parts of the
	information are interspersed between other parts - that is,
	not in a natural sequence.

	The most common use of interlacing is on the display screens
	of televisions and computer {monitor}s.  On an interlaced
	display, the electron beam first scans all the even numbered
	lines and then all the odd numbered lines, covering the whole
	screen in two vertical scans.  This doubles the vertical
	resolution without increasing the scan rate.  The cost of this
	increased resolution is that any given pixel is ony refreshed
	half as often.  This may in turn require a phosphor with a
	higher {persistence} in order for the interlaced display to
	appear free from flicker.

	(25 Jan 1995)

interlaced

	{interlacing}

interlacing

	1. <hardware> A {video} display system which builds an {image}
	on the {VDU} in two phases, known as "fields".  The complete
	image (a "frame") is created by scanning an electron beam in a
	series of evenly spaced horizontal lines across the screen.
	Even numbered {scan lines} are displayed in the first field
	and odd numbered lines in the second field (vertically in
	between the even lines).

	For a given {refresh rate} (frames per second), interlacing
	reduces flicker because the top and bottom of the screen are
	redrawn twice as often as if the scan simply proceded from top
	to bottom in a single vertical sweep.

	2. <graphics> An aspect of graphics storage formats that
	stores {bitmap} image data as a composite of series of passes,
	where (for a 6-pass interlacing, for example), the first pass
	stores the {zeroth} line, the sixth line, the twelfth line,
	etc., then the second pass stores the first, seventh,
	thirteenth, etc. lines, and so on.

	This is useful when such a file is being sent across a slow
	network, such as the {Internet}, in which case an interlaced
	image can be shown initially as a whole low-resolution image
	that increases in resolution as more of the file is received.

	Interlacing in supported in {PNG} and {GIF89}, among other
	formats.  {JPEG} supports a functionally similar concept in
	the form of {Progressive JPEG}.

	(01 Dec 1997)

Interlan

	A brand of {Ethernet} card.

	(09 Nov 1994)

Interleaf

	A document preparation system for {Sun}, {VAX}, {Apollo} and
	other {workstations}.

	(09 Nov 1994)

interleave

	{interleaving}

interleaving

	See {sector interleave}.

	[Other uses?]

INTERLINK

	A commercial product comprising hardware and software for file
	transfer between IBM and VAX computers.

Interlisp

	A dialect of Lisp developed in 1967 by Bolt, Beranek and
	Newman (Cambridge, MA) as a descendant of {BBN-Lisp}.  It
	emphasises user interfaces.  It is currently supported by
	{Xerox PARC}.

	Interlisp was once one of two main branches of LISP (the other
	being {MACLISP}).  In 1981 {Common LISP} was begun in an
	effort to combine the best features of both.  Interlisp
	includes a Lisp programming environment.  It is {dynamically
	scoped}.  NLAMBDA functions do not evaluate their arguments.
	Any function could be called with optional arguments.

	See also {CLISP}, {Interlisp-10}, {Interlisp-D}.

	["Interlisp Programming Manual", W. Teitelman, TR, Xerox Rec
	Ctr 1975].

Interlisp-10

	An {Interlisp} with {shallow binding}.

Interlisp-D

	{Xerox}'s {Interlisp} with {deep binding}.

Intermedia

	A hypertext system developed by a research group at IRIS
	(Brown University).

Intermedia Interchange Format

	A Standard {Hypertext} Interchange format from IRIS.

Intermediate Distribution Frame

	<networking> (IDF) A {network closet} containing a secondary
	{hub}, fed from the main hub.

	(05 May 1995)

Intermediate Programming Language

	<language> A very early attempt by Arthur W. Burks to express
	machine language at a higher level of abstraction.  Like
	{Plankalkl}, it used a right-handed style of {assignment}, in
	which the location appears on the right.

	(09 May 1995)

Intermediate System

	(IS) An {Open Systems Interconnection} system which performs
	{network layer} forwarding.  It is analogous to an {IP}
	{router}.

	(29 Nov 1994)

Intermediate System-Intermediate System

	(IS-IS) The {OSI} {Interior Gateway Protocol}.

Intermetrics, Inc.

	A US software engineering company.  Current and past products
	include {CS-4}, {Red}, {Mwave Developers Toolkit}
	({multimedia} for {IBM PC}), {cross-compiler}s for {C} and
	{C++}; {Ada '83}, {Ada 95}, and {SAMeDL}.  They also supply
	{client/server} systems; custom software applications and
	{turnkey} systems; independent verification and validation;
	{CAE} integration technology; languages and compilers: {Ada},
	{C}, {C++}, {HDL}s ({MHDL}), {Modula}, {HAL/S}, {SPL/1}, and
	others.

	Address: Intermetrics, Inc., 733 Concord Avenue, Cambridge, MA
	02138, USA.  Telephone: +1 (617) 661 1840.  Fax: +1 (617) 868
	2843.

	Address: 7918 Jones Branch Drive, McLean, Va 22102, USA.
	Telephone: +1 (703) 827-2606.  Fax: +1 (703) 827-5560.

	Also Houston, TX, Huntington Beach, CA, Warminster, PA, and
	others.

	{Home (http://www.inmet.com/)}

	E-mail: <ps@wash.inmet.com>.

	(11 Oct 1994)

Internal Translator

	(IT) An early {compiler} for mathematics developed by
	A.J. Perlis et al at Carnegie Tech ca 1957.  IT was originally
	written for the {Burroughs 205}, then the {IBM 650}.

	IT was the forerunner of RUNCIBLE, GATE, CORRELATE and GAT.
	IT source code was converted to PIT, thence to SPIT.  Sammet
	1969, pp.139-141.  Versions: IT-2 produced machine language
	directly, IT-3 developed at Carnegie added double-precision
	{floating-point}.

	[CACM 1(5):22 (1958)].

	(30 Nov 1994)

International Algebraic Language

	{ALGOL 58}

International Business Machines

	<company> (IBM) The best known American computer manufacturer,
	founded by Thomas J. Watson (born 17 Feb 1874), known as "Big
	Blue" after the colour of its logo.  IBM makes everything from
	{mainframes} to {personal computers} (PCs) and has been
	immensely successful in selling them, cheifly to business.  It
	has often been said that "nobody has ever been sacked for
	buying IBM".

	The {IBM PC} in its various versions has been so successful
	that unqualified reference to a "PC" almost certainly means a
	PC from IBM, or one of the many brands of {clone} produced by
	other manufacturers to cash in on IBM's original success.

	Quarterly sales $15351M, profits $689M (Aug 1994).

	{Home (http://www.ibm.com/)}.

	[Why "blue"?]

	(17 Nov 1994)

International Computers Limited plc

	<company> (ICL) A UK hardware and software manufacturer
	specialising in systems integration in selected markets,
	supported by its service and technology businesses.  ICL
	operates in over 80 countries worldwide, with 24000 employees
	and revenues of 2.6 billion in 1993.

	ICL produced {George 2}, {George 3}, {VME}, {OpenVME}, {Series
	39}, {DME}, {CME}, the {ICL 1900} and {ICL 2900} series.

	{Home (http://www.icl.co.uk/)}

	{Usenet} newsgroup: {news:alt.sys.icl}.

	(19 Apr 1995)

International Core War Society

	<games, standard, body> (ICWS) The official standards body for
	{Core War}.

	(16 Feb 1996)

International Data Encryption Algorithm

	<algorithm, cryptography> (IDEA) A conventional {encryption}
	{algorithm}, written by Xuejia Lai and James Massey, in 1992.

	It is a {block cipher}, considered to be the best and most
	secure available, and operates on 64-bit blocks with a 128 bit
	{key}.

	It is used by {Pretty Good Privacy}.

	(07 Mar 1996)

International Electrotechnical Commission

	<standard, body> (IEC) A {standard}isation body at the same
	level as {ISO}.

	[Relationship?  Why separate?]

	(21 Apr 1995)

International Federation for Information Processing

	<body> A multinational federation of professional and technical
	organisations (or national groupings of such organisations)
	concerned with information processing.  From any one country,
	only one such organisation - which must be representative of
	the national activities in the field of information processing
	- can be admitted as a Full Member.  In addition, a regional
	group of developing countries can be admitted as a Full
	Member.  On 1 October 1993, 46 organisations were Full Members
	of the Federation, representing 66 countries.

	IFIP was founded under the auspices of UNESCO and advises them
	and the {ITU-T}.

	{(http://www.dit.upm.es/~cdk/ifip.html)}

	(10 Mar 1995)

International Function Point Users Group

	<body, programming> (IFPUG) A forum for the exchange of ideas
	about {Function Point Analysis}.  IFPUG's membership now
	includes over 500 companies on four continents.

	Telephone: +1 (614) 8957130.

	(10 Mar 1995)

internationalisation

	<programming> (i18n, or localisation, l10n) The set of
	techniques and standards used by different {operating systems}
	to allow {application programs} to automatically adapt their
	{user interface} to different human languages, physical and
	currency units, time zones, etc. as configured by the user.

	The most obvious kinds of internationalisation simply replace
	the text strings appearing in {dialog boxes} and {menus} with
	ones in the appropriate language and {character set}.  More
	complex, and correspondly less frequently supported,
	customisation include such things as direction of printing
	(e.g. right to left, top to bottom) and choice of {shortcut
	keys}.

	The abbreviations i18n for internationalisation and l10n for
	localisation (the preferred {IBM} term) are rather unique,
	being derived from the first and last letters and the number
	of letters elided in between.

	(22 Mar 1995)

internationalization

	{internationalisation}

International Olympiad in Informatics

	<event> (IOI) An annual competition in computing science for
	senior pupils at secondary schools all over the world.

	{Home (http://www.win.tue.nl/win/ioi/)}.

	(07 Dec 1996)

International Organisation for Standardisation

	(ISO) {International Organization for Standardization}.

	[How do they spell it?].

	(10 Mar 1995)

International Organization for Standardization

	<standard, body> (ISO) A voluntary, nontreaty organisation
	founded in 1946, responsible for creating international
	{standard}s in many areas, including computers and
	communications.

	ISO produced the {OSI} seven layer model for network
	architecture.

	Its members are the national standards organisations of 89
	countries, including the {American National Standards
	Institute}.

	The term "ISO" is not actually an acronym for anything.  It is
	a pun on the Greek prefix "iso-", meaning "same".  Some ISO
	documents say ISO is not an acronym even though it is an
	anagram of the initials of the organization's name.

	{Home (http://www.iso.ch/)}.

	(28 Apr 1995)

International Phonetic Alphabet

	<text, human language> (IPA) A system for recording
	pronunciation using only {ASCII}(?) characters.

	 a	short "a", as in "at": the IPA vowel [f] ([ae]
		digraph)
	 a_:	"a" as in "father":  IPA [a]
	 a_-	long "a", as in "sail":	 IPA [ei]
	 au	"ow", as in "cow":  IPA [au]

	 e	short "e", as in "get":	 the IPA vowel "epsilon"
	 e_-	long "e", as in "Eve":	IPA [i]

	 i	short "i", as in "sit":	 IPA [I]
	 i_-	long "i", as in "fine":	 IPA [ai]

	 o_.	as in "saw", "bought":	the IPA vowel "turned c"
	 o_-	long "o", as in "bone":	 [o] or [ou]

	 u_.	short "oo", as in "foot":  IPA [U]
	 u_:	long "oo", as in "shoot":  IPA [u]

	 *	short "u" and also schwa, as in "hut", "but": the
		IPA vowel "schwa" (more or less)

	 *r	"er", as in "butter";  "ir", as in "sir":  the IPA
		"rhotacized schwa"

	Consonants are generally as used in English, but note the
	following:

	 ch	"ch", as in "cheap";  IPA [tS]
	 j	hard "j", as in "jump":	 IPA [d3]
	 n_e	"ng", as in "sing":  the IPA symbol "eng"
	 sh	"sh", as in "should":  IPA [S]
	 th	voiceless "th", as in "think":	the IPA symbol "theta"
	 t_eh_e	voiced "th", as in "either":  the IPA symbol "ethe"
	 zh	soft "j", as in "pleasure", "azure":  IPA [3]
	 y	consonant "y", as in "yellow":	the IPA semivowel [j]

	Other symbols:

	 '	precedes stressed syllables

	 -	divides syllables; note: not the same as the "-" that
		occurs in some vowels, such as a_- and so on.

	(Note: IPA is not the pronunciation system used on some
	entries in this dictionary.  That was inherited from the
	{Jargon file}, I don't know what it's called).

	[Is the alphabet described here really the IPA?  If not, what
	is it?]

	(08 Dec 1994)

International Smalltalk Association

	<body> (ISA) A user group which published newsletters on
	{Smalltalk}-related issues, technical and general information.
	Its goal was to champion Smalltalk and its uses.  It was
	disbanded around 1991.

	(16 Feb 1995)

International Standard

	<standard> The series of {standard}s from {ISO} and its
	subcommitees.

	(21 Apr 1995)

International Telecommunications Union

	<body, standard> (ITU) ITU-T, the telecommunication
	standardisation sector of ITU, is responsible for making
	technical recommendations about telephone and data (including
	fax) communications systems for {PTT}s and suppliers.  Before
	01 Mar 1993 ITU-T was known as CCITT.  Every four years they
	hold plenary sessions where they adopt new standards; there
	was one in 1992.

	ITU works closely with all {standards} organisations to form
	an international uniform standards system for communication.
	Study Group XVII is responsible for recommending standards for
	data communications over telephone networks.  They publish the
	V.XX standards and X.n {protocols}.  {V.21} is the same as
	{EIA}'s {RS-232}.  {V.24} is the same as EIA's {RS-232C}.
	{V.28} is the same as EIA's {RS-232D}.

	Address: International Telecommunication Union, Information
	Services Department, Place des Nations, 1211 Geneva 20,
	Switzerland.

	Telephone: +41 (22) 730 5554.  Fax: +41 (22) 730 5337.

	E-mail: <helpdesk@itu.ch>, <teledoc@itu.arcom.ch> (Mail body:
	HELP).

	{Home (http://www.itu.ch/)}.

	ITU-T standards can be obtained by {FTP} from {Korea
	(ftp://kum.kaist.ac.kr/doc/STANDARDS/ccitt)}; UK - {Imperial
	(ftp://src.doc.ic.ac.uk/pub/computing/ccitt/ccitt-standards/)},
	{HENSA
	(ftp://unix.hensa.ac.uk/pub/uunet/doc/literary/obi/Standards/CCITT)};
	France - {INRIA (ftp://croton.inria.fr/ITU/ccitt)}, {IMAG
	(ftp://imag.imag.fr/doc/ccitt)}; {Israel
	(ftp://cs.huji.ac.il/pub/doc/standards/ccitt)}; FTP USA:
	{UUNET (ftp://ftp.uu.net/pub/lietrary/obi/Standards/CCITT)},
	{gatekeeper
	(ftp://gatekeeper.dec.com/pub/net/info/bruno.cs.colorado.edu/pub/standards/ccitt)},
	{world.std.com (ftp://world.std.com/obi/Standards/CCITT)};
	{Australia (metro.ucc.su.oz.au/pub/ccitt)}; {Germany
	(ftp://quepasa.cs.tu-berlin.de/pub/doc/CCITT)}; {Japan
	(ftp://sh.wide.ad.jp/CCITT)};

	(16 Jan 1995)

International Traffic in Arms Regulation

	<legal> (ITAR) Now called the {Defense Trade Regulations}.

Internet

	<networking> (Note: capital "I").  The Internet is the largest
	{internet} in the world.  It is a three level {hierarchy}
	composed of {backbone} networks (e.g. {ARPAnet}, {NSFNet},
	{MILNET}), {mid-level network}s, and {stub network}s.  These
	include commercial (.com or .co), university (.ac or .edu) and
	other research networks (.org, .net) and military (.mil)
	networks and span many different physical networks around the
	world with various {protocol}s including the {Internet
	Protocol}.

	There were 20,242 unique commercial domains registered with
	{InterNIC} in September 1994, 10% more than in August 1994.
	There are over 100 Internet access providers in the US and a
	few in the UK (e.g. the {BBC Networking Club}, {Demon},
	{PIPEX}).

	There are several bodies associated with the running of the
	Internet, including the {Internet Architecture Board}, the
	{Internet Assigned Numbers Authority}, the {Internet
	Engineering and Planning Group}, {Internet Engineering
	Steering Group} and the {Internet Society}.

	See also {NYsernet}, {EUNet}.

	{The Internet Index (http://www.openmarket.com/intindex)} -
	statistics about the Internet.

	(12 Sep 1996)

internet

	<networking> (Note: not capitalised) Any set of networks
	interconnected with {routers}.  The {Internet} is the biggest
	example of an internet.

	(17 Sep 1996)

Internet Access Provider

	<networking, company> (IAP) A company or other origanisation
	which provides access to the {Internet} to businesses and/or
	consumers.  An IAP purchases an Internet link from another
	company that has a direct link to the Internet and resells
	portions of that {bandwidth} to the general public.

	For example, an IAP may purchase a {T1} link (1.544Mb/s) and
	resell that bandwidth in chunks consisting of {ISDN} (64Kb/s,
	128Kb/s) and analog {modems} (14.4Kb/s, 28.8Kb/s).  The IAP's
	customer base is likely to include both businesses and
	individuals.  Individual customers usually connect to the IAP
	via a modem and telephone line to a (preferably local) {point
	of presence}.

	An IAP may also be an {Internet Service Provider}.

	(25 Jun 1996)

Internet Adapter

	<networking, product> The Internet Adapter (TIA).  A program
	from {Cyberspace Development} which runs on a {Unix} shell
	account and acts as a {SLIP} {emulator}.  A TIA emulated SLIP
	account is not quite the same as a real SLIP account but TIA's
	SLIP emulation is completely standard in terms of working with
	{MacTCP}-based software on the {Macintosh} (or {WinSock} on a
	{Microsoft Windows} machine).

	You do not get your own {Internet Address} as you do with a
	real SLIP account, instead, TIA uses the IP number of the
	machine it runs on and "redirects" traffic back to you.  You
	cannot set up your machine as an {FTP} {server}, for instance,
	since there's no IP number for an {FTP} {client} elsewhere to
	connect to.

	TIA's performance is reportedly good, faster than normal SLIP
	in fact, and about as fast as {Compressed SLIP}.  Future
	releases will support {CSLIP} and even {PPP}.

	{Cyberspace Development} has ported TIA to several versions of
	{Unix} and more are on the way.

	{TERM} is a free program which performs a similar function
	between two machines both running {Unix}.

	{Home (http://marketplace.com/)}

	{Setting up TIA
	(http://www.webcom.com/~llarrow/tiarefg.html)}.

	{Telnet (telnet://marketplace.com)}

	{Gopher (gopher://marketplace.com/)}

	{FTP (ftp://marketplace.com/tia/)}

	E-mail: <tia-info@marketplace.com>.

	(12 Apr 1995)

Internet address

	<networking> (IP address, {TCP/IP} address) The 32-bit host
	address defined by the {Internet Protocol} in {STD} 5, {RFC}
	791.  It is usually represented in dotted decimal notation.

	A hosts's Internet address is sometimes related to its
	{Ethernet address}.  The Internet address is usually expressed
	in {dot notation}, e.g. 128.121.4.5.  The address can be split
	into a {network number} (or network address) and a {host
	number} unique to each host on the network and sometimes also
	a {subnet address}.  The way the address is split depends on
	its "class", A, B or C as determined by the high address bits:

	Class A - high bit 0, 7-bit network number, 24-bit host
	number.  n1.a.a.a 0 <= n1 <= 127

	Class B - high 2 bits 10, 14-bit network number, 16-bit host
	number.  n1.n2.a.a 128 <= n1 <= 191

	Class C - high 3 bits 110, 21-bit network number, 8-bit host
	number.  n1.n2.n3.a 192 <= n1 <= 223

	The Internet address must be translated into an {Ethernet
	address} by either {ARP} or {constant mapping}.

	The term is sometimes used incorrectly to refer to a host's
	{fully qualified domain name}.

	(06 Dec 1994)

internet address

	<networking> (Note lower case "i").  An {IP} address that
	uniquely identifies a node on an {internet}.

	(12 Apr 1995)

Internet Architecture Board

	(IAB) The technical body that oversees the development of the
	{Internet} suite of {protocol}s.  It has two task forces: the
	{Internet Engineering Task Force} and the {Internet Research
	Task Force}.

	"IAB" previously stood for Internet Activities Board.

	(06 Dec 1994)

Internet Assigned Numbers Authority

	(IANA) The central registry for various "{assigned number}s":
	{Internet} protocol parameters, such as {port}, {protocol} and
	{enterprise} numbers, and options, codes and types.  The
	currently assigned values are listed in the "Assigned Numbers"
	document {STD 2}.  To request a number assignment, e-mail
	<iana@isi.edu>.

	(06 Dec 1994)

Internet Chess Server

	<networking, games> An interactive meeting-place on the
	{Internet} where people can play {chess} against each other.

	{Usenet} newsgroup: {news:alt.chess.ics}.

	[Server address?]

	(25 Mar 1995)

Internet Control Message Protocol

	(ICMP) ICMP is an extension to the {Internet Protocol} (IP).
	It allows for the generation of error messages, test packets
	and informational messages related to IP.  It is defined in
	STD 5, {RFC 792}.

Internet-Draft

	(I-D) A draft working document of the {Internet Engineering
	Task Force}, its Areas, and its Working Groups.  As the name
	implies, Internet-Drafts are purely discussion documents with
	no formal status.  They are valid for a maximum of six months
	and may be updated, replaced, or obsoleted by other documents
	at any time.  Very often, an I-D is a precursor to a {Request
	For Comments}.

	(08 Dec 1994)

Internet Engineering and Planning Group

	(IEPG) {(http://iepg.org/)}.

Internet Engineering Steering Group

	(IESG) A body composed of the {Internet Engineering Task
	Force} Area Directors and the IETF Chair.  It provides the
	first technical review of {Internet} standards and is
	responsible for day-to-day "management" of the IETF.

	(08 Dec 1994)

Internet Engineering Task Force

	(IETF) The IETF is a large, open international community of
	network designers, operators, vendors and researchers whose
	purpose is to coordinate the operation, management and
	evolution of the {Internet} and to resolve short- and
	mid-range {protocol} and architectural issues.  It is a major
	source of proposals for {protocol} {standard}s which are
	submitted to the {Internet Architecture Board} (IAB) for final
	approval.  The IETF meets three times a year and extensive
	minutes are included in the IETF Proceedings.

	The IETF Secretariat, run by The {Corporation for National
	Research Initiatives} with funding from the US government,
	maintains an index of {Internet-Draft}s whereas {RFC}s are
	maintained by The {Internet Architecture Board}.

	{Home (http://www.ietf.cnri.reston.va.us/home.html)}

	(31 Mar 1995)

Internet Experiment Note

	(IEN) A series of reports pertinent to the {Internet}.  IENs
	were published in parallel to RFCs and are no longer active.

	See also {Internet-Draft}, {Request For Comments}.

	(08 Dec 1994)

Internet Explorer

	<World-Wide Web> {Microsoft}'s free {World-Wide Web} {browser}
	for {Microsoft Windows}, {Windows 95}, {Windows NT}, and
	{Macintosh}.  Internet Explorer is the main rival to {Netscape
	Navigator} (which runs on many more {platforms}).  Both
	support the same core features and offer incompatible
	extensions.

	{Home (http://www.microsoft.com/ie/)}.

	(17 Nov 1996)

Internet Express

	An {Internet provider} in Colorado Springs, USA.  Formerly
	called the Community News Service.  They provide {SLIP}
	accounts at no extra charge.

	(08 Dec 1994)

Internet Go Server

	<games, networking> (IGS) A place for {Go} players to meet and
	play via the {Internet}.

	{(telnet://igs.nuri.net:6969/)}

	(17 Mar 1995)

Internet Inter-ORB Protocol

	<protocol, standard> (IIOP) A protocol which will be mandatory
	for all {CORBA} 2.0 compliant {platforms}.  The initial phase
	of the project is to build an infrastructure consisting of: an
	IIOP to {HTTP} {gateway} which allows CORBA {clients} to
	access {WWW} resources; an HTTP to IIOP gateway to let WWW
	clients access CORBA resources; a {web server} which makes
	resources available by both IIOP and HTTP; web browsers which
	can use IIOP as their {native} protocol.

	{Home (http://www.ansa.co.uk/ANSA/ISF/wwwCorba_1.html)}

	(01 Apr 1996)

Internet Message Access Protocol

	<protocol, messaging> (IMAP) A {protocol} allowing a {client}
	to access and manipulate {electronic mail} messages on a
	{server}.  It permits manipulation of remote message folders
	({mailboxes}), in a way that is functionally equivalent to
	local mailboxes.

	IMAP includes operations for creating, deleting, and renaming
	mailboxes; checking for new messages; permanently removing
	messages; searching; and selective fetching of message
	attributes, texts, and portions thereof.  It does not specify
	a means of posting mail; this function is handled by a mail
	transfer protocol such as {SMTP}.

	Current version of the protocol is 4 and is described in {RFC
	1730}.

	Compare: {POP}.

	(11 Mar 1996)

Internet Monthly Report

	(IMR) Publication designed to communicate to the {Internet
	Research Group} the accomplishments, milestones reached, or
	problems discovered by the participating organisations.

	(08 Dec 1994)

internet number

	{internet address}

Internet Protocol

	(IP) The {network layer} for the {TCP/IP} {protocol} suite
	widely used on {Ethernet} networks, defined in {STD} 5, {RFC}
	791.  IP is a {connectionless}, {best-effort} {packet
	switching} protocol.  It provides {packet} {routing},
	{fragmentation} and re-assembly through the {data link layer}.

	(08 Dec 1994)

Internet Protocol Control Protocol

	<networking> (IPCP) The {Control Protocol} for {Internet
	Protocol}.

	(27 Sep 1995)

Internet Protocol Version 6

	<networking, protocol> (IPv6, IPng, IP next generation) The
	most viable candidate to replace the current {Internet
	Protocol}.  The primary purpose of IPv6 is to solve the
	problem of the shortage of {IP addresses}.

	The following features have been purposed: 16-byte addresses
	instead of the current four bytes; embedded {encryption} - a
	32-bit {Security Association ID} (SAID) plus a variable length
	initialisation vector in {packet} headers; user
	{authentication} (a 32-bit SAID plus variable length
	{authentication} data in headers); autoconfiguration
	(currently partly handled by {Dynamic Host Configuration
	Protocol}); support for {delay-sensitive traffic} - a 24 bit
	flow ID field in headers to denote voice or video, etc.

	One possible solution is based on the {TUBA} protocol (RFC
	1347, 1526, 1561) which is itself based on the {OSI}
	{Connectionless Network Protocol} (CNLP).  Another is {TP/IX}
	(RFC 1475) which changes {TCP} and {UDP} headers to give a
	64-bit {IP address}, a 32-bit {port} number, and a 64 bit
	sequence number.

	{RFC 1550} is a white paper on IPng.

	["Doubts About IPng could create TCP/IP chaos", Johna Till
	Johnson, Data Communications, Nov 1994].

	(03 Apr 1995)

Internet Public Library

	(IPL) A project at the {University of Michigan} School of
	Information and Library Studies to provide an on-line, 24 hour
	public library, chaired by an assemblage of librarians and
	information industry professionals.  The library aims to
	provide library services to a target audience estimated to
	number 1/4 of the entire American population by the end of the
	century.

	The Internet Public Library is scheduled to go on-line in
	March 1995.  Among the first services will be on-line
	reference; youth services; user education; and professional
	services for librarians.

	{Home (http://ipl.sils.umich.edu/)}

	{(telnet://ipl.sils.umich.edu/)}

	Mailing list: majordomo@sils.umich.edu.

	(20 Jul 1995)

Internet Registry

	(IR) The {Internet Assigned Numbers Authority} has the
	discretionary authority to delegate portions of its
	responsibility and, with respect to {network address} and
	{Autonomous System} identifiers, has lodged this
	responsibility with the {IR}.  The IR function is performed by
	the {Defense Data Network} {Network Information Center}.

Internet Relay Chat

	<chat, messaging> (IRC) /I-R-C/, occasionally /*rk/ A
	{client-server} {chat} system of large (often worldwide)
	networks.  IRC is structured as networks of {Internet}
	{servers}, each accepting connections from {client} programs,
	one per user.

	The IRC community and the {Usenet} and {MUD} communities
	overlap to some extent, including both {hackers} and regular
	folks who have discovered the wonders of computer networks.
	Some {Usenet} jargon has been adopted on IRC, as have some
	conventions such as {emoticons}.  There is also a vigorous
	native jargon (see the entry for "{chat}").

	The largest and first IRC network is {EFNet}, with a smaller
	breakaway network called the {Undernet} having existed since
	1992, and dozens of other networks having appeared (and
	sometimes disappeared) since.

	See also {nick}, {bot}, {op}.

	{Yahoo's IRC index
	(http://www.yahoo.com/Computers_and_Internet/Internet/Chat/IRC/)}

	(25 Jan 1998)

Internet Research Steering Group

	<body, standard> (IRSG) The "governing body" of the {Internet
	Research Task Force}.

	(08 Dec 1994)

Internet Research Task Force

	(IRTF) The IRTF is chartered by the {Internet Architecture
	Board} to consider long-term {Internet} issues from a
	theoretical point of view.  It has Research Groups, similar to
	{Internet Engineering Task Force} Working Groups, which are
	each tasked to discuss different research topics.  Multi-cast
	audio/video conferencing and {privacy enhanced mail} are
	samples of IRTF output.

	(08 Dec 1994)

Internet Security Association and Key Management Protocol

	<networking, protocol> (ISAKMP) The definitions and procedures
	for {authenticating} communication between 2 {peers}.  This
	includes the creation and management of {Security
	Associations}, {key} generation techniques and {threat
	mitigation}.

	{Draft RFC
	(http://www.alternic.net/rfcs/draft-ietf-ipsec-isakmp-05.txt.html)}.

	(09 Jul 1997)

Internet Server Application Programming Interface

	<World-Wide Web> (ISAPI) {Microsoft}'s programming interface
	between applications and their {Internet Server}.  Active
	Servers created with ISAPI extensions can be complete
	in-process applications themselves, or can "connect" to other
	services.  ISAPI is used for the same sort of functions as
	{CGI} but uses {Microsoft Windows} {dynamic link libraries}
	(DLL) for greater efficiency.  The server loads the DLL the
	first time a request is received and the DLL then stays in
	memory, ready to service other requests until the server
	decides it is no longer needed.  This minimises the overhead
	associated with executing such applications many times.

	An HTTP server can unload ISAPI application DLLs to free
	memory or preload them to speed up the first access.
	Applications can also be enhanced by {ISAPI filter}s

	(06 Jan 1997)

Internet Service Provider

	<company, networking> (ISP) A company which provides other
	companies or individuals with access to, or presence on, the
	{Internet}.  Most ISPs are also {Internet Access Providers};
	extra services include help with design, creation and
	administration of {World-Wide Web} sites, training, and
	administration of {intranets}.

	(24 Jun 1996)

Internet Society

	<body> (ISOC) A non-profit, professional membership
	organisation which facilitates and supports the technical
	evolution of the {Internet}, stimulates interest in and
	educates the scientific and academic communities, industry and
	the public about the technology, uses and applications of the
	Internet, and promotes the development of new applications for
	the system.  The Society provides a forum for discussion and
	collaboration in the operation and use of the global Internet
	infrastructure.

	The Internet Society publishes a quarterly newsletter, the
	Internet Society News, and holds an annual conference, INET.
	The development of Internet technical standards takes place
	under the auspices of the Internet Society with substantial
	support from the {Corporation for National Research
	Initiatives} under a cooperative agreement with the US Federal
	Government.

	{Home (http://info.isoc.org/)}

	(27 Oct 1994)

internetworking

	The interconnection of two or more {network}s, usually {local
	area network}s so that data can pass between {host}s on the
	different networks as though they were one network.  This
	requires some kind of {router} or {gateway}.

	(30 Nov 1994)

Internetwork Packet eXchange

	<networking> (IPX) A {network layer} {protocol} initially
	developed at {XEROX Corporation} and made popular by {Novell,
	Inc.} as the basic protocol in its {Novell NetWare} {file
	server} {operating system}.

	A {router} with IPX routing can interconnect {Local Area
	Networks} so that Netware {clients} and {servers} can
	communicate.

	The {SPX} {transport layer} protocol runs on top of IPX.

	(04 Mar 1997)

Internet Worm

	<networking, security> The November 1988 {worm} perpetrated by
	{Robert T. Morris}.  The worm was a program which took
	advantage of bugs in the {Sun} {Unix} {sendmail} program,
	{Vax} programs, and other security loopholes to distribute
	itself to over 6000 computers on the {Internet}.  The worm
	itself had a bug which made it create many copies of itself on
	machines it infected, which quickly used up all available
	processor time on those systems.

	Some call it "The Great Worm" in a play on Tolkien (compare
	{elvish}, {elder days}).  In the fantasy history of his Middle
	Earth books, there were dragons powerful enough to lay waste
	to entire regions; two of these (Scatha and Glaurung) were
	known as "the Great Worms".  This usage expresses the
	connotation that the RTM hack was a sort of devastating
	watershed event in hackish history; certainly it did more to
	make non-hackers nervous about the Internet than anything
	before or since.

	(12 Jan 1995)

Internex On-Line

	A rather cheap {Internet} service provider in Toronto, Canada.

	{(http://www.io.org/)}

	(30 Nov 1994)

InterNIC

	Internet Network Information Center.  In cooperation with the
	Internet community, the {National Science Foundation}
	developed and released in the Spring of 1992 a solicitation
	for one or more {Network Information Service} (NIS) Managers
	to provide and/or coordinate services for the {NSFNet}
	community.  Three organisations were selected to receive
	cooperative agreements in the areas of Information Services,
	Directory and Database Services, and Registration Services.
	Together these three awards constitute the InterNIC.  General
	Atomics provides information services, AT&T provides directory
	and database services, and {Network Solutions, Inc.} (NSI)
	provides registration services.

	{(ftp://is.internic.net/)}.  {(gopher://is.internic.net/)}.
	E-mail: <Info@is.internic.net>.

	(09 Nov 1995)

interoperability

	The ability of software and hardware on multiple machines from
	multiple vendors to communicate.

interoperable database

	A {database} {front-end} which communicates with multiple
	heterogenous databases and makes them appear as a single
	homogenous entity with {semantic call}s.

	See {ODBC}.

	(06 Feb 1995)

inter-packet gap

	<networking> A time delay between successive data {packets}
	mandated by the network standard for {protocol} reasons.

	In {Ethernet}, the medium has to be "silent" (i.e., no data
	transfer) for a few microseconds before a {node} can consider
	the network idle and start to transmit.  This is necessary for
	fairness reasons.  The delay time, which approximately equals
	the signal propagation time on the cable, allows the "silence"
	to reach the far end so that all nodes consider the net idle.

	(11 Nov 1995)

interpolation

	<mathematics, algorithm> A mathematical procedure which
	estimates values of a {function} at positions between listed
	or given values.  Interpolation works by fitting a "curve"
	(i.e. a function) to two or more given points and then
	applying this function to the required input.  Example uses
	are calculating {trigonometric functions} from tables and
	audio waveform sythesis.

	The simplest form of interpolation is where a function, f(x),
	is estimated by drawing a straight line ("linear
	interpolation") between the nearest given points on either
	side of the required input value:

		f(x) ~ f(x1) + (f(x2) - f(x1))(x-x1)/(x2 - x1)

	There are many variations using more than two points or higher
	degree {polynomial} functions.  The technique can also be
	extended to functions of more than one input.

	(14 Jul 1997)

Interpress

	Interpreted {FORTH}-like graphics language, possibly the first
	{page description language}, predating {PostScript}.  Both are
	descendants of {JaM}.  Used on {Xerox} printers.

	["Interpress, The Source Book", Steven Harrington et al, P-H
	1988.]

interpreted

	{interpreter}

interpreter

	<programming> A program which executes other programs.  This
	is in contrast to a {compiler} which does not execute its
	input program (the "{source code}") but translates it into
	executable "{machine code}" (also called "{object code}")
	which is output to a file for later execution.  It may be
	possible to execute the same source code either directly by an
	interpreter or by compiling it and then executing the {machine
	code} produced.

	It takes longer to run a program under an interpreter than to
	run the compiled code but it can take less time to interpret
	it than the total required to compile and run it.  This is
	especially important when prototyping and testing code when an
	edit-interpret-debug cycle can often be much shorter than an
	edit-compile-run-debug cycle.

	Interpreting code is slower than running the compiled code
	because the interpreter must analyse each statement in the
	program each time it is executed and then perform the desired
	action whereas the compiled code just performs the action.
	This run-time analysis is known as "interpretive overhead".
	Access to variables is also slower in an interpreter because
	the mapping of identifiers to storage locations must be done
	repeatedly at run-time rather than at compile time.

	There are various compromises between the development speed
	when using an interpreter and the execution speed when using a
	compiler.  Some systems (e.g. some {Lisp}s) allow interpreted
	and compiled code to call each other and to share variables.
	This means that once a routine has been tested and debugged
	under the interpreter it can be compiled and thus benefit from
	faster execution while other routines are being developed.
	Many interpreters do not execute the source code as it stands
	but convert it into some more compact internal form.  For
	example, some {BASIC} interpreters replace {keywords} with
	single byte tokens which can be used to {index} into a {jump
	table}.  An interpreter might well use the same {lexical
	analyser} and {parser} as the compiler and then interpret the
	resulting {abstract syntax tree}.

	There is thus a spectrum of possibilities between interpreting
	and compiling, depending on the amount of analysis performed
	before the program is executed.  For example {Emacs Lisp} is
	compiled to "byte code" which is a highly compressed and
	optimised representation of the Lisp source but is not machine
	code (and therefore not tied to any particular hardware).
	This "compiled" code is then executed (interpreted) by a {byte
	code interpreter} (itself written in {C}).  The compiled code
	in this case is {machine code} for a {virtual machine} which
	is implemented not in hardware but in the byte code
	interpreter.

	See also {partial evaluation}.

	(30 Jan 1995)

Interpretive Menu Processor

	<language> (IMP) The language used to implement much of the
	{user interface} of the {Alis} {office automation} package
	from {Applix, Inc}.

	(07 Apr 1996)

Inter-process Communication

	<programming, operating system> (IPC) Exchange of data between
	one {process} and another, either within the same computer or
	over a {network}.  It implies a {protocol} that guarantees a
	response to a request.  Examples are {Unix} {sockets}, {RISC
	OS}'s messages, {OS/2}'s {Named Pipes}, {Microsoft Windows}'
	{DDE}, {Novell}'s {SPX} and {Macintosh}'s IAC.

	Although IPC is performed automatically by programs, an
	analogous function can be performed interactively when users
	cut and paste data from one process to another using a
	{clipboard}.

	(14 Dec 1995)

interrupt

	<programming> 1. An {asynchronous} event that suspends normal
	processing and temporarily diverts the {flow of control}
	through an "{interrupt handler}" routine.

	Interrupts may be caused by both {hardware} (I/O, timer,
	machine check) and {software} (supervisor, {system call} or
	{trap} instruction).

	In general the computer responds to an interrupt by storing
	the information about the current state of the running
	program; storing information to identify the source of the
	interrupt; and invoking a first-level {interrupt handler}.
	This is usually a {kernel} level privileged process that can
	discover the precise cause of the interrupt (e.g. if several
	devices share one interrupt) and what must be done to keep
	operating system tables (such as the process table) updated.
	This first-level handler may then call another handler,
	e.g. one associated with the particular device which generated
	the interrupt.

	2. Under {MS-DOS}, nearly synonymous with "{system call}"
	because the {OS} and {BIOS} routines are both called using the
	INT instruction (see {interrupt list}) and because programmers
	so often have to bypass the operating system (going directly
	to a BIOS interrupt) to get reasonable performance.

	(07 Feb 1995)

interrupt handler

	A routine which is executed when an {interrupt} occurs.
	Interrupt handlers typically deal with low-level events in the
	hardware of a computer system such as a character arriving at
	a {serial port} or a tick of a {real-time clock}.  Special
	case is required when writing an interrupt handler to ensure
	that either the interrupt which triggered the handler's
	execution is masked out (inhibitted) until the handler is
	done, or the handler is written in a {re-entrant} fashion so
	that multiple concurrent invocations will not interfere with
	each other.

	If interrupts are masked then the handler must execute as
	quickly as possible so that important events are not missed.
	This is often arranged by splitting the processing associated
	with the event into "upper" and "lower" halves.  The lower
	part is the interrupt handler which masks out further
	interrupts as required, checks that the appropriate event has
	occurred (this may be necessary if several events share the
	same interrupt), services the interrupt, e.g. by reading a
	character from a {UART} and writing it to a {queue}, and
	re-enabling interrupts.

	The upper half executes as part of a user process.  It waits
	until the interrupt handler has run.  Normally the {operating
	system} is responsible for reactivating a process which is
	waiting for some low-level event.  It detects this by a shared
	{flag} or by inspecting a shared queue or by some other
	synchronisation mechanism.  It is important that the upper and
	lower halves do not interfere if an interrupt occurs during
	the execution of upper half code.  This is usually ensured by
	disabling interrupts during {critical section}s of code such
	as removing a character from a queue.

	(27 Oct 1994)

interrupt list

	[{MS-DOS}] The list of all known {software interrupt} calls
	(both documented and undocumented) for {IBM PC}s and
	compatibles, maintained and made available for free
	redistribution by Ralf Brown <ralf@cs.cmu.edu>.  As of late
	1992, it had grown to approximately two megabytes in length.

interrupt priority level

	The {Motorola 68000} family of processors can be at an
	interrupt priority level from 0 (no interrupt in progress) up
	to 7.  While the processor is handling an interrupt at one
	level, it will ignore other interrupts at that level or lower.

	(23 Nov 1994)

interrupt request

	(IRQ) The name of an input found on many processors which
	causes the processor to suspend normal instruction execution
	temporarily and to start executing an {interrupt handler}
	routine.  Such an input may be either "{level sensitive}" -
	the {interrupt} condition will persist as long as the input is
	active or "{edge triggered}" - an interrupt is signalled by a
	low-to-high or high-to-low transition on the input.  Some
	processors have several interrupt request inputs allowing
	different priority interrupts.

	(08 Dec 1994)

interrupts

	{interrupt}

Intersil 6100

	(IMS 6100) A single chip design of the {DEC} {PDP-8}
	{minicomputer}.  The old PDP-8 design was very strange, and if
	it hadn't been popular, an awkward {CPU} like the 6100 would
	never been designed.

	The 6100 was a 12-bit processor, which had exactly three
	{register}s - the {PC}, AC (an accumulator) and MQ.  All 2
	operand instructions read AC and MQ and wrote back to AC.  It
	had a 12-bit {address bus}, limiting {RAM} to only 4K.  Memory
	references were 7-bit (128 word) offset either from address 0,
	or the PC.

	It had no {stack}.  Subroutines stored the {PC} in the first
	word of the subroutine code itself, so {recursion} required
	fancy programming.

	4K RAM was pretty much hopeless for general purpose use.  The
	6102 support chip (included in the 6120) added 3 address
	lines, expanding memory to 32K the same way that the PDP-8/E
	expanded the PDP-8.  Two registers, IFR and DFR, held the page
	for instructions and data respectively (IFR was always used
	until a data address was detected).  At the top of the 4K
	page, the PC wrapped back to 0, so the last instruction on a
	page had to load a new value into the IFR if execution was to
	continue.

	(23 Nov 1994)

Intersil 6120

	(IMS 6120) An improved version of the {Intersil 6100}, used in
	the {DECmate}.

	(23 Nov 1994)

interupt

	<spelling> Misspelling of "{interrupt}".

	(13 Dec 1996)

InterViews

	An object-oriented toolkit developed at Stanford University
	for building graphical user interfaces.  It is implemented in
	C++ and provides a library of objects and a set of protocols
	for composing them.

intranet

	<networking> Any {network} which provides similar services
	within an organisation to those provided by the {Internet}
	outside it but which is not necessarily connected to the
	Internet.  The commonest example is the use by a company of
	one or more {World-Wide Web} servers on an internal {TCP/IP}
	network for distribution of information within the company.

	Since about 1995, intranets have become a major growth area in
	corporate computing due to the availability of cheap or free
	commercial {browser} and {web server} software which allows
	them to provide a simple, uniform {hypertext} interface to
	many kinds of information and {application programs}.

	Some companies give limited access to their intranets to other
	companies or the general public.  This is known as an
	"{extranet}".

	(14 Jul 1997)

Intrinsics

	<operating system, graphics> A library package on top of
	{Xlib}, extending the basic functions of the {X Window
	System}.  It provides mechanisms for building {widget sets}
	and application environments.

	(26 Aug 1996)

Intrusion Countermeasure Electronics

	(ICE) A contrived acronym coined by {Usenet}ter Tom Maddox and
	popularised by William Gibson's {cyberpunk} SF novels.
	Security software (in Gibson's novels, software that responds
	to intrusion by attempting to literally kill the intruder).
	Also, "icebreaker": a program designed for cracking security
	on a system.

	Neither term is in serious use yet as of mid-1993, but many
	hackers find the metaphor attractive, and each may develop a
	denotation in the future.

	(08 Feb 1995)

Intrusive Testing

	<testing> Testing that collects timing and processing
	information during program execution that may change the
	behavior of the software from its behavior in a real
	environment.  Intrusive testing usually involves additional
	code embedded in the software being tested or additional
	processes running concurrently with software being tested on
	the same processor.

	(01 Dec 1996)

Intuition

	<operating system> The {Amiga} {windowing system} (a
	shared-code library).

	(01 Aug 1997)

intuitionism

	{intuitionist logic}

intuitionist logic

	<logic, mathematics> Brouwer's foundational theory of
	mathematics which says that you should not count a proof of
	(There exists x such that P(x)) valid unless the proof
	actually gives a method of constructing such an x.  Similarly,
	a proof of (A or B) is valid only if it actually exhibits
	either a proof of A or a proof of B.

	In intuitionism, you cannot in general assert the statement (A
	or not-A) (the principle of the {excluded middle}); (A or
	not-A) is not proven unless you have a proof of A or a proof
	of not-A.  If A happens to be {undecidable} in your system
	(some things certainly will be), then there will be no proof
	of (A or not-A).  This is pretty annoying; some kinds of
	perfectly healthy-looking proofs by contradiction just stop
	working.  Of course, excluded middle is a theorem of
	{classical logic} (i.e. non-intuitionist logic).

	(13 Apr 1995)

invariant

	<programming> A rule, such as the {ordering} of an ordered
	list or {heap}, that applies throughout the life of a data
	structure or procedure.  Each change to the data structure
	must maintain the correctness of the invariant.

	(12 Mar 1996)

inverse

	<mathematics> Given a {function}, f : D -> C, a function g : C
	-> D is called a left inverse for f if for all d in D, g (f d)
	= d and a right inverse if, for all c in C, f (g c) = c and an
	inverse if both conditions hold.  Only an {injection} has a
	left inverse, only a {surjection} has a right inverse and only
	a {bijection} has inverses.  The inverse of f is often written
	as f with a -1 superscript.

	(12 Mar 1996)

inverted index

	A sequence of (key, pointer) pairs where each pointer points
	to a record in a database which contains the key value in some
	particular field.  The index is sorted on the key values to
	allow rapid searching for a particular key value, using
	e.g. {binary search}.  The index is "inverted" in the sense
	that the key value is used to find the record rather than the
	other way round.  For databases in which the records may be
	searched based on more than one field, multiple indices may be
	created that are sorted on those keys.

	An index may contain gaps to allow for new entries to be added
	in the correct sort order without always requiring the
	following entries to be shifted out of the way.

	(08 Feb 1995)

InWorld VR

	<company, virtual reality> Manufacturers of the {CyberWand}.

	(04 Apr 1995)

I/O

	Input/Output.

	Communication between a computer and the user or the outside
	world.

	(07 May 1995)

IOI

	{International Olympiad in Informatics}

Iomega Corporation

	<company, storage> A storage device manufacturer whose major
	products are the {Zip} and {Jaz} removable {disk drives} and
	{Ditto} {tape drives}.  They became popular with an early
	product called the {Bernoulli Box}.

	These products fall in line with their focus set in 1994 "to
	help people manage their stuff".  The company's stated aim is
	to create portable, fast, large and cheap storage solutions.
	Iomega's major competitor in the growing market for removable
	disks is {SyQuest}, who seem to always be a few weeks behind
	them.

	In general, Iomega target the {Small Office/Home Office}.
	They are also investigating the growing {digital photography}
	market which also needs large removable storage devices.

	Iomega's president and CEO is Kim Edwards.  They have nearly
	2000 employees in offices world-wide.  Revenue for the quarter
	ending Dec 1996 was $371 million and net income was $20
	million.

	Headquarters: Roy, Utah, USA.

	{Home (http://www.iomega.com/index.html)}.

	(15 Apr 1997)

I-OOA

	A tool, developed and sold by the Kennedy-Carter company, that
	supports the {Schlaer Mellor} design method, and that
	generates code in {C} and {C++}.  This tool can be modified to
	generate code of different styles, and also, to generate code
	in different programming languages.

	(31 Jan 1995)

I/O redirection

	{input/output redirection}

Iota

	<language, specification> A specification language.

	["The Iota Programming System", R. Nakajima er al, Springer
	1983].

	(08 Dec 1994)

IOT&E

	{Initial Operational Test and Evaluation}

IOW

	<chat> in other words.

	(26 May 1997)

IP

	{Internet Protocol}

IPA

	{International Phonetic Alphabet}

IP address

	{Internet address}

IPC

	{Inter-Process Communication}

IPCP

	{Internet Protocol Control Protocol}

IPE

	{Integrated Programming Environment}

IPL

	1. {Information Processing Language}.

	2. {Internet Public Library}.

	3. {Initial Program Load}.

	4. {Initial Program Loader}.

	(31 Aug 1997)

IP next generation

	{Internet Protocol Version 6}

IPng

	{Internet Protocol Version 6}

IP number

	{Internet address}

IPS

	A {thread}ed language.

	["IPS, An Unorthodox High Level Language", K. Meinzer, BYTE
	pp. 146-159 (Jan 1979)].

	(04 Nov 1994)

IPSE

	Integrated Project Support Environment: a term for a set of
	management and technical tools to support software
	development, usually integrated in a coherent framework:
	equivalent to an SEE.

IPv6

	{Internet Protocol version 6}

IPX

	{Internetwork Packet eXchange}

IPXCP

	<networking> {Internetwork Packet eXchange} {Control
	Protocol}.

	(27 Sep 1995)

IQ

	Pictorial query language, implemented in Ratfor.

	["Structured Implementation of an Image Query Language",
	Y.E. Lien et al, in Database Techniques for Pictorial
	Applications, A. Blaser ed, pp.416-430].

IQL

	An object-oriented deductive language/database system.

IR

	1. <networking> {Internet Registry}.

	2. <electronics> {infrared}.

	(30 Jan 1997)

IRC

	{Internet Relay Chat}

ircop

	<messaging> /*r'-kop/ ("{IRC}" + "{op}", but with the,
	presumably intentional, alternate analysis "IRC" + "cop")
	Someone who is endowed with privileges on {IRC}, not limited
	to a particular {channel}.  These privileges include {channel
	op} privileges in any channel, but also notably include the
	ability to disconnect a user from the IRC network.

	Ircops are generally people who are in charge of the IRC
	{server} at their particular {site}.  Compare {op}.

	(12 Dec 1997)

IRC penis war

	{penis war}

IRDATA

	Industrial Robot DATA.  A standardised robot control code.
	"IRDATA, Industrial Robot Data", DIN 66313, Beuth-Verlag 1991.

IRDS

	Information Resource Dictionary System.  A set of ISO
	standards for CASE repositories.  It governs the definition of
	data dictionaries to be implemented on top of relational
	databases (see repository, data dictionary).

IRIS

	Institute for Research in Information and Scholarship of Brown
	University (Providence RI).

	(04 Nov 1994)

Iris

	An {object-oriented} {DBMS}.

	(04 Nov 1994)

IRIX

	<operating system> /ir'iks/ The main {operating system} used
	by {Silicon Graphics} {workstations} and {servers}.  IRIX is
	{multiprocessor} and {multi-threaded}.  It incorporates
	substantial functionality from {UNIX} {System V}, Release 4.1
	and 4.2.

	(17 Jun 1997)

IRL

	1. <jargon, chat> In real life.  Generally synonymous with
	{f2f}.

	2. <language> {Industrial Robot Language}.

	(31 Jan 1997)

IRM

	{Information Resource Management}

iron

	Hardware, especially older and larger hardware of {mainframe}
	class with big metal cabinets housing relatively low-density
	electronics (but the term is also used of modern
	{supercomputer}s).  Often in the phrase {big iron}.  Oppose
	{silicon}.

	See also {dinosaur}.

	(04 Nov 1994)

Iron Age

	<history> In the history of computing, 1961-1971 - the
	formative era of commercial {mainframe} technology, when
	{ferrite core memory} {dinosaurs} ruled the earth.  The Iron
	Age began, ironically enough, with the delivery of the first
	{minicomputer} (the PDP-1) and ended with the introduction of
	the first commercial microprocessor (the Intel 4004) in 1971.

	See also {Stone Age}; compare {elder days}.

	(19 Feb 1997)

iron box

	[Unix/Internet] A special environment set up to trap a
	{cracker} logging in over remote connections long enough to be
	traced.  May include a modified {shell} restricting the
	cracker's movements in unobvious ways, and "bait" files
	designed to keep him interested and logged on.  See also {back
	door}, {firewall machine}, {Venus flytrap}, and Clifford
	Stoll's account in "{The Cuckoo's Egg}" of how he made and
	used one.  Compare {padded cell}.

Ironman

	HOLWG, DoD, Jan 1977, revised Jul 1977.  Fourth of the series
	of DoD requirements that led to Ada.  "Department of Defense
	Requirements for High Order Computer Programming Languages",
	SIGPLAN Notices 12(12):39-54 (Dec 1977).  "Revised Ironman
	Requirements for High Order Computer Programming Languages",
	US Dept of Defense, Jul 1977.  (See Strawman, Woodenman,
	Tinman, Steelman).

ironmonger

	[IBM]  A hardware specialist (derogatory).  Compare
	{sandbender}, {polygon pusher}.

IRQ

	{interrupt request}

irrational number

	<mathematics> A {real number} which is not a {rational
	number}, i.e. it is not the ratio of two {integer}s.

	The decimal expansion of an irrational is infinite but does
	not end in an infinite repeating sequence of digits.

	Examples of irrational numbers are {pi}, {e} and the square
	root of two.

	(12 Apr 1995)

irrefutable

	The opposite of {refutable}.

IRSG

	{Internet Research Steering Group}

IRTF

	{Internet Research Task Force}

IRUS

	{Irvine Research Unit in Software}

Irvine Dataflow

	<language> (Always called "Id") A non-{strict}, {single
	assignment} language and {incremental compiler} developed by
	Arvind and Gostelow and used on {MIT}'s {Tagged-Token Dataflow
	Architecture} and planned to be used on {Motorola}'s
	{Monsoon}.

	See also {Id Nouveau}.

	["An Asynchronous Programming Language for a Large
	Multiprocessor Machine", Arvind et al, TR114a, Dept ISC, UC
	Irvine, Dec 1978].

	["The U-Interpreter", Arvind et al, Computer 15(2):42-50,
	1982].

	(14 Feb 1998)

Irvine Research Unit in Software

	<body> (IRUS) The {University of California, Irvine}.

	[Details?]

	(18 Apr 1995)

IS

	1. <standard> {International Standard}.

	2. {Intermediate System}.

IS-13818

	<standard> The {International Standard} for {MPEG-2}
	{compression}.

ISA

	1. <architecture> {Integrated Systems Architecture}.

	2. <body> {International Smalltalk Association}.

	3. <architecture> {instruction set architecture}.

	4. <architecture> {Industry Standard Architecture}.

	(13 Feb 1997)

Isabelle

	<theory, tool> Lawrence C. Paulson
	<Larry.Paulson@cl.cam.ac.uk>'s generic {theorem prover} with
	support for several {object-logic}s: {first-order logic},
	{constructive} and classical versions; {higher-order logic},
	similar to Gordon's {HOL}; {Zermelo Frnkel set theory}; an
	extensional version of {Martin Lf}'s type theory, the
	classical first-order {sequent calculus}, {LK}; the {modal
	logic}s {T}, {S4} and {S43}; {Logic for Computable Functions}.

	A logic's {syntax} and {inference rule}s are specified
	{declarative}ly allowing single-step proof construction.
	{Proof procedure}s can be expressed using {tactic}s and
	{tactical}s.  Isabelle provides control structures for
	expressing search procedures and generic tools such as
	simplifiers and classical theorem provers which can be applied
	to object-logics.  Isabelle is built on top of {Standard ML}
	and uses its user interface.

	The latest version, {Isabelle-93}, is significantly faster
	than {Isabelle-92} and has several other improvements.

	{UK (ftp://ftp.cl.cam.ac.uk/ml)}.  {CMU
	(ftp://ftp.cs.cmu.edu/afs/cs.cmu.edu/user/mkant/Public/Lisp/)}.

	Mailing list: isabelle-users@cl.cam.ac.uk.

	(20 Dec 1993)

Isabelle-92

	<theory, tool> A generic theorem prover, supporting a wide
	variety of logics.  A system of type classes allows
	polymorphic object-logics with overloading and automatic type
	inference.

	{(ftp://ftp.cl.cam.ac.uk/ml/92.tar.Z)}

	(07 Jan 1996)

Isabelle-93

	<theory, tool> A significantly faster version of {Isabelle-92}
	by by Lawrence C. Paulson <Larry.Paulson@cl.cam.ac.uk> and
	Tobias Nipkow <Tobias.Nipkow@informatik.tu-muenchen.de>?

	(01 May 1995)

ISA bus

	{Industry Standard Architecture}

ISAKMP

	{Internet Security Association Key Management Protocol}

ISAM

	{Indexed Sequential Access Method}

ISAPI

	{Internet Server Application Programming Interface}

ISAPI filter

	<World-Wide Web> A replaceable {DLL} which the {server} calls
	whenever there is an {HTTP} request.  When the filter is first
	loaded, it communicates to the server what sort of
	notifications will be accepted.  After that, whenever a
	selected event occurs, the filter is called to process the
	event.

	Example applications of ISAPI filters include custom
	{authentication} schemes, {compression}, {encryption},
	logging, traffic analysis or other request analyses.

	(06 Jan 1997)

ISBL

	<language> A mathematical {query language}.

	[Stands for?  Details?]

	(06 Jan 1997)

ISDE

	Integrated Software Development Environment: equivalent to an
	IPSE.

ISDN

	{Integrated Services Digital Network}

ISE

	{Interactive Software Engineering}

ISEE

	Integrated {Software Engineering Environment} - equivalent to
	{SEE}.

I see no X here.

	<games> Hackers (and the interactive computer games they
	write) traditionally favour this slightly marked usage over
	other possible equivalents such as "There's no X here!" or "X
	is missing."  or "Where's the X?".  This goes back to the
	original PDP-10 {ADVENT}, which would respond in this wise if
	you asked it to do something involving an object not present
	at your location in the game.

ISETL

	Interactive {SETL} by Gary Levin <gary@clutx.clarkson.edu>.
	Current version: 3.0.

	{Binaries (ftp://sun.soe.clarkson.edu/)} and source for
	{MS-DOS}, {Macintosh}, {Unix}, {VAX}/{VMS}.

	[Clarkson U.  "An Introduction to ISETL Version 1.9",
	G.M. Levin, Dept MCS, Clarkson U].

	["Learning discrete mathematics with ISETL", Nancy Baxter.
	Ed. Gary Levin Dubinsky.  Springer-Verlag, c.1989.]

	(Apr 1994)

ISF

	{Information Systems Factory}

ISINDEX

	<World-Wide Web> An {HTML} tag which tells the {browser} to
	display a text entry box on the current page.  Any text
	entered in the box by the user is appended as a URL-encoded
	query string to the current {URL} and sent to the {server}
	using a GET method.

	This is a simple way of making a {web site} searchable or
	allowing other kinds of simple user input.  It relies on the
	server mapping the query URL to an appropriate process,
	probably depending on the page in which the ISINDEX appeared.
	More complex input can be catered for using the {FORM} tag, or
	{Java}.

	(22 Dec 1996)

ISINDEX=

	Your World-Wide Web browser has generated a query containing
	the string "ISINDEX=".  Unless you got to this entry from a
	random query or by following a "next" link, please mail me,
	Denis Howe <dbh@doc.ic.ac.uk> and tell me which browser
	(e.g. XMosaic, Lynx, w3, Cello) you are using and the URL you
	used to access the dictionary
	(e.g. http://wombat.doc.ic.ac.uk/).  Thanks for your help.

	(10 Apr 1996)

ISIS

	1. A toolkit for implementing fault-tolerant distributed
	systems, developed at Cornell and now available commercially

	2. A dialect of {JOSS}.

	[Sammet 1969, p. 217].

IS-IS

	{Intermediate System-Intermediate System}

ISL

	Interface Specification Language.  Xerox PARC.  Interface
	description language used by the ILU (Inter-Language
	Unification) system.  Includes descriptions of multiple
	inheritance, exceptions and garbage collection.

	E-mail: Bill Janssen <janssen@parc.xerox.com>.

ISLisp

	International Standard Lisp.

	An {object-oriented} Lisp intended as an international
	replacement for {Common Lisp}, {EuLisp}, {Le-Lisp} and
	{Scheme}.  The standard's goals are object orientation,
	extensibility, efficiency, and suitability for non-academic
	use.

	The standard is defined in {ISO} WG 16, draft Dec 1992.

	{(ftp://ma2s2.mathematik.uni-karlsruhe.de/pub/lisp/islisp/)}

	(14 Feb 1995)

ISMAP

	(World-Wide Web) An attribute of the {HTML} tag <IMG> (inline
	image) which specifies that if the image is selected, the
	{browser} will generate a request indicating the coordinates
	of the point which was clicked.  This request is then
	interpreted by the server by mapping certain regions of the
	image to certain actions.

	{Documentation
	(http://www.utirc.utoronto.ca/HTMLdocs/NewHTML/image.html)}.

	(14 Feb 1995)

ISO

	{International Organization for Standardization}

	Not an acronym, a prefix.

ISO 10646

	{Universal Character Set}

ISO 8072

	{transport layer}

ISO 8073

	{transport layer}

ISO 8208

	{X.25}

ISO 8326

	{session layer}

ISO 8327

	{session layer}

ISO 8613

	{Open Document Architecture}

ISO 8649

	{Association Control Service Element}

ISO 8650

	{Association Control Service Element}

ISO 8805

	{GKS-3D}

ISO 8807

	{LOTOS}

ISO 8822

	{presentation layer}

ISO 8823

	{presentation layer}

ISO 8825

	{Basic Encoding Rules}

ISO 8859

	<standard, character> ("ISO Latin 1") One of {ISO}'s 8 bit
	single-byte coded graphic {character sets} for European
	languages.

	Part 1 (full name: "ISO 8859-1:1987 Information processing --
	8-bit single-byte coded graphic character sets -- Part 1:
	Latin alphabet No. 1") is a common extension of, and
	replacement for, {ASCII}.

	{(http://www.iso.ch/cate/d16338.html)}

	{ISO 8879:1986//ENTITIES Added Latin 1//EN"
	(http://www.w3.org/hypertext/WWW/MarkUp/ISOlat1.html)}
	defines some extra(?) characters used in {SGML}.

	(03 May 1995)

ISO 8859-1

	<standard, character> Part 1 of {ISO 8859}.

	(12 May 1995)

ISO 8879

	<standard, character> The {ISO} standard defining {SGML}.

	(03 May 1995)

ISO 9000

	A set of international {standard}s for both quality management
	and quality assurance that has been adopted by over 90
	countries worldwide.  The ISO 9000 standards apply to all
	types of organisations, large and small, and in many
	industries.

	The standards require: standard language for documenting
	quality processes; system to manage evidence that these
	practices are instituted throughout an organisation; and
	third-party auditing to review, certify, and maintain
	certification of organisations.  The ISO 9000 series
	classifies products into generic product categories: hardware,
	software, processed materials, and services.

	Documentation is at the core of ISO 9000 conformance. In fact,
	the standards have been paraphrased as:

	"Say what you do.  Do what you say.  Write it down."

	In Britain it is associated with BS5750 which may become
	obsolete.

	["The ISO 9000 Guide," c. 1993 Interleaf, Inc].

	(30 Jan 1995)

ISO 9072

	{Remote Operations Service Element}

ISO 9660

	<standard> The {ISO} {standard} defining a {file system} for
	{CD-ROM}s.

	(28 Mar 1995)

ISO 9735

	<standard, protocol> (Or "EDIFACT") {ISO}'s 1988 {standard}
	for Electronic data interchange for administration, commerce
	and transport.  It defines {application layer} {syntax}.  It
	was amended and reprinted in 1990.

	{(http://www.iso.ch/cate/d17592.html)}

	(10 Mar 1995)

ISOC

	{Internet Society}

ISO C

	{ANSI C}

isochronous

	A form of data transmission in which individual characters are
	only separated by a whole number of bit-length intervals.
	Contrast with {asynchronous} transmission in which the
	characters may be separated by random-length intervals and
	with {synchronous} transmission.

	An isochronous service transmits asynchronous data over a
	synchronous data link.  An isochronous service must be able to
	deliver bandwidth at specfic, regular intervals.  It is
	required when time-dependent data, such as video or voice, is
	to be transmitted.  For example, {Asynchronous Transfer Mode}
	can provide isochronous service.

	[ANIXTER, LAN Magazine 7.93]

	(08 Feb 1995)

ISODE

	{ISO Development Environment}

ISO Development Environment

	(ISODE) /eye-so-dee-eee/ Software that implements a set of
	{OSI} upper-layer services.  It supports OSI applications on
	top of OSI and {TCP/IP} networks.

	(15 Dec 1994)

ISO/IEC 10646-1

	{Universal Character Set}

isolated

	{compact}

ISO Latin 1

	{ISO 8859}

isometry

	<mathematics> A {mapping} of a {metric space} onto another or
	onto itself so that the distance between any two points in the
	original space is the same as the distance between their
	images in the second space.  For example, any combination of
	rotation and translation is an isometry of the plane.

	(13 Dec 1997)

isomorphic

	<mathematics> Two mathematical objects are isomorphic if they
	have the same structure, i.e. if there is an {isomorphism}
	between them.  For every component of one there is a
	corresponding component of the other.

	(25 Mar 1995)

isomorphism

	<mathematics> A {bijective} {map} between two objects which
	preserves, in both directions, any structure under
	consideration.  Thus a `group isomorphism' preserves group
	structure; an order isomorphism (between {poset}s) preserves
	the order relation, and so on.  Usually it is clear from
	context what sort of isomorphism is intended.

	(25 Mar 1995)

isomorphism class

	<mathematics> A collection of all the objects {isomorphic} to
	a given object.  Talking about the isomorphism class (of a
	{poset}, say) ensures that we will only consider its
	properties as a poset, and will not consider other incidental
	properties it happens to have.

	(25 Mar 1995)

ISO Pascal

	A {Lex} {scanner} and {Yacc} {parser} are in the
	comp.sources.unix volume 13 archive.

	[More detail?]

ISO seven layer model

	{Open Systems Interconnect}

ISP

	1. {Internet Service Provider}.

	2. {Instruction Set Processor}.

ISPBX

	{Integrated Services Digital Network} {PBX}.

ISPF

	{Interactive System Programming Facility}

ISPL

	Instruction Set Processor Language.  The original {ISP}
	language, written in {BLISS} ca 1971.

	["Computer Structures: Readings and Examples", D.P. Siewiorek
	et al, McGraw-Hill 1982].

ISPS

	Instruction Set Processor Specifications.  Operational
	hardware specification language.  Successor to ISPL.

	["Instruction Set Processor Specifications", M.R. Barbacci et
	al, IEEE Trans Computers, C-30(1):24-80 (Jan 1981)].

	[Bell, Newell, Siewiorek, Barbacci 1982?]

IST

	<company> {Imperial Software Technology}.

	(12 Oct 1995)

ISTAR

	<programming, tool> An experimental {IPSE} from {Imperial
	Software Technology}.

	(12 Oct 1995)

ISV

	Independent Software Vendor (not a hardware manufacturer).

ISWIM

	If You See What I Mean.  Landin 1966.  ISWIM is {purely
	functional}, a sugaring of {lambda-calculus}, and the ancestor
	of most modern {applicative} languages.  An ISWIM program is a
	single expression qualified by 'where' clauses (auxiliary
	definitions including equations among variables), conditional
	expressions and function definitions.  ISWIM was the first
	language to use {lazy evaluation} and introduced the {offside
	rule} for indentation.

	["The Next 700 Programming Languages", P.J. Landin, CACM
	9(3):157-166 (Mar 1966)].

IT

	1. {Information Technology}.

	2. {Internal Translator}.

ITAR

	<legal> {International Traffic in Arms Regulation}.

iteration

	Repetition of a sequence of instructions.  A fundamental part
	of many algorithms.  Iteration is characterised by a set of
	initial conditions, an iterative step and a termination
	condition.  A well known example of iteration in mathematics
	is Newton-Raphson iteration.  Iteration in programs is
	expressed using loops, e.g. in C:

		new_x = n/2;
		do
		{
		  x = new_x;
		  new_x = 0.5 * (x + n/x);
		} while (abs(new_x-x) > epsilon);

	Iteration can be expressed in functional languages using
	recursion:

		solve x n = if abs(new_x-x) > epsilon
			    then solve new_x n
			    else new_x
			    where new_x = 0.5 *

	(x + n/x) 	solve n/2 n

iterative deepening

	A graph search algorithm.  When searching for a path through a
	graph from a given initial node to a solution node with some
	desired property, a {depth-first search} may never find a
	solution if it enters a cycle in the graph.  We can either add
	an explicit check for cycles so that we never extend a path
	with a node it already contains or we can use iterative
	deepening where we explore all paths up to length (or "depth")
	N, starting from N=0 and increasing N until a solution is
	found.

	(14 Feb 1995)

Iternet

	<spelling> Misspelling of "{Internet}".

	(07 Apr 1997)

ITHACA

	An Esprit project to put a "4th generation" object-oriented
	system to practical use in an industrial environment.  The
	ITHACA environment offers an application support system
	incorporating advanced technologies in the fields of
	object-oriented programming, programming languages, database
	technologies, user interface systems and software development
	tools.

ITIL

	{Information Technology Infrastructure Library}

ITS

	1. Incompatible {time-sharing} System

	An influential but highly idiosyncratic {operating system}
	written for the {PDP-6} and {PDP-10} at {MIT} and long used at
	the {MIT AI Lab}.  Much AI-hacker jargon derives from ITS
	folklore, and to have been "an ITS hacker" qualifies one
	instantly as an old-timer of the most venerable sort.  ITS
	pioneered many important innovations, including transparent
	file sharing between machines and terminal-independent I/O.
	After about 1982, most actual work was shifted to newer
	machines, with the remaining ITS boxes run essentially as a
	hobby and service to the hacker community.  The shutdown of
	the lab's last ITS machine in May 1990 marked the end of an
	era and sent old-time hackers into mourning nationwide (see
	{high moby}).  The Royal Institute of Technology in Sweden is
	maintaining one "live" ITS site at its computer museum (right
	next to the only {TOPS-10} system still on the {Internet}), so
	ITS is still alleged to hold the record for OS in longest
	continuous use (however, {WAITS} is a credible rival for this
	palm).

	2. A mythical image of {operating system} perfection worshiped
	by a bizarre, fervent retro-cult of old-time hackers and
	ex-users (see {troglodyte}).  ITS worshipers manage somehow to
	continue believing that an OS maintained by {assembly
	language} hand-hacking that supported only monocase
	6-character filenames in one directory per account remains
	superior to today's state of commercial art (their venom
	against {Unix} is particularly intense).

	See also {holy wars}, {Weenix}.

	(15 Dec 1994)

it's a feature

	<jargon> From the adage "It's not a bug, it's a feature."
	Used sarcastically to describe an unpleasant experience that
	you wish to gloss over.

	(29 Apr 1997)

ITU

	{International Telecommunications Union}

ITU-T

	{International Telecommunications Union}

ITU X.209

	{Basic Encoding Rules}

Ivan

	A {Diana}-like language making up part of {VHDL}.

	["VHDL - The Designer Environment", A. Gilman, IEEE Design &
	Test 3, (Apr 1986)].

Ivan Sutherland

	Ivan E. Sutherland is widely known for his pioneering
	contributions.  His 1963 MIT PhD thesis, {Sketchpad}, opened
	the field of computer graphics.  His 1966 work, with Sproull,
	on a head-mounted display anticipated today's {virtual
	reality} by 25 years.  He co-founded {Evans and Sutherland},
	which manufactures the most advanced computer image generators
	now in use.  As head of Computer Science Department of
	{Caltech} he helped make {integrated circuit} design an
	acceptable field of academic study.  Dr. Sutherland is on the
	boards of several small companies and is a member of the
	National Academy of Engineering and the National Academy of
	Sciences, the {ACM} and {IEEE}.  He received the {ACM}'s
	{Turing Award} in 1988.  He is now Vice President and Fellow
	of {Sun Microsystems} Laboratories in Mountain View, CA, USA.

	(16 Nov 1994)

Iverson's Language

	{APL}, which went unnamed for many years.

	[Sammet 1969, p.770].

	(16 Nov 1994)

IVR

	{Interactive Voice Response}

ivs

	{INRIA} Videoconferencing System.

	A {video-conferencing} tool for the {Internet} based on the
	{H.261} {video compression} {standard}.

	{(http://zenon.inria.fr:8003/rodeo/personnel/Thierry.Turletti/ivs.html)}

	(16 Nov 1994)

IVTRAN

	Parallel {FORTRAN} for the {Illiac IV}.  1966.

IV&V

	{Independent Verification and Validation}

IVY

	A language with a more pleasant syntax than {Perl}, {tcl} or
	{Lisp}.  It has nice features like low punctuation count,
	blocks indicated by indentation, and similarity to normal
	procedural languages.  This language started out as an idea
	for an extension language for the editor {JOE}.

	An experimental {interpreter} by Joseph H Allen
	<jhallen@world.std.com> was posted to {alt.sources} on 28 Sep
	1993.

IWay

	{Information Superhighway}

IWBNI

	It Would Be Nice If.

	Compare {WIBNI}.

	(24 Nov 1994)

IXC

	{IntereXchange Carrier}

IXI Limited

	<company> A Cambridge, England company who were the leading
	supplier of {Unix} System windowing software when they were
	acquired by {SCO} in February 1993.

	(12 Dec 1994)

IXO

	{Telocator Alphanumeric Protocol}

IYFEG

	({Usenet}) Insert Your Favourite Ethnic Group.

	Used as a meta-name when telling ethnic jokes on the net to
	avoid offending anyone.

	See also {JEDR}.

	(24 Nov 1994)

J

	A derivative and redesign of {APL} with added features and
	control structures.  J is {purely functional} with {lexical
	scope} and more conventional control structures, plus several
	new concepts such as {function rank} and {function array}s.  J
	was designed and developed by Kennneth E. Iverson and Roger
	Hui <hui@yrloc.ipsa.reuter.com>.  J uses only the {ASCII}
	character set but has a spelling scheme that retains the
	advantages of {APL}'s special alphabet.  J is a conventional
	procedural programming language but can be used as a {purely
	functional} language.

	Version 4.1 for {MS-DOS}, Sun, Mac, Archimedes.  Source
	available in C from {Iverson Software}, +1 (416) 925 6096.

	Version 6 package from ISI includes an interpreter and
	tutorial.  Ported to {DEC}, {NeXT}, {SGI}, {Sun-3}, {Sun-4},
	{Vax}, {RS/6000}, {MIPS}, {Macintosh}, {Acorn Archimedes},
	{IBM PC}, {Atari}, {3b1}, {Amiga}.

	{(ftp://watserv1.waterloo.edu/languages/apl/j)}

	J-mode {GNU Emacs} macros available by
	{(ftp://think.com/pub/j/gmacs/j-interaction-mode.el)}.

	["APL\?", Roger K.W. Hui et al, APL90 Conf Proc, Quote Quad
	20(4):192-200].

	(31 Oct 1992)

J3

	A dialect of {JOVIAL}.

	["Military Standard JOVIAL (J3)", MIL-STD-1588 (USAF), June
	1976].

	(07 Dec 1994)

J73

	A dialect of {JOVIAL}.

	["Military Standard JOVIAL (J73)", MIL-STD-1589 (USAF), Feb
	1977].

	(07 Dec 1994)

jabber

	<networking> An event that occurs when a device on a network
	using the {LAT} {protocol} continues to broadcast its
	availability even though its availability status is known by
	the network.

	(10 May 1996)

JACAL

	JAffer's CAnonical ALgebra.

	A {symbolic mathematics} program written in {Scheme} by
	A. Jaffer <jaffer@zurich.ai.mit.edu>.

	{(ftp://altdorf.ai.mit.edu/archive/scm/jacal1a0.tar.Z)}

	(07 Dec 1994)

jaccl

	<tool> An {LR1 grammar} {parser generator} by Dave Jones
	<djones@megatest.uucp>.

	(08 Sep 1989)

jack in

	To log on to a machine or connect to a network or {BBS},
	especially for purposes of entering a {virtual reality}
	simulation such as a {MUD} or {IRC} (leaving is "jacking
	out").  This term derives from {cyberpunk} SF, in which it was
	used for the act of plugging an electrode set into neural
	sockets in order to interface the brain directly to a virtual
	reality.  It is primarily used by MUD and IRC fans and younger
	hackers on BBS systems.

Jack Kilby

	<person> The {Texas Instruments} engineer who invented the
	{integrated circuit} in 1958.  The {JK flip-flop} was named
	after him.

	(03 Jul 1997)

Jackson method

	A proprietary structured method for software analysis, design
	and programming.

JAD

	{Joint Application Design}

	Or "Joint Application Development".

	[What is it?]

	(15 Nov 1995)

JADE

	{James' DSSSL Engine}

Jade

	1. U Washington, late 80's.  A strongly-typed language,
	object-oriented but without classes.  For type research.  The
	compiler output is Smalltalk.  [Submitter claimed that Jade
	has exactly one user!]

	2. Implicit coarse-grained concurrency.  The constructs
	'with', 'withonly' and 'without' create tasks with specified
	side effects to shared data objects.  Implemented as a C
	preprocessor.  "Coarse-Grain Parallel Programming in Jade",
	M.S. Lam et al, SIGPLAN Notices 26(7):94-105 (Jul 1991).

jadeTeX

	<text, tool> A program which uses {TeX} as a back-end for
	producing {DVI} (or {PDF}) printable output from {James' DSSSL
	Engine}.

	{(ftp://ftp.tug.org/tex-archive/macros/jadetex/)}.

	(20 Nov 1997)

jaggies

	<graphics> /jag'eez/ (Or "staircase") The "staircase" effect
	observable when an edge (especially a linear edge of very
	shallow or steep slope) is rendered on a {bitmap display} (as
	opposed to a {vector display}).  The effect is even more
	pronounced when a bitmap image or text in a bitmap font is
	enlarged.  {Outline fonts} and {anti-aliasing} are two
	techniques used to solve this problem with text.

	(01 Dec 1997)

JaM

	John and Martin.  An interpreted {FORTH}-like graphics
	language by John Warnock and Martin Newell, {Xerox PARC},
	1978.  JaM was the forerunner of both {Interpress} and
	{PostScript}.  It is mentioned in PostScript Language
	reference Manual, Adobe Systems, A-W 1985.

jam

	A condition on a network where two nodes transmitting
	simultaneously detect the collision and continue to transmit
	for a certain time (4 to 6 bytes on Ethernet) to ensure that
	the collision has been detected by all nodes involved.

	(12 Dec 1994)

James' DSSSL Engine

	<text, tool> (JADE) A {DSSSL} tool by {James Clark}.  Jade is
	an implementation of the DSSSL style language for {Unix} and
	{Microsoft Windows}.  It can turn the {SGML} source of the
	DSSSL standard into an {RTF} file of about 200 pages using a
	fairly complex DSSSL specification.

	{Home (http://www.jclark.com/)}.

	(13 Oct 1996)

James Gosling

	<person> The software engineer who wrote {GOSMACS}, and served
	as {Sun Microsystems, Inc.} project leader for both {NeWS},
	and {Java}.  He is currently (1997) a Vice President and
	"Distinguished Engineer" at Sun

	{Home (http://java.sun.com:80/people/jag/)}.

	{Biography
	(http://www.sun.com/sunergy/Bios/gosling_bio.html)}.

	(12 Mar 1997)

JANET

	{Joint Academic NETwork}

JANET IP Service

	<networking> (JIPS) {Joint Academic NETwork} {Internet
	Protocol}.

	E-mail: <jips-nosc@nic.ja.net>.

	[Details?]

	(12 Dec 1994)

Janus

	1. Distributed language with an ask/tell constraint system.

	{qdjanus} is a Janus-to-{Prolog} compiler for {Sicstus Prolog}
	and {jc} is compiles to {C}.

	["Janus: A Step Towards Distributed Constraint Programming",
	V. Saraswat <saraswat@parc.xerox.com> et al in Logic
	Programming: Proc 1990 North Am Conf, S. Debray et al eds, MIT
	Press 1990].

	["Programming in Janus", Saraswat, Kahn, and Levy].

	2. W.M. Waite, U Colorado.  Intermediate language, claimed as
	an implementation of {UNCOL}.  Used on {CDC 6600}.

	["Experience with the Universal Intermediate Language Janus",
	B.K. Haddon et al, Soft Prac & Exp 8(5):601- 616 (Sep 1978)].

japh

	<programming> A {Perl} program which prints "Just another Perl
	hacker" using extremely obfuscated methods, typically ones
	based on obscure behaviors of sometimes rarely-used functions,
	in the spirit of the {Obfuscated C Contest}.

	The obfuscation can result from the code being total
	gibberish, e.g.:

	 $_="krJhruaesrltre c a cnp,ohet";$_.=$1,print$2while s/(..)(.)//;

	or from having "Just another Perl hacker" embedded in opaque
	code:

	 $_='987;s/^(\d+)/$1-1/e;$1?eval:print"Just another Perl hacker,"';eval

	or from looking like it does something simple and completely
	unrelated to printing "Just another Perl hacker":

	 $_ = "wftedskaebjgdpjgidbsmnjgc";
	 tr/a-z/oh, turtleneck Phrase Jar!/; print;

	{Examples (http://www.perl.com/CPAN/misc/japh)}.

	(14 Sep 1997)

Jargon File

	<jargon, publication, humour> The on-line hacker Jargon File.
	A large collection of (often amusing) definitions of computing
	terms.

	Many definitions in {this dictionary} are from v3.0.0, 27 Jul
	1993.  The current version is 4.0.0 (25 Jul 1996) which
	corresponds to the third paper edition entitled "The New
	Hacker's Dictionary", due out in September 1996.

	The file is available through ftp at any of the {GNU archives}
	as jarg400.txt.

	{Home (http://www.ccil.org/jargon/jargon.html)}.

	{CNAM HTML version (http://web.cnam.fr/Jargon/)}.

	See also {Yellow Book, Jargon}.

	(04 Nov 1997)

Java

	<World-Wide Web, language> (After the Indonesian island, a
	source of {programming fluid}) A simple, {object-oriented},
	{distributed}, {interpreted}, robust, secure,
	{architecture-neutral}, {portable}, {multithreaded}, dynamic,
	buzzword-compliant, general-purpose programming language
	developed by {Sun Microsystems} in 1995(?).  Java supports
	programming for the {Internet} in the form of
	{platform}-independent Java "applets".

	Java is similar to {C++} without {operator overloading}
	(though it does have {method} overloading), without {multiple
	inheritance}, and extensive automatic {coercions}.  It has
	automatic {garbage collection}.

	Java programs can run stand-alone on small computers.  The
	{interpreter} and {class} support take about 40 kilobytes;
	adding the standard libraries and {thread} support
	(essentially a self-contained {microkernel}) adds an
	additional 175Kb.

	Java extends {C++}'s {object-oriented} facilities with those
	of {Objective C} for {dynamic method resolution}.

	Java has an extensive library of routines for {TCP/IP}
	{protocols} like {HTTP} and {FTP}.  Java applications can
	access objects across the {Internet} via {URL}s as easily as
	on the local {file system}.

	The Java compiler and {linker} both enforce {strong type
	checking} - procedures must be explicitly typed.  Java
	supports the creation of {virus}-free, tamper-free systems
	with {authentication} based on {public-key encryption}.

	The Java compiler generates an {architecture-neutral} {object
	file} executable on any processor supporting the Java {runtime
	system}.  The object code consists of {bytecode} instructions
	designed to be both easy to interpret on any machine and
	easily translated into {native} {machine code} at load time.

	The Java libraries provide portable interfaces.  For example,
	there is an abstract Window class and implementations of it
	for {Unix}, {Microsoft Windows} and the {Macintosh}.  The
	runtime system is written in {POSIX}-compliant {ANSI C}.  Java
	applets can be executed as attachments in {World-Wide Web}
	documents using either Sun's {HotJava} browser or {Netscape
	Navigator} version 2.0.

	{Home (http://java.sun.com/)}

	{Usenet} newsgroup: {news:comp.lang.java}.

	E-mail: <java@java.sun.com>.

	(06 Dec 1995)

JavaBeans

	<programming> A {component architecture} for the {Java}
	programming language, developed initially by {Sun}, but now
	available from several other vendors.  JavaBeans components
	are called "{beans}".

	JavaBeans allows developers to create reusable software
	components that can then be assembled together using visual
	application builder tools including {Sybase}'s {PowerJ},
	{Borland}'s {JBuilder}, {IBM}'s {Visual Age for Java},
	{SunSoft}'s {Java Workshop} and {Symantec}'s {Visual Cafe}.

	JavaBeans support Introspection (a builder tool can analyze
	how a Bean works), Customisation (developers can customise the
	appearance and behavior of a Bean), Events (Beans can
	communicate), Properties (developers can customise and program
	with Beans(?)) and Persistence (customised Beans can be stored
	and reused).

	{Home (http://www.javasoft.com/beans/)}.

	(20 Nov 1997)

Java Database Connectivity

	<database, programming> (JDBC) Part of the {Java Development
	Kit} which defines an {application programming interface} for
	{Java} for standard {SQL} access to {databases} from Java
	{programs}.

	{Home
	(http://java.sun.com/products/jdk/1.1/docs/guide/jdbc/index.html)}.

	{FAQ (http://www.yoyoweb.com/Javanese/JDBC/FAQ.html)}.

	See also {Open Database Connectivity}.

	(04 Sep 1997)

Java Development Kit

	<language, compiler> (JDK) A free {Sun Microsystems} product
	which provides the {environment} required for programming in
	{Java}.  The JDK is available for a variety of {platforms},
	but most notably {Sun Solaris} and {Microsoft Windows}.

	{Home (http://java.sun.com/products/jdk/1.1/index.html)}.

	[Version?]

	(04 Sep 1997)

Java Native Interface

	<programming> (JNI) A {native} programming interface for
	{Java} that allows Java code running inside a {Java Virtual
	Machine} to interoperate with {applications} and {libraries}
	written in other programming languages such as {C}, {C++} and
	{assembly language}.

	(07 Dec 1997)

Java Open Language Toolkit

	<project> (JOLT) A project aimed at providing a freely
	available and redistributale implementation of {Sun
	Microsystems}'s {Java} language and tools.

	{Home (http://www.redhat.com/linux-info/jolt/)}.

	(17 Dec 1996)

JavaScript

	<language> (Formerly LiveScript) {Netscape}'s simple,
	cross-{platform}, {World-Wide Web} {scripting language}, only
	very vaguely related to {Java}.  JavaScript is intimately tied
	to the {World-Wide Web}, and currently runs in only three
	environments - as a {server}-side {scripting} language, as an
	embedded language in {server-parsed HTML}, and as an embedded
	language run in {browsers}.

	JavaScript may end up being more popular and entrenched than
	{Java}, due to the current (May 1997) prevalence of its
	primary {platform} (see below), and its ease of learning.  It
	has a simplified {C}-like {syntax}.  Its functionality is
	currently limited, being aimed primarily at enhanced {forms},
	simple web {database} {front-ends} and navigation
	enhancements.

	JavaScript originated from {Netscape}, and for a time, only
	{Netscape} products supported it.  {Microsoft} now supports
	it, but as a "work-a-like" called JScript.  The resulting
	inconsistencies make it difficult to write JavaScript that
	behaves the same in both {Netscape Navigator} and {Microsoft}
	Internet Explorer.  This could be attributed to the slow
	progress of JavaScript through the standards bodies.

	JavaScript runs "100x" slower than {C}, as it is purely
	interpreted ({Java} runs "10x" slower than C code).
	{Netscape} and allies say JavaScript is an "open standard" in
	an effort to keep {Microsoft} from monopolising web software
	as they have desktop software.  {Netscape} and {Sun} have
	co-operated to enable {Java} and JavaScript to exchange
	messages and data.

	JavaScript should not be confused with {Java}, and is a
	{Netscape}, not {Sun} trademark.

	See also {VBScript}.

	{Javascript Index (http://www.c2.org/~andreww/javascript)}.

	Mailing List: <majordomo@obscure.org> ("subscribe javascript"
	in body).

	(16 May 1997)

Java Virtual Machine

	<language, architecture> (JVM) A specification for software
	which interprets {Java} programs which have been compiled into
	{byte codes}.  The JVM {instruction set} is {stack}-oriented,
	with variable instruction length.  Unlike some other
	instruction sets, the JVM's supports {object-oriented}
	programming directly by including instructions for object
	{method} invocation (similar to {subroutine} call in other
	instruction sets).

	The JVM itself is written in {C} and so can be {ported} to run
	on most {platforms}.  It needs {thread} support and {I/O} (for
	{dynamic class loading}).  The Java byte code is independent
	of the platform.

	There are also some hardware implementations of the JVM.

	{Specification
	(http://www.javasoft.com/docs/books/vmspec/html/VMSpecTOC.doc.html)}.

	{Sun's Java chip
	(http://news.com/News/Item/0,4,9328,00.html)}.

	[Documentation?  Versions?]

	(12 Dec 1997)

JAZ

	<language> An early system on the {LGP-30}.

	[CACM 2(5):16, May 1959].

	(16 May 1997)

Jaz Drive

	<hardware, storage> {Iomega Corporation}'s drive which takes
	removable one {gigabyte} disks based on conventional {hard
	disk} technology.  Internal and external drives are available
	claiming an average transfer rate of 330 {megabytes} per
	minute - though that is dependant on the {SCSI} adapter, the
	parallel port adapter is unlikely to reach anything like this
	speed.  This disk is newer and ten times larger than the
	company's more establistablished {Zip Drive}.

	(26 Mar 1997)

JAZELLE

	<database> A data management system for High Energy Physics
	from Stanford Linear Accelerator.

	(22 Feb 1995)

JBIG

	{Joint Bi-level Image Experts Group}

jc

	Version 1.50 alpha

	compiler(->C)

	David Gudeman <gudeman@cs.arizona.edu>

	{(ftp://cs.arizona.edu/janus/jc/)}

	A janus-to-C compiler (considerably faster than qdjanus).  jc
	is a _sequential_ implementation of a _concurrent_ language.

	bugs:		<jc-bugs@cs.arizona.edu>

	ports:		sun-4, sun-3, Sequent Symmetry

	jc is an experimental system, undergoing rapid development.
	It is in alpha release currently.

	Mailing list:	janusinterest-request@parc.xerox.com

	(1992/06/09)

JCL

	{IBM}'s supremely {rude} Job Control Language.  JCL
	is the script language used to control the execution of
	programs in IBM {OS/360}'s batch systems.  JCL has a very
	{fascist} syntax, and some versions will, for example, {barf}
	if two spaces appear where it expects one.  Most programmers
	confronted with JCL simply copy a working file (or card deck),
	changing the file names.  Someone who actually understands and
	generates unique JCL is regarded with the mixed respect one
	gives to someone who memorises the phone book.  It is reported
	that hackers at IBM itself sometimes sing "Who's the breeder
	of the crud that mangles you and me?  I-B-M, J-C-L, M-o-u-s-e"
	to the tune of the "Mickey Mouse Club" theme to express their
	opinion of the beast.

	As with {COBOL}, JCL is often used as an archetype of ugliness
	even by those who haven't experienced it.  See also {fear and
	loathing}.

JCS-13

	<language> An early system on the {IBM 701}.

	[Listed in CACM 2(5):16, May 1959].

	(16 Jun 1997)

JDBC

	{Java Database Connectivity}

JDK

	{Java Development Kit}

JEAN

	<language> A dialect of {JOSS}.

	[Details?]

	(14 Sep 1997)

JEDR

	<person, abuse, humour> Synonymous with {IYFEG}.  At one time,
	people in the {Usenet} {newsgroup} {news:rec.humor.funny}
	tended to use "JEDR" instead of {IYFEG} or "<ethnic>"; this
	stemmed from a public attempt to suppress the group once made
	by a loser with initials JEDR after he was offended by an
	ethnic joke posted there.  (The practice was {retcon}ned by
	expanding these initials as "Joke Ethnic/Denomination/Race".)
	After much sound and fury JEDR faded away; this term appears
	to be doing likewise.  JEDR's only permanent effect on the
	net.culture was to discredit "sensitivity" arguments for
	censorship so thoroughly that more recent attempts to raise
	them have met with immediate and near-universal rejection.

	(22 Nov 1994)

Jerry Sussman

	{Gerald Sussman}

JES

	{job entry system}

JES2

	<operating system> One of {IBM}'s {job entry system}s for
	{MVS}.

	(16 Aug 1995)

JES3

	<operating system> One of {IBM}'s {job entry system}s for
	{MVS}.

	(16 Aug 1995)

JFCL

	/jif'kl/, /jaf'kl/, /j*-fi'kl/ (obsolete) To cancel or annul
	something.  "Why don't you jfcl that out?"  The fastest
	do-nothing instruction on older models of the {PDP-10}
	happened to be JFCL, which stands for "Jump if Flag set and
	then CLear the flag"; this does something useful, but is a
	very fast no-operation if no flag is specified.  Geoff
	Goodfellow, one of the jargon-1 co-authors, had JFCL on the
	licence plate of his BMW for years.  Usage: rare except among
	old-time PDP-10 hackers.

	(22 Nov 1994)

JFET

	{Junction Field Effect Transistor}

JFIF

	{JPEG File Interchange Format}

jiffy

	1. The duration of one {tick} of the computer's {system
	clock}.  Often one AC cycle time (1/60 second in the US and
	Canada, 1/50 most other places), but more recently 1/100 sec
	has become common.

	2. Confusingly, the term is sometimes also used for a
	1-millisecond {wall time} interval.  Even more confusingly,
	physicists semi-jokingly use "jiffy" to mean the time required
	for light to travel one foot in a vacuum, which turns out to
	be close to one *nanosecond*.

JIPS

	{JANET IP Service}

jitter

	Random variation in the timing of a signal, especially a
	clock.

	(16 Jan 1995)

JK flip-flop

	<hardware> An {edge triggered} {SR flip-flop} with extra logic
	such that only one of the R and S inputs is enabled at any
	time.  This prevents a {race condition} which can occur when
	both inputs of an RS flip-flop are active at the same time.
	In a JK flip-flop the R and S inputs are renamed J and K
	(after {Jack Kilby}).  The set input (J) is only enabled when
	the flip-flop is reset and K when it is set.

	If both J and K inputs are held active then the outputs will
	change ("togle") on each falling edge of the clock.  JK
	flip-flops can be used to build a {binary counter} with a
	reset input.

	{(http://www.play-hookey.com/digital/logic7.html)}.

	(03 Jul 1997)

JNI

	{Java Native Interface}

job

	<operating system> All the activities involved in completing
	any project on a computer from start to finish.  A job may
	involve several processes and several programs.

	This term is rather old fashioned and harks back to the days
	of {batch} processing where a user would submit his job as a
	deck of {punched card}s which would typically include {source
	code} interspersed with {job control language} instructions to
	guide the various phases of the job such as compilation,
	linking, execution and printing.

	(07 May 1995)

Job Entry System

	<operating system> (JES) An {IBM} {mainframe} term.  There are
	really two JESs.  JES2 is smaller and simpler, and can handle
	99.99% of most jobs that run on IBM's {MVS} {operating
	system}.  JES3 is much bigger and requires really {big iron}
	to run.

	(23 Mar 1996)

Jobs

	{Stephen Jobs}

job security

	<jargon> When some piece of code is written in a particularly
	obscure fashion, and no good reason (such as time or space
	optimisation) can be discovered, it is often said that the
	programmer was attempting to increase his job security (i.e.
	by making himself indispensable for maintenance).  This sour
	joke seldom has to be said in full; if two hackers are looking
	over some code together and one points at a section and says
	"job security", the other one may just nod.

	(17 Sep 1996)

jock

	1. A programmer who is characterised by large and somewhat
	{brute-force} programs.

	2. When modified by another noun, describes a specialist in
	some particular computing area.  The compounds "compiler jock"
	and "systems jock" seem to be the best-established examples.

	(19 Jan 1995)

joe

	<jargon, security> A computer account whose username and
	password are the same.  Joes are {considered harmful}, as are
	any passwords which are easy to guess.

	(21 Jun 1995)

joe code

	/joh' kohd"/ 1. Code that is overly {tense} and
	unmaintainable.  "{Perl} may be a handy program, but if you
	look at the source, it's complete joe code."

	2. Badly written, possibly buggy code.

	Correspondents wishing to remain anonymous have fingered a
	particular Joe at the Lawrence Berkeley Laboratory and
	observed that usage has drifted slightly; the original
	sobriquet "Joe code" was intended in sense 1.

John Gilmore

	<person> A noted {Unix} {hacker} who cofounder of {Usenet}'s
	anarchic alt.* {newsgroup} {hierarchy} with {Brian Reid}.

	E-mail: John Gilmore <gnu@toad.com>.

	(18 Apr 1995)

John McCarthy

	A pioneer of {artificial intelligence}.  He invented {Lisp} at
	{MIT} in the late 1950s and later worked at {SAIL}.

	{(ftp://www-formal.stanford.edu/jmc)}

	E-mail: <jmc@cs.stanford.edu>.

	(22 Nov 1994)

join

	{least upper bound}

Joint Academic NETwork

	(JANET) The {wide area network} which links UK academic and
	research institutes.  JANET is controlled by the {Joint
	Network Team} (JNT) and Network Executive (NE).  It is an
	{internet} (a large number of interconnected sub-networks)
	that provides connectivity within the community as well as
	access to external services and other communities.  The {hub}
	is the JANET subnetwork, a private {X.25} {packet-switched}
	network that interconnects over 100 sites.  At the majority of
	sites, {local area network}s (LANs) are connected to JANET
	allowing off-site access for the computers and terminals
	connected to these networks.  The {Coloured Book} {protocol}
	architecture is used to support interactive terminal access to
	computers (for both character terminals and screen terminals),
	inter-host file transfers, {electronic mail} and remote
	{batch} job submission.

	{Home (http://nic.ja.net/)}

	See also {JIPS}, {SuperJanet}.

	(07 Feb 1995)

Joint Bi-level Image Experts Group

	(JBIG) An experts group of {ISO}, {IEC} and {ITU-T}
	(JTC1/SC2/WG9 and SGVIII) whose job is to define a
	{compression} {standard} for {lossless} {image} coding.  Their
	proposed {algorithm} features compatible
	{progressive/sequential coding} and is lossless - the image is
	unaltered after compression and decompression.

	JBIG parameter P specifies the number of bits per {pixel} in
	the image (from 1 to 255).  Better compression algorithms
	exist for more than about eight bits per pixel.  With multiple
	bits per piexl, {Gray code} can be used to reduce the number
	of bit changes between adjacent decimal values (e.g. 127 and
	128), and thus improve the compression which JBIG does on each
	{bitplane}.

	JBIG uses discrete steps of detail by successively doubling
	the resolution.  The sender computes a number of resolution
	layers D, and transmits these starting at the lowest
	resolution Dl.  Resolution reduction uses pixels in the high
	resolution layer and some already computed low resolution
	pixels as an index into a lookup table. The contents of this
	table can be specified by the user.

	Compatibility between progressive and sequential coding is
	achieved by dividing an image into stripes.  Each stripe is a
	horizontal bar with a user definable height.  Each stripe is
	separately coded and transmitted, and the user can define in
	which order stripes, resolutions and bitplanes (if P>1) are
	intermixed in the coded data.  A progressively coded image can
	be decoded sequentially by decoding each stripe, beginning by
	the one at the top of the image, to its full resolution, and
	then proceeding to the next stripe.  Progressive decoding can
	be done by decoding only a specific resolution layer from all
	stripes.

	After dividing an image into {bitplane}s, {resolution layer}s
	and stripes, eventually a number of small bi-level {bitmap}s
	are left to compress.  Compression is done using a {Q-coder}.

	The Q-coder codes bi-level pixels as symbols using the
	probability of occurrence of these symbols in a certain
	context.  JBIG defines two kinds of context, one for the
	lowest resolution layer (the base layer), and one for all
	other layers (differential layers).  Differential layer
	contexts contain pixels in the layer to be coded, and in the
	corresponding lower resolution layer.

	For each combination of pixel values in a context, the
	probability distribution of black and white pixels can be
	different.  In an all white context, the probability of coding
	a white pixel will be much greater than that of coding a black
	pixel.  The Q-coder, like a {Huffman} coder, assigns more bits
	to less probable symbols, and so achieves {compression}.  The
	Q-coder can, unlike a Huffman coder, assign one output code
	bit to more than one input symbol, and thus is able to
	compress bi-level pixels without explicit {clustering}, as
	would be necessary using a Huffman coder.

	[What is "clustering"?]

	Maximum compression will be achieved when all probabilities
	(one set for each combination of pixel values in the context)
	follow the probabilities of the pixels.  The Q-coder therefore
	continuously adapts these probabilities to the symbols it
	sees.

	JBIG can be regarded as two combined algorithms:

	(1) Sending or storing multiple representations of images at
	different resolutions with no extra storage cost.
	Differential layer contexts contain pixels in two resolution
	layers, and so enable the Q-coder to effectively code the
	difference in information between the two layers, instead of
	the information contained in every layer.  This means that,
	within a margin of approximately 5%, the number of resolution
	layers doesn't effect the compression ratio.

	(2) A very efficient compression algorithm, mainly for use
	with bi-level images.  Compared to {CCITT Group 4}, JBIG is
	approximately 10% to 50% better on text and line art, and even
	better on {halftones}.  JBIG, just like Group 4, gives worse
	compression in the presence of noise in images.

	An example application would be browsing through an image
	database.

	["An overview of the basic principles of the Q-coder adaptive
	binary arithmetic coder", W.B. Pennebaker, J.L. Mitchell,
	G.G. Langdon, R.B. Arps, IBM Journal of research and
	development, Vol.32, No.6, November 1988, pp. 771-726].

	See also {progressive coding}.

	{(http://www.crs4.it/~luigi/MPEG/jbig.html)}

	(01 Mar 1995)

Joint Photographic Experts Group

	<file format> (JPEG) The original name of the committee that
	designed the standard image compression {algorithm}.  JPEG is
	designed for compressing either full-colour or {grey-scale}
	digital images of "natural", real-world scenes.  It does not
	work so well on non-realistic images, such as cartoons or line
	drawings.  JPEG does not handle compression of black-and-white
	(1 bit-per-pixel) images or moving pictures.  Standards for
	compressing those types of images are being worked on by other
	committees, named {JBIG} and {MPEG}.

	{Filename extension}: .jpg, .jpeg.

	(17 Sep 1996)

Joint Technical Committee

	<standard, body> (JTC) A {standard}s body straddling {ISO} and
	{IEC}.

	(21 Apr 1995)

jolix

	/joh'liks/ 386BSD, the {freeware} port of the {BSD} {Net/2}
	release to the {Intel} {i386} architecture by Bill Jolitz and
	friends.  Used to differentiate from BSDI's port based on the
	same source tape, which is called {BSD/386}.

JOLT

	{Java Open Language Toolkit}

Jon Postel

	<person> One of the founding fathers of the {Internet}.  Jon's
	name is prominent on many of the fundamental {standards} on
	which the Internet is built, such as {UDP}.  He has run the
	{IANA} for as long as anybody cares to remember (Feb 1998).

	He is also the author of {STD 1} and {STD 2}.

	(11 Feb 1998)

JOOP

	{Journal of Object-Oriented Programming}

JOSS

	JOHNNIAC Open Shop System.  Charles L. Baker, RAND 1964.  An
	early simple interactive calculator language.  "JOSS Users'
	Reference Manual", R.L. Clark, Report F-1535/9, RAND Corp (Jan
	1975) Sammet 1969, pp.217-226.  Versions: JOSS I and JOSS II.

Jossle

	Type checked language with separate compilation using a
	program library.  Mentioned in "Rationale for the Design of
	Ada", J.  Ichbiah, Cambridge U Press, 1986, p.192.

journalling

	<operating system> Keeping an on-going record of transactions,
	such as procedure calls, or message transmissions.

	(22 Sep 1996)

jove

	Jonathan's Own Version Of Emacs.  A version of the {GNU}
	{Emacs} editor.  Similar to {MicroGnuEmacs}.

JOVIAL

	<language> (Jule's Own Version of IAL) A version of {IAL}
	produced by Jules I. Schwartz in 1959-1960.  JOVIAL was based
	on {ALGOL 58}, with extensions for large scale {real-time}
	programming.  It saw extensive use by the US Air Force.  The
	data elements were items, entries ({record}s) and tables.

	Versions include JOVIAL I ({IBM 709}, 1960), JOVIAL II ({IBM
	7090}, 1961) and JOVIAL 3 (1965).  Dialects: {J3}, {JOVIAL
	J73}, {JS}, {JTS}.

	Ada/Jovial Newsletter, Dale Lange +1 (513) 255-4472.

	[CACM 6(12):721, Dec 1960].

	(19 Jul 1996)

Joyce

	A distributed language based on {Pascal} and {CSP}, by Per
	Brinch Hansen.

	["Joyce - A Programming Language for Distributed Systems", Per
	Brinch Hansen, Soft Prac & Exp 17(1):29-50 (Jan 1987)].

	(06 Dec 1994)

joystick

	<hardware, games> A device consisting of a hand held stick that
	pivots about one end and transmits its angle in two dimensions
	to a computer.  Joysticks are often used to control games, and
	usually have one or more push-buttons whose state can also be
	read by the computer.  Most I/O interface cards for {IBM PC}s
	have a joystick (game control) port.

	(08 Mar 1995)

Joy, William

	{William Joy}

JPEG

	{Joint Photographic Experts Group}

JPEG File Interchange Format

	<graphics, file format> (JFIF) The technical name for the file
	format better known as {JPEG}.  This term is used only when
	the difference between the JPEG file format and the JPEG image
	{compression} {algorithm} is crucial.

	(10 Feb 1998)

jpg

	{JPEG}

JPL

	JAM Programming Language.  Imperative string-based language,
	part of the JAM tool for developing screen (non-window)
	applications.  JYACC Corporation

JPLDIS

	{Jet Propulsion Laboratory} Display Information System.  Query
	system for {UNIVAC 1108} [or PDP's?] written in {FORTRAN},
	based on {Tymshare}'s "Retrieve".  Indirectly led to {Vulcan}
	which led to {dBASE II}.  Jack Hatfield, George Masters,
	W. Van Snyder, Jeb Long et al, JPL.

J. Presper Eckert

	<person> One of the developers of {ENIAC}.

	{Biography
	(http://www-groups.dcs.st-and.ac.uk/~history/ShortBiogs/E.html)}.

	[Summary?]

	(14 Nov 1995)

J. Random

	<jargon> /J rand'm/ (Generalised from {J. Random Hacker})
	Arbitrary; ordinary; any one; any old.  "J. Random" is often
	prefixed to a noun to make a name out of it.  It means roughly
	"some particular" or "any specific one".  "Would you let
	J. Random Loser marry your daughter?"  The most common uses
	are "J. Random Hacker", "J. Random Loser", and "J. Random
	Nerd" ("Should J. Random Loser be allowed to {gun} down other
	people?"), but it can be used simply as an elaborate version
	of {random} in any sense.

J. Random Hacker

	<jargon> /J rand'm hak'r/ {MIT} jargon for a mythical figure;
	the archetypal {hacker} nerd.

	This may originally have been inspired by "J. Fred Muggs", a
	show-biz chimpanzee whose name was a household word back in
	the early days of {TMRC}, and was probably influenced by
	{J. Presper Eckert} (one of the co-inventors of the electronic
	computer).

	See {random}, {Suzie COBOL}.

	(16 Oct 1996)

JRL

	{J. Random} Loser.  The names JRL and JRN were sometimes used
	as example names when discussing a kind of user ID used under
	{TOPS-10} and {WAITS}.  They were understood to be the
	initials of (fictitious) programmers named "J. Random Loser"
	and "J. Random Nerd".  For example, if one said "To log in,
	type log one comma jay are en" (that is, "log 1,JRN"), the
	listener would have understood that he should use his own
	computer ID in place of "JRN".

JRN

	{J. Random} Nerd.  See {JRL}.

JRST

	/jerst/ [based on the {PDP-10} jump instruction, obsolete] To
	suddenly change subjects, with no intention of returning to
	the previous topic.  Usage: rather rare except among PDP-10
	diehards, and considered silly.  See also {AOS}.

JS

	Dialect of {JOVIAL}.  [Sammet 1969, p.639].

JSA

	Japanese Standards Association.

JTAG

	{Joint Test Action Group}

	Testing of {digial logic} circuit boards.

	(14 Apr 1995)

JTB

	{jump trace buffer}

JTC

	<standard, body> {Joint Technical Committee}.

JTC1/SC24

	The {ISO}/{IEC} group which has worked on {standard}s like
	{GKS}, {PHIGS}, {CGM}, and is now also involved in the area of
	standardisation in {Multimedia Presentation}.

	{(http://www.cwi.nl/JTC1SC24/)}

	(04 Jan 1995)

JTS

	A simple dialect of {JOVIAL}.

	[Sammet 1969, p. 528].

	(04 Jan 1995)

juggling eggs

	Keeping a lot of {state} in your head while modifying a
	program.  "Don't bother me now, I'm juggling eggs", means that
	an interrupt is likely to result in the program's being
	scrambled.  In the classic first-contact SF novel "The Mote in
	God's Eye", by Larry Niven and Jerry Pournelle, an alien
	describes a very difficult task by saying "We juggle priceless
	eggs in variable gravity."  See also {hack mode}.

Jughead

	Jughead is a tool for Gopher administrators to get menu
	information from various gopher servers, and is an acronym
	for: Jonzy's Universal Gopher Hierarchy Excavation And
	Display.  Jughead was written in ANSI C.  Gopher:
	gopher.cc.utah.edu, About U of U Gopher/Gopher Tools/jughead.

	{(ftp://ftp.cc.utah.edu/pub/gopher/GopherTools)}.  Mailing
	list: jughead-news@lists.utah.edu.

jukebox

	<hardware, storage> A hardware mechanism for allowing access
	to one of a group of discs, especially CD-ROMs or other
	optical media.

	[Or magnetic tapes?]

	(10 Dec 1996)

jumper

	<hardware> A removable wire or small plug whose presence or
	absence is used to determine some aspect of hardware
	configuration.

	(14 Mar 1995)

jump off into never-never land

	[J. M. Barrie's "Peter Pan"] Same as {branch to Fishkill}, but
	more common in technical cultures associated with non-{IBM}
	computers that use the term "jump" rather than "branch".

	Compare {hyperspace}.

	(15 Dec 1994)

jump trace buffer

	(JTB) A feature of some {pipelined} processors (e.g. {Amulet},
	{Pentium}?) which stores the source and destination addresses
	of the last few branch instuctions executed.  When a branch
	instruction is fetched, its source is looked for in the JTB.
	If found, the next instuction fetch will be from the previous
	destination of that branch.  If it turns out that the branch
	shouldn't have been taken this time, then the {pipeline} is
	flushed.  This means that in a {tight loop} it is not
	necessary to flush the {pipeline} every time you jump back to
	the start.

	(15 Dec 1994)

Junction FET

	{Junction Field Effect Transistor}

Junction Field Effect Transistor

	<electronics> (JFET, Junction FET) A {Field Effect Transistor}
	in which the conducting channel lies between pn junctions in
	the silicon material.  A pn junction acts as a {diode}, so it
	becomes conductive if the gate voltage gets reversed.

	(24 Feb 1997)

Juno

	A numerical {constraint}-oriented language for graphics
	applications.  It solves its constraints using
	{Newton-Raphson} {relaxation}.  It was inspired partly by
	{Metafont}.

	["Juno, a Constraint-Based Graphics System", G. Nelson in
	SIGGRAPH '85 Conf Readings, B.A. Barsky ed, Jul 1985,
	pp. 235-243].

	(23 Nov 1994)

jupiter

	To kill an {IRC} {robot} or user and then take its place by
	adopting its {nick} so that it cannot reconnect.  Named after
	a particular IRC user who did this to {NickServ}, the robot in
	charge of preventing people from inadvertently using a nick
	claimed by another user.

	(23 Nov 1994)

JVM

	{Java Virtual Machine}

Jym

	A predecessor to {Graal} by Patrick Bellot, France.

K

	<unit> {kilo-}, a {kilobyte}.  Used both as a spoken word and
	a written suffix, like {meg} and {gig} for {megabyte} and
	{gigabyte}.

	See {prefix}.

	(29 Sep 1995)

K5

	An early system on the {Larc} computer.

	[Listed in CACM 2(5):16 (May 1959)].

	(23 Nov 1994)

KA9Q

	<networking> A popular implementation of {TCP/IP} and
	associated {protocol}s for amateur {packet radio} systems and
	{personal computer}s connected via {serial lines}.  It was
	named after the call-sign of Phil Karn - the radio ham who
	first wrote it for {MS-DOS} on the {IBM PC}.

	KA9Q is currently maintained by Anthony Frost
	<vulch@kernow.demon.co.uk> (call-sign G8UDV) and Adam
	Goodfellow <tcpip2@comptech.demon.co.uk>.  It has been ported
	to the {Archimedes} by Jonathan Naylor (G4KLX).

	[FTP?]

	(08 Nov 1994)

kahuna

	<person> /k*-hoo'n*/ (From the Hawaiian title for a shaman) An
	{IBM} synonym for {wizard} or {guru}.

	(09 Nov 1994)

Kaleidoscope

	An {object-oriented} language which mixes imperative and
	constraint-oriented features.  Written by Freeman-Benson
	<bnfb@cs.uvic.ca> of the {University of Washington},
	{Universite de Nantes}, 1989; {University of Victoria}, 1992.

	Kaleidoscope is similar to {Siri} and vaguely related to
	{Prose}.  Versions: Kaleidoscope '90 and Kaleidoscope '91.

	["Kaleidoscope: Mixing Objects, Constraints and Imperative
	Programming", B.N. Freeman-Benson, SIGPLAN Notices
	25(10):77-88 (OOPSLA/ECOOP '90) (Oct 1990)].

	["Constraint Imperative Programming", B.N. Freeman-Benson,
	Ph.D. Thesis, TR 91-07-02, U Wash (1991)].

	["Constraint Imperative Programming", Freeman-Benson et al,
	IEEE Conf on Comp Lang, Apr 1992].

	(09 Nov 1994)

Kali

	A {data parallel} language.

	["Supporting Shared Data Structures on Distributed Memory
	Architectures", C. Koelbel et al in Second ACM SIGPLAN Symp on
	Princ and Prac of Parallel Programming, pp.177-186, Mar 1990].

	(09 Nov 1994)

kamikaze packet

	More commonly called a {Christmas tree packet}.  {RFC} 1025,
	"TCP and IP Bake Off" says:

	10 points for correctly being able to process a "Kamikaze"
	packet (AKA {nastygram}, {Christmas tree packet}, lamp test
	segment, et al.).  That is, correctly handle a segment with
	the maximum combination of features at once (e.g. a SYN URG
	PUSH FIN segment with options and data).

	See also {Chernobyl packet}.

	(09 Nov 1994)

Kamin's interpreters

	A set of {interpreter}s for {Pascal}, {Lisp}, {APL}, {Scheme},
	{SASL}, {CLU}, {Smalltalk} and {Prolog}.  They have been
	implemented as {subclass}es in {C++} by Tim Budd
	<budd@cs.orst.edu>.

	{(ftp://cs.orst.edu/pub/budd/kamin/)}

	["Programming Languages, An Interpreter-Based Approach",
	Samuel Kamin].

	(12 Sep 1991)

kangaroo code

	{spaghetti code}

kanji

	<human language, character> /kahn-jee/ (From the Japanese
	"kan" - the Chinese Han dynasty, and "ji" - glyph or letter of
	the alphabet.  Not capitalised) The Japanese word for a
	Chinese character used in Japanese.  Kanji is an ideographic
	{character set} used to represent the Japanese language in
	written, printed and displayed form.

	Kanji characters are not included in {ASCII}, but may be
	represented in some {DBCS} character sets.

	Japanese writing also uses hiragana, furigana, katakana and
	sometimes romaji (Roman-alphabet letters).  These characters
	are distinct from, though sometimes mixed with, kanji.

	(16 Jul 1997)

KAOS

	{Kent Applicative Operating System}

KAP

	Kernel Andorra Prolog.  The predecessor of {AKL}.

	["Kernel Andorra Prolog and its Computation Model", S. Haridi
	<seif@sics.se> et al, in Logic Programming: Proc 7th Intl
	Conf, MIT Press 1990].

	(02 Nov 1994)

Karel

	Language featured in Karel the Robot: A Gentle Introduction to
	Computer Programming, Richard E. Pattis, Wiley 1981.

	{(ftp://ftp.wustl.edu/mirrors/Unix-c/languages/pascal/karel.tar-z)}

Kb

	{kilobyte}

KBMS

	An {expert system}.

kbps

	<unit> {kilobits} per second.  A data transfer rate.

	(16 Oct 1996)

KBS

	{Knowledge-Based System}

KCL

	{Kyoto Common Lisp}

KEE

	Knowledge Engineering Environment.  Frame-based expert system.
	Supports dynamic inheritance, {multiple inheritance},
	polymorphism.  Classes, meta-classes and objects are all
	treated alike.  A class is an instance of a meta-class.  Can
	control rules for merging of each field when multiple
	inheritance takes place.  Methods are written in LISP.
	Actions may be triggered when fields are accessed or modified.
	Extensive GUI integrates with objects.  Can easily make object
	updates to be reflected on display or display selections to
	update fields.  This can in turn trigger other methods or
	inference rules which may then update other parts of the
	display.  Intellicorp, for TI Explorer.  "The Role of
	Frame-Based Representation in Reasoning", R. Fikes et al, CACM
	28(9):904- 920 (Sept 1985).

Keldysh Institute of Applied Mathematics

	Address: Russian Academy of Sciences Miusskaya Pl. 4, 125047
	Moscow, Russia.

	(12 Dec 1994)

ken

	/ken/ 1. {Ken Thompson}

	2. A flaming user.  This was originated by the Software
	Support group at {Symbolics} because the two greatest flamers
	in the user community were both named Ken.

Ken Thompson

	<person> The principal inventor of the {Unix} {operating
	system} and author of the {B} language, the predecessor of
	{C}.

	In the early days Ken used to hand-cut {Unix} distribution
	tapes, often with a note that read "Love, ken".  Old-timers
	still use his first name (sometimes uncapitalised, because
	it's a login name and mail address) in third-person reference;
	it is widely understood (on {Usenet} in particular) that
	without a last name "Ken" refers only to Ken Thompson.
	Similarly, Dennis without last name means {Dennis Ritchie}
	(and he is often known as dmr).

	Ken was first hired to work on the {Multics} project, which
	was a huge production with many people working on it.  Multics
	was supposed to support hundreds of online logins but could
	barely handle three.

	In 1969, when Bell Labs withdrew from the project, Ken got fed
	up with Multics and went off to write his own operating
	system.  People said "well, if zillions of people wrote
	Multics, then an OS written by one guy must be Unix!".  There
	was some joking about eunichs as well.

	Ken's wife Bonnie and son Corey (then 18 months old) went to
	visit family in San Diego.  Ken spent one week each on the
	{kernel}, {file system}, etc., and finished UNIX in one month
	along with developing {SPACEWAR} (or was it "Space Travel"?).

	See also {back door}, {brute force}, {demigod}.

	(07 Nov 1994)

Kerberos

	<security> The {authentication} system of {MIT}'s Project
	{Athena}.  It is based on {symmetric key cryptography}.
	Adopted by {OSF} as the basis of security for {DME}.

	(04 Feb 1997)

Kermit

	<communications> A popular {packet-oriented} {protocol} from
	{Columbia University} for transferring {text files} and
	{binary files} on both {full-duplex} and {half-duplex} 8 bit
	and 7-bit serial connections in a system- and
	medium-independent fashion, and implemented on hundreds of
	different computer and {operating system} {platforms}.  On
	full-duplex connections a {sliding window} protocol with
	selective retransmission provides excellent performance and
	error recovery characteristics.  On 7-bit connections, locking
	shifts provide efficient transfer of 8-bit data.

	When properly implemented, as in the Columbia University
	Kermit Software collection, performance is equal to or better
	than other protocols such as {ZMODEM}, {YMODEM}, and {XMODEM},
	especially on poor connections.

	Kermit is an open protocol - anybody can base their own
	program on it, but some Kermit software and {source code} is
	{copyright} by Columbia University.

	{Home (http://www.columbia.edu/kermit/)}

	(29 Jan 1996)

kernal

	{kernel}

kernel

	(Note: NOT "kernal").

	1. <operating system> The essential part of {Unix} or other
	{operating system}s, responsible for resource allocation,
	low-level hardware interfaces, security etc.  See also
	{microkernel}.

	2. <language> An essential subset of a programming language,
	in terms of which other constructs are (or could be) defined.
	Also known as a {core} language.

	(07 Jun 1996)

Kernel Parlog

	<language> A {modeless} {intermediate language} for {Parlog}
	compilation.

	["Notes on the Implementation of Parlog", K.L. Clark et al, J
	Logic Prog 2(1):17-42 1985].

	(07 Jun 1996)

kerning

	<text> The process of reducing the spacing between certain
	pairs of letters to improve their appearance.  When a {font}
	is created, each {character} is given a width that includes
	some space around it so that the letters don't run into each
	other when displayed or printed.  This can be thought of as an
	invisible box around each character.  Some pairs of characters
	such as A and V, look better if the boxes overlap slightly,
	bringing the characters closer together (but still not
	touching).

	See also {tracking}, {leading}.

	(07 Jun 1996)

Kevo

	<language> A {prototype}-based {object-oriented} language for
	{Macintosh} by Antero Taivalsaari <antero@cs.uta.fi>,
	<tsaari@cs.uta.fi>.  Kevo is built around a {threaded code}
	{interpreter} and features a unique prototype-based {object}
	model (which is based neither on {class}es nor {Self}-style
	{delegation}), {multitasking} (both {pre-emptive multitasking}
	and {cooperative multitasking}), dynamic memory management,
	and an icon-based {object browser} and editor modelled loosely
	after Mac {Finder}.  Kevo's syntax is close to {Forth} and its
	semantics resembles {Self} and {Omega}.  Current version:
	0.9b6.

	{(ftp://cs.uta.fi/pub/kevo/)}.
	E-mail: <kevo-interest@ursamajor.uvic.ca>.

	[TR DCS-197-19, U Victoria, June 1992].

	(18 May 1993)

key

	1. <database> A value used to identify a {record} in a
	database, derived by applying some fixed function to the
	record.  The key is often simply one of the {fields} (a
	{column} if the database is considered as a table with records
	being rows, see "{key field}").  Alternatively the key may be
	obtained by applying some function, e.g. a {hash function}, to
	one or more of the fields.  The set of keys for all records
	forms an {index}.  Multiple indexes may be built for one
	database depending on how it is to be searched.

	2. <cryptography> A value which must be fed into the
	{algorithm} used to decode an encrypted message in order to
	reproduce the original {plain text}.  Some encryption schemes
	use the same (secret) key to encrypt and decrypt a message,
	but {public key encryption} uses a "private" (secret) key and
	a "public" key which is known by all parties.

	(26 Apr 1997)

keyboard

	<hardware> A {hardware} device consisting of a number of
	mechanical buttons (keys) which the user presses to input
	characters to a computer.

	Keyboards were originally part of {terminal}s which were
	separate {peripheral} devices that performed both input and
	output and communicated with the computer via a {serial line}.
	Today a keyboard is more likely to be connected directly to
	the processor, allowing the processor to scan it and detect
	which key or keys are currently pressed.  Keyboards vary in
	the keys they have, most have keys to generate the {ASCII}
	{character set} as well as various {function key}s and special
	purpose keys, e.g. reset or volume control.

	(02 May 1995)

Keyboard Commando

	<messaging> A {bulletin board} user who posts authoritatively
	on military or combat topics, but who has never served in
	uniform or heard a shot fired in anger.  A poseur.

	(25 Apr 1997)

keyboard plaque

	<jargon> The disgusting buildup of dirt and crud found on
	computer keyboards.  "Are there any other terminals I can use?
	This one has a bad case of keyboard plaque."

	(30 Apr 1997)

Keyboard Send Receive

	<hardware> (KSR) Part of a designation for a hard-copy
	{terminal}, manufactured by {Teletype Corporation}.  The KSR
	range were lower cost versions of the {ASR} models.

	(23 Nov 1995)

Keyed-Hashing Message Authentication

	<messaging, cryptography> (HMAC) A mechanism for message
	{authentication} using cryptographic {hash functions}.  HMAC
	can be used with any iterative cryptographic hash function,
	e.g., {MD5}, {SHA-1}, in combination with a secret shared key.
	The cryptographic strength of HMAC depends on the properties
	of the underlying hash function.

	[RFC 2104].

	(10 May 1997)

key field

	<database> A field of a {database} (typically a {relational
	database}) {table} which together form a unique identifier for
	a record (a table entry).  The aggregate of these fields is
	usually referred to simply as "the {key}".

	(03 Aug 1997)

key frame

	<graphics> A frame in an animated sequence of frames which was
	drawn or otherwise constructed directly by the user rather
	than generated automatically, e.g. by {tweening}.

	(06 Apr 1995)

KeyNote Software

	A company which offers {software}-based business contact
	directories for people who develop, manufacture, market, or
	distribute {software} or {multimedia} products.

	E-mail: <server@netmail.com> (Subject: SEND INDEX).

keypal

	The {electronic mail} equivalent of a pen pal - someone with
	whom to exchange electronic mail for the simple joy of
	communicating.

	{Request for keypals
	(gopher://wealaka.okgeosurvey1.gov/11/K12/keypals)}

	[Is there some kind of central clearing-house for requests on
	the net?]

keyword

	1. One of a fixed set of symbols built into the syntax of a
	language.  Typical keywords would be if, then, else, print,
	goto, while, switch.  There are usually restrictions about
	reusing keywords as names for user-defined objects such as
	variables or procedures.  Languages vary as to what is
	provided as a keyword and what is a library routine, for
	example some languages provide keywords for input/output
	operations whereas in others these are library routines.

	2. A small set of words designed to convey the subject of a
	technical article.  Some publications specify a fixed set of
	keywords from which those for a particular article should be
	chosen.

KFX

	The {kernel} language of {FX-87}.

	["Polymorphic Effect Systems", J.M. Lucassen et al, Proc 15th
	Ann ACM Conf POPL, ACM 1988, pp.47-57].

	(15 Feb 1995)

kgbvax

	/K-G-B'vaks/ {kremvax}.

Khornerstone

	A multipurpose {benchmark} from {Workstation Labs} used in
	various periodicals.  The source is not free.  Results are
	published in "UNIX Review".

	(15 Apr 1993)

KIBO

	/ki:'boh/ 1. [acronym] Knowledge In, Bullshit Out.  A summary
	of what happens whenever valid data is passed through an
	organisation (or person) that deliberately or accidentally
	disregards or ignores its significance.  Consider, for
	example, what an advertising campaign can do with a product's
	actual specifications.  Compare {GIGO}; see also {SNAFU
	principle}.

	2. James Parry <kibo@world.std.com>, a {Usenet}ter infamous
	for various surrealist net.pranks and an uncanny,
	machine-assisted knack for joining any thread in which his nom
	de guerre is mentioned.

kiboze

	[{Usenet}] To {grep} the {Usenet} news for a string,
	especially with the intention of posting a follow-up.  This
	activity was popularised by {Kibo}.

kick

	[IRC] To cause somebody to be removed from a {IRC} channel, an
	option only available to {CHOP}s.  This is an extreme measure,
	often used to combat extreme {flamage} or {flood}ing, but
	sometimes used at the chop's whim.  Compare {gun}.

Kid

	{Kernel} language for {Id}.  A refinement of {P-TAC}, used as
	an intermediate language for Id.  {Lambda-calculus} with
	first-class {let}-blocks and {I-structure}s.

	["A Syntactic Approach to Program Transformations", Z. Ariola
	et al, SIGPLAN Notices 26(9):116-129 (Sept 1991)].

	(22 Jul 1996)

KIDASA Software

	<company> A company which develops project management software
	for {Microsoft Windows}.

	{Home (http://www.kidasa.com)}.

	(22 Jul 1996)

killer micro

	[Popularised by Eugene Brooks] A {microprocessor}-based
	machine that infringes on mini, mainframe, or supercomputer
	performance turf.  Often heard in "No one will survive the
	attack of the killer micros!", the battle cry of the
	downsizers.  Used especially of {RISC} architectures.

	The popularity of the phrase "attack of the killer micros" is
	doubtless reinforced by the movie title "Attack Of The Killer
	Tomatoes" (one of the {canonical} examples of
	so-bad-it's-wonderful among hackers).  This has even more
	flavour now that killer micros have gone on the offensive not
	just individually (in workstations) but in hordes (within
	{massively parallel computer}s).

killer poke

	A recipe for inducing hardware damage on a machine via
	insertion of invalid values (see {poke}) into a
	{memory-mapped} control {register}; used especially of various
	fairly well-known tricks on {bitty box}es without hardware
	memory management (such as the {IBM PC} and {Commodore} {PET})
	that can overload analog electronics in the monitor.

	See also {HCF}.

	(04 Nov 1994)

kill file

	[{Usenet}] Per-user file(s) used by some {Usenet} reading
	programs (originally {Larry Wall}'s {rn}) to discard summarily
	(without presenting for reading) articles matching some
	particularly uninteresting (or unwanted) patterns of subject,
	author, or other header lines.  Thus to add a person (or
	subject) to one's kill file is to arrange for that person to
	be ignored by one's newsreader in future.  By extension, it
	may be used for a decision to ignore the person or subject in
	other media.  See also {plonk}.

kilo-

	{prefix}

kilobaud

	<unit> 1000 {baud}.

	(12 Feb 1996)

kilobit

	<unit> (Kb) 2^10 = 1024 {bit}s.

	(13 Feb 1997)

kilobyte

	<unit> (KB) 2^10 = 1024 {bytes}.

	See {prefix}.

	(29 Sep 1995)

kiosk

	A stall set up in a public place where one can obtain
	information, e.g. tourist information.  The information may be
	provided by a human or by a computer.  In the latter case, the
	data may be stored locally (e.g. on {CD-ROM}) or accessed via a
	network using some kind of distributed information retreival
	system such as {Gopher} or {World-Wide Web}.

KIPS

	/kips/ [by analogy with {MIPS}] Thousands (*not* 1024s) of
	instructions per second.  Usage: rare.

KIS

	{Knowbot Information Service}

KISS

	Early system on IBM 650.  Listed in CACM 2(5):16 (May 1959).

KISS Principle

	/kis' prin'si-pl/ Keep It Simple, Stupid.

	A maxim often invoked when discussing design to fend off
	{creeping featurism} and control complexity of development.
	Possibly related to the {marketroid} maxim on sales
	presentations, "Keep It Short and Simple".

	See also {Occam's Razor}.

	(18 Nov 1994)

kit

	<jargon> ({Usenet}, possibly from {DEC}) Slang for a full
	software distribution, as opposed to a {patch} or upgrade.  A
	source software distribution that has been packaged in such a
	way that it can (theoretically) be unpacked and installed
	according to a series of steps using only standard {Unix}
	tools, and entirely documented by some reasonable chain of
	references from the top-level {README file}.  The more general
	term {distribution} may imply that special tools or more
	stringent conditions on the host environment are required.

	(18 Nov 1994)

KL0

	Kernel Language 0.

	A sequential {logic language} based on {Prolog}, used in the
	Japanese {ICOT} project.

	(18 Nov 1994)

KL1

	Kernel Language 1.

	An experimental {AND-parallel} version of {KL0} for the {ICOT}
	project in Japan.  KL1 is an implementation of {FGHC}.

	Not to be confused with {KL-ONE}.

	["Design of the Kernel Language for the Parallel Inference
	Machine", U. Kazunori et al, Computer J (Dec 1990)].

	(24 Oct 1994)

Kleene closure

	{Kleene star}

Kleene star

	<text> (Or "Kleene closure", named after {Stephen Cole
	Kleene}) The {postfix} "*" operator used in {regular
	expressions}, {Extended Backus-Naur Form} and similar
	formalisms which when postfixed to an expression, matches any
	number of occurrences of that expression.  For example, the
	regular expression "be*t" could match the string "bet",
	"beet", "bt", "beeeeet", and so on.

	(18 Mar 1997)

Kleene, Stephen Cole

	{Stephen Cole Kleene}

Klerer-May System

	Early system from {Columbia University} with special
	mathematics symbols.  Its reference manual was two pages long!

	["Further Advances in Two-Dimensional Input-Output by
	Typewriter Terminals", M. Klerer et al, Proc FJCC 31 (1967)].

	[Sammet 1969, pp. 284-294].

	(24 Oct 1994)

KLOC

	<unit, programming> Thousand (kilo-) {Lines of code}.

	(12 Mar 1995)

klone

	/klohn/ {clone}.

KL-ONE

	A {frame language}.

	Not to be confused with {KL1}.

	["An Overview of the KL-ONE Knowledge Representation System",
	R.J. Brachman and J. Schmolze, Cognitive Sci 9(2), 1985].

	(18 Nov 1994)

kludge

	<spelling> Misspelling of "{kluge}".

	(13 Dec 1996)

kluge

	<jargon> /klooj/, /kluhj/ (From German "klug", clever) 1. A
	Rube Goldberg (or Heath Robinson) device, whether in
	{hardware} or {software}.  (A long-ago "Datamation" article by
	Jackson Granholme said: "An ill-assorted collection of poorly
	matching parts, forming a distressing whole.")

	2. <programming> 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}.  In fact, the TMRC Dictionary
	defined "kludge" as "a crock that works".

	3. Something that works for the wrong reason.

	4. ({WPI}) A {feature} that is implemented in a {rude} manner.

	Nowadays this term is often encountered in the variant
	spelling "kludge".  Reports from {old farts} are consistent
	that "kluge" was the original spelling, reported around
	computers as far back as the mid-1950s and, at that time, used
	exclusively of *hardware* kluges.  In 1947, the "New York
	Folklore Quarterly" reported a 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.  Other sources report that "kluge" was
	common Navy slang in the WWII era for any piece of electronics
	that worked well on shore but consistently failed at sea.

	However, there is reason to believe this slang use may be a
	decade older.  Several respondents have connected it to the
	brand name of a device called a "Kluge paper feeder" dating
	back at least to 1935, an adjunct to mechanical printing
	presses.  The Kluge feeder was designed before small, cheap
	electric motors and control electronics; it relied on a
	fiendishly complex assortment of cams, belts, and linkages to
	both power and synchronise all its operations from one motive
	driveshaft.  It was accordingly tempermental, subject to
	frequent breakdowns, and devilishly difficult to repair - but
	oh, so clever!  One traditional folk etymology of "klugen"
	makes it the name of a design engineer; in fact, "Kluge" is a
	surname in German, and the designer of the Kluge feeder may
	well have been the man behind this myth.

	{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 that had been located in Cambridge (many
	in MIT's venerable Building 20, in which {TMRC} is also
	located) during the war.

	The variant "kludge" was apparently popularised by the
	{Datamation} article mentioned above; it was titled "How to
	Design a Kludge" (February 1962, pp. 30, 31).  Some people who
	encountered the word first in print or on-line jumped to the
	reasonable but incorrect conclusion that the word should be
	pronounced /kluhj/ (rhyming with "sludge").  The result of
	this tangled history is a mess; in 1993, many (perhaps even
	most) hackers pronounce the word correctly as /klooj/ but
	spell it incorrectly as "kludge" (compare the pronunciation
	drift of {mung}).  Some observers consider this appropriate in
	view of its meaning.

	(13 Dec 1996)

kluge around

	<jargon> To avoid a bug or difficult condition by inserting a
	{kluge}.

	Compare {workaround}.

	(10 Mar 1995)

Kluwer Academic Publishers Group

	<company> A Dutch publisher.

	{Home (http://www.wkap.nl/)}

	{(ftp://ftp.wkap.nl)}.

	{Ordering information
	(ftp://ftp.wkap.nl/ordering/orderinf.txt)}.

	E-mail: <services@wkap.nl>, <annie.kuipers@wkap.nl> (orders),
	<kluwer@world.std.com> (USA, Canada, Mexico).

	Address: Distribution Centre, P.O. Box 322, 3300 AH Dordrecht,
	The Netherlands.  Telephone: +31 (78) 524 400.  Fax: +31 (78)
	524 474.

	Kluwer Academic Publishers, P.O. Box 358, Accord Station
	Hingham, MA 02018-0358, USA.  Telephone: +1 (617) 817 6300.
	Fax: +1 (617) 871 6528.

	(10 Mar 1995)

KMODEL

	An ancestor of Model-K.  "Preliminary Results on the BEHAVIOUR
	Specifications Language KMODEL-0", BEHAVIOUR Memo 5-91, 1991,
	GMD, Sankt Augustin, Germany

KMS

	{Knowledge Management System}

knapsack problem

	<application, mathematics> Given a set of items, each with a
	cost and a value, determine the number of each item to include
	in a collection so that the total cost is less than some given
	cost and the total value is as large as possible.

	The 0/1 knapsack problem restricts the number of each items to
	zero or one.

	Such {constraint satisfaction} problems are often solved using
	{dynamic programming}.

	The general knapsack problem is {NP-hard}, and this has led to
	attempts to use it as the basis for {public-key encryption}
	systems.  Several such attempts failed because the knapsack
	problems they produced were in fact solvable by
	{polynomial-time algorithm}s.

	[Are there any trusted knapsack-based public-key
	cryptosystems?].

	(10 Apr 1995)

Knights of the Lambda-Calculus

	A semi-mythical organisation of wizardly LISP and Scheme
	hackers.  The name refers to a mathematical formalism invented
	by Alonzo Church, with which LISP is intimately connected.
	There is no enrollment list and the criteria for induction are
	unclear, but one well-known LISPer has been known to give out
	buttons and, in general, the *members* know who they are.

Knowbot Information Service

	(KIS) Also known as netaddress.  The Knowbot Information
	Service (KIS) provides a uniform user interface to a variety
	of {remote directory service}s such as {whois}, {finger},
	{X.500}, {MCIMail}.  By submitting a single query to KIS, a
	user can search a set of remote {white pages} services and see
	the results of the search in a uniform format.

	There are several interfaces to the KIS service including
	{electronic mail} and {telnet}.  Another KIS interface
	imitates the Berkeley {whois} command.

	KIS consists of two distinct types of modules which interact
	with each other (typically across a network) to provide the
	service.  One module is a user agent module that runs on the
	KIS mail host machine.  The second module is a remote server
	module (possibly on a different machine) that interrogates
	various database services across the network and provides the
	results to the user agent module in a uniform fashion.
	Interactions between the two modules can be via messages
	between Knowbots or by actual movement of Knowbots.

	There are electronic mail interfaces for KIS at the hosts
	cnri.reston.va.us and sol.bucknell.edu.  Send a message
	containing just the word "man" to <kis@cnri.reston.va.us> or
	<netaddress@sol.bucknell.edu>.  Telnet: info.cnri.reston.va.us
	port 185.

knowledge

	<artificial intelligence> The objects, concepts and
	relationships that are assumed to exist in some area of
	interest.  A collection of {knowledge}, represented using some
	{knowledge representation} language is known as a {knowledge
	base} and a program for extending and/or querying a knowledge
	base is a {knowledge-based system}.

	Knowledge differs from {data} or {information} in that new
	knowledge may be created from existing knowledge using logical
	{inference}.  If information is data plus meaning then
	knowledge is information plus processing.

	A common form of knowledge, e.g. in a {Prolog} program, is a
	collection of {fact}s and {rule}s about some subject.

	For example, a {knowledge base} about a family might contain
	the facts that John is David's son and Tom is John's son and
	the rule that the son of someone's son is their grandson.
	From this knowledge it could infer the new fact that Tom is
	David's grandson.

	See also {Knowledge Level}.

	(19 Oct 1994)

knowledge base

	[{artificial intelligence}] A collection of {knowledge}
	expressed using some formal {knowledge representation}
	language.  A knowledge base forms part of a {knowledge-based
	system} (KBS).

	(19 Oct 1994)

knowledge-based system

	(KBS) A program for extending and/or querying a {knowledge
	base}.

	The {Cyc} project is an example of a large KBS.

	(19 Oct 1994)

	[Compare "expert system"?]

knowledge level

	[{artificial intelligence}] A level of description of the
	{knowledge} of an {agent} that is independent of the agent's
	internal symbol-level representation.  Knowledge can be
	attributed to agents by observing their actions.  An agent
	"knows" something if it acts as if it had the information and
	is acting rationally to achieve its goals.  The "actions" of
	agents, including knowledge base servers and {knowledge-based
	systems}, can be seen through a tell and ask functional
	interface, where a client interacts with an agent by making
	{logical assertion}s (tell), and posing queries (ask).

	(19 Oct 1994)

Knowledge Management System

	(KMS) A distributed {hypermedia} system for managing knowledge
	in organisations.  KMS is a commercial system from {Knowledge
	Systems, Inc.} running on {workstation}s, based on previous
	research with {ZOG} at {Carnegie Mellon University}.

	(28 Oct 1994)

knowledge representation

	The subfield of {artificial intelligence} concerned with
	designing and using systems for storing knowledge - {fact}s
	and {rule}s about some subject.

	A body of formally represented knowledge is based on a
	{conceptualisation} - an {abstract} view of the world that we
	wish to represent.  In order to manipulate this knowledge we
	must specify how the abstract conceptualisation is represented
	as a {concrete} data structure.  An {ontology} is an explicit
	specification of a conceptualisation.

	(19 Oct 1994)

Knowledge Systems Laboratory

	(KSL) An {artificial intelligence} research laboratory within
	the Department of Computer Science at {Stanford University}.
	Current work focuses on {knowledge representation} for
	sharable engineering knowledge bases and systems,
	computational environments for modelling physical devices,
	architectures for adaptive intelligent systems, and {expert
	system}s for science and engineering.

	(06 Dec 1994)

Knuth

	/knooth/ 1. {Donald Knuth}.

	2. ["The Art of Computer Programming", Donald E. Knuth]
	Mythically, the reference that answers all questions about
	data structures or algorithms.  A safe answer when you do not
	know: "I think you can find that in Knuth."

	Contrast {literature}.  See also {bible}.

Kodak

	<company> The photographic company responsible for {Photo CD}.

	{Home (http://www.kodak.com/)}

	(13 Dec 1995)

Kohonen

	{T. Kohonen}

KOMPILER

	Early system on IBM 701.  Listed in CACM 2(5):16 (May 1959).
	Versions: KOMPILER 2 for IBM 701, KOMPILER 3 for IBM 704.

Konrad Zuse

	<person> The designer of the first programming language,
	{Plankalkl}, and the first fully functional
	program-controlled electromechanical digital computer in the
	world (the {Z3}).

	{Biography (http://ei.cs.vt.edu/~history/Zuse.html)}

	["Konrad Zuse: Mein Leben" (My Life), published 1956].

	["Konrad Zuse: The Computer my Life, Springer, 1993].

	(03 Apr 1995)

Korn Shell

	(ksh) A {command interpreter} for {Unix}.

	{SKsh} is an {AmigaDos}-specific version and {pdksh} is a free
	{Unix} version.

	[More details?]

KR

	{knowledge representation}

K&R

	Kernighan and Ritchie.  Brian Kernighan and Dennis Ritchie's
	book "The C Programming Language", especially the classic and
	influential first edition (Prentice-Hall 1978; ISBN
	0-113-110163-3).

	Synonym {White Book}, {Old Testament}.  See also {New
	Testament}.

KRC

	Kent Recursive Calculator.

	A {lazy} {functional language} developed by {David Turner} in
	1981 based on {SASL}, with {pattern matching} and {ZF
	expression}s.

	["Functional Programming and its Applications", David
	A. Turner, Cambridge U Press 1982].

	See also {continental drift}.

	(06 Dec 1994)

K&R C

	{C} as originally described in {K&R}.

kremvax

	/krem-vaks/ Originally, a fictitious {Usenet} site at the
	Kremlin, named like the then large number of {Usenet} {VAXen}
	with names of the form foovax.  Kremvax was announced on April
	1, 1984 in a posting ostensibly originated there by Soviet
	leader Konstantin Chernenko.  The posting was actually forged
	by Piet Beertema as an April Fool's joke.  Other fictitious
	sites mentioned in the hoax were moskvax and {kgbvax}.  This
	was probably the funniest of the many April Fool's forgeries
	perpetrated on {Usenet} (which has negligible security against
	them), because the notion that {Usenet} might ever penetrate
	the Iron Curtain seemed so totally absurd at the time.

	In fact, it was only six years later that the first genuine
	site in Moscow, demos.su, joined {Usenet}.  Some readers
	needed convincing that the postings from it weren't just
	another prank.  Vadim Antonov, senior programmer at Demos and
	the major poster from there up to mid-1991, was quite aware of
	all this, referred to it frequently in his own postings, and
	at one point twitted some credulous readers by blandly
	asserting that he *was* a hoax!

	Eventually he even arranged to have the domain's gateway site
	*named* kremvax, thus neatly turning fiction into truth and
	demonstrating that the hackish sense of humour transcends
	cultural barriers.  Mr. Antonov also contributed some
	Russian-language material for the {Jargon File}.

	In an even more ironic historical footnote, kremvax became an
	electronic centre of the anti-communist resistance during the
	bungled hard-line coup of August 1991.  During those three
	days the Soviet UUCP network centreed on kremvax became the
	only trustworthy news source for many places within the USSR.
	Though the sysops were concentrating on internal
	communications, cross-border postings included immediate
	transliterations of Boris Yeltsin's decrees condemning the
	coup and eyewitness reports of the demonstrations in Moscow's
	streets.  In those hours, years of speculation that
	totalitarianism would prove unable to maintain its grip on
	politically-loaded information in the age of computer
	networking were proved devastatingly accurate - and the
	original kremvax joke became a reality as Yeltsin and the new
	Russian revolutionaries of "glasnost" and "perestroika" made
	kremvax one of the timeliest means of their outreach to the
	West.

KRL

	{Knowledge Representation} Language.  A {frame}-based
	language.

	["An Overview of KRL, a Knowledge Representation Language",
	D.G. Bobrow and T. Winograd, Cognitive Sci 1:1 (1977)].

KRS

	Frame-based language built on Common LISP.

KRYPTON

	A {frame} language.

	["An Essential Hybrid Reasoning System: Knowledge and Symbol
	Level Accounts of of KRYPTON", R.J. Brachman et al, Proc
	IJCAI-85, 1985].

ksh

	{Korn Shell}

KSL

	{Knowledge Systems Laboratory}

KSR

	1. {Keyboard Send Receive}.

	2. <company> {Kendall Square Research}.

	(23 Nov 1995)

KUIP

	Kernel User Interface Package.

	The human interface to {PAW}.

	(11 Nov 1994)

Kyoto Common Lisp

	(KCL) An implementation of {Common Lisp} by T. Yuasa
	<yuasa@tutics.tut.ac.jp> and M. Hagiya
	<hagiya@is.s.u-tokyo.ac.jp>, written in {C} to run under
	{Unix}-like {operating system}s.  KCL is compiled to {ANSI C}.
	It conforms to {Common Lisp} as described in {Guy Steele}'s
	book and is available under a licence agreement.

	{(ftp://rascal.ics.utexas.edu/pub/kcl.tar.Z)}.

	E-mail: <kcl@cli.com> (bug reports).

	Mailing list: kcl-request@cli.com, kcl@rascal.ics.utexas.edu.

	["Design and Implementation of Kyoto Common Lisp", T. Yuasa
	<yuasa@tutics.tut.ac.jp>, J Info Proc 13(3):284-295 (1990)].

	["Kyoto Common Lisp Report", T. Yuasa & M. Hagiya].

	(01 Jun 1987)

kyrka

	/shir'k*/ [Swedish]  See {feature key}.

L0

	Tech U Munich.  Low level language, typed and with ususal flow
	control, but only 3-address expressions.  Higher levels L1 and
	L2 were planned.  "Brief Survey of L0", H. Scheidig, in
	Machine Oriented Higher Level Languages, W. van der Poel ed,
	N-H 1974, pp.239-247.

l10n

	{internationalization}

L1 cache

	{primary cache}

L2 cache

	{secondary cache}

L6

	Bell Telephone Laboratories Low-Level Linked List Language.
	Ken Knowlton, 1965.  List processing language, typeless.

	["A Programmer's Description of L6, Bell Telephone
	Laboratories' Low-Level Linked List Language", K. Knowlton
	CACM 9(8):616-625 (Aug 1966).  Sammet 1969, pp.400- 405].

Lab for Computer Science

	{MIT}.  {(http://www.lcs.mit.edu/)}.

Laboratory Virtual Instrument Engineering Workbench

	<tool> (LabVIEW) A package from National Instruments Corp
	originally developed to provide a {graphical user interface}
	to instruments connected by the {IEEE 488} (GPIB) bus.  It has
	powerful graphical editing facilities for defining and
	interconnecting "virtual instruments".

	(24 Apr 1996)

LaborNet

	An {IGC} network serving groups, unions and labour advocates
	interested in information sharing and collaboration with the
	intent of enhancing the human rights and economic justice of
	workers.  Issues covered include workplace and community
	health and safety issues, trade issues and international union
	solidarity and collaboration.

Labtech Notebook

	<tool, product> Commercial {data aquisition} software.

	(08 Mar 1995)

LabVIEW

	{Laboratory Virtual Instrument Engineering Workbench}

Lace

	Language for Assembling Classes in Eiffel.  Specifies how to
	assemble an Eiffel system : in which directories to find the
	clusters, which class to use as the root, permits class
	renaming to avoid name clashes.  "Eiffel: The Language",
	Bertrand Meyer, P-H 1992.

lace card

	(Obsolete) A {punched card} with all holes punched (also
	called a "whoopee card" or "ventilator card").  Card readers
	tended to jam when they got to one of these, as the resulting
	card had too little structural strength to avoid buckling
	inside the mechanism.  Card punches could also jam trying to
	produce these things owing to power-supply problems.  When
	some practical joker fed a lace card through the reader, you
	needed to clear the jam with a "card knife" - which you used
	on the joker first.

LADY

	<language> ["Key Concepts in the INCAS Multicomputer Project",
	J. Nehmer et al IEEE Trans Soft Eng SE-13(8):913-923 (Aug
	1987)].

	(21 Jun 1996)

lag

	{netlag}

Lakota

	Scripting language, extends existing OS commands.
	E-mail: Richard Harter <rh@smds.UUCP>, SMDS, Inc.

LALR

	{Look Ahead Left Recursive}

lalr.ss

	<tool> An {LALR1 grammar} {parser generator} written in, and
	outputting, {Scheme} by Mark Johnson <mj@cs.brown.edu>.

	Version 0.9 (before 30 Oct 1995).

	FTP new/lalr.shar from the {Scheme Repository}.

	(24 May 1993)

Lambada-Calculus

	<humour, logic> (A pun on "{lambda-calculus}") Teaching logic
	thru spanish dance steps.  Invented by P. van der Linden
	<linden@eng.sun.com>.

	(10 Aug 1996)

LAMBDA

	A version of {typed lambda-calculus}, used to describe
	semantic {domain}s.

	["Outline of a Mathematical Theory of Computation",
	D.S. Scott, TM PRG-2, PRG, Oxford U, 1971].

lambda abstraction

	A term in {lambda-calculus} denoting a function.  A lambda
	abstraction begins with a lower-case lambda (represented as
	"\" in this document), followed by a variable name (the "bound
	variable"), a full stop and a {lambda expression} (the body).
	The body is taken to extend as far to the right as possible
	so, for example an expression,

		\ x . \ y . x+y

	is read as

		\ x . (\ y . x+y).

	A nested abstraction such as this is often abbreviated to:

		\ x y . x + y

	The lambda expression (\ v . E) denotes a function which takes
	an argument and returns the term E with all {free} occurrences
	of v replaced by the {actual argument}.  Application is
	represented by {juxtaposition} so

		(\ x . x) 42

	represents the identity function applied to the constant 42.

	A {lambda abstraction} in {Lisp} is written as the symbol
	lambda, a list of zero or more variable names and a list of
	zero or more terms, e.g.

		(lambda (x y) (plus x y))

	Lambda expressions in {Haskell} are written as a backslash,
	"\", one or more patterns (e.g. variable names), "->" and an
	expression, e.g. \ x -> x.

	(24 Jan 1995)

lambda-calculus

	<mathematics> (Normally written with a Greek letter lambda).
	A branch of mathematical logic developed by {Alonzo Church} in
	the late 1930s and early 1940s, dealing with the application
	of {functions} to their arguments.  The {pure lambda-calculus}
	contains no constants - neither numbers nor mathematical
	functions such as plus - and is untyped.  It consists only of
	{lambda abstraction}s (functions), variables and applications
	of one function to another.  All entities must therefore be
	represented as functions.  For example, the natural number N
	can be represented as the function which applies its first
	argument to its second N times ({Church integer} N).

	Church invented lambda-calculus in order to set up a
	foundational project restricting mathematics to quantities
	with "{effective procedures}".  Unfortunately, the resulting
	system admits {Russell's paradox} in a particularly nasty way;
	Church couldn't see any way to get rid of it, and gave the
	project up.

	Most {functional programming} languages are equivalent to
	lambda-calculus extended with constants and types.  {Lisp}
	uses a variant of lambda notation for defining functions but
	only its {purely functional} subset is really equivalent to
	lambda-calculus.

	See {reduction}.

	(13 Apr 1995)

lambda expression

	<mathematics> A term in the {lambda-calculus} denoting an
	unnamed function (a "{lambda abstraction}"), a variable or a
	constant.  The {pure lambda-calculus} has only functions and
	no constants.

	(13 Apr 1995)

lambda lifting

	A program transformation to remove free variables.  An
	expression containing a free variable is replaced by a
	function applied to that variable.  E.g.

		f x = g 3  where g y = y + x

	x is a free variable of g so it is added as an extra argument:

		f x = g 3 x  where g y x = y + x

	Functions like this with no free variables are known as
	supercombinators and are traditionally given upper-case names
	beginning with "$".  This transformation tends to produce many
	supercombinators of the form f x = g x which can be eliminated
	by {eta reduction} and substitution.  Changing the order of
	the parameters may also allow more optimisations.  References
	to global (top-level) constants and functions are not
	transformed to function parameters though they are technically
	free variables.

	A closely related technique is closure conversion.  See also
	Full laziness.

Lambda-Prolog

	An extension of standard {Prolog} defined by D.A. Miller, in
	which terms are {strongly typed} lambda-terms.  {Clause}s are
	{higher order} {hereditary Harrop formula}s. The main
	novelties are {universal quantification} on {goal}s and
	implication.

	The {Prolog/Mali} compiler uses the {MALI} abstract memory
	system.

	{(ftp://ftp.irisa.fr/pm/pm.tar.Z)}

	E-mail: <pm@irisa.fr>.  Mailing list: prolog-mali@irisa.fr.

	["Higher-order logic programming", Miller D.A. and Nadathur
	G., 3rd International Conference on Logic Programming, pp
	448-462, London 1986].

	[Nadathur G. "A Higher-Order Logic as a Basis for Logic
	Programming", Thesis, University of Pennsylvania, 1987].

	(21 Feb 1995)

lamer

	<jargon> A hopelessly clueless {luser}.

	(31 Jan 1997)

LAMINA

	A {concurrent} {object-oriented} language.

	["Experiments with a Knowledge-based System on a
	Multiprocessor", Third Intl Conf Supercomputing Proc, 1988].

	["ELINT in LAMINA, Application of a Concurrent Object
	language", Delagi et al, KSL-88-3, Knowledge Sys Labs,
	Stanford U].

LAN

	{local area network}

LANCE

	Local Area Network Controller for Ethernet.

	The alternative name for the Am7990 {integrated circuit} used
	in a {Filtabyte} {Ethernet} controller card.

	(15 Feb 1995)

language-based editor

	{language-sensitive editor}

Language H

	An early business-oriented language from {NCR}.

language lawyer

	A person, usually an experienced or senior software engineer,
	who is intimately familiar with many or most of the numerous
	restrictions and features (both useful and esoteric)
	applicable to one or more computer programming languages.  A
	language lawyer is distinguished by the ability to show you
	the five sentences scattered through a 200-page manual that
	together imply the answer to your question "if only you had
	thought to look there".

	Compare {wizard}, {legal}, {legalese}.

	(15 Feb 1995)

Language Of Temporal Ordering Specification

	<language> (LOTOS) A formal {specification language} based on
	temporal ordering used for {protocol} specfication in {ISO}
	{OSI} {standard}s.  It is published as ISO 8807 in 1990 and
	describes the order in which events occur.

	["The Formal Description Technique LOTOS", P.H.J. van Eijk et
	al eds, N-H 1989].

	(18 Mar 1995)

Language Sensitive Editor

	(LSE) A {language-sensitive editor} from {DEC}.

	(15 Feb 1995)

language-sensitive editor

	An editor that is aware of the syntactic, semantic and in some
	cases the structural rules of a specific programming language
	and provides a framework for the user to enter {source code}.
	Programs or changes to previously stored programs are
	incrementally parsed into an {abstract syntax tree} and
	automatically checked for correctness.

	(15 Feb 1995)

languages of choice

	{C} and {Lisp}.  Nearly every hacker knows one of these, and
	most good ones are fluent in both.  Smalltalk and Prolog are
	also popular in small but influential communities.

	There is also a rapidly dwindling category of older hackers
	with FORTRAN, or even assembler, as their language of choice.
	They often prefer to be known as {Real Programmer}s, and other
	hackers consider them a bit odd (see "{The Story of Mel}").
	Assembler is generally no longer considered interesting or
	appropriate for anything but {HLL} implementation, {glue}, and
	a few time-critical and hardware-specific uses in systems
	programs.  FORTRAN occupies a shrinking niche in scientific
	programming.

	Most hackers tend to frown on languages like {Pascal} and
	{Ada}, which don't give them the near-total freedom considered
	necessary for hacking (see {bondage-and-discipline language}),
	and to regard everything even remotely connected with {COBOL}
	or other traditional {card walloper} languages as a total and
	unmitigated {loss}.

Laning and Zierler

	<language> Possibly the first true working algebraic
	{compiler}.  Written by J.H. Laning Jr and N. Zierler in
	1953-1954 to run on {MIT}'s {Whirlwind} computer.

	[Sammet 1969, pp. 131-132].

	[Did the language have a name?]

	(01 Nov 1994)

LANL

	Los Alamos National Laboratory, Los Alamos, NM, USA.

Lan Manager

	<operating system> {Microsoft}'s {OS/2}-based {network
	operating system}.  Developed in conjunction with {3Com}, Lan
	Manager runs as a task under OS/2.  Because of this, a {file
	server} may concurrently be used for other tasks, such as
	{database} services.  It offers good {mulitasking}.

	(19 Mar 1997)

LANtastic

	<networking, product> A trademarked name for numerous products
	of {Artisoft, Inc.}.

	(16 Apr 1995)

LAP

	LISP Assembly Program.  The {assembly language} embedded into
	early {Lisp}.  LAP was also used by the {Liar} compiler for
	{MIT Scheme} and {MACLISP}.

	[Sammet 1969, p. 597].

	(01 Nov 1994)

LAP4

	Early assembly language for Linc-8 machine.

LAPB

	{Link Access Protocol Balanced}

LAPD

	1. {Link Access Procedure on the D channel}.

	2. Los Angeles Police Department.

LAPM

	{Link Access Protocol for Modems}

LAPSE

	A {single assignment} language for the {Manchester dataflow
	machine}.

	["A Single Assignment Language for Data Flow Computing",
	J.R.W. Glauert, M.Sc Diss, Victoria U Manchester, 1978].

	(21 Dec 1994)

laptop computer

	<computer> (Commonly just "laptop") A portable {personal
	computer} of a size suitable to rest comfortably on one's
	legs.  A laptop is smaller than a "{luggable}" (portable, but
	not comfortably) but bigger than a "{palmtop}" (easily carried
	in one hand or a shirt pocket).

	{Toshiba} were one of the first companies to produce laptops,
	in about 1989.

	[First example?  Date?  Difference from "notebook"?]

	(21 Dec 1994)

LaQuey

	[LaQuey, T. (with J. Ryer), "The Internet Companion: A
	Beginner's Guide to Global Networking", Addison-Wesley,
	Reading, MA, 1992.]

Larch

	The Larch Project develops aids for formal specifications.
	Each Larch specification has two components: an interface
	containing predicates written in the LIL ({Larch Interface
	Language}) designed for the target language and a 'trait'
	containing assertions about the {predicate}s written in LSL,
	the {Larch Shared Language} common to all.

	["The Larch Family of Specification Languages", J. Guttag et
	al, IEEE Trans Soft Eng 2(5):24-365 (Sep 1985)].

Larch/C++

	An interface specification language which can be used to
	formally specify {C++} program {modules}.

LARCH/CLU

	<language, specification> The {Larch} specification language
	for {CLU}.  Used in "Abstraction and Specification in Program
	Development", B. Liskov & J. Guttag, MIT Press 1986.

	(02 Jan 1996)

Large Installation Systems Administration

	(LISA) The {USENIX} systems administration conference.  It is
	now more general that its title suggests.  It is sponsored and
	organised by {SAGE}, the USENIX Systems Administrators Guild.

	{(ftp://ftp.sage.usenix.org/pub/sage/)}

	(02 Jan 1996)

Larry Wall

	<person> A {demigod}, the author of {Perl}, {patch}, and {rn}.

	In the Perl {README}, he says, "I want you to know that I
	create nice things like this because it pleases the Author of
	my story.  If this bothers you, then your notion of Authorship
	needs some revision.  But you can use Perl anyway."

	E-mail: Larry Wall <lwall@sems.com>.

	(04 Jun 1996)

larval stage

	Describes a period of monomaniacal concentration on coding
	apparently passed through by all fledgling hackers.  Common
	symptoms include the perpetration of more than one 36-hour
	{hacking run} in a given week; neglect of all other activities
	including usual basics like food, sleep, and personal hygiene;
	and a chronic case of advanced bleary-eye.  Can last from 6
	months to 2 years, the apparent median being around 18 months.
	A few so afflicted never resume a more "normal" life, but the
	ordeal seems to be necessary to produce really wizardly (as
	opposed to merely competent) programmers.  See also
	{wannabee}.  A less protracted and intense version of larval
	stage (typically lasting about a month) may recur when one is
	learning a new {OS} or programming language.

lase

	/layz/ To print a given document via a laser printer.  "OK,
	let's lase that sucker and see if all those graphics-macro
	calls did the right things."

laser printer

	<printer> A non-impact high-resolution printer which uses a
	rotating disk to reflect laser beams onto the paper.  When the
	beam touches the paper, it forms an electrostatic image area
	which attracts electrically-charged toner (magnetized dry ink
	powder).  The toner is then fixed (heated) onto the paper,
	forming an image (text or graphics).

	Print resolution ranges between 300 and 600 dots per inch
	(DPI).  Laser printers using chemical photoreproduction
	techniques can produce resolutions of up to 2400 DPI.  Print
	speeds may exceed 21,000 lines per minute, though printing
	speed is more often given in pages per minute.  If a laser
	printer is rated at 12 pages per minute (PPM), this figure
	would be true only if the printer is printing the same data on
	each of the twelve pages, so that the bit map is identical.
	This speed however, is rarely reached if each page contains
	different codes, text, and graphics.

	Although there are dozens of retail brands of laser printers,
	only a few {original equipment manufacturer}s (such as
	{Canon}, {Ricoh}, {Toshiba}, and {Xerox}) make {print
	engines}.

	(06 Jul 1995)

Lasherism

	<jargon, algorithm> (Harvard) A program that solves a standard
	problem (such as the {Eight Queens Puzzle} or implementing the
	{life} {algorithm}) in a deliberately nonstandard way.
	Distinguished from a {crock} or {kluge} by the fact that the
	programmer did it on purpose as a mental exercise.  Such
	constructions are quite popular in exercises such as the
	{Obfuscated C contest}, and occasionally in {retrocomputing}.
	Lew Lasher was a student at Harvard around 1980 who became
	notorious for such behaviour.

	(07 Dec 1994)

last call optimisation

	Normally when procedure A calls procedures B, C, .., Z, the
	environment of procedure A is only discarded when procedure Z
	returns and procedure A itself terminates.  Using last call
	optimisation, A's environment is discarded as Z is called.
	This allows arbitrarily deep nesting of procedure calls
	without consuming memory to store useless environments.

	A special case of this is tail recursion optimisation where
	the last procedure called is the calling procedure itself.

Last In First Out

	<programming> (LIFO) {stack}.

	(21 Dec 1995)

LAT

	<protocol> A {DEC}-specific network {protocol}.

	[Details?]

	(10 May 1996)

latch

	A digital logic circuit used to store one or more bits.  A
	latch has a data input, a clock input and an output.  When the
	clock input is active, data on the input is "latched" or
	stored and transfered to the output either immediately or when
	the clock input goes inactive.  The output will then retain
	its value until the clock goes active again.

	See also {flip-flop}.

	(03 Feb 1995)

latency

	1. The time it takes for a {packet} to cross a network
	connection, from sender to receiver.

	2. The period of time that a frame is held by a network device
	before it is forwarded.

	Two of the most important parameters of a communications
	channel are its latency and its {bandwidth}.

LaTeX

	<language, text, tool> (Lamport TeX) Leslie Lamport
	<lamport@pa.dec.com>'s document preparation system built on
	top of {TeX}.  LaTeX was developed at {SRI International}'s
	Computer Science Laboratory and was built to resemble
	{Scribe}.

	LaTeX adds commands to simplify typesetting and lets the user
	concentrate on the structure of the text rather than on
	formatting commands.

	{BibTeX} is a LaTeX package for bibliographic citations.

	Lamport's LaTeX book has an exemplary index listing every
	symbol, concept and example in the book.  The index in the,
	now obsolete, first edition includes (on page 221) the
	mysterious entry "Gilkerson, Ellen, 221".  The second edition
	(1994) has an entry for "infinite loop" instead.

	["LaTeX, A Document Preparation System", Leslie Lamport, A-W
	1986, ISBN 0-201-15790-X (first edition, now obsolete)].

	(17 Nov 1997)

Latin 1

	{ISO 8859}

lattice

	<theory> In {domain theory}, a {partially ordered set} in
	which all finite subsets have a {least upper bound} and
	{greatest lower bound}.

	See also {complete lattice}.

	(20 Feb 1997)

LAU

	Langage a Assignation Unique.  A {single assignment} language
	for the LAU {dataflow} machine, Toulouse.

	["Pipelining, Parallelism and Asynchronism in the LAU System",
	J.C. Syre et al, Proc 1977 Intl Conf Parallel Proc,
	pp. 87-92].

laundromat

	<jargon, storage> Synonym {disk farm}; see {washing machine}.

	(01 Feb 1998)

LAURE

	<language> A language for {knowledge representation} combining
	{object-oriented} features and {logic programming}.  It has
	set operations, object-oriented {exception} handling and a
	{polymorphic} type system.

	E-mail: Yves Caseau <caseau@france.bellcore.com>.

	["An Object-Oriented Language for Advanced Applications", in
	Proc TOOLS 5, Santa Barbara 1991, P-H].

	(01 Feb 1998)

LAVA

	A language for {VLSI} that deals with "sticks", i.e. wires
	represented as lines with thickness.

	["A Target Language for Silicon Compilers", R.J. Matthews et
	al, IEEE COMPCON, 1982, pp. 349-353].

	(07 Dec 1994)

law

	See {software law}.

Lawrence Livermore Labs

	{Lawrence Livermore National Laboratory}

Lawrence Livermore National Laboratory

	<body> (LLNL) A research organaisatin operated by the
	{University of California} under a contract with the US
	Department of Energy.  LLNL was founded on 2 September 1952 at
	the site of an old World War II naval air station.

	The Lab employs researchers from many scientific and
	engineering disciplines.  Some of its departments are the
	National Ignition Facility, the Human Genome Center, the ASCI
	Tera-Scale Computing partnership, the Computer Security
	Technology Center, and the Site 300 Experimental Test
	Facility.  Other research areas are Astronomy and
	Astrophysics, Atmospheric Science, Automation and Robotics,
	Biology, Chemistry, Computing, Energy Research, Engineering,
	Environmental Science, Fusion, Geology and Geophysics, Health,
	Lasers and Optics, Materials Science, National Security,
	Physics, Sensors and Instrumentation, Space Science.

	LLNL also works with industry in research and licensing
	projects.  At the end of fiscal year 1995, the lab had signed
	agreements for 193 cost-shared research projects involving 201
	companies and worth nearly $600m.

	{Home (http://www.llnl.gov/)}.

	Address: Fremont, California, USA.

	(30 Oct 1996)

LAX

	LAnguage eXample.

	A {toy language} used to illustrate {compiler} design.

	["Compiler Construction", W.M. Waite et al, Springer 1984].

	(07 Dec 1994)

layer

	<networking> The {software} and/or {hardware} environment of
	two or more communications devices or computers in which a
	particular {network} {protocol} operates.  A network
	connection may be thought of as a set of more or less
	independent protocols, each in a different layer (or "level").
	The lowest layer governs direct host-to-host communication
	between the hardware at different hosts; the highest consists
	of user {application programs}.  Each layer uses the layer
	beneath it and provides a service for the layer above.  Each
	networking component {hardware or software} on one host uses
	{protocols} appropriate to its layer to communicate with the
	corresponding component (its "peer") on another host.  Such
	layered protocols are sometimes known as peer-to-peer
	protocols.

	The advantages of layered {protocols} is that the methods of
	passing information from one layer to another are specified
	clearly as part of the {protocol} suite, and changes within a
	protocol layer are prevented from affecting the other layers.
	This greatly simplifies the task of designing and maintaining
	communication systems.

	Examples of layered protocols are {TCP/IP}'s five layer
	{protocol stack} and the {OSI} seven layer model.

	(05 May 1997)

laziness

	{lazy evaluation}

lazy evaluation

	<reduction> An {evaluation strategy} combining {normal order
	evaluation} with updating.  Under normal order evaluation
	(outermost or call-by-name evaluation) an expression is
	evaluated only when its value is needed in order for the
	program to return (the next part of) its result.  Updating
	means that if an expression's value is needed more than once
	(i.e. it is shared), the result of the first evaluation is
	remembered and subsequent requests for it will return the
	remembered value immediately without further evaluation.  This
	is often implemented by graph reduction.  An unevaluated
	expression is represented as a {closure} - a data structure
	containing all the information required to evaluate the
	expression.

	Lazy evaluation is one {evaluation strategy} used to implement
	non-{strict} functions.  Function arguments may be infinite
	data structures (especially lists) of values, the components
	of which are evaluated as needed.

	According to Phil Wadler the term was invented by Jim Morris.

	Opposite: {eager evaluation}.

	A partial kind of lazy evaluation implements lazy data
	structures or especially {lazy list}s where function arguments
	are passed evaluated but the arguments of data constructors
	are not evaluated.

	{Full laziness} is a {program transformation} which aims to
	optimise lazy evaluation by ensuring that all subexpressions
	in a function body which do not depend on the function's
	arguments are only evaluated once.

	(14 Dec 1994)

lazy list

	A list which is built using a non-strict constructor.  Any
	head or tail of the list may be an unevaluated closure.  Also
	known as streams since they may be used to carry a sequence of
	values from the output of one function to an input of another.
	See also Lazy evaluation.

lazy sml2c

	A {lazy} version {sml2c}.  Portable, written in {SML}.
	Language extensions include {first-class continuation}s,
	{asynchronous signal} handling.

	E-mail: <david.tarditi@cs.cmu.edu>.
	{(ftp://dravido.soar.cs.cmu.edu/usr/nemo/sml2c)}.

LBA

	{Logical Block Addressing}

LBE

	{Language-Based Editor}

LBL

	Lawrence Berkeley Laboratory, Berkeley, CA, USA.

LCC

	Language for Conversational Computing.  Written at {CMU} in
	the 1960's.  Similar to {JOSS}, with declarations, pointers
	and block structure from {ALGOL 60}.  Implemented for {IBM
	360}/{IBM 370} under {TSS}.

	["LCC Reference Manual", H.R. Van Zoeren, CMU 196]9.

lcc

	A hand-coded {C} {parser} (faster than {yacc}).  lcc is
	retargetable and generates code "as good as {GCC}".  Written
	by Dave Hanson <drh@cs.princeton.edu>.

	Version 1.8 includes a {compiler}, test suite and
	documentation.  Ported to {Vax}, commercial backends for
	{MIPS}, {SPARC}, {68000} are cheap for universities.  {Chop}
	is a {code generator} for use with lcc.

	E-mail: <lcc-requests@princeton.edu>.
	{(ftp://princeton.edu/pub/lcc/)}.

	(20 Feb 1992)

LCD

	<hardware> {liquid crystal display}.

	(09 Dec 1995)

LCF

	{Logic for Computable Functions}

	Part of the {Edinburgh proof assistant}.

	(06 Jan 1995)

LCL

	1. The Larch interface language for ANSI standard C.

	[J.V. Guttag et al, TR 74, DEC SRC, Palo Alto CA, 1991].

	2. Liga Control Language.

	Controls the attribute evaluator generator LIGA, part of the
	{Eli} {compiler-compiler}.

	["LCL: Liga Control Language", U. Kastens
	<uwe@uni-paderborn.de>, U Paderborn].

	(23 Jan 1995)

lclint

	<tool, programming> A lint-like {ANSI C} source checker from
	{MIT}.  If formal specifications are supplied (in a separate
	file), lclint can do more powerful checking to detect
	inconsistencies between specifications and code.  Adding
	specifications enables further checking, types can be defined
	as {abstract} and lclint can detect inconsistent use of
	{global variable}s; undocumented modification of
	client-visible state; inconsistent use of an uninitialised
	{formal parameter}; or failure to initialise an actual
	parameter.

	{Home (http://larch-www.lcs.mit.edu:8001/larch/lclint.html)}

	(11 May 1995)

LCP

	{Link Control Protocol}

LCS

	Language for Communicating Systems.  Bernard Barthomieu.  A
	concurrent SML with behaviours and processes, based upon
	higher order CCS.  Implemented as a bytecode interpreter.
	Version 3.1 runs on {Sun 3} and {Sun 4}.

	{(ftp://laas.laas.fr/pub/lcs)}.  E-mail: Bernard Berthomieu
	<bernard@laas.laas.fr>.  Mailing list: lcs@laas.laas.fr

LDAP

	{Lightweight Directory Access Protocol}

LDB

	/l*'d*b/ [PDP-10 instruction] To extract from the middle.
	"LDB me a slice of cake, please."  This usage has been kept
	alive by Common LISP's function of the same name.  Considered
	silly.  See also {DPB}.

LDL

	["LDL: A Logic-Based Data-Language", S. Tsur et al, Proc VLDB
	1986, Kyoto Japan, Aug 1986, pp.33-41].

LDL1

	Successor of LDL.  "Sets and Negation in a Logic Database
	Language", C. Beeri et al, in Proc 6th Ann ACM Symp Princs
	Database Sys (1987), pp.21- 37.

LDP

	{Linux Documentation Project}

LDT

	Logic Design Translator.

	Computer system design analysis.

	[Sammet 1969, p. 621].

	(01 Dec 1994)

LE/1

	Langage External.

	["An Evaluation of the LE/1 Network Command Language Designed
	for the SOC Network", J. du Masle, in Command Languages,
	C. Unger ed, N-H 1973].

	(01 Dec 1994)

leading

	<text> /ledding/ The spacing between lines of {text}.  This is
	defined when a {font} is designed but can often be altered in
	order to change the appearance of the text or for special
	effects.  It is measured in {points} and is normally 120% of
	the height of the text.

	See also {kerning}, {tracking}.

	(07 Jun 1996)

LEAF

	<language> 1. {LISP Extended Algebraic Facility}.

	2. "LEAF: A Language which Integrates Logic, Equations and
	Functions", R.  Barbuti et al in Logic Programming, Functions
	Relations and Equations, D.  DeGroot et al eds, P-H 1986,
	pp.201-238.

Leaf Distribution Limited

	A UK connectivity software supplier which also provides
	SERVELAN, a country-wide {Internet} access service.

	E-mail: <sales@leaf.co.uk>.

	Address: 7 Elmwood, Chineham Business Park, Crockford Lane,
	BASINGSTOKE RG24 0WG.  Telephone: +44 (1256) 707 777.  Fax:
	+44 (1256) 707 555.

	(04 Jan 1995)

leaf site

	A machine that merely originates and reads {Usenet} news or
	mail, and does not relay any third-party traffic.  Often
	uttered in a critical tone; when the ratio of leaf sites to
	backbone, rib, and other relay sites gets too high, the
	network tends to develop bottlenecks.  Compare {backbone
	site}, {rib site}.

League for Programming Freedom

	<body> (LPF) A grass-roots organisation of professors,
	students, businessmen, programmers and users dedicated to
	bringing back the freedom to write programs.  Ten years ago,
	programmers were allowed to write programs using all the
	techniques they knew, and providing whatever features they
	felt were useful.  This is no longer the case.  The new
	monopolies, {software patent}s and {interface copyright}s,
	have taken away our freedom of expression and our ability to
	do a good job.

	"{Look and feel}" lawsuits attempt to monopolise well-known
	command languages; some have succeeded.  Copyrights on command
	languages enforce gratuitous incompatibility, close
	opportunities for competition, and stifle incremental
	improvements.

	{Software patent}s are even more dangerous; they make every
	design decision in the development of a program carry a risk
	of a lawsuit, with draconian pre-trial seizure.  It is
	difficult and expensive to find out whether the techniques you
	consider using are patented; it is impossible to find out
	whether they will be patented in the future.

	The League is not opposed to the legal system that Congress
	intended -- {copyright} on individual programs.  Our aim is to
	reverse the recent changes made by judges in response to
	special interests, often explicitly rejecting the public
	interest principles of the Constitution.

	The League works to abolish the new monopolies by publishing
	articles, talking with public officials, boycotting egregious
	offenders, and in the future may intervene in court cases.  On
	24 May 1989, the League picketed {Lotus} headquarters on
	account of their lawsuits, and then again on 2 August 1990.
	These marches stimulated widespread media coverage for the
	issue.  We welcome suggestions for other activities, as well
	as help in carrying them out.

	Membership dues in the League are $42 per year for
	programmers, managers and professionals; $10.50 for students;
	$21 for others.  Please give more if you can.  The League's
	funds will be used for filing briefs; for printing handouts,
	buttons and signs; whatever will persuade the courts, the
	legislators, and the people.  You may not get anything
	personally for your dues -- except for the freedom to write
	programs.  The League is a non-profit corporation, but not
	considered a tax-exempt charity.  However, for those
	self-employed in software, the dues can be a business expense.

	The League needs both activist members and members who only
	pay their dues.  We also greatly need additional corporate
	members; contact us for information.

	Jack Larsen is President, Chris Hofstader is Secretary, and
	Steve Sisak is Treasurer.

	{Home (http://www.lpf.org/)}

	Telephone: +1 (617) 243 4091.

	E-mail: <lpf@uunet.uu.net>.

	Address: League for Programming Freedom, 1 Kendall Square
	#143, P.O.Box 9171, Cambridge, Massachusetts 02139 USA.

	(18 Apr 1995)

leak

	<programming> With a qualifier, one of a class of
	resource-management bugs that occur when resources are not
	freed properly after operations on them are finished, so they
	effectively disappear (leak out).  This leads to eventual
	exhaustion as new allocation requests come in.

	One might refer to, say, a "window handle leak" in a {window
	system}.

	See {memory leak}, {fd leak}.

	(18 Apr 1995)

leaky heap

	<programming> (Cambridge) An {arena} with a {memory leak}.

	(18 Apr 1995)

Lean

	An experimental language from the {University of Nijmegen} and
	{University of East Anglia}, based on graph rewriting and
	useful as an intermediate language.  Lean is descended from
	{Dactl0}.

	{Clean} is a subset of Lean.

	["Towards an Intermediate Language Based on Graph Rewriting",
	H.P.  Barendregt et al in PARLE: Parallel Architectures and
	Languages Europe, G. Goos ed, LNCS 259, Springer 1987,
	pp.159-175].

	(25 Jan 1995)

LEAP

	Language for the Expression of Associative Procedures.

	ALGOL-based formalism for sets and associative retrieval, for
	TX-2.  Became part of SAIL.

	"An ALGOL-based Associative Language", J.A. Feldman et al,
	CACM 12(8):439-449 (Aug 1969).

leapfrog attack

	Use of userid and password information obtained illicitly from
	one {host} (e.g. {download}ing a file of account IDs and
	passwords, tapping {TELNET}, etc.) to compromise another host.
	Also, the act of TELNETting through one or more hosts in order
	to confuse a trace (a standard {cracker} procedure).

learning curve

	<psychology> The plot of the measure of something learned
	against time or number of trials.  In computing, it is often
	(mis)used to mean the amount of time it takes to learn the
	usage of something ("reduce the learning curve") or the ease
	it ("easy learning curve").

	(17 Jan 1997)

leased line

	A private telephone circuit permanently connecting two points,
	normally provided on a lease by a local {PTT}.

least fixed point

	A function f may have many {fixed point}s (x such that f x =
	x).  For example, any value is a fixed point of the identity
	function, (\ x . x).  If f is {recursive}, we can represent it
	as

		f = fix F

	where F is some {higher-order function} and

		fix F = F (fix F).

	The standard {denotational semantics} of f is then given by
	the least fixed point of F.  This is the {least upper bound}
	of the infinite sequence (the {ascending Kleene chain})
	obtained by repeatedly applying F to the totally undefined
	value, bottom.  I.e.

		fix F = LUB {bottom, F bottom, F (F bottom), ...}.

	The least fixed point is guaranteed to exist for a
	{continuous} function over a {cpo}.

least recently used

	(operating systems) (LRU) A rule used in a {paging} system
	which selects a page to be {paged out} if it has been used
	(read or written) less recently than any other page.  The same
	rule may also be used in a {cache} to select which cache entry
	to {flush}.

	This rule is based on {temporal locality} - the observation
	that, in general, the page (or cache entry) which has not been
	accessed for longest is least likely to be accessed in the
	near future.

	(15 Feb 1995)

Least Significant Bit

	(LSB) {Bit} zero, the bit
	of a {binary} number giving the number of ones, the last or
	rightmost bit when the number is written in the usual way.

	(13 Jul 1995)

least upper bound

	<theory> (lub or "join", "supremum") The least upper bound of
	two elements a and b is an upper bound c such that a <= c and
	b <= c and if there is any other upper bound c' then c <= c'.
	The least upper bound of a set S is the smallest b such that
	for all s in S, s <= b.  The lub of mutually comparable
	elements is their maximum but in the presence of incomparable
	elements, if the lub exists, it will be some other element
	greater than all of them.

	Lub is the dual to {greatest lower bound}.

	(In {LaTeX}, "<=" is written as {\sqsubseteq}, the lub of two
	elements a and b is written a {\sqcup} b, and the lub of set S
	is written as \bigsqcup S).

	(03 Feb 1995)

LEC

	{Local Exchange Carrier}

LECOM

	Version of COMIT on GE 225 ca. 1966.  Sammet 1969, p.419.

LED

	<electronics> {Light-Emitting Diode}.

LEDA

	{Library of Efficient Data types and Algorithms}

Leda

	A multi-paradigm language (imperative, declarative,
	procedural, applicative, functional, logic, and
	object-oriented!) by Tim Budd <budd@cs.orst.edu>, Oregon State
	U, 1990-1993.

	["Blending Imperative and Relational Programming", Tim Budd,
	IEEE Software 8(1):58-65 (Jan 1991)].  Forthcoming book.

	{(ftp://cs.orst.edu/pub/budd/leda/)}

LED page printer

	{LED printer}

LED printer

	<printer> (Or "LED page printer") A printer which is similar
	in operation to a {laser printer}, but where an array of
	{LED}s is used in place of the laser.

	(08 Dec 1996)

leet

	{elite}

left arrow

	<character> The graphic which the 1963 version of {ASCII} had
	in place of the {underscore} character, {ASCII} 95.

	(06 Mar 1995)

left brace

	<character> "{".  {ASCII} character 123.

	Common names: open brace; left brace; left squiggly; left
	squiggly bracket/brace; left curly bracket/brace; {ITU-T}:
	opening brace.  Rare: brace ("}" = unbrace); curly ("}" =
	uncurly); leftit ("}" = rytit); left squirrelly; {INTERCAL}:
	embrace ("}" = bracelet).

	Paired with {right brace} ("}").

	(16 Mar 1995)

left bracket

	<character> "[".  {ASCII} character 91.

	Common: left square bracket; {ITU-T}: opening bracket;
	bracket.  Rare: square; {INTERCAL}: U turn.

	Paired with {right bracket} ("]").

	(16 Mar 1995)

left parenthesis

	<character> "(".  {ASCII} character 40.

	Common names: left paren; left parenthesis; left; {open};
	paren (")" = thesis); open paren; open parenthesis; left
	parenthesis; left banana.  Rare: so (")" = already); lparen;
	{ITU-T}: opening parenthesis; open round bracket, left round
	bracket, {INTERCAL}: wax (")" = wane); parenthisey (")" =
	unparenthisey); left ear.

	Paired with {right parenthesis} (")").

	(06 Mar 1995)

LeFun

	Logic, Equations and Functions.  An integration of {logic
	programming} and {functional programming} by H. Ait-Kaci et al
	of {MCC}, Austin TX.

	["LeFun: Logic, Equations and Functions", H. Ait-Kaci et al,
	Proc 1987 Symp on Logic Programming, San Francisco].

	(21 Oct 1994)

legacy system

	<jargon> A computer system or {application program} which
	continutes to be used because of the prohibitive cost of
	replacing or redesigning it and desprite its poor
	competitiveness and compatibility with modern equivalents.
	The implication is that the system is large, monolithic and
	difficult to modify.

	If legacy software only runs on antiquated {hardware} the cost
	of maintaining this may eventually outweigh the cost of
	replacing both the software and hardware unless some form of
	{emulation} or {backward compatibility} allows the software to
	run on new hardware.

	(04 Aug 1996)

legal

	Loosely used to mean "in accordance with all the relevant
	rules", especially in connection with some set of constraints
	defined by software.  "The older =+ alternate for += is no
	longer legal syntax in ANSI C."  "This parser processes each
	line of legal input the moment it sees the trailing linefeed."
	Hackers often model their work as a sort of game played with
	the environment in which the objective is to maneuver through
	the thicket of "natural laws" to achieve a desired objective.
	Their use of "legal" is flavoured as much by this game-playing
	sense as by the more conventional one having to do with courts
	and lawyers.  Compare {language lawyer}, {legalese}.

legalese

	Dense, pedantic verbiage in a language description, product
	specification, or interface standard; text that seems designed
	to obfuscate and requires a {language lawyer} to {parse} it.
	Though hackers are not afraid of high information density and
	complexity in language (indeed, they rather enjoy both), they
	share a deep and abiding loathing for legalese; they associate
	it with deception, {suit}s, and situations in which hackers
	generally get the short end of the stick.

LEGOL

	"Application of MP/3 to the Design and Implementation of
	LEGOL, A Legally Oriented Language", S.H. Mandil et al, Intl
	Symp Programming, Paris 1974.

Le-Lisp

	Jerome Chailloux and Emmanuel St James, INRIA, France.  A LISP
	dialect close to Common Lisp, lexically scoped, with a
	CLOS-like object system.  Uses both packages and modules.
	"le-lisp: A Portable and Efficient Lisp System", J. Chailloux
	et al, Proc 1984 ACM Symp on Lisp and Functional Programming,
	ACM.  Version v.16, available from ILOG, France.

lemma

	<logic> A result already proved, which is needed in the proof
	of some further result.

	(25 Mar 1995)

Lempel-Ziv compression

	{Substitutional compression} schemes proposed by Jakob Ziv and
	Abraham Lempel in 1977 and 1978.  There are two main schemes,
	{LZ77} and {LZ78}.  {Lempel-Ziv Welch compression} is a
	variant of {LZ78}.

Lempel-Ziv Welch compression

	(LZW) The {algorithm} used by the {Unix} {compress} command to
	reduce the size of files, e.g. for archival or transmission.
	LZW was designed by Terry Welch in 1984 for implementation in
	hardware for high-performance disk controllers.  It is a
	variant of {LZ78}, one of the two {Lempel-Ziv compression}
	schemes.

	The LZW algorithm relies on reoccurrence of byte sequences
	(strings) in its input.  It maintains a table mapping input
	strings to their associated output codes.  The table initially
	contains mappings for all possible strings of length one.
	Input is taken one byte at a time to find the longest initial
	string present in the table.  The code for that string is
	output and then the string is extended with one more input
	byte, b.  A new entry is added to the table mapping the
	extended string to the next unused code (obtained by
	incrementing a counter).  The process repeats, starting from
	byte b.  The number of bits in an output code, and hence the
	maximum number of entries in the table is usually fixed and
	once this limit is reached, no more entries are added.

	LZW compression and decompression are licensed under {Unisys}
	Corporation's 1984 U.S. Patent 4,558,302 and equivalent
	foreign patents.  This kind of patent isn't legal in most
	coutries of the world (including the UK) except the USA.
	Patents in the UK can't describe {algorithm}s or mathematical
	methods.

	[A Technique for High Performance Data Compression, Terry A.
	Welch, IEEE Computer, 17(6), June 1984, pp. 8-19]

	[J. Ziv and A. Lempel, "A Universal Algorithm for Sequential
	Data Compression," IEEE Transactions on Information Theory,
	Vol. IT-23, No. 3, May 1977, pp. 337-343].

lenient evaluation

	An {evaluation strategy}, described in [Traub, FPCA 89], under
	which all {redex}es are evaluated in parallel except inside
	the arms of conditionals and inside {lambda abstraction}s.
	This is an example of an {eager} evaluation strategy.

LEO

	{Low Earth Orbit}

Leo

	<language> A general-purpose systems language, syntactically
	like {Pascal} and {Y}, semantically like {C}.

	["The Leo Programming Language", G. Townsend, CS TR 84-7, U
	Arizona 1984].

	(06 Feb 1996)

LER

	{light-emitting resistor}

LERP

	/lerp/ vi., Quasi-acronym for Linear Interpolation, used as a
	verb or noun for the operation. "Bresenham's algorithm lerps
	incrementally between the two endpoints of the line."

less than

	<character> "<" {ASCII} character 60.

	Common names: {ITU-T}: less than; bra (">" = ket); left angle;
	left angle bracket; left broket.  Rare: from; read from; suck
	(">" = blow); comes-from; in; crunch (all from Unix);
	{INTERCAL}: angle.

	See also {greater than}.

	(20 Mar 1995)

LessTif

	<library> The {Hungry Programmers}' version of {OSF}/{Motif}.
	It will be source code compatible with Motif, meaning that the
	same source will compile with both libraries and work exactly
	the same.  All the programming is being done with no reference
	to the header files for the motif widgets, so that LessTif can
	be distributed as {free software}.

	{Home (http://www.hungry.com/products/lesstif)}

	(20 Mar 1995)

let floating

	<programming> A {program transformation} used in {functional
	programming} to implement {full laziness}.  E.g. the function

		f x = x + sqrt 4

	can be expressed as

		f x = let t = sqrt 4 in x + t

	but note that t does not depend on the argument x so we can
	automatically transform this to

		t = sqrt 4
		f x = x + t

	Making t into a global constant which need only be evaluated
	at most once, rather than every time f is called.  The general
	idea is to float each subexpression as far out (towards the
	top level) as possible to maximise sharing.

	(09 Jul 1997)

letterbomb

	<messaging> 1. An {e-mail} message containing {live data}
	intended to do nefarious things to the recipient's computer or
	terminal.  It is possible, for example, to send letterbombs
	that will lock up some specific kinds of terminals when they
	are viewed, so thoroughly that the user must turn the terminal
	off to unwedge it.  Under {Unix}, a letterbomb can also try to
	get part of its contents interpreted as a shell command.  The
	results of this could range from silly to tragic.

	See also {Trojan horse}; compare {nastygram}, {talk bomb}.

	2. Loosely, a {mailbomb}.

	(16 Jan 1998)

level 1 cache

	{primary cache}

level 2 cache

	{secondary cache}

LEVEL5 OBJECT

	From {Information Builders}.

	[What is it?]

level one cache

	{primary cache}

level-sensitive scan design

	(circuit design) (LSSD) A kind of {scan design} which uses
	separate system and scan clocks to distinguish between normal
	and test mode.  Latches are used in pairs, each has a normal
	data input, data output and clock for system operation.  For
	test operation, the two latches form a master/slave pair with
	one scan input, one scan output and non-overlapping scan
	clocks A and B which are held low during system operation but
	cause the scan data to be latched when pulsed high during
	scan.

		  ____
		 |    |
	 Sin ----|S   |
	 A ------|>   |
		 |   Q|---+--------------- Q1
	 D1 -----|D   |   |
	 CLK1 ---|>   |	  |
		 |____|	  |    ____
			  |   |	   |
			  +---|S   |
	 B -------------------|>   |
			      |	  Q|------ Q2 / SOut
	 D2 ------------------|D   |
	 CLK2 ----------------|>   |
			      |____|

	In a single latch LSSD configuration, the second latch is used
	only for scan operation.  Allowing it to be use as a second
	system latch reduces the silicon overhead.

	(15 Feb 1995)

level two cache

	{secondary cache}

Lex

	1. A {lexical analyser} generator for {Unix} and its input
	language.  There is a {GNU} version called {flex} and a
	version written in, and outputting, {SML/NJ} called {ML-lex}.
	A version, by David Poole <dpoole@hydrogen.oscs.montana.edu>,
	has been retargeted to {Turbo Pascal},
	{(ftp://iecc.com/pub/file/lyprg.zip)}.

	["Lex - A Lexical Analyzer Generator", M.E. Lesk, CS TR 39,
	Bell Labs (Oct 1975)].

	2. Lexical specification language for COPS.

	["Metalanguages of the Compiler Production System COPS",
	J. Borowiec, in GI Fachgesprach "Compiler-Compiler", ed
	W. Henhapl, Tech Hochs Darmstadt 1978, pp.122-159].

lexeme

	<grammar> A minimal lexical unit of a language.  {Lexical
	analysis} converts strings in a language into a list of
	lexemes.  For a programming language these word-like pieces
	would include {keywords}, {identifiers}, {literal}s and
	punctutation.  The lexemes are then passed to the {parser} for
	syntactic analysis.

	(06 Apr 1996)

lexer

	{lexical analyser}

lexical analyser

	<language> (Or "scanner") The initial input stage of a
	language processor (e.g. a {compiler}), the part that performs
	{lexical analysis}.

	(05 Apr 1995)

lexical analysis

	<programming> (Or "linear analysis", "scanning") The first
	stage of processing a language.  The stream of characters
	making up the source program or other input is read one at a
	time and grouped into {lexeme}s (or "tokens") - word-like
	pieces such as keywords, identifiers, {literal}s and
	punctutation.  The lexemes are then passed to the {parser}.

	["Compilers - Principles, Techniques and Tools", by Alfred
	V. Aho, Ravi Sethi and Jeffrey D. Ullman, pp. 4-5]

	(05 Apr 1995)

lexical scope

	<programming> (Or "static scope") In a lexically scoped
	language, the {scope} of an {identifier} is fixed at
	{compile-time} to be the smallest {block} (begin/end or
	function/procedure body) containing the identifier's
	declaration.  This means that an identifier declared in some
	block is only accessible within that block and from procedures
	declared within it.

	Opposite of {dynamic scope}.  See {activation record}.

	(09 May 1995)

lexical scoping

	{lexical scope}

lexiphage

	/lek'si-fayj"/  A notorious word {chomper} on
	ITS.  See {bagbiter}.  This program would draw on a selected
	victim's bitmapped terminal the words "THE BAG" in ornate
	letters, followed a pair of jaws biting pieces of it off.

LF

	{Line Feed}

LG

	Simple language for analytic geometry, with graphic output.
	"LG: A Language for Analytic Geometry", J. Reymond, CACM 12(8)
	(Aug 1969).

LGDF

	Large-Grain DataFlow.

	["A Large-grain Data Flow Scheduler for Parallel Processing on
	Cyberplus", R.G. Babb et al, Proc 1986 Intl Conf on Paralllel
	Proc, Aug 1986].

LGEN

	A {logic language} for {VLSI} implementation by {S.C. Johnson}
	of {Bell Labs}.

	[S.C. Johnson, "Code Generation for Silicon", Proc 10th POPL,
	1983].

	(15 Feb 1995)

LGN

	{Linear Graph Notation}

lha

	1. <filename extension> The {filename extension} for a file
	produced by the {shareware} {compression} and {archive}
	software {LHARC}.

	2. <tool> A {compression} program for {MS-DOS}.  Output files
	have the extension ".lhz".

	(03 Oct 1995)

LHARC

	<compression, algorithm> A {compression} program developed by
	Rahul Dhesi.  LHARC was later replaced with {LHA}, which
	produces files with extension ".lhz".

	(30 May 1997)

lhs

	<filename extension> The {filename extension} for {literate}
	{Haskell} source files.

	(15 Feb 1995)

lhz

	<filename extension> The {filename extension} for a file
	produced by the {LHA} program.

	(03 Apr 1995)

Liana

	<language> A {C}-like, interpretive, {object-oriented
	programming} language, {class} library, and integrated
	development environment designed specifically for development
	of {application}s for {Microsoft Windows} and {Windows NT}.
	Designed by Jack Krupansky <70642.2662@compuserve.com> of
	{Base Technology}, Liana was first released as a commercial
	product in August 1991.  The language is designed to be as
	easy to use as {BASIC}, as concise as {C}, and as flexible as
	{Smalltalk}.

	The {OOP} {syntax} of {C++} was chosen over the less familiar
	syntax of {Smalltalk} and {Objective-C} to appeal to {C}
	programmers and in recognition of C++ being the leading OOP
	language.  The syntax is a simplified subset of {C/C++}.  The
	{semantics} are also a simplified subset of C/C++, but
	extended to achieve the flexibility of Smalltalk.

	Liana is a typeless language (like {Lisp}, {Snobol} and
	{Smalltalk}), which means that the datatypes of variables,
	function parameters, and function return values are not needed
	since values carry the type information.  Hence, variables are
	simply containers for values and function parameters are
	simply pipes through which any type of value can flow.
	{Single inheritance}, but not {multiple inheritance}, is
	supported.  {Memory management} is automatic using {reference
	counting}.

	The library includes over 150 {class}es, for {dynamic array}s,
	{associative lookup} tables, windows, menus, dialogs,
	controls, bitmaps, cursors, icons, mouse movement, keyboard
	input, fonts, text and graphics display, DDE, and MDI.

	Liana provides flexible OOP support for Windows programming.
	For example, a {list box} automatically fills itself from an
	associated {object}.  That object is not some sort of special
	object, but is merely any object that "behaves like" an array
	(i.e., has a "size" member function that returns the number of
	elements, a "get" function that returns the ith element, and
	the text for each element is returned by calling the "text"
	member function for the element).

	A related product, C-odeScript, is an embeddable application
	scripting language.  It is an implementation of Liana which
	can be called from C/C++ applications to dynamically evaluate
	expressions and statement sequences.  This can be used to
	offer the end-user a macro/scripting capability or to allow
	the C/C++ application to be customized without changing the
	C/C++ source code.

	Here's a complete Liana program which illustrates the
	flexibility of the language semantics and the power of the
	class library:

	 main
	 {
	   // Prompt user for a string.
	   // No declaration needed for "x" (becomes a global variable.)
	   x = ask ("Enter a String");

	   // Use "+" operator to concatenate strings. Memory
	   // management for string temporaries is automatic.  The
	   // "message" function displays a Windows message box.
	   message ("You entered: " + x);

	   // Now x will take on a different type.  The "ask_number"
	   // function will return a "real" if the user's input
	   // contains a decimal point or an "int" if no decimal
	   // point.
	   x = ask_number ("Enter a Number");

	   // The "+" operator with a string operand will
	   // automatically convert the other operand to a string.

	   message ("You entered: " + x);

	   // Prompt user for a Liana expression.  Store it in a
	   // local variable (the type, string, is merely for
	   // documentation.)
	   string expr = ask ("Enter an Expression");

	   // Evaluate the expression. The return value of "eval"
	   // could be any type.  The "source_format" member function
	   // converts any value to its source format (e.g., add
	   // quotes for a string.)  The "class_name" member function
	   // return the name of the class of an object/value.
	   // Empty parens can be left off for member function calls.
	   x = eval (expr);
	   message ("The value of " + expr + " is " + x.source_format +
	       " its type is " + x.class_name);
	 }

	The author explained that the "Li" of Liana stands for
	"Language interpreter" and liana are vines that grow up trees
	in tropical forests, which seemed quite appropriate for a tool
	to deal with the complexity of MS Windows!  It is also a
	woman's name.

	["Liana for Windows", Aitken, P., PC TECHNIQUES, Dec/Jan
	1993].

	["Liana: A Language For Writing Windows Programs", Burk, R.,
	Tech Specialist (R&D Publications), Sep 1991].

	["Liana v. 1.0." Hildebrand, J.D., Computer Language, Dec
	1992].

	["Liana: A Windows Programming Language Based on C and C++",
	Krupansky, J., The C Users Journal, Jul 1992].

	["Writing a Multimedia App in Liana", Krupansky, J.,
	Dr. Dobb's Journal, Winter Multimedia Sourcebook 1994].

	["The Liana Programming Language", R. Valdes, Dr Dobbs J Oct
	1993, pp.50-52].

	(10 Mar 1995)

liar paradox

	<philosophy> A sentence which asserts its own falsity,
	e.g. "This sentence is false" or "I am lying".  These
	paradoxical assertions are meaningless in the sense that there
	is nothing in the world which could serve to either support or
	refute them.  Philosophers, of course, have a great deal more
	to say on the subject.

	["The Liar: an Essay on Truth and Circularity", Jon Barwise
	and John Etchemendy, Oxford University Press (1987). ISBN
	0-19-505944-1 (PBK), Library of Congress BC199.P2B37].

	(22 Feb 1995)

libg++

	The {run-time library} for the {GNU} {C++} compiler, {g++}.
	Version: 2.5.1 is a superset of {ANSI} and {POSIX.1}.

	{FTP} libg++-2.5.1.tar.gz from a {GNU archive site}.

	E-mail: Per Bothner <bothner@cygnus.com>,
	<bug-lib-g++@prep.ai.mit.edu>.

	(30 Jun 1993)

Library of Efficient Data types and Algorithms

	<library> (LEDA) A {class library} for {C++} of efficient data
	types (e.g. {graph} {classes}) and {algorithm}s by Stefan
	N"aher <stefan@mpi-sb.mpg.de> of the {University of
	Saarbruecken}.  Version 3.0 includes both {template} and
	non-template versions.

	{(ftp://ftp.mpi-sb.mpg.de/pub/LEDA)}.

	(15 Apr 1996)

librery

	<spelling> Misspelling of "{library}".

	(13 Dec 1996)

LIDO

	An input language for the attribute evaluator generator {LIGA}
	(a successor of {GAG} and a subsystem of the {Eli}
	compiler-compiler).  LIDO is derived from GAG's input language
	{ALADIN}.

	["LIDO: A Specification Language for Attribute Grammars",
	U. Kastens <uwe@uni-paderborn.de>, Fab Math-Inf, U Paderborn
	(Oct 1989)].

	(20 Oct 1994)

LiE

	A {symbolic mathematics} package aimed at {Lie group}s.

	["LiE, a Package for Lie Group Computations", M.A.A. van
	Leeuwen et al, in Computer Algebra Nederland, 1992 (ISBN
	90-741160-02-7)].

	(20 Oct 1994)

LIFE

	<language> Logic of Inheritance, Functions and Equations.

	An {object-oriented}, {functional}, {constraint}-based
	language by Hassan Ait-Kacy <hak@prl.dec.com> et al of {MCC},
	Austin TX, 1987.  LIFE integrates ideas from {LOGIN} and
	{LeFun}.

	Mailing list: life-users@prl.dec.com.

	See also {Wild_LIFE}.

	["Is There a Meaning to LIFE?", H. Ait-Kacy et al, Intl Conf
	on Logic Prog, 1991].

	(21 Apr 1995)

Life

	<games> The first popular {cellular automata} based
	{artificial life} "game".  Life was invented by British
	mathematician John Horton Conway in 1970 and was first
	introduced publicly in "Scientific American" later that year.

	Conway first devised what he called "The Game of Life" and
	"ran" it using plates placed on floor tiles in his house.
	Because of he ran out of floor space and kept stepping on the
	plates, he later moved to doing it on paper or on a
	checkerboard, and then moved to running Life as a computer
	program on a {PDP-7}.  That first implementation of Life as a
	computer program was written by M. J. T. Guy and
	{S. R. Bourne} (the author of {Unix}'s {Bourne shell}).

	Life uses a rectangular grid of binary (live or dead) cells
	each of which is updated at each step according to the
	previous state of its eight neighbours as follows: a live cell
	with less than two, or more than three, live neighbours dies.
	A dead cell with exactly three neighbours becomes alive.
	Other cells do not change.

	While the rules are fairly simple, the patterns that can arise
	are of a complexity resembling that of organic systems -- hence
	the name "Life".

	Many hackers pass through a stage of fascination with Life,
	and hackers at various places contributed heavily to the
	mathematical analysis of this game (most notably {Bill Gosper}
	at {MIT}, who even implemented Life in {TECO}!; see
	{Gosperism}).  When a hacker mentions "life", he is more
	likely to mean this game than the magazine, the breakfast
	cereal, the 1950s-era board game or the human state of
	existence.

	{Demonstration
	(http://www.research.digital.com/nsl/projects/life/)}.

	["Scientific American" 223, October 1970, p120-123, 224;
	February 1971 p121-117, Martin Gardner].

	["The Garden in The Machine: the Emerging Science of
	Artificial Life", Claus Emmeche, 1994].

	["Winning Ways, For Your Mathematical Plays", Elwyn
	R. Berlekamp, John Horton Conway and Richard K. Guy, 1982].

	["The Recursive Universe: Cosmic Complexity and the Limits of
	Scientific Knowledge", William Poundstone, 1985].

	(07 Sep 1997)

life

	<jargon> The opposite of {Usenet}.  As in "{Get a life!}"

	(21 Apr 1995)

life-cycle

	{software life-cycle}

Life is hard

	[XEROX PARC] This phrase has two possible interpretations: (1)
	"While your suggestion may have some merit, I will behave as
	though I hadn't heard it."  (2) "While your suggestion has
	obvious merit, equally obvious circumstances prevent it from
	being seriously considered."  The charm of the phrase lies
	precisely in this subtle but important ambiguity.

LIFIA

	Laboratoire d'Informatique Fondamentale et d'Intelligence
	Artificielle.

LIFO

	{Last In First Out}

lifted domain

	<theory> In {domain theory}, a {domain} with a new {bottom}
	element added.  Given a domain D, the lifted domain, lift D
	contains an element lift d corresponding to each element d in
	D with the same ordering as in D and a new element bottom
	which is less than every other element in lift D.

	In {functional language}s, a lifted domain can be used to
	model a {constructed type}, e.g. the type

		data LiftedInt = K Int

	contains the values K minint .. K maxint and K bottom,
	corresponding to the values in Int, and a new value bottom.
	This denotes the fact that when computing a value v = (K n)
	the computation of either n or v may fail to terminate
	yielding the values (K bottom) or bottom respectively.

	(In LaTeX, a lifted domain or element is indicated by a
	subscript {\perp}).

	See also {tuple}.

LIGHT

	LIfecycle Global HyperText.

	A project in the CERN ECP/TP group whereby documents resulting
	from the {software life cycle} are available as {hypertext}.

	(03 Feb 1995)

light client

	{thin client}

light-emitting diode

	<electronics> (LED) a type of {diode} that emits light when
	current passes through it.  Depending on the material used the
	colour can be visible or infrared.  LEDs have many uses,
	visible LEDs are used as indicator lights on all sorts of
	electronic devices and in moving-message panels, while
	infrared LEDs are the heart of remote control devices.

	See also {smoke-emitting diode}.

	(05 Jan 1996)

light-emitting resistor

	<electronics, humour> (LER, from "{light-emitting diode}") A
	{resistor} in the final stages of burning up.

	(Though intended as purely humorous, the term could sensibly
	describe the filament of a common incandescent electric light
	bulb).

	See also {SED}.

	(06 Feb 1996)

light pipe

	{optical fibre}

light-weight

	<jargon> Opposite of {heavy-weight}; usually found in
	combining forms such as "{light-weight process}".

	(22 Feb 1996)

Lightweight Directory Access Protocol

	<protocol> (LDAP) A {protocol} for accessing on-line
	{directory services}.

	LDAP was defined by the {IETF} in order to encourage adoption
	of {X.500} directories.  The {Directory Access Protocol} (DAP)
	was seen as too complex for simple {internet clients} to use.
	LDAP defines a relatively simple protocol for updating and
	searching directories running over {TCP/IP}.

	LDAP is gaining support from vendors such as {Netscape},
	{Novell}, {Sun}, {HP}, {IBM}/Lotus, {SGI}, {AT&T}, and
	{Banyan}

	An LDAP directory entry is a collection of attributes with a
	name, called a distinguished name (DN).  The DN refers to the
	entry unambiguously.  Each of the entry's attributes has a
	{type} and one or more values.  The types are typically
	mnemonic strings, like "cn" for common name, or "mail" for
	{e-mail address}.  The values depend on the type.  For
	example, a mail attribute might contain the value
	"babs@umich.edu".  A jpegPhoto attribute would contain a
	photograph in binary {JPEG}/{JFIF} format.

	LDAP directory entries are arranged in a {hierarchical}
	structure that reflects political, geographic, and/or
	organisational boundaries.  Entries representing countries
	appear at the top of the tree.  Below them are entries
	representing states or national organisations.  Below them
	might be entries representing people, organisational units,
	printers, documents, or just about anything else.

	{Netscape directory strategy
	(http://home.netscape.com/newsref/ref/ldap.html)}.

	{RFC 1777}, {RFC 1778}, {RFC 1959}, {RFC 1960}, {RFC 1823}.

	(28 Nov 1996)

light-weight process

	<operating system, parallel> (LWP) A single-threaded
	sub-process which, unlike a {thread}, has its own {process
	identifier} and may also differ in its inheritance and
	controlling features.

	Several {operating systems}, e.g. {SunOS} 5.x, provide {system
	calls} for creating and controlling LWPs.

	(22 Feb 1996)

like kicking dead whales down the beach

	<jargon, humour> Describes a slow, difficult, and disgusting
	process.  First popularised by a famous quote about the
	difficulty of getting work done under one of {IBM}'s
	{mainframe} {OS}es.  "Well, you *could* write a C compiler in
	COBOL, but it would be like kicking dead whales down the
	beach."

	(23 Dec 1997)

like nailing jelly to a tree

	<jargon, humour> Used to describe a task thought to be
	impossible, especially one in which the difficulty arises from
	poor specification or inherent slipperiness in the problem
	domain.  "Trying to display the "prettiest" arrangement of
	nodes and arcs that diagrams a given graph is like nailing
	jelly to a tree, because nobody's sure what "prettiest" means
	algorithmically."

	(23 Dec 1997)

like this

	You weren't supposed to follow that link, it was just an
	example of what a link looks like.

Lila

	Patrick Salle'<salle@geocub.greco-prog.fr>.  A small
	assembly-like language used for implementation of Actor
	languages.  [Plasma perhaps?].

Lilith

	<computer> The {workstation} for which {Modula-2} was
	developed as the system language.

	[Details?]

	(25 Oct 1995)

LILLIAC IV

	<computer> A {supercomputer} designed in the late 1960s at the
	{University of Illinois} which had 64 separate {CPU}s all
	supervised by a common control unit and all capable of
	operating simultaneously.

	(25 Nov 1996)

Lily

	(LIsp LibrarY) A {C++} {class} library by Roger Sheldon
	<sheldon@kong.gsfc.nasa.gov> which gives C++ programmers the
	capability to write {Lisp}-style code.  Lily's {garbage
	collection} mechanism is not sufficient for commercial use
	however and the documentation is incomplete.  It is
	distributed under the {GNU} Library {General Public License}.

	Version: 0.1.

	{(ftp://sunsite.unc.edu/uploads/lily-0.1.tar.gz)}

	(08 Nov 1993)

LIMDEP

	A {linear programming} language used by economists.

LIM EMS

	{Expanded Memory Specification}

LIMP

	["Messages in Typed Languages", J. Hunt et al, SIGPLAN Notices
	14(1):27-45 (Jan 1979)].

Linc

	Burroughs/Unisys 4GL.  Designed in New Zealand.

Lincoln Reckoner

	An interactive mathematics program including matrix
	operations, written about 1965.  It ran on the {TX-2}.

	["The Lincoln Reckonere: An Operation-Oriented On-line
	Facility with Distributed Control", A.N. Stowe et al, Proc
	FJCC 29 (1966)].

	[Sammet 1969, pp. 245-247].

Linda

	A "coordination language" from {Yale}, providing a model for
	{concurrency} with communication via a shared {tuple} space.
	Linda is usually implemented as a subroutine library for a
	specific base language, as in {C-Linda}, {Fortran-Linda},
	{LindaLISP} and {Prolog-Linda}.  It is available from
	{Scientific Computing Associates, Inc.}  [What is?]

	{Home (http://www.cs.yale.edu/HTML/YALE/CS/Linda/linda.html)}

	There is a {Multi-BinProlog} Linda implementation available by
	{(ftp://clement.info.umoncton.ca/)}.

	["Generative Communication in Linda", D. Gelernter
	<gelernter@cs.yale.edu>, ACM TOPLAS 7(1):80-112 (1985)].

	["Linda in Context", N. Carreiro <carreiro@cs.yale.edu> et al,
	CACM 32(4):444-458 (Apr 1989)].

	See also {Ease}, {Lucinda}, {Melinda}.

	(23 Sep 1995)

LindaLISP

	{Linda} for {Lisp}.

line

	1. <hardware> An electrical conductor.  For distances larger
	than a breadbox, a single line may consist of two electrical
	conductors in twisted, parallel, or concentric arrangement
	used to transport one logical signal.

	By extension, a (usually physical) medium such as an {optical
	fibre} which carries a signal.

	(29 Sep 1995)

line 666

	[Christian eschatological myth] The notional line of source at
	which a program fails for obscure reasons, implying either
	that *somebody* is out to get it (when you are the
	programmer), or that it richly deserves to be got (when you
	are not).  "It works when I trace through it, but seems to
	crash on line 666 when I run it."  "What happens is that
	whenever a large batch comes through, mmdf dies on the Line of
	the Beast.  Probably some twit hardcoded a buffer size."

linear address space

	A memory addressing scheme used in processors where the whole
	memory can be accessed using a single address that fits in a
	single register or instruction.  This contrasts with a
	{segmented memory} architecture, such as that used on the
	{Intel 8086}, where an address is given by an offset from a
	base address held in one of the "segment registers".  Linear
	addressing greatly simplifies programming at the {assembly
	language} level but requires more instruction word bits to be
	allocated for an address.

	(16 Feb 1995)

linear argument

	<theory> A function argument which is used exactly once by the
	function.

	If the argument is used at most once then it is safe to
	{inline} the function and replace the single occurrence of the
	formal parameter with the actual argument expression.  If the
	argument was used more than once this transformation would
	duplicate the argument expression, causing it to be evaluated
	more than once.

	If the argument is sure to be used at least once then it is
	safe to evaluate it in advance (see {strictness analysis})
	whereas if the argument was not used then this would waste
	work and might prevent the program from terminating.

	(03 Nov 1994)

linear function

	A {recursive} function is linear if it is of the form

		f x = if p x then q x else h f x

	where h is a "linear functional" which means that

	(1) for all functions, a, b c and some function ht

		h (if a then b else c) = if ht a then h b else h c

	Function ht is known as the "predicate transformer" of h.

	(2) If for some x,

		h (\ y . bottom) x  /=  bottom

	then

		for all g,  ht g x  =  True.

	I.e. if h g x terminates despite g x not terminating then ht g
	x doesn't depend on g.

	See also {linear argument}.

	(15 Feb 1995)

Linear Graph Notation

	(LGN) A linearised representation of {TCOL} trees.

	[B.W. Leverett et al, "An Overview of the Production Quality
	Compiler-Compiler Projects", TR CMU-CS-79-105, Carnegie Mellon
	1979].

	(23 Jan 1995)

linear logic

	{(http://www.csl.sri.com/linear/sri-csl-ll.html)}

	[Wadler, P., "Is there a use for linear logic", ACM/IFIP PEPM
	Conference, 1991].

	[Summary?]

	(21 Feb 1995)

linear map

	<mathematics> (Or "linear transformation") A {function} from a
	{vector space} to a vector space which respects the {additive}
	and {multiplicative} structures of the two: that is, for any
	two {vectors}, u, v, in the source vector space and any
	scalar, k, in the {field} over which it is a vector space, a
	linear map f satisfies f(u+kv) = f(u) + kf(v).

	(30 Sep 1996)

linear programming

	<application> A procedure for finding the maximum or minimum
	of a {linear function} where the arguments are subject to
	linear {constraint}s.  The {simplex method} is one well known
	{algorithm}.

	(06 Apr 1995)

linear transformation

	{linear map}

linear type

	1. <theory, programming> An attribute of values which are used
	exactly once: they are neither duplicated nor destroyed.  Such
	values require no {garbage collection}, and can safely be
	updated in place, even if they form part of a data structure.

	Linear types are related to the {linear logic} of J.-Y Girard.
	They extend Schmidt's notion of {single threading}, provide an
	alternative to Hudak and Bloss' {update analysis}, and offer a
	practical complement to Lafont and Holmstrm's elegant {linear
	language}s.

	['Use-Once' Variables and Linear Objects - Storage Management,
	Reflection and Multi-Threading, Henry Baker.
	{(ftp://ftp.netcom.com/pub/hb/hbaker/Use1Var.html)}].

	["Linear types can change the world!", Philip Wadler,
	"Programming Concepts and Methods", April 1990, eds. M. Broy,
	C. Jones, pub. North-Holland, IFIP TC2 Working Conference on
	Programming Concepts and Methods, Sea of Galilee, Israel].

	(03 Mar 1995)

line conditioning

	<communications> The adjustment of electrical characteristics
	of, e.g., {twisted pair} telephone lines by insertion of
	components such as resistors, capacitors, transformers or
	(commonly) inductors.  Lines intended for analogue voice
	signals usually have inductors inserted every few miles; such
	a line is said to be "loaded".

	The special purpose lines which have neither inductors nor the
	DC voltage which powers ordinary telephones are said to be
	"dry," and are much better for data transmission.

	(07 Apr 1996)

line eater

	<messaging> 1. A {bug} in some now-obsolete versions of the
	{Usenet} software that used to eat up to {BUFSIZ} bytes of the
	article text.  The bug was triggered by having the text of the
	article start with a space or tab.  This bug was quickly
	personified as a mythical creature called the "line eater",
	and postings often included a dummy line of "line eater food".
	Ironically, line eater "food" not beginning with a space or
	tab wasn't actually eaten, since the bug was avoided; but if
	there *was* a space or tab before it, then the line eater
	would eat the food *and* the beginning of the text it was
	supposed to be protecting.  The practice of "sacrificing to
	the line eater" continued for some time after the bug had been
	{nailed to the wall}, and is still humorously referred to.
	The bug itself is still (in mid-1991) occasionally reported to
	be lurking in some mail-to-netnews {gateways}.

	2. {NSA line eater}.

	(09 Apr 1996)

Line Feed

	<character> (LF, control-J, {ASCII} 10) The {ASCII} character
	meaning move the {cursor} down to the same column on the next
	line.  Originally this would have been done by "feeding" paper
	through the printer.

	{Unix} uses line feed as its text line terminator ({newline}
	character).

	(14 Jul 1997)

line noise

	<communications> 1. Spurious characters due to electrical
	{noise} in a communications link, especially an {RS-232}
	serial connection.  Line noise may be induced by poor
	connections, interference or {crosstalk} from other circuits,
	electrical storms, {cosmic rays}, or (notionally) birds
	crapping on the phone wires.

	2. Any chunk of data in a file or elsewhere that looks like
	the results of electrical line noise.

	3. Text that is theoretically a readable text or program
	source but employs {syntax} so bizarre that it looks like line
	noise.  Yes, there are languages this ugly.  The canonical
	example is {TECO}, whose input syntax is often said to be
	indistinguishable from line noise.  Other non-{WYSIWYG}
	editors, such as {Multics} "{qed}" and {Unix} "{ed}", in the
	hands of a real hacker, also qualify easily, as do
	deliberately {obfuscate}d languages such as {INTERCAL}.

	(22 Dec 1994)

line printer

	<printer> A {printer} that prints one entire line at a time.
	Print quality is low compared with, say, a {laser printer},
	but line printers are fast.

	[Typical pages per minute?]

	(02 Aug 1996)

line probing

	A feature of some {V.34} {modem}s that will allow them to
	identify the capacity and quality of the phone line and adjust
	themselves to allow, for each individual connection, for
	maximum throughput using the highest possible data
	transmission rate.

	(09 Jun 1994)

line starve

	(MIT, opposite of {line feed}) 1. To feed paper through a
	printer the wrong way by one line (most printers can't do
	this).  On a display terminal, to move the cursor up to the
	previous line of the screen.  "To print "X squared", you just
	output "X", line starve, "2", line feed."  (The line starve
	causes the "2" to appear on the line above the "X", and the
	line feed gets back to the original line.)

	2. A character (or character sequence) that causes a terminal
	to perform this action.  ASCII 26, also called SUB or
	control-Z, was one common line-starve character in the days
	before {microcomputer}s and the {X3.64} terminal standard.
	Unlike "line feed", "line starve" is *not* standard {ASCII}
	terminology.  Even among hackers it is considered silly.

	3. (Proposed) A sequence such as \c (used in {System V}
	{echo}, as well as {nroff} and {troff}) that suppresses a
	{newline} or other character(s) that would normally be
	emitted.

	(03 Feb 1995)

Lingo

	An animation scripting language.

	[MacroMind Director V3.0 Interactivity Manual, MacroMind
	1991].

LINGOL

	LINguistics Oriented Language.  Natural language processing.

	["A Linguistics Oriented Programming Language", V.R. Pratt,
	Third Intl Joint Conf on AI, 1973].

link

	1. <file system> {hard link} or {symbolic link}.

	2. <hypertext> {hyperlink}.

	(22 Oct 1997)

Link Access Procedure on the D channel

	(LAPD) (Q.921).  An {Integrated Services Digital Network}
	{data link layer} protocol.

Link Access Protocol Balanced

	<protocol> (LAPB) {X.25} layer 2 ({data link layer})
	{protocol}.

	[Details?]

	(22 Jan 1996)

Link Access Protocol for Modems

	(LAPM) The {Automatic Repeat Request} system used in the
	{V.42} {protocol}.

Link Control Protocol

	<protocol> A {protocol} used to automatically agree upon
	{encapsulation} format options, handle varying packet size
	limits, authenticate the identity of its {peer} on the link,
	determine when a link is functioning properly and when it is
	defunct, detect a looped-back link and other common
	misconfiguration errors, and terminate the link.

	[RFC 1570].

	(10 May 1997)

link-dead

	Said of a {MUD} character who has frozen in place because of a
	dropped network connection.

	(24 Jan 1995)

linked list

	<programming> A data structure in which each element contains
	a pointer to the next element, thus forming a linear list.

	A doubly linked list contains pointers to both the next and
	previous elements.

	(28 Mar 1995)

linker

	A computer program which accepts the {object code} files of
	one or more separately compiled program {modules}, and links
	them together into a complete executable program, resolving
	references from one module to another.

	The {Unix} linker is called "ld".

	(24 Jan 1995)

link farm

	[Unix] A directory tree that contains many links to files in a
	master directory tree of files.  Link farms save space when
	one is maintaining several nearly identical copies of the same
	source tree - for example, when the only difference is
	architecture-dependent object files.  "Let's freeze the source
	and then rebuild the FROBOZZ-3 and FROBOZZ-4 link farms."
	Link farms may also be used to get around restrictions on the
	number of "-I" (include-file directory) arguments on older C
	preprocessors.  However, they can also get completely out of
	hand, becoming the file system equivalent of {spaghetti code}.

link rot

	<World-Wide Web> The process by which links on a {web page}
	became unusable as the pages they point to change location or
	are removed.

	(29 Mar 1997)

Link State Routing Protocol

	<networking, communications> A {routing} {protocol} such as
	{OSPF} which permits routers to exchange information with one
	another about the reachability of other networks and the cost
	or metric to reach the other networks.

	The cost/metric is based on number of {hops}, link speeds,
	traffic congestion, and other factors as determined by the
	network designer.  Link state tourers[?] use {Dijkstra's
	algorithm} to calculate shortest (lowest cost) paths, and
	normally update other routers with whom they are connected
	only when their own routing tables change.

	Link state routing is an improvement over {distance-vector
	routing} protocols such as {RIP} which normally use only a
	single metric (such as hop count) and which exchange all of
	their table information with all other routers on a regular
	schedule.  Link state routing normally requires more
	processing but less transmission overhead.

	(07 Jan 1997)

LINPACK

	1. A package of {linear algebra} routines.

	2. The kernel {benchmark} developed from the "LINPACK" package
	of linear algebra routines.  It was written by Jack Dongarra
	<dongarra@cs.utk.edu> in {Fortran} and is commonly used in
	that language but there is also a {C} version.

	Source Code by FTP: {single precision Fortran
	(ftp://netlib.att.com/netlib/benchmark/linpacks.Z)},
	{double precision Fortran
	(ftp://netlib.att.com/netlib/benchmark/linpackd.Z)},
	{C (ftp://netlib.att.com:/netlib/benchmark/linpackc.Z)}.

	{Results
	(http://performance.netlib.org/performance/html/linpack.data.col0.html)}.

	(14 Nov 1994)

lint

	A {Unix} {C} language processor which carries out more
	thorough checks on the code than is usual with C {compiler}s.

	Lint is named after the bits of fluff it supposedly picks from
	programs.  Judging by references on {Usenet} this term has
	become a shorthand for {desk check} at some non-Unix shops,
	even in languages other than {C}.  Also used as {delint}.

	(14 Nov 1994)

Linux

	<operating system> ("Linus Unix") An implementation of the
	{Unix} {kernel} originally written from scratch with no
	proprietary code.

	The kernel runs on {Intel} and {Alpha} hardware in the general
	release, with {SPARC}, {PowerPC}, {MIPS}, {ARM}, {Amiga},
	{Atari}, and {SGI} in active development.  The SPARC, PowerPC,
	ARM, {PowerMAC} - {OSF}, and 68k ports all support {shells},
	{X} and {networking}.  The Intel and SPARC versions have
	reliable {symmetric multiprocessing}.

	Work on the kernel is coordinated by Linus Torvalds, who holds
	the copyright on a large part of it.  The rest of the
	copyright is held by a large number of other contributors (or
	their employers).  Regardless of the copyright ownerships, the
	kernel as a whole is available under the {GNU} {General Public
	License}.  The GNU project supports Linux as its kernel until
	the research {Hurd} kernel is completed.

	This kernel would be no use without {application programs}.
	The GNU project has provided large numbers of quality tools,
	and together with other {public domain} software it is a rich
	Unix environment.  A compilation of the Linux kernel and these
	tools is known as a Linux distribution.  Compatibility modules
	and/or {emulators} exist for dozens of other computing
	environments.

	The kernel version numbers are significant: the odd numbered
	series (e.g. 1.3.xx) is the development (or beta) kernel which
	evolves very quickly.  Stable (or release) kernels have even
	major version numbers (e.g. 1.2.xx).

	There is a lot of commercial support for and use of Linux,
	both by hardware companies such as {Digital}, {IBM}, and
	{Apple} and numerous smaller network and integration
	specialists.  There are many commercially supported
	distributions which are generally entirely under the GPL.  At
	least one distribution vendor guarantees {Posix} compliance.
	Linux is particularly popular for {Internet Service
	Providers}, and there are ports to both parallel
	supercomputers and {embedded} {microcontrollers}.

	{funet Linux Archive (ftp://ftp.funet.fi/pub/Linux)}, {US
	mirror (ftp://sunsite.unc.edu/pub/Linux/)}, {UK Mirror
	(ftp://sunsite.doc.ic.ac.uk/packages/Linux/)}.

	(21 May 1996)

Linux Documentation Project

	<project> (LDP) A team of volunteers developing documentation
	for the {Linux} {operating system}.  The main goal of the LDP
	is to take care of all of the issues of Linux documentation,
	ranging from on-line documentation to printed manuals,
	covering topics such as installing, using, and running Linux.
	The LDP has no central organization; anyone who is interested
	in helping can join in the effort.

	{(ftp://sunsite.unc.edu/pub/Linux/docs/LDP/LDP-Manifesto)}

	(01 Dec 1994)

Linux Network Administrators' Guide

	(NAG) A book on setting up and running {Unix} networks.  NAG
	is freely available in electronic form.  It was produced by
	Olaf Kirch, <okir@monad.swb.de> and others as part of the
	{Linux Documentation Project} with help from {O'Reilly and
	Associates}.

	It includes the following sections: Introduction to
	Networking, Issues of {TCP/IP} Networking, Configuring the
	Networking Hardware, Setting up the Serial Hardware,
	Configuring TCP/IP Networking, {Name Service} and {Resolver}
	Configuraton, {Serial Line IP}, The {Point-to-Point Protocol},
	Various Network Applications, The {Network Information
	System}, The {Network File System}, Managing {Taylor UUCP},
	{Electronic Mail}, Getting {smail} Up and Running,
	{Sendmail+IDA}, {Netnews}, {C} News, A Description of NNTP,
	Newsreader Configuration, Glossary, Annotated Bibliography.

	{FTP from UNC (ftp://sunsite.unc.edu/pub/Linux/docs/LDP)}.
	{FTP from MIT (ftp://tsx-11.mit.edu/pub/linux/docs/LDP)}.

	(01 Dec 1994)

lion food

	<humour> (IBM) Middle management or HQ staff, or, by
	extension, administrative drones in general.  The term derives
	from an old joke:

	Two lions escape from the zoo and split up to increase their
	chances.  When they finally meet after two months, one is
	skinny and the other overweight.  The thin one says, "How did
	you manage?  I ate a human just once and they turned out a
	small army to chase me with guns and nets, it was terrible.
	Since then I've been reduced to eating mice, insects, even
	grass."  The fat one replies: "Well, *I* hid near an IBM
	office and ate a manager every day.  Nobody even noticed!"

	(01 Dec 1994)

Lions Book

	<publication> "Source Code and Commentary on Unix level 6", by
	John Lions.

	The two parts of this book contained the entire source listing
	of the {Unix} Version 6 {kernel}, and a commentary on the
	source discussing the {algorithms}.  These were circulated
	internally at the {University of New South Wales} beginning
	1976-77, and were, for years after, the *only* detailed kernel
	documentation available to anyone outside {Bell Labs}.
	Because {Western Electric} wished to maintain trade secret
	status on the kernel, the Lions book was never formally
	published and was only supposed to be distributed to
	affiliates of source licensees (it is still possible to get a
	Bell Labs reprint of the book by sending a copy of a V6 {source
	licence} to the right person at {Bellcore}, but *real* insiders
	have the UNSW edition).  In spite of this, it soon spread by
	{samizdat} to a good many of the early Unix hackers.

	{(http://www.peer-to-peer.com/catalog/history/lions.html)}.

	In 1996 it was reprinted as a "classic":

	[John Lions, "Lions' Comentary on UNIX 6th Edition with Source
	Code", Computer Classics Revisited Series, Peer-to-Peer
	Communications, 1996, ISBN 1-57398-013-7].

	(25 Jun 1997)

LIPL

	Linear IPL.

	A linearised (i.e. horizontal format) version of IPL-V.

	[Sammet 1969, p. 394].

	[R. Dupchak, "LIPL - Linear Information Processing Language",
	Rand Memo RM-4320-PR, Feb 1965].

	(01 Dec 1994)

liquid crystal display

	<hardware> (LCD) An electro-optical device used to display
	digits, characters or images, commonly used in digital
	watches, calculators, and portable computers.

	The heart of the liquid crystal display is a piece of {liquid
	crystal} material placed between a pair of transparent
	{electrodes}.  The liquid crystal changes the phase of the
	light passing through it and this phase change can be
	controlled by the {voltage} applied between the electrodes.
	If such a unit is placed between a pair of {plane polariser}
	plates then light can pass through it only if the correct
	voltage is applied.  Liquid crystal displays are formed by
	integrating a number of such cells, or more usually, by using
	a single liquid crystal plate and a pattern of electrodes.

	The simplest kind of liquid crystal displays, those used in
	digital watches and calculators, contain a common electrode
	plane covering one side and a pattern of electrodes on the
	other.  These electrodes can be individually controlled to
	produce the appropriate display.  Computer displays, however,
	require far too many pixels (typically between 50,000 and
	several millions) to make this scheme, in particular its
	wiring, feasible.  The electrodes are therefore replaced by a
	number of row electrodes on one side and column electrodes on
	the other.  By applying voltage to one row and several columns
	the {pixels} at the intersections are set.

	The pixels being set one row after the other, in {passive
	matrix} displays the number of rows is limited by the ratio of
	the setting and fading times.  In the setup described above
	(known as "{twisted nematic}") the number of rows is limited
	to about 20.  Using an alternative "{supertwisted nematic}"
	setup {VGA} quality displays (480 rows) can be easily built.
	As of 1995 most {notebook computers} used this technique.

	Fading can be slowed by putting an active element, such as a
	{transistor}, on the top of each pixel.  This "remembers" the
	setting of that pixel.  These {active matrix} displays are of
	much better quality (as good as {CRTs}) but are much more
	expensive than the passive matrix displays.

	LCDs are slimmer, lighter and consume less power than the
	previous dominant display type, the {cathode ray tube}, hence
	their importance for {portable computers}.

	(09 Dec 1995)

LIS

	Langage Implementation Systeme.

	A predecessor of {Ada} developed by Ichbiah in 1973.  It was
	influenced by {Pascal}'s data structures and {Sue}'s control
	structures.  A type declaration can have a low-level
	implementation specification.

	["The System Implementation Language LIS", J.D. Ichbiah et al,
	CII Honeywell-Bull, TR 4549 E/EN, Louveciennes France (Dec
	1974)].

	["The Two-Level Approach to Data Independent Programming in
	LIS", J.D. Ichbiah et al, in Machine Oriented Higher Level
	Languages, W. van der Poel ed, N-H 1974, pp.161-169].

	(01 Dec 1994)

LISA

	1. <computer> Local Integrated Software Architecture.

	A {personal computer} made by {Apple Computer, Inc.}  A
	predecessor of the {Macintosh}.

	[Details?]

	2. <tool> A system for statistical data analysis, similar to
	{S}.

	{FTP MIT (ftp://dolphin.mit.edu/)}.

	3. <event> {Large Installation Systems Administration}.

	(02 Jan 1996)

Liskov substitution principle

	<programming, theory> (LSP) The principle that states that
	{object-oriented} a {functions} that uses {pointers} or
	references to a base {class} must be able to use {objects} of
	derived classes without knowing it.

	Barbara Liskov first wrote it as follows: If for each object
	o1 of type S there is an object o2 of type T such that for all
	programs P defined in terms of T, the behaviour of P is
	unchanged when o1 is substituted for o2 then S is a {subtype}
	of T.

	If a function does not conform to the LSP, then that function
	uses a pointer or reference to a base class, but must know
	about all the derivatives of that base class.  Such a function
	violates the {open/closed principle} because it must be
	modified whenever a new derivative of the base class is
	created.

	[Liskov, B. Data Abstraction and Hierarchy, SIGPLAN
	Notices. 23(5), May 1988].

	(24 Sep 1997)

Lisp

	<language> LISt Processing language.

	(Or mythically "Lots of Irritating Superfluous Parentheses").
	{Artificial Intelligence}'s mother tongue, a symbolic,
	{functional}, {recursive} language based on the ideas of
	{lambda-calculus}, variable-length lists and trees as
	fundamental data types and the interpretation of code as data
	and vice-versa.

	Data objects in Lisp are lists and {atom}s.  Lists may contain
	lists and atoms.  Atoms are either numbers or symbols.
	Programs in Lisp are themselves lists of symbols which can be
	treated as data.  Most implementations of Lisp allow functions
	with {side-effect}s but there is a core of Lisp which is
	{purely functional}.

	All Lisp functions and programs are expressions that return
	values; this, together with the high memory use of Lisp, gave
	rise to {Alan Perlis}'s famous quip (itself a take on an Oscar
	Wilde quote) that "Lisp programmers know the value of
	everything and the cost of nothing".

	The original version was {LISP 1}, invented by {John McCarthy}
	<jmc@sail.stanford.edu> at {MIT} in the late 1950s.  Lisp is
	actually older than any other {high level language} still in
	use except {FORTRAN}.  Accordingly, it has undergone
	considerable change over the years.  Modern variants are quite
	different in detail.  The dominant {HLL} among hackers until
	the early 1980s, Lisp now shares the throne with {C}.  See
	{languages of choice}.

	One significant application for Lisp has been as a proof by
	example that most newer languages, such as {COBOL} and {Ada},
	are full of unnecessary {crock}s.  When the {Right Thing} has
	already been done once, there is no justification for
	{bogosity} in newer languages.

	See also {Association of Lisp Users}, {Common Lisp}, {Franz
	Lisp}, {MacLisp}, {Portable Standard Lisp}, {Interlisp},
	{Scheme}, {ELisp}, {Kamin's interpreters}.

	(16 Apr 1995)

*LISP

	(StarLISP) A {data-parallel} extension of {Common LISP} for
	the {Connection Machine}, uses "{pvars}".

	{A *LISP simulator
	(ftp://think.com/public/starsim-f19-sharfile)}.

	E-mail: <customer-support@think.com>,
	<documentation-order@think.com>.

	[Cliff Lasser, Jeff Mincy, J.P. Massar, Thinking Machines
	Corporation  "The Essential *LISP Manual", TM Corp 1986].

LISP 1

	The original {Lisp}.  Invented by John McCarthy et al at {MIT}
	in the late 50's.  Followed by {LISP 1.5}.

LISP 1.5

	The second version of {Lisp}, successor to {LISP 1}.
	Developed at {MIT} in 1959.  Followed by LISP 1.75, LISP 1.9,
	{Lisp 2} and many other versions.

LISP 2

	{LISP 1.5} with an {ALGOL 60}-like surface syntax.  Also
	optional type declarations, new data types including
	integer-indexed {array}s and character strings, partial-word
	extraction/insertion operators and {macro}s.  A
	{pattern-matching} facility similar to {COMIT} was proposed.
	Implemented for the {Q-32} computer.

	["The LISP 2 Programming Language and System", P.W.  Abrahams
	et al, Proc FJCC 29:661-676, AFIPS (Fall 1966).]

LISP70

	A {Lisp} dialect descended from {MLISP} and {MLISP2}.  Also
	known as PLISP and VEL.  Useful for parsing.  Only the
	pattern-matching system was published and fully implemented.
	According to Alan Kay, LISP70 had an influence on
	{Smalltalk-72}.  "The LISP70 Pattern Matching System, Larry
	Tesler et al, IJCAI 73.

LISP A

	"LISP A: A LISP-like System for Incremental Computing", E.J.
	Sandewall, Proc SJCC 32 (1968).

LISP Extended Algebraic Facility

	<language> (LEAF)

	["An Algebraic Extension to LISP", P.H. Knowlton, Proc FJCC 35
	1969].

	(07 Jun 1996)

Lispkit

	<language> A {functional programming} language designed by
	Peter Henderson with Lisp syntax. Designed for portability.
	The Lispkit implementation is an extension to Landin's SECD
	machine that supports lazy evaluation.  See also Stack
	environment control dump machine.

Lispkit Lisp

	Purely functional version of LISP.  "Functional Programming,
	Application and Implementation", P. Henderson, P-H 1980.

Lisp-Linda

	P. Dourish, U Edinburgh 1988.

LISP Machine LISP

	An extension of {Maclisp}, now called {Zetalisp}.

Lisp Object-Oriented Programming System

	(LOOPS) An {object-oriented} extension of {Lisp} from the
	{Intelligent Systems Laboratory} at {Xerox} {Palo Alto
	Research Center}.  It is used in the development of
	{knowledge-based system}s.

	See also {CommonLoops}.

	["The LOOPS Manual", D.G. Bobrow & M. Stefik, Xerox Corp
	1983].

LISP, Objects, and Symbolic Programming

	A book with compiler included by Robert R. Kessler and Amy
	R. Petajan, published by Scott, Foresman and Company,
	Glenview, IL, USA.  (1988).

Lisptalk

	"Concurrent Programming Language Lisptalk", C. Li, SIGPLAN
	Notices 23(4):71-80 (Apr 1988).

LispView

	CLOS based windowing system on OpenWindows.

list comprehension

	An expression in a {functional language} denoting the results
	of some operation on (selected) elements of one or more lists.
	An example in {Haskell}:

	[ (x,y) | x <- [1 .. 6], y <- [1 .. x], x+y < 10]

	This returns all pairs of numbers (x,y) where x and y are
	elements of the list 1, 2, ..., 10, y <= x and their sum is
	less than 10.

	A list comprehension is simply "{syntactic sugar}" for a
	combination of applications of the functions, concat, map and
	filter.  For instance the above example could be written:

		filter p (concat (map (\ x -> map (\ y -> (x,y))
				 [1..x]) [1..6]))
		where
		p (x,y) = x+y < 10

	According to a note by Rishiyur Nikhil <nikhil@crl.dec.com>,
	(August 1992), the term itself seems to have been coined by
	Phil Wadler circa 1983-5, although the programming construct
	itself goes back much further (most likely Jack Schwartz and
	the SETL language).

	The term "list comprehension" appears in the references below.

	The earliest reference to the notation is in Rod Burstall and
	John Darlington's description of their language, NPL.

	David Turner subsequently adopted this notation in his
	languages SASL, KRC and Miranda, where he has called them "{ZF
	expression}s", set abstractions and list abstractions (in his
	1985 FPCA paper [Miranda: A Non-Strict Functional Language
	with Polymorphic Types]).

	["The OL Manual" Philip Wadler, Quentin Miller and Martin
	Raskovsky, probably 1983-1985].

	["How to Replace Failure by a List of Successes" FPCA
	September 1985, Nancy, France, pp. 113-146].

	(22 Feb 1995)

List Enhanced

	<operating system, tool> An {MS-DOS} file browsing utility
	first written by Vern Buerg 1983.  A former {mainframe}
	systems programmer, Buerg wrote DOS utilities when he began
	using an {IBM PC} and missed the file-scanning ability he had
	had on mainframes.  The software became an instant success,
	and his list utility is currently in use on an estimated 5
	million PC's.

	{shareware version (http://buerg.com/ftp.html)}.

	(16 May 1997)

listless

	<programming> In {functional programming}, a property of a
	{function} which allows it to be combined with other functions
	in a way that eliminates intermediate data structures,
	especially lists.

	{Phil Wadler}'s thesis gives the conditions for a function to
	be in listless form: each input list is traversed only once,
	one element at a time, from left to right.  Each output list
	is generated once, one element at a time, from left to right.
	No other lists are generated or traversed.

	Not all functions can be expressed in listless form
	(e.g. reverse).

	(22 Feb 1995)

Listproc

	A {mailing list} processor owned and developed by {BITNET}
	which runs under {Unix}.

	See also {Listserv}, {Majordomo}.

	[Details?]

	(22 Feb 1995)

Listserv

	An automatic {mailing list} server, initially written to run
	under {IBM}'s {VM} {operating system} by Eric Thomas.
	Listserv is a {user name} on some computers on {BITNET}/{EARN}
	which processes {electronic mail} requests for addition to or
	deletion from mailing lists.  Examples are listserv@ucsd.edu,
	listserver@nysernet.org.  Some listservs provide other
	facilities such as retrieving files from {archive}s and
	{database} search.  Full details of available services can
	usually be obtained by sending a message with the word HELP in
	the subject and body to the listserv address.

	Eric Thomas, has recently formed an international corporation,
	L-Soft, and has ported Listserv to a number of other platforms
	including {Unix}.  Listserv has simultaneously been enhanced
	to use both the {Internet} and {BITNET}.

	Two other major {mailing list} processors, both of which run
	under {Unix}, are {Majordomo}, a {freeware} system, and
	{Listproc}, currently owned and developed by {BITNET}.

	(22 Feb 1995)

Liszt

	A {Franz Lisp} compiler in {C} which emits {C}, by Jeff
	W. Dalton <jeff@festival.ed.ac.uk>.

	Mailing list: franz-friends-request@berkeley.edu.

	(20 Oct 1994)

lite

	<spelling> (Misspelling of "light", when used to mean
	"lightweight") A suffix denoting a scaled-down or crippled
	product, often designed to be distributed without charge,
	e.g. on a magazine {coverdisk}.  An example is {pklite}.

	(06 Oct 1995)

literal

	<programming> A constant made available to a process, by
	inclusion in the executable text.  Most modern systems do not
	allow texts to modify themselves during execution, so literals
	are indeed constant; their value is written at compile-time
	and is read-only at run-time.

	In contrast, values placed in variables or files and accessed
	by the process via a symbolic name, can be changed during
	execution.  This may be an asset.  For example, messages can
	be given in a choice of languages by placing the translation
	in a file.

	Literals are used when such modification is not desired.  The
	name of the file mentioned above (not its content), or a
	physical constant such as 3.14159, might be coded as a
	literal.  Literals can be accessed quickly, a potential
	advantage of their use.

	(23 Jan 1996)

literate programming

	<programming, text> Combining the use of a text formatting
	language such as {TeX} and a conventional programming language
	so as to maintain documentation and source together.  The
	program is sometimes marked to distinguish it from the text,
	rather than the other way around as in normal programs.

	See {inverse comment convention}.

literature

	The literature.  Computer-science journals and other
	publications, vaguely gestured at to answer a question that
	the speaker believes is trivial.  Thus, one might answer an
	annoying question by saying "It's in the literature."  Oppose
	{Knuth}, which has no connotation of triviality.

	(04 Nov 1994)

LITHE

	Object-oriented with extensible syntax.

	"LITHE: A Language Combining a Flexible Syntax and Classes",
	D. Sandberg, Conf Rec 9th Ann ACM Sym POPL, ACM 1982,
	pp.142-145.

lithium lick

	{NeXT} employees who have had too much attention from their
	esteemed founder, {Steve Jobs}, are said to have "lithium
	lick" when they begin to show signs of Jobsian fervour and
	repeat the most recent catch phrases in normal conversation,
	e.g. "It just works, right out of the box!"

LitProg

	{literate programming}

LITTLE

	A typeless language used to produce machine-independent
	software.  LITTLE has been used to implement SETL.

	"Guide to the LITTLE Language", D. Shields, LITTLE Newsletter
	33, Courant Inst (Aug 1977).

little-endian

	<jargon> A computer architecture in which, within a given 16-
	or 32-bit {word}, bytes at lower addresses have lower
	significance (the word is stored "little-end-first").  The
	{PDP-11} and {VAX} families of computers and {Intel}
	{microprocessor}s and a lot of communications and networking
	hardware are little-endian.

	The term is sometimes used to describe the ordering of units
	other than bytes; most often, bits within a byte.

	Compare {big-endian}, {middle-endian}.  See {NUXI problem}.

	(16 Aug 1995)

Little Smalltalk

	A line-oriented near-subset of {Smalltalk-80} written in {C}
	by Tim Budd <budd@cs.orst.edu>.  Version 3 runs on {Unix},
	{IBM PC}, {Atari} and {VMS}.

	{(ftp://cs.orst.edu/pub/budd/)}

	["A Little Smalltalk", Timothy Budd, A-W 1987].

live data

	1. Data that is written to be interpreted and takes over
	program flow when triggered by some un-obvious operation, such
	as viewing it.  One use of such hacks is to break security.
	For example, some smart terminals have commands that allow one
	to download strings to program keys; this can be used to write
	live data that, when listed to the terminal, infects it with a
	security-breaking {virus} that is triggered the next time a
	hapless user strikes that key.  For another, there are some
	well-known bugs in {vi} that allow certain texts to send
	arbitrary commands back to the machine when they are simply
	viewed.

	2. In {C}, data that includes pointers to functions
	(executable code).

	3. An object, such as a {trampoline}, that is constructed on
	the fly by a program and intended to be executed as code.

	4. Actual real-world data, as opposed to "test data".  For
	example, "I think I have the record deletion module finished."
	"Have you tried it out on live data?"  This usage usually
	carries the connotation that live data is more fragile and
	must not be corrupted, or bad things will happen.  So a more
	appropriate response to the above claim might be: "Well, make
	sure it works perfectly before we throw live data at it."  The
	implication here is that record deletion is something pretty
	significant, and a haywire record-deletion module running amok
	on live data would probably cause great harm.

Live Free Or Die!

	1. The state motto of New Hampshire, which appears on that
	state's automobile licence plates.

	2. A slogan associated with Unix in the romantic days when
	Unix aficionados saw themselves as a tiny, beleaguered
	underground tilting against the windmills of industry.  The
	"free" referred specifically to freedom from the {fascist}
	design philosophies and crufty misfeatures common on
	commercial operating systems.  Armando Stettner, one of the
	early Unix developers, used to give out fake licence plates
	bearing this motto under a large Unix, all in New Hampshire
	colours of green and white.  These are now valued collector's
	items.

livelock

	/li:v'lok/ A situation in which some critical stage of a task
	is unable to finish because its clients perpetually create
	more work for it to do after they have been serviced but
	before it can clear its queue.  This differs from {deadlock}
	in that the process is not blocked or waiting for anything,
	but has a virtually infinite amount of work to do and can
	never catch up.

LiveScript

	{JavaScript}

liveware

	/li:v'weir/ 1. A less common synonym for {wetware}

	2. (Cambridge) Vermin.  "Waiter, there's some liveware in my
	salad."

	(30 Oct 1995)

LL

	<grammar> A class of language {grammar}s, which can
	be {parse}d without {backtrack}ing.  The first L stands for
	Left-to-right scan, the second for Leftmost derivation.

	Often found in the form LL(k) where k is the number of
	{token}s of {look-ahead} required when parsing a sentence of
	the language.  In particular, LL(1) is a fairly restrictive
	class of grammar, but allows simple {top-down} parsing
	(e.g. {recursive-descent}) to be used without wasteful
	{backtracking}.  A number of programming languages are LL(1)
	(or close).

	(30 Oct 1995)

LLC

	{Logical Link Control}

LLGen

	<tool> A {BNF}-based {LL1} {parser generator} by Fischer and
	LeBlanc.  It conforms to a subset of {FMQ}.

	{(ftp://csczar.ncsu.edu/)}

	["Crafting A Compiler", Fischer and LeBlanc].

	(31 Mar 1990)

LLM3

	/el el em trwa/ The {assembly language} for a {virtual
	machine} used as the implementation language for {Le-Lisp}.
	Developed by J. Chailloux of {INRIA}.

LLNL

	{Lawrence Livermore National Laboratory}

LM3

	The {Larch} interface language for {Modula-3}.

	["LM3: A Larch/Modula-3 Interface Language", Kevin D. Jones,
	TR 72, DEC SRC, Palo Alto CA].

LMAO

	<chat> laughed my ass off.  Seen on {Compuserve}.

	(04 Feb 1996)

LML

	1. Lazy ML.

	A {lazy}, {purely functional} variant of {ML} designed by
	Thomas Johnson and Lennart Augustsson at the Chalmers
	University of Technology, Gothenburg, Sweden in 1984.  LML is
	implemented on the {G-machine}, and was used to implement the
	first {Haskell B compiler}.  There is a compiler (lmlc) and
	interpreter.

	{(ftp://ftp.cs.chalmers.se/pub/haskell/chalmers)}

	(14 Dec 1994)

	2. Logical ML.

	Adds to {Lazy ML} a data type of "theories" whose objects
	represent {logic program}s.

	["Logic Programming within a Functional Framework", A. Brogi
	et al, in Programming Language Implementation and Logic
	Programming, P. Deransart et al eds, LNCS 456, Springer 1990].

	(14 Dec 1994)

LM-Prolog

	Lisp Machine Prolog.

	A {Prolog} {interpreter} in {Zetalisp} for the {Lisp Machine}
	developed by Ken Kahn and Mats Carlsson in 1983.

	{(ftp://sics.se/archive/lm-prolog.tar.Z)}

	["LM-Prolog User Manual", M. Carlsson et al, Uppsala Dec
	1983].

	(14 Dec 1994)

LNF

	["A Fully Lazy Higher Order Purely Functional Programming
	Language With Reduction Semantics", K.L. Greene, CASE Center
	TR 8503, Syracuse U 1985].

LO

	Linear Objects.  A {concurrent} {logic programming} language
	based on {linear logic}, an extension of {Horn logic} with a
	new kind of {OR-concurrency}.

	["LO and Behold! Concurrent Structured Processes", J. Andreoli
	et al, SIGPLAN Notices 25(10):44-56 (OOPSLA/ECOOP '90) (Oct
	1990)].

L&O

	Logic and Objects.  A front end for {IC Prolog}.

	{(ftp://src.doc.ic.ac.uk/computing/programming/languages/pd-ICP-0,90.tar.Z)}.
	E-mail: Zacharias Bobolakis <zb@doc.ic.ac.uk>.

	["Logic and Objects", Frank McCabe, Prentice-Hall].

load balancing

	<operating system, parallel> Techniques which aim to spread
	tasks among the processors in a {parallel processor} to avoid
	some processors being idle while others have tasks queueing
	for execution.  Load balancing may be performed either by
	heavily loaded processors (with many tasks in their queues)
	sending tasks to other processors; by idle processors
	requesting work from others; by some centralised task
	distribution mechanism; or some combination of these.  Some
	systems allow tasks to be moved after they have started
	executing ("{task migration}") others do not.  It is important
	that the {overhead} of executing the load balancing
	{algorithm} does not contribute significantly to the overall
	processing or communications load.

	Distributed scheduling {algorithm}s may be static, dynamic or
	preemptive.  Static algorithms allocate processes to
	processors at run time while taking no account of current
	network load.  Dynamic algorithms are more flexible, though
	more computationally expensive, and give some consideration to
	the network load before allocating the new process to a
	processor.  Preemptive algorithms are more expensive and
	flexible still, and may migrate running processes from one
	host to another if deemed beneficial.  Research to date
	indicates that dynamic algorithms yield significant
	performance benefits, but that further (though lesser) gains
	may be had through the addition of process migration
	facilities.

	(13 Mar 1995)

lobotomy

	1. What a hacker subjected to formal management training is
	said to have undergone.  At {IBM} and elsewhere this term is
	used by both hackers and low-level management; the latter
	doubtless intend it as a joke.

	2. The act of removing the processor from a {microcomputer} in
	order to replace or upgrade it.  Some very cheap {clone}
	systems are sold in "lobotomised" form - everything but the
	brain.

LOC

	{lines of code}

local area network

	<networking> (LAN) A data communications network which is
	geographically limited (typically to a 1 km radius) allowing
	easy interconnection of terminals, {microprocessor}s and
	computers within adjacent buildings.  {Ethernet} and {FDDI}
	are examples of standard LANs.

	Because the network is known to cover only a small area,
	optimisations can be made in the network signal protocols that
	permit data rates up to 100Mb/s.

	See also {token ring}, {wide area network}, {metropolitan area
	network}..

	{Usenet} newsgroup: {news:comp.dcom.lans.misc}.

	(13 Mar 1995)

local bus

	<hardware> A {bus} connecting a {processor} to {memory},
	usually on the same {circuit board} as opposed to a
	{backplane} and therefore faster.

	Various proprietary local busses for {personal computers} are
	still in use.  The most common are {Vesa local bus} (VLB or
	VL), and {Peripheral Component Interconnect} (PCI).  Some
	computers, e.g. {notebook computers}, use a local bus with no
	expansion slots.  Previous non-local bus standards include
	{ISA}, {EISA} and {MCA}.

	(25 Aug 1997)

locality

	1. In sequential architectures programs tend to access data
	that has been accessed recently (temporal locality) or that is
	at an address near recently referenced data (spatial
	locality).  This is the basis for the speed-up obtained with a
	{cache} memory.

	2. In a multi-processor architecture with distributed memory
	it takes longer to access the memory attached to a different
	processor.  This overhead increases with the number of
	communicating processors. Thus to efficiently employ many
	processors on a problem we must increase the proportion of
	references which are to local memory.

	(28 Feb 1995)

local loop

	<communications> The circuits between a telephone subscriber's
	residence or business and the switching equipment at the local
	{central office}.

	(17 Mar 1995)

local loopback addresses

	The special {Internet address}, 127.0.0.1, defined by the
	{Internet Protocol}.  A {host} can use local the loopback
	address to send messages to itself.

	(21 Mar 1995)

locals

	The users on one's local network (as opposed, say, to people
	one reaches via public {Internet} or {UUCP} connections).  The
	marked thing about this usage is how little it has to do with
	real-space distance. "I have to do some tweaking on this mail
	utility before releasing it to the locals."

	(29 Nov 1994)

LocalTalk

	An {Apple Computer} {network} {standard} using {Apple Computer}'s own networking
	hardware.

	Compare {EtherTalk}.

	(29 Nov 1994)

locked and loaded

	[Military slang for an M-16 rifle with magazine inserted and
	prepared for firing] Said of a removable disk volume properly
	prepared for use - that is, locked into the drive and with
	the heads loaded.  Ironically, because their heads are
	"loaded" whenever the power is up, this description is never
	used of {Winchester} drives (which are named after a rifle).

locked up

	Synonym for {hung}, {wedged}.

lock-in

	<standard> When an existing standard becomes almost impossible
	to supercede because of the cost or logistical difficulties
	involved in convincing all its users to switch something
	different and, typically, {incompatible}.

	The common implication is that the existing standard is
	notably inferior to other comparable standards developed
	before or since.

	Things which have been accused of benefiting from lock-in in
	the absence of being truly worthwhile include: the {QWERTY}
	keyboard; any well-known {operating system} or programming
	language you don't like (e.g., see "{Unix conspiracy}"); every
	product ever made by {Microsoft Corporation}; and most
	currently deployed formats for transmitting or storing data of
	any kind (especially the {Internet Protocol}, 7-bit (or even
	8-bit) {character sets}, analog video or audio broadcast
	formats), and nearly any file format).

	Because of {network effects} outside of just computer
	networks, {Real World} examples of lock-in include the current
	spelling conventions for writing English (or French, Japanese,
	Hebrew, Arabic, etc.); the design of American money; the
	imperial (feet, inches, ounces, etc.) system of measurement;
	and the various and anachronistic aspects of the internal
	organisation of any government (e.g., the American Electoral
	College).

	Compare with {cruft}, {flag day}.

	(15 Jan 1998)

Locus

	A distributed system project supporting transparent access to
	data through a network-wide file system.

Loebner Prize

	<artificial intelligence> An annual competition in {artificial
	intelligence} started by Dr. Hugh Gene Loebner
	<loebner@acm.org> of New York City in 1991.  A $100,000 prize
	is offered to the author of the first computer program to pass
	an unrestricted {Turing test}.  Annual competitions are held
	each year with a $2000 prize for the best program on a
	restricted {Turing test}.

	Sponsors of previous competitions include: {Apple Computer},
	{Computerland}, Crown Industries, GDE Systems, {IBM} Personal
	Computer Company's {Center for Natural Computing}, Greenwich
	Capital Markets, {Motorola}, the {National Science
	Foundation}, The Alfred P. Sloan Foundation, and The Weingart
	Foundation.

	The 1995 and 1996 events were unrestricted Turing Tests,
	requiring computer entries to converse indefinitely with no
	topic restrictions.  So far, even the best programs give
	themselves away almost immediately, either by simple
	grammatical mistakes or by repetition.

	Complete transcripts and {IBM-compatible} diskettes that play
	the 1991, 1992, and 1993 conversations in real-time are
	available for purchase from the Cambridge Center for
	Behavioral Studies (telephone: +1 (617) 491 9020, Fax: 1072,
	E-mail: <76557.1175@compuserve.com>).  Sponsorship opportunities
	are available.

	{Home (http://info.acm.org/~loebner/loebner-prize.htmlx)}.

	Dr. Hugh G. Loebner <loebner@acm.org>
	Prize Donor
	Telephone: +1 (201) 672 2277 (fax 7536).

	(22 Sep 1996)

{log}

	["{log}: A Logic Programming Language with Finite Sets", A
	Dovier et al, Proc 8th Intl Conf Logic Prog, June 1991,
	pp.111-124].

LogC

	A {C} extension incorporating {rule-oriented programming}, for
	{AI} {application program}s.  {Production rule}s are
	encapsulated into functional components called rulesets.  LogC
	uses a {search network algorithm} similar to {RETE}.

	Version 1.6.

	["LogC: A Language and Environment for Embedded Rule Based
	Systems", F. Yulin et al, SIGPLAN Notices 27(11):27-32 (Nov
	1992)].

logic

	1. <philosophy, mathematics> A branch of philosophy and
	mathematics that deals with the formal principles, methods and
	criteria of validity of {inference}, reasoning and
	{knowledge}.

	Logic is concerned with what is true and how we can know
	whether something is true.  This involves the formalisation of
	logical arguments and {proof}s in terms of symbols
	representing {proposition}s and {logical connective}s.  The
	meanings of these logical connectives are expressed by a set
	of rules which are assumed to be self-evident.

	{Boolean algebra} deals with the basic operations of truth
	values: AND, OR, NOT and combinations thereof.  {Predicate
	logic} extends this with existential and universal
	{quantifier}s and symbols standing for {predicate}s which may
	depend on variables.  The rules of {natural deduction}
	describe how we may proceed from valid premises to valid
	conclusions, where the premises and conclusions are
	expressions in {predicate logic}.

	Symbolic logic uses a {meta-language} concerned with truth,
	which may or may not have a corresponding expression in the
	world of objects called existance.  In symbolic logic,
	arguments and {proof}s are made in terms of symbols
	representing {proposition}s and {logical connective}s.  The
	meanings of these begin with a set of rules or {primitive}s
	which are assumed to be self-evident.  Fortunately, even from
	vague primitives, functions can be defined with precise
	meaning.

	{Boolean logic} deals with the basic operations of {truth
	value}s: AND, OR, NOT and combinations thereof.  {Predicate
	logic} extends this with {existential quantifier}s and
	{universal quantifier}s which introduce {bound variable}s
	ranging over {finite} sets; the {predicate} itself takes on
	only the values true and false.  Deduction describes how we
	may proceed from valid {premise}s to valid conclusions, where
	these are expressions in {predicate logic}.

	Carnap used the phrase "rational reconstruction" to describe
	the logical analysis of thought.  Thus logic is less concerned
	with how thought does proceed, which is considered the realm
	of psychology, and more with how it should proceed to discover
	truth.  It is the touchstone of the results of thinking, but
	neither its regulator nor a motive for its practice.

	See also fuzzy logic, logic programming, arithmetic and logic unit,
	first-order logic,

	See also {Boolean logic}, {fuzzy logic}, {logic programming},
	{first-order logic}, {logic bomb}, {combinatory logic},
	{higher-order logic}, {intuitionistic logic}, {equational
	logic}, {modal logic}, {linear logic}, {paradox}.

	2. <electronics> {Boolean} logic circuits.

	See also {arithmetic and logic unit}, {asynchronous logic},
	{TTL}.

	(17 Mar 1995)

logical

	(From the technical term "logical device", wherein a physical
	device is referred to by an arbitrary "logical" name) Having
	the role of.  If a person (say, Les Earnest at SAIL) who had
	long held a certain post left and were replaced, the
	replacement would for a while be known as the "logical" Les
	Earnest.  (This does not imply any judgment on the
	replacement).

	Compare {virtual}.

	At Stanford, "logical" compass directions denote a coordinate
	system in which "logical north" is toward San Francisco,
	"logical west" is toward the ocean, etc., even though logical
	north varies between physical (true) north near San Francisco
	and physical west near San Jose.  (The best rule of thumb here
	is that, by definition, El Camino Real always runs logical
	north-and-south.)  In giving directions, one might say: "To
	get to Rincon Tarasco restaurant, get onto {El Camino Bignum}
	going logical north."  Using the word "logical" helps to
	prevent the recipient from worrying about that the fact that
	the sun is setting almost directly in front of him.  The
	concept is reinforced by North American highways which are
	almost, but not quite, consistently labelled with logical
	rather than physical directions.

	A similar situation exists at MIT: Route 128 (famous for the
	electronics industry that has grown up along it) is a
	3-quarters circle surrounding Boston at a radius of 10 miles,
	terminating near the coastline at each end.  It would be most
	precise to describe the two directions along this highway as
	"clockwise" and "counterclockwise", but the road signs all say
	"north" and "south", respectively.  A hacker might describe
	these directions as "logical north" and "logical south", to
	indicate that they are conventional directions not
	corresponding to the usual denotation for those words.  (If
	you went logical south along the entire length of route 128,
	you would start out going northwest, curve around to the
	south, and finish headed due east, passing along one infamous
	stretch of pavement that is simultaneously route 128 south and
	Interstate 93 north, and is signed as such!)

	(24 Jan 1995)

logical address

	{virtual address}

Logical Block Addressing

	<storage> (LBA) A method used on {IBM PC}s and compatibles to
	increase the size limit for a single {hard disk} from 528
	{megabytes} to 8.4 {gigabytes}.  An addressing conversion is
	performed on the {IDE} {disk controller} card.  Most modern
	PCs will select this mode automatically, some older PCs allow
	you to select LBA mode manually in the {BIOS}.

	[What sets the limits?  Does LBA only affect IDE?]

	(07 Jan 1997)

logical complement

	<logic> In {Boolean algebra}, the logical complement or
	negation of a Boolean value is the opposite value, given by
	the following {truth table}:

		A | -A
		--+---
		T | F
		F | T

	-A is also written as A with a bar over it or with a small
	vertical line hanging from the right-hand end of the "-"
	({LaTeX} \neg) or as A'.  In the {C} programming language, it
	is !A and in digital circuit design, /A.

	(24 Jan 1995)

Logical Link Control

	<networking> (LLC) The upper portion of the {data link layer},
	as defined in {IEEE 802.2}.  The LLC sublayer presents a
	uniform interface to the user of the data link service, usually
	the {network layer}.  Beneath the LLC sublayer is the {Media
	Access Control} (MAC) sublayer.

	(14 Feb 1995)

logical relation

	A {relation} R satisfying

	f R g  <=>  For all a, b,  a R b => f a R g b

	This definition, by Plotkin, can be used to extend the
	definition of a relation on the types of a and b to a relation
	on functions.

logical shift

	<programming> (Either shift left logical or shift right
	logical) Machine-level operations available on nearly all
	processors which move each bit in a word one or more bit
	positions in the given direction.  A left shift moves the bits
	to more significant positions (like multiplying by two), a
	right shift moves them to less significant positions (like
	dividing by two).  The comparison with multiplication and
	division breaks down in certain circumstances - a logical
	shift may discard bits that are shifted off either end of the
	word and does not preserve the sign of the word (positive or
	negative).

	Logical shift is approriate when treating the word as a {bit
	string} or a sequence of {bit fields}, whereas {arithmetic
	shift} is appropriate when treating it as a binary number.
	The word to be shifted is usually stored in a {register}, or
	possibly in memory.

	(02 Jul 1996)

logical shift left

	{logical shift}

logical shift right

	{logical shift}

Logical Unit

	<networking> (LU) A primary component of {SNA}, an {LU} is a
	type of {NAU} that enables end users to communicate with each
	other and gain access to SNA network resources.

	(30 Apr 1997)

Logical Unit 6.2

	<networking> (LU6.2) A type of {logical unit} that governs
	peer-to-peer {SNA} communications.  LU6.2 supports general
	communication between programs in a distributed processing
	environment.

	LU6.2 is characterised by a {peer} relationship between
	{session partners}, efficient use of a session for multiple
	{transactions}, comprehensive end-to-end error processing and
	a generic {application program interface} consisting of
	{structured verbs} that are mapped into a product
	inplementation.

	LU6.2 is used by {IBM}'s {TPF} {operating system}.

	[IBM Dictionary of Computing, McGraw-Hill 1993].

	(26 Aug 1996)

logic bomb

	<programming, security> Code surreptitiously inserted into an
	application or {operating system} that causes it to perform
	some destructive or security-compromising activity whenever
	specified conditions are met.

	Compare {back door}.

	(02 Jul 1996)

Logic Design Language

	<language> A language for computer design.

	["A System Description Language Using Parametric Text
	Generation", R.H. Williams, TR 02.487, IBM San Jose, Aug
	1970].

	(29 Nov 1994)

logic emulator

	A system of {FPGA}s, programmable interconnect and software
	which automatically configures itself into an operating
	prototype of a large-scale logic design, such as a
	{microprocessor}.  An emulated design can be connected into
	the target system and really operated and tested before the
	design is made into an {integrated circuit}.

	{Quickturn} is the leading logic emulation system.

	(29 Nov 1994)

logic gate

	An {integrated circuit} or other device whose inputs and
	outputs represent {Boolean} or binary values as voltages
	({TTL} uses 0V for False or 0, +5V for True or 1).  Different
	gates implement different Boolean functions: {AND}, {OR},
	{NAND}, {NOR} (these may take two or more inputs) {NOT} (one
	input), {XOR} (two inputs).  NOT, NAND and NOR are often
	constructed from single {transistor}s and the other gates made
	from combinations of these basic ones.  These functions are
	all {combinatorial logic} functions, i.e. their outputs depend
	only on their inputs and there is no internal state.  Gates
	with state, such as {latches} and {flip-flop}s, are
	constructed by feeding some of their outputs back to their
	inputs.

	(08 Feb 1995)

logic programming

	<artificial intelligence, programming, language> A
	{declarative}, {relational} style of programming based on
	{first-order logic}.  The original logic programming language
	was {Prolog}.  The concept is based on {Horn clauses}.

	The programmer writes a "database" of "{facts}", e.g.

		wet(water).

	("water is wet") and "{rules}", e.g.

		mortal(X) :- human(X).

	("X is mortal is implied by X is human").  Facts and rules are
	collectively known as "{clauses}".

	The user supplies a "{goal}" which the system attempts to
	prove using "{resolution}" or "{backward chaining}".  This
	involves matching the current goal against each fact or the
	left hand side of each rule using "{unification}".  If the
	goal matches a fact, the goal succeeds; if it matches a rule
	then the process recurses, taking each sub-goal on the right
	hand side of the rule as the current goal.  If all sub-goals
	succeed then the rule succeeds.

	Each time a possible clause is chosen, a "{choice point}" is
	created on a {stack}.  If subsequent {resolution} fails then
	control eventually returns to the choice point and subsequent
	clauses are tried.  This is known as "{backtracking}".

	Clauses may contain {logic variable}s which take on any value
	necessary to make the fact or the left hand side of the rule
	match a goal.  Unification binds these variables to the
	corresponding subterms of the goal.  Such bindings are
	associated with the {choice point} at which the clause was
	chosen and are undone when backtracking reaches that choice
	point.

	The user is informed of the success or failure of his first
	goal and if it succeeds and contains variables he is told what
	values of those variables caused it to succeed.  He can then
	ask for alternative solutions.

	(14 Jul 1997)

Logic Replacement Technology

	(LRT) Reading, BERKS. Tel: (0734) 751087.  Marketing Director
	Bob Barrett.  Manufacturers of the Ethernet hardware including
	the Filtabyte Ethernet controller card and EtherGate open
	access gateway.

logic variable

	<programming> A variable in a {logic programming} language
	which is initially undefined ("unbound") but may get bound to
	a value or another logic variable during {unification} of the
	containing clause with the current {goal}.  The value to which
	it is bound may contain other variables which may themselves
	be bound or unbound.

	For example, when unifying the clause

		sad(X) :- computer(X, ibmpc).

	with the goal

		sad(billgates).

	the variable X will become bound to the atom "billgates"
	yeilding the new subgoal "computer(billgates, ibmpc)".

	(14 Mar 1995)

LOGIN

	1. An {object-oriented} {deductive language} and {database}
	system integrating {logic programming} and {inheritance}.

	["LOGIN: A Logic Programming Language with Built-In
	Inheritance", H. Ait-Kaci et al, J Logic Programming
	3(3):185-215 (1986)].

login

	<jargon> (Or "log in", "log on", "logon") to start a {session}
	with a system, usually by giving a {user name} and {password}
	as a means of user {authentication}.  The term is also used to
	mean the ability to access a service (also called an account),
	e.g. "Have you been given a login yet?"

	"Log in/on" is occasionally misused to refer to starting a
	session where no authorisation is involved, or to access where
	there is no session involved.  E.g. "log on to our Web site!"

	"login" is also the {Unix} program which reads and verifies a
	user's user name and password and starts an {interactive}
	session.

	(03 Aug 1997)

LOGISCOPE

	Software quality analysis tools from {Verilog} SA, used to
	evaluate the quality of software, both statically (based on
	{software metric}s) and dynamically.

LOGLAN

	<language> An {object-oriented} language from the Institute of
	Informatics at {Warsaw University}.

	[Loglan-88, "Report on the Programming Language, LNCS 414,
	Springer-Verlag, 1990, ISBN 3-540-52325-1].

	(01 Aug 1997)

Loglan'82

	A teaching language including all elements of {object-oriented
	programming}: {class}es, {object}s, {coroutine}s, processes
	(in Loglan'82 processes are objects which are able to act in
	parallel), {inheritance}, {exception handling}, {dynamic
	array}s etc.

	Loglan'82 offers the complete sets of programming tools used
	in object and modular and structural programming.  It also
	supports programming by rules and {functional programming}.

	A {cross-compiler} to {C} is {here
	(ftp://infpc1.univ-pau.fr/pub/Loglan82)} ({General Public
	License}).

	Mailing list: loglan82-request@crisv1.univ-pau.fr.  Put

	 SUBSCRIBE loglan82 <your_first_name>  <your_name>

	in the body of your message to subscribe.

	E-mail:	<Andrzej.Salwicki@univ-pau.fr>.

	(15 Feb 1994)

LOGLISP

	A version of {Prolog} implemented by Robinson in {Lisp} which
	allows Prolog programs to call Lisp and vice versa.

	["LOGLISP: An Alternative to Prolog", J. Alan Robinson et al
	in Machine Intelligence 10, D. Michie ed, Ellis Horwood 1982].

LOGO

	Developed 1966-1968 by a group at {Bolt, Beranek & Newman}
	headed by Wally Fuerzeig <fuerzeig@bbn.com> and including
	Seymour Papert <seymour@media.mit.edu>.  A {Lisp}-like
	language aimed at children and other beginning programmers,
	noted for its "turtle graphics" used to draw geometric shapes.

	There are Logo {interpreter}s for {Macintosh}, {Unix}, {IBM
	PC}, {X Window System}
	{(ftp://anarres.cs.berkeley.edu/pub/logo27)} and in the
	comp.sources.Unix archive volume 10.

	See also {Berkeley Logo}, {MswLogo}.

LOGOL

	Strings are stored on cyclic lists or 'tapes', which are
	operated upon by finite automata.  J. Mysior et al, "LOGOL, A
	String manipulation Language", in Symbol Manipulations
	Languages and Techniques, D.G. Bobrow ed, N-H 1968,
	pp.166-177.

logon

	1. <jargon> {login}.

	2. <networking> In {ACF}/{VTAM}, an unformatted
	session-initiation request for a session between two {logical
	units}.

	(07 Mar 1996)

LOL

	<chat> laughing out loud.

	(18 Jan 1998)

LOLITA

	Language for the On-Line Investigation and Transformation of
	Abstractions.  Extension of Culler-Fried system for symbolic
	math.  "An On- line Symbol Manipulation System",
	F.W. Blackwell, Proc ACM 22nd Natl Conf (1967).  Sammet 1969,
	p.464.

Lolli

	(Named after the "lollipop" operator "-o") An {interpreter}
	for {logic programming} based on {linear logic}, written by
	Josh Hodas <hodas@saul.cis.upenn.edu>.

	Lolli can be viewed as a refinement of the the {Hereditary
	Harrop formula}s of {Lambda-Prolog}.  All the operators
	(though not the {higher order unification}) of Lambda-Prolog
	are supported, but with the addition of linear variations.
	Thus a Lolli program distinguishes between clauses which can
	be used as many, or as few, times as desired, and those that
	must be used exactly once.  Lolli is implemented in {SML/NJ}.

	{(ftp://ftp.cis.upenn.edu/pub/Lolli/Lolli-0.7.tar.Z)}

	[Josh Hodas et al, "Logic Programming in a Fragment of
	Intuitionistic Linear Logic", Information and Computation, to
	appear].

	(18 Nov 1992)

LOM

	Toulouse, early 1980's.  Language for data processing.

	(01 Mar 1996)

longitudinal parity

	<storage, communications> An extra {byte} (or word) appended
	to a block of data in order to reveal corruption of the data.
	Bit n of this byte indicates whether there was an even or odd
	number of "1" bits in bit position n of the bytes in the
	block.  The parity byte is computed by {XOR}ing the data bytes
	in the block.  Longitudinal parity allows single bit errors to
	be detected.

	(01 Mar 1996)

LOOK

	A specification language.

	["A Look at Algebraic Specifications", S.N. Zilles et al, IBM
	RR, 1982].

	(16 Nov 1994)

look and feel

	<operating system> The appearance and function of a program's
	{user interface}.  The term is most often applied to
	{graphical user interface}s (GUI) but might also be used by
	extension for a textual command language used to control a
	program.

	Look and feel includes such things as the {icon}s used to
	represent certain functions such as opening and closing files,
	directories and {application program}s and changing the size
	and position of windows; conventions for the meaning of
	different buttons on a {mouse} and keys on the keyboard; and
	the appearance and operation of menus.

	A {user interface} with a consistent look and feel is
	considered by many to be an important factor in the ease of
	use of a computer system.  The success of the {Macintosh user
	interface} was partly due to its consistency.

	Because of the perceived importance of look and feel, there
	have been several legal actions claiming breech of {copyright}
	on the look and feel of user interfaces, most notably by
	{Apple Computer} against {Microsoft} and {Hewlett-Packard} (which Apple
	lost) and, later, by {Xerox} against {Apple Computer}.  Such legal
	action attempts to force suppliers to make their interfaces
	inconsistent with those of other vendors' products.  This can
	only be bad for users and the industry as a whole.

	(03 Mar 1995)

Looking Glass

	A {desktop} manager for {Unix} from {Visix}.

LOOKS

	["LOOKS: Knowledge-Representation System for Designing Expert
	Systems in a Logical Programming Framework", F. Mizoguchi,
	Proc Intl Conf 5th Gen Comp Sys, ICOT 1984].

loop combination

	A {program transformation} where the bodies of two loops are
	merged into one thus reducing the overhead of manipulating and
	testing the control variable and branching.  Further
	optimisation of the merged code may then become possible.

	In {horizontal loop combination} the bodies of the loops are
	largely independent so only the loop overhead is saved.
	{Vertical loop combination} applies where the results of the
	first loop are used by the second.  Combining the two allows
	the intermediate results to be used immediately (in
	{register}s) rather than requiring them to be stored in an
	{array}.

	The functional equivalent of horizontal and vertical loop
	combination are {tupling} and {fusion}.

loop fusion

	See {loop combination}.

LOOPN

	from the {University of Tasmania}.

	A {compiler}, {simulator} and associated source control for an
	{object-oriented} {Petri net} language called LOOPN by Charles
	Lakos <charles@probitas.cs.utas.edu.au> of the {University of
	Tasmania}.  In LOOPN, a Petri net is an extension of a
	{coloured timed Petri net}.  The extension means firstly that
	token types are {class}es.  In other words, they consist of
	both data fields and functions, they can be declared by
	inheriting from other token types, and they can be used
	{polymorphic}ally.  The object-oriented extensions also mean
	that module or subnet types are classes.

	LOOPN has been developed over a period of about 5 years at the
	University of Tasmania, where it has been used in teaching
	computer simulation and the modelling of {network}
	{protocol}s.

	{(ftp://ftp.utas.edu.au/departments/computer_science/loopn.tar.Z)}

	(1992/12/20)

LOOPS

	{Lisp Object-oriented Programming System}

loop through

	To process each element of a list of things.  "Hold on, I've
	got to loop through my paper mail."  Derives from the
	computer-language notion of an iterative loop; compare "cdr
	down" (under {cdr}), which is less common among C and Unix
	programmers.  ITS hackers used to say "IRP over" after an
	obscure pseudo-op in the MIDAS PDP-10 assembler.

loose bytes

	Commonwealth hackish term for the padding bytes or {shim}s
	many compilers insert between members of a {record} or
	{structure} to cope with alignment requirements imposed by the
	machine architecture.

LOP

	A language based on {first-order logic}.

	["SETHEO - A High-Perormance Theorem Prover for First-Order
	Logic", Reinhold Letz et al, J Automated Reasoning
	8(2):183-212 (1992)].

lord high fixer

	[Primarily British, from Gilbert & Sullivan's "Lord High
	Executioner"] The person in an organisation who knows the most
	about some aspect of a system.  See {wizard}.

Lore

	1. Object-oriented language for knowledge representation.
	"Etude et Realisation d'un Language Objet: LORE", Y. Caseau,
	These, Paris-Sud, Nov 1987.

	2. CGE, Marcoussis, France.  Set-based language [same as 1?]
	E-mail: Christophe Dony <chd.ibp.fr>

lorem ipsum

	{greek}

Lorenz attractor

	<mathematics> (After {Edward Lorenz}, its discoverer) A region
	in the {phase space} of the solution to certain systems of
	(non-linear) {differential equations}.  Under certain
	conditions, the motion of a particle described by such as
	system will neither converge to a steady state nor diverge to
	infinity, but will stay in a bounded but chaotically defined
	region.  By {chaotic}, we mean that the particle's location,
	while definitely in the attractor, might as well be randomly
	placed there.  That is, the particle appears to move randomly,
	and yet obeys a deeper order, since is never leaves the
	attractor.

	Lorenz modelled the location of a particle moving subject to
	atmospheric forces and obtained a certain system of {ordinary
	differential equations}.  When he solved the system
	numerically, he found that his particle moved wildly and
	apparently randomly.  After a while, though, he found that
	while the momentary behaviour of the particle was chaotic, the
	general pattern of an attractor appeared.  In his case, the
	pattern was the butterfly shaped attractor now known as the
	{Lorenz attractor}.

	(13 Jan 1996)

lose

	<jargon> ({MIT}) 1. To fail.  A program loses when it
	encounters an exceptional condition or fails to work in the
	expected manner.

	2. To be exceptionally unesthetic or crocky.

	3. Of people, to be obnoxious or unusually stupid (as opposed
	to ignorant).

	4. Refers to something that is {losing}, especially in the
	phrases "That's a lose!" and "What a lose!"

	(19 Apr 1995)

loser

	<jargon> An unexpectedly bad situation, program, programmer,
	or person.  Someone who habitually loses.  (Even winners can
	lose occasionally).  Someone who knows not and knows not that
	he knows not.  Emphatic forms are "real loser", "total loser",
	and "complete loser" (but not **"moby loser", which would be a
	contradiction in terms).

	See {luser}.

	(19 Apr 1995)

losing

	<jargon> Said of anything that is or causes a {lose} or
	{lossage}.

loss

	<jargon> Something (not a person) that loses; a situation in
	which something is losing.  Emphatic forms include "moby
	loss", and "total loss", "complete loss".  Common
	interjections are "What a loss!"  and "What a moby loss!"
	Note that "moby loss" is OK even though **"moby loser" is not
	used; applied to an abstract noun, moby is simply a magnifier,
	whereas when applied to a person it implies substance and has
	positive connotations.

	Compare {lossage}.

	(19 Apr 1995)

lossage

	<jargon> /los'*j/ The result of a {bug} or malfunction.  This
	is a mass or collective noun.  "What a loss!" and "What
	lossage!"  are nearly synonymous.  The former is slightly more
	particular to the speaker's present circumstances; the latter
	implies a continuing {lose} of which the speaker is currently
	a victim.  Thus (for example) a temporary hardware failure is
	a loss, but bugs in an important tool (like a compiler) are
	serious lossage.

	(19 Apr 1995)

lossless

	<algorithm, compression> A term describing a data
	{compression} {algorithm} which retains all the information in
	the data, allowing it to be recovered perfectly by
	decompression.

	{Unix} {compress} and {GNU} {gzip} perform lossless
	compression.

	Opposite: {lossy}.

	(29 Mar 1995)

lossy

	<algorithm> A term describing a data {compression} {algorithm}
	which actually reduces the amount of information in the data,
	rather than just the number of bits used to represent that
	information.  The lost information is usually removed because
	it is subjectively less important to the quality of the data
	(usually an {image} or {sound}) or because it can be recovered
	reasonably by {interpolation} from the remaining data.

	{MPEG} and {JPEG} are examples of lossy compression
	techniques.

	Opposite: {lossless}.

	(29 Mar 1995)

lost in the noise

	Synonym {lost in the underflow}.  This term is from signal
	processing, where signals of very small amplitude cannot be
	separated from low-intensity noise in the system.  Though
	popular among hackers, it is not confined to hackerdom;
	physicists, engineers, astronomers, and statisticians all use
	it.

lost in the underflow

	<jargon> Too small to be worth considering; more specifically,
	small beyond the limits of accuracy or measurement.  This is a
	reference to "{floating point underflow}".

	The {Hacker's Jargon File} claimed that it is also a pun on
	"undertow" (a kind of fast, cold current that sometimes runs
	just offshore and can be dangerous to swimmers).

	"Well, sure, photon pressure from the stadium lights alters
	the path of a thrown baseball, but that effect gets lost in
	the underflow".

	Compare {epsilon}, {epsilon squared}; see also {overflow bit}.

	(05 Sep 1997)

LOTIS

	LOgic, TIming, Sequencing.  A language which describes a
	computer via its data flow.

	[Sammet 1969, p. 620].

LOTOS

	{Language Of Temporal Ordering Specification}

lots of MIPS but no I/O

	Used to describe a person who is technically brilliant but
	can't seem to communicate with human beings effectively.
	Technically it describes a machine that has lots of processing
	power but is bottlenecked on input-output (in 1991, the IBM
	Rios, a.k.a. RS/6000, is a notorious recent example).

Lotus 1-2-3

	<tool, product> A {spreadsheet} for {MS-DOS} from {Lotus
	Development Corporation}.  It can be programmed using
	"{macro}s" and comes with a separate program to produce graphs
	and charts but this cannot be run at the same time as the
	spreadsheet.  It has keyboard-driven {pop-up menu}s as well as
	one-key commands, making it fast to operate.  Lotus 1-2-3
	supported {EGA} and later {VGA} graphics.  Early versions used
	the {filename extension} "WK1".

	Version: 4.

	Lotus 1-2-3 has been the subject of several {user interface
	copyright} court cases in the US.

	{Home (http://www.nyweb.com/lotus/123.html)}

	1-2-3's successor, {Symphony}, had simultaneous update of
	spreadsheet, graph and {word processor} windows.

	(28 Nov 1995)

Lotus Development Corporation

	<company> A software company who produced {Lotus 1-2-3}, the
	{Symphony} {spreadsheet} and {Lotus Notes} for the {IBM PC}.

	Disliked by the {League for Programming Freedom} on account of
	their lawsuits.

	Quarterly sales $224M, profits $10M (Aug 1994).

	Telephone: +1 (617) 225 1284.

	[Where are they?  Founded when?  Other products?  E-mail?
	Internet?]

	(16 Nov 1994)

Lotus Notes

	A group of {application program}s from {Lotus Development
	Corporation} which allows organisations to share documents and
	exchange {electronic mail} messages.  Notes supports
	{replication}.

	(27 Oct 1994)

Lout

	Lout is a batch text formatting system and an embedded
	language by Jeffrey H. Kingston <jeff@cs.su.oz.au>.  The
	language is procedural, with {Scribe}-like {syntax}.

	Lout features equation formatting, tables, diagrams, rotation
	and scaling, sorted indexes, bibliographic databases, running
	headers and odd-even pages and automatic cross-referencing.
	Lout is easily extended with definitions which are very much
	easier to write than {troff} of {TeX} {macro}s because Lout is
	a {high-level language}, the outcome of an eight-year research
	project that went back to the beginning.

	Version 2.05 includes a translator from Lout to {PostScript}
	and documentation. and runs under {Unix} and on the {Amiga}.

	{Author's site (ftp://ftp.cs.su.oz.au/jeff/lout.2.03.tar.Z)},
	{(ftp://ftp.uu.net/tmp/lout.tar.Z)}.  {Amiga
	(ftp://ftp.wustl.edu/pub/aminet/text/dtp/loutBin203.lha)}.

	(30 Jul 1993)

love

	What many users feel for computers.

	"I don't really love computers, I just say that to get them
	into bed with me". (Terry Pratchet)

	[What did you expect in a computing dictionary?]

	(10 May 1995)

low-bandwidth

	[communication theory] Used to indicate a talk that, although
	not {content-free}, was not terribly informative.  "That was a
	low-bandwidth talk, but what can you expect for an audience of
	{suit}s!"  Compare {zero-content}, {bandwidth}, {math-out}.

low earth orbit

	<communications> (LEO) The kind of orbit used by
	communications satellites that will offer high {bandwidth} for
	{video on demand}, television and other {Internet}
	communications.  A satellite in LEO, in contrast to one in a
	geostationary orbit, is not in a fixed position relative the
	the Earth's surface so several satellites are required to
	provide continuous service.

	[Ovum report, "Applications for the superhighway", John
	Moroney].

	(06 Feb 1996)

lower set

	A finite non-empty downwards {closed} subset of a {partial
	order}.

LOWL

	<language> The {abstract machine} for {bootstrapping} {ML/1},
	developed by P.J. Brown of the {University of Kent at
	Canterbury}.

	["Macro Processors and Techniques for Portable Software",
	P.J. Brown, published by Wiley, ISBN 0.471.11005.1].

	[Mentioned in "Machine Oriented Higher Level Languages",
	W. van der Poel, N-H 1974, p. 271].

	[What does LOWL stand for?]

	(04 Nov 1997)

LPAC

	{London Parallel Applications Centre}

LPC

	<language> A variant of {C} designed ca 1988 to program
	{LP MUD}s.

	(18 Apr 1995)

LPF

	<body> {League for Programming Freedom}.

LPG

	1. Linguaggio Procedure Grafiche (Italian for "Graphical
	Procedures Language").  dott. Gabriele Selmi.  Roughly a cross
	between FORTRAN and APL, with graphical-oriented extensions
	and several peculiarities.  Underlies the products of CAD.LAB
	Spa.  "Graphical Procedure Language User's Guide and Reference
	Manual", CAD.LAB, Bologna, Italy, 1989, order code GO89/9.

	2. Langage de Programmation Generique.  An applicative
	language, both specification and functional.  Special emphasis
	on parametrised declarations.  "Design and Implementation of a
	Generic, Logic and Functional Programming Language", D. Bert
	et al, ESOP 86, LNCS 213, Springer 1986.

LPI

	A {PL/I} {interpreter} for {IBM PC}s and {workstation}s.

	{(ftp://ftp.wustl.edu/mirrors/msdos/pli/runpli1a.arc)}.
	Mailing list: PL1-L@UIUCVMD.BITNET.
	E-mail: <rcg@lpi.liant.com>.

LPL

	List Programming Language.  LISP-like language with ALGOL-like
	syntax, for IBM 360.  "LPL - LISP Programming Language",
	F.W. Blair et al, RC 3062, IBM TJWRC, Sep 1970.

LP MUD

	<games> A kind of player-programmable multi-user adventure
	game.

	[More details?]

	See {MUD}.

lpr

	Line printer.  The {Unix} print command.  This does not
	actually print files but rather copies (or links) them to a
	{spool} area from where a {daemon} copies them to the printer.

LPS

	Sets with restricted {universal quantifier}s.

	["Logic Programming with Sets", G. Kuper, J Computer Sys Sci
	41:44-64 (1990)].

LPT

	/L-P-T/ or /lip'it/ or /lip-it'/ Line printer.  Rare under
	{Unix}, more common among hackers who grew up with {ITS},
	{MS-DOS}, {CP/M} and other {operating system}s that were
	strongly influenced by early {DEC} conventions.

LRLTRAN

	Lawrence Radiation Laboratory TRANslator.

	A {FORTRAN} extension with vector arithmetic and {dynamic
	storage}, used for scientific work and systems programming,
	including the {LTSS} {operating system}.

	["The LRLTRAN Compiler", S.F. Mendicino, CACM 11(11):747-775
	(Nov 1969)].

LRU

	{Least Recently Used}

LSA

	{Link State Advertisement}

LSB

	1. {Least Significant Bit}.

	2. (Rarely) Least Significant Byte.

LSE

	{Language Sensitive Editor}

LSL

	1. Larch Shared Language.  An assertion language.  (See
	Larch).

	2. Link and Selector Language.  Graphic query language.  "LSL:
	A Link and Selector Language", D.C. Tsichritzis, Proc Intl
	Conf Management of Data, ACM 1976, pp.123-134.

LSML

	Lazy Standard ML.  A {lazy} varient of {SML} allowing cyclic
	val definitions.  Prateek Mishra <mishra@sbcs.sunysb.edu>.
	Latest release (15 Nov 1993) 0.43-1.  Not to be confused with
	{LML}.

	{(ftp://sbcs.sunysb.edu/pub/lsml)}

L-Soft

	An international corporation formed by Eric Thomas, the author
	of {Listserv}, to develop it and port it to platforms other
	than the {IBM} {VM} {operating system}, including {Unix}.
	Listserv has been enhanced to use both the {Internet} and
	{BITNET}.

	(22 Feb 1995)

LSSD

	{level-sensitive scan design}

LSYD

	Language for SYstems Development.

	A {PL/I}-like language with data structure and character
	extensions.

	["Systems Programming Languages", R.D. Bergeron et al, in
	Advances in Computers 1971, A-P].

	(31 Jan 1995)

LT-2

	An early system on the {IBM 701}.

	[Listed in CACM 2(5):16 (May 1959)].

	(31 Jan 1995)

LTL

	{Linear Temporal Logic}

LTR

	Langage Temps-Rel.

	(French for "real-time language") A French predecessor to
	{Ada}, LTR is {Modula}-like with a set of special-purpose
	{real-time} constructs based on an event model.  It was
	mentioned in the reference below.

	["An Overview of Ada", J.G.P. Barnes, Soft Prac & Exp
	10:851-887 (1980)].

	(31 Jan 1995)

LTR3

	Version three of {LTR}, by A. Parayre of Delegation Generale
	pour l'Armement, France.  LTR3 was widely used by the French
	military and avionics companies.

	["The LTR3 Reference Manual", A. Parayre, Delegation Generale
	pour l'Armement, France].

	(31 Jan 1995)

LU6.2

	{Logical Unit 6.2}

lub

	{least upper bound}

Lubarsky's Law of Cybernetic Entomology

	There is always one more {bug}.

LUCID

	1. Early query language, ca. 1965, System Development Corp,
	Santa Monica, CA.  [Sammet 1969, p.701].

	2. A family of dataflow languages descended from {ISWIM},
	{lazy} but {first-order}.

	Ashcroft & Wadge <wwadge@csr.uvic.ca>, 1981.

	They use a dynamic {demand driven} model.  Statements are
	regarded as equations defining a network of processors and
	communication lines, through which the data flows.  Every data
	object is thought of as an infinite {stream} of simple values,
	every function as a {filter}.  Lucid has no {data
	constructor}s such as {array}s or {record}s.  {Iteration} is
	simulated with 'is current' and 'fby' (concatenation of
	sequences).  Higher-order functions are implemented using pure
	dataflow and no closures or heaps.

	["Lucid: The Dataflow Language" by Bill Wadge
	<wwadge@csr.UVic.CA> and Ed Ashcroft, c. 1985].  ["Lucid, the
	Dataflow Programming Language", W. Wadge, Academic Press
	1985].

	(16 Feb 1995)

Lucid Emacs

	(Or "Xemacs")

	A text editor for the {X Window System}, based on an early
	version of {Emacs} version 19 from the {Free Software
	Foundation}, produced by a collaboration of {Lucid, Inc.} with
	{SunPro} (a division of {Sun Microsystems, Inc.}) and the
	{University of Illinois}.

	Lucid chose to build part of {Energize}, their {C}/{C++}
	development environment on top of GNU Emacs.  Though their
	product is commercial, the work on GNU Emacs is {free
	software}, and is useful without having to purchase the
	product.  They needed a version of Emacs with mouse-sensitive
	regions, multiple fonts, the ability to mark sections of a
	buffer as read-only, the ability to detect which parts of a
	buffer has been modified, and many other features.

	The existing version of {Epoch} was not sufficient; it did not
	allow arbitrary {pixmap}s and icons in buffers, "undo" did not
	restore changes to regions, regions did not overlap and merge
	their attributes.  Lucid spent some time in 1990 working on
	Epoch but later decided that their efforts would be better
	spent improving Emacs 19 instead.

	Lucid did not have time to get their changes accepted by the
	{FSF} so they released Lucid Emacs as a forked branch of
	Emacs.  Roughly a year after Lucid Emacs 19.0 was released, a
	beta version of the FSF branch of Emacs 19 was released.  The
	FSF version is better in some areas, and worse in others.
	Lucid continue to develop and support Lucid Emacs, merging in
	bug fixes and new features from the FSF branch as appropriate.
	They feel that Lucid Emacs has a cleaner and more extensible
	substrate, and that it would be easier to merge the FSF
	changes into their version than the other way around.

	Epoch and Lucid Emacs will soon be one and the same thing.
	Work is being done on a compatibility package which will allow
	Epoch 4 code to run in Lemacs with little or no change.  (As
	of 19.8, Lucid Emacs is running a descendant of the Epoch
	redisplay engine.)

Lucinda

	<language> A language which combines {Russell}-like
	{polymorphism} with {Linda}-like {concurrency}.  Lucinda is
	implemented as a {threaded interpreter} written in {C}, for a
	{Sun} network and a {Meiko Computing Surface}.

	["Lucinda - An Overview", P. Butcher, U York et al, SIGPLAN
	Notices 26(8):90-100, Aug 1991].

	E-mail: Alan Wood <wood@cs.york.ac.uk>.

	(20 Aug 1996)

Lucy

	Distributed constraint programming language.  An actor subset
	of Janus.  "Actors as a Special Case of Concurrent Constraint
	Programming", K.  Kahn <kahn@parc.xerox.com> et al, SIGPLAN
	Notices 25(10):57-66 (OOPSLA/ ECOOP '90) (Oct 1990).

lump uncurrying

	Chin's generalisation of {uncurrying}.  A curried function
	taking several {tuple}s as arguments can be transformed to
	take a single tuple containing all the components of the
	original tuples.

lunatic fringe

	[IBM] Customers who can be relied upon to accept release 1
	versions of software.

Lund Simula

	<language> A version of {SIMULA} from {Lund Software House}.

	Version 4.07.

	(FTP: rascal.ics.utexas.edu/misc/mac/programming/ no longer
	exists).

	(29 Mar 1995)

Lund Software House AB

	<company> The company who produced {Lund Simula}.

	Address: Box 7056, S-22007 Lund, Sweden.

	(29 Mar 1995)

lurk

	{lurking}

lurker

	{lurking}

lurking

	<messaging, jargon> The activity of one of the "silent
	majority" in a electronic forum such as {Usenet}; posting
	occasionally or not at all but reading the group's postings
	regularly.  This term is not pejorative and indeed is casually
	used reflexively: "Oh, I'm just lurking".  Often used in "the
	lurkers", the hypothetical audience for the group's
	{flamage}-emitting regulars.

	Lurking and reading the {FAQ} are recommended {netiquette} for
	beginners who need to learn the history and practises of the
	group before posting.

	(14 Jun 1997)

luser

	/loo'zr/ A {user}; especially one who is also a {loser}.
	({luser} and {loser} are pronounced identically.)  This word
	was coined around 1975 at MIT.  Under ITS, when you first
	walked up to a terminal at MIT and typed Control-Z to get the
	computer's attention, it printed out some status information,
	including how many people were already using the computer; it
	might print "14 users", for example.  Someone thought it would
	be a great joke to patch the system to print "14 losers"
	instead.  There ensued a great controversy, as some of the
	users didn't particularly want to be called losers to their
	faces every time they used the computer.  For a while several
	hackers struggled covertly, each changing the message behind
	the back of the others; any time you logged into the computer
	it was even money whether it would say "users" or "losers".
	Finally, someone tried the compromise "lusers", and it stuck.
	Later one of the ITS machines supported "luser" as a
	request-for-help command.  ITS died the death in mid-1990,
	except as a museum piece; the usage lives on, however, and the
	term "luser" is often seen in program comments.

LUSTRE

	(A French acronym for Synchronous real-time Lucid).  Real-time
	dataflow language for synchronous systems, especially
	automatic control and signal processing.  A {Lucid} subset,
	plus timing operators and user-defined clocks.

	Designed for automatic control applications.  It is based on
	the idea that automatic control engineers use to analyse, and
	specify their systems in terms of functions over sequences
	(sampled signals).  It thus seems both safe and cost effective
	to try to compile directly those descriptions into executable
	code.  A lot of work has been done, so as to get efficient
	compilation, and also in formal verification.  The language
	has been used in nuclear plant control, and will be used in
	aircraft control.

	["Outline of a Real-Time Data-Flow Language", J.-L. Bergerand
	et al, Proc IEE-CS Real Time Systems Symp, San Diego, IEEE Dec
	1985, pp. 33-42].

	["LUSTRE: A Declarative Language for Programming Synchronous
	Systems", P. Caspi et al, Conf Rec 14th Ann ACM Symp on Princ
	Prog Langs, 1987].

	(12 Oct 1994)

lvalue

	<programming> A reference to a location, an expression which
	can appear as the destination of an {assignment} operator
	indicating where a value should be stored.  For example, a
	variable or an array element are lvalues but the constant 42
	and the expression i+1 are not.  A constant string may or may
	not be an lvalue (it usually is in {C}).

	(28 Apr 1995)

LWP

	<programming> {light-weight process}.

	(22 Feb 1996)

LYaPAS

	(Russian acronym for "Logical Language for the Representation
	of Synthesis Algorithms")

	A language for the {URAL-1} computer.  It was coded in
	{octal}!

	["LYaPAS: A Programming Language for Logic and Coding
	Algorithms", M.A. Gavrilov et al eds, Academic Press 1969].

	(16 Feb 1995)

Lycos

	<World-Wide Web> A {World-Wide Web} index, served by {Carnegie
	Mellon University}.  It allows you to search on document title
	and content for a list of keywords.  Lycos is probably the
	biggest such index on the web.  By April 1995, the Lycos
	database contained 2.95 million unique documents.

	The Lycos database is built by a {Web crawler} that can bring
	in 5000 documents per day.  The index searches document title,
	headings, links, and keywords it locates in these documents.

	The Lycos servers are efficient but overloaded.  Failure to
	connect or "please try later" messages are common.

	{Home (http://lycos.cs.cmu.edu/)}

	(06 Apr 1995)

lynix

	<spelling> Misspelling of "{Linux}" (the {Unix} {clone}), or
	possibly "{lynx}" (the {World-Wide Web} {browser}).

	(06 Apr 1995)

LYNX

	A language for large distributed {network}s, using {remote
	procedure call}s, developed by the {University of Wisconsin}
	in 1984.

	["The Lynx Distributed Programming Language: Motivation,
	Design and Experience", M.L. Scott, Computer Langs 16:209-233
	(1991)].

	(12 Oct 1994)

Lynx

	1. A {WWW} {browser} from the {University of Kansas} for use
	on {cursor-addressable}, {character cell} {terminals} or
	{terminals emulators} under {Unix} or {VMS}.  Lynx is a
	product of the Distributed Computing Group within Academic
	Computing Services of The {University of Kansas}.  Lynx was
	originally developed by Lou Montulli, Michael Grobe and
	Charles Rezac.  Garrett Blythe created {DosLynx} and later
	joined the Lynx effort as well.  Foteos Macrides ported much
	of Lynx to VMS and is now maintaining it.

	Version: 2.4-FM (25 Oct 1995).

	{Home (http://www.cc.ukans.edu/about_lynx/about_lynx.html)}

	Mailing list: lynx-dev@ukanaix.cc.ukans.edu (send "subscribe
	lynx-dev <your-name>" in the message body to
	listserv@ukanaix.cc.ukans.edu).

	(07 Dec 1994)

	2. {Lynx Real-Time Systems}.

	(25 Mar 1996)

LynxOS

	A {POSIX} compliant {real-time} {operating system} from {Lynx
	Real-Time Systems}.  It has a {Unix}-like interface to
	{application program}s.

	(12 Oct 1994)

Lynx Real-Time Systems

	A company in Los Gatos, California who distribute {LynxOS}.

	{Home (http://lynx.com/)}

	E-mail: <sales@lynx.com>, <support@lynx.com>.

	Address: 16780 Lark Avenue, Los Gatos, CA 95030, USA.

	Telephone:: +1 (408) 354 7770, +1 (800) 255 LYNX. Fax: +1
	(408) 354 7085.

	(18 Jan 1995)

LYRIC

	Language for Your Remote Instruction by Computer.  A {CAI}
	language implemented as a {FORTRAN} {preprocessor}.

	["Computer Assisted Instruction: Specification of Attributes
	for CAI Programs and Programmers", G.M. Silvern et al, Proc
	ACM 21st Natl Conf (1966)].

	(12 Oct 1994)

LZ77 compression

	The first {algorithm} to use the {Lempel-Ziv} {substitutional
	compression} schemes, proposed in 1977.  LZ77 compression
	keeps track of the last n bytes of data seen, and when a
	phrase is encountered that has already been seen, it outputs a
	pair of values corresponding to the position of the phrase in
	the previously-seen buffer of data, and the length of the
	phrase.  In effect the compressor moves a fixed-size "window"
	over the data (generally referred to as a "sliding window"),
	with the position part of the (position, length) pair
	referring to the position of the phrase within the window.

	The most commonly used {algorithm}s are derived from the
	{LZSS} scheme described by James Storer and Thomas Szymanski
	in 1982.  In this the compressor maintains a window of size N
	bytes and a "lookahead buffer", the contents of which it tries
	to find a match for in the window:

	 while (lookAheadBuffer not empty)
	 {
	     get a pointer (position, match) to the longest match in
	     the window for the lookahead buffer;

	     if (length > MINIMUM_MATCH_LENGTH)
	     {
	       output a (position, length) pair;
	       shift the window length characters along;
	     }
	     else
	     {
	       output the first character in the lookahead buffer;
	       shift the window 1 character along;
	     }
	  }

	Decompression is simple and fast: whenever a (POSITION,
	LENGTH) pair is encountered, go to that POSITION in the window
	and copy LENGTH bytes to the output.

	Sliding-window-based schemes can be simplified by numbering
	the input text characters mod N, in effect creating a circular
	buffer.  The sliding window approach automatically creates the
	{LRU} effect which must be done explicitly in {LZ78} schemes.
	Variants of this method apply additional compression to the
	output of the LZSS compressor, which include a simple
	variable-length code ({LZB}), dynamic {Huffman} coding
	({LZH}), and {Shannon-Fano} coding ({ZIP} 1.x), all of which
	result in a certain degree of improvement over the basic
	scheme, especially when the data are rather random and the
	LZSS compressor has little effect.  An algorithm was developed
	which combines the ideas behind LZ77 and LZ78 to produce a
	hybrid called {LZFG}.  LZFG uses the standard sliding window,
	but stores the data in a modified {trie} data structure and
	produces as output the position of the text in the trie.
	Since LZFG only inserts complete *phrases* into the
	dictionary, it should run faster than other LZ77-based
	compressors.

	All popular archivers ({arj}, {lha}, {zip}, {zoo}) are
	variations on LZ77.

	[comp.compression {FAQ}].

	(07 Apr 1995)

LZ78 compression

	A {substitutional compression} scheme which works by entering
	phrases into a dictionary and then, when a reoccurrence of
	that particular phrase is found, outputting the dictionary
	index instead of the phrase.  Several {algorithms} are based
	on this principle, differing mainly in the manner in which
	they manage the dictionary.

	The most well-known Lempel-Ziv scheme is Terry Welch's
	{Lempel-Ziv Welch} variant of LZ78.

	[comp.compression {FAQ}].

LZ compression

	{Lempel-Ziv compression}

lzexe

	An executable file {compression} utility for {MS-DOS}.  It
	adds a minimal header to the executable to decompress it when
	it is executed.  See also {pklite}.

LZH compression

	<algorithm> (After Lempel-Ziv and Haruyasu, the inventors) A
	{compression} {algorithm} derived from the {LZSS} scheme with
	a sliding window and additional compression applied to the
	output of the LZSS compressor by {dynamic Huffman coding}.

	(07 Apr 1995)

LZW compression

	{Lempel-Ziv Welch compression}

M

	1. Alternative name for {MUMPS}.

	2. A {C}-like language from {Silicon Compiler Systems} for
	multilevel {hardware description}.  It is currently available
	in the {GDT} package from {Mentor Graphics}.

	(26 Oct 1994)

	3. <unit> The abbreviated for of {mega-}.

	(10 Jan 1995)

m2

	A {Modula-2} {compiler} for {VAX} and {MIPS}.  A {Pascal}
	compiler for VAX is also included.  The Pascal compiler
	accepts a language that is almost identical to {Berkeley
	Pascal}.  It was originally designed and built by Michael L.
	Powell in 1984.  Joel McCormack made it faster, fixed lots of
	bugs, and swiped/wrote a User's Manual.  Len Lattanzi ported
	it to the MIPS.

	It has the following extensions: {foreign function} and data
	interface, {dynamic array} variables, {subarray parameter}s,
	multi-dimensional {open array parameter}s, {inline
	procedure}s, longfloat type, type-checked interface to {C}
	library I/O routines.

	It runs on {VAX} ({Ultrix}, {BSD}) and {MIPS} ({Ultrix}).

	{(ftp://gatekeeper.dec.com/pub/DEC/Modula-2/m2.tar.Z)}.
	E-mail: <modula-2@decwrl.pa.dec.com>.

	(06 Jul 1992)

M2toM3

	A simple {Modula-2} to {Modula-3} translator by Peter Klein
	<pk@i3.informatik.rwth-aachen.de> which covers most of the
	syntactic differences between those languages.  No context
	sensitive analysis is done, so WITH statements, local
	{modules}, {enumeration type} literals and {variant RECORD}S
	have to be dealt with by hand.  Part of the {Sun} Modula 2
	library is emulated by the Modula 3 library.

	Version 1.01.

	{(ftp://martha.informatik.rwth-aachen.de/pub/Modula3)}

	(01 Dec 1992)

M3

	A {macro} processor, forerunner of {M4}, for the {AP-3}
	{minicomputer}.

m4

	A {macro} processor for {Unix} and {GCOS} which is more
	flexible than {cpp}.  m4 copies its input to the output,
	expanding macros which can be either built-in or user-defined.
	m4 has built-in functions for including files, running {Unix}
	commands, doing integer arithmetic, manipulating text in
	various ways and recursing.  m4 can be used either as a
	{front-end} to a compiler or as a stand-alone tool.

	{sendmail}'s configuration file (/etc/sendmail.cf) is writen
	in m4 macros.

	There is a {GNU m4 v1.1
	(ftp://prep.ai.mit.edu/pub/gnu/m4-1.0.tar.Z)} by Francois
	Pinard <pinard@iro.umontreal.ca> and a {public domain} version
	by Ozan Yigit <oz@sis.yorku.ca> and Richard A. O'Keefe
	<ok@goanna.cs.rmit.OZ.AU> (FTP from any {386BSD}, {NetBSD} or
	{FreeBSD} archive).  A {Macintosh} version is {here
	(ftp://nic.switch.ch/pub/software/mac/src/mpw-c/)}.

	See also {m3}, {m5}.

	["The M4 Macro Processor",
	Kernighan & Ritchie, Jul 1977].

M5

	Macro processor, a generalisation of {M4} by A. Dain, U
	Cincinnati, 1992.  For Unix and DOS.

	{(ftp://thor.exe.u.edu/pub/dain/m5)}

MAC

	1. {Media Access Control}.

	2. Early system on {Ferranti} {Mercury}.  Listed in CACM
	2(5):16 (May 1959).

Mac

	{Macintosh}

Mac-1

	<language> The {assembly language} used in the book cited
	below.

	See {Mic-1}.

	["Structured Computer Organization", A.S. Tanenbaum, 3rd
	Edition, P-H 1989, Sect. 4.3].

	(07 Apr 1996)

MAC-360

	A system for solving numerical problems using equation-like
	input.  Developed around 1967.

	["User's Guide to MAC-360", Charles Stark Draper Lab,
	Cambridge MA (Aug 1973)].

	[Sammet 1969, p. 264].

MAC address

	The hardware address of a device connected to a shared
	{network} medium.  See also {Media Access Control}.

MACAnalyst

	An analysis {CASE} tool for the {Macintosh} from {Excel
	Software, Inc.}

Macaulay

	A {symbolic mathematics} package for {commutative algebra},
	{algebraic geometry} and {cohomology}, written in {C} by Mike
	Stillman <mike@mssun7.msi.cornell.edu> and Dave Bayer
	<bayer@cUnixa.columbia.edu> in 1977.  Version 3 runs on {Sun},
	{Macintosh} and {Amiga}.

	{(ftp://zariski.harvard.edu/)}

	(12 Oct 1994)

MacBinary

	<file format> An eight bit wide representation of the data and
	{resource fork}s of an {Macintosh} file and of relevant
	{Finder} information.  MacBinary files are recognised as
	"special" by several MacIntosh {terminal emulator}s.  These
	emulators, using {Kermit} or {XMODEM} or any other file
	transfer protocol, can separate the incoming file into {fork}s
	and appropriately modify the {Desktop} to display {icon}s,
	types, creation dates, and the like.

	(08 Mar 1995)

MACDesigner

	A design CASE tool for the Mac from {Excel Software, Inc.}

macdink

	/mak'dink/ To make many incremental and unnecessary cosmetic
	changes to a program or file.  Often the subject of the
	macdinking would be better off without them.  The {Macintosh}
	is said to encourage such behaviour.

	See also {fritterware}, {window shopping}.

	(22 Nov 1994)

MACE

	A concurrent {object-oriented} language.

Mach

	An operating system kernel under development at
	Carnegie-Mellon University to support distributed and parallel
	computation.  Mach is designed to support computing
	environments consisting of networks of uniprocessors and
	multiprocessors.  Mach is the kernel of the {OSF}/1.

Machiavelli

	An extension of {Standard ML} developed by Peter Buneman &
	Atsushi Ohori of the {University of Pennsylvania} in 1989,
	based on {orthogonal persistence}.

	["Database Programming in Machiavelli: A Polymorphic Language
	with Static Type Inference", A. Ohori, Proc SIGMOD Conf, ACM,
	June 1989].

	(21 Feb 1995)

machinable

	{Machine-readable}.  Having the {softcopy} nature.

machine

	Common term for "computer", usually when considered at the
	hardware level.  The {Turing Machine}, an early example of
	this usage, was however neither hardware nor software, but
	only an idea.

	[Earlier use?]

	(15 Feb 1995)

machine code

	The representation of a computer program which is actually
	read and interpreted by the computer.  A program in machine
	code consists of a sequence of machine instructions (possibly
	interspersed with data).  Instructions are binary strings
	which may be either all the same size (e.g. one 32-bit word for
	many modern {RISC} {microprocessor}s) or of different sizes,
	in which case the size of the instruction is determined from
	the first word (e.g. {Motorola} {68000}) or byte (e.g. {Inmos}
	{transputer}).  The collection of all possible instructions
	for a particular computer is known as its "{instruction set}".

	Execution of machine code may either be {hard-wired} into the
	{central processing unit} or it may be controlled by
	{microcode}.  The basic execution cycle consists of fetching
	the next instruction from main memory, decoding it
	(determining which operation it specifies and the location of
	any arguments) and executing it by opening various {gate}s
	(e.g. to allow data to flow from main memory into a CPU
	{register}) and enabling {functional unit}s (e.g. signalling to
	the {ALU} to perform an addition).

	Humans almost never write programs directly in machine code.
	Instead, they use a programming language which is translated
	by the computer into machine code.  The simplest kind of
	programming language is {assembly language} which usually has
	a one-to-one correspondence with the resulting machine code
	instructions but allows the use of {mnemonic}s (ASCII strings)
	for the "{op code}s" (the part of the instruction which
	encodes the basic type of operation to perform) and names for
	locations in the program (branch labels) and for variables and
	constants.

	(15 Feb 1995)

machine cycle

	<processor> The four steps which the {CPU} carries out for
	each {machine language} instruction: fetch, decode, execute,
	and store.  These steps are performed by the {control unit},
	and may be fixed in the logic of the CPU or may be programmed
	as {microcode} which is itself usually fixed (in {ROM}) but
	may be (partially) modifiable (stored in {RAM}).

	The fetch cycle places the current {program counter} contents
	(the address of the next instruction to execute) on the
	{address bus} and reads in the word at that location into the
	{instruction register} (IR).  In {RISC} CPUs instructions are
	usually a single word but in other architectures an
	instruction may be several words long, necessitating several
	fetches.

	The decode cycle uses the contents of the IR to determine
	which {gate}s should be opened between the CPU's various
	{functional unit}s and busses and what operation the {ALU}(s)
	should perform (e.g. add, {bitwise and}).  Each gate allows
	data to flow from one unit to another (e.g. from {register} 0
	to ALU input 1) or enables data from one output onto a certain
	{bus}.  In the simplest case ("{horizontal encoding}") each
	bit of the instruction register controls a single gate or
	several bits may control the ALU operation.  This is rarely
	used because it requires long instruction words (such an
	architecture is sometimes called a {very long instruction
	word} architecture).  Commonly, groups of bits from the IR are
	fed through {decoder}s to control higher level aspects of the
	CPU's operation, e.g. source and destination registers,
	{addressing mode} and {ALU} operation.  This is known as
	{vertical encoding}.  One way {RISC} processors gain their
	advantage in speed is by having simple instruction decoding
	which can be performed quickly.

	The execute cycle occurs when the decoding logic has settled
	and entails the passing of values between the various function
	units and busses and the operation of the ALU.  A simple
	instruction will require only a single execute cycle whereas a
	complex instruction (e.g. subroutine call or one using memory
	{indirect addressing}) may require three or four.
	Instructions in a RISC typically (but not invariably) take
	only a single cycle.

	The store cycle is when the result of the instruction is
	written to its destination, either a {register} or a memory
	location.  This is really part of the execute cycle because
	some instructions may write to multiple destinations as part
	of their execution.

	(13 Apr 1995)

machine language

	{machine code}

machine learning

	The ability of a machine to improve its performance based on
	previous results.

	{Neural network}s are one kind of machine learning.

	[More examples?  Net resources?  Web page?]

	(15 Feb 1995)

Mach Interface Generator

	<tool, programming> (MIG) An implementation of a subset of
	{Matchmaker} that generates {C} and {C++} {remote procedure
	call} interfaces for {interprocess communication} between
	{Mach} tasks.

	["MIG - The Mach Interface Generator", R.P. Draves et al, CS
	CMU, (4 Aug 1989)].

	(22 Nov 1994)

machoflops

	/mach'oh-flops/ A pun on "{megaflops}" referring to the
	inflated performance figures often quoted by computer
	manufacturers.  Real {application program}s are lucky to get
	half the quoted speed.

	See {Your mileage may vary}, {benchmark}.

	(15 Feb 1995)

Mac II

	{Macintosh II}

Mac IIcx

	{Macintosh IIcx}

Macintosh

	<computer> (Mac, Beige Toaster, Maggotbox, Macintoy,
	Macintrash) A range of single user, 32-bit {personal
	computer}s manufactured by {Apple Computer, Inc.} originally
	based on the {Motorola 68000} {microprocessor} family and a
	proprietary {operating system}.  The Mac was Apple's successor
	to the {Lisa}.

	The {Macintosh user interface} was notable for popularising
	the {graphical user interface}, with its easy to learn and
	easy to use {desktop} metaphor.

	The {Macintosh Operating System} is now officially called
	Mac OS.

	The first Macintosh, introduced in January 1984, had a
	{Motorola 68000} {CPU}, 128K of {RAM}, a small {monochrome}
	screen, and one built-in {floppy disk} drive with an external
	slot for one more, two {serial port}s and a four-voice sound
	generator.  This was all housed in one small plastic case,
	including the screen.  When more memory was available later in
	the year, a 512K Macintosh was nicknamed the "Fat Mac."

	The Mac Plus (January 1986) added expandability by providing
	an external {SCSI} port for connecting {hard disk}s, {magnetic
	tape} and other high-speed devices.

	The Mac SE (March 1987) provides from one to four megabytes of
	{RAM}, an optional built-in 20 megabyte hard disk and one
	internal expansion slot for connecting a third-party device.

	The Mac II (March 1987) uses the faster {Motorola 68020} {CPU}
	with a 32-bit bus.

	In 1994 {PowerPC} based Macs, {PowerMac}s, were launched.

	See also {Macintosh file system}, {Macintosh user interface}.

	Brock Kyle's {Macintosh Guide Book
	(http://www.everymac.com/)}.

	(23 Jun 1997)

Macintosh Common Lisp

	<language> (MCL) {Common Lisp} for the {Apple Macintosh}.

	Guillaume Cartier <cartier@math.uqam.ca> has written some
	libraries.  Version 1.2.

	{(ftp://cambridge.apple.com/pub/mcl2/contrib/)}

	(30 Nov 1992)

Macintosh file system

	<file system> A file on the {Macintosh} consists of two parts,
	called forks.  The "data fork" contains the data which would
	normally be stored in the file on other operating systems.
	The "resource fork" contains a collection of arbitrary
	attribute/value pairs, including program segments, {icon}
	{bitmaps}, and parametric values.  Yet more information
	regarding Macintosh files is stored by the {Finder} in a
	hidden file, called the "Desktop Database".

	Because of the complications in storing different parts of a
	Macintosh file in non-Macintosh file systems that only handle
	consecutive data in one part, it is common to only send the
	Data fork or to convert the Macintosh file into some other
	format before transferring it.

	(03 Mar 1996)

Macintosh II

	<computer> (Mac II) A version of {Apple}'s {Macintosh}
	{personal computer}, released in March 1987, using the
	{Motorola 68020} {CPU}, which runs at a higher {clock rate}
	than the {Motorola 68000} used in the original Mac.  The Mac
	II has a full 32-bit data bus instead of a 16-bit bus.  Mac II
	models have built-in 40 to 160 megabyte {hard disks} and can
	take up to eight megabytes of {RAM} (and more as denser memory
	chips arive).

	The Mac II was the first Macintosh to provide a colour
	graphics option, with up to 256 colours on screen at a 640x480
	resolution.  Mac II models are designed for expandability with
	three ({Macintosh IIcx}) or six (II & IIx) built-in {NuBus}
	{expansion slots} for additional {peripheral} and
	{coprocessor} boards.

	(25 May 1996)

Macintosh IIcx

	<computer> (Mac IIcx) A version of {Apple}'s {Macintosh II}
	{personal computer}, introduced in 1989, with a {Motorola
	68030} processor running at 16 MHz and up to 128 MB of {RAM}
	(120 ns, 30-pin {DRAM} chips).  The IIcx requires System 6.0.3
	or later and requires "Mode 32" or "32-bit Enabler" to use
	more than 8MB of RAM.  It was discontinued 1991, and in 1996
	is still considered one of the best-designed Macs ever.

	(25 May 1996)

Macintosh Operating System

	<operating system> (Mac OS) {Apple Computer, Inc.}'s
	proprietary {operating system} for their {Macintosh} family of
	{personal computers}.

	The part of the operating system that simulates the desktop is
	called "{Finder}."  The {multitasking} version of Finder was
	called "{MultiFinder}" until {multitasking} was integrated
	into the core of the OS with the introduction of System 7.0 in
	1990.

	The Macintosh series provides medium-high-{resolution}
	graphics [what resolution?] and a built-in graphics language,
	called "{QuickDraw}", which provides a {standard} for software
	developers.

	Mac OS 8, scheduled for delivery in July 1997, contains a
	number of significant improvements, including new
	human-interface features, increased system stability and
	performance, a {PowerPC} processor-native Finder, tighter
	integration of {Internet} access through panel-based
	"assistants," Personal Web Sharing, and the ability to run
	{Java applets} and programs through Mac OS Runtime for {Java}.

	See also {Macintosh file system}, {Macintosh user interface}.

	(15 Oct 1997)

Macintosh user interface

	<operating system> The {graphical user interface} used by
	{Apple Computer}'s {Macintosh} family of {personal computers},
	based on graphical representations of familiar office objects
	(sheets of paper, files, wastepaper bin, etc.) positioned on a
	two-dimensional "{desktop}" workspace.

	Programs and data files are represented on screen by small
	pictures ({icon}s).  An object is selected by moving a {mouse}
	over the real desktop which correspondingly moves the
	{pointer} on screen.  When the pointer is over an icon on
	screen, the icon is selected by pressing the button on the
	mouse.

	A {hierarchical file system} is provided that lets a user
	"{drag}" a document (a file) icon into and out of a {folder}
	(directory) icon.  Folders can also contain other folders and
	so on.  To delete a document, its icon is dragged into a
	{trash can} icon.  For people that are not computer
	enthusiasts, managing files on the Macintosh is easier than
	using the {MS-DOS} or {Unix} {command line interpreter}.

	The Macintosh always displays a row of menu titles at the top
	of the screen.  When a mouse button is pressed over a title, a
	{pull-down menu} appears below it.  With the mouse button held
	down, the option within the menu is selected by pointing to it
	and then releasing the button.

	Unlike the {IBM PC}, which, prior to {Microsoft Windows} had
	no standard {graphical user interface}, Macintosh developers
	almost always conform to the Macintosh interface.  As a
	result, users are comfortable with the interface of a new
	program from the start even if it takes a while to learn all
	the rest of it.  They know there will be a row of menu options
	at the top of the screen, and basic tasks are always performed
	in the same way.  Apple also keeps technical jargon down to a
	minimum.

	Although the Macintosh user interface provides consistency; it
	does not make up for an {application program} that is not
	designed well.  Not only must the application's menus be clear
	and understandable, but the locations on screen that a user
	points to must be considered.  Since the mouse is the major
	selecting method on a Macintosh, mouse movement should be kept
	to a minimum.  In addition, for experienced typists, the mouse
	is a cumbersome substitute for well-designed keyboard
	commands, especially for intensive text editing.

	{Urban legned} has it that the Mac user interface was copied
	from {Xerox}'s {Palo Alto Research Center}.  Although it is
	true that Xerox's {smalltalk} had a GUI and Xerox introduced
	some GUI concepts commercially on the {Xerox Star} computer in
	1981, and that {Steve Jobs} and members of the Mac and {Lisa}
	project teams visited PARC, Jef Raskin, who created the Mac
	project, points out that many GUI concepts which are now
	considered fundamental, such as dragging objects and pull-down
	menus with the mouse, were actually invented at Apple.

	{Pull-down menu}s have become common on {IBM}, {Commodore} and
	{Amiga} computers.  {Microsoft Windows} and {OS/2}
	{Presentation Manager}, {Digital Research}'s {GEM},
	{Hewlett-Packard}'s {New Wave}, the {X Window System}, {RISC
	OS} and many other programs and operating environments also
	incorporate some or all of the desktop/mouse/icon features.

	{Apple Computer} have tried to prevent other companies from
	using some {GUI} concepts by taking legal action against them.
	It is because of such restrictive practises that organisations
	such as the {Free Software Foundation} previously refused to
	support ports of their software to Apple machines, though this
	bad has now been lifted.  (Why?  when?)

	(19 Jul 1996)

Macintoy

	/mak'in-toy/ The Apple {Macintosh}, considered as a {toy}.
	Less pejorative than {Macintrash}.

Macintrash

	/mak'in-trash"/ The Apple {Macintosh}, as described by a
	hacker who doesn"t appreciate being kept away from the *real
	computer* by the interface.  The term {maggotbox} has been
	reported in regular use in the Research Triangle area of North
	Carolina.  Compare {Macintoy}.

	See also {beige toaster}, {WIMP environment}, {point-and-drool
	interface}, {drool-proof paper}, {user-friendly}.

	(02 May 1995)

MACL

	{Macintosh} {Allegro CL}.

	E-mail: <info-macl@cambridge.apple.com>.

MacLisp

	A dialect of {Lisp} developed at {MIT} AI Lab in 1966, known
	for its efficiency and programming facilities.  Later used by
	{Project MAC}, {Mathlab} and {Macsyma}.  Ran on the {PDP-10}.
	Introduced the {LEXPR} (a function with variable {arity}),
	{macro}s, {array}s, and {CATCH/THROW}.  Was once one of two
	main branches of LISP (the other being {Interlisp}).  In 1981
	{Common LISP} was begun in an effort to combine the best
	features of both.

	["MACLISP Reference Manual", D.A. Moon
	<moon@cambridge.apple.com>, TR Project MAC, MIT 1974].

MacMinix

	<operating system> The {Macintosh} version of {MINIX}.

	[Details?  URL?]

	(17 Jun 1997)

Mac OS

	{Macintosh Operating System}

Mac Playmate

	<games> An early example of a pornographic computer game.  Mac
	Playmate runs on the {Macintosh} and involves trying to
	stimulate a simulated woman to orgasm by applying various
	implements to her erogenous zones.

	(27 Feb 1995)

MACRO

	1. Assembly language for {VAX/VMS}.

	2. {PL/I}-like language with extensions for string processing.
	"MACRO: A Programming Language", S.R. Greenwood, SIGPLAN
	Notices 14(9):80-91 (Sep 1979).

macro

	A name (possibly followed by a {formal argument} list) that is
	equated to a text or symbolic expression to which it is to be
	expanded (possibly with the substitution of {actual
	arguments}) by a macro expander.

	The term "macro" originated in early {assembler}s, which
	encouraged the use of macros as a structuring and
	information-hiding device.  During the early 1970s, macro
	assemblers became ubiquitous, and sometimes quite as powerful
	and expensive as {HLL}s, only to fall from favour as improving
	{compiler} technology marginalised {assembly language}
	programming (see {languages of choice}).  Nowadays the term is
	most often used in connection with the {C preprocessor},
	{Lisp}, or one of several special-purpose languages built
	around a macro-expansion facility (such as {TeX} or {Unix}'s
	{troff} suite).

	Indeed, the meaning has drifted enough that the collective
	"macros" is now sometimes used for code in any special-purpose
	application control language (whether or not the language is
	actually translated by text expansion), and for macro-like
	entities such as the "keyboard macros" supported in some text
	editors (and {PC} {TSR}s or {Macintosh} INIT/CDEV keyboard
	enhancers).

	(06 Dec 1994)

macro-

	Prefix large.  Opposite of {micro-}.  In the mainstream and
	among other technical cultures (for example, medical people)
	this competes with the prefix {mega-}, but hackers tend to
	restrict the latter to quantification.

macrology

	/mak-rol'*-jee/ 1. Set of usually complex or {crufty}
	{macro}s, e.g. as part of a large system written in {Lisp},
	{TECO}, or (less commonly) {assembler}.

	2. The art and science involved in comprehending a macrology.
	Sometimes studying the macrology of a system is not unlike
	archaeology, ecology, or {theology}, hence the sound-alike
	construction.  See also {boxology}.

Macromedia

	A company supplying {multimedia} and interactive television
	services and digital arts software tools in the US and
	worldwide.  They produce products for {Microsoft Windows} and
	the {Macintosh} including: Macromedia FreeHand, a tool for
	design and illustration; Macromedia Director, an animation and
	authoring tool for multimedia production; Authorware
	Professional, a multiplatform authoring tool for interactive
	learning; MacroModel, a 3D modeling tool for multimedia,
	graphics and product design; SoundEdit 16, a digital sound
	recording and editing system; Fontographer, a typeface editing
	programme; and Action!, a multimedia presentation application.

	Chief Executive Officer: Bud Colligan.

	(10 Jan 1995)

Macro SAP

	Macro processing modification of SAP.  D.E. Eastwood and D.M.
	McIlroy, unpublished memorandum, Bell Labs 1959.  Led to TRAC.

macrotape

	<storage> /mak'roh-tayp/ An industry-standard reel of
	{magnetic tape}, as opposed to a {microtape}.

	See also {round tape}.

	(20 Oct 1994)

MACSYMA

	{Project MAC}'s SYmbolic MAnipulator.  The first comprehensive
	{symbolic mathematics} system, written in {Lisp} by Joel Moses
	<moses@larch.lcs.mit.edu> of {MIT} in 1969, later {Symbolics},
	Inc.

	Versions include {Symbolics Macsyma}, {DOE Maxima} (ANL, in
	Common LISP) and {Vaxima}.

	{(ftp://rascal.ics.utexas.edu/pub/maxima-4-155.tar.Z)}.
	E-mail: <macsyma-service@symbolics.com>.

	["MACSYMA - The Fifth Year", J. Moses, SIGSAM Bulletin 8(3)
	(Aug 1974)].

	(01 Nov 1994)

MacTcp

	A product providing the {Macintosh} with access to {TCP/IP}
	services.

	[How does it work?  Where is it from?]

MacX

	A package allowing the {Macintosh} to be used as an {X}
	server.

MAD

	1. Michigan Algorithm Decoder.  Developed at U Michigan by
	R. Graham, Bruce Arden <arden@hopper.ee.rochester.edu> and
	Bernard Galler <Bernard_A._Galler@um.cc.umich.edu>, 1959.
	Based on IAL.  For the IBM 704, 709 and 7090, later ported to
	Philco, Univac and CDC machines.  MAD was one of the first
	extensible languages: the user could define his own operators
	and data types.  "Michigan Algorithm Decoder (The MAD
	Manual)", U Michigan Computing Center, 1966.  Sammet 1969,
	p.205.

	2. Dataflow language.  "Implementation of Data Structures on a
	Data Flow Computer", D.L. Bowen, Ph.D. Thesis, Victoria U
	Manchester, Apr 1981.

Mad/1

	A later, much enhanced version of {MAD}, for the {IBM 360}.
	Michigan's answer to {PL/I}.

Madaline

	A structure of many ADALINE units.

MADCAP

	Math and set problems, for the Maniac II and CDC 6600.
	"MADCAP - A Scientific Compiler for a Displayed Formula
	Texbook Language", M.B.  Wells, CACM 4(1):31-36 (Jan 1961).
	Sammet 1969, pp.271-281.  Versions: Madcap 5 (1964), Madcap 6.
	"The Unified Data Structure Capability in Madcap 6",
	M.B. Wells et al, Intl J Comp Info Sci 1(3) (sep 1972).

MADTRAN

	Early preprocessor that translated FORTRAN to MAD, for gain in
	speed.

maggotbox

	<abuse> /mag'*t-boks/ An even more derogatory term than
	{Macintrash}.

	(25 Jan 1995)

MAGIC

	An early system on the {Midac} computer.

	[Listed in CACM 2(5):16 (May 1959)].

	(25 Jan 1995)

magic

	1. As yet unexplained, or too complicated to explain; compare
	{automagically} and (Arthur C.) Clarke's Third Law:

		Any sufficiently advanced technology is
		indistinguishable from magic.

	"TTY echoing is controlled by a large number of magic bits."
	"This routine magically computes the parity of an 8-bit byte
	in three instructions."

	2. Characteristic of something that works although no one
	really understands why (this is especially called {black
	magic}).

	3. (Stanford) A feature not generally publicised that allows
	something otherwise impossible or a feature formerly in that
	category but now unveiled.

	Compare {wizardly}, {deep magic}, {heavy wizardry}.

	For more about hackish "magic" see {Magic Switch Story}.

	(25 Jan 1995)

magic cookie

	1. Something passed between routines or programs that enables
	the receiver to perform some operation; a {capability} ticket
	or {opaque identifier}.  Especially used of small data objects
	that contain data encoded in a strange or intrinsically
	machine-dependent way.  E.g. on non-{Unix} {operating system}s
	with a non-byte-stream model of files, the result of "{ftell}"
	may be a magic cookie rather than a byte offset; it can be
	passed to "{fseek}", but not operated on in any meaningful
	way.  The phrase "it hands you a magic cookie" means it
	returns a result whose contents are not defined but which can
	be passed back to the same or some other program later.

	2. An in-band code for changing graphic rendition (e.g. inverse
	video or underlining) or performing other control functions.
	Some older terminals would leave a blank on the screen
	corresponding to mode-change magic cookies; this was also
	called a {glitch} (or occasionally a "turd"; compare {mouse
	droppings}).

	See also {cookie}.

	(25 Jan 1995)

magic number

	(Unix, C) 1. In source code, some non-obvious constant whose
	value is significant to the operation of a program and that is
	inserted inconspicuously in-line ({hardcoded}), rather than
	expanded in by a symbol set by a commented "#define".  Magic
	numbers in this sense are bad style.

	2. A number that encodes critical information used in an
	{algorithm} in some opaque way.  The classic examples of these
	are the numbers used in {hash} or {CRC} functions or the
	coefficients in a {linear congruential generator} for
	{pseudo-random} numbers.  This sense actually predates, and
	was ancestral to, the more common sense 1.

	3. Special data located at the beginning of a binary data file
	to indicate its type to a utility.  Under {Unix}, the system
	and various {applications program}s (especially the {linker})
	distinguish between types of executable file by looking for a
	magic number.  Once upon a time, these magic numbers were
	{PDP-11} branch instructions that skipped over header data to
	the start of executable code; 0407, for example, was {octal}
	for "branch 16 bytes relative".  Nowadays only a {wizard}
	knows the spells to create magic numbers.  How do you choose a
	fresh magic number of your own?  Simple - you pick one at
	random.  See?  It's magic!

	*The* magic number, on the other hand, is 7+/-2.  See "The
	magical number seven, plus or minus two: some limits on our
	capacity for processing information" by George Miller, in the
	"Psychological Review" 63:81-97 (1956).  This classic paper
	established the number of distinct items (such as numeric
	digits) that humans can hold in short-term memory.  Among
	other things, this strongly influenced the interface design of
	the phone system.

	(25 Jan 1995)

Magic Paper

	An early interactive {symbolic mathematics} system.

	[Sammet 1969, p. 510].

	(25 Jan 1995)

magic smoke

	<electronics, humour> A substance trapped inside {integrated
	circuit} packages that enables them to function (also called
	"blue smoke"; this is similar to the archaic "phlogiston"
	hypothesis about combustion).  Its existence is demonstrated
	by what happens when a chip burns up - the magic smoke gets
	let out, so it doesn't work any more.

	See {Electing a Pope}, {smoke test}.

	{Usenet}ter Jay Maynard tells the following story:

	"Once, while hacking on a dedicated {Zilog Z80} system, I was
	testing code by blowing {EPROM}s and plugging them in the
	system, then seeing what happened.  One time, I plugged one in
	backwards.  I only discovered that *after* I realised that
	{Intel} didn't put power-on lights under the quartz windows on
	the tops of their EPROMs - the die was glowing white-hot.
	Amazingly, the EPROM worked fine after I erased it, filled it
	full of zeros, then erased it again.  For all I know, it's
	still in service.  Of course, this is because the magic smoke
	didn't get let out."

	Compare the original phrasing of {Murphy's Law}.

	(25 Jan 1995)

Magic Switch Story

	Some years ago, I was snooping around in the cabinets that
	housed the {MIT AI Lab}'s {PDP-10}, and noticed a little
	switch glued to the frame of one cabinet.  It was obviously a
	homebrew job, added by one of the lab's hardware hackers
	(no-one knows who).

	You don't touch an unknown switch on a computer without
	knowing what it does, because you might crash the computer.
	The switch was labelled in a most unhelpful way.  It had two
	positions, and scrawled in pencil on the metal switch body
	were the words "magic" and "more magic".  The switch was in
	the "more magic" position.

	I called another hacker over to look at it.  He had never seen
	the switch before either.  Closer examination revealed that
	the switch had only one wire running to it!  The other end of
	the wire did disappear into the maze of wires inside the
	computer, but it's a basic fact of electricity that a switch
	can't do anything unless there are two wires connected to it.
	This switch had a wire connected on one side and no wire on
	its other side.

	It was clear that this switch was someone's idea of a silly
	joke.  Convinced by our reasoning that the switch was
	inoperative, we flipped it.  The computer instantly crashed.

	Imagine our utter astonishment.  We wrote it off as
	coincidence, but nevertheless restored the switch to the "more
	magic" position before reviving the computer.

	A year later, I told this story to yet another hacker, {David
	Moon} as I recall.  He clearly doubted my sanity, or suspected
	me of a supernatural belief in the power of this switch, or
	perhaps thought I was fooling him with a bogus saga.  To prove
	it to him, I showed him the very switch, still glued to the
	cabinet frame with only one wire connected to it, still in the
	"more magic" position.  We scrutinized the switch and its lone
	connection, and found that the other end of the wire, though
	connected to the computer wiring, was connected to a ground
	pin.  That clearly made the switch doubly useless: not only
	was it electrically nonoperative, but it was connected to a
	place that couldn't affect anything anyway.  So we flipped the
	switch.

	The computer promptly crashed.

	This time we ran for Richard Greenblatt, a long-time {MIT}
	hacker, who was close at hand.  He had never noticed the
	switch before, either.  He inspected it, concluded it was
	useless, got some diagonal cutters and {dike}d it out.  We
	then revived the computer and it has run fine ever since.

	We still don't know how the switch crashed the machine.  There
	is a theory that some circuit near the ground pin was
	marginal, and flipping the switch changed the electrical
	capacitance enough to upset the circuit as
	millionth-of-a-second pulses went through it.  But we'll never
	know for sure; all we can really say is that the switch was
	{magic}.

	I still have that switch in my basement.  Maybe I'm silly, but
	I usually keep it set on "more magic".

	{GLS}

	(22 Feb 1995)

Magma2

	<language> A language that allows programmability of the
	control environment, e.g. {recursion}, {backtracking},
	{coroutine}s, {nondeterminism}, etc.  Magma2 was the successor
	to {MagmaLISP}.

	["Magma2: A Language Oriented Toward Experiments in Control",
	Franco Turini, ACM TOPLAS 6(4):468-486 (Oct 1984)].

	(30 Jul 1995)

MagmaLISP

	<language> The predecessor of {Magma2}.

	["MagmaLISP: A Machine Language for Artificial Intelligence",
	C. Mantagero et al, Proc 4th Intl Joint Conf Artif Intell,
	1975, pp. 556-561].

	(30 Jul 1995)

magnetic disk

	<storage> A flat rotating disc covered on one or both sides
	with some magnetisable material.  The two main types are the
	{hard disk} and the {floppy disk}.

	Small areas or "zones" on a magnetic disk are magnetised.  The
	magnetisation is aligned in one of two opposing orientations
	with respect to the recording {head}.  Each zone of
	magnetisation.  The {head} writes data by altering the
	alignment and reads data by detecting current pulses induced
	in a coil as zones with different magnetic alignment pass
	underneath it.

	Data is stored on either or both surfaces of discs in
	concentric rings called "{tracks}".  Each track is divided
	into a whole number of "{sectors}".  Where multiple (rigid)
	discs are mounted on the same axle the set of tracks at the
	same radius on all their surfaces is known as a "{cylinder}".

	Data is read and written by a {disk drive} which rotates the
	discs and positions the read/write "{heads}" over the desired
	track(s).  The latter radial movement is known as "{seeking}".
	There is usually one head for each surface that stores data
	though, for increased performance (from reduced {rotational
	latency}), it is possible, though expensive, to position
	multiple heads at equally spaced angles around the discs.

	Therefore there are two states that can be detected for each
	zone - a change in alignment, or no change.

	Ideally a data bit of one or zero can be recorded in each zone
	of magnetisation, however, if a zero represents an absence of
	magnetic change, the detection of several consecutive zeros
	would imply accurately measuring the length of time of the
	absence, i.e., measuring the time between two magnetic
	changes.  However, the variability of motor speed limits the
	number of consecutive zeros which can be read reliably.

	The best recording methods accurately follow the
	characteristics of the magnetic and rotational aspects in
	recording the disk, to be as dense as possible in recording
	bits.

	Compare {magnetic drum}, {compact disc}, {optical disk},
	{magneto-optical disk}.

	(07 Jun 1997)

Magnetic Ink Character Recognition

	(MICR) A {character recognition} system using special ink and
	characters which can be magnetised and read automatically.

	MICR is used almost exclusively in the banking industry where
	it is used to print details on cheques to enable automatic
	processing.

	(13 Apr 1995)

magnetic tape

	<storage> (Or "magtape", "tape" - {paper tape} is now
	obsolete) A data storage medium consisting of a magnetisable
	oxide coating on a thin plastic strip, commonly used for
	{backup} and {archiving}.

	Early industry-standard magnetic tape was half an inch wide
	and wound on removable reels 10.5 inches in diameter.
	Different lengths were available with 2400 feet and 4800 feet
	being common.  {DECtape} was a variation on this "{round
	tape}".

	In modern magnetic tape systems the reels are much smaller and
	are fixed inside a {cartridge} to protect the tape and for
	ease of handling ("{square tape}" - though it's really
	rectangular).  Cartridge formats include {QIC}, {DAT}, and
	{Exabyte}.

	Tape is read and written on a tape drive (or "deck") which
	winds the tape from one reel to the other causing it to move
	past a read/write head.  Early tape had seven parallel tracks
	of data along the length of the tape allowing six bit
	characters plus {parity} written across the tape.  A typical
	recording density was 556 characters per inch.  The tape had
	reflective marks near its end which signaled beginning of tape
	(BOT) and end of tape (EOT) to the hardware.

	Data is written to tape in {blocks} with {inter-block gaps}
	between them.  Each block is typically written in a single
	operation with the tape running continuously during the write.
	The larger the block the larger the data {buffer} required in
	order to supply or receive the data written to or read from
	the tape.  The smaller the block the more tape is wasted as
	inter-block gaps.  Several logical {records} may be combined
	into one physical block to reduce wastage ("{blocked
	records}").  Finding a certain block on the tape generally
	involved reading sequentially from the beginning, in contrast
	to {magnetic disks}.  Tape is not suitable for {random
	access}.  The exception to this is that some systems allow
	{tape marks} to be written which can be detected while winding
	the tape forwards or rewinding it at high speed.  These are
	typically used to separate logical files on a tape.

	Most tape drives now include some kind of {data compression}.
	There are several {algorithms} which provide similar results:
	{LZ} (most), {IDRC} ({Exabyte}), {ALDC} ({IBM}, {QIC}) and
	{DLZ1} ({DLT}).

	See also {cut a tape}, {flap}, {Group Code Recording},
	{spool}, {macrotape}, {microtape}, {Non Return to Zero
	Inverted}, {Phase Encoded}.

	(05 Apr 1997)

magnetic tape drive

	<storage> (Or "tape drive") A {peripheral} device that reads
	and writes {magnetic tape}.

	(25 May 1996)

magneto-optical disk

	<hardware, storage> Plastic or glass disks coated with a
	compound (often TbFeCo) with special properties.  The disk is
	read by bouncing a low-intensity laser off the disk.
	Originally the laser was infrared, but frequencies up to blue
	may be possible; the shorter the wavelength the higher the
	possible density.  The polarization of the reflected light
	depends on the polarity of the stored magnetic field.

	To write, a higher-intensity laser is used to heat the
	material up to its Curie point, allowing its magnetisation to
	be altered and "frozen" as it cools.

	{Storage FAQ
	(http://www.cis.ohio-state.edu/hypertext/faq/usenet/arch-storage/part1/faq.html)}.

	(15 Mar 1995)

MAGNUM

	A {database} language for {DEC-10}'s, used internally by
	{Tymshare, Inc.}.  MAGNUM was designed in the late 1970's by
	Dale Jordan, Rich Strauss and Dave McQuoid originally, and was
	written in {BLISS-10}.  It was the world's first commercial
	{relational database}.  It was in the process of being written
	in 1976.

	(25 Jan 1995)

Magritte

	A {constraint} language for interactive graphical layout by
	J. Gosling.  It solves constraints using algebraic
	transformations.

	["Algebraic Constraints", J. Gosling, PhD Thesis, TR
	CS-83-132, CMU, May 1983].

	(20 Oct 1994)

mail

	<messaging> 1. {electronic mail}.

	2. The {Berkeley Unix} program for composing and reading
	{electronic mail}.  It normally uses {sendmail} to handle
	delivery.

	{Unix manual page}: mail(1)

	(03 Dec 1997)

Mail Application Programming Interface

	{Messaging Application Programming Interface}

mail bomb

	<messaging> To send, or urge others to send, massive amounts
	of {electronic mail} to a single system or person, with intent
	to crash or {spam} the recipient's system.  A successful mail
	bomb may cause the victim's {disk quota} to be exhausted, the
	disk holding his mailbox to fill up, or his computer to spend
	a large proportion of its time processing mail.

	Mail-bombing is sometimes done in retaliation against someone
	persistently abusing {Usenet} and violating {netiquette}.
	While it may inconvenience the intended victim (if they gave
	their real address), it will probably also inconvenience other
	users and administrators of the computers and networks
	involved.  Mailbombing is thus a serious offense itself.

	See {netiquette} for the correct way to respond to perceived
	violations.

	Compare {letterbomb}, {nastygram}.

	(04 Apr 1995)

mailbox

	1. <messaging> A file belonging to a particular user on a
	particular computer in which recieved {electronic mail}
	messages are stored ready for the user to read them.  A
	mailbox may be just an {electronic mail address} to which
	messages are sent and may not actually correspond to a file if
	the messages are processed automatically, e.g. a {mail server}
	or {mailing list}.

	2. <programming> A destination for interprocess messages in a
	{message passing} system.  A mailbox is a {message} queue,
	usually stored in the memory of the processor on which the
	receiving process is running.  {Primitives} are provided for
	sending a message to a named mailbox and for reading messages
	from a mailbox.

	(20 Oct 1994)

mail bridge

	<messaging> A {mail gateway} that {forward}s {electronic mail}
	messages between two or more networks if they meet certain
	administrative criteria.

	(26 Feb 1996)

Mail Exchange Record

	<messaging> (MX Record) A {DNS} resource record type indicating
	which host can handle {electronic mail} for a particular
	{domain}.

	(26 Feb 1996)

mail exploder

	<messaging> Part of an {electronic mail} delivery system which
	allows a message to be delivered to a list of addresses.  Mail
	exploders are used to implement {mailing list}s.  Users send
	messages to a single address and the mail exploder takes care
	of delivery to the individual {mailboxes} in the list.

	(26 Feb 1996)

mail filter

	<messaging> A program which sorts and processes incoming
	{mail} based on patterns found in the mail {headers}.

	{procmail} is an example for {Unix}.

	(09 Dec 1996)

mail gateway

	<messaging> A machine that connects two or more {electronic mail}
	systems (including dissimilar mail systems) and transfers
	messages between them.  Sometimes the mapping and translation
	can be quite complex, and it generally requires a
	{store-and-forward} scheme whereby the message is received
	from one system completely before it is transmitted to the
	next system, after suitable translations.

	(26 Feb 1996)

mail hub

	{mail server}

mailing list

	<messaging> (Often shortened in context to "list") 1. An
	{e-mail} address that is an alias (or {macro}, though that
	word is never used in this connection) which is expanded by a
	{mail exploder} to yield many other e-mail addresses.  Some
	mailing lists are simple "reflectors", redirecting mail sent
	to them to the list of recipients.  Others are filtered by
	humans or programs of varying degrees of sophistication; lists
	filtered by humans are said to be "moderated".

	2. The people who receive your e-mail when you send it to such
	an address.

	Mailing lists are one of the primary forms of hacker
	interaction, along with {Usenet}.  They predate {Usenet},
	having originated with the first {UUCP} and {ARPANET}
	connections.  They are often used for private
	information-sharing on topics that would be too specialised
	for or inappropriate to public {Usenet} groups.  Though some
	of these maintain almost purely technical content (such as the
	{Internet Engineering Task Force} mailing list), others (like
	the "sf-lovers" list maintained for many years by Saul Jaffe)
	are recreational, and many are purely social.  Perhaps the
	most infamous of the social lists was the eccentric bandykin
	distribution; its latter-day progeny, {lectroid}s and
	{tanstaafl}, still include a number of the oddest and most
	interesting people in hackerdom.

	Mailing lists are easy to create and (unlike {Usenet}) don't
	tie up a significant amount of machine resources (until they
	get very large, at which point they can become interesting
	torture tests for mail software).  Thus, they are often
	created temporarily by working groups, the members of which
	can then collaborate on a project without ever needing to meet
	face-to-face.

	Requests to subscribe to, or leave, a mailing list should
	ALWAYS be sent to the list's "-request" address (e.g.
	ietf-request@cnri.reston.va.us for the IETF mailing list).
	This prevents them being sent to all recipients of the list
	and ensures that they reach the maintainer of the list, who
	may not actually read the list.  {BITNET} mailing lists are
	different; they are usually maintained by an automatic
	program, {listserv}.  Membership requests for all lists at
	host FOO should be sent to listserv@FOO.

mail path

	{source route}

.mailrc

	<messaging> (mail run commands) The configuration file for the
	standard {Unix} {mail} program.  This file is found in a
	user's {home directory} and can contain special commands to
	set options and define mail aliases.

	See also {rc}.

	(09 Apr 1996)

mail server

	1. <tool, messaging> A program that distributes files or
	information in response to requests sent via {electronic
	mail}.  Examples on the {Internet} include {Almanac} and
	{netlib}.  Mail servers are also used on {Bitnet}.

	In the days before {Internet} access was widespread and {UUCP}
	mail links were common, mail servers could be used to provide
	remote services which might now be provided via {FTP} or
	{WWW}.

	2. <messaging> (Or "mail hub") A computer used to store and/or
	forward {electronic mail}.

	(05 May 1995)

mail user agent

	<messaging> (MUA) The program that allows the user to compose
	and read {electronic mail} messages.  The MUA provides the
	interface between the user and the {Message Transfer Agent}.
	Outgoing mail is eventually handed over to an MTA for delivery
	while the incoming messages are picked up from where the MTA
	left it (although MUA's running on single-user machines may
	pick up mail using {POP}).

	Popular MUAs for {Unix} include {elm}, {mush}, {pine}, and
	{RMAIL}.

	{FAQ
	(http://www.cis.ohio-state.edu/hypertext/faq/usenet/mail/setup/unix/part2/faq-doc-3.html)}.

	(21 Mar 1996)

Mail Users' Shell

	<messaging> (mush) A {MUA} for {Unix} and {MS-DOS}.  It has both
	{line-mode} and {full-screen} interfaces as well as a
	{SunView} interface.

	mush provides a very powerful shell interface with a
	{csh}-like {scripting language}, plenty of {environment
	variables}, command-line {aliases}, filename {completion},
	{conditionals}, and command {piping}.

	{z-mail} is a more recent commercial version of mush.

	{Usenet} newsgroup: {news:comp.mail.mush}.

	(26 Feb 1996)

MAINBOL

	<language> MAcro ImplementatioN of {SNOBOL4}.

	(14 Sep 1997)

Main Distribution Frame

	<networking> (MDF) The {network closet} containing the main
	{hub}.

	(05 May 1995)

mainframe

	<computer> A term originally referring to the cabinet
	containing the central processor unit or "main frame" of a
	room-filling {Stone Age} batch machine.  After the emergence
	of smaller "{minicomputer}" designs in the early 1970s, the
	traditional {big iron} machines were described as "mainframe
	computers" and eventually just as mainframes.  The term
	carries the connotation of a machine designed for batch rather
	than interactive use, though possibly with an interactive
	{time-sharing} operating system retrofitted onto it; it is
	especially used of machines built by {IBM}, {Unisys} and the
	other great {dinosaurs} surviving from computing's {Stone
	Age}.

	It has been common wisdom among hackers since the late 1980s
	that the mainframe architectural tradition is essentially dead
	(outside of the tiny market for {number crunching}
	{supercomputer}s (see {Cray})), having been swamped by the
	recent huge advances in {integrated circuit} technology and
	low-cost personal computing.  As of 1993, corporate America is
	just beginning to figure this out - the wave of failures,
	takeovers, and mergers among traditional mainframe makers have
	certainly provided sufficient omens (see {dinosaurs mating}).

	Supporters claim that mainframes still house 90% of the data
	major businesses rely on for mission-critical applications,
	attributing this to their superior performance, reliability,
	scalability, and security compared to microprocessors.

	(22 Jul 1996)

main loop

	The top-level control flow construct in an input- or
	{event-driven} program, the one which receives and acts or
	dispatches on the program's input.  See also {driver}.

main memory

	<storage, architecture> The storage device used by a computer
	to hold the currently executing program and its working data.
	A modern computer's main memory is built from {random access
	memory} {integrated circuits}.  In the old days {ferrite core
	memory} was one popular form of main memory, leading to the
	use of the term "{core}" for main memory.

	Computers have several other sorts of memory, distinguished by
	their access time, storage capicity, cost, and the typical
	lifetime or rate of change of the data they hold.  {Registers}
	in the {CPU} are fast, few, expensive and typically change
	every few machine instructions.  Other kinds are {cache},
	{PROM}, {magnetic disk} (which may be used for {virtual
	memory}), and {magnetic tape}.

	(04 Nov 1996)

MAINSAIL

	MAchine INdependent SAIL.  From XIDAK, Palo Alto CA, (415)
	855-9271.

maintenance

	<programming> The modification of a software product, after
	delivery, to correct faults, to improve performance or other
	attributes, or to adapt the product to a changed environment.

	Maintenance is an important part of the {software life-cycle}.
	It is expensive in manpower and resources, and one of the aims
	of {software engineering} is to reduce its cost.

	(27 Dec 1996)

Maisie

	A {C}-based parallel programming language by Wen-Toh Liao
	<wentoh@may.CS.UCLA.EDU>.  Maisie extends C with
	{asynchronous} typed {message passing} and {lightweight
	process}es.  Programs can define, create and destroy
	processes, send and receive messages and manipulate the system
	clock.

	Maisie has been ported to {PVM}/3.1, {Cosmic} Environment and
	{SUN} {socket}s.

	{Version 2.1.1.3 (ftp://cs.ucla.edu/pub/maisie.2.1.1.3.tar.Z)}

	(14 Jun 1993)

major delivery

	<programming> A (chiefly British) synonym for {major release}.
	E.g, the ninth major release of a piece of software might be
	called MD9.  The {release} notation would be "v9.0".

	(04 Aug 1996)

Majordomo

	<messaging, tool> A popular {freeware} {mailing list}
	processor which runs under {Unix}.

	See also {Listserv}, {Listproc}.

	[Details?  FTP?]

	(22 Feb 1995)

major release

	<programming> A {release} of a piece of software which is not
	merely a {revision} or a {bug fix release} but which contains
	substantial changes (e.g., an overhaul of the {interface},
	change in compatibility).

	Traditionally, major releases are numbered as X.0; for
	example, WordPerfect 6.0 is a major release, significantly
	different from any previous version; whereas WordPerfect 6.1
	has only minor changes, and is, thus, only a {revision}.

	See also {major delivery}.

	(04 Aug 1996)

Make

	<programming, tool> The {Unix} tool to automate the
	recompilation, linking etc. of programs, taking account of the
	interdependencies of {modules} and their modification times.
	Make reads instructions from a "makefile" which specifies a
	set of targets to be built, the files they depend on and the
	commands to execute in order to produce them.

	Most {C} systems come with a make. There is also one produce
	by {GNU}.

	["Make - A Program for Maintaining Computer Programs",
	A.I. Feldman, TR No 57, Bell Labs Apr 1977].

	(05 Jan 1995)

Makedoc

	A program from Carleton University, Ottawa that generates
	documentation for Objective C programs.  It will also generate
	a class hierarchy diagram.  The output format is similar to
	that used by StepStone.

makefile

	A script which tells the Unix program "{make}" how to build a
	particular computer program or set of programs.  A makefile
	contains variable assignments and rules of the form

		target: inputs
			commands

	which say if any of the files in "inputs" has been modified
	more recently than file "target" (or if the target does not
	exist) then execute "commands", which will normally bulid
	"target" from "inputs".

	If make is run with no arguments, it looks for a makefile
	called "Makefile" or "makefile".

	(05 Jan 1995)

Maker Interchange Format

	(MIF) A language used to describe a {FrameMaker} document in a
	text file.  MIF is used to exchange information between
	FrameMaker and other applications.

	["Using FrameMaker 4," Windows and Macintosh Version,
	c. 1986-1993 Frame Technology Corporation].

	(30 Jan 1995)

MAL

	{Micro Assembly Language}

Malamud

	<publication> The book:

	[Malamud, C., "Analyzing Sun Networks", Van Nostrand Reinhold,
	New York, NY, 1992.]

	(10 Apr 1995)

MALI

	A hardware memory device for {logic programming} computers
	with {real time} {garbage collection}.

mall

	<World-Wide Web> A collection of {World-Wide Web} documents
	featuring commercial products and services, usually served by
	one particualr {Internet} {access provider}.

	(10 Apr 1995)

malloc

	{C}'s standard library routine for storage allocation.  It
	takes the number of bytes required and returns a pointer to a
	block of that size.  Storage is allocated from a heap which
	lies after the end of the program and data areas.  Memory
	allocated with malloc must be freed explicitly using the
	"free" routine before it can be re-used.

	{gc} is a storage allocator with {garbage collection} that is
	intended to be used as a plug-in replacement for malloc.

MAN

	{Metropolitan Area Network}

man

	<tool> (manual) The {Unix} command for reading on-line
	{documentation}.

	See {Unix manual page}.

	(19 Jan 1997)

management

	1. Corporate power elites distinguished primarily by their
	distance from actual productive work and their chronic failure
	to manage (see also {suit}).  Spoken derisively, as in
	"*Management* decided that ...".

	2. Mythically, a vast bureaucracy responsible for all the
	world's minor irritations.  Hackers' satirical public notices
	are often signed "The Mgt"; this derives from the
	"Illuminatus!" novels.

	(28 Feb 1995)

Management Information Base

	(MIB) A {database} of managed objects acessed by {network
	management} {protocol}s.  An {SNMP} MIB is a set of parameters
	which an {SNMP} {management station} can query or set in the
	{SNMP agent} of a network device (e.g. {router}).

	{SNMP} has two {standard} MIBs.  The first, MIB I, was
	established in {RFC 1156}, was defined to manage
	{TCP/IP}-based {internet}s.  MIB II, defined in {RFC 1213}, is
	basically an update to MIB I.

	Standard minimal MIBs have been defined, and many hardware
	(and certain software, e.g. {DBMS}) providers have developed
	private MIBs in {ASN.1} format allowing them to be compiled
	for use in a {Nework Management System}.  In theory, any {SNMP
	manager} can talk to any {SNMP agent} with a properly defined
	MIB.

	See also {client-server model}.

	(14 Nov 1994)

Management Information System

	<application> (MIS) A computer system, usually based on a
	{mainframe} or {minicomputer}, designed to provide management
	personnel with up-to-date information on an oraganisation's
	performance, e.g. inventory and sales.  These systems output
	information in a form that is useable by managers at all
	levels of the organization: strategic, tactical, and
	operational.  A good example of an MIS report is an annual
	report for a stockholder (a scheduled report).

	{Boyd & Fraser's home page (http://www.bf.com/bf.html)}

	[Que's Computer User's Dictionary Second Edition, 1992].

	(22 Oct 1995)

Management Information Systems

	{Management Information System}

Manchester Autocode

	The predecessor of {Mercury Autocode}.

	["The Programming Strategy Used with the Manchester University
	Mark I Computer", R.A.  Brooker, Proc IEE 103B Suppl:151-157,
	1956].

	(08 Feb 1995)

Manchester encoding

	<communications, protocol> A method of transmitting bits which
	enables the receiver to easily synchronise with the sender.

	A simple way of signalling bits might be to transmit a high
	voltage for some period for a 1-bit and a low voltage for a 0
	bit:

	 Bits Sent:             1     1     0     0

	 Signal:      High    ___________
		      Low                |___________

	 Time: ->            .     .     .     .     .

	However, when several identical bits are sent in succession,
	this provides no information to the receiver about when each
	bit starts and stops.

	Manchester encoding splits each bit period into two, and
	ensures that there is always a transition between the signal
	levels in the middle of each bit.  This allows the receiver to
	synchronise with the sender.

	In normal Manchester encoding, a 1-bit is transmitted with a
	high voltage in the first period, and a low voltage in the
	second, and vice verse for the 0 bit:

	 Bits Sent:             1     1     0     0

	 Signal:      High    __    __       __    __
		      Low       |__|  |_____|  |__|

	 Time: ->            .  '  .  '  .  '  .  '  .

	In Differential Manchester encoding, a 1-bit is indicated by
	making the first half of the signal equal to the last half of
	the previous bit's signal and a 0-bit is indicated by making
	the first half of the signal opposite to the last half of the
	previous bit's signal.  That is, a zero bit is indicated by a
	transition at the beginning of the bit.

	Like normal Manchester encoding, there is always a transition
	in the middle of the transmission of the bit.

	       Differential Manchester Encoding

	 Bits Sent:            1     1    0     0

	 Signal:      High  ____       __    __    __
		      Low       |_____|  |__|  |__|

	 Time: ->            .  '  .  '  .  '  .  '  .

	With each bit period half as long, twice as much {bandwidth}
	is required when using either of the Manchester encoding
	schemes.

	(23 Nov 1995)

Mandala

	<language> A system based on {Concurrent Prolog}, developed at
	{ICOT}, Japan.

	["Mandala: A Logic Based Knowledge Programming System",
	K. Furukawa et al, Intl Conf 5th Gen Comp Sys 1984].

	(23 Nov 1995)

Mandelbrot, Benoit

	{Benoit Mandelbrot}

Mandelbrot set

	<mathematics, graphics> (After its discoverer, {Benoit
	Mandelbrot}) The set of all {complex numbers} c such that

		| z[N] | < 2

	for arbitrarily large values of N, where

		z[0] = 0
		z[n+1] = z[n]^2 + c

	The Mandelbrot set is usually displayed as an {Argand
	diagram}, giving each point a colour which depends on the
	largest N for which | z[N] | < 2, up to some maximum N which
	is used for the points in the set (for which N is infinite).
	These points are traditionally coloured black.

	The Mandelbrot set is the best known example of a {fractal} -
	it includes smaller versions of itself which can be explored
	to arbitrary levels of detail.

	{The Fractal Microscope
	(http://www.ncsa.uiuc.edu/Edu/Fractal/Fractal_Home.html/)}.

	(08 Feb 1995)

mandelbug

	<jargon, programming> /man'del-buhg/ (From the {Mandelbrot
	set}) A {bug} whose underlying causes are so complex and
	obscure as to make its behaviour appear chaotic or even
	{nondeterministic}.  This term implies that the speaker thinks
	it is a {Bohr bug}, rather than a {heisenbug}.

	See also {schroedinbug}.

	(08 Feb 1995)

manged

	/mahnjd/ [probably from the French "manger" or Italian
	"mangiare", to eat; perhaps influenced by English "mange",
	"mangy"] Refers to anything that is mangled or damaged,
	usually beyond repair.  "The disk was manged after the
	electrical storm."  Compare {mung}.

mangle

	Used similarly to {mung} or {scribble}, but more violent
	in its connotations; something that is mangled has been
	irreversibly and totally trashed.

mangler

	[DEC] A manager.  Compare {mango}; see also {management}.
	Note that {system mangler} is somewhat different in
	connotation.

mango

	<jargon> /mang'go/ (Originally in-house jargon at {Symbolics})
	A manager.

	Compare {mangler}.  See also {devo} and {doco}.

	(21 Mar 1995)

man page

	{Unix manual page}

mantissa

	1. <programming> The part of a {floating point} number which,
	when multiplied by its {radix} raised to the power of its
	{exponent}, gives its value.  The mantissa may include the
	number's sign or this may be considered to be a separate part.

	2. <mathematics> The fractional part of a {logarithm}.

	(15 Jun 1996)

manual testing

	<testing> That part of software testing that requires human
	input, analysis, or evaluation.

	(27 Dec 1996)

manufacturer resource planning

	<application> (MRP) A type of application performed by {SAP}
	R/2, R/3, and {Baan}.

	[Yes, but what *is* it?]

	(28 Nov 1996)

Manufacturers Automation Protocol

	{Manufacturing Automation Protocol}

Manufacturing Automation Protocol

	<protocol> (MAP) A set of {protocols} developed by General
	Motors based on {Token Bus} ({IEEE 802.4}) and giving
	predictable {real-time} response.

	(21 Oct 1994)

manularity

	/man"yoo-la"ri-tee/ ("manual" + "granularity") A notional
	measure of the manual labor required for some task,
	particularly one of the sort that {automation} is supposed to
	eliminate.  "Composing English on paper has much higher
	manularity than using a text editor, especially in the
	revising stage."  Hackers tend to consider manularity a
	symptom of primitive methods; in fact, a true hacker
	confronted with an apparent requirement to do a computing task
	{by hand} will inevitably seize the opportunity to build
	another tool (see {toolsmith}).

	(26 Oct 1994)

MAO

	An early {symbolic mathematics} system.

	[A. Rom, Celest Mech 1:309-319 (1969)].

	(10 Feb 1995)

MAP

	1. <protocol> {Manufacturing Automation Protocol}.

	2. {Mathematical Analysis without Programming}.

	(01 Dec 1996)

map

	1. <mathematics> {function}.

	2. <programming> In {functional programming}, the most common
	{higher-order function} over lists.  Map applies its first
	argument to each element of its second argument (a list) and
	returns the list of results.

		map :: (a -> b) -> [a] -> [b]
		map f []     = []
		map f (x:xs) = f x : map f xs

	This can be generalised to types other than lists.

	(05 Nov 1997)

MAPI

	{Messaging Application Programming Interface}

Maple

	A {symbolic mathematics} package by B. Char, K. Geddes,
	G. Gonnet, M. Monagan and S. Watt of the {University of
	Waterloo}, Canada and {ETH} Zurich, Switzerland in 1980.
	Version: Maple V.

	E-mail: <wmsi@daisy.waterloo.edu>.  Mailing list:
	glabahn@daisy.waterloo.edu.

	(21 Oct 1994)

marbles

	[Mainstream "lost all his/her marbles"] The minimum needed to
	build your way further up some hierarchy of tools or
	abstractions.  After a bad system crash, you need to determine
	if the machine has enough marbles to come up on its own, or
	enough marbles to allow a rebuild from backups, or if you need
	to rebuild from scratch.  "This compiler doesn't even have
	enough marbles to compile {hello, world}."

marginal

	1. Extremely small.  "A marginal increase in {core} can
	decrease {GC} time drastically."  In everyday terms, this
	means that it is a lot easier to clean off your desk if you
	have a spare place to put some of the junk while you sort
	through it.

	2. Of extremely small merit.  "This proposed new feature seems
	rather marginal to me."

	3. Of extremely small probability of {win}ning.  "The power
	supply was rather marginal anyway; no wonder it fried."

	(21 Oct 1994)

Marginal Hacks

	Margaret Jacks Hall, a building into which the {Stanford AI
	Lab} was moved near the beginning of the 1980s (from the
	{D.C. Power Lab}).

Maril

	Machine description language used by the {Marion} code
	generator.

	["The Marion System for Retargetable Instruction Scheduling",
	D.G. Bradlee et al, SIGPLAN Notices 26(6):229-240 (June
	1991)].

Mark 1

	<computer> (Or "Automatic Sequence Controlled Calculator") A
	{first generation computer} developed in 1944 by {Howard
	Aiken} of {Harvard University}.  The Mark 1 is seen as the
	first full-sized digital computer.  It weighed 5 tons, had 500
	miles of wiring, was used only for numeric calculations, and
	took three seconds to carry out one multiplication.

	[Mechanism?  Capacity?  Programmability?]

	(24 Nov 1996)

marketroid

	/mar'k*-troyd/ (Or "marketing slime", "marketeer", "marketing
	droid", "marketdroid") A member of a company's marketing
	department, especially one who promises users that the next
	version of a product will have features that are not actually
	scheduled for inclusion, are extremely difficult to implement,
	and/or are in violation of the laws of physics; and/or one who
	describes existing features (and misfeatures) in ebullient,
	buzzword-laden adspeak.  Derogatory.

	Compare {droid}.

	(23 Feb 1995)

Markov

	See {Andrei Markov}, {Markov chain}, {Markov model}, {Markov
	process}.

	(23 Feb 1995)

Markov chain

	<probability> (Named after {Andrei Markov}) A model of
	sequences of events where the probability of an event
	occurring depends upon the fact that a preceding event
	occurred.

	A {Markov process} is governed by a Markov chain.

	In {simulation}, the principle of the Markov chain is applied
	to the selection of samples from a probability density
	function to be applied to the model.  {Simscript} II.5 uses
	this approach for some modelling functions.

	[Better explanation?]

	(23 Feb 1995)

Markov model

	A model or {simulation} based on {Markov chain}s.

Markov process

	A process in which the sequence of events can be described by
	a {Markov chain}.

	(23 Feb 1995)

Markowitz

	The author of the original {Simscript} language.

mark-sweep garbage collection

	Each cell has a bit reserved for marking which is clear
	initially.  During garbage collection all active cells are
	traced from the root and marked.  Then all cells are examined.
	Unmarked cells are freed.

markup

	<text> In computerised document preparation, a method of
	adding information to the text indicating the logical
	components of a document, or instructions for layout of the
	text on the page or other information which can be interpreted
	by some automatic system.

	For example, the source of {this dictionary} is marked up by
	enclosing cross-references in curly braces which are
	significant to the {World-Wide Web} server software.

	(30 Mar 1995)

Marlais

	Version 0.2a

	interpreter

	Brent Benson <brent@ssd.csd.harris.com>

	Marlais is a simple-minded interpreter for a programming
	language strongly resembling Dylan [1].  It is not intended as
	a final release, but rather to fill a perceived void where
	Dylan implementations are concerned.  This is a "hackers
	release" and is intended as a vehicle for education,
	experimentation and also to encourage people to port it to
	different architectures, add features, and fix bugs.  Marlais
	is alpha software and should not be used by people desiring
	reliability!

	ports: Sun-3, Sun-4, VAX/BSD, OS/2, Linux, Sequent Symmetry,
	Encore, HP-UX, Ultrix, SGI, Sony News, A/UX

	{(ftp://travis.csd.harris.com/pub/marlais-0.2a.tar.gz)}

	(1993/09/23)

Mars

	A legendary tragic failure, the archetypal Hacker Dream Gone
	Wrong.  Mars was the code name for a family of PDP-10
	compatible computers built by Systems Concepts (now, The SC
	Group): the multi-processor SC-30M, the small uniprocessor
	SC-25M, and the never-built superprocessor SC-40M.  These
	machines were marvels of engineering design; although not much
	slower than the unique {Foonly} F-1, they were physically
	smaller and consumed less power than the much slower DEC KS10
	or Foonly F-2, F-3, or F-4 machines.  They were also
	completely compatible with the DEC KL10, and ran all KL10
	binaries (including the operating system) with no
	modifications at about 2--3 times faster than a KL10.

	When DEC cancelled the Jupiter project in 1983, Systems
	Concepts should have made a bundle selling their machine into
	shops with a lot of software investment in PDP-10s, and in
	fact their spring 1984 announcement generated a great deal of
	excitement in the PDP-10 world.  {TOPS-10} was running on the
	Mars by the summer of 1984, and {TOPS-20} by early fall.

	Unfortunately, the hackers running Systems Concepts were much
	better at designing machines than at mass producing or selling
	them; the company allowed itself to be sidetracked by a bout
	of perfectionism into continually improving the design, and
	lost credibility as delivery dates continued to slip.  They
	also overpriced the product ridiculously; they believed they
	were competing with the KL10 and VAX 8600 and failed to reckon
	with the likes of Sun Microsystems and other hungry startups
	building workstations with power comparable to the KL10 at a
	fraction of the price.

	By the time SC shipped the first SC-30M to Stanford in late
	1985, most customers had already made the traumatic decision
	to abandon the PDP-10, usually for VMS or Unix boxes.  Most of
	the Mars computers built ended up being purchased by
	{CompuServe}.

	This tale and the related saga of {Foonly} hold a lesson for
	hackers: if you want to play in the {Real World}, you need to
	learn Real World moves.

Marseille Prolog

	One of the two main dialects of Prolog, the other being
	Edinburgh Prolog.  The difference is largely syntax.  The
	original Marseille Interpreter (1973) was written in FORTRAN.

marshalling

	The process of packing one or more items of data into a
	message buffer, prior to transmitting that message buffer over
	a communication channel.  The packing process not only
	collects together values which may be stored in
	non-consecutive memory locations but also converts data of
	different types into a standard representation agreed with the
	recipient of the message.

	(02 Dec 1994)

MARSYAS

	MARshall SYstem for Aerospace Simulation.

	A software system for digital simulation of large physical
	systems.

	["MARSYAS - A Software System for the Digital Simulation of
	Physical Systems", H. Trauboth et al, Proc SJCC, 36 (1970)].

	(02 Dec 1994)

Martian

	{Packet}s that turn up unexpectedly on the wrong {network}
	because of bogus {routing} entries.  Also a packet which has
	an altogether bogus (non-registered or ill-formed) {internet
	address}, such as the test loopback interface [127.0.0.1].
	Such a packet will come back labelled with a source address
	that is clearly not of this earth.  "The domain server is
	getting lots of packets from Mars.  Does that gateway have a
	martian filter?"

Martin Marietta Laboratories Moorestown

	{(http://atlgw.atl.ge.com/)}

	Address: Building 145, Moorestown Corporate Center,
	Moorestown, NJ 08057, USA.

	(06 Feb 1995)

MARVIN

	U Dortmund, 1984.  Applicative language based on Modula-2,
	enhanced by signatures (grammars) terms (trees) and attribute
	couplings (functions on trees).  Used for specification of
	language translators.

	["MARVIN - A Tool for Applicative and Modular Compiler
	Specification", H.  Ganziger et al, Forsch 220, U Dortmund,
	Jul 1986].

Mary

	Mark Rain.  Machine-oriented language, a supeset of ALGOL68,
	extensible.  Hidden on the back cover of the manual: MARY HAD
	A LITTLE LAMB - COERCION IMPOSSIBLE.  "Mary Programmer's
	Reference Manual", M. Rain et al, R Unit, Trondheim Norway,
	1974.  "Operator Expressions in Mary", M.  Rain, SIGPLAN
	Notices 8(1) (Jan 1973).

MAS

	Modula-2 Algebra System.  Runs on {IBM PC}, {Atari}, {Amiga}.

	{(ftp://alice.fmi.uni-passau.de)}

	["Modula-2 Algebra System", H. Kredel, Proc DISCO 90 Capri,
	LNCS 429, Springer 1990, pp270-271].

MASCOT

	Modular Approach to Software Construction Operation and Test:
	a method for software design aimed at real-time embedded
	systems from the Royal Signals and Research Establishment, UK.

Mask Read Only Memory

	<storage> (MROM) A kind of {ROM} in which the memory contents
	are determined by one of the masks used to manufacture the
	{integrated circuit}.  MROM can give high storage density
	(bits per millimeter squared) making it a cheap solution for
	high volume applications.

	[Other ROM types?]

	(22 Apr 1995)

MASM

	{Microsoft} {Assembler} for {MS-DOS}.

	(22 Apr 1995)

MasPar Unity

	A translator from {UNITY} to {MPL} by Martin Huber, University
	of Karlsruhe, Germany.  Version 1.0.

	{(ftp://SanFrancisco.ira.uka.de/pub/maspar/maspar_unity.tar.Z)}.
	E-mail: Lutz Prechelt <prechelt@ira.uka.de>.

Massachusetts Institute of Technology

	(MIT) An independent, coeducational university located in
	Cambridge, MA, USA.  Its best-known computer-related labs are
	the {Artificial Intelligence Lab}, the {Lab for Computer
	Science} and the Media Lab.  It is also known for its {hack}s
	or practical jokes, such as {The Great Dome Police Car Hack
	(http://the-tech.mit.edu/Bulletins/hack.html)}.  Resident
	computer {hacker}s include {Richard Stallman}, {Gerald
	Sussman} and {Tom Knight}.

	See also {6.001}.

	{(http://web.mit.edu/)}

massage

	Vague term used to describe "smooth" transformations of a data
	set into a different form, especially transformations that do
	not lose information.  Connotes less pain than {munch} or
	{crunch}.  "He wrote a program that massages {X bitmap} files
	into {GIF} format."  Compare {slurp}.

Massey Hope

	A refinement of {Hope+C} by Nigel Perry <N.Perry@massey.ac.nz>
	of {Massey University}, NZ.  It has improved {syntax} but no
	stream I/O.

	(22 Nov 1994)

master

	{botmaster}

Matchmaker

	A language for specifying and automating the generation of
	multi-lingual interprocess communication interfaces.  {MIG} is
	an implementation of a subset of Matchmaker.

	(22 Nov 1994)

Mathcad

	A {symbolic mathematics} environment.

Mathematica

	<tool, mathematics> A popular {symbolic mathematics} and
	graphics system, developed in 1988 by Stephen Wolfram and sold
	by {Wolfram Research}.  The language emphasises rules and
	{pattern-matching}.  The name was suggested by {Steve Jobs}.

	{Home (http://www.wri.com/mathematica/)}

	{Stanford FTP (ftp://otter.stanford.edu/)}, {NCSA FTP
	(ftp://ftp.ncsa.uiuc.edu/)}.

	Mailing list: mathgroup-request@yoda.ncsa.uiuc.edu.

	{Usenet} newsgroup: {news:comp.soft-sys.math.mathematica}.

	["Mathematica: A System for Doing Mathematics by Computer",
	Stephen Wolfram, A-W 1988].

	(01 May 1995)

Mathematical Analysis without Programming

	(MAP) An On-line system for mathematics under {CTSS}.

	[Sammet 1969, p. 240].

	(10 Feb 1995)

Mathematics in Recognizable Form Automatically Compiled

	<language> (MIRFAC) An early interactive system resembling
	{BASIC} using typewriter output with special mathematical
	symbols.

	[Sammet 1969, pp. 281-284].

	(01 Aug 1997)

MATHLAB

	Symbolic math system, MITRE, 1964.  Later version: MATHLAB 68
	(PDP-6, 1967).

	["The Legacy of MATHLAB 68", C. Engelman, Proc 2nd Symp on
	Symbolic and Algebraic Manip, ACM (Mar 1971)].

	[Sammet 1969, p. 498].

MATH-MATIC or MATHMATIC

	Alternate name for AT-3.  Early, pre-FORTRAN
	language for UNIVAC I or II.  Sammet 1969.

math-out

	(Possibly from "white-out", the blizzard variety) A paper or
	presentation so encrusted with mathematical or other formal
	notation as to be incomprehensible.  This may be a device for
	concealing the fact that it is actually {content-free}.

	See also {numbers}, {social science number}.

	(14 Dec 1994)

MathWorks

	{The MathWorks, Inc.}

MATLAB

	An interactive program from {The MathWorks} for
	high-performance numeric computation and {visualisation}.
	MATLAB integrates {numerical analysis}, {matrix} computation,
	{signal processing}, and graphics in an easy-to-use
	environment.  MATLAB is built on sophisticated matrix software
	for analysing {linear equation}s.  The tools supplied can be
	used for applied mathematics, physics, chemistry, engineering,
	finance and other areas dealing with complex numerical
	calculations.

	{(http://www.mathworks.com/matlab.html)}

	(14 Dec 1994)

Matrix

	[FidoNet]  1. What the Opus BBS software and sysops call
	{FidoNet}.

	2. Fanciful term for a {cyberspace} expected to emerge from
	current networking experiments (see {network, the}).

	3. The totality of present-day computer networks.

Matrix Compiler

	Early matrix computations on UNIVAC.  Sammet 1969, p.642.

MATRIX MATH

	<language> An early system on the {UNIVAC I} or II.

	[Listed in CACM 2(5):16 May 1959].

	(27 Feb 1997)

Matrix Math eXtensions

	<processor> (MMX) (NOT an acronym for "MultiMedia eXtension",
	according to Intel, but an Intel brand name) A set of 57 extra
	instructions built into some versions of {Intel}'s {Pentium}
	{microprocessors} for supporting {SIMD} operations on
	{multimedia} and communications data types.

	MMX-enhanced processors are due to be released early in 1997.
	They will be fully compatible with previous Intel processors
	and software but software will only benefit if it is written
	to use the new instructions.  They can handle many common
	multimedia operations, such as {digital signal processing},
	normally handled by a separate {sound card} or {video card}.

	(21 Dec 1996)

MAU

	{Media Access Unit}

mawk

	<language, tool> An faster implementation of {nawk} written by
	Mike Brennan <brennan@bcsaic.boeing.com> in 1991 and
	distributed under {GPL} but distinct from {GNU}'s {gawk}.

	Interpreter version 1.1.3 has been ported to {Sun 3}, {Sun
	4}/{SunOS} 4.0.3; {Vax}/{BSD} 4.3, {ULTRIX} 4.1; {Stardent}
	3000/{SYSV}R3; {DECStation}/{ULTRIX} 4.1, {MS-DOS}/{Turbo
	C++}.

	{(ftp://oxy.edu/public/mawk)}

	(01 Mar 1993)

maximal free expression

	(MFE) A {free expression} is sub-expression of a {lambda
	abstraction} not containing the {bound variable}.  A maximal
	free expression is a free expression not contained within any
	other free expression.  See {full laziness}.

MAXIMOP

	"Job Control Languages: MAXIMOP and CAFE", J. Brandon, Proc
	BCS Symp on Job Control Languages--Past Present and Future,
	NCC, Manchester, ENgland 1974.

maximum Maytag mode

	<storage, humour> (From the US brand of washing machine) What
	a {washing machine} or, by extension, any {hard disk} is in
	when it's being used so heavily that it's shaking like an old
	Maytag with an unbalanced load.  If prolonged for any length
	of time, can lead to disks becoming {walking drives}.

	(22 Jul 1997)

maximum seek time

	<storage> (Or full stroke seek time) The time it takes to
	{seek} over all {tracks}, i.e., from the innermost to the
	outermost or vice versa.  The maximum seek time gives a
	worst-case measure of the speed of the drive which is useful
	in some {real-time} applications where it is important that
	data flows continuously (such as video editing or CD
	recording).

	(15 Jul 1997)

Maximum Transmission Unit

	(MTU) The largest {frame} length which may be sent on a
	physical medium.

	See also {fragmentation}.

	(08 Feb 1995)

Maxis Software

	The developers of {SimCity} and {SimCity 2000}.

	{Home (http://www.maxis.com/)}.

	Address: 2 Theatre Square, Suite 230, Orinda, CA 94563-3346,
	USA.

	Telephone: +1 (800) 33-MAXIS.

	(08 Feb 1995)

MB

	<unit> (Or "Mb") {megabytes} or {megabits}.  When referring to
	the size or data transfer rate of a storage device which is
	accessed in multiples of eight bits (e.g. {RAM}, {hard disk})
	this almost certainly means megabytes, but when referring to
	the data transfer rate of a communications system it probably
	means {megabits}.  Some years ago, it is claimed, "MB" always
	meant megabytes and "Mb" meant megabits but recently this
	useful distinction has been lost.

	(22 Sep 1996)

MBASIC

	{Microsoft} BASIC.

Mbogo, Dr. Fred

	/*m-boh'goh, dok'tr fred/ [Stanford] The archetypal man you
	don't want to see about a problem, especially an incompetent
	professional; a shyster.  "Do you know a good eye doctor?"
	"Sure, try Mbogo Eye Care and Professional Dry Cleaning."  The
	name comes from synergy between {bogus} and the original
	Dr. Mbogo, a witch doctor who was Gomez Addams' physician on
	the old "Addams Family" TV show.  Compare {Bloggs Family,
	the}, see also {fred}.

MBONE

	Virtual Internet Backbone for Multicast IP.

	{IP-Multicast} is the {class-D} addressing scheme in {IP}
	implemented by Steve Deering at {Xerox PARC}.  It was adopted
	at the {IETF} March 1992 meeting and acquired the name MBONE
	after the July 1992 IETF meeting.

	IP Multicast-based routing allows distributed applications to
	achieve {real-time} communication over {IP} {wide area
	network}s through a lightweight, highly {thread}ed model of
	communication.

	Each network-provider participant in the MBONE provides one or
	more IP multicast routers to connect with tunnels to other
	participants and to customers.  The multicast routers are
	typically separate from a network's production routers since
	most production routers don't yet support IP multicast.  Most
	sites use workstations running the mrouted program, but the
	experimental MOSPF software for Proteon routers is an
	alternative.

	It is best if the workstations can be dedicated to the
	multicast routing function to avoid interference from other
	activities and so there will be no qualms about installing
	kernel patches or new code releases on short notice.  Since
	most MBONE nodes other than endpoints will have at least three
	tunnels, and each tunnel carries a separate (unicast) copy of
	each packet, it is also useful, though not required, to have
	multiple network interfaces on the workstation so it can be
	installed parallel to the unicast router for those sites with
	configurations like this:

			+----------+
			| Backbone |
			|   Node   |
			+----------+
			     |
	 ------------------------------------------ External DMZ Ethernet
		  |               |
	     +----------+    +----------+
	     |  Router  |    |  mrouted |
	     +----------+    +----------+
		  |               |
	 ------------------------------------------ Internal DMZ Ethernet

	This configuration allows the mrouted machine to connect with
	tunnels to other regional networks over the external {DMZ} and
	the physical backbone network, and connect with tunnels to the
	lower-level mrouted machines over the internal {DMZ}, thereby
	splitting the load of the replicated packets.  The mrouted
	machine would not do any unicast forwarding.

	Note that end-user sites may participate with as little as one
	workstation that runs the packet audio and video software and
	has a tunnel to a network-provider node.

	{RFC 1112} gives the details.

	{FAQ (http://www.eit.com/techinfo/mbone/mbone.html)}

	(11 Nov 1994)

mbps

	{megabits per second}

MBS

	{mobile broadband services}

MC

	<language> An extension of {C} with {modules}.  Symbols in
	other modules can be referenced using a dot notation.

	["Design and Implementation of a C-Based Language for
	Distributed Real-Time Systems", A. Rizk et al, SIGPLAN Notices
	22(6):83-96 (June 1987)].

	(06 Oct 1995)

MC68000

	{Motorola 68000}

MC6809

	{Motorola 6809}

MCA

	{Micro Channel Architecture}

MCC

	1. {Mosaic Communications Corporation}.

	2. The {Microelectronics and Computer Technology Corporation}.

McCulloch-Pitts neuron

	<artificial intelligence> The basic building block of
	{artificial neural networks}.  It receives one or more inputs
	and produces one or more identical outputs, each of which is a
	simple non-linear function of the sum of the inputs to the
	neuron.  The non-linear function is typically a threshhold or
	step function which is usually smoothed (i.e. a {sigmoid}) to
	facilitate {learning}.

	(11 Oct 1997)

McG360

	Interactive, similar to PAL[5], for IBM 360.

	"McG360 Programmer's Guide", RC 2693, IBM TJWRC, Nov 1969.

MCI

	A United States long-distance telecommunications company.
	Recently bought from {British Telecom} [by ?].

MCL

	{Macintosh Common LISP}

M-Code

	<language> 1. {Intermediate language} produced by some
	{Modula-2} compilers.

	[Which compilers?]

	2. The {intermediate language} for an {SECD}-like machine,
	used by the {Concert} implementation of {MultiLISP}.

	(22 Jan 1996)

MCP

	{motion compensated prediction}

MCP-1600

	A processor made by {Western Digital}, consisting of at least
	four separate {integrated circuit}s, including the control
	circuitry unit, the {ALU}, two or four {ROM} chips with
	{microcode}, and timing circuitry.

	The ALU chip contained twenty-six 8-bit {register}s and an
	8-bit {ALU}, while the control unit supervised the moving of
	data, memory access, and other control functions.  The {ROM}
	allowed the chip to function as either an 8- or 16-bit chip,
	with clever use of the 8-bit {ALU}.  Further, {microcode}
	allowed the addition of {floating-point} routines (40 + 8 bit
	format), simplifying programming (and possibly producing a
	floating-point coprocessor).

	Two standard {microcode} {ROM}s were available.  This
	flexibility was one reason it was also used to implement the
	{DEC} {LSI-11} processor as well as the {WD} {Pascal
	Microengine}.

	(18 Nov 1994)

MCS

	Meta Class System.

	A portable {object-oriented} extension of {Common Lisp} from
	{GMD}.  It integrates the functionality of {CLOS} and {TELOS}.

	{(ftp://gmdzi.gmd.de/pub/lisp/mcs)}

	(21 Oct 1994)

mcvax

	mcvax.cwi.nl used to be the international {backbone} node of
	{EUnet}, the European Unix network.  It was located in
	Amsterdam, Netherlands and belonged to "Centrum voor Wiskunde
	en Informatica" (Centre for Mathematics and Computer Science)
	which is an institute belonging to a foundation called
	"Mathematisch Centrum".  Since the first mcvax was on of the
	first {VAXen} in Europe and one of it's first {uucp}
	connections was to a machine called decvax it was quickly
	christened mcvax.  Some also say this was done to give Jim
	McKie a nice mail address: mcvax!mckie.  But this is certainly
	not true at all.  The function of EUnet international backbone
	moved to another VAX later but the name moved with it, because
	in those days of mainly uucp based mail and before widespread
	use of {pathalias} it was simply not feasible to rename the
	machine to "europa" as was suggested at one stage.

	Mcsun (or relay.eu.net or net.eu.relay in some parts of
	Europe) replaced the international backbone host of EUnet
	around 1990.  This machine was donated by {Sun Microsystems}
	owned by the {European Unix Systems User Group} (EUUG).  It
	was located about 5m from where mcvax used to be and operated
	by the same people.

	Mcvax has finally ceased to exist in the {domain} and {uucp}
	{namespace}s.  It still exists in the {EARN}/{BITNET}
	namespace.

	[Posting by Daniel Karrenberg <dfk@eu.net> to eunet.general].

	(02 Mar 1990)

mcvert

	<tool> A {Unix} program for reading and writing {Apple Computer}
	{Macintosh} {binary file}s.  It was written by Doug Moore, now
	at {Rice University} (Jan 1990).

	See {BinHex}, {HQX}, {MacBinary}.

	(22 Apr 1995)

MD

	1. <programming> {major delivery}.

	2. {message digest function}.

MD5

	{Message Digest 5}

MDF

	<networking> {Main Distribution Frame}.

MDL

	(Originally "Muddle").  C. Reeve, {Carl Hewitt} and {Gerald
	Sussman}, Dynamic Modeling Group, MIT ca. 1971.  Intended as a
	successor to Lisp, and a possible base for Planner-70.
	Basically LISP 1.5 with data types and arrays.  Many of its
	features were advanced at the time (I/O, interrupt handling
	and coroutining), and were incorporated into later LISP
	dialects ("optional", "rest" and "aux" markers).  In the mid
	80's there was an effort to use bytecoding to make the
	language portable.  CLU was first implemented in MDL.  Infocom
	wrote Zork in MDL, and used it as the basis for the ZIL
	interpreter.

	Implementations exist for ITS, {TOPS-20}, BSD 4.3, Apollo
	Domain, SunOS and A/UX.

	["The MDL Programming Language", S.W. Galley et al, Doc
	SYS.11.01, Project MAC, MIT (Nov 1975)].

Mean Time Between Faults

	{Mean Time Between Failures}

measure

	<testing To ascertain or appraise by comparing to a
	{standard}; to apply a {metric}.

	(27 Dec 1996)

measurement

	<testing> The act or process of measuring; a figure, extent,
	or amount obtained by measuring.

	(27 Dec 1996)

meatware

	Less common synonym for {wetware}.

	[Was it Marvin Minsky who described brains as
	"machines?/computers? made of meat"?]

	(21 Oct 1994)

Media Access Control

	<networking> (MAC) The lower sublayer of the {data link layer}.
	The interface between a {node}'s {Logical Link Control} and
	the network's {physical layer}.  The MAC differs for various
	physical media.

	See also {MAC Address}, {Ethernet}, {token ring}.

	(29 Jan 1996)

Media Access Unit

	<networking> (MAU or Multistation Access Unit, MSAU) In a
	{Token Ring} network, a device to attach multiple network
	stations in a star topology, internally wired to connect the
	stations into a logical ring.  The MAU contains relays to
	short out nonoperating stations.  Multiple MAUs can be
	connected into a larger ring through their Ring In/Ring Out
	connectors.

	(27 May 1997)

Media Converter

	<networking> A component used in {Ethernet}, although it is
	not part of the {IEEE} standard.  The IEEE standard states
	that all {segments} must be linked with {repeaters}.  Media
	converters were developed as a simpler, cheaper alternative to
	repeaters.  However, in the 1990s the cost difference between
	the two is negligible.

	(09 Dec 1996)

meeces

	<jargon> /mees'*z/ ({TMRC}) Occasional furry visitors who are
	not {urchin}s; that is, mice.  This may no longer be in live
	use.  According to {ESR} it derives from the refrain of the
	early-1960s cartoon character Mr. Jinx: "I hate meeces to
	*pieces*!"

	(09 Dec 1996)

Meet

	{greatest lower bound}

meg

	{megabyte}

mega-

	{prefix}

megabits per second

	<unit> (mbps) Millions of {bit}s per second.  A unit of
	information transfer rate.

	E.g. {Ethernet} can carry 10 mbps.

	(06 Oct 1995)

megabyte

	<unit> ({MB}, colloquially "meg") 2^20 = 1,048,576 {bytes} =
	1024 {kilobytes}.  1024 megabytes are one {gigabyte}.

	The text of a six hundred page paperback book would require
	about a megabyte of {ASCII} storage.

	See {prefix}.

	(26 Mar 1997)

megaflop

	<unit> Etimologically incorrect singular of "{megaflops}".

	(28 Feb 1995)

megaflops

	One million {floating-point} operations per second.  A common
	unit of measurement of performance of computers used for
	numerical work.

MegaHertz

	(MHz) Millions of cycles per second.  The unit of frequency
	used to measure the {clock rate} of modern digital logic,
	including {microprocessor}s.

	(27 Oct 1994)

megapenny

	/meg'*-pen"ee/ $10,000 (1 cent * 10^6).  Used semi-humorously
	as a unit in comparing computer cost and performance figures.

MEGO

	/me"goh/ or /mee'goh/ ["My Eyes Glaze Over", often "Mine Eyes
	Glazeth (sic) Over", attributed to the futurologist Herman
	Kahn] Also "MEGO factor".  1.  A {handwave} intended to
	confuse the listener and hopefully induce agreement because
	the listener does not want to admit to not understanding what
	is going on.  MEGO is usually directed at senior management by
	engineers and contains a high proportion of {TLA}s.
	2. excl. An appropriate response to MEGO tactics.  3. Among
	non-hackers, often refers not to behaviour that causes the
	eyes to glaze, but to the eye-glazing reaction itself, which
	may be triggered by the mere threat of technical detail as
	effectively as by an actual excess of it.

Mei

	Mei is a set of class libraries for Objectworks Smalltalk
	Release 4.1.  it includes: 1.  Grapher Library (useful for
	drawing diagrams); 2. Meta Grapher Library (grapher to develop
	grapher); 3. Drawing tools and painting tools (structured
	diagram editors and drawing editors); 4. GUI editor (graphical
	user interface builder); 5. Lisp interpreter; 6. Prolog
	interpreter; 7. Pluggable gauges; 8. Extended browser;
	(package, history, recover, etc.)

	Version 0.50.  Interpreters (Lisp, Prolog), examples,
	libraries, tools, editor, browser.

	Atsushi Aoki <aoki@sra.co.jp> and others

	{UK (ftp://mushroom.cs.man.ac.uk/pub/goodies/misc/Mei.tar.Z)},
	{N. America (ftp://st.cs.uiuc.edu/pub/MANCHESTER/misc/Mei)},
	{Japan
	(ftp://srawgw.sra.co.jp/pub/lang/smalltalk/mei/Mei0.50.tar.Z)}.

	restriction:	GNU {General Public License}
	requires:	Objectworks Smalltalk Release 4.1
	E-mail: Watanabe Katsuhiro <katsu@sran14.sra.co.jp>

	(20 Jan 1993).

Mel

	{The Story of Mel}

MELD

	A {concurrent}, {object-oriented}, {dataflow}, {modular} and
	{fault-tolerant} language!  MELD is comparable to {SR}.

	["MELDing Multiple Granularities of Parallelism", G. Kaiser et
	al, ECOOP '89, pp. 147-166, Cambridge U Press 1989].

	(11 Nov 1994)

MELDC

	A {reflective} {object-oriented} {concurrent} programming
	language developed in 1990 by the MELD Project of the
	Programming Systems Laboratory at {Columbia University}.
	MELDC is a redesign of {MELD} based on {C}.

	The core of the architecture is a {micro-kernel} (the MELDC
	kernel), which encapsulates a minimum set of entities that
	cannot be modelled as objects.  All components outside of the
	kernel are implemented as objects in MELDC itself and are
	modularised in the MELDC libraries.  MELDC is reflective in
	three dimensions: structural, computational and architectural.
	The structural reflection indicates that classes and
	meta-classes are objects, which are written in MELDC.  The
	computational reflection means that object behaviours can be
	computed and extended at run-time.  The architectural
	reflection indicates that new features/properties
	(e.g. persistency and remoteness) can be constructed in MELDC.

	Version 2.0 runs on {Sun-4}/{SunOS} 4.1 and {DECstation} and
	{MIPS}/{Ultrix} 4.2.

	E-mail: Gail Kaiser <meldc@cs.columbia.edu>.

	MELDC is available under licence from <MeldC@cs.columbia.edu>
	and may not be used for commercial purposes.

	(15 Dec 1992)

Melinda

	["Melinda: Linda with Multiple Tuple Spaces", S. Hupfer,
	<hupfer-susanne@yale.edu> YALEU/DCS/RR-766, Yale U Feb 1990].

	(11 Nov 1994)

Mellor

	See {Schlaer-Mellor}.

meltdown

	See {network meltdown}.

MEM

	<hardware> {Microelectromechanical system}.

member function

	A {method} in {C++}.

membership function

	See {fuzzy subset}.

meme

	<philosophy> /meem/ [By analogy with "gene"] Richard Dawkins's
	term for an idea considered as a {replicator}, especially with
	the connotation that memes parasitise people into propagating
	them much as viruses do.

	Memes can be considered the unit of cultural evolution.  Ideas
	can evolve in a way analogous to biological evolution.  Some
	ideas survive better than others; ideas can mutate through,
	for example, misunderstandings; and two ideas can recombine to
	produce a new idea involving elements of each parent idea.

	The term is used especially in the phrase "meme complex"
	denoting a group of mutually supporting memes that form an
	organised belief system, such as a religion.  However, "meme"
	is often misused to mean "meme complex".

	Use of the term connotes acceptance of the idea that in humans
	(and presumably other tool- and language-using sophonts)
	cultural evolution by selection of adaptive ideas has become
	more important than biological evolution by selection of
	hereditary traits.  Hackers find this idea congenial for
	tolerably obvious reasons.

	See also {memetic algorithm}.

	(11 Aug 1996)

meme plague

	<philosophy> The spread of a successful but pernicious {meme},
	especially one that parasitises the victims into giving their
	all to propagate it.  Astrology, BASIC, and the other guy's
	religion are often considered to be examples.  This usage is
	given point by the historical fact that "joiner" ideologies
	like Naziism or various forms of millennarian Christianity
	have exhibited plague-like cycles of exponential growth
	followed by collapses to small reservoir populations.

	(11 Aug 1996)

memetic algorithm

	<algorithm> A {genetic algorithm} or {evolutionary algorithm}
	which includes a non-genentic local search to improve
	genotypes.  The term comes from the Richard Dawkin's term
	"{meme}".

	One big difference between memes and genes is that memes are
	processed and possibly improved by the people that hold them -
	something that cannot happen to genes.  It is this advantage
	that the memetic algorithm has over simple genetic or
	evolutionary algorithms.

	These algorithms are useful in solving complex problems, such
	as the "{Travelling Salesman Problem}," which involves finding
	the shortest path through a large number of nodes, or in
	creating {artificial life} to test evolutionary theories.

	Memetic algorithms are one kind of {metaheuristic}.

	{UNLP memetic algorithms home page
	(http://www.ing.unlp.edu.ar/cetad/mos/memetic_home.html)}.

	(07 July 1997)

memetics

	/me-met'iks/ The study of {meme}s.  As of mid-1993, this is
	still an extremely informal and speculative endeavor, though
	the first steps towards at least statistical rigor have been
	made by H. Keith Henson and others.  Memetics is a popular
	topic for speculation among hackers, who like to see
	themselves as the architects of the new information ecologies
	in which memes live and replicate.

memo function

	A memo function remembers which arguments it has been called
	with and the result returned and, if called with the same
	arguments again, it will simply return the result from its
	memory rather than recalculating it.

	This same principle is found at the hardware level in computer
	architectures which use a {cache} to store recently accessed
	memory locations.

	A {Common Lisp} package by Marty Hall
	<hall@aplcenmp.apl.jhu.edu> which supports memoisation is
	available by {(ftp://archive.cs.umbc.edu/pub/Memoization)}.

	(02 Nov 1994)

memoisation

	Turning a function into a {memo function}.

memoization

	{memoisation}

memory

	<storage> These days, usually used synonymously with {Random
	Access Memory} or {Read-Only Memory}, but in the general sense
	it can be any device that can hold {data} in
	{machine-readable} format.

	(25 May 1996)

memory farts

	<jargon, humour> The flatulent sounds that some {MS-DOS} box
	{BIOS}es (most notably {AMI}'s) make when checking memory on
	bootup.

	(02 Nov 1994)

memory leak

	An error in a program's {dynamic store} allocation logic that
	causes it to fail to reclaim discarded memory, leading to
	eventual collapse due to memory exhaustion.  Also (especially
	at CMU) called {core leak}.  These problems were severe on
	older machines with small, fixed-size address spaces, and
	special "leak detection" tools were commonly written to root
	them out.

	With the advent of {virtual memory}, it is unfortunately
	easier to be sloppy about wasting a bit of memory (although
	when you run out of {virtual memory}, it means you've got a
	*real* leak!).

	See {aliasing bug}, {fandango on core}, {smash the stack},
	{precedence lossage}, {overrun screw}, {leaky heap}, {leak}.

	(17 Feb 1995)

memory management

	A collection of techniques for providing sufficient memory to
	one or more processes in a computer system, especially when
	the system does not have enough memory to satisfy all
	processes' requirements simultaneously.  Techniques include
	{swapping}, {paging} and {virtual memory}.  Memory management
	is usually performed mostly by a {hardware} {memory management
	unit}.

	(23 Jan 1995)

memory management unit

	(MMU) A hardware device used to support {virtual memory} and
	{paging} by translating {virtual address}es into {physical
	address}es.

	The virtual {address space} (the range of addresses used by
	the processor) is divided into {page}s, whose size is 2^N,
	usually a few kilobytes.  The bottom N bits of the address
	(the offset within a page) are left unchanged.  The upper
	address bits are the (virtual) {page number}.  The MMU
	contains a {page table} which is indexed (possibly
	associatively) by the page number.  Each page table entry
	(PTE) gives the physical page number corresponding to the
	virtual one.  This is combined with the page offset to give
	the complete physical address.

	A PTE may also include information about whether the page has
	been written to, when it was last used (for a {least recently
	used} {replacement algorithm}), what kind of processes ({user
	mode}, {supervisor mode}) may read and write it, and whether
	it should be {cache}d.

	It is possible that no physical memory ({RAM}) has been
	allocated to a given virtual page, in which case the MMU will
	signal a "{page fault}" to the {CPU}.  The {operating system}
	will then try to find a spare page of RAM and set up a new PTE
	to map it to the requested virtual address.  If no RAM is free
	it may be necessary to choose an existing page, using some
	{replacement algorithm}, and save it to disk (this is known as
	"{paging}").  There may also be a shortage of PTEs, in which
	case the OS will have to free one for the new mapping.

	In a {multitasking} system all processes compete for the use
	of memory and of the MMU.  Some {memory management}
	architectures allow each process to have its own area or
	configuration of the page table, with a mechanism to switch
	between different mappings on a process switch.  This means
	that all processes can have the same virtual address space
	rather than require load-time relocation.

	An MMU also solves the problem of {fragmentation} of memory.
	After blocks of memory have been allocated and freed, the free
	memory may become fragmented (discontinuous) so that the
	largest contiguous block of free memory may be much smaller
	than the total amount.  With {virtual memory}, a contiguous
	range of virtual addresses can be mapped to several
	non-contiguous blocks of physical memory.

	(17 Feb 1995)

memory mapped I/O

	<architecture> The use of the same instructions and {bus} to
	communicate with both {main memory} and {input/output}
	devices.  This is in contrast to processors that have a
	separate I/O {bus} and special instructions to access it.

	The I/O devices are addressed at certain reserved address
	ranges on the main memory bus.  These addresses cannot
	therefore be used for {RAM}.  {Motorola} and {Mostec}
	architectures, among others, use memory mapped I/O.

	{Video cards} and other cards with on-board memory might be
	accessed in this way though the term applies not just to
	devices containing memory but to any device connected to the
	memory bus.  Accessing the devices usually consists of reading
	and writing certain built-in {registers} though sometimes the
	mere presence of a particular address can trigger the device.

	(14 Apr 1997)

memory protection

	<architecture> A system to prevent one {process} corrupting
	the memory (or other resources) of any other, including the
	{operating system}.  Memory protection usually relies on a
	combination of hardware (a {memory management unit}) and
	software to allocate memory to processes and handle
	{exceptions}.

	The effectiveness of memory protection varies from one
	operating system to another.  In most versions of {Unix} it is
	almost impossible to corrupt another process' memory, except
	in some archaic implementations and {Lunix} (not {Linux}!).
	Under {Microsoft Windows} (version?  hardware?) any {16 bit
	application}(?) can circumvent the memory protection, often
	leading to one or more {GPF}s.  Currently (April 1996) neither
	{Microsoft Windows} 3.1, {Windows 95}, nor {Mac OS} offer
	memory protection.  {Windows NT} has it, and Mac OS System 8
	will offer a form of memory protection.

	[MS DOS {EMM386} relevant?]

	(10 Sep 1996)

memory smash

	<jargon> A {Xerox PARC} term for writing to the location
	addressed by a {dangling pointer}.

	(02 Nov 1994)

Mentat

	An {object-oriented} distributed language from the {University
	of Virginia}.  Mentat is an extension of {C++} and is portable
	to a variety of {MIMD} architectures.

	It is available now for {Sun 3}, {Sun 4}, {iPSC}/2 and soon
	{Mach}, {iPSC860}, {RS/6000} and {Iris}.

	E-mail: <mentat@uvacs.cs.virginia.edu>.

	["Mentat: An Object- Oriented Macro Data Flow System",
	A. Grimshaw <grimshaw@cs.virginia.edu> et al, SIGPLAN Notices
	22(12):35-47 (Dec 1987) (OOPSLA '87)].

	(02 Nov 1994)

MENTOR

	CAI language.  "Computer Systems for Teaching Complex
	Concepts", Report 1742, BBN, Mar 1969.

menu

	A list from which the user may select an operation to be
	performed.  This is often done with a mouse or other pointing
	device under a {WIMP} or {Graphical User Interface} but may
	also be controlled from the keyboard.  Menus are very
	convenient for beginners because they show what commands are
	available and make experimentating with a new program easy,
	often reducing the need for user documentation.  Experienced
	users however, usually prefer keyboard commands, especially
	for frequently user operations, because they are faster to
	use.  In situations such as text entry where the keyboard
	must be used anyway, having to move your hand to the mouse to
	invoke a menu operation is slow.

	See also {menuitis}.

	(02 Dec 1994)

menu bar

	A permanently displayed {menu} spread horizontally across the
	top of the screen or window.  When the mouse is pressed over
	an item on the menu bar, a {pull-down menu} appears.

menuitis

	/men"yoo-i:"tis/ A notional disease suffered by software with
	an obsessively simple-minded {menu} interface and no escape.
	Hackers find this intensely irritating and much prefer the
	flexibility of command-line or language-style interfaces,
	especially those customisable via {macro}s or a
	special-purpose language in which one can encode useful hacks.

	See {user-obsequious}, {drool-proof paper}, {WIMP}, {for the
	rest of us}.

	(02 Dec 1994)

MENYMA/S

	["A Message Oriented Language for System Applications",
	A. Koch et al, Proc 3rd Intl Conf Distrib Comp Sys, IEEE 1982,
	pp. 824-832].

	(02 Dec 1994)

Mercury Autocode

	{Autocode} for the {Ferranti} {Mercury} machine.

mercury delay line

	An archaic {first-in first-out} fixed time period data storage
	device using acoustic transducers to transmit data as waves in
	a trough of mercury.

	The {Whirlwind} and {ENIAC} computers used mercury delay lines
	for storage.

	(24 Jan 1995)

MERISE

	Methode d'Etude et de Realisation Informatique pour les
	Systemes d'Enteprise.

	A software engineering method popular in France; many {IPSE}s
	are based on it.

	(24 Jan 1995)

Merlin

	{OS/2}

MEROON

	<language> An {object-oriented} system built on {Scheme}.

	[What kind of system?]

	{(ftp://nexus.yorku.ca/pub/scheme/new/)}.

	(05 May 1997)

Mesa

	Xerox PARC, 1977.  System and application programming for
	proprietary hardware: Alto, Dolphin, Dorado and Dandelion.
	Pascal-like syntax, ALGOL68-like semantics.  An early version
	was weakly typed.  Mesa's modules with separately compilable
	definition and implementation parts directly led to Wirth's
	design for Modula.  Threads, coroutines (fork/join),
	exceptions, and monitors.  Type checking may be disabled.
	Mesa was used internally by Xerox to develop ViewPoint, the
	Xerox Star, MDE, and the controller of a high-end copier.  It
	was released to a few universitites in 1985.  Succeeded by
	Cedar.

	["Mesa Language Manual", J.G.  Mitchell et al, Xerox PARC,
	CSL-79-3 (Apr 1979)].

	["Early Experience with Mesa", Geschke et al, CACM
	20(8):540-552 (Aug 1977)].

mesh

	<character> The {INTERCAL} name for {hash}.

MESI protocol

	<processor> Modified, Exclusive, Shared, Invalid.

	A {cache consistency} {protocol} where each {cache line} is
	marked with one of the four states.

	The MESI protocol is used by the {Pentium} processor.

	(05 May 1995)

message

	In {object-oriented programming} sending a message to an
	{object} (to invoke a {method}) is equivalent to calling a
	{procedure} in traditional programming languages, except that
	the actual code executed may only be selected at run-time
	depending on the {class} of the object.  Thus, in response to
	the message "drawSelf", the method code invoked would be
	different if the target object were a circle or a square.

	(16 Feb 1995)

Message Digest 5

	<messaging> The {message digest function} defined in {RFC
	1321}.

	(04 Aug 1996)

message digest function

	{one-way hash function}

Message Handling System

	<messaging, standard> (MHS) The {standard} defined by {ITU-T}
	as {X.400} and by {ISO} as {Message-Oriented Text Interchange
	Standard} (MOTIS).  MHS is the X.400 family of services and
	{protocol}s that provides the functions for global {electronic
	mail} transfer among local mail systems and {MTA}s.

	It is used by {CompuServe}, among others.

	(25 Sep 1996)

message passing

	One of the two techniques for communicating between parallel
	processes (the other being {shared memory}).

	A common use of message passing is for communication in a
	{parallel computer}.  A process running on one processor may
	send a message to a process running on the same processor or
	another.  The actual transmission of the message is usually
	handled by the {run-time support} of the language in which the
	processes are written, or by the {operating system}.

	Message passing scales better than {shared memory}, which is
	generally used in computers with relatively few processors.
	This is because the total communications {bandwidth} usually
	increases with the number of processors.

	A message passing system provides primitives for sending and
	receiving messages.  These primitives may by either
	{synchronous} or {asynchronous} or both.  A synchronous send
	will not complete (will not allow the sender to proceed) until
	the receiving process has received the message.  This allows
	the sender to know whether the message was received
	successfully or not (like when you speak to someone on the
	telephone).  An asynchronous send simply queues the message
	for transmission without waiting for it to be received (like
	posting a letter).  A synchronous receive primitive will wait
	until there is a message to read whereas an asynchronous
	receive will return immediately, either with a message or to
	say that no message has arrived.

	Messages may be sent to a named process or to a named
	{mailbox} which may be readable by one or many processes.

	Transmission involves determining the location of the
	recipient and then choosing a route to reach that location.
	The message may be transmitted in one go or may be split into
	{packet}s which are transmitted independently (e.g. using
	{wormhole routing}) and reassembled at the receiver.  The
	message passing system must ensure that sufficient memory is
	available to buffer the message at its destination and at
	intermediate nodes.

	Messages may be typed or untyped at the programming language
	level.  They may have a priority, allowing the receiver to
	read the highest priority messages first.

	Some message passing computers are the {MIT J-Machine
	(http://www.ai.mit.edu/projects/cva/cva_j_machine.html)}, the
	{Illinois Concert Project
	(http://www-csag.cs.uiuc.edu/projects/concert.html)} and
	{transputer}-based systems.

	{Object-oriented programming} uses message passing between
	{object}s as a metaphor for procedure call.

	(11 Nov 1994)

Message Passing Interface

	<communications, protocol> A {de facto standard} for
	communication among the {nodes} running a {parallel program}
	on a {distributed memory system}.  MPI is a {library} of
	{routines} that can be called from {Fortran} and{ C} programs.
	MPI's advantage over older message passing libraries is that
	it is both {portable} (because MPI has been implemented for
	almost every distributed memory {architecture}) and fast
	(because each implementation is {optimised} for the {hardware}
	it runs on).

	[Address?]

	(09 Jun 1997)

message switching

	Is this the same as {packet switching}?

	(01 Mar 1997)

Message Transfer Agent

	<messaging> (MTA) The program responsible for delivering
	{e-mail} messages.  Upon receiving a message from a {Mail User
	Agent} or another MTA it stores it temporarily locally and
	analyses the recipients and either delivers it (local
	addressee) or forwards it to another MTA ({routing}).  In
	either case it may edit and/or add to the message {headers}.

	The most widely used MTA for {Unix} is {sendmail}.

	[Other OSes?]

	(28 Feb 1997)

Messaging Application Programming Interface

	<messaging> (MAPI) A messaging architecture and a {client}
	interface component for applications such as {electronic
	mail}, scheduling, calendaring and document management.  As a
	messaging architecture, MAPI provides a consistent interface
	for multiple {application programs} to interact with multiple
	messaging systems across a variety of {hardware} {platforms}.

	MAPI provides better performance and control than {Simple
	MAPI}, {Common Messaging Calls} (CMC) or the {Active Messaging
	Library}.  It has a comprehensive, open, dual-purpose
	interface, integrated with {Microsoft Windows}.  MAPI can be
	used by all levels and types of client application and
	"service providers" - driver-like components that provide a
	MAPI interface to a specific messaging system.  For example, a
	{word processor} can send documents and a {workgroup}
	application can share and store different types of data using
	MAPI.

	MAPI separates the programming interfaces used by the client
	applications and the service providers.  Every component works
	with a common, {Microsoft Windows}-based user interface.  For
	example, a single messaging client application can be used to
	receive messages from {fax}, a {bulletin board} system, a
	host-based messaging system and a {LAN}-based system.
	Messages from all of these systems can be delivered to a
	single "universal Inbox".

	MAPI is aimed at the powerful, new market of workgroup
	applications that communicate with such different messaging
	systems as fax, {DEC} {All-In-1}, {voice mail} and public
	communications services such as {AT&T} Easylink Services,
	{CompuServe} and {MCI} MAIL.  Because workgroup applications
	demand more of their messaging systems, MAPI offers much more
	than basic messaging in the programming interface and supports
	more than local area network (LAN)-based messaging systems.
	Applications can, for example, format text for a single
	message with a variety of fonts and present to their users a
	customised view of messages that have been filtered, sorted or
	preprocessed.

	MAPI is built into {Windows 95} and {Windows NT} and can be
	used by 16-bit and 32-bit Windows applications.  The
	programming interface and subsystem contained in the MAPI
	{DLL} provide objects which conform to the {Component Object
	Model}.  MAPI includes standard messaging client applications
	that demonstrate different levels of messaging support.

	MAPI provides cross platform support through such industry
	standards as {SMTP}, {X.400} and Common Messaging Calls.  MAPI
	is the messaging component of {Windows Open Services
	Architecture} (WOSA).

	[Correct expansion?]

	(03 Dec 1997)

Messaging Applications Programming Interface

	{Messaging Application Programming Interface}

mess-dos

	/mes-dos/ (Or MS-DOG, Messy-DOS, mess-dross, mess-loss,
	mush-dos) Derisory term for {MS-DOS}.  Often followed by the
	ritual banishing "Just say No!"

	Most hackers (even many {MS-DOS} hackers) loathe {MS-DOS} for
	its single-tasking nature, its limits on application size, its
	nasty primitive interface, and its ties to {IBM}ness (see
	{fear and loathing}).

	In Ireland and the UK it is sometimes called "Domestos" after
	a brand of toilet cleanser.

	(16 Nov 1994)

META

	The {assembly language} for the {CYBER 200}, developed at
	{CDC} ca 1977.

	[CDC Pub 60256020].

	(16 Nov 1994)

meta

	/me't*/ or /may't*/ or (Commonwealth) /mee't*/ [Analytic
	philosophy] One level of description up.  A {metasyntactic
	variable} (e.g. {FOO}) is a variable in notation used to
	describe syntax, and {metalanguage} is a language used to
	describe language (e.g. {BNF}).  This is difficult to explain
	briefly, but much hacker humour turns on deliberate confusion
	between meta-levels.

META 5

	Early syntax-directed {compiler-compiler}, used for
	translating one {high-level language} to another.

	Versions: META II, META-3.

	["META 5: A Tool to Manipulate Strings of Data",
	D.K. Oppenheim et al, Proc 21st Natl Conf, ACM 1966].

	[Sammet 1969, p. 638].

	(23 Jan 1995)

meta bit

	The top bit of an 8-bit character, which is on in character
	values 128--255.  Also called {high bit}, {alt bit}, or
	{hobbit}.  Some terminals and consoles (see {space-cadet
	keyboard}) have a META shift key.  Others (including,
	*mirabile dictu*, keyboards on IBM PC-class machines) have an
	ALT key.  See also {bucky bits}.

	Historical note: although in modern usage shaped by a universe
	of 8-bit bytes the meta bit is invariably {hex} 80 ({octal}
	0200), things were different on earlier machines with 36 bit
	words and 9-bit bytes.  The MIT and Stanford keyboards (see
	{space-cadet keyboard}) generated hex 100 (octal 400) from
	their meta keys.

MetaCard

	A commercial human interface and {hypertext} system for {Unix}
	and the {X Window System}, similar to {Hypercard}.

	(17 Nov 1994)

Meta-CASE tool

	A term sometimes used for software packages (like TBK or VSF)
	which allow users to develop or customise their own CASE
	tools.

Metaclass

	The class of a class.  A metaclass is a class whose instances
	are themselves classes.

Meta-Crystal

	A language for transformations of Crystal programs.
	Implemented in T.  "Meta-Crystal- A Metalanguage for
	Parallel-Program Optimisation", J.A. Yang et al, TR
	YALEU/DCS/TR-786, Yale Apr 1990.  (See Crystal).

Metadata

	<product> (Note: One unhyphenated word with initial capital;
	contrast {meta data}) A word coined by Jack E. Myers to
	represent current and future lines of products implementing
	the concepts of his {MetaModel}, and also to designate his
	company {Metadata Information Partners} that would develop and
	market those products.

	A data and publication search performed when Myers coined the
	term, early in the summer of 1969, did not discover any use
	either of the word "metadata" or "meta data".  Myers used the
	term in a 1973 product brochure and it is an Incontestable
	registered U.S. Trademark.

	(06 Apr 1997)

meta-data

	<data> (Or "meta data") Data about {data}.  In {data
	processing}, meta-data is definitional data that provides
	information about or documentation of other data managed
	within an application or environment.  For example, meta data
	would document data about {data elements} or {attributes},
	(name, size, data type, etc) and data about {records} or {data
	structures} (length, fields, columns, etc) and data about data
	(where it is located, how it is associated, ownership, etc.).
	Meta data may include descriptive information about the
	context, quality and condition, or characteristics of the
	data.

	Not to be confused with {Metadata}.

	(06 Apr 1997)

Metadata Information Partners

	<company> A company founded by Jack Myers.

	{Home (http://www.meta-data.com)}.

	E-mail: <metadata@meta-data.com>.

	Address: 4647 Long Beach Blv, #C4, Long Beach CA 90805, USA.

	(24 Sep 1995)

metafile

	<graphics, file format> 1. An image file format for transport
	between different machines, often as a {device independent
	bitmap}.

	2. A functional specification for encoding computer graphics
	for later display on some suitable device.

	(20 Sep 1996)

METAFONT

	A system for the design of raster-based alphabets by {Donald
	Knuth}.  A companion to {TeX}.

	["The METAFONT Book," Donald Knuth, A-W 1986.  Version 2.0,
	March 1990].

	(04 Nov 1994)

metaheuristic

	<algorithm, complexity, computability> A top-level general
	strategy which guides other {heuristics} to search for
	feasible solutions in domains where the task is hard.

	Metaheuristics have been most generally applied to problems
	classified as {NP-Hard} or {NP-Complete} by the theory of
	{computational complexity}.  However, metaheuristics would
	also be applied to other {combinatorial} {optimisation}
	problems for which it is known that a {polynomial-time}
	solution exists but is not practical.

	Examples of metaheuristics are {Tabu Search}, {simulated
	annealing}, {genetic algorithms} and {memetic algorithms}.

	(30 Oct 1997)

Meta-II

	An early {compiler-compiler}.

	["Meta-II: a Syntax Oriented Compiler Writing Language",
	V. Schorre, Proc 19th ACM Natl Conf 1964].

	(23 Jan 1995)

Meta-IV

	See VDM-SL.

METAL

	1. Mega-Extensive Telecommunications Applications Language.
	BBS language for PRODOS 8 on Apple II.

	2. The syntax-definition formalism of the Mentor system.
	Metal specifications are compiled to specifications for a
	scanner/parser generator such as Lex/Yacc.  "Metal: A
	Formalism to Specify Formalisms", G.  Kahn et al, Sci Comp
	Prog 3:151-188 (1983).

metalanguage

	1. [theorem proving] A language in which proofs are
	manipulated and tactics are programmed, as opposed to the
	logic itself (the "{object language}").  The first {ML} was
	the metalanguage for the Edinburgh {LCF} proof assistant.

	2. [logic] A language in which to discuss the truth of
	statements in another language.

Metal Oxide Semiconductor

	<electronics> (MOS) The three materials used to form a {gate}
	in the most common kind of {Field Effect Transistor} - a
	{MOSFET}.

	[Other MOS devices?]

	(27 May 1996)

Metal Oxide Semiconductor Field Effect Transistor

	<electronics> (MOSFET) A {Field Effect Transistor} in which
	the conducting channel is insulated from the gate terminal by
	a layer of oxide.  Therefore it does not conduct even if a
	reverse voltage is applied to the gate.

	(24 Feb 1997)

metaphone

	<algorithm, text> An {algorithm} for encoding a word so that
	similar sounding words encode the same.  It's similar to
	{soundex} in purpose, but as it knows the basic rules of
	English pronunciation it's more accurate.  The higher accuracy
	doesn't come free, though, metaphone requires more
	computational power as well as more storage capacity, but
	neither of these requirements are usually prohibitive.  It is
	in the public domain so it can be freely implemented.

	Metaphone was developed by Lawrence Philips
	<lphilips@hamsoft.com>.  It is described in ["Practical
	Algorithms for Programmers", Binstock & Rex, Addison Wesley,
	1995].

	(04 Jul 1997)

metaprogram

	A program which modifies or generates other programs.  A
	{compiler} is an example of a metaprogram: it takes a program
	as input and produces another (compiled) one as output.

	(24 Oct 1994)

metasyntactic variable

	A name used in examples and understood to stand for whatever
	thing is under discussion, or any random member of a class of
	things under discussion.  The word {foo} is the {canonical}
	example.  To avoid confusion, hackers never (well, hardly
	ever) use "foo" or other words like it as permanent names for
	anything.  In filenames, a common convention is that any
	filename beginning with a metasyntactic-variable name is a
	{scratch} file that may be deleted at any time.

	To some extent, the list of one's preferred metasyntactic
	variables is a cultural signature.  They occur both in series
	(used for related groups of variables or objects) and as
	singletons.  Here are a few common signatures:

	{foo}, {bar}, {baz}, {quux}, quuux, quuuux...: MIT/Stanford
	usage, now found everywhere.  At MIT (but not at Stanford),
	{baz} dropped out of use for a while in the 1970s and '80s.  A
	common recent mutation of this sequence inserts {qux} before
	{quux}.

	bazola, ztesch: Stanford (from mid-'70s on).

	{foo}, {bar}, thud, grunt: This series was popular at CMU.
	Other CMU-associated variables include ack, barf, foo, and
	{gorp}.

	{foo}, {bar}, fum: This series is reported to be common at
	{Xerox PARC}.

	{fred}, {barney}: See the entry for {fred}.  These tend to be
	Britishisms.

	{toto}, titi, tata, tutu: Standard series of metasyntactic
	variables among francophones.

	{corge}, {grault}, {flarp}: Popular at Rutgers University and
	among {GOSMACS} hackers.

	zxc, spqr, {wombat}: Cambridge University (England).

	shme: Berkeley, GeoWorks, Ingres.  Pronounced /shme/ with a
	short /e/.

	{foo}, {bar}, zot: {Helsinki University of Technology},
	Finland.

	blarg, wibble: New Zealand

	Of all these, only "foo" and "bar" are universal (and {baz}
	nearly so).  The compounds {foobar} and "foobaz" also enjoy
	very wide currency.

	Some jargon terms are also used as metasyntactic names; {barf}
	and {mumble}, for example.  See also {Commonwealth Hackish}
	for discussion of numerous metasyntactic variables found in
	Great Britain and the Commonwealth.

	(13 Nov 1995)

Meta-Vlisp

	E. St.James <esj@litp.ibp.fr> France.  A Lisp dialect with
	many innovations.

Met-English

	A {FORTRAN}-like language designed at {Metropolitan Life} in
	the early 1960s.  It had support for variable-length bit
	fields.  Most MetLife {DP} in the 1960s and 1970s was in
	Met-English.  It was originally developed for {Honeywell}
	machines, but many programs still run under {IBM} {MVS} via a
	Honeywell {emulator}.

	(15 Feb 1995)

METEOR

	A version of COMIT with Lisp-like syntax, written in MIT Lisp
	1.5 for the IBM 7090.  "METEOR - A List Interpreter for String
	Transformation", D.G. Bobrow in The Programming Language LISP
	and its Interpretation, E.D.  and D.G. Bobrow eds, 1964.

meter

	<spelling> US spelling of "{metre}".

	(07 Feb 1998)

method

	The name given in {Smalltalk} and other {object-oriented
	language}s to a procedure or routine associated with one or
	more {class}es.  An {object} of a certain class knows how to
	perform actions, e.g. printing itself or creating a new
	instance of itself, rather than the function (e.g. printing)
	knowing how to handle different types of object.

	Different classes may define methods with the same name
	(i.e. methods may be {polymorphic}).  The term "method" is used
	both for a named operation, e.g. "PRINT" and also for the code
	which a specific class provides to perform that operation.

	In {Smalltalk}, a method is defined by giving its name,
	documentation, temporary local variables and a sequence of
	expressions separated by "."s.

methodology

	1. <programming> An organised, documented set of procedures
	and guidelines for one or more phases of the {software life
	cycle}, such as analysis or design.  Many methodologies
	include a diagramming notation for documenting the results of
	the procedure; a step-by-step "cookbook" approach for carrying
	out the procedure; and an objective (ideally quantified) set
	of criteria for determining whether the results of the
	procedure are of acceptable quality.

	An example is The {Yourdon methodology}.

	2. A pretentious way of saying "method".

	(10 Apr 1995)

Methods

	<language> A line-oriented {Smalltalk} for {PC}'s, produced by
	Digitalk ca 1985.  Methods was the predecessor of
	{Smalltalk/V}.

	(16 Apr 1995)

me too

	A {functional language} for executable specifications
	developed by Peter Henderson in 1984.  It is like {LispKit
	Lisp}, but with sets, maps and sequences to describe the
	specification.

	["Functional Programming, Formal Specification and Rapid
	Prototyping", IEEE Trans Soft Eng, SE-12(2):241-250 (Feb
	1986)].

	(21 Oct 1994)

metre

	<unit> (US "meter") The fundamental {SI} unit of length.

	From 1889 to 1960, the metre was defined to be the distance
	between two scratches in a platinum-iridium bar kept in the
	vault beside the Standard Kilogram at the International Bureau
	of Weights and Measures near Paris.

	This replaced an earlier definition as 10^-7 times the
	distance between the North Pole and the Equator along a
	meridian through Paris; unfortunately, this had been based on
	an inexact value of the circumference of the Earth.

	From 1960 to 1984 it was defined to be 1650763.73 wavelengths
	of the orange-red line of krypton-86 propagating in a vacuum.

	It is now defined as the length of the path traveled by light
	in a vacuum in the time interval of 1/299,792,458 of a second.

	(07 Feb 1998)

metric

	{software metric}

Metropolitan Area Network

	(MAN) A data network intended to serve an area the size of a
	large city.  Such networks are being implemented by innovative
	techniques, such as running {optical fibre} through subway
	tunnels.  A popular example of a MAN is {SMDS}.

	See also {Local Area Network}, {Wide Area Network}.

	(22 Nov 1994)

M-expression LISP

	(MLISP) The original "{meta-language}" {syntax} of {Lisp},
	designed by {John McCarthy} in 1962.  MLISP was intended for
	external use in place of the parenthesised {S-expression}
	{syntax}.

	["LISP 1.5 Programmer's Manual", J. McCarthy et al, MIT Press
	1962].

	(22 Nov 1994)

MFC

	{Microsoft Foundation Class}

	(16 Nov 1995)

MFE

	{maximal free expression}

MFLOPS

	1. {megaflops}.

	2. A {benchmark} which attemps to estimate a system's
	{floating-point} "MFLOPS" rating for specific {FADD}, {FSUB},
	{FMUL} and {FDIV} instruction mixes.

	{C Source (ftp://ftp.nosc.mil/pub/aburto/flops20.c)}.
	{Results
	(http://performance.netlib.org/performance/html/flops.html)},
	{(ftp://ftp.nosc.mil/pub/aburto/flops_1.tbl)},
	{(ftp://ftp.nosc.mil/pub/aburto/flops_2.tbl)},
	{(ftp://ftp.nosc.mil/pub/aburto/flops_3.tbl)},
	{(ftp://ftp.nosc.mil/pub/aburto/flops_4.tbl)}.

	(14 Nov 1994)

MFM

	Modified FM.

	A data recording method used on magnetic hard disks.  There
	are denser formats now.

	[What does the FM stand for?  Which disks?]

	(16 Jan 1995)

MFTL

	{My Favourite Toy Language}

MHDL

	1. {MIMIC Hardware Description Language}.

	2. {Microwave Hardware Description Language}.

MHEG

	{Multimedia and Hypermedia information coding Expert Group}

MHS

	{message handling system}

MHz

	{MegaHertz}

MIB

	{Management Information Base}

MIB Variable

	A managed object that is defined in a {Management Information
	Base} (MIB).  The object is defined by a textual name and a
	corresponding object identifier, a {syntax}, an access mode, a
	status, and a description of the semantics of the managed
	object.  The MIB Variable contains pertinent management
	information that is accessible as defined by the access mode.

	(22 Mar 1995)

Mic-1

	Microprogramming language, used in {Andrew Tanenbaum}'s book.

	See {Mac-1}.

	[Structured Computer Organization, A.S. Tanenbaum, 3rd ed, P-H
	1989, Sect 4.4, 4.5].

Mic-2

	Microprogramming language, used in {Tanenbaum}'s book.

	See {Mac-1}.

	[Structured Computer Organization, A.S. Tanenbaum, 3rd ed, P-H
	1989, Sect 4.4, 4.5].


MICE

	{Multimedia Integrated Conferencing for European Researchers}

mice

	{mouse}

mickey

	The resolution unit of mouse movement.  It has been
	suggested that the "disney" will become a benchmark unit for
	animation graphics performance.

mickey mouse program

	<jargon> The North American equivalent of a "{noddy} program",
	i.e. trivial.  The term doesn't necessarily have the belittling
	connotations of mainstream slang "Oh, that's just mickey mouse
	stuff!"; sometimes trivial programs can be very useful.

	(10 Apr 1995)

MICR

	{Magnetic Ink Character Recognition}

micro

	{microprocessor}

micro-

	{prefix}

Micro Assembly Language

	<language> (MAL) A {microprogramming} language with high-level
	{syntax}, used in the reference below.

	See also {Mic-1}, {Mac-1}.

	[Structured Computer Organization, A.S. Tanenbaum, 3rd ed, P-H
	1989, Sect 4.4].

	(10 Apr 1995)

microcentury

	One CS professor used to characterise the standard length of
	his lectures as a microcentury - that is, about 52.6 minutes
	(see also {attoparsec}, {nanoacre}, and especially
	{microfortnight}).

Micro Channel Architecture

	<architecture> (MCA) {IBM}'s proprietary 32-bit {bus}, used in
	high-end {PS/2} {personal computers}.  Micro Channel is
	designed for {multiprocessing}.  It eliminates potential
	conflicts that arise when installing new peripheral devices.
	MCA is *not* compatible with either {EISA} or {XT bus
	architecture} so older cards cannot be used with it.

	As with the {ROM} {BIOS} in the first {IBM PCs}, figuring out
	the Micro Channel's secrets has been an arduous task of
	{reverse engineering} ever since the PS/2 line was announced.
	Consequently, the MCA has never become as wide spread as the
	competing {EISA} standard.

	(16 Aug 1996)

microcode

	<programming> A technique for implementing the {instruction
	set} of a processor as a sequence of microcode instructions
	("microinstructions"), each of which typically consists of a
	(large) number of bit fields and the address of the next
	microinstruction to execute.  Each bit field controls some
	specific part of the processor's operation, such as a gate
	which allows some {functional unit} to drive a value onto the
	{bus} or the operation to be performed by the {ALU}.  Several
	microinstructions will usually be required to fetch, decode
	and execute each {machine code} instruction
	("{macroinstruction}").  The microcode may also be responsible
	for {polling} for hardware {interrupt}s between each
	macroinstruction.  Writing microcode is known as
	"microprogramming".

	Microcode may be classified as "horizontally encoded" or
	"vertically encoded".  Horizontal microcode is as described
	above where there is a fairly direct correspondence between
	the bit fields in a microinstruction and the control signals
	sent to the various parts of the CPU.  Not all combinations of
	bits will be valid (e.g. two units driving the bus at once).
	Vertical microcode is closer to {machine code} because a bit
	field value may pass through some intermediate combinatory
	logic which generates the actual control signals.  This allows
	a few bits of a microinstruction to determine several control
	signals and ensure that only valid combinations of those
	signals are generated (e.g. a field may be decoded to determine
	which unit drives the bus).  The disadvantage with vertical
	encoding is that the encoding is usually fixed and takes extra
	time compared with horizontal encoding which allows any
	combination of signals to be generated and takes no time to
	decode.

	The alternative to a microcoded processor is a "hardwired" one
	where the control signals are generated directly from the bits
	of the {machine code} instruction.  This is more common in
	modern {RISC} architectures because it is faster.

	Microcode is usually stored in {ROM} chips though some
	processors (e.g. the {Orion}) use fast RAM, making them
	dynamically microprogrammable.

	(26 Nov 1996)

Microcom Networking Protocol

	(MNP) One of the most common {modem} {protocol}s with
	{compression}.  Also the name of a product.

	[Details?  On-line spec?]

	(31 Jan 1995)

microcomputer

	A computer based on a {microprocessor}.

	Contrast with {minicomputer}, {mainframe}.

	(07 Feb 1995)

microcontroller

	<processor> A {microprocessor} on a single {integrated
	circuit} intended to operate as an {embedded} system.  As well
	as a {CPU}, a microcontroller typically includes small amounts
	of {RAM} and {PROM} and timers and I/O ports.

	An example is the {Intel 8751}.

	(22 Apr 1995)

MicroDroid

	[{Usenet}] A {Microsoft} employee, especially one who posts to
	various operating-system advocacy newsgroups. MicroDroids post
	follow-ups to any messages critical of {Microsoft}'s operating
	systems, and often end up sounding like visiting Mormon
	missionaries.

microelectromechanical system

	<hardware> (MEM) A system integrating mechanical structures
	(moving parts) with microelectronics.  Applications include
	sensors, medical devices, process controls.

	See also {nanotechnology}.

	(25 Apr 1995)

Microelectronics and Computer Technology Corporation

	<body> (MCC) One of the first, and now one of the largest, US
	computer industry research and development consortia.

	Founded in late 1982 by major computer and semiconductor
	manufacturers, MCC's membership has diversified to include a
	broad range of high-profile corporations from electronics,
	computers, aerospace, semiconductors, and related industries,
	reflecting the full range of companies vital to the life cycle
	of information technology products.  Active involvement of
	small- and medium-sized firms and technology users, along with
	well-established alliances with government research and
	development agencies and leading universities, allows MCC's
	partners to maximise the benefit of scarce research and
	development resources.

	Some of the technical areas in which MCC has distinguished
	itself are:

	System Architecture and Design (optimise hardware and software
	design, provide for scalability and interoperability, allow
	rapid prototyping for improved time-to-market, and support the
	re-engineering of existing systems for open systems).

	Advanced Microelectronics Packaging and Interconnection
	(smaller, faster, more powerful, and cost-competitive).

	Hardware Systems Engineering (tools and methodologies for
	cost-efficient, up-front design of advanced electronic
	systems, including modeling and design-for-test techniques to
	improve cost, yield, quality, and time-to-market).

	Environmentally Conscious Technologies (process control and
	optimisation tools, information management and analysis
	capabilities, and non-hazardous material alternatives
	supporting cost-efficient production, waste minimisation, and
	reduced environmental impact).

	Distributed Information Technology (managing and maintaining
	physically distributed corporate information resources on
	different {platform}s, building blocks for the {national
	information infrastructure}, networking tools and services for
	integration within and between companies, and electronic
	commerce).

	Intelligent Systems (systems that "intelligently" support
	business processes and enhance performance, including
	{decision support}, {data management}, forecasting and
	prediction).

	{Home (http://www.mcc.com/)}

	Address: Austin, Texas, USA.

	(25 Apr 1995)

MicroEmacs

	(uemacs) A simple, portable text editor with versions for most
	{microcomputer}s and many other computers.  It is both
	relatively easy for the novice to use, but also very powerful
	in the hands of an expert.  MicroEmacs can be extensibly
	customised.

	Most versions use only a screen and keyboard - mouse and
	windowing facilities are not standard.

	MicroEmacs was written by Dave G Conroy, Steve Wilhite, George
	Jones, and for nearly ten years: Daniel Lawrence.

	Version: 3.11.

	{(ftp://midas.mgmt.purdue.edu/dist/)}

	[FTP?  Differences from GNU Emacs?]

	(05 Jan 1995)

microfloppies

	3.5-inch floppies, as opposed to 5.25-inch {vanilla} or
	mini-floppies and the now-obsolete 8-inch variety.  This term
	may be headed for obsolescence as 5.25-inchers pass out of
	use, only to be revived if anybody floats a sub-3-inch floppy
	standard.  See {stiffy}, {minifloppies}.

microfortnight

	One millionth of the fundamental unit of time in the
	Furlong/Firkin/Fortnight system of measurement; 1.2096 sec.
	(A furlong is 1/8th of a mile; a firkin is 1/4th of a barrel;
	the mass unit of the system is taken to be a firkin of water).

	The VMS operating system has a lot of tuning parameters that
	you can set with the SYSGEN utility, and one of these is
	TIMEPROMPTWAIT, the time the system will wait for an operator
	to set the correct date and time at boot if it realises that
	the current value is bogus.  This time is specified in
	microfortnights!

	Multiple uses of the millifortnight (about 20 minutes) and
	{nanofortnight} have also been reported.

MicroGnuEmacs

	(MG) A {Public Domain} {Emacs}-style editor modified from
	{MicroEMACS} to be more compatible with {GNU} Emacs.
	MicroGnuEmacs is essentially free, it is not associated with
	the GNU project, and does not have the GNU copyright
	restrictions.  It is a small, fast, portable editor for people
	who can't run real Emacs thing for one reason or another.  It
	has few if any of the MicroEMACS features that were
	incompatible with GNU Emacs and adds missing features that
	seemed essential.

	MG version 1a of 16 Nov 1986 is known to work with {4.2BSD}
	and {4.3BSD} {Unix}, {Ultrix-32}, {OS9/68k}, {VMS}, {Amiga},
	{System V}, {Eunice}.  It should also support {MS-DOS},
	{PC-DOS} and the {Rainbow}.

	MicroGnuEmacs is derived from, and aims to replace, v30 of
	MicroEMACS, the latest version from the original MicroEMACS
	author Dave Conroy.  The chief contributors were Mike Meyer
	<mwm@ucbopal.berkeley.edu>, Mic Kaczmarczik
	<mic@ngp.utexas.edu>, Bob Larson <blarson@usc-oberon.arpa> and
	Dave Brower <rtech!daveb@sun.com>.

	{(ftp://src.doc.ic.ac.uk/usenet/comp.sources.unix/volume8/micrognu)}

Micro Instrumentation and Telemetry Systems

	<company> (MITS) The company which made the {Altair 8800} and
	{Altair 9000} {micrcomputer} kits.  They also made
	instrumentation kits for model rockets and RC vehicles.  Ed
	Roberts owned MITS for a few years until he sold out, moved to
	Georgia, and went to med school.

	Address: Albuquerque NM, USA.

	(25 Jun 1997)

microkernel

	An approach to {operating system}s design which puts emphasis
	on small modules which implement the basic features of the
	system {kernel} and can be flexibly configured.

microLenat

	/mi:"-kroh-len"-*t/ The unit of {bogosity}, written uL; the
	consensus is that this is the largest unit practical for
	everyday use.  The microLenat, originally invented by David
	Jefferson, was promulgated as an attack against noted computer
	scientist {Doug Lenat} by a {tenured graduate student} at
	{CMU}.  Doug had failed the student on an important exam for
	giving only "AI is bogus" as his answer to the questions.  The
	slur is generally considered unmerited, but it has become a
	running gag nevertheless.  Some of Doug's friends argue that
	*of course* a microLenat is bogus, since it is only one
	millionth of a Lenat.  Others have suggested that the unit
	should be redesignated after the grad student, as the
	microReid.

Micro ML

	(uML) An {interpreter} for a subset of {SML}.  Runs on
	{MS-DOS}.  Written at the University of Umea, Sweden.

	{(ftp://ftp.cs.umu.se/pub/umlexe01.zoo)}

Micron

	{Micron Electronics, Inc.}

Micron Electronics, Inc.

	<company> An electronics company that develops, markets,
	manufactures, and supports high-performance {notebook
	computers}, {desktop} {personal computers}, {PC servers} and
	related {hardware} and {software} products.

	(10 Mar 1997)

Micronetics Standard MUMPS

	(MSM) A version of {MUMPS} for the {IBM PC RT} and {R6000}.

	[Address?]

	(10 Jan 1995)

Micro$oft

	<abuse, company> {Microsoft}.

	{Hate Mirco$oft
	(http://www.oeh.uni-linz.ac.at:8001/~chris/HATE/hate.html)}.

	(03 Mar 1995)

microPLANNER

	A subset of {PLANNER}, implemented in {Lisp} by {Gerald
	Sussman} et al at {MIT}.  Its important features were
	goal-oriented, pattern-directed procedure invocation, an
	embedded knowledge base, and automatic {backtracking}.

	microPLANNER was superseded by {Conniver}.

	["microPLANNER Reference Manual", G.J. Sussman et al, AI Memo
	203, MIT AI Lab, 1970].

	(10 Jan 1995)

microprocesor

	<spelling> Misspelling of {microprocessor}.

	(13 Feb 1997)

microprocessor

	<architecture> (Or "micro") A computer whose entire {CPU} is
	contained on one (or a small number of) {integrated circuits}.

	The important characteristics of a microprocessor are the
	widths of its internal and external {address bus} and {data
	bus} (and instruction), its {clock rate} and its {instruction
	set}.  Processors are also often classified as either {RISC}
	or {CISC}.

	The first commercial microprocessor was the {Intel 4004} which
	appeared in 1971.  This was the CPU member of a set of four
	{LSI} {integrated circuits} called the MCS-4, which was
	originally designed for use in a calculator but was marketed
	as "programmable controller for logic replacement".  The 4004
	is referred to as a 4-bit microprocessor since it processed
	only 4 bits of data at a time.  This very short word size is
	due mainly to the limitations imposed by the maximum
	integrated circuit density then achievable.

	As integrated circuit densities increased with the rapid
	development of integrated circuit manufacturing technology,
	the power and performance of the microprocessors also
	increased.  This is reflected in the increase in the CPU word
	size to 4, 8, 16, and by mid-1980s, 32 bits.  The smaller
	microprocessors have relatively simple {instruction sets},
	e.g., no {floating point} instructions, but they are
	nevertheless suitable as controllers for a very wide range of
	applications such as car engines and microwave ovens.

	The {Intel 4004} was followed with, among others the {4040},
	{8080}, {8086}, {80186}, {80286}, {80386}, {486} and
	{Pentium}.  Other families include the {Motorola} {6800} and
	{680x0} families, {National Semiconductor} {NS16000} and
	{NS32000}, {SPARC}, {ARM}, {MIPS}, {Zilog Z8000}, {PowerPC}
	and the {Inmos} {Transputer} family.

	The larger, more recent microprocessors families have
	gradually acquired most of the features of large computers.
	As the microprocessor industry has matured, several families
	of microprocessors have evolved into de facto industrial
	standards with multiple manufacturers and numerous "support"
	chips including {RAM}, {ROM}, {I/O controllers} etc.

	A single chip microprocessor may include other components such
	as memory ({RAM}, {ROM}, {PROM}), {memory management},
	{caches}, {floating-point unit}, input/output ports and
	timers.  Such devices are also known as {microcontrollers}.

	The one-chip microcomputer is in many respects, a landmark
	development in computer technology because it reduces the
	computer to a small, inexpensive, and easily replaceable
	design component.

	Microcomputers have given rise to a new class of
	general-purpose machines called {personal computer}s.  These
	are small low cost computers that are designed to sit on an
	ordinary office desk or to be portable and fuelled the
	computer boom of the late 1980s.  The most widespread example
	is the also {IBM PC}, based on microprocessors from {Intel
	Corporation}.  {Apple Computers, Inc.} have also produced a
	range of personal computers, as have several other companies.

	See also {killer micro}, {minicomputer}, {CPU Info Center}.

	(26 Nov 1996)

Microprocessor without Interlocked Pipeline Stages

	<processor> (MIPS) A project at {Stanford University} intended
	to simplify processor design by eliminating hardware
	{interlock}s between the five {pipeline} stages.  This means
	that only single execution cycle instructions can access the
	thirty two 32-bit general {register}s, so that the {compiler}
	can schedule them to avoid conflicts.  This also means that
	LOAD/STORE and branch instructions have a one-cycle delay to
	account for.  However, because of the importance of multiply
	and divide instructions, a special HI/LO pair of
	multiply/divide registers exist which do have hardware
	interlocks, since these take several cycles to execute and
	complicate {instruction scheduling}.

	The project eventually lead to the commercial {MIPS R2000}
	processor.

	(09 Feb 1995)

microprogramming

	{microcode}

microReid

	/mi:'kroh-reed/  See {bogosity}.

MICRO SAINT

	A general purpose simulation tool from US company {Micro
	Analysis and Design}.

microsecond

	<unit> One millionth (10^-6) of a second.

	(14 Mar 1995)

Microserf

	<jargon> {Wired magazine}'s term for a {Microsoft} employee.

	(02 Mar 1995)

Microslop

	<company, abuse> A derisive synonym for {Microsoft
	Corporation}.  It refers to the sloppy, {bug}-ridden "x.0"
	versions of {MS-DOS}, {Microsoft Windows} and other Microsoft
	products.

	(28 Dec 1995)

Microsloth Windows

	<abuse, operating system> /mi:'kroh-sloth" win"dohz/ (Or
	"Windoze", /win'dohz/) A derogatory term for {Microsoft
	Windows} which is so limited by bug-for-bug compatibility with
	{mess-dos} that it is agonisingly slow on anything less than a
	fast {486}.  Also called just "Windoze", with the implication
	that you can fall asleep waiting for it to do anything; the
	latter term is extremely common on {Usenet}.

	Compare {X}, {sun-stools}.

	(08 Oct 1996)

Microsoft

	{Microsoft Corporation}

Microsoft Access

	1. <database> A {relational database} running under {Microsoft
	Windows}.  Data is stored as a number of "{tables}",
	e.g. "Stock".  Each table consists of a number of "{records}"
	(e.g. for different items) and each record contains a number
	of "{fields}", e.g. "Product code", "Supplier", "Quantity in
	stock".

	Access allows the user to create "{forms}" and "reports".  A
	form shows one record in a user-designed format and allows the
	user to step through records one at a time.  A report shows
	selected records in a user-designed format, possibly grouped
	into sections with different kinds of total (including sum,
	minimum, maximum, average).

	There are also facilities to use links ("{joins}") between
	tables which share a common field and to filter records
	according to certain criteria or search for particular field
	values.

	Version: 2 (date?).

	{Usenet} newsgroup: {news:comp.databases.ms-access}.

	2. <communications> A communications program from Microsoft,
	meant to compete with {ProComm} and other programs.  It sucked
	and was dropped.  Years later they reused the name for their
	database.

	[Date?]

	(20 Jul 1997)

Microsoft Basic

	<language> (MS-BASIC) A dialect of {BASIC} from {Microsoft},
	originally developed by {Bill Gates} in a garage back in the
	{CP/M} days.  It was originally known as GWBasic, then QBASIC
	and finally MS-BASIC.

	When the {MS-DOS} {operating system} came out, it incorporated
	the GWBASIC.EXE or BASICA.EXE interpreters.  GWBASIC ("Gee
	Whiz") incorporated graphics and a {screen editor} and was
	compatible with earlier BASICs.

	QBASIC was more sophisticated.  Version 4.5 had a full screen
	editor, debugger and compiler.  The compiler could also
	produce executable files but to run these a utility program
	(BRUN44.EXE) had to be present.  Thus {source code} could be
	kept private.

	From DOS 5.0 or 6.0 onwards, MS-BASIC was standard.  The
	current version, 1.1, also produces {stand-alone} executables
	and can display graphics.

	{Usenet} newsgroup: {news:comp.lang.basic.misc}.

	[Relationship to BASIC in ROM on first IBM PC?]

	(12 May 1995)

Microsoft Corporation

	<company> The biggest supplier of {operating systems} and
	other software for {IBM PC} compatibles.  Software products
	include {MS-DOS}, {Microsoft Windows}, {Windows NT},
	{Microsoft Access}, {LAN Manager}, {MS Client}, {SQL Server},
	{Open Data Base Connectivity} (ODBC), {MS Mail}, and {SNA
	Server} for Windows NT.

	Microsoft was founded as "Micro-soft" in 1975 by {Bill Gates}
	(now CEO) and his Harvard pal Paul Allen.  Their first product
	was a version of {BASIC} for the new {Altair} computer [which
	one?].  In 1980, {IBM} chose Microsoft to supply the
	{operating system} for the {IBM PC}.

	On the UK television program "The Net" in May 1994, {Bill
	Gates} said he was betting his company on the {information
	highway}".

	Quarterly sales $1293M, profits $362M (Aug 1994).

	{Home (http://www.microsoft.com/)}.
	{(ftp://ftp.microsoft.com/)}.

	{Interesting Info and Other Microsoft WWW Servers
	(http://www-drg.microsoft.com/devinfo.htm)}.

	{Microsoft Windows Developer Information
	(http://www-drg.microsoft.com/devinfo.htm)}.

	{Microsoft Research Group Information
	(http://www.research.microsoft.com)}.

	{Win_News
	(http://www.microsoft.com/chicago/ms-www/ms-intro.htm)}
	maintained by the Personal Operating Systems Division to
	distribute information on {Microsoft Windows}, {MS-DOS} and
	{Windows 95}.

	(07 Nov 1994)

Microsoft Excel

	<tool> A {spreadsheet} program from {Microsoft}, part of their
	{Microsoft Office} suite of productivity tools for {Microsoft
	Windows} and {Macintosh}.  Excel is probably the most widely
	used spreadsheet in the world.

	Current version: Excel 97 (14 Jan 1997).

	{Home (http://www.microsoft.com/msexcel/)}.

	[Feature summary?  History?]

	(14 Jan 1997)

Microsoft Foundation Classes

	<programming> (MFC) Software structures in {C++}, the Windows
	base {classes} which can respond to messages, make windows,
	and from which application specific classes can be derived.

	(17 Nov 1995)

Microsoft Mail

	<messaging, tool> (MS Mail) A {Microsoft Windows} {electronic
	mail} program.

	[Features?  Version?]

	(26 Aug 1996)

Microsoft Mail Application Program Interface

	{Messaging Application Program Interface}

Microsoft Network

	<networking> (MSN)

	{Home (http://www.home.msn.com/)}

	[Description?]

	(11 Aug 1995)

Microsoft Office

	<product> {Microsoft}'s bundles of {productivity tools}.
	Different versions contain some or all of {Microsoft Word},
	{Microsoft Excel}, {Powerpoint}, {Outlook}, {Microsoft
	Access}, {Microsoft Publisher}, {Microsoft Front Page},
	{Microsoft Team Manager}, {Microsoft Project}, {Microsoft
	Schedule+}, {Microsoft Internet Explorer}, {Small Business
	Financial Manager}, {Automap Streets Plus}.

	Current versions: Office 97 Professional Edition, Office 97
	Standard Edition, Office 97 Small Business Edition, Office 97
	Developer Edition (05 Dec 1997).

	{Home (http://www.microsoft.com/office)}.

	(05 Dec 1997)

Microsoft SQL Server

	<database> A {relational data base management system} (RDBMS)
	which is part of {Microsoft}'s {BackOffice} family of
	{servers}.  SQL Server was designed for {client/server} use
	and is accessed by applications using {SQL}.  It runs on
	{OS/2}, {Windows NT}, {Novell NetWare} servers, {VAXen}, and
	{UNIX} {workstations}.  It is compliant with the {ANSI}
	{SQL-92} and {FIPS} 127-2 {SQL} {standards}.

	SQL Server supports {symmetric multiprocessing} hardware;
	{SNMP}, {ODBC}, and major {open standard} communications
	{protocols}.  It has {Internet} integration, data
	{replication} and {data warehousing} features.

	Latest version as of 27 Nov 1996: 6.5.

	{Home (http://www.microsoft.com/sql)}.

	{Usenet} newsgroup: {news:comp.databases.ms-sqlserver}.

	[Does the above apply to Microsoft's SQL Server or {Sybase SQL
	Server}, and what, if any is the connection?]

	(14 Apr 1997)

Microsoft Windows

	<operating system> A {window system} and user interface
	software released by {Microsoft} in 1985 to run on top of
	{MS-DOS}.  Widely criticised for being too slow (hence
	"{Windoze}", "{Microsloth Windows}") on the machines available
	then.

	The current (1996) market share of operating systems is:

	 DOS/Windows	70%
	 Windows 95	15%
	 Windows NT	 2%
	 Other		13%

	The version history goes something like:

	 1985 {Windows 1}
	 1987 {Windows 2}
	 1987 {Windows/386}
	 1990 {Windows 3.0}
	 1992 {Windows 3.1}
	 1992 {Windows for Workgroups 3.1}
	 1993 {Windows 3.11}
	 1993 {Windows for Workgroups 3.11}
	 1993 {Windows NT 3.1}
	 1994 {Windows NT 3.5}
	 1995 {Windows 95}
	 199? {Windows NT 4}

	{Usenet} newsgroups:
	{news:comp.os.ms-windows.comp.os.ms-windows.advocacy},
	{news:comp.os.ms-windows.comp.os.ms-windows.announce},
	{news:comp.os.ms-windows.apps.comm},
	{news:comp.os.ms-windows.apps.compatibility.win95},
	{news:comp.os.ms-windows.apps.financial},
	{news:comp.os.ms-windows.apps.misc},
	{news:comp.os.ms-windows.apps.utilities},
	{news:comp.os.ms-windows.apps.utilities.win3x},
	{news:comp.os.ms-windows.apps.utilities.win95},
	{news:comp.os.ms-windows.apps.winsock.mail},
	{news:comp.os.ms-windows.apps.winsock.misc},
	{news:comp.os.ms-windows.apps.winsock.news},
	{news:comp.os.ms-windows.apps.word-proc},
	{news:comp.os.ms-windows.misc},
	{news:comp.os.ms-windows.networking.misc},
	{news:comp.os.ms-windows.networking.ras},
	{news:comp.os.ms-windows.networking.tcp-ip},
	{news:comp.os.ms-windows.networking.win95},
	{news:comp.os.ms-windows.networking.windows},
	{news:comp.os.ms-windows.nt.admin.misc},
	{news:comp.os.ms-windows.nt.admin.networking},
	{news:comp.os.ms-windows.nt.advocacy},
	{news:comp.os.ms-windows.nt.announce},
	{news:comp.os.ms-windows.nt.misc},
	{news:comp.os.ms-windows.nt.pre-release},
	{news:comp.os.ms-windows.nt.setup.hardware},
	{news:comp.os.ms-windows.nt.setup.misc},
	{news:comp.os.ms-windows.nt.software.backoffice},
	{news:comp.os.ms-windows.nt.software.compatibility},
	{news:comp.os.ms-windows.nt.software.services},
	{news:comp.os.ms-windows.pre-release},
	{news:comp.os.ms-windows.programmer},
	{news:comp.os.ms-windows.programmer.controls},
	{news:comp.os.ms-windows.programmer.graphics},
	{news:comp.os.ms-windows.programmer.memory},
	{news:comp.os.ms-windows.programmer.misc},
	{news:comp.os.ms-windows.programmer.multimedia},
	{news:comp.os.ms-windows.programmer.networks},
	{news:comp.os.ms-windows.programmer.nt.kernel-mode},
	{news:comp.os.ms-windows.programmer.ole},
	{news:comp.os.ms-windows.programmer.tools.mfc},
	{news:comp.os.ms-windows.programmer.tools.misc},
	{news:comp.os.ms-windows.programmer.tools.owl},
	{news:comp.os.ms-windows.programmer.tools.winsock},
	{news:comp.os.ms-windows.programmer.vxd},
	{news:comp.os.ms-windows.programmer.win32},
	{news:comp.os.ms-windows.programmer.winhelp},
	{news:comp.os.ms-windows.setup},
	{news:comp.os.ms-windows.setup.win3x},
	{news:comp.os.ms-windows.setup.win95},
	{news:comp.os.ms-windows.video},
	{news:comp.os.ms-windows.win95.misc},
	{news:comp.os.ms-windows.win95.setup},
	{news:comp.binaries.ms-windows}.

	(06 Jul 1996)

Microsoft Word

	<text, tool, product> A popular {word processor}, part of the
	{Microsoft Office} suite.  The original Word (versions 1.0 to
	4.?/5.0?) was originally {text-based} (non-{GUI}) and ran
	under {MS-DOS}.  Then Microsoft released {Word for Windows}
	1.0 and 2.0.  Later they produced new versions for each OS,
	both numbered 6.0.

	{Home (http://www.microsoft.com/catalog/products/word/)}.

	[Features?]

	(11 Feb 1997)

microtape

	<hardware, storage> /mi:'kroh-tayp/ Occasionally used to mean
	a {DECtape}, as opposed to a {macrotape}.

	Apparently the term "microtape" was actually the official term
	used within DEC for these tapes until someone coined the word
	"DECtape", which, of course, sounded sexier to the
	{marketroid}s.  Another version of the story holds that
	someone discovered a conflict with another company's
	"microtape" trademark.

	(16 Mar 1995)

Microware Corporation

	Authors of {OS-9}.

	Address: Des Moines, Iowa, USA.

	(02 Feb 1995)

Microwave Hardware Description Language

	(MHDL) A {Hardware Description Language} from {Intermetrics}
	incorporating {Haskell} 1.2.

	Not to be confused with other {MHDL}s.

	E-mail: David Barton <dlb@hudson.wash.inmet.com>.

	(14 Nov 1994)

MIDAS

	A digital simulation language.

	[Sammet 1969, p.627].

Midas

	A {Motif}-based toolkit for interactive data analysis by
	T. Johnson, SLAC.  The basis for the {Midas-WWW} {browser}.

Midas-WWW

	A {Motif}-based {browser} for {WWW}.

middle-endian

	Not {big-endian} or {little-endian}.  Used of perverse byte
	orders such as 3-4-1-2 or 2-1-4-3, occasionally found in the
	packed-decimal formats of {minicomputer} manufacturers who
	shall remain nameless.  See {NUXI problem}.

middleware

	Software that mediates between an {application program} and a
	{network}.  It manages the interaction between disparate
	applications across the heterogeneous computing {platform}s.
	The {Object Request Broker} (ORB), software that manages
	communication between {objects}, is an example of a middleware
	program.

MIDI

	{Musical Instrument Digital Interface}

mid-level network

	(Or "regional network").  The kind of networks which make up
	the second level of the {Internet} hierarchy.  They are the
	{transit network}s which connect the {stub network}s to the
	{backbone network}s.

MIF

	{Maker Interchange Format}

MIG

	{Mach Interface Generator}

MIGRAINES

	<tool> A {graphical user interface} for evaluating and
	interacting with the {Aspirin} {neural network} simulation.

	Utilities exist for moving quickly from an {Aspirin}
	description of a network directly to an executable program for
	simulating and evaluating that network.  MIGRAINES has been
	kept separate from Aspirin so that its limitations do not
	restrict the performance of Aspirin.  However, in practice,
	they are used together.  This combination allows for simple
	specification and creation of efficient neural network systems
	that can be graphically analysed and tested.

	[Aspirin/MIGRAINES Neural Network Software User's Manual,
	Release v6.0 MP-91W00050, Copyright 1992 by Russel Leighton
	and the MITRE Corporation].

	(07 Mar 1995)

MII

	A consortium of {Microsoft}, {IBM}, and {Intel}.

	(03 Feb 1995)

MIIS

	/Meese/ An interpreted language with one-letter {keyword}s.

	[Similar to {MUMPS}?]

	(10 Jan 1995)

MIKE

	Micro Interpreter for Knowledge Engineering.

	An {expert system shell} for teaching purposes, with {forward
	chaining} and {backward chaining} and user-definable {conflict
	resolution} strategies.  MIKE is written in {Edinburgh
	Prolog}.

	Version 2.03.

	[BYTE, Oct 1990].

	{(ftp://hcrl.open.ac.uk/pub/software/src/MIKE-v2.03)}

	E-mail: Marc Eisenstadt <M.Eisenstadt@hcrl.open.ac.uk>.

	(10 Jan 1995)

Milarepa

	<tool> A {Perl} {BNF} {parser generator} by Jeffrey Kegler
	<jeffrey@netcom.com>.  Milarepa takes a source {grammar}
	written in a mixture of {BNF} and {Perl} and generates Perl
	source, which, when enclosed in a simple wrapper, parses the
	language described by the grammar.  Milarepa is not restricted
	to {LRn grammars}, and the parse logic follows directly from
	the BNF.  It handles {ambiguous grammar}s, ambiguous tokens
	(tokens which were not positively identified by the lexer) and
	allows the programmer to change the start symbol.  The grammar
	may not be {left recursive}.  The input must be divided into
	sentences of a finite maximum length.  There is no fixed
	distinction between {terminal}s and non-terminals, that is, a
	symbol can both match the input AND be on the left hand side
	of a production.  Multiple Marpa grammars are allowed in a
	single Perl program.

	Version: Prototype 1.0.

	Posted to comp.lang.perl.

	The author is seeking an FTP site to hold the software.

	(17 Mar 1993)

MILITRAN

	A {discrete simulation} system for military applications
	produced by the Sys Res Group at {ONR} in 1964.

	[Sammet 1969, p. 657].

	(11 Nov 1994)

mill

	{Arithmetic and Logic Unit}

milli-

	{prefix}

milliLampson

	/mil'*-lamp"sn/ A unit of talking speed, abbreviated mL.  Most
	people run about 200 milliLampsons.  The eponymous Butler
	Lampson (a CS theorist and systems implementor highly regarded
	among hackers) goes at 1000.  A few people speak faster.  This
	unit is sometimes used to compare the (sometimes widely
	disparate) rates at which people can generate ideas and
	actually emit them in speech.  For example, noted computer
	architect C. Gordon Bell (designer of the {PDP-11}) is said,
	with some awe, to think at about 1200 mL but only talk at
	about 300; he is frequently reduced to fragments of sentences
	as his mouth tries to keep up with his speeding brain.

millisecond

	<unit> (ms) One thousandth of a second, one thousand
	{microsecond}s.  A long time for a modern computer.

	(18 Aug 1995)

MILNET

	Military Network.  Part of the {Defense Data Network} (DDN)
	and of the {Internet}.  Managed by the {Defense Information
	Systems Agency} (DISA).

	[Location?  Number of hosts?  Purpose?]

MIMD

	{Multiple Instruction/Multiple Data}

MIME

	{Multipurpose Internet Mail Extensions}

mimencode

	(Originally distributed as "mmencode").  A replacement for
	{uuencode} for use in {electronic mail} and {news}.  Part of
	{MIME}.  uuencode uses characters that don"t translate well
	across all mail gateways (particularly those which convert
	between {ASCII} and {EBCDIC}).  Also, different variants of
	uuencode encode data in different and incompatible ways, with
	no standard.  Finally, few uuencode variants work well in a
	pipe.  Mimencode implements the encodings which were defined
	for {MIME} as uuencode replacements, and should be
	considerably more robust for e-mail use.  Written by Nathaniel
	S. Borenstein of Bell Communications Research,
	Inc. ({Bellcore}) in 1991.

MIMER

	<database> A {relational database management system} developed
	by the Swedish company {Sysdeco Mimer}.

MIME type

	<file format, protocol, multimedia> The unique identifier used
	for different file types when conveyed across a {MIME}-based
	{protocol} such as {MIME} {e-mail} or {HTTP}.

	Registration of MIME types is explained in {RFC 2048}.

	{Official MIME types
	(ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/media-types)}.

	(10 Feb 1998)

MIMIC

	<language> An early language designed by J.H. Andrews of the
	NIH in 1967 for solving engineering problems such as
	differential equations that would otherwise have been done on
	an {analog computer}.

	["MIMIC, An Alternative Programming Language for Industrial
	Dynamics, N.D. Peterson, Socio-Econ Plan Sci. 6, Pergamon
	1972].

	(19 Jan 1995)

MIMOLA

	Operational hardware specification language.

	["A Retargetable Compiler for a High-Level Microprogramming
	Language", 17th Ann Workshop on Microprogramming, P. Marwedel,
	IEEE 1984, pp. 267-274].

mind mouse

	<hardware> A {pointing device} (unlike a {mouse} in design,
	but serving the same purpose) which works via sensors in
	contact with the user's skin.  The sensors are built into a
	plastic base which fits on one finger and which is similar in
	shape to a finger cast.

	The principle of operation is presumably myoelectric, not
	psionic, contrary to what the name implies.

	As of the time of writing (1996), mind mice are not accurate
	enough to be anything but novelties.

	[Availability?]

	(07 Apr 1997)

mind uploading

	<application> The science fiction concept of copying one's
	mind into an artificial body or computer.

	{Home
	(http://sunsite.unc.edu/jstrout/uploading/MUHomePage.html)}.

	(10 Apr 1995)

Minerva software

	A company producing software for the {Acorn} {Archimedes}.

	{(http://www.zynet.co.uk/minerva/)}

	(31 Jan 1995)

minicomputer

	<computer> A computer built between about 1963 and 1987,
	smaller and less powerful than a {mainframe}, typically about
	the size and shape of a wardrobe, mounted in a single tall
	rack.

	Minicomputers were characterised by short {word} lengths of 8
	to 32 {bit}s, limited hardware and software facilities and
	small physical size.  Their low cost made them suitable for a
	wide variety of applications such as industrial control, where
	a small, dedicated computer which is permanently assigned to
	one application, is needed. In recent years, improvements in
	device technology have resulted in minicomputers which are
	comparable in performance to large {second generation
	computers} and greatly exceed the performance of {first
	generation} {computers}.

	The processor was typically built using low integration logic
	{integrated circuits} - {TTL} or maybe {ECL}, thus
	distinguishing it from a {microcomputer} which is built around
	a {microprocessor} - a processor on a single (or maybe a few)
	ICs.

	{DEC}'s {PDP-1} was the first minicomputer and their {PDP-11}
	was the most successful, closely followed (in both time and
	success) by the {VAX} (which {DEC} called a "{super
	minicomputer}").

	Another early minicomputer was the {LINC} developed at {MIT} in
	1963.

	Other minicomputers were the {AS/400}, the {PRIME} series, the
	{AP-3}, {Olivetti}'s {Audit 7} and the {Interdata 8/32}.

	[Others?]

Mini Disc

	A music medium designed by Sony as a portable replacement for
	music {Compact Disc}.  In 1994 Sony announced a data version
	which can hold 140 MB or about 100 MB using {error
	correction}.  These will be competitive with 128 MB
	{magneto-optical} disks.  Mini Discs may be either a
	re-writable or mass-produced read-only type.  Sony have also
	announced a standard data format.

	The transfer rate is similar to {CD-ROM} which is slow
	compared to the current {magneto-optical} drives (which are
	similar to an old hard disk, with writing noticeably slower
	than reading).  Pre-recorded read-only Mini Discs can be mass
	manufactured on a modified CD press - this and the standard
	format mean it could take off as a software distribution
	medium.

	An article in the December 1994 PCW quotes {access time}s of
	about 300 ms and data transfer rate of about 150 kb/s (i.e.
	about single spin CD rate).

	(13 Dec 1994)

minifloppy

	<storage> 5.25-inch {vanilla} floppy disks, as opposed to
	3.5-inch or {microfloppies} and the now-obsolescent 8-inch
	variety.

	At one time, this term was a trademark of {Shugart Associates}
	for their SA-400 minifloppy drive.  Nobody paid any attention.

	See {stiffy}.

	(03 May 1996)

minimal automaton

	<theory> An {automaton} possessing with {redundant states}.

	(03 May 1996)

minimax

	<games> An {algorithm} for choosing the next move in a two
	player game.  A player moves so as to maximise the minimum
	value of his opponent's possible following moves.  If it is my
	turn to move, I give a value to each legal move I might make.
	If the result of a move is an immediate win for me I give it
	positive infinity and, if it is an immediate win for you,
	negative infinity.  The value to me of any other move is the
	minimum of the values resulting from each of your possible
	replies.

	The above algorithm will give every move a value of positive
	or negative infinity since the value of every move will be the
	value of some final winning or losing move.  This can be
	extended if we can supply a {heuristic} {evaluation function}
	which gives values to non-final game states without
	considering all possible following complete sequences.  We can
	then limit the minimax algorithm to look only a certain number
	of moves ahead.  This number is called the "look-ahead" or
	"ply".  See also {alpha/beta pruning}.

Mini-ML

	["A Simple Applicative Language: Mini-ML", D. Clement et al,
	Proc 1986 ACM Conf on LISP and Functional Prog, (Aug 1986)].

minimum seek time

	<storage> (Or track-to-track seek time) The time it takes to
	move the head of a {disk drive} from one {track} to the next.
	The minimum seek time gives a good measure of the speed of the
	drive in a single-user/single-process environment where
	successive read/write request are largely correlated and thus
	if correlated data is stored in nearby cylinders most seeks
	are from one cylinder to the next.

	(15 Jul 1997)

Mini PL/I

	A commercial {PL/I} subset for the {Olivetti} {Audit 7}
	{minicomputer}.

MINITAB II

	A system for interactive solution of small statistical
	problems.

	["MINITAB Student Handbook", T.A. Ryan et al, Duxbury Press
	1976].

	(31 Oct 1994)

MINIX

	<operating system> /MIN-ix/ A small {operating system} that is
	very similar to {UNIX}.  MINIX was written for educational
	purposes by Prof. {Andrew S. Tanenbaum} of {Vrije
	Universiteit, Amsterdam}.

	MINIX has been written from scratch and contains no AT&T code
	-- neither in the {kernel}, the {compiler}, the utilities, nor
	the libraries.  Although copyrighted by Prentice-Hall, all
	{sources}, {binaries} and {documentation} can be obtained via
	{Internet} for educational or research purposes.

	Current versions as of 15 Nov 1996:

	MINIX 2.0 - {Intel} {CPU}s from {Intel 8088} to {Pentium}

	MINIX 1.5 - {Intel}, {Macintosh} ({MacMinix}), {Amiga}, {Atari
	ST}, {Sun} {SPARC}.

	{Home (http://www.cs.vu.nl/~ast/minix.html)}.

	(16 Jun 1997)

Minnesota Internet Users Essential Tool

	<networking, tool> (Minuet) An integrated package for {IBM PC}
	that includes modules for {electronic mail} (using the {POP}
	{protocol}), {Gopher}, {telnet}, {Usenet} news and {FTP}.
	Minuet provides an easy-to-use, {mouse}-driven {graphical user
	interface} via the {TurboVision} libraries.  It is a {TCP/IP}
	{client} that runs over any type of TCP/IP {network} including
	{Ethernet} and {SLIP}.  It will work with either {static IP
	address}es or {dynamic IP address}es ({bootp}).

	{FAQ
	(http://www.micro.umn.edu/products/minuet/minuet-1.html)}.
	{(ftp://boombox.micro.umn.edu/pub/pc/minuet/beta16/minuarc.exe)}.

	(10 Apr 1995)

MINT

	{Mint Is Not TRAC}

MinT

	<operating system> (MinT is not TOS (see {recursive acronym}))
	A {freeware} {operating system} for the {Atari} ST range of
	computers.  MinT's main claim to fame is support for
	{multitasking} long before Atari's {MultiTOS} (which was
	actually based on a repackaged MinT).

	MinT claimed almost total compatibility for programs written
	for the native {TOS} operating system, although as no Atari
	system was ever particularly reliable these claims are hard to
	validate!

	(10 Jan 1997)

Mint Is Not TRAC

	<text, tool> (MINT) A version of {TRAC} used as the {extension
	language} in the {Freemacs} editor.

	{(ftp://sun.soe.clarkson.edu/pub/freemacs)}

	(31 Oct 1994)

Minuet

	<networking> {Minnesota Internet Users Essential Tool}.

MINUIT

	A program for {function minimisation} and {error analysis}.

	(31 Oct 1994)

minus

	-

	Common: dash; {ITU-T}: hyphen; {ITU-T}: minus.  Rare:
	{INTERCAL}: worm; option; dak; bithorpe.

minus infinity

	The most negative value, not necessarily or even usually the
	simple negation of plus {infinity}.  In N bit twos-complement
	arithmetic, infinity is 2^(N-1) - 1 but minus infinity is
	-(2^(N-1)), not -(2^(N-1) - 1).

MIPS

	1. <unit> Million instructions per second.

	The unit commonly used to give the rate at which a processor
	executes instructions.

	Often rendered by hackers as "Meaningless Indication of
	Processor Speed" or in other unflattering ways.  This
	expresses a nearly universal attitude about the value of most
	{benchmark} claims, said attitude being one of the great
	cultural divides between hackers and {marketroid}s.

	The etymologically incorrect singular "1 MIP" is sometimes
	heard.

	See also {KIPS} and {GIPS}.

	2. {VAX MIPS}.

	3. <processor> {Microprocessor without Interlocked Pipeline
	Stages}.

	4. <company> {MIPS Technologies, Inc.}

	(01 Mar 1996)

MIPS project

	{Microprocessor without Interlocked Pipeline Stages}

MIPS R2000

	<processor> The R2000 design came, in about 1987, from the
	{Stanford} {MIPS project}, which stood for Microprocessor
	without Interlocked Pipeline Stages.

	Like the {AMD 29000}, the R2000 has no {condition code
	register} considering it a potential {bottleneck}.  The
	{program counter} can be read like other registers.

	The CPU includes an {MMU} that can also control a {cache}, and
	the CPU can operate as {big-endian} or {little-endian}.  There
	is a {FPU}, the R2010.

	Versions include the {MIPS R3000} and {MIPS R4000}.

	(09 Feb 1995)

MIPS R2010

	A {FPU} for the {MIPS R2000}.

	(09 Feb 1995)

MIPS R3000

	A version of the {MIPS R2000} with improved {cache} control.

	(09 Feb 1995)

MIPS R4000

	A 64-bit version of the {MIPS R3000} with has more {pipeline}
	stages for a higher {clock rate} and performance.

	(09 Feb 1995)

MIPS Technologies, Inc.

	<company> A company which designs, develops, and licenses
	{reduced instruction set computer} (RISC) {microprocessors}
	and compilers.  MIPS Technologies, Inc. is a wholly-owned
	subsidiary of {Silicon Graphics, Inc.} and operates as an
	independent unit.  MIPS is the successor to the processor
	business of MIPS Computer Systems which was founded in 1984
	and merged with Silicon Graphics on 29 June 1992.

	MIPS Technologies developed the world's first RISC {VLSI}
	microprocessors (1985) (or was it the {ARM}?), the first
	commercial 64-bit microprocessor ({MIPS R4000}, 1992),
	announced MIPS R4300i - the first 64-bit RISC processor
	designed for interactive consumer applications (April 1995).
	They announced the MIPS R10000 - the next generation
	general-purpose MIPS microprocessor and the most powerful
	processor in the world (October 1994).

	MIPS' semiconductor company partners participate in the design
	and development of MIPS processors and software and then
	produce, market, and support the processors.  MIPS itself does
	not fabricate or sell products.  MIPS' semiconductor partners
	are: {Integrated Device Technology}, {LSI Logic Corporation},
	{NEC Corporation}, {NKK Corporation}, {Philips
	Semiconductors}, {Siemens AG}, and {Toshiba Corporation}.

	MIPS' products include:

	R4000 - 100 MHz; 1.35M transistors, primary i/d cache 8KB/8KB,
	SPECint92 58.3/ SPECfp92 61.4.

	R4300i - 133 MHZ, 1.35M transistors; primary i/d cache,
	16KB/8KB, SPECint92 80, SPECfp92 60.

	R4400 - 250 MHz, 2.3M transistors, primary i/d cache
	16KB/16KB, SPECint92 175.8, SPECfp92 164.4.

	R4600 - 133 MHz, 1.9M transistors, primary i/d cache
	16KB/16KB, SPECint92 85, SPECfp92 75.

	R8000/R8010 - 90 MHz, 2.6M, .83M transistors, primary i/d
	cache, 16KB/16KB, SPECint92 132, SPECfp92 396.

	R10000 - 200 MHz, 6.7M transistors, primary i/d cache
	32KB/32KB, SPECint92 >300, SPECfp92 >600.

	MIPS' processor chips were used in the {DEC 3100} series of
	{workstation}s.

	{Home (http://www.mips.com/)}

	{Usenet} newsgroup: {news:comp.sys.mips}.

	(01 Mar 1996)

Miracula

	An implementation of a subset of {Miranda} by Stefan Kahrs
	<smk@ed.ac.uk>, LFCS, no modules or files.  Can be
	interactively switched between {eager} and {lazy} evaluation.
	Portable source in C from the author.

Miranda

	<language> (From the Latin for "admirable", also the heroine
	of Shakespeare's Tempest) A {lazy} {purely functional}
	programming language and interpreter designed by {David
	Turner} <dat@ukc.ac.uk> at the {University of Kent} in the
	early 1980s.  It is sold by his company, {Research Software}
	Limited.  It combines the main features of {KRC} and {SASL}
	with {strong typing} similar to that of {ML}.  Implemented for
	{Unix} by Allan Grimeley, Computer Lab., UKC.  There is also a
	version that runs on {Intel 80386} and above {IBM PCs} under
	{Linux}.

	It features terse {syntax} using the {offside rule} for
	indentation.  The {type} of an expression is inferred from the
	{source} by the {compiler} but explicit type declarations are
	also allowed.  Nested {pattern-matching}, {list
	comprehensions}, {modules}.  {Operator sections} rather than
	{lambda abstractions}.  User types are algebraic, and in early
	versions could be constrained by {laws}.  Implemented by {SKI
	combinator} reduction.  The {KAOS} operating system is written
	entirely in Miranda.

	E-mail: <mira-request@ukc.ac.uk>.

	Translators from Miranda to {Haskell} (mira2hs) and to {LML}
	(mira2lml) are available, {(ftp://wombat.doc.ic.ac.uk/pub/)}.
	Non-commercial near-equivalents of Miranda include {Miracula}
	and {Orwell}.

	["Miranda: A Non Strict Functional Language with Polymorphic
	Types", D.A. Turner, in Functional Programming Languages and
	Computer Architecture, LNCS 201, Springer 1985].

	["Functional Programming with Miranda", Ian Holyer, Pitman
	Press 0-273-03453-7].

	(01 Aug 1997)

MIRFAC

	{Mathematics in Recognizable Form Automatically Compiled}

mirror

	1. <hardware, storage> Writing duplicate data to more than one
	device (usually two {hard disks}), in order to protect against
	loss of data in the event of device failure.  This technique
	may be implemented in either hardware (sharing a {disk
	controller} and cables) or in software.  It is a common
	feature of {RAID} systems.

	Several {operating systems} support software disk mirroring or
	{disk duplexing}, e.g. {Novell NetWare}.

	See also {Redundant Array of Independent Disks}.

	Interestingly, when this technique is used with {magnetic
	tape} storage systems, it is usually called "twinning".

	A less expensive alternative, which only limits the amount of
	data loss, is to make regular {backup}s from a single disk to
	{magnetic tape}.

	2. <networking> An {archive site} which keeps a copy of some
	or all files at another site so as to make them more quickly
	available to local users and to reduce the load on the source
	site.  Such mirroring is usually done for specific whole
	directories or files on a specific remote server as opposed to
	a {cache} or {proxy server} which keeps copies of everything
	that is requested via it.

	For example, src.doc.ic.ac.uk is the main UK mirror for the
	{GNU} archive at prep.ai.mit.edu.

	(23 Feb 1995)

mirroring

	{mirror}

MIS

	{Management Information System}

misbug

	/mis-buhg/ [MIT] An unintended property of a program that
	turns out to be useful; something that should have been a
	{bug} but turns out to be a {feature}.  Usage: rare.  Compare
	{green lightning}.  See {miswart}.

misfeature

	/mis-fee'chr/ or /mis'fee"chr/ A feature that eventually
	causes lossage, possibly because it is not adequate for a new
	situation that has evolved.  Since it results from a
	deliberate and properly implemented feature, a misfeature is
	not a bug.  Nor is it a simple unforeseen side effect; the
	term implies that the feature in question was carefully
	planned, but its long-term consequences were not accurately or
	adequately predicted (which is quite different from not having
	thought ahead at all).  A misfeature can be a particularly
	stubborn problem to resolve, because fixing it usually
	involves a substantial philosophical change to the structure
	of the system involved.

	Many misfeatures (especially in user-interface design) arise
	because the designers/implementors mistake their personal
	tastes for laws of nature.  Often a former feature becomes a
	misfeature because trade-offs were made whose parameters
	subsequently change (possibly only in the judgment of the
	implementors).  "Well, yeah, it is kind of a misfeature that
	file names are limited to six characters, but the original
	implementors wanted to save directory space and we"re stuck
	with it for now."

MISHAP

	Early system on IBM 1103 or 1103A.  Listed in CACM 2(5):16,
	(May 1959).

Missed'em-five

	Pejorative hackerism for AT&T {System V} {Unix}, generally
	used by {BSD} partisans in a bigoted mood.  (The synonym
	"SysVile" is also encountered.)  See {software bloat},
	{Berzerkeley}.

missile address

	See {ICBM address}.

miswart

	/mis-wort/ [By analogy with {misbug}] A {feature} that
	superficially appears to be a {wart} but has been determined
	to be the {Right Thing}.  For example, in some versions of the
	{EMACS} text editor, the "transpose characters" command
	exchanges the character under the cursor with the one before
	it on the screen, *except* when the cursor is at the end of a
	line, in which case the two characters before the cursor are
	exchanged.  While this behaviour is perhaps surprising, and
	certainly inconsistent, it has been found through extensive
	experimentation to be what most users want.  This feature is a
	miswart.

MIT

	{Massachusetts Institute of Technology}

MIT AI Lab

	({Massachusetts Institute of Technology} {artificial
	intelligence} laboratory) Workplace of many famous AI
	researchers at MIT.

	{(http://www.ai.mit.edu/)}.  Address: 545 Technology Sq.,
	Cambridge, MA 02139, USA.

	(01 Nov 1994)

MITILAC

	Early system on IBM 650.  Listed in CACM 2(5):16 (May 1959).

MITS

	{Micro Instrumentation and Telemetry Systems}

MIT Scheme

	(Also known as C-Scheme)

	A {Scheme} implementation by the {MIT} Scheme Team (Chris
	Hanson, Jim Miller, Bill Rozas and many others) with rich set
	of utilities.

	The compiler is called {Liar}.

	Version 7.3 includes an {interpreter}, large run-time library,
	{Emacs} macros, {native-code compiler}, emacs-like editor and
	a {source-level debugger}.

	It conforms fully with {R4RS} but has one known
	incompatibility with the {IEEE Scheme} {standard}.  It runs on
	{Motorola 68000}: {HP9000}, {Sun3}, {NeXT}; {MIPS}:
	{Decstation}, {Sony}, {SGI}; {HP-PA}: 600, 700, 800; {VAX}:
	{Ultrix}, {BSD}, {DEC} {Alpha}: {OSF}; {Intel i386}: {MS-DOS},
	{MS Windows} and various other {Unix} systems.

	See also {LAP}, {Schematik}, {Scode}.

	{(ftp://martigny.ai.mit.edu/archive/scheme-7.3/)}

	{Usenet} newsgroup: {news:comp.lang.scheme.c}.

	Mailing list: info-cscheme@zurich.ai.mit.edu (cross-posted to
	news).

	E-mail: <bug-cscheme@zurich.ai.mit.edu> (bugs).

	DOS floppies ($95) and Unix tar tapes ($200) from Scheme Team,
	c/o Prof. Hal Abelson, {MIT AI Lab}.

	(24 Aug 1992)

MIX

	Knuth's hypothetical machine, used in The Art of Computer
	Programming v.1, Donald Knuth, A-W 1969.

MIXAL

	MIX Assembly Language.

	The {assembly language} for {Donald Knuth}'s hypothetical
	{MIX} machine.

	(05 Jan 1995)

MIX Communications

	(MIX) Providers of {Internet} access and presentation services
	for businesses and individuals in the Milwaukee, WI, USA
	metropolitan area.  MIX started providing Internet access
	services to the Milwaukee area in 1990.  It was the first
	business in Milwaukee to provide Internet access services to
	the public.

	MIX Communications is owned and operated by Dean Roth.

	{(http://www.mixcom.com/)}

	E-mail: <info@mixcom.com>.

	Telephone: +1 (414) 351 1868 (Office), +1 (414) 351 1139
	(BBS).  Address: MIX Communications, P.O. Box 17166,
	Milwaukee, WI 53217, USA.

	(05 Jan 1995)

M-JPEG

	{Moving JPEG}

MJS

	<language> An early system on the {UNIVAC} I or II.

	[Listed in CACM 2(5):16 May 1959].

	(15 Dec 1996)

ML

	1.  Manipulator Language.  IBM language for handling robots.

	2.  Meta Language.  R. Milner <rm@lfcs.edinburgh.ac.uk> et al,
	1973.  A {strict} {higher-order} {functional language}.  It
	was the first language to include {polymorphic} typing which
	was statically-checked.  It also had {garbage collection} and
	a formal {semantics}.

	It began as the {metalanguage} for the Edinburgh {LCF} proof
	assistant.  (LCF="Logic for Computable Functions") People soon
	noticed that ML could be a useful general programming language
	and stand-alone versions were implemented.  {Standard ML}
	(SML) is a descendant of these (and related languages such as
	{Hope}).  The "metalanguage" aspect has long since disappeared
	from the language itself (although there are some systems that
	still use it that way).  The historical name is now so
	inappropriate that asking what ML stands for is like asking
	what {C} or {Unix} stands for.  It doesn't stand for anything;
	it just is.

	LCF ML was implemented in {Stanford LISP}.  Cardelli (1981)
	implemented ML in {Pascal} using the {Functional Abstract
	Machine} (FAM).  It has been significantly redesigned to
	produce {Standard ML} and {Lazy ML}.

	["A Metalanguage for Interactive Proof in LCF", M.J.C. Gordon
	et al, 5th POPL, ACM 1978].

ML-2000

	An extension and redesign of {Standard ML}.  Under
	development.

MLAB

	Modeling LABoratory.  An interactive mathematical modeling
	system.

	["MLAB, An On-Line Modeling Laboratory", NIH (Mar 1975)].

	(13 Oct 1994)

ML/I

	Early macro translating system.  P.J. Brown, CACM
	10(10):618-623, (Oct 1967).

MLISP

	1. {M-expression LISP}.

	2. Meta-LISP.  D.C. Smith & H. Enea.  LISP variant with
	ALGOL-like syntax.  Not just a surface syntax, a full
	language.

	"MLISP", D.C. Smith, TR CS-179, CS Dept, Stanford (Oct 1970).
	Version: MLISP2.

	3. A hybrid of M-expression LISP and Scheme.

	"M-LISP: Its Natural Semantics and Equational Logic",
	R. Muller, SIGPLAN Notices 26(9):234-242 (Sept 1991) (PEPM
	'91).

ML Kit

	The ML Kit is a straight translation of the Definition of
	Standard ML into a collection of Standard ML modules.  For
	example, every inference rule in the Definition is translated
	into a small piece of Standard ML code which implements it.
	The translation has been done with as little originality as
	possible - even variable conventions from the Definition are
	carried straight over to the Kit.  The Kit is intended as a
	tool box for those people in the programming language
	community who may want a self-contained parser or type checker
	for full Standard ML but do not want to understand the clever
	bits of a high-performance compiler. We have tried to write
	simple code and modular interfaces.

	Version 1

	interpreter, documentation

	Nick Rothwell, David N. Turner, Mads Tofte <tofte@diku.dk>,
	and Lars Birkedal at Edinburgh and Copenhagen Universities.

	{(ftp://ftp.diku.dk/diku/users/birkedal/)}.  UK: ftp
	export/ml/mlkit/ from lfcs.ed.ac.uk

	(12 Mar 1993)

MLL

	Medium-Level Language.

	Sometimes used half-jokingly to describe {C}, alluding to its
	"structured-assembler" image.

	(07 Dec 1994)

ML-lex

	A version of {lex} in {SML/NJ} which outputs a {lexical
	analyser} in {SML/NJ}.

	{(ftp://research.att.com/dist/ml/75.tools.tar.Z)}

ML-Linda

	U Edinburgh, under development.

ML Threads

	{SML/NJ} with mutual exclusion primitives similar to those in
	{Modula-2+} and {Mesa}.  Written by Greg Morrisett
	<jgmorris@cs.cmu.edu>.

	{Lightweight thread}s are created using {fork}.  They are
	{pre-emptive}ly scheduled and communicate via {shared memory}
	which can be protected by a "{mutex}" ({monitor}).

	Implementations for {Motorola 68020}, {SPARC} and {MIPS} and
	{VAX}- and {MIPS}-based multiprocessors.

	["Adding Threads to Standard ML", E. Cooper et al,
	CMU-CS-90-186, CMU Dec 1990].

ML-Twig

	A variant of {TWIG} in {SML}, by Jussi Rintanen
	<jur@cs.hut.fi>, which comes with {SML/NJ}.

	(14 Feb 1995)

Mma

	A fast {Mathematica}-like system, in {Allegro CL} by
	R. Fateman, 1991.

	{(ftp://peoplesparc.berkeley.edu/pub/mma.tar.Z)}

mmap

	The {Unix} {system call} which establishes a mapping between a
	range of addresses in a user process's address space and a
	portion of some "memory object" (typically a file, one of the
	special "devices" /dev/mem or /dev/kmem or some
	{memory-mapped} peripheral).  This allows the process to
	access a file at random byte offsets without using the seek
	{system call} or to access physical addresses or {kernel}'s
	{virtual address} space.  It can also be used as an
	alternative to writing a {device driver} since it is usually
	simpler to code and faster to use.

	(14 Feb 1995)

MMCD

	<storage> {MultiMedia Compact Disc}.

	(23 Nov 1995)

MMDF

	{Multi-channel Memorandum Distribution Facility}

MMI

	1. Man-Machine Interface.

	2. <company> The company which developed the first
	{Programmable Array Logic} devices.  MMI was bought by {AMD}.

	[Dates?]

	(09 Dec 1995)

MML

	Human-Machine Language.

	A language from {ITU-T} for telecommunications applications.
	It has a complex {natural-language} syntax.

	[CCITT Recommendations Z.311-Z.318, Z-341, Nov 1984].

	(31 Jan 1995)

MMU

	{Memory Management Unit}

MMX

	{Matrix Math eXtensions}

MMX technology

	{Matrix Math eXtensions}

mnemonic

	<programming> A word or string which is intended to be easier
	to remember than the thing it stands for.  Most often used in
	"{instruction mnemonic}" which are so called because they are
	easier to remember than the {binary} patterns they stand for.
	Non-printing {ASCII} characters also have mnemonics like
	{NAK}, {ESC}, {DEL} intended to evoke their meaning on certain
	systems.

	(11 May 1995)

MNP

	{Microcom Networking Protocol}

Mobile Triton

	<processor> (Official name 82430MX) A version of {Intel}'s {Triton}
	I processor chip set intended for mobile computers.

	Mobile Triton consists of one 82437MX and two 82438MX.

	[Special features?]

	(03 Apr 1996)

MOBSSL-UAF

	Merritt and Miller's Own Block-Structured Simulation
	Language-Unpronounceable Acronym For.

	A l for interactive continuous {simulation}.

	["MOBSSL - An Augmented Block Structured Continuous System
	Simulation Language for Digital and Hybrid Computers",
	M.J. Merritt et al, Proc FJCC 35, AFIPS (Fall 1969)].

	(31 Jan 1995)

moby

	<jargon> /moh'bee/ (From {MIT}, seems to have been in use
	among model railroad fans years ago.  Derived from Melville's
	"Moby Dick", some say from "Moby Pickle") 1. Large, immense,
	complex, impressive.  "A Saturn V rocket is a truly moby
	frob."  "Some MIT undergrads pulled off a moby hack at the
	Harvard-Yale game."

	2. (Obsolete) The maximum {address space} of a computer (see
	below).  For a 680[234]0 or {VAX} or most modern 32-bit
	architectures, it is 4,294,967,296 8-bit bytes (four
	{gigabytes}).

	3. A title of address (never of third-person reference),
	usually used to show admiration, respect, and/or friendliness
	to a competent hacker.  "Greetings, moby Dave.  How's that
	address-book thing for the Mac going?"

	4. In backgammon, doubles on the dice, as in "moby sixes",
	"moby ones", etc.  Compare this with {bignum}: double sixes
	are both bignums and moby sixes, but moby ones are not bignums
	(the use of "moby" to describe double ones is sarcastic).

	5. The largest available unit of something which is available
	in discrete increments.  Thus a "moby Coke" is not just large,
	it's the largest size on sale.

	This term entered hackerdom with the Fabritek 256K memory
	added to the MIT AI PDP-6 machine, which was considered
	unimaginably huge when it was installed in the 1960s (at a
	time when a more typical memory size for a {time-sharing}
	system was 72 kilobytes).  Thus, a moby is classically 256K
	36-bit words, the size of a PDP-6 or PDP-10 moby.  Back when
	{address registers} were narrow the term was more generally
	useful, because when a computer had {virtual memory} mapping,
	it might actually have more physical memory attached to it
	than any one program could access directly.  One could then
	say "This computer has six mobies" meaning that the ratio of
	physical memory to address space is six, without having to say
	specifically how much memory there actually is.  That in turn
	implied that the computer could timeshare six "full-sized"
	programs without having to swap programs between memory and
	disk.

	Nowadays the low cost of processor logic means that address
	spaces are usually larger than the most physical memory you
	can cram onto a machine, so most systems have much *less* than
	one theoretical "native" moby of {core}.  Also, more modern
	memory-management techniques (especially paging) make the
	"moby count" less significant.  However, there is one series
	of widely-used chips for which the term could stand to be
	revived --- the Intel 8088 and 80286 with their incredibly
	{brain-damaged} segmented-memory designs.  On these, a "moby"
	would be the 1-megabyte address span of a segment/offset pair
	(by coincidence, a PDP-10 moby was exactly one megabyte of
	nine-bit bytes).

	(01 Oct 1997)

mockingbird

	Software that intercepts communications (especially login
	transactions) between users and hosts and provides system-like
	responses to the users while saving their responses
	(especially account IDs and passwords).  A special case of
	{Trojan Horse}.

Mockingboard

	<hardware> A sound and speech board for the {Apple II}
	computer, on sale in 1978.

	See also {zxnrbl}.

	(18 Mar 1997)

Mock Lisp

	The {Lisp} used by the {Gosling Emacs} editor.

MOD

	<filename extension, application, file format> (module) The
	filename extension for a sampled music file format that
	originated on the {Commodore} {Amiga}.  A .MOD file is
	composed of digitised sound samples, arranged in patterns to
	create a song. There are .MOD players for most {personal
	computer}s including {Amiga}, {Archimedes}, {IBM PC}, and
	{Macintosh}.

	An {IBM PC} will require a {sound card} capable of handling
	digitised samples ({Soundblaster}, {Soundblaster Pro}, {GUS})
	and slower {Intel 80386}-based PCs may not be able to do
	anything else while playing a module.

	.MOD files differ from .MID ({MIDI}) files in that they
	contain sound samples.  This allows each song to use different
	sounds but it also puts more load on the {CPU} than playing a
	MIDI file, since more data must be processed for each note.  A
	slow CPU would benefit from a sound card with {wavetable
	synthesis} which handles samples instead of the CPU.

	Module files come in various formats including .MOD.  Formats
	evolved from .MOD include .S3M, .FAR and .669.  Most contain
	improvements on .MODs.

	{(http://www.eskimo.com/~future/mods.htm)}

	(17 Mar 1995)

mod

	1. <jargon> modify or modification.

	This abbreviation is very common - in fact the full terms are
	considered formal.  "Mods" is used especially with reference
	to bug fixes or minor design changes in hardware or software,
	most especially with respect to {patch} sets or a {diff}.

	2. <programming> A common name for the {modulo} operator.

	(05 Oct 1995)

*MOD

	("StarMOD") A {concurrent} language combining the {module}s of
	{Modula} and the communications of {Distributed Processes}.

	["*MOD - A Language for Distributed Programming", R.P. Cook,
	IEEE Trans Soft Eng SE-6(6):563-571 (Nov 1980)].

	(21 Oct 1994)

modal

	1. (Of an interface) Having {mode}s.  Modeless interfaces are
	generally considered to be superior because the user does not
	have to remember which mode he is in.

	2. See {modal logic}.

	3. In {MS Windows} programming, A window with the label
	"WS_MODAL" will stay on the screen and claim all the
	user-input.  Other windows can only be accessed if the MODAL
	window is closed.  Such a window would typically be used for
	an error {dialog box} to warn the user for something
	important, like "Critical error, shut down the system and
	restart".

	(07 Feb 1995)

modal logic

	An extension of {propositional calculus} with operators that
	express various "modes" of truth.  Examples of modes are:
	necessarily A, possibly A, probably A, it has always been true
	that A, it is permissible that A, it is believed that A.

	"It is necessarily true that A" means that things being as
	they are, A must be true, e.g.

		"It is necessarily true that x=x" is TRUE

	while

		"It is necessarily true that x=y" is FALSE

	even though "x=y" might be TRUE.

	Adding modal operators [F] and [P], meaning, respectively,
	henceforth and hitherto leads to a "{temporal logic}".

	Flavours of modal logics include: {Propositional Dynamic
	Logic} (PDL), {Propositional Linear Temporal Logic} (PLTL),
	{Linear Temporal Logic} (LTL), {Computational Tree Logic}
	(CTL), {Hennessy-Milner Logic}, S1-S5, T.

	C.I. Lewis, "A Survey of Symbolic Logic", 1918, initiated the
	modern analysis of modality.  He developed the logical systems
	S1-S5.  JCC McKinsey used algebraic methods ({Boolean
	algebra}s with operators) to prove the decidability of Lewis'
	S2 and S4 in 1941.  Saul Kripke developed the {relational
	semantics} for modal logics (1959, 1963).  Vaughan Pratt
	introduced {dynamic logic} in 1976.  Amir Pnuelli proposed the
	use of temporal logic to formalise the behaviour of
	continually operating {concurrent} programs in 1977.

	[Robert Goldblatt, "Logics of Time and Computation", CSLI
	Lecture Notes No. 7, Centre for the Study of Language and
	Information, Stanford University, Second Edition, 1992,
	(distributed by University of Chicago Press)].

	[Robert Goldblatt, "Mathematics of Modality", CSLI Lecture
	Notes No. 43, Centre for the Study of Language and
	Information, Stanford University, 1993, (distributed by
	University of Chicago Press)].

	[G.E. Hughes and M.J. Cresswell, "An Introduction to Modal
	Logic", Methuen, 1968].

	[E.J. Lemmon (with Dana Scott), "An Introduction to Modal
	Logic", American Philosophical Quarterly Monograpph Series,
	no. 11 (ed. by Krister Segerberg), Basil Blackwell, Oxford,
	1977].

	(15 Feb 1995)

MODCAL

	A version of {HP-PASCAL} enhanced with system programming
	constructs, used internally by {HP}.

	(07 Feb 1995)

Mode

	An {object-oriented language}.

	["The Programming Language Mode: Language Definition and User
	Guide", J. Vihavainen, C-1987-50, U Helsinki, 1987].

	(21 Oct 1994)

mode

	1. A general state, usually used with an adjective describing
	the state.  Use of the word "mode" rather than "state" implies
	that the state is extended over time, and probably also that
	some activity characteristic of that state is being carried
	out. "No time to hack; I'm in thesis mode."

	In its jargon sense, "mode" is most often attributed to
	people, though it is sometimes applied to programs and
	inanimate objects.  In particular, see {hack mode}, {day
	mode}, {night mode}, {demo mode}, {fireworks mode}, and {yoyo
	mode}; also {chat}.

	2. More technically, a mode is a special state that certain
	user interfaces must pass into in order to perform certain
	functions.  For example, in order to insert characters into a
	document in the Unix editor "vi", one must type the "i" key,
	which invokes the "Insert" command.  The effect of this
	command is to put vi into "insert mode", in which typing the
	"i" key has a quite different effect (to wit, it inserts an
	"i" into the document).  One must then hit another special
	key, "ESC", in order to leave "insert mode".  Nowadays,
	modeful interfaces are generally considered {losing} but
	survive in quite a few widely used tools built in less
	enlightened times.

	(22 Dec 1994)

mode bit

	A {flag}, usually in hardware, that selects between two
	(usually quite different) modes of operation.  The
	connotations are different from {flag} bit in that mode bits
	are mainly written during a boot or set-up phase, are seldom
	explicitly read, and seldom change over the lifetime of an
	ordinary program.  The classic example was the
	EBCDIC-vs.-ASCII bit (#12) of the Program Status Word of the
	{IBM 360}.  Another was the bit on a PDP-12 that controlled
	whether it ran the PDP-8 or the LINC instruction set.

MODEF

	Pascal-like language with polymorphism and data abstraction.
	"Definition of the Programming Language MODEF",
	J. Steensgard-Madsen et al, SIGPLAN Notices 19(2):92-110 (Feb
	1984).

MODEL

	<language> A {Pascal}-like language with extensions for
	large-scale system programming and interface with {FORTRAN}
	applications.  MODEL includes {generic procedures}, and a
	"static" {macro}-like approach to {data abstraction}.  It
	produces {P-code} and was used to implement the {DEMOS}
	{operating system} on the {Cray-1}.

	["A Manual for the MODEL Programming Language", J.B. Morris,
	Los Alamos 1976].

	(29 May 1996)

model

	<simulation> A description of observed behaviour, simplified
	by ignoring certain details.  Models allow complex {systems}
	to be understood and their behavour predicted within the scope
	of the model, but may give incorrect descriptions and
	predictions for situations outside the realm of their intended
	use.  A model may be used as the basis for {simulation}.

	(29 May 1996)

model checking

	<theory, algorithm, testing> To algorithmically check whether
	a program (the model) satisfies a specification.

	The model is usually expressed as a {directed graph}
	consisting of {nodes} (or {vertices}) and {edges}.  A set of
	{atomic propositions} is associated with each node.  The nodes
	represents states of a program, the edges represent possible
	executions which alters the state, while the atomic
	propositions represent the basic properties that hold at a
	point of execution.

	A specification language, usually some kind of {temporal
	logic}, is used to express properties.

	The problem can be expressed mathematically as: given a
	temporal logic formula p and a model M with initial state s,
	decide if M,s \models p.

	["Automatic verification of finite state concurrent systems
	using temporal logic", E.M. Clarke, E.A. Emerson, and
	A.P. Sisla, ACM Trans. on Programming Languages and Systems
	8(2), pp. 244--263, 1986].

	(26 Jun 1997)

modeling

	<spelling> Misspelling of "{model}ling".

	(15 Jan 1997)

modelling

	{model}

Model View Controller

	(MVC) A way of partitioning the design of interactive
	software.  The "model" is the internal workings of the program
	(the {algorithm}s), the "view" is how the user sees the state
	of the model and the "controller" is how the user changes the
	state or provides input.

modem

	<hardware, communications> (Modulator/demodulator) An
	electronic device for converting between serial data
	(typically {RS-232}) from a computer and an audio signal
	suitable for transmission over telephone lines.  In one scheme
	the audio signal is composed of silence (no data) or one of
	two frequencies representing 0 and 1.

	Modems are distinguished primarily by the maximum {baud} rate
	they support.  {Baud} rates can range from 75 baud up to 28800
	and beyond.  Data to the computer is sometimes at a lower rate
	than data from the computer on the assumption that the user
	cannot type more than a few characters per second.

	Various data {compression} and error correction {algorithm}s
	are required to support the highest speeds.  Other optional
	features are {auto-dial} (auto-call) and {auto-answer} which
	allow the computer to initiate and accept calls without human
	intervention.  Most modern modems support a number of
	different protocols and two modems, when first connected will
	automatically negotiate to find a common protocol.  Some modem
	protocols allow the two modems to renegotiate ("retrain") if
	the initial choice of data rate is too high and gives too many
	transmission errors.

	A modem may either be internal, connected to the computer's
	bus or external ("stand-alone"), connected to one of the
	computer's {serial port}s.  The actual speed of transmission
	in characters per second depends not just the modem-to-modem
	data rate, but also on the speed with which the processor can
	transfer data to and from the modem, the kind of compression
	used and whether the data is compressed by the processor or
	the modem, the amount of noise on the telephone line (which
	causes retransmissions), the serial character format
	(typically {8N1}: one {start bit}, eight data bits, no
	{parity}, one {stop bit}).

	See also {acoustic coupler}, {adaptive answering}, {baud
	barf}, {Bulletin Board System}, {Caller ID}, {SoftModem},
	{U.S. Robotics}, {UUCP}.

	{Usenet} newsgroup: {news:comp.dcom.modems}.

	(09 Feb 1996)

MODEM7

	A {batch file transfer protocol}.

	See also {XMODEM}.

	(02 May 1995)

moderator

	A person, or small group of people, who manages a moderated
	{mailing list} or {Usenet} {newsgroup}.  Moderators are
	responsible for determining which email submissions are passed
	on to the list or newsgroup.

Modified Frequency Modulation

	<storage> (MFM, Modified {FM}, or sometimes "Multiple
	Frequency Modulation") A {data} recording method used on
	{magnetic disks}.

	MFM data recording is currently used in industry standard 3.5"
	and 5.25" low and high density {diskettes}, and was used in
	the magnetic disks such as the {Seagate Technology} {ST506}
	drive.

	See also: {GCR}, {FM}, {RLL}, {PRML}, {Bernoulli Box}.

	[How does it differ from other recording methods?]

	(14 Aug 1997)

modifier

	<programming> An operation that alters the state of an
	{object}.  Modifiers often have names that begin with "set"
	and corresponding {selector} functions whose names begin with
	"get".

	(12 Jan 1998)

MODSIM

	<language> A general-purpose, modular, block-structured
	language from {CACI}, which provides support for
	{object-oriented programming} and {discrete event simulation}.
	It is intended for building large process-based discrete event
	simulation models through modular and object-oriented
	mechanisms similar to those of {Modula-2}.

	MODSIM is descended from {Modula-2} and {Simula}.  It supports
	{multiple inheritance}, {template}s, {reference type}s,
	{polymorphism}, and {process-oriented simulation} with
	synchronous and asynchronous activities using explicit
	simulation time.

	See also {MODSIM II}, {USAModSim}.

	(11 Nov 1994)

MODSIM II

	1986.  Object-oriented modular language for discrete
	simulation, with {multiple inheritance}, strong typing,
	integrated 2D and 3D graphics.  Compiles to C.  CACI, La
	Jolla, (619) 457-9681.  list: palmer@world.std.com

Modula

	MODUlar LAnguage.  Wirth, 1977.  Predecessor of Modula-2, more
	oriented towards concurrent programming but otherwise quite
	similar.

	["Modula - A Language for Modular Multiprogramming", N. Wirth,
	Soft Prac & Exp 7(1):3-35 (Jan 1977)].

Modula-2

	<language> A high-level programming language designed by
	{Niklaus Wirth} at {ETH} in 1978.  It is a derivative of
	{Pascal} with well-defined interfaces between {module}s, and
	facilities for parallel computation.  Modula-2 was developed
	as the system language for the {Lilith} {workstation}.

	The central concept is the {module} which may be used to
	encapsulate a set of related subprograms and data structures,
	and restrict their visibility from other portions of the
	program.  Each module has a definition part giving the
	interface, and an implementation part.

	The language provides limited single-processor {concurrency}
	({monitor}s, {coroutine}s and explicit transfer of control)
	and hardware access ({absolute address}es and {interrupt}s).
	It uses {name equivalence}.

	{DEC FTP archive
	(ftp://gatekeeper.dec.com/.1/DEC/Modula-2/m2.tar.Z)}

	["Programming in Modula-2", N. Wirth, Springer 1985].

	(25 Oct 1995)

Modula-2*

	An extension of {Modula-2} by M. Philippsen
	<philipp@ira.uka.de> of the {University of Karlsruhe}.  It
	uses a superset of {data parallelism}, allowing both
	synchronous and asynchronous programs, both {SIMD} and {MIMD}.
	Parallelism may be nested to any depth.  There are version for
	{MasPar} and a simulator for the {SPARC}.

	{(ftp://iraun1.ira.uka.de/pub/programming/modula2star)}.
	E-mail: Ernst Heinz <heinz@ira.uka.de>.

	["Modula-2*: An Extension of Modula-2 for Highly Parallel,
	Portable Programs", W. Tichy et al, TR 4/90, U Karlsruhe, Jan
	1990].

	(21 Oct 1994)

Modula-2+

	{Modula-2} plus {exception}s and {thread}s developed by
	P. Rovner et al of {DEC} {SRC}, Palo Alto CA in 1984.

	["Modula-2+ User's Manual", M-C van Leunen].

	["Extending Modula-2 to Build Large, Integrated Systems",
	P. Rovner, IEEE Software 3(6):46-57 (Nov 1986)].

	(21 Oct 1994)

Modula-3

	L. Cardelli et al, DEC and Olivetti, 1988.  A descendant of
	Modula-2+ and Cedar, designed for safety and simplicity.
	Objects, generics, threads, exceptions and garbage collection.
	Modules are explicitly safe or unsafe.  As in Mesa, any set of
	variables can be monitored.  No {multiple inheritance}, no
	operator overloading.  Uses structural equivalence.  "Modula-3
	Report", Luca Cardelli et al, TR 52, DEC SRC, and Olivetti
	Research Center, Aug 1988 (revised Oct 1989).  The changes are
	described in "System Programming with Modula-3", Greg Nelson
	ed, P-H 1991, ISBN 0-13-590464-1.  "Modula-3", Sam Harbison,
	P-H 1992.  Version: SRC Modula-3 V1.5.

	{(ftp://gatekeeper.dec.com/pub/DEC/Modula-3/release/)}

	See also {SRC Modula-3}.

Modula-3*

	Incorporation of {Modula-2*} ideas into {Modula-3}.

	["Modula-3*: An Efficiently Compilable Extension of Modula-3
	for Problem-Oriented Explicitly Parallel Programming",
	E. Heinz <heinze@ira.uka.de>, 1993].

Modula-3pi

	Machine-independent intermediate language for compilation of
	Modula-3*.  "Modula-3pi Language Definition", E.A. Heinz, TR,
	U Karlsruhe 1993.

Modula-P

	"Modula-P: A Language for Parallel Programming Definition and
	Implementation on a Transputer Network", R. Hoffart et al,
	IEEE Conf Comp Langs 1992.

Modula-Prolog

	Adds a Prolog layer to Modula-2.  "Modula-Prolog: A Software
	Development Tool", C. Muller IEEE Software pp.39-45 (Nov
	1986).

Modula/R

	Modula with relational database constructs added.  LIDAS Group
	(J. Koch, M. Mall, P. Putfarken, M. Reimer, J.W. Schmidt,
	C.A. Zehnder) "Modula/R Report", LIDAS Memo 091-83, ETH
	Zurich, Sep 1983.

Modular C

	A {preprocessor}-based extension to {C} allowing {module}s.

	[Article by Stowe Boyd, Azrex Inc, SIGPLAN Notices, ca 1980].

	(25 Oct 1994)

Modular Prolog

	An {interpreter} for {SB-Prolog} version 3.1 extended with
	{ML}-style {module}s.  Runs on {SPARC}.  Distributed under
	{GNU} {General Public License}.

	{(ftp://ftp.dcs.ed.ac.uk/pub/dts/mod-prolog.tar.Z)}.  E-mail:
	Brian Paxton <mprolog@dcs.ed.ac.uk>.

	["A Calculus for the Construction of Modular Prolog Programs",
	D. Sannella et al, J Logic Prog 12:147-177 (1992)].

	(25 Oct 1994)

Modular SB-Prolog

	{Modular Prolog}

module

	1. <programming> An independent piece of {software} which
	forms part of one or more larger {programs}.  Different
	languages have different concepts of a module but there are
	several common ideas.

	Modules are usually compiled seperately (in compiled
	languages) and provide an {abstraction} or information hiding
	mechanism so that a module's implementation can be changed
	without requiring any change to other modules.  In this
	respect they are similar to {objects} in an {object-oriented
	language}, though a module may contain many {procedures}
	and/or {functions} which would correspond to many objects.

	A module often has its own {name space} for {identifiers} so
	the same identifier may be used to mean different things in
	different modules.

	[Difference from {package}?].

	2. <hardware> An independent assembly of electronic components
	with some distinct function, e.g. a RAM module consisting of
	several RAM chips mounted on a small circuit board.

	(27 Oct 1997)

Modulex

	Based on Modula-2.  Mentioned by M.P. Atkinson & J.W. Schmidt
	in a tutorial in Zurich, 1989.

modulo

	/mod'yu-loh/ prep. Except for.  An overgeneralisation of
	mathematical terminology; one can consider saying that
	4 equals 22 except for the 9s (4 = 22 mod 9).  "Well,
	LISP seems to work okay now, modulo that {GC} bug."  "I feel
	fine today modulo a slight headache."

molly-guard

	/mol'ee-gard/ [University of Illinois] A shield to prevent
	tripping of some {Big Red Switch} by clumsy or ignorant hands.
	Originally used of the plexiglass covers improvised for the
	BRS on an IBM 4341 after a programmer's toddler daughter
	(named Molly) frobbed it twice in one day.  Later generalised
	to covers over stop/reset switches on disk drives and
	networking equipment.

monad

	/mo'nad/ [category theory] A triple, (M, unitM, bindM) where M
	is a function on types and (using {Haskell} notaion):

		unitM :: a -> M a
		bindM :: M a -> (a -> M b) -> M b

	I.e. unitM converts an ordinary value of type a in to monadic
	form and bindM applies a function to a monadic value after
	de-monadising it.  E.g. a state transformer monad:

		type S a = State -> (a, State)
		unitS a  = \ s0 -> (a, s0)
		m `bindS` k = \ s0 -> let (a,s1) = m s0
				      in k a s1

	Here unitS adds some initial state to an ordinary value and
	bindS applies function k to a value m.  (`fun` is Haskell
	notation for using a function as an {infix} operator).  Both m
	and k take a state as input and return a new state as part of
	their output.  The construction

		m `bindS` k

	composes these two state transformers into one while also
	passing the value of m to k.

	Monads are a powerful tool in {functional programming}.  If a
	program is written using a monad to pass around a variable
	(like the state in the example above) then it is easy to
	change what is passed around simply by changing the monad.
	Only the parts of the program which deal directly with the
	quantity concerned need be altered, parts which merely pass it
	on unchanged will stay the same.

	In functional programming, unitM is often called initM or
	returnM and bindM is called thenM.  A third function, mapM is
	frequently defined in terms of then and return.  This applies
	a given function to a list of monadic values, threading some
	variable (e.g. state) through the applications:

		mapM :: (a -> M b) -> [a] -> M [b]
		mapM f []     = returnM []
		mapM f (x:xs) = f x		   `thenM` ( \ x2 ->
		                mapM f xs          `thenM` ( \ xs2 ->
		    		returnM (x2 : xs2)         ))

monadic

	1. A monadic operator or function is one which takes a single
	argument.  Compare {dyadic}.

	2. See {monad}.

Mongolian Hordes technique

	<programming, jargon> (Or "Chinese Army technique") Assigning
	a large number of inexperienced programmers to a job which
	would better performed by a few skilled ones.  The term was
	first used by Dr. Fred Brooks in his book "{The Mythical
	Man-Month}", Chapter 3.

	According to Dr. Brooks, he had in mind the vision of the
	Mongol Hordes sweeping across Asia and Europe when he created
	the term.

	(20 Jun 1996)

moniter

	<spelling> Misspelling of "{monitor}".

	(28 Nov 1996)

monitor

	1. A {cathode-ray tube} and associated electronics connected
	to a computer's video output.  A monitor may be either
	{monochrome} (black and white) or colour ({RGB}).  Colour
	monitors may show either digital colour (each of the red,
	green and blue signals may be either on or off, giving eight
	possible colours: black, white, red, green, blue, cyan,
	magenta and yellow) or analog colour (red, green and blue
	signals are continuously variable allowing any combination to
	be displayed).  Digital monitors are sometimes known as {TTL}
	because the voltages on the red, green and blue inputs are
	compatible with TTL logic chips.

	See also {gamut}, {multisync}, {visual display unit}.

	2. A programming language construct which encapsulates
	variables, access procedures and initialisation code within an
	abstract data type.  The monitor's variable may only be
	accessed via its access procedures and only one process may be
	actively accessing the monitor at any one time.  The access
	procedures are {critical section}s.  A monitor may have a
	queue of processes which are waiting to access it.

	3. A hardware device that measures electrical events such as
	pulses or voltage levels in a digital computer.

	4. To oversee a program during execution.  For example, the
	monitor function in the {Unix} {C} library enables profiling
	of a certain range of code addresses.  A histogram is produced
	showing how often the {program counter} was found to be at
	each position and how often each profiled function was called.

	{Unix} {man} page: monitor(3).

	5. A control program within the {operating system} that
	manages the allocation of system resources to active
	programs.

	6. A program that measures software performance.

monkey, scratch

	See {scratch monkey}.

monkey up

	To hack together hardware for a particular task, especially a
	one-shot job.  Connotes an extremely {crufty} and consciously
	temporary solution.  Compare {hack up}, {kluge up}, {cruft
	together}.

monochrome

	Literally "one colour".  Usually used for a black and white
	(or sometimes green or orange) {monitor} as distinct from a
	color monitor.  Normally, each {pixel} on the display will
	correspond to a singal bit of display memory and will
	therefore be one of two intensities.  A {grey-scale} display
	requires several bits per {pixel} but might still be called
	monochrome.

	(24 Nov 1994)

monoid

	An operator * and a value x form a monoid if * is
	{associative} and x is its left and right {identity}.

monotonic

	In {domain theory}, a function f : D -> C is monotonic (or
	monotone) if

		for all x,y in D,  x <= y  =>  f(x) <= f(y).

	("<=" is written in {LaTeX} as {\sqsubseteq}).

	(24 Nov 1994)

MONSTR

	<language> A {term graph rewriting} language from {Manchester
	University}(?), designed to be easily implementable on
	distributed architectures and featuring limited
	synchronisation facilities.

	(20 Mar 1995)

Montage

	An {object-relational database management system} from
	{Montage Software}, the commercialisation of {POSTGRES}.

	(23 Feb 1995)

Monte Carlo

	(After Monte Carlo, Monaco - a notorious gambling mecca) Any
	one of various methods involving statistical techniques, such
	as the use of random samples, to finding the solutions to
	mathematical or physical problems.

	For example, to calculate pi, generate random points in the
	square (x, y) = ([0-1], [0-1]) and find the proportion for
	which x^2 + y^2 < 1, i.e. which lie within a quadant of a
	circle with radius 1.  Since the area of the square is 1 and
	the area of the quadrant is pi/4, the proportion in the
	quadrant should be pi/4.

	(23 Feb 1995)

monty

	/mon'tee/ [US Geological Survey] A program with a ludicrously
	complex user interface written to perform extremely trivial
	tasks.  An example would be a menu-driven, button clicking,
	pulldown, pop-up windows program for listing directories.  The
	original monty was an infamous weather-reporting program,
	Monty the Amazing Weather Man, written at the USGS.  Monty had
	a widget-packed X-window interface with over 200 buttons; and
	all monty actually *did* was {FTP} files off the network.

MOO

	{MUD} object oriented.

	[Description?]

	(01 Mar 1995)

Moof

	/moof/ [MAC users] 1.  A semi-legendary creature, also called
	the "dogcow", that lurks in the depths of the {Macintosh}
	Technical Notes {Hypercard} stack V3.1; specifically, the full
	story of the dogcow is told in technical note #31 (the
	particular Moof illustrated is properly named "Clarus").
	Option-shift-click will cause it to emit a characteristic
	"Moof!" or "!fooM" sound.  *Getting* to tech note 31 is the
	hard part; to discover how to do that, one must needs examine
	the stack script with a hackerly eye.  Clue: {rot13} is
	involved.  A dogcow also appears if you choose "Page Setup..."
	with a LaserWriter selected and click on the "Options" button.

	2. Used to flag software that's a hack, something untested and
	on the edge.  On one {Apple Computer} {CD-ROM}, certain {folder}s such
	as "Tools & Apps (Moof!)" and "Development Platforms (Moof!)",
	are so marked to indicate that they contain software not fully
	tested or sanctioned by the powers that be.  When you open
	these folders you cross the boundary into hackerland.

Moore bound

	An upper limit on the number of nodes in a {regular graph} of
	{degree} d>2 and {diameter} k:

		N(d,k) <= d(d-1)^k - 2
			  ------------
			      d-2

Moore graph

	A {graph} which achieves the {Moore bound}.  These are
	{complete graph}s, {polygon graph}s ({regular graph}s of
	{degree} 2) and three others: (nodes, degree, diameter) =
	(10,3,2), (50,7,2) and the possible but undiscovered
	(3250,57,2).

Moore's Law

	<architecture> /morz law/ The observation, made in 1965 by
	{Intel} co-founder {Gordon Moore} while preparing a speech,
	that each new memory {integrated circuit} contained roughly
	twice as much capacity as its predecessor, and each chip was
	released within 18-24 months of the previous chip.  If this
	trend continued, he reasoned, computing power would rise
	exponentially with time.

	Moore's observation still holds in 1997 and is the basis for
	many performance forecasts.  In 24 years the number of
	{transistors} on processor chips has increased by a factor of
	almost 2400, from 2300 on the {Intel 4004} in 1971 to 5.5
	million on the {Pentium Pro} in 1995 (doubling roughly every
	two years).

	 Date      Chip     Transistors   MIPS clock/MHz
	 -----------------------------------------------
	 Nov 1971  4004       	   2300   0.06	 0.108
	 Apr 1974  8080       	   6000   0.64	 2
	 Jun 1978  8086       	  29000   0.75	10
	 Feb 1982  80286      	 134000   2.66	12
	 Oct 1985  386DX      	 275000   5   	16
	 Apr 1989  80486      	1200000  20   	25
	 Mar 1993  Pentium    	3100000 112   	66
	 Nov 1995  Pentium Pro  5500000 428    200
	 -----------------------------------------------

	Moore's Law has been (mis)interpreted to mean many things over
	the years.  In particular, {microprocessor} performance has
	increased faster than the number of transistors per chip.  The
	number of {MIPS} has, on average, doubled every 1.8 years for
	the past 25 years, or every 1.6 years for the last 10 years.
	While more recent processors have had wider {data paths},
	which would correspond to an increase in transistor count,
	their performance has also increased due to increased {clock
	rates}.

	Chip density in transistors per unit area has increased less
	quickly - a factor of only 146 between the 4004 (12 mm^2) and
	the Pentium Pro (196 mm^2) (doubling every 3.3 years).
	{Feature size} has decreased from 10 to 0.35 microns which
	would give over 800 times as many transistors per unit.
	However, the automatic layout required to cope with the
	increased complexity is less efficient than the hand layout
	used for early processors.

	{(http://www.intel.com/intel/museum/25anniv/html/hof/moore.htm)}.

	{Intel Microprocessor Quick Reference Guide
	(http://www.intel.com/pressroom/no_frame/quickref.htm)}.

	{"Birth of a Chip", Linley Gwennap, Byte, Dec 1996
	(http://www.byte.com/art/9612/sec6/art2.htm)}.  See also March
	1997 "inbox".

	{Chronology of Events in the History of Microcomputers
	(http://www.islandnet.com/~kpolsson/comphist.htm)}, Ken
	Polsson.

	See also {Parkinson's Law of Data}.

	(04 Mar 1997)

moose call

	{whalesong}

MooZ

	<language, specification> An {object-oriented} extension of
	{Z}.

	["Object Orientation in Z", S. Stepney et al eds, Springer
	1992].

	(09 Jul 1997)

Mops

	Like {Yerk}, Mops is descended from the ex-commercial
	{object-oriented} language {Neon}.  It was developed by
	Michael Hore <mikeh@kralizec.zeta.org.au>.  Mops features an
	optimising {native}-code compiler; it is much faster than
	Yerk, but less compatible with Neon.  Mops includes extensions
	such as {multiple inheritance}.

	Version 2.3.1 includes a compiler, documentation and an
	editor.

	A {Macintosh} version is available.
	{(ftp://oddjob.uchicago.edu/pub/Yerk)}.

MORAL

	Mentioned in "An Overview of Ada", J.G.P. Barnes, Soft Prac &
	Exp 10:851-887 (1980).

moria

	<games> /mor'ee-*/ Like {nethack} and {rogue}, one of the
	large {PD} {Dungeons and Dragons}-like simulation games,
	available for a wide range of machines and operating systems.
	The name is from Tolkien's Mines of Moria; compare {elder
	days}, {elvish}.  The game is extremely addictive and a major
	consumer of time better used for hacking.

morphing

	<graphics> The animated transformation of one image into
	another by gradually distorting the first image so as to move
	certain chosen points to the position of corresponding points
	in the second image.

	Compare {tweening}.

	(03 Apr 1995)

Morse code

	<communications> A coding system invented by Samuel A. Morse,
	for use in sending character data over extremely low-quality
	pathways -- such as telegraphs and low-quality radio.  Morse
	code expresses characters as pulses of different durations.
	Short signals are called "dots" and long signals are calles
	"dashes".  The coding assigns shorter sequences to the most
	frequently used characters.

	American Morse code is the first and original Morse code
	{character set}.  {Character sets} adapted to other languages
	were developed later.

	American Morse Code:

	 A . __        J . .          S . . .       1 . __ __ .
	 B __ . . .    K __ . __      T __          2 . . __ . .
	 C . .  .      L ___          U . . __      3 . . . __ .
	 D __ . .      M __ __        V . . . __    4 . . . . __
	 E .           N __ .         W . __ __     5 __ __ __
	 F . __ .      O .  .         X . __ . .    6 . . . . . .
	 G __ __ .     P . . . . .    Y . .  . .    7 __ __ . .
	 H . . . .     Q . . __ .     Z . . .  .    8 __ . . . .
	 I . .         R .  . .       0 ____        9 __ . . __

	Where . is a short pulse, __ a long pulse, ___ a very long
	pulse and ____ a extra long pulse.  There are also long and
	short spaces character-internal.  Intercharacter spaces are
	very long and interword spaces are extra long.  There is no
	standarisation in these durations, and they vary depending on
	the coder's preference and on the quality of the line.

	Continental Morse Code or International Morse Code is a widely
	used {de-facto standard}.  This table summarises the Western
	European usage of Continental Morse Code:

	  A .-    G --.    M --    S ...   Y -.--   4 ....-
	  B -...  H ....   N -.    T -     Z --..   5 .....
	  C -.-.  I ..     O ---   U ..-   0 -----  6 -....
	  D -..   J .---   P .--.  V ...-  1 .----  7 --...
	  E .     K -.-    Q --.-  W .--   2 ..---  8 ---..
	  F ..-.  L .-..   R .-.   X -..-  3 ...--  9 ----.

	  A-umlaut (1)  .-.-      E-acute       ..-..
	  A-acute       .--.-     N-tilde       --.--
	  A-corona (11) .--.-     O-umlaut (1)  ---.
	  CH (2)        ----      U-umlaut (1)  ..--

	  Punctuation Marks:            Other Signs:

	  period              .-.-.-    warning                      .-..-
	  comma               --..--    error                        ........
	  question mark       ..--..    repetition (ii ii)           .. ..
	  hyphen              -....-    wait (AS)                    .-...
	  colon (3)           ---...    interruption (BK)            -...-.-
	  underline (4)       ..--.-    understood (VE)              ...-.
	  apostrophe          .----.    transmission received (R)    .-.
	  quotation mark      .-..-.    beginning of message (KA)    -.-.-
	  parenthesis open (5)-.--.     end of message (AR)          .-.-.
	  parenthesis (close) -.--.-    end of transmission (K) (6)  -.-
	  equal sign (7)      -...-     end of transmission (KN) (8) -.--.
	  plus sign           .-.-.     closing mark (SK) (9)        ...-.-
	  multiplication sign -..-      closing station (CL)         -.-..-.
	  fraction mark       -..-.
	  separator (10)     .-..-

	  (1) Note: 'umlaut' is also known as 'diaeresis'
	  (2) Used only in German; not in Dutch.
	  (3) also: 'divided by'
	  (4) before and after the word to be underlined
	  (5) purportedly replaced by -.--.- for both "(" and ")"
	  (6) both and invitation to any station to start transmission
	  (7) also used as spacing between parts of transmission
	  (8) also an invitation to one station in particular to start
	      transmission
	  (9) connection will be closed.
	  (10) in fractions, for example.
	  (11) A-ring ?

	Where '.' is a short pulse, '-' a long one.  A '-' is three
	times as long as a '.'; character-internal spaces are as long
	as '.'s.  Intercharacter space are as long as -'s.  Spaces
	between words are as long as seven '.'s.

	(23 Nov 1996)

MORTRAN

	A {public domain} {FORTRAN} {preprocessor} for {structured
	programming}.

	(20 Sep 1995)

MOS

	{Metal Oxide Semiconductor}

Mosaic

	<World-Wide Web, tool> {NCSA}'s {browser} ({client}) for the
	{World-Wide Web}.

	Mosaic has been described as "the killer application of the
	1990s" because it was the first program to provide a slick
	{multimedia} {graphical user interface} to the {Internet}'s
	burgeoning wealth of distributed information services
	(formerly mostly limited to {FTP} and {Gopher}) at a time when
	access to the {Internet} was expanding rapidly outside its
	previous domain of academia and large industrial research
	institutions.

	NCSA Mosaic was originally designed and programmed for the {X
	Window System} by Marc Andreessen and Eric Bina at NCSA.
	Version 1.0 was released in April 1993, followed by two
	maintenance releases during summer 1993.  Version 2.0 was
	released in December 1993, along with version 1.0 releases for
	both the {Apple Macintosh} and {Microsoft Windows}.  An
	{Acorn Archimedes} port is underway (May 1994).

	Marc Andreessen, who created the NCSA Mosaic research
	prototype as an undergraduate student at the {University of
	Illinois} left to start {Mosaic Communications Corporation}
	along with five other former students and staff of the
	university who were instrumental in NCSA Mosaic's design and
	development.

	{(http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/help-about.html)}

	{(ftp://ftp.ncsa.uiuc.edu/)}.

	E-mail: <mosaic-x@ncsa.uiuc.edu> (X version),
	<mosaic-mac@ncsa.uiuc.edu> (Macintosh), <mosaic-win@ncsa.uiuc.edu>
	(Windows version), <mosaic@ncsa.uiuc.edu> (general help).

	(06 Apr 1995)

Mosaic Communications Corporation

	(MCC) Original name of {Netscape Communications Corporation}.
	They changed their name on 14 November 1994 to better reflect
	the company's other activities rather than just their browser
	based on {Mosaic}.

	{(http://www.netscape.com/info/newsrelease5.html)}

	(16 Dec 1994)

Moscow ML

	A light-weight implementation of {Standard ML} written by
	Sergei Romanenko <sergei-romanenko@refal.msk.su> of the
	{Keldysh Institute of Applied Mathematics} with assistance
	from Peter Sestoft <sestoft@dina.kvl.dk>, {Royal Veterinary
	and Agricultural University}.  Moscow ML is based on {CAML
	Light}.

	Version: 1.20 implements the Standard ML Core language.

	The sublanguage of Modules implemented by Moscow ML contains
	signatures and non-nested structures, and identifies
	structures with source files.  It is certainly less expressive
	than the full Standard ML Modules language, but the
	{type-safe} {separate compilation} facility is simple, useful,
	and easy to use.  It is the intention to implement the full
	Standard ML Modules language (including functors) in due
	course.

	Compilation of a {signature} produces a compiled interface
	file, which is used when compiling other signatures and
	structures.

	Compilation of a structure produces a {bytecode} file.
	Bytecode files are compact and load fast.  For instance, a
	3250-line program consisting of 24 structures and 17
	signatures compiles to 221 KB of bytecode and 241 KB of
	compiled signatures.  Starting the ML system and loading the
	24 bytecode files takes 1-2 cpu seconds plus network delays,
	less that 5 seconds real time in all.

	Release 1.20 permits loading of precompiled bytecode files
	into the top-level interactive session.  The next release will
	be able to create stand-alone executables by linking bytecode
	files.

	There is a mechanism for adding basis libraries, as in {Caml
	Light}.  Release 1.20 includes the basis libraries Array,
	List, and Vector and the {MS-DOS} version includes the
	Graphics library from {Caml Light}.

	In principle, Moscow ML can be compiled on any {platform}
	supported by {Caml Light}.  So far we have tried {Intel
	80386}-based {IBM PC}s running {MS-DOS}, {Microsoft Windows},
	{OS/2} or {Linux}, {DEC MIPS} running {Ultrix}, {DEC Alpha}
	running {OSF/1}, {Sun 4} running {SunOS}, {HP9000} running
	{HP/UX}, {SGI MIPS} running {IRIX} 5.

	Moscow ML is particularly useful when fast compilation and
	modest storage consumption are more important than fast
	program execution.

	Thanks to the efficient Caml Light run-time system used in
	Moscow ML, it compiles fast and uses little memory, typically
	5-10 times less memory than {SML/NJ} 0.93 and 2-3 times less
	than {Edinburgh ML}.  Yet the bytecode is only 3 to 10 times
	slower than SML/NJ 0.93 compiled native code (fast on {IBM
	PC}s, slower on {RISC}s).

	{DOS
	(ftp://dina.kvl.dk/pub/Peter.Sestoft/mosml/mos12bin.zip)}.
	{Linux
	(ftp://dina.kvl.dk:pub/Peter.Sestoft/mosml/linux-mos12bin.tar.gz)}.
	{Source
	(ftp://dina.kvl.dk:pub/Peter.Sestoft/mosml/mos12src.tar.gz)}.

	{Caml Light} 0.61 and {gcc} are required to recompile Moscow
	ML for {Unix} or Caml Light 0.61, {djgpp}, {Perl}, and
	{Borland C++} version 2.0 (or later) to recompile Moscow ML
	for {DOS}.

	(12 Dec 1994)

MOSFET

	{Metal Oxide Semiconductor Field-Effect Transistor}

Mosiac

	Do you mean {Mosaic}?

MOS Technologies

	A {microprocessor} design company started by some
	(ex-{Motorola}?) designers, shortly after the {Intel 8080} and
	{Motorola 6800}, in about 1975.  MOS Technologies introduced
	the {650x} series.  These processors were based on the
	{Motorola 6800} design, though they were not exact clones for
	legal reasons.

	(31 Oct 1994)

most general unifier

	If U is the most general {unifier} of a set of expressions
	then any other unifier, V, can be expressed as V = UW, where W
	is another substitution.  See also {unification}.

Most Significant Bit

	(MSB) {Bit} n-1 in an n bit {binary} number, the bit with the
	greatest weight (2^(n-1)).  The first or leftmost bit when the
	number is written in the usual way.

	(13 Jul 1995)

motd

	{message of the day}

motherboard

	<hardware> The main {printed circuit board} in an electronic
	device, particularly a computer, which contains sockets that
	accept additional boards ("daughter-boards").

	In a (personal) computer, the motherboard contains the {bus},
	the {microprocessor} and chips used for controlling any
	built-in {peripheral}s such as the keyboard, text and graphics
	display, {serial port}s and {parallel port}s, {joystick} and
	{mouse} {interface}s.

	(28 Apr 1995)

Motif

	The standard {graphical user interface} and {window manager}
	from {OSF}, running on the {X Window System}.

Motion JPEG

	{Moving JPEG}

Motorola

	{Motorola, Inc.}

Motorola 14500B

	(MC14500B) Probably the limit in small processors was the 1-bit 14500B {ICU} from {Motorola}.  It had a 4-bit instruction
	and controlled a single data read/write line, used for
	application control.  It had no address bus - that was an
	external unit that was added on.  Another {CPU} could be used
	to feed control instructions to the 14500B in an application.
	It had only 16 pins, less than a typical {RAM} chip, and ran
	at 1 MHz.

	(30 Nov 1994)

Motorola 6800

	A {microprocessor} released shortly after the {Intel 8080}, in
	about 1975.  It had 78 instructions, including the
	undocumented HCF ({Halt and Catch Fire}) bus test instruction.
	The 6800 evolved into the {Motorola 6801} and 6803.

	The {6502} was based on the design of the 6800 but had one
	less data register and one more index register.

	(31 Oct 1994)

Motorola 68000

	<processor> (MC68000) The first member of {Motorola, Inc.}'s
	family of 16 and 32-bit {microprocessor}s.  The successor to
	the {Motorola 6809} and followed by the {Motorola 68010}.

	The 68000 was actually a 32-bit architecture internally, but
	16-bit externally.  It also included 24-bit addressing and a
	{linear address space}, with no evil {segment register}s.
	That meant that a single directly accessed array or structure
	could be larger than 64K in size.  Addresses were computed as
	32 bit, but the top 8 bits were cut to fit the address bus
	into a 64 pin package (address and data shared a bus in the 40
	pin packages of the {8086} and {Zilog Z8000}).  Absence of
	segments made programming the 68000 easier than competing
	{Intel} processors.

	The 68000 had an {orthogonal instruction set} and sixteen
	{register}s, split into data and address registers.  One
	address register was reserved for the {Stack Pointer}.  Both
	types of registers could be used for any function except for
	direct addressing.  Only address registers could be used as
	the source of an address, but data registers could provide the
	offset from an address.

	Like the {Zilog Z8000}, the 68000 featured a supervisor and
	user mode, each with its own {Stack Pointer}.  The {Zilog
	Z8000} and 68000 were similar in capabilities, but the 68000
	was 32 bits internally, making it faster and eliminating
	forced segmentations.  It was designed for expansion,
	including specifications for {floating point} and string
	operations (floating point later implemented in the {Motorola
	68040}).  Like many other CPUs of the time, it could fetch the
	next instruction during execution (2 stage {pipeline}), the
	68040 was fully pipelined (6 stages).

	The 68000 was used in many {workstation}s, notably early {Sun
	2}s and {Sun 3}s, and {personal computer}s, notably {Apple
	Computer}'s first {Macintosh}es.

	Variants of the 68000 include the {68HC000} (a low-power HCMOS
	implementation) and the {68008} (an eight bit data bus version
	used in the {Sinclair QL}).

	["The 68000: Principles and Programming", Leo Scanlon, 1981].

	(22 Nov 1994)

Motorola 6801

	<processor> (And 6803) A version of the {Motorola 6800} with
	{ROM}, some {RAM}, a serial I/O port and other functions on
	the chip.  It was meant for embedded controllers, where the
	part count was to be minimised.  The 6803 led to the 68HC11
	and that was extended to 16 bits as the 68HC16.

	(07 Nov 1994)

Motorola 68010

	<processor> A {microprocessor} from {Motorola}.  It was the
	successor to the {Motorola 68000} and was followed by the
	{Motorola 68020}.  Some instructions which were previously
	{user mode} were made {system mode}, which necessitated
	patches to a few programs.

	The 68010 also had a primitive {cache}.  The DBxx instructions
	(decrement and branch) were cached, along with a few previous
	instructions.  Small loops could thus execute from the cache
	directly.

	At one time there was a 68010 variant that was pin-for-pin
	compatible with the 68000.  Early {Amiga} hackers replaced
	their 68000s with 68010s in order to get a small performance
	increase.

	(29 Nov 1995)

Motorola 68020

	<processor> A {microprocessor} from {Motorola}.  It was the
	successor to the {Motorola 68010} and was followed by the
	{Motorola 68030}.  The 68020 has 32-bit data and address buses
	and a 256-byte(?) {instruction buffer}.

	The 68020 was used in many models of the {Apple Macintosh} II
	series of {personal computers} and {Sun} 3 {workstations}.

	[Difference from '010?]

	(01 Mar 1995)

Motorola 68030

	<processor> A {microprocessor} from {Motorola}.  It was the
	successor to the {Motorola 68020} and was followed by the
	{Motorola 68040}.

	The 68030 has on-chip (split?) instruction and data {cache}s.
	It also has an on-chip {MMU} (except in the 680EC30 version).

	The 68030 is used in many models of the {Apple Macintosh} II
	series of {personal computer}s.

	[Cache?]

	(01 Mar 1995)

Motorola 68040

	<processor> A {microprocessor} from {Motorola}.  It was the
	successor to the {Motorola 68030} and was followed by the
	{Motorola 68060}.

	The 68040 has an on-chip {FPU} (except in the 680EC40) and
	split instruction and data {cache}s of 4 kilobytes(?) each.

	The 68040 is used in the {Apple Macintosh} Quadra series of
	{personal computer}s.

	(01 Mar 1995)

Motorola 68050

	There was no 68050.  The successor to the {Motorola 68040} was
	the {Motorola 68060}.

	The even numbers (68000, 68020, 68060) were reserved for major
	revisions to the 680x0 core.  The odd numbers (68010, 68030,
	68050) were minor upgrades from the previous chip.  For
	example, the {Motorola 68010} was a {Motorola 68000} with some
	minor enhancements and modifications to some user/superuser
	instruction assignments.  The {Motorola 68030} was a {Motorola
	68020} with an {MMU} and more minor enhancements.  The 68050
	would have been a 68040 with some bugs fixed, which didn't
	really warrant a new name so it was sold as a 68040.

	(29 Nov 1995)

Motorola 68060

	<processor> A 32-bit {microprocessor} from {Motorola}, the
	successor to the {Motorola 68040}.  The 68060 is the highest
	performance {680x0} family processor currently (April 1995)
	available.  It has 2 to 3 times the performance of the
	68040.

	The 68060 is probably the last development from Motorola in
	the high performacnce 680x0 series.  They don't want to
	compete with their own {PowerPC} chips.  The 680x0 series is
	intended more for embedded systems, where it is already very
	popular.  New developments here seem to integrate more
	peripheral functions on chip rather than increasing processing
	power.

	(22 Apr 1995)

Motorola 6809

	(MC6809) An eight bit {microprocessor} from {Motorola, Inc.}

	The 6809 was a major advance over both its predecessor, the
	{Motorola 6800} and also over the {6502}.  The 6809 had two 8-bit {accumulator}s, rather than one in the 6502, and could
	combine them into a single 16-bit register.  It also featured
	two {index register}s and two {stack pointer}s, which allowed
	for some very advanced {addressing mode}s.  The 6809 was
	source compatible with the 6800, even though the 6800 had 78
	instructions and the 6809 only had around 59 (including a
	{SEX} instruction).  Some instructions were replaced by more
	general ones which the {assembler} would translate, and some
	were even replaced by {addressing mode}s.

	Other features were one of the first multiplication
	instructions of the time, 16-bit arithmetic and a special fast
	{interrupt}.  But it was also highly optimised, gaining up to
	five times the speed of the 6800 series CPU.  Like the 6800,
	it included the undocumented HCF ({Halt and Catch Fire}) bus
	test instruction.

	The {Hitachi 6309} was a version with extra {register}s.  The
	6809 was used in the UK "{Dragon 32}" {personal computer} and
	was followed by the {Motorola 68000}.

	See also {SEX}.

	{Usenet} newsgroup: {news:comp.sys.m6809}.

	There is a simulator called {usim} and an {assembler} by
	Lennart Benschop <lennart@blade.stack.urc.tue.nl> was posted
	to {Usenet} newsgroup {alt.sources} on 03 Nov 1993.

	(01 Feb 1995)

Motorola 680LC40

	<processor> A version of the {Motorola 68040} with no {MMU} or
	{FPU}, making it more like an enhanced {Motorola 68020}.

	(21 Mar 1995)

Motorola 680x0

	<processor> Shorthand for any member for the {Motorola 68000}
	family of {microprocessor}s from {Motorola, Inc.}  The "x"
	stands for 0, 1, 2, 3, 4 or 6.

	(01 May 1993)

Motorola 68HC11

	<processor> A {microcontroller} family from {Motorola}
	descended from the {Motorola 6800} {microprocessor}.

	The 68HC11 devices are more powerful and more expensive than
	the 68HC05 family.

	{FAQ
	(ftp://src.doc.ic.ac.uk/usenet/usenet-by-group/comp.answers/microcontroller-faq/68hc11)}.

	There is an {opcode} simulator for the 68HC11, by Ted Dunning
	<ted@nmsu.edu>.  Interrupts, hardware I/O, and half carries
	are still outside the loop.  Adding interrupts may require
	simulating at the clock phase level.  Version 1.

	{(ftp://crl.nmsu.edu/pub/non-lexical/6811/sim6811.shar)}

	(28 Apr 1995)

Motorola 88000

	A family of {RISC} {microprocessor}s from {Motorola}.

	[Details?]

	(01 Mar 1995)

Motorola, Inc.

	<company> One of the world's leading providers of wireless
	communications, semiconductors and advanced electronic systems
	and services.  Major equipment businesses include cellular
	telephone, two-way radio, paging and data communications,
	personal communications, automotive, defense and space
	electronics, computers, satellite communications systems,
	police and emergency service radio systems, taxicab
	dispatching (radio) systems.  Communication devices, computers
	and millions of consumer products are powered by Motorola
	semiconductors.

	They are probably best known in the computing world for their
	{microprocessor}s, including the {Motorola 6800} and {Motorola
	68000} {CISC} families and {Motorola 88000} {RISC}s, the
	{Motorola DSP56000} {digital signal processor}s and the
	{PowerPC} on which they collaborated.  They also led the
	development of {VMEbus}.

	Quarterly sales $5400M, profits $367M (Aug 1994).

	See also {Envoy}, {Monsoon}, {MPL}.

	{(http://www.mot.com/)}

	Address: Schaumberg, Illinois, USA.

	(01 Dec 1994)

mount

	<file system> To make a {file system} available for access.

	{Unix} does this by associating the file system with a
	{directory} (the "mount point") within a currently mounted
	file system.  The "root" file system is mounted on the {root
	directory}, "/" early in the {boot} sequence.  "mount" is also
	the {Unix} command to do this, "unmount" breaks the
	association.

	E.g., "mount attaches a named filesystem to the file system
	hierarchy at the pathname location directory [...]" -- {Unix
	manual page} mount(8).

	File systems are usually mounted either at {boot time} under
	control of {/etc/rc} (or one of its subfiles) or on demand by
	an {automounter} {daemon}.

	Other {operating systems} such as {VMS} and {DOS} mount file
	systems as separate directory hierarchies without any common
	ancestor or root directory.

	Apparently derived from the physical sense of "mount" meaning
	"attach", as in "head-mounted display", or "set up", as in
	"always mount a {scratch monkey}, etc."

	{Unix manual page}: mount(8).

	(14 Apr 1997)

Mouse

	A mighty small {macro} language developed by Peter Grogono in
	1975.

	["Mouse, A Language for Microcomputers", P. Grogono
	<grogono@concour.cs.concordia.ca> Petrocelli Books, 1983].

	(31 Oct 1994)

mouse

	<hardware> The most common kind of {pointing device}.  A mouse
	is moved over a flat horizontal surface and includes some
	means of converting its position in two dimensions into X-Y
	coordinates which the computer can read.  It also has one or
	more buttons whose state can also be read.  It is called a
	mouse because the wire connecting it to the computer or
	keyboard looks like a mouse's tail.

	The two commonest types of mouse are rolling ball and optical.
	The former has a ball which rests on the surface and rotates
	as the mouse moves.  The ball is also in contact with two
	shafts at right-angles to each other whose rotation is
	measured by optoelectronic sensors.

	An optical mouse has no moving parts but requires a special
	mouse mat (mouse mats used with rolling ball mice are optional
	extras to improve traction) marked with a pattern of
	horizontal and vertical lines.  The mouse contains a
	{light-emitting diode} and photocells to detect the light
	reflected from the pattern on the mat.

	Some mice are shaped to fit the hand and some even come in
	left- and right-handed versions.

	A good {operating system} will specify conventions for the use
	of three mouse buttons.  One button, as on the {Macintosh}, is
	far too limiting and, far from simplifying use, requires the
	use of modifier keys on the keyboard to accomplish tasks which
	could be done more simply with multiple mouse buttons.

	(27 Jun 1995)

mouse ahead

	The {point-and-click} analog of "{type ahead}".  To manipulate
	a computer's pointing device (almost always a mouse in this
	usage, but not necessarily) and its selection or command
	buttons before a computer program is ready to accept such
	input, in anticipation of the program accepting the input.
	Handling this properly is rare, but it can help make a {WIMP
	environment} much more usable, assuming the users are familiar
	with the behaviour of the user interface.

	(05 Dec 1994)

mouse around

	To explore public portions of a large system, especially a
	network such as Internet via {FTP} or {TELNET}, looking for
	interesting stuff to {snarf}.

	(05 Dec 1994)

mouse arrest

	<jargon> Getting busted for violating an online service's rule
	of conduct.  "Sorry I couldn't get back to you.  {AOL} put me
	under mouse arrest."

	(30 Mar 1997)

mouse belt

	See {rat belt}.

mouse droppings

	1. <graphics, operating system, jargon> {Pixels} (usually
	single) that are not properly restored when the {mouse
	pointer} moves away from a particular location on the screen,
	producing the appearance that the mouse pointer has left
	droppings behind.  The major causes for this problem are
	{MS-DOS} programs that write to the screen memory
	corresponding to the mouse pointer's current location without
	hiding the mouse pointer first, and mouse drivers that do not
	quite support the {graphics mode} in use.

	2. <World-Wide Web, jargon> The client address recorded in a
	{World-Wide Web} server's log whenever a client connects to a
	site.

	Users may be unaware that their activity is being logged in
	this way but the potential for misuse of the information is
	limited.

	[March 1996 Macworld, p260, Viewpoint article by Larry Irving].

	(05 Dec 1994)

mouse elbow

	A tennis-elbow-like fatigue syndrome resulting from excessive
	use of a {WIMP}.  Similarly, "mouse shoulder".  {GLS} reports
	that he used to get this a lot before he taught himself to be
	ambimoustrous.

	(05 Dec 1994)

mouse mat

	<hardware> (U.S.: "mouse pad") A small sheet with a special
	surface for a rolling ball {mouse} to move on.  Most mouse
	mats are sheets of rubber or foam about 20cm by 25cm and about
	5mm thick with one side covered with cloth or sometimes hard
	plastic.  Deluxe versions come combined with a {wrist rest}.

	It is rare to find a mouse mat which does not carry some form
	of advertisement for some company or other.  They are such a
	common free gift that few people actually have to buy one.

	It debatable whether mouse mats are useful at all, or whether
	any appropriate surface (preferably hard, even, flat, and
	clean) is as good.  Howevever, some mice which use optical
	(e.g. {Sun}) or radio-frequency sensors (e.g. ?) to detect
	motion (instead of using a rolling ball) will only work on
	specially designed mouse mats.  Critics may consider this to
	be part of the {connector conspiracy}, though the designers
	would claim greater reliability due to the absence of moving
	parts.

	(14 Apr 1997)

mouse pad

	{mouse mat}

mouse trails

	<operating system> A feature (usually of {Graphical User
	Interface}s) which causes the {mouse} {pointer} to leave a
	trail across the screen.  This is done by keeping track of the
	last eight or so (maybe configurable) pointer positions, and
	only erasing the oldest.  This means that at any time, there
	may be up to eight pointers on the screen, but if the mouse is
	still, they will all be in the same position, and so only one
	will be visible.  When the mouse moves, it appears to leave a
	trail of pointers behind it, and this can dramatically
	increase the visibility of the pointer when using {LCD}
	screens.  The older ones had such long {persistence} that a
	single mouse pointer, when moving, tended to be completely
	invisible, and on a cluttered screen, was very difficult to
	find.

	(08 Jul 1996)

mouso

	<jargon> /mow'soh/ (By analogy with "{typo}") An error in
	{mouse} usage resulting in an inappropriate selection or
	graphic garbage on the screen.

	Compare {thinko}.

	(21 Apr 1996)

movies

	{films}

Moving JPEG

	<graphics, compression> (M-JPEG) A compression technique for
	moving {images} which applies {JPEG} still image compression
	to each {frame} of a moving picture sequence.

	Play-back requires a machine capable of decompressing and
	displaying each JPEG image quickly enough to sustain the
	required {frame rate} of the picture sequence.

	There is no standard for Moving JPEG as with JPEG, but there
	are JPEG compression chips (for example see {Zoran
	(http://www.zoran.com/)}) which are designed to work at
	television frame rates and {resolutions}.

	See also {MPEG} and {MPEG2}.

	(15 Dec 1996)

Moving Pictures Experts Group

	<compression, standard, algorithm, file format, body> (MPEG)
	An {ISO} committee that generates {standard}s for digital
	{video compression} and audio.  Also the name of their
	{algorithm}.

	{MPEG-1} is optimised for {CD-ROM}.  Variants under
	development in Nov 1994 are {MPEG-2} for {broadcast quality
	video} and {MPEG-4} for low {bandwidth} video telephony.

	{An MPEG decoder from Berkeley
	(ftp://toe.cs.berkeley.edu/pub/multimedia/mpeg/mpeg_play-2.0.tar.Z)}
	or {with a Motif interface
	(ftp://toe.cs.berkeley.edu/pub/multimedia/mpeg/mpeg_play-src.tar.Z)}
	and a {library of routines
	(ftp://yorick.mni.mcgill.ca/pub/mpeg/)} soon to be {here
	(ftp://ftp.mni.mcgill.ca/pub/mpeg/)}.

	(16 Aug 1996)

Moxie

	A language for {real-time} computer music synthesis, written
	in {XPL}.

	["Moxie: A Language for Computer Music Performance",
	D. Collinge, Proc Intl Computer Music Conf, Computer Music
	Assoc 1984, pp.217-220].

	(05 Dec 1994)

Mozilla

	<World-Wide Web> How to pronounce {Netscape}.

	[Derived from "{Mosaic} killer"?]

	(16 Dec 1994)

MP1

	{MPEG-1}

MP-1

	{Assembly language} for the {MasPar} computer.

	(05 Dec 1994)

MP2

	{MPEG-2}

MP3

	{MPEG-3}

MPC

	1. <operating system> {Memory Protection Check}.

	[Origin?]

	2. <computer> {Multimedia Personal Computer}.

	3. {Multiprocess Communications}.

MPC Level 1 Specification

	<multimedia> The original {Multimedia Personal Computer}
	specification.

	Minimum requirements are a 16 MHz {386SX} with 2 {megabytes}
	of {RAM}, a 30 MB {hard disk drive}, and a {CD-ROM} drive with
	a sustained data transfer rate of 150 KB/s at no more than 40%
	of {CPU} {bandwidth} and reading at least 16 KB blocks.  The
	maximum average {seek time} is 1 second and the {Mean Time
	Between Failure} 10000 hours.  Capability Mode 1.

	The computer must have 8-bit digital sound and an 8-note
	synthesizer with {MIDI} playback.  Sample rates of 22.05 and
	11.025 kHz must be supported by no more than 10% of CPU
	bandwidth, preferably 44.1 kHz at no more than 15% of CPU
	bandwidth.  The synthesizer must support multi-voice,
	multi-timbral generation of six simultaneous melody notes and
	two simultaneous percussive notes with internal mixing
	capabilities to combine input from three sources and present
	the output as a stereo, line-level audio signal at the back
	panel.

	The video display must have a {resolution} of at least 640 x
	480 in 16 colours.  MIDI, I/O, and joystick ports must be
	previded.

	Compare {MPC Level 2 Specification}.

	(19 Jan 1997)

MPC Level 2 Specification

	<multimedia> An improved version of the {MPC Level 1
	Specification} for {Multimedia Personal Computers}.

	Minimum requirements are a 25 Mhz {486SX} with 4 MB of RAM and
	a 160 MB {hard disk drive}.  The {CD-ROM} drive must support a
	sustained data transfer rate of 300 KB/s using at most 60% of
	{CPU} {bandwidth} on 16 KB minimum block read size.  Its
	average {seek time} must be 400 milliseconds maximum.
	Capability Mode 1, Mode 2 form 1, Mode 2 form 2, Multisession.
	It must be {CD-ROM XA}-ready.

	The computer must have 16-bit digital sound, an 8-note
	synthesizer, and {MIDI} playback.
	A sample rate of 44.1 kHz must be available on stereo channels
	with more more than 15% of CPU bandwidth.

	A video display with a {resolution} of 640 x 480 in 65,536
	colours, and MIDI, I/O, and joystick ports must be provided.

	(19 Jan 1997)

MPEG

	{Moving Pictures Experts Group}

MPEG-1

	<compression, standard, algorithm, file format> The
	first version of the {MPEG} format, optimised for {CD-ROM}.
	It uses {discrete cosine transform} (DCT) and {Huffman coding}
	to remove spatially redundant data within a frame and
	block-based {motion compensated prediction} (MCP) to remove
	data which is temporally redundant between frames.  Audio is
	compressed using {subband encoding}.  These {algorithm}s allow
	better than VHS quality video and almost CD quality audio to
	be compressed onto and streamed off a single speed {CD-ROM}
	drive.

	MPEG encoding can introduce blockiness, colour bleed and
	shimmering effects on video and lack of detail and
	quantisation effects on audio.

	The official name of MPEG-1 is {IS}-11172.

	(18 Apr 1995)

MPEG-2

	<compression, standard, algorithm, file format> A
	variant of the {MPEG} video and audio {compression}
	{algorithm} and file format, optimised for {broadcast quality
	video}.

	MPEG-2 has been approved as {International Standard}
	{IS-13818}.

	(18 Apr 1995)

MPEG-3

	<compression, standard, algorithm, file format> A variant of
	the {MPEG} {video} and {audio} {compression} {algorithm} and
	{file} format.

	{Filename extension}: ".MP3".

	[Technical details?  Status as a standard?]

	(09 Sep 1997)

MPG

	1. <jargon> Miles per gallon, as in "Your MPG may
	vary", i.e. "{Your mileage may vary}".

	2. <filename extension> A {filename extension} for a file in
	{MPEG} format.

	(07 Mar 1995)

MPI

	{Message Passing Interface}

MPL

	1. <language> An early possible name for {PL/I}.

	[Sammet 1969, p.542].

	2. {MasPar} {data-parallel} version of {C}.  See also {ampl}.

	{Compiler version 3.1 (ftp://maspar.maspar.com/put/)}

	3. Motorola Programming Language.  A low-level {PL/I}-like
	language, similar to {PL/M}, but for the {Motorola 6800}.

	4. MicroProgramming Language.  Simple language for
	microprogramming.  Statements on the same line represent
	{register} transfers caused by one microinstruction, and are
	executed in parallel.

	["Structured Computer Organization", A.S. Tanenbaum, First
	Edition, P-H 1976. (Replaced in later editions by Mic-1)].

	(07 Mar 1995)

MPL II

	[Burroughs VMS MPL II Language Reference Manual].

MP/M

	{Multi-tasking Program for Microcomputers}

MPP

	{Multiple Parallel Processing}

MPPL

	<language> An early possible name for {PL/I}.

	[Sammet 1969, p. 542].

	(07 Mar 1995)

MPR II

	<standard> A green standard published by SWEDAC (the Swedish
	Board for Technical Accreditation) that limits the maximum
	amount of {ELF} and {VLF} electromagnetic radiation a computer
	{monitor} may emit.  Most {personal computer} monitors comply
	with this standard or the more stringent European TCO
	requirement.

	(19 Feb 1996)

M-Prolog

	1. Marseille Prolog.

	2. An extension to {Prolog} involving {module}s.

	["The MProlog System", J. Bendl et al, Proc Logic Prog
	Workshop, 1980].

	(31 Oct 1994)

MPS III

	Solving matrices and producing reports.  "MPS III DATAFORM
	User Manual", Management Science Systems (1976).

MPSX

	Mathematical Programming System Extended.  Solution strategy
	for mathematical programming.  "Mathematical Programming
	System Extended (MPSX) Control Language User's Manual",
	SH20-0932, IBM.  Sammet 1978.

MPV

	An extension of the {VRTX} {real-time} {operating system} to
	support {multi-processing}.

	(08 Nov 1994)

MPX

	{Multiplexor Channel}

MQG

	{Multi-threaded Query Gate}

MRDS

	{Multics Relational Data Store}

MRI

	1. <application> {Magnetic Resonance Imaging}.

	2. {Measurement Requirements and Interface}.

MROM

	{Mask Read Only Memory}

MRP

	{manufacturer resource planning}

MRS

	Modifiable Representation System.

	An integration of {logic programming} into {Lisp}.

	["A Modifiable Representation System", M. Genesereth et al,
	HPP 80-22, CS Dept Stanford U 1980].

	(08 Nov 1994)

MS Access

	{Microsoft Access}

MSAU

	{Media Access Unit}

MSB

	{Most Significant Bit}

MS-BASIC

	<language> {Microsoft Basic}.

MS-DOG

	<abuse> A pejorative name for {MS-DOS}.

MS-DOS

	<operating system> /em ess doss/ Microsoft Disk Operating
	System. (Or "{DOS}", "{MS-DOG}", "{mess-dos}") {Microsoft
	Corporation}'s {clone} of {CP/M} for the {8088} crufted
	together in 6 weeks by hacker Tim Paterson, who is said to
	have regretted it ever since.

	MS-DOS is a single user {operating system} that runs one
	program at a time and is limited to working with one megabyte
	of memory, 640 kilobytes of which is usable for the
	{application program}.  Special add-on {EMS} memory boards
	allow EMS-compliant software to exceed the 1Mbyte limit.
	Add-ons to DOS, such as {Microsoft Windows} and {DESQview},
	take advantage of EMS and allow the user to have multiple
	applications loaded at once and switch between them.

	Numerous features, including vaguely {Unix}-like but rather
	broken support for subdirectories, {I/O redirection}, and
	{pipeline}s, were hacked into MS-DOS 2.0 and subsequent
	versions; as a result, there are two or more incompatible
	versions of many system calls, and MS-DOS programmers can
	never agree on basic things like what character to use as an
	option switch or whether to be case-sensitive.  The resulting
	mess is now the highest-unit-volume {operating system} in
	history.  It is used on many {Intel} 16 and 32 bit
	{microprocessor}s and {IBM PC} compatibles.

	Many of the original DOS functions were calls to {BASIC} (in
	{ROM} on the original {IBM PC}), e.g. Format and Mode.  People
	with non-IBM PCs had to buy {MS-Basic} (later called
	{GWBasic}).  Most version of DOS came with some version of
	BASIC.

	Also know as PC-DOS or simply as DOS, which annoys people
	familiar with other similarly abbreviated operating systems
	(the name goes back to the mid-1960s, when it was attached to
	{IBM}'s first disk operating system for the {IBM 360}).  Some
	people like to pronounce DOS like "dose" or to compare it to a
	dose of brain-damaging drugs (a slogan button in wide
	circulation among hackers exhorts: "MS-DOS: Just say No!").

	{Microsoft MS-DOS page
	(http://www.microsoft.com/chicago/wwwhtml/ms-dos/ms-dos.html)}

	(04 May 1995)

MSG.84

	["Analysis and Design in MSG.84: Formalizing Functional
	Specifications", V. Berzins et al IEEE Trans Soft Eng
	SE-11(8):657-670 (Aug 1985)].

	[What is it?]

	(04 May 1995)

msgGUI

	<library> A {graphical user interface} for {GNU Smalltalk}.
	This package contains the basics for creating window
	{application}s in the manner available in other graphical
	{Smalltalk} implementations.  Version 1.0 of the library was
	by Mark Bush <bush@ecs.ox.ac.uk>.

	{(ftp://ftp.comlab.ox.ac.uk/pub/Packages/mst/mstGUI-1.0.tar.Z)}

	(14 Dec 1992)

MSM

	{Micronetics Standard MUMPS}

MS Mail

	{Microsoft Mail}

MS-Windows

	{Microsoft Windows}

MswLogo

	<language> A {Microsoft Windows} {front-end} for {Berkeley
	Logo} by George Mills <mills@softronix.com>.  MswLogo has 3D
	{primitives} and {GUI} support.  It runs on every flavour of
	Windows from 16-bit to NT.

	{Home (http://www.softronix.com/logo.html)}.

	(01 Dec 1997)

MS Word

	{Microsoft Word}

MTA

	1. <messaging> {Message Transfer Agent}.

	2. <messaging> {Message Transfer Architecture}. ({AT&T}).

	3. {Multiple Terminal Access}.

	4. {Maintenance Task Analysis}.

	(28 Feb 1997)

MTBF

	{Mean Time Between Failures}

mtc

	A {Modula-2} to {C} translator.

	{(ftp://rusmv1.rus.uni-stuttgart.de/soft/Unixtools/compilerbau/mtc.tar.Z)}

	(1991/10/25)

M Technology Association

	The {MUMPS} User's Group.

	Address: 1738 Elton Road, Suite 205, Silver Spring, MD
	20903-1725, USA.

	Telephone: +1 301 431-4070.  Fax: +1 301 431-0017.

	(10 Jan 1995)

MTOS

	1. <operating system> A family of {real-time} {operating systems}
	for use in {embedded  systems}.	 It is	developed and marketed by
	{Industrial Programming, Inc.}.

	2. <operating system> {MultiTOS}

	(03 Jun 1997)

MTS

	{Message Transport System}

MTU

	{Maximum Transmission Unit}

Mu

	<character> (Greek letter).

	1. <unit> /micro/ prefix denoting division by 10^6, e.g. mu m
	(micrometre, a millionth part of a metre).  Sometimes written
	as a 'u', the ASCII character nearest in appearance.

	2. <mathematics> /myoo/ In the theory of functions, mu x . E
	denotes the least value of x for which E = x, i.e. the {least
	fixed point} of the function \ x . E.  The {recursive}
	function mu f . H f satisfies (and is defined by) the equation

		mu f . H f = H (mu f . H f)

	An alternative notation for the same function is

		fix H = H (fix H)

	See {fixed point combinator}.

	3. /moo/ The correct answer to the classic trick question
	"Have you stopped beating your wife yet?".  Assuming that you
	have no wife or you have never beaten your wife, the answer
	"yes" is wrong because it implies that you used to beat your
	wife and then stopped, but "no" is worse because it suggests
	that you have one and are still beating her.  According to
	various Discordians and Douglas Hofstadter the correct answer
	is usually "mu", a Japanese word alleged to mean "Your
	question cannot be answered because it depends on incorrect
	assumptions".

	Hackers tend to be sensitive to logical inadequacies in
	language, and many have adopted this suggestion with
	enthusiasm.  The word "mu" is actually from Chinese, meaning
	"nothing"; it is used in mainstream Japanese in that sense,
	but native speakers do not recognise the Discordian
	question-denying use.  It almost certainly derives from
	overgeneralisation of the answer in the following well-known
	Rinzei Zen teaching riddle:

	A monk asked Joshu, "Does a dog have the Buddha nature?"
	Joshu retorted, "Mu!"

	See also {has the X nature}, {AI Koan}, and Douglas
	Hofstadter's book, "Gdel, Escher, Bach: An Eternal Golden
	Braid".

	4. <database> {multiple value}.

	(30 Oct 1995)

MUA

	{Mail User Agent}

MUCAL

	<language> A language for playing music on the {PDP-8}.

	(16 Apr 1995)

MUD

	<games> {Multi-User Dimension} or "Multi-User Domain".
	Originally "Multi-User Dungeon".

	(16 Apr 1995)

muddie

	<games> Synonym {mudhead}.  More common in Great Britain,
	possibly because system administrators there like to mutter
	"bloody muddies" when annoyed at the species.

Muddle

	Original name of {MDL}.

mudhead

	<games> A {MUD} player who eats, sleeps, and breathes MUD.
	Mudheads have been known to fail their degrees, drop out,
	etc. with the consolation, however, that they made wizard
	level.  When encountered in person, on a MUD or in a chat
	system, all a mudhead will talk about is three topics: the
	tactic, character, or wizard that is supposedly always
	unfairly stopping him/her from becoming a wizard or beating a
	favourite MUD; why the specific game he/she has experience
	with is so much better than any other; and the MUD he or she
	is writing or going to write because his/her design ideas are
	so much better than in any existing MUD.  See also {wannabee}.

	To the anthropologically literate, this term may recall the
	Zuni/Hopi legend of the mudheads or "koyemshi", mythical
	half-formed children of an unnatural union.  Figures
	representing them act as clowns in Zuni sacred ceremonies.

	(29 Nov 1994)

muFP

	A {functional language} for hardware design, a predecessor of
	{Ruby}.

mu-law

	The North America {standard} for {nonuniform quantising
	logarithmic compression}.

	[Equation?]

	(21 Feb 1995)

Mule

	<text, tool> A multi-lingual enhancement of {GNU Emacs}.  Mule
	can handle not only {ASCII} characters (7 bit) and {ISO
	Latin 1} characters (8 bit), but also {16-bit characters} like
	Japanese, Chinese, and Korean.  Mule can have a mixture of
	languages in a single buffer.

	Mule runs under the {X window system}, or on a {Hangul
	terminal}, {mterm} or {exterm}.

	Latest version: 2.3.

	{Home (ftp://etlport.etl.go.jp/pub/mule)}

	(28 Jan 1996)

Mul-T

	An implementation of {Multilisp} built on {T}, for the {Encore
	Multimax}.

	["Mul-T: A High-Performance Parallel Lisp", SIGPLAN Notices
	24(7):81-90 (Jul 1989)].

	(21 Feb 1995)

Multi-BinProlog

	<language> A {multi-threaded} {Linda}-style parallel extension
	to {BinProlog} for {Solaris} 2.3.

	Version: 3.30.

	(04 Apr 1995)

multiC

	<language> A {data-parallel} version of {C} from {Wavetracer}.

	(04 Apr 1995)

MultiCal System

	E-mail: Richard Snodgrass <rts@cs.arizona.edu>.

	{(ftp://ftp.cs.arizona.edu/tsql/multical)}

	[What is it?]

	(11 Nov 1994)

multicast addressing

	{Ethernet} addressing scheme used to send {packet}s to devices
	of a certain type or for {broadcast}ing to all nodes.  The
	least significant bit of the most significant byte of a
	multi-cast address is one.

multicast backbone

	(MBONE) A {virtual network} on top of the {Internet} which
	supports {routing} of {IP} {multicast} {packet}s, intended for
	{multimedia} transmission.  MBONE gives public access {desktop
	video} communications.  The quality is poor with only 3-5
	frames per second instead of the 30 frames per second of
	commercial television.  Its advantage is that it avoids all
	telecommunications costs normally associated with
	teleconferencing.  An interesting innovation is the use of
	MBONE for audio communications and an electronic "whiteboard"
	where the computer screen becomes a shared workspace where two
	physically remote parties can draw on and edit shared
	documents in {real-time}.

	(27 Oct 1994)

Multi-channel Memorandum Distribution Facility

	<messaging> (MMDF) An {electronic mail} system for Unix(?)
	which is much easier to configure than {sendmail}.  The source
	is available.

	MMDF is a versatile and configurable mail routing system
	({MTA}) which also includes user interface programs ({MUA}).
	It can be set up to route mail to different {domains} and
	{hosts} over different channels (e.g. {SMTP}, {UUCP}).  On
	{UNIX} systems, its configuration begins with the
	/usr/mmdf/mmdftailor file, which defines the machine and
	domain names, various other configuration tables (alias,
	domain, channel) and other configuration information.

	[Home?]

	(14 Jan 1997)

multician

	<jargon, person> /muhl-ti'shn/ A term coined at {Honeywell},
	ca. 1970 for a competent user of {Multics}.  Perhaps oddly, no
	one has ever promoted the analogous "Unician".

	(24 Aug 1996)

Multics

	<operating system> /muhl'tiks/ MULTiplexed Information and
	Computing Service.  A {time-sharing} {operating system}
	co-designed by a consortium including {MIT}, {GE} and {Bell
	Laboratories} as a successor to MIT's {CTSS}.  The system
	design was presented in a special session of the 1965 Fall
	Joint Computer Conference and was planned to be operational in
	two years.  It was finally made available in 1969, and took
	several more years to achieve respectable performance and
	stability.

	Multics was very innovative for its time - among other things,
	it was the first major OS to run on a {symmetric
	muliprocessor}; provided a {hierarchical file system} with
	{access control} on individual files; mapped files into a
	paged, segmented {virtual memory}; was written in a
	{high-level language} ({PL/I}); and provided dynamic
	inter-procedure linkage and memory (file) sharing as the
	default mode of operation.  Multics was the only
	general-purpose system to be awarded a B2 {security rating} by
	the {NSA}.

	Bell Labs left the development effort in 1969.  {Honeywell}
	commercialised Multics in 1972 after buying out GE's computer
	group, but it was never very successful: at its peak in the
	1980s, there were between 75 and 100 Multics sites, each a
	multi-million dollar {mainframe}.

	One of the former Multics developers from Bell Labs was {Ken
	Thompson}, a circumstance which led directly to the birth of
	{Unix}.  For this and other reasons, aspects of the Multics
	design remain a topic of occasional debate among hackers.  See
	also {brain-damaged} and {GCOS}.

	MIT ended its development association with Multics in 1977.
	Honeywell sold its computer business to {Bull} in the mid
	1980s, and development on Multics was stopped in 1988 when
	Bull scrapped a Boston proposal to port Multics to a
	{platform} derived from the {DPS-6}.

	A few Multics sites are still in use as late as 1996.

	The {Jargon file} 3.0.0 claims that on some versions of
	Multics one was required to enter a password to log out but
	James J. Lippard <lippard@primenet.com>, who was a Multics
	developer in Phoenix, believes this to be an {urban legend}.
	He never heard of a version of Multics which required a
	password to logout.  Tom Van Vleck <thvv@best.com> agrees.  He
	suggests that some user may have implemented a 'terminal
	locking' program that required a password before one could
	type anything, including logout.

	{Home (http://www.best.com/~thvv/multics.html)}.

	{Usenet} newsgroup: {news:alt.os.multics}.

	(15 Nov 1996)

Multics Relational Data Store

	<database> (MRDS) The first commercial {relational database},
	implemented as part of {Multics} by Jim Weeldreyer and Oris
	Friesen of {Honeywell} Phoenix in about 1977.  MRDS included a
	report writer called LINUS written by Jim Falksen.

	{(http://www.best.com/~thvv/mgm.html#MRDS)}.

	(29 Jan 1997)

Multiflow Computer

	<company> A now-defunct computer company, best known for its
	work in {Very Long Instruction Word} processors.

	Address: New Haven, Conn. USA.

	(01 Mar 1995)

Multi-Garnet

	A better constraint system for Garnet.  Version 2.1 by Michael
	Sannella <sannella@cs.washington.edu>.

	{(ftp://a.gp.cs.cmu.edu/usr/garnet/alpha/src/contrib/multi-garnet)}

	(21 Sep 1992)

multihomed host

	A {host} which has more than one connection to a {network}.
	The host may send and receive data over any of the links but
	will not route traffic for other nodes.

multilayer perceptron

	A network composed of more than one layer of {neuron}s, with
	some or all of the outputs of each layer connected to one or
	more of the inputs of another layer.  The first layer is
	called the input layer, the last one is the output layer, and
	in between there may be one or more hidden layers.

MultiLisp

	<language> A {parallel} extension of {Scheme} with explicit
	{concurrency}.  The form (future X) immediately returns a
	"{future}", and creates a {task} to evaluate X.  When the
	evaluation is complete, the future is resolved to be the
	value.

	["MultiLisp: A Language for Concurrent Symbolic Computation",
	R. Halstead, TOPLAS pp.501-538 (Oct 1985)].

	[Did MultiLisp use {PVM} as its intermediate language?]

	(10 Feb 1998)

multimedia

	Human-computer interaction involving text, graphics, voice and
	video.  Often also includes concepts from {hypertext}.

	This term has come to be almost synonymous with {CD-ROM} in
	the {personal computer} world because the large amounts of
	data involved are currently best supplied on CD-ROM.

	{Usenet} newsgroup: {news:comp.multimedia}.

	(02 Dec 1994)

Multimedia and Hypermedia information coding Expert Group

	<multimedia, standard> (MHEG) is an {ISO} {standard} encoding
	for {multimedia} and {hypermedia} information, designed to
	facilitate use and interchange of such information in varied
	domains such as games, electronic publishing and medical
	applications.

	{Fokus MHEG page (http://www.fokus.gmd.de/ovma/mheg/)}.

	(16 Apr 1996)

MultiMedia Compact Disc

	<storage> (MMCD) A {CD-ROM} {standard} for storing 4.7 GB of
	data including video.  MMCD is being developed by a large
	numer of computer manufacturers and is expected to be shipped
	in late 1996 or early 1997.  Initially it will be aimed at the
	consumer market, then perhaps in {CD-ROM} format for
	computers, and maybe later on erasble CD.

	(23 Nov 1995)

MultiMedia Extension

	{MMX}

Multimedia Integrated Conferencing for European Researchers

	<communications, project> (MICE) A project which aims to
	create a pilot (virtual) network between European researchers,
	and also to connect them to sites in the US.  The MICE system
	currently allows {multimedia} conferencing ({audio}, {video}
	and shared workspace) between conference rooms and
	{workstation}-based facilities, hardware and software,
	{packet-switched} networks and {ISDN}, using both {unicast}
	(point-to-point) and {multicast} (multi-point) {protocols}.

	{Home (http://www-mice.cs.ucl.ac.uk/mice)}.

	(18 Dec 1997)

Multimedia Internet Mail Extensions

	Called {Multipurpose Internet Mail Extensions} in the {RFC}.

	[Is this an old name for it?]

Multimedia Personal Computer

	<multimedia> (MPC) A specification published by the Multimedia
	PC Marketing Council in 1990 to encourage the adoption of a
	standard {multimedia} computing platform.  In May 1993, the
	MPC Marketing Council published a new specification called
	{MPC Level 2 Specification} as an enhanced multimedia computer
	standard.  The original MPC specification, now also known as
	the {MPC Level 1 Specification}, continues in full effect.

	The appearance of the MPC or MPC2 certification mark on a
	computer system or upgrade kit indicates that the {hardware}
	meets the corresponding (Level 1 or Level 2) MPC Marketing
	Council specification. Software bearing the Multimedia PC mark
	has been designed to work on Multimedia PC licensed hardware.

	By establishing a standard platform, certifying hardware
	compliance and providing inter-operability between software
	and hardware for the consumer, the MPC Marketing Council is
	encouraging widespread use of multimedia applications and
	hardware.

	(19 Jan 1997)

multi-part key

	{compound key}

Multi-Pascal

	An extension of {Pascal-S} with {multiprocessing} features.
	Used in "The Art of Parallel Programming", Bruce P. Lester,
	P-H 1993.

multiple access

	{multiplexing}

multiple inheritance

	<programming> In {object-oriented programming}, the
	possibility that a {sub-class} may be derived from multiple
	{parent classes} which are themselves not derived one from the
	other.

	(06 Aug 1997)

Multiple Instruction Multiple Data

	{Multiple Instruction/Multiple Data}

Multiple Instruction/Multiple Data

	(MIMD) The classification under {Flynn's taxonomy} of a
	{parallel processor} where many {functional unit}s perform
	different operations on different data.  Examples would be a
	network of {workstation}s or {transputer}s.  Compare {SIMD}.

	(08 Nov 1994)

multiple perspective software development

	<programming> A decentralised approach to software development
	which, instead of adopting a monolithic representation and
	centralised control, models development in terms of
	collaboration between autonomous partial systems.

	Software development usually involves people with different
	goals, expertise, and backgrounds, and the use of a wide range
	of formalisms, tools, and environments.  As information is
	exchanged between participants, dependencies may be
	established between information created by them.  Multiple
	perspective software development may be mapped into the
	transaction model which can be used to prevent uncoordinated
	access to interdependent information causing inconsistency.

	[Fox Wai-Leung Poon]

	(14 Dec 1995)

multiple value

	<database> (MU) A one-to-many relationship between entries in
	a database, for example a person may have an address field
	which spanned multiple records (with different indexes).
	Multiple values are a non-{relational} technique.

	MUs have recently been made available in {DB2}, despite the
	product being so heavily influenced by {Codd's Laws} of
	{relational databases}.

	[Confirm, clarify?]

	(30 Oct 1995)

Multiple Virtual Storage

	<operating system> {IBM}'s old {operating system} for their
	{IBM 390} series {mainframes}.  MVS has been superceded by
	{OS/390}.

	Version: 5.1.

	[Features?  Dates?]

	(21 Nov 1996)

multiplexer

	{multiplexor}

multiplexing

	<communications> (Or "multiple access") Combining several
	signals for transmission on some shared medium (e.g. a
	telephone wire).  The signals are combined at the transmitter
	by a multiplexor (a "mux") and split up at the receiver by a
	demultiplexor.  The communications channel may be shared
	between the independent signals in one of several different
	ways: {time division multiplexing}, {frequency division
	multiplexing} or {code division multiplexing}.

	If the inputs take turns to use the output channel ({time
	division multiplexing}) then the output bandwidth need be no
	greater than the maximum bandwidth of any input.

	If many inputs may be active simultaneously then the output
	bandwidth must be at least as great as the total bandwidth of
	all simultaneously active inputs.  In this case the
	multiplexor is also known as a {concentrator}.

	(02 Mar 1995)

multiplexor

	(Or "mux") A device for {multiplexing}.

Multiplexor Channel

	(MPX) {mainframe} terminology for a slow peripheral device
	connection, e.g. for a {printer}, operator console, or card
	reader.

	(30 Jun 1997)

Multipop-68

	<operating system> An early {time-sharing} {operating system}
	developed in Edinburgh by Robin Popplestone and others.  It
	was inspired by {MIT}' {Project MAC}, via a "MiniMac" project
	which was aborted when it became obvious that {Elliot
	Brothers} Ltd. could not supply the necessary disk storage.
	Multipop was highly efficient in its use of machine resources
	to support {symbolic programming}, and effective - e.g. in
	supporting the development of the {Boyer-Moore theorem prover}
	and of Burstall and Darlington's transformation work.

	It was not good at supporting the user programs which were
	then the standard fare of computing, e.g. matrix inversion.
	This arose from the fact that while the {POP-2} compiler
	generated good code for function call (which is a lot of what
	layered systems like operating systems do) it did not generate
	efficient code for arithmetic or store access, because there
	was no way to police the generation of illegal objects
	statically.  ({Hindley-Milner type} checking did not exist).
	Indeed, since many OS features like file-access were performed
	by function-call (of a {closure}) rather than an OS call
	requiring a {context switch}, POP-2 actually gained
	performance.

	Multipop68 was efficient primarily because the one language,
	POP-2 served all purposes: it was the command language for the
	operating system as well as being the only available
	programming language.  Thus there was no need to swap in
	compilers etc.  All store management was accomplished
	uniformly by the {garbage collector}, as opposed to having
	store management for the OS and store management for each
	application.

	There was a substantial amount of {assembly language} in
	Multipop68.  This was primarily for interrupt handling, and it
	is difficult to handle this without a {real-time}
	garbage-collector.

	[Edited from a posting by Robin Popplestone].

	(15 Mar 1995)

multiprocessing

	{multitasking}

multiprocessor

	{parallel processor}

multiprogramming

	{multitasking}

Multipurpose Internet Mail Extensions

	<file format, multimedia> (MIME) A {standard} for multi-part,
	{multimedia} {electronic mail} messages and {World-Wide Web}
	{hypertext} documents on the {Internet}.  MIME provides the
	ability to transfer non-textual data, such as graphics,
	{audio} and fax.  It is defined in {RFC 1341}.  It uses
	{mimencode} to encode binary data into {base 64} using a
	subset of {ASCII}.

	{FAQ
	(http://www.cis.ohio-state.edu/hypertext/faq/usenet/mail/mime-faq/top.html)}.

	(04 Apr 1995)

multiscan

	<hardware> A {monitor} that can synchronise to a variety of
	{horizontal scan rates} and {refresh rates}, allowing it to
	display images at different {resolutions}.

	(09 Feb 1996)

MultiScheme

	An implementation of {Multilisp} built on MIT's {C-Scheme},
	for the {BBN Butterfly}.

	["MultiScheme: A Paralled Processing System Based on MIT
	Scheme", J. Miller, TR-402, MIT LCS, Sept 1987].

	(04 Apr 1995)

Multistation Access Unit

	{Media Access Unit}

multisync

	<hardware> An {NEC} trademark term for {multiscan}.  As NEC
	was the first to manufacture multiscan {monitors} the term is
	often used interchangeably with multiscan.

	(09 Feb 1996)

multitasking

	<computer, parallel> (Or "multi-tasking", "multi-processing",
	"multiprogramming", "concurrency") A technique used in an
	{operating system} for sharing a single processor between
	several independent jobs.  The first multitasking operating
	systems were designed in the early 1960s.

	Under "{cooperative multitasking}" the running task decides
	when to give up the CPU and under "{pre-emptive multitasking}"
	the {scheduler} suspends the currently running task after it
	has run for a fixed period known as a "{time-slice}" and
	(re)starts another task.

	The running task may relinquish control voluntarily even in a
	pre-emptive system if it is waiting for some external {event}.
	In either system a task may be suspended prematurely if a
	hardware {interrupt} occurs, especially if a higher priority
	task was waiting for this event and has therefore become
	runnable.

	Multitasking introduces {overheads} because the processor
	spends some time in choosing the next job to run and in saving
	and restoring tasks' state, but it reduces the worst-case time
	from job submission to completion compared with a simple
	{batch} system where each job must finish before the next one
	starts.  Multitasking also allows the {CPU} to do useful work
	on other tasks while a task is waiting for some external
	event.

	A multitasking operating system should provide some degree of
	protection of one task from another so that it is not possible
	for tasks to interact in unexpected ways such as accidentally
	modifying the contents of each other's memory areas.

	The jobs in a multitasking system may belong to one or many
	users.  This is distinct from {parallel processing} where one
	user runs several tasks on several processors but closely
	related to {time-sharing} where several users run several
	tasks on one, or many, processors.

	{Multithreading} is a kind of multitasking with low
	{overheads} and no protection of tasks from each other, all
	threads share the same memory.

	(23 Dec 1997)

Multi-tasking Program for Microcomputers

	<operating system> (MP/M) An {operating system}, written by
	{Gary Kildal}, very similar to {CP/M}, also written by Kildal.
	MP/M allowed {virtual terminals}, each of which could execute
	an {application} while another terminal was called to the
	screen with a special key combination.

	See also {Control Program for Microcomputers}.

	(08 Sep 1996)

multithreaded

	{multithreading}

multithreading

	<parallel> Sharing a single {CPU} between multiple tasks (or
	"threads") in a way designed to minimise the time required to
	switch threads.  This is accomplished by sharing as much as
	possible of the program execution environment between the
	different threads so that very little state needs to be saved
	and restored when changing thread.

	Multithreading differs from {multitasking} in that threads
	share more of their environment with each other than do tasks
	under multitasking.  Threads may be distinguished only by the
	value of their {program counters} and {stack pointers} while
	sharing a single {address space} and set of {global
	variables}.  There is thus very little protection of one
	thread from another, in contrast to multitasking.

	Multithreading can thus be used for very fine-grain
	multitasking, at the level of a few instructions, and so can
	hide {latency} by keeping the processor busy after one thread
	issues a long-latency instruction on which subsequent
	instructions in that thread depend.

	A {light-weight process} is somewhere between a thread and a
	full process.

	{TL0} is an example of a threaded machine language.
	{Dataflow} computation (E.g. {Id} and {SISAL}) is an extreme
	form of multithreading.

	(23 Dec 1997)

MultiTOS

	<operating system> (MTOS) A new version of {TOS}.  MultiTOS's
	main advantage was support for {pre-emptive multitasking} and
	{memory protection}.  It also supported the latest (and far
	superior) versions of {GEM}.  MultiTOS was supplied with the
	Falcon030 range of computers from {Atari}.

	It is a little known fact that the MultiTOS {kernel} was based
	heavily on the {freeware} OS {MinT} which was developed long
	before Atari got MultiTOS working.

	(10 Jan 1997)

Multi-User Dimension

	<games> (MUD) (Or Multi-User Domain, originally "Multi-User
	Dungeon") A class of multi-player interactive game, accessible
	via the {Internet} or a {modem}.  A MUD is like a real-time
	{chat} forum with structure; it has multiple "locations" like
	an {adventure} game and may include combat, traps, puzzles,
	magic and a simple economic system.  A MUD where characters
	can build more structure onto the database that represents the
	existing world is sometimes known as a "{MUSH}".  Most MUDs
	allow you to log in as a guest to look around before you
	create your own character.

	Historically, MUDs (and their more recent progeny with names
	of MU- form) derive from a hack by Richard Bartle and Roy
	Trubshaw on the University of Essex's {DEC-10} in 1979.  It
	was a game similar to the classic {Colossal Cave} adventure,
	except that it allowed multiple people to play at the same
	time and interact with each other.  Descendants of that game
	still exist today and are sometimes generically called
	BartleMUDs.  There is a widespread myth that the name MUD was
	trademarked to the commercial MUD run by Bartle on {British
	Telecom} (the motto: "You haven't *lived* 'til you've *died*
	on MUD!"); however, this is false - Richard Bartle
	explicitly placed "MUD" in the {PD} in 1985.  BT was upset at
	this, as they had already printed trademark claims on some
	maps and posters, which were released and created the myth.

	Students on the European academic networks quickly improved on
	the MUD concept, spawning several new MUDs ({VAXMUD},
	{AberMUD}, {LPMUD}).  Many of these had associated
	{bulletin-board system}s for social interaction.  Because
	these had an image as "research" they often survived
	administrative hostility to {BBS}s in general.  This, together
	with the fact that {Usenet} feeds have been spotty and
	difficult to get in the UK, made the MUDs major foci of
	hackish social interaction there.

	AberMUD and other variants crossed the Atlantic around 1988
	and quickly gained popularity in the US; they became nuclei
	for large hacker communities with only loose ties to
	traditional hackerdom (some observers see parallels with the
	growth of {Usenet} in the early 1980s).  The second wave of
	MUDs (TinyMUD and variants) tended to emphasise social
	interaction, puzzles, and cooperative world-building as
	opposed to combat and competition.  In 1991, over 50% of MUD
	sites are of a third major variety, LPMUD, which synthesises
	the combat/puzzle aspects of AberMUD and older systems with
	the extensibility of TinyMud.  The trend toward greater
	programmability and flexibility will doubtless continue.

	The state of the art in MUD design is still moving very
	rapidly, with new simulation designs appearing (seemingly)
	every month.  There is now a move afoot to deprecate the term
	{MUD} itself, as newer designs exhibit an exploding variety of
	names corresponding to the different simulation styles being
	explored.

	{UMN MUD Gopher page
	(gopher://spinaltap.micro.umn.edu/11/fun/Games/MUDs/Links)}.

	{U Pennsylvania MUD Web page
	(http://www.cis.upenn.edu/~lwl/mudinfo.html)}.

	See also {bonk/oif}, {FOD}, {link-dead}, {mudhead}, {MOO},
	{MUCK}, {MUG}, {MUSE}, {chat}.

	{Usenet} newsgroups: {news:rec.games.mud.announce},
	{news:rec.games.mud.admin}, {news:rec.games.mud.diku},
	{news:rec.games.mud.lp}, {news:rec.games.mud.misc},
	{news:rec.games.mud.tiny}.

	(10 Aug 1994)

Multi-User Dungeon

	{Multi-User Dimension}

Multi-User Shared Hallucination

	<communications, application> (MUSH) A user-extendable {MUD}.
	A MUSH provides commands which the players can use to
	construct new rooms or make objects and puzzles for other
	players to explore.

	{(http://www.cis.upenn.edu/~lwl/muds.html)}

	(16 Mar 1995)

multi-way branch

	{switch statement}

MuMath

	<mathematics, tool> A {symbolic mathematics} package for the
	{IBM PC}, written in {MuSimp}.

	(12 Apr 1995)

mumblage

	/muhm'bl*j/ The topic of one's mumbling (see {mumble}).  "All
	that mumblage" is used like "all that stuff" when it is not
	quite clear how the subject of discussion works, or like "all
	that crap" when "mumble" is being used as an implicit
	replacement for pejoratives.

mumble

	1. Said when the correct response is too complicated to
	enunciate, or the speaker has not thought it out.  Often
	prefaces a longer answer, or indicates a general reluctance to
	get into a long discussion.  "Don't you think that we could
	improve LISP performance by using a hybrid reference-count
	transaction garbage collector, if the cache is big enough and
	there are some extra cache bits for the {microcode} to use?"
	"Well, mumble ... I'll have to think about it."

	2. Yet another {metasyntactic variable}, like {foo}.

	3. Sometimes used in "public" contexts on-line as a
	placefiller for things one is barred from giving details
	about.  For example, a poster with pre-released hardware in
	his machine might say "Yup, my machine now has an extra 16M of
	memory, thanks to the card I'm testing for Mumbleco."

	4. A conversational wild card used to designate something one
	doesn't want to bother spelling out, but which can be
	{glark}ed from context.  Compare {blurgle}.

	5. [XEROX PARC] A colloquialism used to suggest that further
	discussion would be fruitless.

	(27 Mar 1997)

mumble mode

	<jargon> The mode a program, piece of hardware, or other
	system is said to be in when it is still running and perhaps
	reacting to input and/or occasionally producing output
	(especially if it shouldn't), but in a way that appears wildly
	inappropriate to the task it is supposed to perform.

	Compare "{off the trolley}" and "{deep space}".

	(27 Mar 1997)

MUMPS

	(Or "M") Massachusetts General Hospital Utility
	Multi-Programming System.

	A programming language with extensive tools for the support of
	{database management system}s.  MUMPS was originally used for
	medical records and is now widely used where multiple users
	access the same databases simultaneously, e.g. banks, stock
	exchanges, travel agencies, hospitals.

	Early MUMPS implementations for {PDP-11} and {IBM PC} were
	complete {operating system}s, as well as programming
	languages, but current-day implementations usually run under a
	normal host {operating system}.

	A MUMPS program hardly ever explicitly performs low-level
	operations such as opening a file - there are programming
	constructs in the language that will do so implicitly, and
	most MUMPS programmers are not even aware of the {operating
	system} activity that MUMPS performs.

	Syntactically MUMPS has only one data-type: strings.
	Semantically, the language has many data-types: Text strings,
	binary strings, {floating point} values, integer values,
	{Boolean} values.  Interpretation of strings is done inside
	functions, or implicitly while applying mathematical
	operators.  Since many operations involve only moving data
	from one location to another, it is faster to just move
	uninterpreted strings.  Of course, when a value is used
	multiple times in the context of arithmetical operations,
	optimised implementations will typically save the numerical
	value of the string.

	MUMPS was designed for portability.  Currently, it is possible
	to share the same MUMPS database between radically different
	architectures, because all values are stored as text strings.
	The worst an implementation may have to do is swap pairs of
	bytes.  Such multi-CPU databases are actually in use, some
	offices share databases between {VAX}, {DEC Alpha}, {SUN},
	{IBM PC} and {HP} {workstation}s.

	Versions of MUMPS are available on practically all hardware,
	from the smallest ({IBM PC}, {Apple Macintosh}, {Acorn}
	{Archimedes}), to the largest {mainframe}.  MSM ({Micronetics
	Standard MUMPS}) runs on {IBM PC RT} and {R6000}; DSM (Digital
	Standard Mumps) on the {PDP-11}, {VAX}, {DEC Alpha}, and
	{Windows-NT}; {Datatree MUMPS} from {InterSystems} runs on
	{IBM PC}; and {MGlobal MUMPS} on the {Macintosh}.
	Multi-{platform} versions include {M/SQL}, available from
	{InterSystems}, {PFCS} <mumps@pfcs.com> and {MSM}.

	{Greystone Technologies}' GT/M runs on {VAX} and {DEC Alpha}.
	This is a compiler whereas the others are {interpreter}s.
	{GT/SQL} is their {SQL} pre-processor.

	ISO standard 11756 (1991).  ANSI standard: "MUMPS Language
	Standard", X11.1 (1977, 1984, 1990, 1995?).

	The MUMPS User's Group is known as the {M Technology
	Association}.

	Mailing list: MUMPS-L@UGA.BITNET.

	{Usenet} newsgroups: {news:comp.lang.mumps}.

	(28 Apr 1996)

munch

	To transform information in a serial fashion, often requiring
	large amounts of computation.  To trace down a data structure.
	Related to {crunch} and nearly synonymous with {grovel}, but
	connotes less pain.

	Often confused with {mung}.

	(10 Jan 1995)

munching

	Exploration of security holes of someone else's computer for
	thrills, notoriety or to annoy the system manager.  Compare
	{cracker}.  See also {hacked off}.

munching squares

	A {display hack} dating back to the {PDP-1} (ca. 1962,
	reportedly discovered by Jackson Wright), which employs a
	trivial computation (repeatedly plotting the graph Y = X XOR T
	for successive values of T - see {HAKMEM} items 146--148) to
	produce an impressive display of moving and growing squares
	that devour the screen.  The initial value of T is treated as
	a parameter, which, when well-chosen, can produce amazing
	effects.  Some of these, later (re)discovered on the {LISP
	Machine}, have been christened "munching triangles" (try AND
	for XOR and toggling points instead of plotting them),
	"munching w's", and "munching mazes".  More generally, suppose
	a graphics program produces an impressive and ever-changing
	display of some basic form, foo, on a display terminal, and
	does it using a relatively simple program; then the program
	(or the resulting display) is likely to be referred to as
	"munching foos".  [This is a good example of the use of the
	word {foo} as a {metasyntactic variable}.]

munchkin

	/muhnch'kin/ [Squeaky-voiced little people in L. Frank Baum's
	"The Wizard of Oz"] A teenage-or-younger micro enthusiast
	hacking BASIC or something else equally constricted.  A term
	of mild derision - munchkins are annoying but some grow up
	to be hackers after passing through a {larval stage}.  The
	term {urchin} is also used.  See also {wannabee}, {bitty box}.

mundane

	[SF fandom] 1. A person who is not in science fiction fandom.

	2. A person who is not in the computer industry.  In this
	sense, most often an adjectival modifier as in "in my mundane
	life...."  See also {Real World}.

mung

	/muhng/ (MIT, 1960) Mash Until No Good.

	Sometime after that the derivation from the {recursive
	acronym} "Mung Until No Good" became standard.  1. To make
	changes to a file, especially large-scale and irrevocable
	changes.

	See {BLT}.

	2. To destroy, usually accidentally, occasionally maliciously.
	The system only mungs things maliciously; this is a
	consequence of {Finagle's Law}.

	See {scribble}, {mangle}, {trash}, {nuke}.

	Reports from {Usenet} suggest that the pronunciation /muhnj/
	is now usual in speech, but the spelling "mung" is still
	common in program comments (compare the widespread confusion
	over the proper spelling of {kluge}).

	3. The kind of beans of which the sprouts are used in Chinese
	food.  (That's their real name!  Mung beans!  Really!)

	Like many early hacker terms, this one seems to have
	originated at {TMRC}; it was already in use there in 1958.
	Peter Samson (compiler of the original TMRC lexicon) thinks it
	may originally have been onomatopoeic for the sound of a relay
	spring (contact) being twanged.  However, it is known that
	during the World Wars, "mung" was army slang for the ersatz
	creamed chipped beef better known as "SOS".

	(02 Dec 1994)

munge

	/muhnj/ 1. A derogatory term meaning to imperfectly transform
	information.

	2. A comprehensive rewrite of a routine, data structure or the
	whole program.

	This term is often confused with {mung} and may derive from
	it, or possibly vice-versa.

	(02 Dec 1994)

MUP

	{Multiple Universal naming convention Provider}

MU-Prolog

	<language> {Prolog} with "wait" declarations for
	{coroutining}, developed by L. Naish of the {Univeristy of
	Melbourne} in 1982.

	["Negation and Control in Prolog", L. Naish, TR 85/12, U
	Melbourne (1985)].  See {NU-Prolog}.

	(14 Feb 1998)

Murphy's Law

	<humour> (Or "Sod's Law") The correct, *original* Murphy's Law
	reads: "If there are two or more ways to do something, and one
	of those ways can result in a catastrophe, then someone will
	do it."  This is a principle of defensive design, cited here
	because it is usually given in mutant forms less descriptive
	of the challenges of design for lusers.  For example, you
	don't make a two-pin plug symmetrical and then label it "THIS
	WAY UP"; if it matters which way it is plugged in, then you
	make the design asymmetrical (see also the anecdote under
	{magic smoke}).

	Edward A. Murphy, Jr. was one of the engineers on the
	rocket-sled experiments that were done by the US Air Force in
	1949 to test human acceleration tolerances (USAF project
	MX981).  One experiment involved a set of 16 accelerometers
	mounted to different parts of the subject's body.  There were
	two ways each sensor could be glued to its mount, and somebody
	methodically installed all 16 the wrong way around.  Murphy
	then made the original form of his pronouncement, which the
	test subject (Major John Paul Stapp) quoted at a news
	conference a few days later.

	Within months "Murphy's Law' had spread to various technical
	cultures connected to aerospace engineering.  Before too many
	years had gone by variants had passed into the popular
	imagination, changing as they went.  Most of these are
	variants on "Anything that can go wrong, will"; this is
	sometimes referred to as {Finagle's Law}.  The memetic drift
	apparent in these mutants clearly demonstrates Murphy's Law
	acting on itself!

	(14 Feb 1998)

Muse

	<language> {OR-parallel} {logic programming}.

	[Details?]

	(16 Mar 1995)

museum

	{Museums on the Web
	(http://www.comlab.ox.ac.uk/archive/other/museums.html)}.
	{(http://galaxy.einet.net/GJ/museums.html)}.

	(16 Mar 1995)

MUSH

	1. <games> {Multi-User Shared Hallucination}.

	2. <messaging> {Mail Users' Shell}.

Music

	A series of languages for musical sound synthesis from {Bell
	Labs}, 1960's.  Versions: Music I through Music V.

	["An Acoustical Compiler for Music and Psychological Stimuli",
	M.V. Mathews, Bell Sys Tech J 40 (1961)].

Musical Instrument Digital Interface

	<multimedia, file format> (MIDI /mi'-dee/, /mee'-dee/) A
	{hardware} specification and {protocol} used to communicate
	note and effect information between synthesisers, computers,
	music keyboards, controllers and other electronic music
	devices.  It is basically a high-speed serial connection with
	separate connections for MIDI in, MIDI out and MIDI through
	(to allow devices to be chained).

	The basic unit of information is a "note on/off" event which
	includes a note number (pitch) and key velocity (loudness).
	There are many other message types for events such as pitch
	bend, patch changes and synthesizer-specific events for
	loading new patches etc.

	There is a file format for expressing MIDI data which is like
	a dump of data sent over a MIDI port.

	The {MIME} type "audio/midi" isn't actually registered so it
	should probably be "audio/x-midi".

	{Filename} {extension}: .mid or .midi

	{(http://www.update.uu.se/~vick/Coordinator.html)}.

	{Usenet} newsgroup: {news:rec.music.makers.synth}.

	(09 Nov 1997)

MuSimp

	<language> A {Lisp} variant used as the programming language
	for the {IBM PC} {symbolic mathematics} package {MuMath}.

	(12 Apr 1995)

MUSL

	{Manchester University Systems Language}

mutant

	<programming> {Microsoft}'s term for a {mutex} which is
	generally used in {user mode} but can also be used in {kernel
	mode}.  According to this terminology a mutex is only used in
	kernel mode.

	["Microsoft Windows NT Workstation Resource Kit"].

	(30 Jul 1997)

Mutation Testing

	<testing> A method to determine {test set thoroughness} by
	measuring the extent to which a test set can discriminate the
	program from slight variants of the program.

	(27 Dec 1996)

MuTeX

	An extension of {TeX} for typesetting music.

	{(ftp://nic.stolaf.edu/pub/mutex/MuTeX.tar.Z)}

	(06 Feb 1995)

mutex

	<parallel> A {mutual exclusion} object that allows multiple
	{threads} to synchronize access to shared resources.  A mutex
	has two states: locked and unlocked.  Once a mutex has been
	locked by a thread, other threads attempting to lock it will
	block.  When the locking thread unlocks (releases) the mutex,
	one of the blocked threads will acquire (lock) it and proceed.

	[Which blocked thread proceeds?]

	(13 May 1997)

mutter

	To quietly enter a command not meant for the ears, eyes, or
	fingers of ordinary mortals.  Often used in "mutter an
	{incantation}".

	See also {wizard}.

	(06 Feb 1995)

mutual exclusion

	<parallel, operating system> (Or "mutex", plural: "mutexes") A
	collection of techniques for sharing resources so that
	different uses do not conflict and cause unwanted
	interactions.  One of the most commonly used techniques for
	mutual exclusion is the {semaphore}.

	(08 Apr 1995)

mutually recursive

	{recursion}

mutual recursion

	{recursion}

mux

	{multiplexor}

MVC

	{Model View Controller}

MVS

	{Multiple Virtual Storage}

MX Record

	{Mail Exchange Record}

My Favourite Toy Language

	<jargon, language> (MFTL) Describes a talk on a {programming
	language} design that is heavy on {syntax} (with lots of
	{BNF}), sometimes even talks about {semantics} (e.g. {type
	system}s), but rarely, if ever, has any content (see
	{content-free}).  More broadly applied to talks - even when
	the topic is not a programming language --- in which the
	subject matter is gone into in unnecessary and meticulous
	detail at the sacrifice of any conceptual content.  "Well, it
	was a typical MFTL talk".

	2. A language about which the developers are passionate (often
	to the point of prosyletic zeal) but no one else cares about.
	Applied to the language by those outside the originating
	group.  "He cornered me about type resolution in his MFTL."

	The first great goal in the mind of the designer of an MFTL is
	usually to write a compiler for it, then bootstrap the design
	away from contamination by lesser languages by writing a
	compiler for it in itself.  Thus, the standard put-down
	question at an MFTL talk is "Has it been used for anything
	besides its own compiler?".  On the other hand, a language
	that *cannot* be used to write its own compiler is beneath
	contempt.

	{Doug McIlroy} once proposed a test of the generality and
	utility of a language and the {operating system} under which
	it is compiled: "Is the output of a {FORTRAN} program
	acceptable as input to the FORTRAN compiler?"  In other words,
	can you write programs that write programs?  Alarming numbers
	of (language, OS) pairs fail this test, particularly when the
	language is FORTRAN.  Aficionados are quick to point out that
	{Unix} (even using FORTRAN) passes it handily.  That the test
	could ever be failed is only surprising to those who have had
	the good fortune to have worked only under modern systems
	which lack OS-supported and -imposed "file types".

	See {break-even point}, {toolsmith}.

	(07 Mar 1995)

MYOB

	<chat> mind your own business.

MYSTIC

	<language> An early system on the {IBM 704}, {IBM 650}, {IBM
	1103} and 1103A.

	[Listed in CACM 2(5):16 (May 1959)].

	(07 Mar 1995)

N

	/N/ quant. 1. A large and indeterminate number of objects:
	"There were N bugs in that crock!"  Also used in its
	original sense of a variable name: "This crock has N bugs,
	as N goes to infinity."  (The true number of bugs is always
	at least N + 1; see {Lubarsky's Law of Cybernetic
	Entomology}.)

	2. A variable whose value is inherited from the current
	context.  For example, when a meal is being ordered at a
	restaurant, N may be understood to mean however many people
	there are at the table.  From the remark "We'd like to order N
	wonton soups and a family dinner for N - 1" you can deduce
	that one person at the table wants to eat only soup, even
	though you don't know how many people there are.

	3. "Nth": The ordinal counterpart of N, senses 1 and 2.  "Now
	for the Nth and last time..." In the specific context
	"Nth-year grad student", N is generally assumed to be at least
	4, and is usually 5 or more (see {tenured graduate student}).
	See also {random numbers}, {two-to-the-N}.

N10

	Original codename of the {Intel} {i860} {microprocessor}.

nadger

	/nad'jr/ [Great Britain] Of software or hardware (not people),
	to twiddle some object in a hidden manner, generally so that
	it conforms better to some format.  For instance, string
	printing routines on 8-bit processors often take the string
	text from the instruction stream, thus a print call looks like

		jsr print:"Hello world"

	The print routine has to "nadger" the saved {instruction
	pointer} so that the processor doesn't try to execute the text
	as instructions when the subroutine returns.

NAG

	1. {Numerical Algorithms Group}.

	2. The {Linux Network Administrators' Guide}.

nagware

	/nag'weir/ [{Usenet}] The variety of {shareware} that displays
	a large screen at the beginning or end reminding you to
	register, typically requiring some sort of keystroke to
	continue so that you can't use the software in batch mode.
	Compare {crippleware}.

nailed to the wall

	[like a trophy] Said of a {bug} finally eliminated after
	protracted, and even heroic, effort.

nailing jelly

	See {like nailing jelly to a tree}.

naive

	Untutored in the perversities of some particular program or
	system; one who still tries to do things in an intuitive way,
	rather than the right way (in really good designs these
	coincide, but most designs aren't "really good" in the
	appropriate sense).  This trait is completely unrelated to
	general maturity or competence or even competence at any other
	specific program.  It is a sad commentary on the primitive
	state of computing that the natural opposite of this term is
	often claimed to be "experienced user" but is really more like
	"cynical user".

	(29 Nov 1994)

naive user

	A {luser}.  Tends to imply someone who is ignorant mainly
	owing to inexperience.  When this is applied to someone who
	*has* experience, there is a definite implication of
	stupidity.

NAK

	{Negative Acknowledgement}

name capture

	<reduction> In {beta reduction}, when a term containing a
	{free} occurrence of a variable v is substituted into another
	term where v is bound the free v becomes spuriously bound or
	"captured".  E.g.

		(\ x . \ y . x y) y  -->  \ y . y y	(WRONG)

	This problem arises because two distinct variables have the
	same name.  The most common solution is to rename the bound
	variable using {alpha conversion}:

		(\ x . \ y' . x y') y --> \ y' . y y'

	Another solution is to use {de Bruijn notation}.

	Note that the argument expression, y, contained a {free
	variable}.  The whole expression above must therefore be
	notionally contained within the body of some {lambda
	abstraction} which binds y.  If we never reduce inside the
	body of a lambda abstraction (as in reduction to {weak head
	normal form}) then name capture cannot occur.

	(14 Mar 1995)

named

	<networking> Name Daemon.

	<networking> A {Unix} {background} process that converts
	{hostnames} to {Internet addresses} for the {TCP/IP}
	{protocol}.

	{Unix manual page}: named(8).

	See also {DNS}.

	(28 Mar 1995)

named pipe

	<operating system> A {Unix} {pipe} with a {filename} created
	using the "{mknod}" command.  Named pipes allow unrelated
	processes to communicate with each other whereas the normal
	(un-named) kind can only be used by processes which are parent
	and child or siblings ({fork}ed from the same parent).

	(01 Dec 1996)

name resolution

	<networking> The process of mapping a name into its
	corresponding address.

	The {Domain Name System} is the system which does name
	resolution on the {Internet}.

	(15 Dec 1997)

name service switching

	{Domain Name System}

namespace

	A set of names in which all names are unique.

NaN

	{Not-a-Number}

NAND

	Not AND.

	The {Boolean} function which is true unless both its arguments
	are true, the {logical complement} of {AND}:

	A NAND B = NOT (A AND B) = (NOT A) OR (NOT B)

	Its {truth table} is:

		A | B | A NAND B
		--+---+---------
		F | F |    T
		F | T |	   T
		T | F |    T
		T | T |    F

	NAND, like {NOR}, forms a complete set of {Boolean} functions
	on its own since it can be used to make NOT, AND, OR and any
	other Boolean function:

	NOT A = A NAND A

	A AND B = NOT (A NAND B)

	A OR B = (NOT A) NAND (NOT B)

	(24 Jan 1995)

nano-

	/nan'oh/ 1. <unit> A {prefix}.

	2. Used losely to mean "small", e.g. {nanotechnology}.

	3. <jargon> (CMU, from "nanosecond") A brief period of time.
	"Be with you in a nano" means you really will be free shortly,
	i.e. implies what mainstream people mean by "in a jiffy".

	Compare {jiffy}.

	(20 Sep 1995)

nanoacre

	<unit, humour> /nan'oh-ay"kr/ A unit (about 2 mm square) of
	real estate on a {VLSI} {integrated circuit}.  VLSI nanoacres
	have costs in the same range as real acres once one allows for
	design and fabrication setup costs.

	(20 Sep 1995)

nanobot

	/nan"oh-bot/ A robot of microscopic proportions, presumably
	built by means of {nanotechnology}.  As yet, only used
	informally (and speculatively!).  Also called a "nanoagent".

nanocomputer

	/nan'oh-k*m-pyoo'tr/ A computer with molecular-sized switching
	elements.  Designs for mechanical nanocomputers which use
	single-molecule sliding rods for their logic have been
	proposed.  The controller for a {nanobot} would be a
	nanocomputer.

nanofortnight

	<jargon> ({Adelaide University}) 10^-9 fortnights or about 1.2
	{milliseconds}.  This unit was used largely by students doing
	undergraduate practicals.

	See {microfortnight}, {attoparsec}, and {micro-}.

	(15 Nov 1996)

nanosecond

	<unit> (ns) 10^-9 seconds; one thousand millionth part of a
	second.

	This is the unit in which the fundamental logical operations
	of modern digital circuits are typically measured.  For
	example, a {microprocessor} with a {clock} frequency of 100
	{megahertz} will have a 10 nanosecond clock period.

	(15 Nov 1996)

nanotechnology

	/nan'-oh-tek-no"l*-jee/ A hypothetical fabrication technology
	in which objects are designed and built with the individual
	specification and placement of each separate atom.  The first
	unequivocal nanofabrication experiments took place in 1990,
	for example with the deposition of individual xenon atoms on a
	nickel substrate to spell the logo of a certain very large
	computer company.  Nanotechnology has been a hot topic in the
	hacker subculture ever since the term was coined by K. Eric
	Drexler in his book "Engines of Creation", where he predicted
	that nanotechnology could give rise to replicating assemblers,
	permitting an exponential growth of productivity and personal
	wealth.

	See also {nanobot}.

	{(http://www.lucifer.com/~sean/Nano.html)}

	(10 Jan 1996)

Napier

	Atkinson & Morrison, St Andrews U; design began ca. 1985,
	first implementation Napier88, 1988.  Based on {orthogonal
	persistence}, permits definition and manipulation of
	namespaces.

	["The Napier88 Reference Manual", R. Morrison et al, CS Depts
	St Andrews U and U Glasgow, Persistent Programming Research
	Report PPRR-77-89, 1989].

NAPLPS

	North American Presentation-Level-Protocol Syntax.  Format for
	sending text and graphics over communication lines.  Used by
	{videotex} systems.

NAPSS

	Numerical Analysis Problem Solving System.  Purdue ca. 1965.

	["NAPSS - A Numerical Analysis Problem Solving System",
	J.R. Rice et al, Proc ACM 21st Natl Conf, 1966.  Sammet 1969,
	p.299].

narrowing

	{Unification} followed by {unfolding}.  The left-hand side of
	a {rule} is unified with some term, resulting in a set of
	variable bindings.  The term is then replaced by the
	right-hand side of the rule with values substituted for {bound
	variable}s.

NAS

	Network Application Support.  {DEC}'s approach to applications
	integration across a distributed multivendor environment.

nasal demons

	Recognised shorthand on the {Usenet} group comp.std.c for any
	unexpected behaviour of a {C} compiler on encountering an
	undefined construct.  During a discussion on that group in
	early 1992, a regular remarked "When the compiler encounters
	[a given undefined construct] it is legal for it to make
	demons fly out of your nose" (the implication is that the
	compiler may choose any arbitrarily bizarre way to interpret
	the code without violating the {ANSI C} {standard}).  Someone
	else followed up with a reference to "nasal demons", which
	quickly became established.

NASI

	{NetWare Asynchronous Services Interface}

	{Novell NetWare}.

nastistical

	<humour, mathematics> A description of a method, thought by
	the programmer to be correct statistics, but which is not.  An
	example is averaging together several averages of samples of
	different sizes.  The correct way to do this is to average
	together all of the individual samples.

	(12 Feb 1997)

NASTRAN

	NAsa STRess ANalysis program.  A program for solving large
	stress analysis problems.

	["The NASTRAN User's Manual", SP-222(C3), NASA, 1976].

nastygram

	/nas'tee-gram/ 1. A protocol packet or item of e-mail (the
	latter is also called a {letterbomb}) that takes advantage of
	misfeatures or security holes on the target system to do
	untoward things.

	2. Disapproving mail, especially from a {net.god}, pursuant to
	a violation of {netiquette} or a complaint about failure to
	correct some mail- or news-transmission problem.  Compare
	{shitogram}, {mailbomb}.

	3. A status report from an unhappy, and probably picky,
	customer.  "What did Corporate say in today's nastygram?"

	4. [deprecated] An error reply by mail from a {daemon}; in
	particular, a {bounce message}.

NAT

	<networking> {Network Address Translation} (or
	Translator).

Nathan Hale

	<character> An asterisk ("*", see also {splat}, {ASCII}).
	Notionally, from "I regret that I have only one asterisk for
	my country!" ("life to give" -> "ass to risk" -> "asterisk"),
	a misquote of the famous remark uttered by Nathan Hale just
	before he was hanged.  Hale was a (failed) spy for the rebels
	in the American War of Independence.

	(22 Sep 1996)

National Center for Supercomputing Applications

	<body, World-Wide Web> (NCSA) The birthplace of the first
	version of the {Mosaic} {World-Wide Web} {browser}.

	Address: Urbana, IL, USA.

	{Home (http://www.ncsa.uiuc.edu/)}

	(27 Oct 1994)

national characters

	<character> {Characters} with accents and other diacritical
	marks that are used in certain written languages (that are
	based on the Roman alphabet) but not in others, particularly
	not in English.  A standard list is {ISO} {Latin 1}.

	(24 Jun 1996)

National Database Language

	<database, standard> (NDL) A US {standard} for portability of
	{database} definitions and {application programs}.

	(24 Jun 1996)

National Information Infrastructure

	<project> (NII, or "{information superhighway}") Future
	integrated communications in the USA.  The NII will be based
	on a nationwide network of networks, and will supposedly allow
	all Americans to take advantage of the country's information,
	communication, and computing resources.

	The NII will include current and future public and private
	high-speed, interactive, {narrow-band} and {broadband}
	networks.  It is the satellite, terrestrial, and wireless
	communications systems that deliver content to homes,
	businesses, and other public and private institutions.  It is
	the information and content that flows over the infrastructure
	whether in the form of {database}s, the written word, a film,
	a piece of music, a sound recording, a picture, or computer
	software.  It is the computers, televisions, telephones,
	radios, and other products that people will employ to access
	the infrastructure.  It is the people who will provide,
	manage, and generate new information, and those that will help
	others do the same.  And it is the individual Americans who
	will use and benefit from the NII.  The NII is a term that
	encompasses all these components and captures the vision of a
	nationwide, invisible, seamless, dynamic web of transmission
	mechanisms, information appliances, content, and people.

	{(http://sunsite.unc.edu/nii/NII-Table-of-Contents.html)}

	(08 Apr 1995)

National Information Services and Systems

	(NISS) An information archive service at {Bath University},
	intended primarily for UK eductional institutions.

	{(http://www.niss.ac.uk/)}

	(23 Nov 1994)

National Institute of Standards and Technology

	(NIST) United States governmental body that provides
	assistance in developing {standard}s.  Formerly the National
	Bureau of Standards.

	(23 Nov 1994)

National Research and Education Network

	(NREN) The realisation of an interconnected gigabit computer
	network devoted to High Performance Computing and
	Communications.

	See also {HPPC}, {IINREN}.

	(23 Nov 1994)

National Science Foundation

	(NSF) A US government agency whose purpose is to promote the
	advancement of science.  NSF funds science researchers,
	scientific projects, and infrastructure to improve the quality
	of scientific research.  The {NSFNET} is funded by NSF.

National Science Foundation Network

	(NSFNET) A high speed hierarchical "network of networks" in
	the US, funded by the {National Science Foundation}.  At the
	highest level, it is a {backbone} network comprising 16 nodes
	connected to a 45Mb/s facility which spans the continental
	United States.  Attached to that are mid-level networks and
	attached to the mid-levels are campus and local networks.
	NSFNET also has connections out of the US to Canada, Mexico,
	Europe, and the Pacific Rim.  The NSFNET is part of the
	{Internet}.

	(01 Jan 1993)

National Software Reuse Directory

	(NSRD) A directory of reusable software in the {ASSET} system.

	(03 Feb 1995)

National Spatial Data Infrastructure

	(NSDI)

	{(http://fgdc.er.usgs.gov/nsdiover.html)}

	[Summary?]

	(06 Mar 1995)

National Television Standards Committee

	<electronics> (NTSC) The body defining the television video
	signal format used in the USA.  The UK equivalent is {PAL}.

	Also, humorously, "Never Twice the Same Colour".

	(17 Jul 1997)

native compiler

	<programming, tool> A {compiler} which runs on the computer
	for which it is producing {machine code}, in contrast to a
	{cross-compiler}, which produces code for a different
	computer.

	(04 Nov 1995)

Native Language System

	(NLS) A set of interfaces specified by {X/Open} for developing
	applications to run in different {natural language}
	environments.

	(03 Feb 1995)

NATURAL

	An integrated {4GL} from {Software AG}, Germany.  The
	menu-driven version is SUPER/NATURAL.

	Natural 2 is a major upgrade to Natural 1.

	Version 2.1.7 in the MVS environment (June 1995, also
	available for Unix).

	Natural works with {DB2} and various other {databases}, but
	Natural and {Adabas} normally go together.  There are many
	products available in the "Natural" family, including
	SuperNatural, Natural for Windows, Entire Connection (enables
	up/downloading and interaction with {Excel}) and Esperant.

	(14 Nov 1995)

natural deduction

	A set of rules expressing how valid {proof}s may be
	constructed in {predicate logic}.

	A horizontal line separates premises (above) from conclusions
	(below).  Vertical ellipsis (dots) stand for a series of
	applications of the rules.  "T" is the constant "true" and "F"
	is the constant "false" (sometimes written with a {LaTeX}
	{\perp}).

	"^" is the AND (conjunction) operator, "v" is the inclusive OR
	(disjunction) operator and "/" is NOT (negation or
	{complement}, normally written with a {LaTeX} {\neg}).

	P, Q, P1, P2, etc. stand for {proposition}s such as "Socrates
	was a man".  P[x] is a proposition possibly containing
	instances of the variable x, e.g. "x can fly".

	A proof (a sequence of applications of the rules) may be
	enclosed in a box.  A boxed proof produces conclusions that
	are only valid given the assumptions made inside the box,
	however, the proof demonstrates certain relationships which
	are valid outside the box.  For example, the box below
	labelled "Implication introduction" starts by assuming P,
	which need not be a true {propoistion} so long as it can be
	used to derive Q.

	Truth introduction:

	 -
	 T

	(Truth is free).

	Binary AND introduction:

	 -----------
	 | .  | .  |
	 | .  | .  |
	 | Q1 | Q2 |
	 -----------
	   Q1 ^ Q2

	(If we can derive both Q1 and Q2 then Q1^Q2 is true).

	N-ary AND introduction:

	 ----------------
	 | .  | .. | .  |
	 | .  | .. | .  |
	 | Q1 | .. | Qn |
	 ----------------
	  Q1^..^Qi^..^Qn

	Other n-ary rules follow the binary versions similarly.

	Quantified AND introduction:

	 ---------
	 | x  .  |
	 |    .  |
	 |  Q[x] |
	 ---------
	 For all x . Q[x]

	(If we can prove Q for arbitrary x then Q is true for all x).

	Falsity elimination:

	 F
	 -
	 Q

	(Falsity opens the floodgates).

	OR elimination:

	   P1 v P2
	 -----------
	 | P1 | P2 |
	 | .  | .  |
	 | .  | .  |
	 | Q  | Q  |
	 -----------
	      Q

	(Given P1 v P2, if Q follows from both then Q is true).

	Exists elimination:

	 Exists x . P[x]
	 -----------
	 | x  P[x] |
	 |     .   |
	 |     .   |
	 |     Q   |
	 -----------
	       Q

	(If Q follows from P[x] for arbitrary x and such an x exists
	then Q is true).

	OR introduction 1:

	    P1
	 -------
	 P1 v P2

	(If P1 is true then P1 OR anything is true).

	OR introduction 2:

	    P2
	 -------
	 P1 v P2

	(If P2 is true then anything OR P2 is true).  Similar
	symmetries apply to ^ rules.

	Exists introduction:

	     P[a]
	 -------------
	 Exists x.P[x]

	(If P is true for "a" then it is true for all x).

	AND elimination 1:

	 P1 ^ P2
	 -------
	    P1

	(If P1 and P2 are true then P1 is true).

	For all elimination:

	 For all x . P[x]
	 ----------------
	       P[a]

	(If P is true for all x then it is true for "a").

	For all implication introduction:

	 -----------
	 | x  P[x] |
	 |     .   |
	 |     .   |
	 |    Q[x] |
	 -----------
	 For all x . P[x] -> Q[x]

	(If Q follows from P for arbitrary x then Q follows from P for
	all x).

	Implication introduction:

	 -----
	 | P |
	 | . |
	 | . |
	 | Q |
	 -----
	 P -> Q

	(If Q follows from P then P implies Q).

	NOT introduction:

	 -----
	 | P |
	 | . |
	 | . |
	 | F |
	 -----
	  / P

	(If falsity follows from P then P is false).

	NOT-NOT:

	 //P
	 ---
	  P

	(If it is not the case that P is not true then P is true).

	For all implies exists:

	 P[a]   For all x . P[x] -> Q[x]
	 -------------------------------
		      Q[a]

	(If P is true for given "a" and P implies Q for all x then Q
	is true for a).

	Implication elimination, modus ponens:

	 P   P -> Q
	 ----------
	      Q

	(If P and P implies Q then Q).

	NOT elimination, contradiction:

	 P   /P
	 ------
	   F

	(If P is true and P is not true then false is true).

	(16 Jan 1995)

Natural English

	Programming in normal, spoken English.  [Sammet 1969, p.768].

natural language

	<application> A language spoken or written by humans, as
	opposed to a language use to program or communicate with
	computers.  Natural language understanding is one of the
	hardest problems of {artificial intelligence} due to the
	complexity, irregularity and diversity of human language and
	the philosophical problems of meaning.

	See also {Pleuk grammar development system}, {proof}.

	{An on-line demonstration (http://sakharov.ai.mit.edu/Start)}

	{New York U
	(http://www.nyu.edu/pages/linguistics/ling.html)}.

	(24 Apr 1995)

Natural Language Information Analysis Method

	(NIAM, or Nijssen IAM) A method for {data model}ling.

	["Conceptual Scheme and Relational Database Design", Nijssen
	and Halpin, Prentice-Hall, 1989].

	(31 Mar 1995)

natural language processing

	<artificial intelligence> (NLP) Computer understanding,
	analysis, manipulation, and/or generation of {natural
	language}.

	This can refer to anything from fairly simple
	string-manipulation tasks like {stemming}, or building
	concordances of natural language texts, to higher-level
	{AI}-like tasks like processing user {queries} in {natural
	language}.

	(12 Sep 1997)

natural number

	<mathematics> An {integer} greater than or equal to zero.  A
	natural number is an {isomorphism class} of a finite set.

	(25 Mar 1995)

nature

	{has the X nature}

NAU

	<networking>

	1. {Network Addressable Unit}.

	2. {Network Access Unit}.

	(10 May 1997)

navigating

	<networking, hypertext> Finding your way around.  Often used
	of the {Internet}, particularly the {World-Wide Web}.

	A {browser} is a tool for navigating {hypertext} documents.

	(25 Mar 1995)

Navigator

	{Netscape Navigator}

Nawk

	New AWK.  AT&T.  Pattern scanning and processing language.  An
	enhanced version of AWK, with dynamic regular expressions,
	additional built-ins and operators, and user-defined
	functions.

NB

	{C}

NBFCP

	{NetBIOS Frames Control Protocol}

NBS

	National Bureau of Standards: part of the US  Department of
	Commerce, now NIST.

NBT

	{NetBios over TCP/IP}

NCD

	{Network Computing Devices}

NCP

	{NetWare Core Protocol}

NCR Corporation

	<company> Electronics company mainly active in the midrange
	server market.

	NCR was founded 1884 as National Cash Register Company.  It
	joint the computer industry in th 1950s.  In 1991 it was
	absorbed by {AT&T} (see {dinosaurs mating}), only to be spat
	out again in 1996.

	NCR {mainframes} of the 1960's are remembered by some for
	their hardware incompatibility with {IBM} mainframes: NCR
	punched round holes in their {punched cards} while IBM punched
	rectangular ones.  The codes and machines were not compatible
	and information could not be easily shared between NCR and IBM
	customers.

	{(http://www.ncr.com/)}

	(10 Mar 1997)

NCS

	Network Computing System: Apollo's RPC system used by DEC and
	Hewlett-Packard.The protocol has been adopted by {OSF}.

NCSA

	{National Center for Supercomputing Applications}

ND

	{natural deduction}

NDIS

	{Network Device Interface Specification}

NDL

	1. {National Database Language}.

	2. {Network Definition Language}.

neat hack

	1. A clever technique.

	2. A brilliant practical joke, where neatness is correlated
	with cleverness, harmlessness, and surprise value.  Example:
	the Caltech Rose Bowl card display switch.  See also {hack}.

neats vs. scruffies

	<artificial intelligence, jargon> The label used to refer to
	one of the continuing {holy wars} in {artificial intelligence}
	research.  This conflict tangles together two separate issues.
	One is the relationship between human reasoning and AI;
	"neats" tend to try to build systems that "reason" in some way
	identifiably similar to the way humans report themselves as
	doing, while "scruffies" profess not to care whether an
	{algorithm} resembles human reasoning in the least as long as
	it works.  More importantly, neats tend to believe that
	{logic} is king, while scruffies favour looser, more ad-hoc
	methods driven by empirical knowledge.  To a neat, scruffy
	methods appear promiscuous, successful only by accident and
	not productive of insights about how intelligence actually
	works; to a scruffy, neat methods appear to be hung up on
	formalism and irrelevant to the hard-to-capture "common sense"
	of living intelligences.

	(29 Nov 1994)

Nebula

	An early business-oriented language from {ICL} for the
	{Ferranti Orion} computer.

	["NEBULA - A Programming Language for Data Processing", T.G.
	Braunholtz et al, Computer J 4(3):197-201 (1961)].

	(29 Nov 1994)

NEC

	{Nippon Electronics Corporation}

neep-neep

	/neep neep/ [onomatopoeic, from New York SF fandom] One who is
	fascinated by computers.  Less specific than {hacker}, as it
	need not imply more skill than is required to {boot} {game}s
	on a {personal computer}.  The derived noun "neeping" applies
	specifically to the long conversations about computers that
	tend to develop in the corners at most SF-convention parties
	(the term "neepery" is also in wide use).  Fandom has a
	related proverb to the effect that "Hacking is a
	conversational black hole!".

	(29 Nov 1994)

negation by failure

	An {extralogical} feature of {Prolog} and other {logic
	programming} languages in which failure of {unification} is
	treated as establishing the negation of a {relation}.  For
	example, if Ronald Reagan is not in our {database} and we
	asked if he was an American, Prolog would answer "no".

	(29 Nov 1994)

negative acknowledge

	1. <character> (NAK) The {mnemonic} for {ASCII} character 21.

	Sometimes used as the response to receipt of a corrupted
	{packet} of information.

	Opposite of {Acknowledgement}.

	2. <communications> (NAK) Any message transmitted to indicate
	that some data has been received incorrectly, for example it
	may have a {checksum} or message length error.  A NAK message
	allows the sender to distinguish a message which has been
	received in a corrupted state from one which is not received
	at all.

	An alternative is to use only {ACK} messages, in which case
	the non-receipt of an ACK after a certain time is counted as a
	NAK but gives no information about the integrity of the
	communications channel.

	See also {ACK}.

	(07 Jan 1997)

NELIAC

	Navy Electronics Laboratory International ALGOL Compiler.

	An {Algol} variant designed for numeric and logical
	computations and based on {IAL}.  1958-1959.

	Version: BC NELIAC.

	["Neliac - A Dialect of Algol", H.D. Huskey et al, CACM
	3(8):463-468 (Aug 1960)].

	(29 Nov 1994)

Neon

	Charles Duff.  An object-oriented extension of FORTH, for the
	Mac.  Inheritance, SANE {floating-point}, system classes and
	objects for Mac interfacing, overlays.  Sold by Kriya Systems,
	1985-1988.  Modified, made PD and renamed Yerk.

neophilia

	/nee"oh-fil"-ee-*/ The trait of being excited and pleased by
	novelty.  Common among most hackers, SF fans, and members of
	several other connected leading-edge subcultures, including
	the pro-technology "Whole Earth" wing of the ecology movement,
	space activists, many members of Mensa, and the
	Discordian/neo-pagan underground.  All these groups overlap
	heavily and (where evidence is available) seem to share
	characteristic hacker tropisms for science fiction, {music},
	and oriental food.  The opposite tendency is "neophobia".

Neptune

	A hypertext system for computer assisted software engineering,
	developed at Tektronix.

Nerd pride

	<body> The Nerd Pride movement, modeled on the Gay Pride
	movement, was started at {MIT} by Professors {Gerald Sussman}
	and {Hal Abelson}.  Nerd pride paraphernalia includes baseball
	hats, buttons and - of course - pocket protectors.

	"My idea is to present an image to children that it is good to
	be intellectual, and not to care about the peer pressures to
	be anti-intellectual.  I want every child to turn into a nerd
	- where that means someone who prefers studying and learning
	to competing for social dominance".

	-- {Gerald Sussman}, quoted by Katie Hafner, "New York Times",
	29 Aug 1994.

	(11 Nov 1994)

NERECO

	NEtwork REmote COmmunications.

	{CSP} with extensions to allow asymmetrical and {asynchronous}
	communications and fault handling.  It is implemented on a
	network of {Sun}s.

	["A Concurrent Programming Support for Distributed Systems",
	G. Spezzano et al, in Computing Systems vol 3, pp.423-447, U
	Cal Press, 1990].

	(11 Nov 1994)

NESL

	<language> A parallel language loosely based on {ML},
	developed at {Carnegie Mellon University} by the {SCandAL}
	project.  NESL integrates parallel {algorithms}, {functional
	languages} and implementation techniques from the system's
	community.

	Nested {data parallelism} offers concise code that is easy to
	understand and debug and suits irregular data structures such
	as {trees}, {graphs} or {sparse matrices}.

	NESL's language based performance model is a formal way to
	calculate the "work" and "depth" of a program.  These measures
	can be related to running time on a {parallel computer}.

	NESL was designed to make parallel programming easy and
	portable.  Algorithms are typically more concise in NESL than
	in most other parallel programming languages and the code
	resembles high-level {pseudocode}.  This places more
	responsibility on the {compiler} and {runtime system} for
	achieving good efficiency.

	NESL currently runs on {Unix} {workstations}, the {IBM SP-2},
	the {Thinking Machines} {CM5}, the {Cray} {C90} and {J90}, the
	{MasPar} {MP2}, and the {Intel} {Paragon}.  Work is underway
	(April 1997) on a portable {MPI} {back end}, and an
	implementation for {symmetric multiprocessors}, such as the
	{SGI} {Power Challenge} or the {DEC} {AlphaServer}.

	Latest version as of November 1995 was Release 3.1.

	{Home
	(http://www.cs.cmu.edu/afs/cs.cmu.edu/project/scandal/public/www/nesl.html)}.

	["NESL: A Nested Data-Parallel Language", Guy Blelloch,
	CMU-CS-93-129, April 1993].

	(13 Apr 1997)

net

	1. <networking> {network}.

	2. <networking> {network, the}.

	3. <architecture> {neural network}.

net.-

	<convention, networking, messaging> /net dot/ A prefix used to
	describe people and events related to {Usenet} and the
	{Internet}.  The convention dates from the time before the
	{Great Renaming}, when most non-local {Usenet} newsgroups had
	names beginning "net.".  Includes {net.god}s, "net.goddesses"
	(various charismatic net.women with circles of on-line
	admirers), "net.lurkers" (see {lurker}), "net.person",
	"net.parties" (a synonym for {boink}), and many similar
	constructs.

	See also {net.police}.

	(21 Mar 1995)

netaddress

	See {Knowbot Information Service}.

NetBEUI

	{NetBIOS} Extended User Interface.  The network transport
	{protocol} used by all of {Microsoft}'s network systems and
	{IBM}'s {LAN Server} based systems.

	NetBEUI is often confused with {NetBIOS}.  NetBIOS is the
	{applications programming interface} and NetBEUI is the
	transport protocol.

NetBIOS

	An {applications programming interface} (API) which activates
	{network} operations on {IBM PC} compatibles running under
	{Microsoft}'s {DOS}.  It is a set of network commands that the
	application program issues in order to transmit and receive
	data to another {host} on the network.  The commands are
	interpreted by a {network control program} or {network
	operating system} that is NetBIOS compatible.  See
	{NetBOLLIX}.

NetBIOS Frames Control Protocol

	<protocol> (NBFCP, NBF protocol, originally "NetBEUI
	protocol")

	[RFC 2097]

	[What is it?]

	(10 May 1997)

NetBios over TCP/IP

	<protocol> (NBT) A protocol supporting {NetBIOS} services in a
	{TCP/IP} environment, defined by {RFCs} 1001 and 1002.

	(04 Jul 1997)

NetBOLLIX

	["bollix": to bungle] {IBM}'s {NetBIOS}, an extremely
	{brain-damaged} {network} {protocol} that, like {Blue Glue},
	is used at commercial shops that don't know any better.

netbui

	<spelling> Misspelling of "{NetBEUI}".

	(23 Dec 1996)

netburp

	<networking, chat> (Or "netsplit") When {netlag} gets really
	bad, and delays between {IRC} servers exceed a certain
	threshhold, the network effectively becomes partitioned for a
	period of time, and large numbers of people seem to be signing
	off at the same time and then signing back on again when
	things get better.  An instance of this is called a "netburp"
	(or, sometimes, {netsplit}).

	(04 Jun 1996)

netCDF

	Network Common Data Form.  A machine-independent,
	self-describing file format for scientific data.

Netcom On-line Communication Services, Inc.

	<company> A company providing {Internet} access on {Sun
	Microsystems} computers running {Unix}.  Customers either log
	in to a {shell} running on a Netcom computer, or rent a {SLIP}
	or {PPP} connection and run their own net software.  Most
	hosts are in San Jose, California, but they have {Points of
	Presence} all over the USA.

	{Home (http://www.netcom.com/)}

	Address: 3031 Tisch Way San Jose, CA 95128, USA.

	Telephone: +1 (408) 983 5950, +1 800 353 6600.  Fax: +1 (408)
	241 9145.

	(23 Apr 1996)

netdead

	[IRC] The state of someone who signs off {IRC}, perhaps during
	a {netburp}, and doesn't sign back on until later.  In the
	interim, he is "dead to the net".

Netfind

	A research prototype that provides a simple {Internet} "{white
	pages}" user directory.  It runs on {SunOS} 4.0 or more recent
	systems that are connected to the Internet (however, you can
	run Netfind on one server at your site, and let the others use
	Netfind on that server).  Given the name of a person on the
	Internet and a rough description of where the person works,
	Netfind attempts to locate telephone and electronic mailbox
	information about the person.

	{(ftp://ftp.cs.colorado.edu/pub/cs/distribs/netfind)}

net.god

	<person> /net god/ Accolade referring to anyone who satisfies
	some combination of the following conditions: has been visible
	on {Usenet} for more than 5 years, ran one of the original
	backbone sites, moderated an important newsgroup, wrote news
	software, or knows Gene, Mark, Rick, Mel, Henry, Chuq, and
	Greg personally.

	Net.goddesses such as Rissa or the Slime Sisters have (so far)
	been distinguished more by personality than by authority.

	See {demigod}.

	(07 Jan 1996)

NetHack

	<games> /net'hak/ (Unix) A dungeon game similar to {rogue} but
	more elaborate, distributed in {C} source over {Usenet} and
	very popular at {Unix} sites and on {PC}-class machines
	(nethack is probably the most widely distributed of the
	{freeware} dungeon games).  The earliest versions, written by
	Jay Fenlason and later considerably enhanced by Andries
	Brouwer, were simply called "hack".  The name changed when
	maintenance was taken over by a group of hackers originally
	organised by Mike Stephenson.

	Version: NetHack 3.2 (Apr 1996?).

	{(http://www.win.tue.nl/games/roguelike/nethack/)}

	{FAQ
	(ftp://rtfm.mit.edu/pub/usenet/rec.games.roguelike.nethack/)}.

	{FTP U Penn (ftp://linc.cis.upenn.edu/pub/NH3.1/)} No large
	downloads between 9:00 and 18:00 local or the directory will
	be removed.

	{Usenet} newsgroup: {news:rec.games.roguelike.nethack}.

	E-mail: <nethack-bugs@linc.cis.upenn.edu>.

	(13 Jun 1996)

netiquette

	<convention, networking> /net'ee-ket/ or /net'i-ket/ Network
	etiquette.

	The conventions of politeness recognised on {Usenet} and in
	{mailing list}s, such as not (cross-)posting to inappropriate
	groups and refraining from commercial advertising outside the
	biz groups.

	The most important rule of netiquette is "Think before you
	post".  If what you intend to post will not make a positive
	contribution to the newsgroup and be of interest to several
	readers, don't post it!  Personal messages to one or two
	individuals should not be posted to newsgroups, use private
	e-mail instead.

	When following up an article, quote the minimum necessary to
	give some context to your reply and be careful to attribute
	the quote to the right person.  If the article you are
	responding to was posted to several groups, edit the
	distribution ("Newsgroups:") header to contain only those
	groups which are appropriate to your reply, especially if the
	original message was posted to one or more inappropriate
	groups in the first place.

	Re-read and edit your posting carefully before you post.
	Check the spelling and grammar.  Keep your lines to less than
	70 characters.  Don't post test messages (except to test
	groups) - wait until you have something to say.  When posting
	humorous or sarcastic comments, it is conventional to append
	a {smiley}, but don't overuse them.

	Before asking a question, read the messages already in the
	group and read the group's {FAQ} if it has one.  When you do
	post a question, follow it with "please reply by mail and I
	will post a summary if requested" and make sure you DO post a
	summary if requested, or if only a few people were interested,
	send them a summary by mail.  This avoids umpteen people
	posting the same answer to the group and umpteen others
	posting "me too"s.

	If you believe someone has violated netiquette, send them a
	message by _private e-mail_, DO NOT post a follow-up to the
	news.  And be polite, they may not realise their mistake, they
	might be a beginner or may not even have been responsible for
	the "crime" - their account may have been used by someone else
	or their address forged.

	Be proud of your postings but don't post just to see your name
	in pixels.  Remember: your future employer may be reading.

	{Netiquette for Usenet Site Administrators
	(http://ancho.ucs.indiana.edu/FAQ/USAGN/index.html)}.

	{"net.acceptable"
	(http://arganet.tenagra.com/Tenagra/net-acceptable.html)}.

	(05 Jan 1995)

NETL

	A {semantic network} language, for {connectionist}
	architectures.

	["NETL: A System for Representing and Using Real-World Data",
	S.E. Fahlman, MIT Press 1979].

	(05 Jan 1995)

netlag

	<networking> A condition that occurs when the delays in the
	{IRC} network, a {MUD} connection, a {telnet} connection, or
	any other networked interactive system, become severe enough
	that servers briefly lose and then reestablish contact,
	causing messages to be delivered in bursts, often with delays
	of up to a minute.  (Note that this term has nothing to do
	with mainstream "jet lag").

	(21 Jun 1996)

netload

	A program to down-load {Excelan} {TCP/IP} software.  The
	host's {Ethernet} address can be specified as

		netload -e aabbccddeeff

	where aabbccddeeff is a 12 {hexadecimal} digit number.

	(14 Dec 1994)

Netmarq Limited

	A small technical consultancy specialising in the testing of
	network components.  They do performance tests of network
	interface cards, {router}s, {hub}s, {file server}s, etc.  To
	reflect the marketplace, most tests are carried out in a
	{Novell NetWare} environment, although they can equally well
	use {Lan server}, {Banyan Vines}, {NT Advanced Server}, {IBM
	PC} Support.  They claim to be Europe's leading such test lab
	and compete with US Labs such as {LanQuest} and {NSTL}.  They
	also do some network design, installation, support, and
	troubleshooting.

	E-mail: <netmarq@cix.compulink.co.uk>.

	(14 Dec 1994)

netmask

	<networking> A 32-bit {bit mask} which shows how an {Internet
	address} is to be divided into network, {subnet} and host
	parts.  The netmask has ones in the bit positions in the 32-bit address which are to be used for the network and subnet
	parts, and zeros for the host part.  The mask should contain
	at least the standard network portion (as determined by the
	address's {class}), and the subnet field should be contiguous
	with the network portion.

	If a `+' (plus sign) is given for the netmask value, then the
	network number is looked up in the {NIS} netmasks.byaddr map
	(or in the /etc/netmasks) file if not running the NIS service.

	{Unix manual page}: ifconfig(8).

	(30 Jan 1995)

NetNanny

	<networking> A small program for children to block access to
	certain sites.

	[Company?  Address?]

	(12 Feb 1997)

netnews

	/net'n[y]ooz/ 1. The software that makes {Usenet} run.

	2. The content of {Usenet}.  "I read netnews right after my
	mail most mornings."

	(14 Dec 1994)

net.personality

	Someone who has made a name for him or herself on {Usenet},
	through either longevity or attention-getting posts, but
	doesn't meet the other requirements of {net.god}hood.

netpipes

	<networking> A package by Robert Forsman <thoth@cis.ufl.edu>
	to manipulate {BSD Unix} {TCP/IP} stream {sockets}.  The
	netpipes package makes TCP/IP streams usable in {shell
	scripts}.  It can also simplify {client-server} code by
	allowing the programmer to skip all the tedious programming
	related to sockets and concentrate on writing a
	filter/service.

	{Home (http://www.cis.ufl.edu/~thoth/netpipes/)}.

	(03 Oct 1996)

net.police

	/net-p*-lees'/ (Or "net police", "net.cops") Those {Usenet}
	readers who feel it is their responsibility to pounce on and
	{flame} any posting which they regard as offensive or in
	violation of their understanding of {netiquette}.  Generally
	used sarcastically or pejoratively.

	See also {net.-}, {code police}.

Netrek

	<games> A 16-player graphical {real-time} battle simulation
	with a Star Trek theme.  The game is divided into two teams of
	eight (or less), who dogfight each other and attempt to
	conquer each other's planets.  There are several different
	types of ships, from fast, fragile scouts up to big, slow
	battleships; this allows a great deal of variance in play
	styles.  Netrek is played using a {client} to connect to one
	of several Netrek {servers} on the {Internet}.  There is a
	metaserver which distributes details of games in progress on
	other servers.

	See also {ogg}.

	[Dates?  Versions?  Authors?  Addresses?]

	(01 Feb 1998)

netrock

	/net'rok/ (IBM) A {flame}; used especially on {VNET}, {IBM}'s
	internal corporate network.

	(18 Nov 1994)

Netscape

	1. {Netscape Navigator}.

	2. {Netscape Communications Corporation}.

Netscape Communications Corporation

	<company> (Formlerly "Mosaic Communications Corporation") A
	company set up in April 1994 by Dr. James H. Clark (founder of
	{Silicon Graphics, Inc.}) and Marc Andreessen
	<marca@netcom.com> (creator of the {NCSA} {Mosaic} program) to
	market their version of {Mosaic}, known as {NetScape} or
	{Mozilla}.

	{(http://www.netscape.com/)}

	Address: 501 East Middlefield Road, Mountain View, CA 94043,
	USA.

	Telephone: +1 (415) 254 1900.  Fax: +1 (415) 254 2601.

	(10 Mar 1995)

Netscape Navigator

	<networking, tool, product> /Mozilla/ (Often called just
	"Netscape") A {World-Wide Web} {browser} from {Netscape
	Communications Corporation}.  The first {beta-test} version
	was released free to the {Internet} on 13 October 1994.
	Netscape evolved from {NCSA} {Mosaic} (with which it shares at
	least one author) and runs on the {X Window System} under
	various versions of {Unix}, on {Microsoft Windows} and on the
	{Apple Macintosh}.

	It features integrated support for sending {electronic mail}
	and reading {Usenet} news, as well as {RSA encryption} to
	allow secure communications for commercial applications such
	as exchanging credit card numbers with net retailers.  It
	provides multiple simultaneous interruptible text and image
	loading; native inline {JPEG} image display; display and
	interaction with documents as they load; multiple independent
	windows.  Netscape was designed with 14.4 kbps modem links in
	mind.

	You can download Netscape Navigator for evaluation, or for
	unlimited use in academic or not-for-profit environments.  You
	can also pay for it.

	Version: 1.0N.

	{(ftp://ftp.netscape.com/netscape/)}

	E-mail: <sales@netscape.com>.

	(25 Jan 1995)

netsplit

	{netburp}

netstat

	<networking> (Or "rstat") A {Unix} command to give statistics
	about the {network} including {socket} status, interfaces that
	have been auto-configured, memory statistics, {routing}
	tables.

	{Unix manual pages}: rstat(3), netstat(8).

	(04 Jun 1996)

netter

	1. Loosely, anyone with a {network address}.

	2. More specifically, a {Usenet} regular.  Most often found in
	the plural.  "If you post *that* in a technical group, you're
	going to be flamed by angry netters for the rest of time!"

NetWare

	{Novell NetWare}

NetWare Core Protocol

	<networking> (NCP) A {Novell} trademark for the {protocol}
	used to access {Novell NetWare} file and print service
	functions.  It uses an underlying {IPX} or {IP} {transport
	protocol}.

	(11 Nov 1995)

NetWare Link State Protocol

	<networking, protocol> (NLSP) A companion {protocol} to {IPX}
	for exchange of {routing} information in a {Novell}
	{network}.  NLSP supersedes Novell's {RIP}.

	(04 Mar 1997)

network

	<networking> Hardware and software data communication systems.

	The {OSI} seven layer model attempts to provide a way of
	partitioning any computer network into independent modules
	from the lowest (physical) layer to the highest (application)
	layer.  Many different specifications exist at each of these
	layers.

	Networks are often also classified according to their
	geographical extent: {local area network} (LAN), {metropolitan
	area network} (MAN), {wide area network} (WAN) and also
	according to the {protocol}s used.

	See {BITNET}, {Ethernet}, {Internet}, {Novell}, {PSTN},
	{network, the}.

	[Tanenbaum, A., "Computer Networks; 2nd ed.", Prentice Hall,
	Englewood Cliffs, NJ, 1989.]

	(10 Mar 1995)

network address

	<networking> 1. The network portion of an {IP address}.  For a
	{class A} network, the network address is the first {byte} of
	the IP address.  For a {class B network}, the network address
	is the first two bytes of the IP address.  For a {class C
	network}, the network address is the first three bytes of the
	IP address.  In each case, the remainder is the {host
	address}.  In the {Internet}, assigned network addresses are
	globally unique.

	See also {subnet address}, {Internet Registry}.

	2. (Or "net address") An {electronic mail} address on {the
	network}.  In the 1980s this might have been a {bang path} but
	now (1997) it is nearly always a {domain address}.  Such an
	address is essential if one wants to be to be taken seriously
	by {hackers}; in particular, persons or organisations that
	claim to understand, work with, sell to, or recruit from among
	hackers but *don't* display net addresses are quietly presumed
	to be clueless poseurs and mentally {flush}ed.

	Hackers often put their net addresses on their business cards
	and wear them prominently in contexts where they expect to
	meet other hackers face-to-face (e.g. {science-fiction
	fandom}).  This is mostly functional, but is also a signal
	that one identifies with hackerdom (like lodge pins among
	Masons or tie-dyed T-shirts among Grateful Dead fans).  Net
	addresses are often used in e-mail text as a more concise
	substitute for personal names; indeed, hackers may come to
	know each other quite well by network names without ever
	learning each others' real monikers.

	See also {sitename}, {domainist}.

	(10 May 1997)

Network Addressable Unit

	<networking> (NAU) The {SNA} term for an {addressable entity}.
	Examples include {PU}s, {LU}s, and {SSCP}s.

	(10 May 1997)

Network Address Translation

	<networking> (NAT, or Network Address Translator, Virtual LAN)
	A hardware device currently being developed and used to extend
	the {Internet address}es already in use.  NAT has been
	suggested as an alternative to adopting {IPv6} (IPng).  It
	allows duplicate IP addresses to be used within a corporation
	and unique addresses outside.

	["NATs are next naughty Internet issue", Christine
	Hudgins-Bonafield <cbonafield@nwc.com>, in "Network
	Computing", March 1, 1995].

	(01 Apr 1995)

network card

	{network interface controller}

network closet

	<networking> The place where {network} {hardware} (other than
	cabling) is installed.  The space should be used primarily for
	storage, be dry, and have electricity available.  Since
	network equipment rarely needs attention once installed and
	tested, the network closet can have limited accessibility.

	(05 May 1995)

Network Computing Devices

	(NCD) Producer of {X terminal}s, {PC-Xware}, and {Z-Mail}.

	{(http://www.ncd.com/)}

Network Definition Language

	(NDL) The language used to program the DCP (Data
	Communications Processor) on {Burroughs Large System}.

	Version: NDL II.

	(12 Dec 1994)

Network Device Interface Specification

	(NDIS) A programming interface for different {protocol}s
	sharing the same network hardware.  The NDIS 2.0 specification
	is 5000 lines and seems to be written by {Microsoft} and
	{3Com}.

	{cdrom.com NDIS archive
	(ftp://ftp.cdrom.com/pub/os2/network/ndis/)}.

	Winter 1991 issue of "3TECH, The 3COM Technical Journal".

	{NDIS 3.0 specification (ftp://ftp.microsoft.com
	misc/ndis.doc)} ({MS Word} file).

	(08 Aug 1997)

Network extensible Window System

	(NeWS) An elegant {PostScript}-based windowing environment,
	invented by James Gosling, the author of {GOSMACS}.

	NeWS would almost certainly have won the {standard}s war with
	the {X Window System} if it hadn't been {proprietary} to {Sun
	Microsystems}.  There is a lesson here that too many software
	vendors haven't yet heeded.  Communication is based on
	{PostScript} and server functions can be extended.

	See also {HyperNeWS}, {OpenWindows}.

	(12 Dec 1994)

Network File System

	<networking, operating system> (NFS) A {protocol} developed by
	{Sun Microsystems}, and defined in {RFC 1094}, which allows a
	computer to access files over a network as if they were on its
	local disks.  This {protocol} has been incorporated in
	products by more than two hundred companies, and is now a {de
	facto} standard.  NFS is implemented using a {connectionless
	protocol} ({UDP}) in order to make it {stateless}.

	See {Nightmare File System}, {WebNFS}.

	(12 Dec 1994)

Network Filing System

	<spelling> Misnomer for {Network File System}.

Network Information Center

	(NIC) A body that provides information, assistance and
	services to {network} users.  These will typically include
	telephone and {electronic mail} "help desk" type services for
	users and network information services such as {hostname}s and
	addresses which are accessed automatically by computers using
	some {client-server} protocol (usually Sun's {NIS}).

	See also {Network Operations Center}.

	(13 Dec 1994)

Network Information Service

	<networking, protocol> (NIS) {Sun Microsystems}' Yellow Pages
	(yp) {client-server} {protocol} for distributing system
	configuration data such as user and host names between
	computers on a network.

	Sun licenses the technology to virtually all other {Unix}
	vendors.

	The name "Yellow Pages" is a registered trademark in the
	United Kingdom of British Telecommunications plc for their
	(paper) commercial telephone directory.  Sun changed the name
	of their system to NIS, though all the commands and functions
	still start with "yp", e.g. {ypcat}, {ypmatch}, {ypwhich}.

	{Unix manual pages}: yp(3), ypclnt(3), ypcat(1), ypmatch(1).

	(08 Apr 1995)

Network Information System

	<spelling> A mis-expansion of {NIS}.

	(08 Apr 1995)

networking

	{network}

network interface card

	{network interface controller}

network interface controller

	<hardware, networking> (NIC or "network interface card") An
	adapter circuit board installed in a computer to provide a
	physical connection to a network.

	[Examples?  Attributes?]

	(04 Mar 1996)

network layer

	<networking> (communications subnet layer) The third lowest
	layer in the {OSI} seven layer model.  The network layer
	determines routing of {packets} of data from sender to
	receiver via the {data link layer} and is used by the
	{transport layer}.  The most common network layer {protocol}
	is {IP}.

	(13 Dec 1994)

network management

	<networking> The process of controlling a {network} so as to
	maximise its efficiency and productivity.  {ISO}'s model
	divides network management into five categories: {fault
	management}, {accounting management}, {configuration
	management}, {security management} and {performance
	management}.

	Fault management is the process of identifying and locating
	faults in the network.  This could include discovering the
	existence of the problem, identifying the source, and possibly
	repairing (or at least isolating the rest of the network from)
	the problem.

	Configuration management is the process of identifying,
	tracking and modifying the setup of devices on the network.
	This category is extremely important for devices that come
	with numerous custom settings (e.g. {router}s and {file
	server}s).

	Security management is the process of controlling (granting,
	limiting, restricting or denying) access to the network and
	resources thereon.  This could include setting up and managing
	{access list}s in {router}s (creating "{firewall}s" to keep
	intruders out), creating and maintaining password access to
	critical network resources, identifying the points of entry
	used by intruders and closing them.

	Performance Management is the process of measuring the
	performance of various network components.  This also includes
	taking measures to optimise the network for maximum system
	performance (periodically measuring of the use of network
	resources).

	{Usenet} newsgroup: {news:comp.dcom.net-management}.

	["Network Management: A Practical Perspective", Allan Leinwand
	and Karen Fang].

	(18 Nov 1994)

network meltdown

	(By analogy with catastrophic failure of a nuclear reactor) An
	event that causes saturation, or near saturation, on a
	network.  It usually results from illegal or misrouted packets
	and typically lasts only a short time.  It is the network
	equivalent of {thrash}ing.  This may be induced by a
	{Chernobyl packet}.

	See also {broadcast storm}, {kamikaze packet}.

	(29 Nov 1994)

Network News Transfer Protocol

	(NNTP) A {protocol} defined in {RFC} 977 for the distribution,
	inquiry, retrieval and posting of {Usenet} {news} articles
	over the {Internet}.  It is designed to be used between a
	{news reader} {client} such as {nn} or {GNUS} and a news
	{server}.  It is normally used on a connection to {TCP} {port}
	119 on the news {server}.  NNTP is a simple {ASCII} text
	protocol so even if you don't have a news reader program, you
	can just connect to the server using {telnet}:

		telnet news 119

	where news is the name of your server
	(e.g. news.doc.ic.ac.uk).  Typing HELP will give a list of
	other commands.

network number

	See {network address}.

network operating system

	An {operating system} which includes software to communicate
	with other computers via a {network}.  E.g. {Berkeley System
	Distribution} {Unix}, {Novell}, {LAntastic}, {MS LAN Manager}.

	[Is there a specific OS called "Network Operating System"?]

	(16 Jan 1995)

Network Operations Center

	(NOC) A location from which the operation of a {network} or
	{internet} is monitored.  Additionally, this center usually
	serves as a clearinghouse for connectivity problems and
	efforts to resolve those problems.

	See also {Network Information Center}.

	(01 Dec 1994)

network segment

	<networking> A part of an {Ethernet} or other network, on
	which all message traffic is common to all nodes, i.e. it is
	broadcast from one node on the segment and received by all
	others.  This is normally because the segment is a single
	continuous conductor, though it may include {repeaters}(?).

	Since all nodes share the physical medium, {collision
	detection} or some other {protocol} is required to determine
	whether a message was transmitted without interference from
	other nodes.  The recieving node inspects the destination
	address of a {packet} to tell if it was (one of) the intended
	recipient(s).

	Communication between nodes on different segments is via one
	or more {routers}.

	(16 Oct 1996)

Network Solutions, Inc.

	<company> (NSI) One of the three companies that provide and
	coordinate {InterNIC} services for the {NSFNet}.  NSI is
	responsible for registration.  NSI has been bought by, and is
	now a wholly-owned subsidiary of, {Science Applications
	International Corporation} (SAIC).

	(09 Nov 1995)

Network Termination

	(NT, NT1) A device connecting the customer's data or telephone
	equipment to the local {ISDN} exchange carrier's line.  The NT
	device provides a connection for {terminal equipment} (TE) and
	{terminal adaptor} (TA) equipment to the {local loop}.

	(30 Nov 1994)

network, the

	1. <jargon, networking> (Or "the net") The union of all the
	major noncommercial, academic and hacker-oriented networks,
	such as {Internet}, the old {ARPANET}, {NSFnet}, {BITNET}, and
	the virtual {UUCP} and {Usenet} "networks", plus the corporate
	in-house networks and commercial {time-sharing} services (such
	as {CompuServe}) that gateway to them.  A site is generally
	considered "on the network" if it can be reached by
	{electronic mail} through some combination of Internet-style
	(@-sign) and UUCP ({bang-path}) addresses.

	See {network address}.

	2. <body> A fictional conspiracy of libertarian
	hacker-subversives and anti-authoritarian monkeywrenchers
	described in Robert Anton Wilson's novel "Schrdinger's Cat",
	to which many {hackers} have subsequently decided they belong
	(this is an example of {ha ha only serious}).

	(21 Mar 1995)

Network Time Protocol

	(NTP) A {protocol} built on top of {TCP/IP} that assures
	accurate local timekeeping with reference to radio, atomic or
	other clocks located on the {Internet}.  This protocol is
	capable of synchronizing distributed clocks within
	milliseconds over long time periods.  It is defined in {STD}
	12, {RFC 1119}.

network transparency

	<networking> A feature of an {operating system} or other
	service which lets the user access a remote resource through a
	{network} without having to know if the resource is remote or
	local.

	For example {NFS} allow users to access remote files as if
	they were local files.

	(21 Dec 1996)

NetX

	<company> A LukeCo Company that designs {web pages} and web
	software.  Not to be confused with {Net:X}.

	{Home (http://members.aol.com/netx11/index.html)}.

	(15 Dec 1996)

Net:X

	<company> A Canadian company.  Not to be confused with {NetX}.

	{Home (www.netx.ca)}.

	[Summary?]

	(15 Dec 1996)

neural nets

	{artificial neural network}

neural network

	{artificial neural network}

neuron

	{artificial neural network}

Neutral Interconnect

	Network infrastructure where network service providers can
	freely exchange traffic without policy restrictions.  Examples
	are the GIX (Global Internet Exchange) at MAE-East (A
	Metropolitan Area Ethernet around Washington), and the Ebone
	(European Backbone).  There is currently (November 1993) no UK
	Neutral Interconnect.

newbie

	<jargon> /n[y]oo'bee/ (Originally from British public-school
	and military slang variant of "new boy") A {Usenet} neophyte.
	This term surfaced in the {newsgroup} {news:talk.bizarre} but
	is now in wide use.  Criteria for being considered a newbie
	vary wildly; a person can be called a newbie in one newsgroup
	while remaining a respected regular in another.  The label
	"newbie" is sometimes applied as a serious insult to a person
	who has been around {Usenet} for a long time but who carefully
	hides all evidence of having a clue.

	See {BIFF}.

	(25 Oct 1995)

New Flavors

	An {object-oriented} {Lisp} from {Symbolics}, the successor to
	{Flavors}, it led to {CLOS}.

	["Reference Guide to Symbolics-Lisp", Symbolics, March 1985].

	(10 Oct 1994)

newgroup wars

	/n[y]oo'groop worz/ [{Usenet}] The salvos of dueling
	"newgroup" and "rmgroup" messages sometimes exchanged by
	persons on opposite sides of a dispute over whether a
	{newsgroup} should be created net-wide, or (even more
	frequently) whether an obsolete one should be removed.  These
	usually settle out within a week or two as it becomes clear
	whether the group has a natural constituency (usually, it
	doesn't).  At times, especially in the completely anarchic alt
	hierarchy, the names of newsgroups themselves become a form of
	comment or humour; e.g. the spinoff of
	alt.swedish.chef.bork.bork.bork from alt.tv.muppets in early
	1990, or any number of specialised abuse groups named after
	particularly notorious {flamer}s, e.g. alt.weemba.

New Jersey

	[Primarily Stanford/Silicon Valley] Brain-damaged or of poor
	design.  This refers to the allegedly wretched quality of such
	software as {C}, {C++} and {Unix} (which originated at {Bell
	Labs} in Murray Hill, New Jersey).  "This compiler bites the
	bag, but what can you expect from a compiler designed in New
	Jersey?"  Compare {Berkeley Quality Software}.  See also {Unix
	conspiracy}.

newline

	<character, jargon> /n[y]oo'li:n/ {Line feed} or other
	character sequence used to terminate a line of text.

	{Unix} uses {line feed} as its text line terminator - a
	{Bell-Labs}-ism rather than a {Berkeley}ism.  Interestingly
	(and unusually for Unix jargon), it is said to have originally
	been an {IBM} usage.  Though the term "newline" appears in
	{ASCII} {standards}, it never caught on in the general
	computing world before {Unix}.  The encoding of line feed as
	"\n" in {C} and {Unix} strings comes from this name.

	The term has been used more generally for any {end of line}
	character, character sequence (e.g. {crlf}), or operation
	(like {Pascal}'s writeln procedure or {Lisp 1.5}'s {terpri})
	required to terminate a text record or separate lines.

	(14 Jul 1997)

NEWP

	{NEW Programming language}

NEW Programming language

	<language> (NEWP) A language which replaced {ESPOL} on the
	{Burroughs Large System}.

	(13 Dec 1994)

NeWS

	/nee'wis/, /n[y]oo'is/ or /n[y]ooz/ {Network extensible Window
	System}.

	Many hackers insist on the two-syllable pronunciations above
	as a way of distinguishing NeWS from {news} (the {netnews}
	software).

news

	See {netnews}.

NewsClip

	A very high level language designed for writing {netnews
	filter}s.  It translates into {C}.  It includes support for
	various {newsreader}s.  Version 1.01 includes a translator
	from NewsClip to {C}, examples and documentation.

	NewsClip was written by {Looking Glass Software} Ltd. and is
	distributed and used by {ClariNet Communications} Corporation  It is
	only supported for ClariNet customers.  Output of the filters
	may not be sold and donation for use of this program is hinted
	at.

	E-mail: <newsclip@clarinet.com>.

	(25 Oct 1992)

newsfroup

	<messaging, humour> A silly synonym for {Usenet} {newsgroup},
	originally a typo but now in regular use on {Usenet}'s
	{news:talk.bizarre} and other lunatic-fringe groups.

	Compare {hing}, {grilf}, and {filk}.

	(13 Dec 1994)

newsgroup

	<messaging> One of {Usenet}'s huge collection of topic groups
	or {fora}.  {Usenet} groups can be "unmoderated" (anyone can
	post) or "moderated" (submissions are automatically directed
	to a {moderator}, who edits or filters and then posts the
	results).  Some newsgroups have parallel {mailing list}s for
	{Internet} people with no netnews access, with postings to the
	group automatically propagated to the list and vice versa.
	Some moderated groups (especially those which are actually
	gatewayed {Internet} {mailing lists}) are distributed as
	"{digest}s", with groups of postings periodically collected
	into a single large posting with an index.

	Among the best-known are comp.lang.c (the {C}-language forum),
	comp.arch (on computer architectures), comp.Unix.wizards (for
	{Unix wizard}s), rec.arts.sf-lovers (for science-fiction
	fans), and talk.politics.misc (miscellaneous political
	discussions and {flamage}).

	Barry Shein <bzs@world.std.com> is alleged to have said,
	"Remember the good old days when you could read all the group
	names in one day?"  This gives a good idea of the growth and
	size of {Usenet}.

	See also {netiquette}.

	(13 Dec 1994)

newsletter

	<publication> A periodically published work containing news
	and announcements on some subject, typically with a small
	circulation.  Newsletters are a common application for {DTP}
	and may be distributed by {electronic mail}.

	(10 Dec 1996)

Newspeak

	A language inspired by {Scratchpad}.

	[J.K. Foderaro.  "The Design of a Language for Algebraic
	Computation", Ph.D. Thesis, UC Berkeley, 1983].

Newsqueak

	A {concurrent} {applicative} language with {synchronous}
	channels.

	["Newsqueak: A Language for Communicating with Mice", R. Pike
	CSTR143, Bell Labs (March 1989)].

	["The Implementation of Newsqueak", Rob Pike, Soft Prac & Exp
	20(7):649-659 (July 1990)].

.newsrc

	<messaging> (news run commands) The configuration file for the
	{Unix} {rn} {news reader}.

	See also {rc}.

	(09 Apr 1996)

news reader

	<messaging> A {browser} program which enables a user to read
	articles posted to {Usenet}.  Articles may be stored in a
	local (or {NFS}-mounted) {spool} directory, or retrieved via
	{NNTP}.

	Examples are {rn}, {GNUS}, and {nn}.

	(09 Apr 1996)

New Storage System

	<storage> (NSS) A major {Multics} implementation project
	during the 1970s.  The initial Multics {file system} design
	had evolved from the one-huge-disk world of {CTSS}.  When
	multiple disk units were used they were just assigned
	increasing ranges of disk addresses, so a {segment} could have
	{pages} scattered over all disks on the system.  This provided
	good {I/O} {parallelism} but made {crash recovery} expensive.
	NSS redesigned the lower levels of the file system,
	introducing the concepts of {logical volume} and {physical
	volume} and a mapping from a Multics directory branch to a
	{VTOC} entry for each file.  The new system had much better
	recovery performance in exchange for a small space and
	performance cost.

	(29 Jan 1997)

new talk

	{ntalk}

New Testament

	[C programmers] The second edition of {K&R}'s "The C
	Programming Language" (Prentice-Hall, 1988; ISBN
	0-13-110362-8), describing {ANSI C}.

Newton

	1. (Named after Isaac Newton (1642-1727)).  Rapin et al, Swiss
	Federal Inst Tech, Lausanne 1981.  General purpose expression
	language, syntactically ALGOL-like, with object-oriented and
	functional features and a rich set of primitives for
	concurrency.  Used for undergraduate teaching at Lausanne
	(EPFL).

	Versions: Newton 2.6 for VAX/VMS and Newton 1.2 for
	DEC-Alpha/{OSF}-1.

	E-mail: J. Hulaas <hulaas@lcodec1.epfl.ch>.
	{(ftp://ellc4.epfl.ch /pub/languages/Newton)}.

	["Procedural Objects in Newton", Ch. Rapin, SIGPLAN Notices
	24(9) (Sep 1989)].

	["The Newton Language", Ch. Rapin et al, SIGPLAN Notices
	16(8):31-40 (Aug 1981)].

	["Programming in Newton", Wuetrich and Menu, EPFL 1982].

	2. {Apple Newton}.

Newton-Raphson

	A well-known {algorithm} for solving equations.  Given an
	equation,

		f x = 0

	and an initial approximation, x(0), a better approximation is
	given by:

		x(i+1) = x(i) - f(x(i)) / f'(x(i))

	where f'(x) is the first derivative of f, df/dx.

NewWave

	A graphical user interface and object-oriented environment
	from Hewlett-Packard, based on Windows and available on Unix
	workstations.

NewYacc

	A {parser generator} by Jack Callahan
	<callahan@mimsy.cs.umd.edu>.  Version 1.0.

	{(ftp://flubber.cs.umd.edu/src/)}

	[Dec 89 CACM, A brief overview of NewYacc].

	(10 Feb 1992)

New York State Educational Reasearch NETwork

	(NYSERNET) A New York {Internet} access provider and regional
	network.  NYSERNet has been in the Internet business since
	about 1985 and have recently upgraded to a {T3} backbone (45
	megabits per second).  They work with {Sprint}, {NYNEX} and
	Rochester Telephone.

	NYSERNet, Inc., provides Internet Training provided through
	the NYSERNet Internet Training and Education Center (NITEC), a
	twenty-four station hands-on facility in Syracuse, NY.  The
	Information Services Group supplies tools for marketing via
	the {Internet} and NYSERNET also provide Technical Consulting
	Services.

	{Home (http://nysernet.org/)}

	E-mail: <info@nysernet.org>.

	(01 Feb 1995)

New York University

	(NYU) Established in 1831, New York University today includes
	thirteen schools, colleges and divisions located in New York
	City's borough of Manhattan, as well as research centers and
	programs in the surrounding suburbs and abroad.

	{(http://www.nyu.edu/)}

NEXOR

	<company> A technology company that specialises in providing
	electronic communication software products and services to a
	worldwide market.  It is also the home of {CUSI}.

	{Home (http://www.nexor.com/)}.

	(10 Nov 1997)

Nexpert Object

	An {expert system}.

NEXTSTEP

	<operating system> The original {multitasking} {operating
	system} that {NeXT} Software [were they called that then?]
	developed to run on its proprietary {NeXT} computers
	(informally known as "black boxes").  NEXTSTEP includes a
	specific {graphical user interface}, an interface builder,
	{object-oriented} application builder and several "kits" of
	prebuilt software {objects} such as the Indexing Kit for
	databases.  This software runs on top of NeXT's version of the
	{Mach} operating system on {NeXT}, {486}, {Pentium}, {HP-PA}
	and {Sun} {SPARC} computers.

	The last release of NEXTSTEP was 3.3 which NeXT then developed
	into "{OpenStep}".  After NeXT was bought by {Apple Computer,
	Inc.} OpenStep was merged[?] into "{Rhapsody}".

	{(http://turnpike.net/metro/bagingry/index.html)}

	(15 Oct 1997)

NFA

	Nondeterministic Finite-state Automaton.

	See {Finite State Machine}.

NFQL

	["NFQL: The Natural Forms Query Language", D. Embley, Trans
	Database Sys 14(2):168-211 (June 1989)].

NFS

	{Network File System}

NFT

	Network File Transfer.  An INTERLINK command on CERNVM.

NGL

	A dialect of {IGL}.

NHOH

	<chat> Never heard of him/her.  Often used in {initgame}.

	(18 Jan 1998)

NIAL

	Nested Interactive Array Language.

	A high-level {array}-oriented language from {Queen's
	University}, Canada, based on {Array Theory} as developed by
	Trenchard More Jr.

	{Q'NIAL} is an implementation in {C}.

	["Programming Styles in NIAL", M.A.  Jenkins et al, IEEE
	Software 3(1):46-55 (Jan 1986)].

	(25 Jan 1995)

NIAL Systems Ltd.

	Distributors of {Q'NIAL}.

	Address: Ottawa Canada.

	Telephone: Canada (613) 234 4188.

	(25 Jan 1995)

NIAM

	{Natural Language Information Analysis Method} (or Nijssen IAM).

nibble

	<data> /nib'l/ (US "nybble", by analogy with "bite" -> "byte")
	Half a {byte}.  Since a byte is nearly always eight {bits}, a
	nibble is nearly always four bits (and can therefore be
	represented by one {hex} digit).

	Other size nibbles have existed, for example the {BBC
	Microcomputer} disk file system used eleven bit sector numbers
	which were described as one byte (eight bits) and a nibble
	(three bits).

	Compare {crumb}, {tayste}, {dynner}; see also {bit}, {nickle},
	{deckle}.

	The spelling "nybble" is uncommon in {Commonwealth Hackish} as
	British orthography suggests the pronunciation /ni:'bl/.

	(03 Dec 1997)

Nibble Mode DRAM

	<storage> A standard {DRAM} where four successive {bits} can
	be clocked out of the single data line by successive pulses on
	the CAS\ line while RAS\ is active.  A column address is only
	required for the first bit.

	This mode is now unfashionable but can be found on some older
	64 kilobit and 256 kilobit chips.

	(03 Dec 1997)

NIC

	1. <networking> {Network Information Center}.

	2. <hardware> {Network Interface Card}.

	(13 Feb 1996)

NIC.DDN.MIL

	<networking> {Defense Data Network}'s {Network Information
	Center}.

	(13 Feb 1996)

NICE

	The {Nonprofit International Consortium for Eiffel}.

nick

	[IRC] nickname.  On {IRC}, every user must pick a nick, which
	is sometimes the user's real name or login name, but is often
	more fanciful.  Compare {handle}.

nickle

	/ni'kl/ ["nickel", common name for the US 5-cent coin] A
	{nibble} + 1; 5 bits.  Reported among developers for Mattel's
	{GI 1600} (the {Intellivision} games processor), a chip with
	16 bit-wide {RAM} but 10 bit-wide {ROM}.  See also {deckle}.

NICOL I

	1. Small subset of PL/I by (Massachusetts) Computer Assoc,
	ca. 1965.  Version: NICOL II (1967).  Sammet 1969, p.542.

	2. ICL, 1968. [same as 1?]

Nightmare File System

	Pejorative hackerism for {Sun}'s {Network File System} (NFS).
	In any nontrivial network of Suns where there is a lot of NFS
	{cross-mount}ing, when one Sun goes down, the others often
	freeze up.  Some machine tries to access the down one, and
	(getting no response) repeats indefinitely.  This causes it to
	appear dead to some messages (what is actually happening is
	that it is locked up in what should have been a brief
	excursion to a higher {spl} level).  Then another machine
	tries to reach either the down machine or the pseudo-down
	machine, and itself becomes pseudo-down.  The first machine to
	discover the down one is now trying both to access the down
	one and to respond to the pseudo-down one, so it is even
	harder to reach.  This situation snowballs very quickly, and
	soon the entire network of machines is frozen - worst of
	all, the user can't even abort the file access that started
	the problem!

	Many of NFS's problems are excused by partisans as being an
	inevitable result of its {stateless}ness, which is held to be
	a great feature (critics, of course, call it a great
	{misfeature}).  {ITS} partisans are apt to cite this as proof
	of {Unix}'s alleged bogosity; ITS had a working NFS-like
	shared file system with none of these problems in the early
	1970s.  See also {broadcast storm}.

night mode

	See {phase} (of people).

NIH

	The United States National Institutes of Health.

NIHCL

	A {class library} for {C++} from the US National Institutes of
	Health (NIH).

NII

	{National Information Infrastructure}

NIKL

	Frame language.

	["Recent Developments in NIKL", T.R. Kaczmarek et al, Proc
	AAAI-86, 1986].

Niklaus Wirth

	<person> The designer of the {Modula-2} and {Modula-3}
	programming languages.

	(25 Mar 1995)

NIL

	/nil/ 1. New Implementation of Lisp.  A language intended to
	be the successor of {MacLisp}.  A large {Lisp}, implemented
	mostly in {VAX} {assembly language}.  A forerunner of {Common
	LISP}.

	["NIL: A Perspective", Jon L. White, MACSYMA Users' Conf Proc,
	1979].

	2. Network Implementation Language.  Strom & Yemini, TJWRC,
	IBM.  Implementation of complex networking protocols in a
	modular fashion.

	["NIL: An Integrated Language and System for Distributed
	Programming", R. Strom et al, SIGPLAN Notices 18(6):73-82
	(June 1983)].

	3. Empty list or False.  In {Lisp}, the empty list (or "nil
	list") is used to represent the {Boolean} value False.  This
	is possible because {Lisp} is not typed.  True is represented
	by the special {atom} "t".

	4. Spoken in reply to a question, particularly one asked using
	the "-P" convention it means "No".  Most hackers assume this
	derives simply from LISP, but NIL meaning "no" was
	well-established among radio hams decades before LISP existed.
	The historical connection between early hackerdom and the ham
	radio world was strong enough that this may have been an
	influence.

Ninety-Ninety Rule

	<humour> "The first 90% of the code accounts for the first 90%
	of the development time.  The remaining 10% of the code
	accounts for the other 90% of the development time".

	An aphorism attributed to Tom Cargill of Bell Labs, and
	popularised by Jon Bentley's September 1985 "Bumper-Sticker
	Computer Science" column in "Communications of the ACM".  It
	was there called the "Rule of Credibility", a name which seems
	not to have stuck.

	(14 Jul 1995)

NIS

	{Network Information Service}

NISO

	National Information Standards Organisation (USA).  NISO
	Standards cover many aspects of library science, publishing,
	and information services, and address the application of both
	traditional and new technologies to information services.

NISS

	{National Information Services and Systems}

NIST

	{National Institute of Standards and Technology}

NJCL

	Network Job Control Language.

	["NJCL - A Network Job Control Language", J. du Masle et al,
	IFIP Congress 1974].

	(03 Feb 1995)

NLM

	{Netware Loadable Module}

NLP

	1. <application> {Natural Language Processing}.

	2. <networking> {Network Layer Protocol}.

NLS

	{Native Language System}

NLSP

	{NetWare Link State Protocol}

NMI

	{Non-Maskable Interrupt}

nML

	<language> A specification language for {instruction set}s,
	based on {attribute grammar}s, for {back-end generator}s.

	["The nML Machine Description Formalism", M. Freericks
	<mfx@cs.tu-berlin.de> TR TU Berlin, FB20, Bericht 1991/15].

	(28 Nov 1995)

NN

	{neural network}

nn

	<tool, messaging> A {terminal based} program for reading
	{Usenet} {news} by Kim F. Storm <storm@texas.dk>, Texas
	Instruments A/S, Denmark.

	nn lets you decide which of the many {news groups} you are
	interested in, and unsubscribe to those which don't interest
	you.  nn lets you select articles to read from a menu in each
	of the groups you subscribe.  nn sorts and presents new
	articles very quickly because it uses its own local database
	to maintain all the necessary information (this database is
	built and maintained by the nnmaster program).

	The {NNTP} support was designed and implemented by Ren'e
	Seindal, Institute of Datalogy, University of Copenhagen,
	Denmark.

	E-mail: <nn-bugs@dkuug.dk> (bugs, fixes, suggestions, etc.)

	{Usenet} newgroup: {news:news.software.nn}.

	(04 Dec 1995)

NNTP

	<messaging> {Network News Transfer Protocol}.

	(26 Feb 1996)

NOC

	{Network Operations Center}

NODAL

	Interpreted language implemented on Norsk Data's NORD-10
	computers.  Used by CERN and DESY high energy physics labs to
	control their accelerator hardware, PADAC and SEDAC.  Included
	trackball input, graphics.

Nodal Switching System

	(NSS) Main {routing} nodes in the {NSFnet} {backbone}.

noddy

	/nod'ee/ [UK: from the children's books] 1. Small and
	un-useful, but demonstrating a point.  Noddy programs are
	often written by people learning a new language or system.
	The archetypal noddy program is {hello, world}.  Noddy code
	may be used to demonstrate a feature or bug of a compiler.
	May be used of real hardware or software to imply that it
	isn't worth using.  "This editor's a bit noddy."

	2. A program that is more or less instant to produce.  In this
	use, the term does not necessarily connote uselessness, but
	describes a {hack} sufficiently trivial that it can be written
	and debugged while carrying on (and during the space of) a
	normal conversation.  "I'll just throw together a noddy {awk}
	script to dump all the first fields."  In North America this
	might be called a {mickey mouse program}.  See {toy program}.

	3. A simple (hence the name) language to handle text and
	interaction on the {Memotech} home computer.  Has died with
	the machine.

node

	1. A point or vertex in a {graph}.

	2. An addressable device attached to a computer {network}.
	More often called a "host".

	3. A {hypertext} document.

NOMAD

	<language, database> A {database} language.

	Version: NOMAD2 from {Must Software} International.

	Mailing list: NOMAD2-L@TAMVM1.BITNET.

	["NOMAD Reference Manual", Form 1004, National CSS Inc (Dec
	1976)].

	(01 Apr 1995)

NOMEX underwear

	/noh'meks uhn'-der-weir/ [{Usenet}] Synonym {asbestos
	longjohns}, used mostly in auto-related {mailing lists} and
	newsgroups.  NOMEX underwear is an actual product available on
	the racing equipment market, used as a fire resistance measure
	and required in some racing series.

Nominal Semidestructor

	Soundalike slang for "{National Semiconductor}", found among
	other places in the {4.3BSD} networking sources.  During the
	late 1970s to mid-1980s this company marketed a series of
	{microprocessor}s including the {NS16000} and {NS32000} and
	several variants.  At one point early in the great
	{microprocessor} race, the specs on these chips made them look
	like serious competition for the rising {Intel 80x86} and
	{Motorola 680x0} series.  Unfortunately, the actual parts were
	notoriously flaky and never implemented the full {instruction
	set} promised in their literature, apparently because the
	company couldn't get any of the mask steppings to work as
	designed.  They eventually sank without trace, joining the
	{Zilog Z8000} and a few even more obscure also-rans in the
	graveyard of forgotten {microprocessor}s.

	Compare {HP-SUX}, {AIDX}, {buglix}, {Macintrash}, {Telerat},
	{Open DeathTrap}, {ScumOS}, {sun-stools}.

	(23 Dec 1994)

nondeterminism

	<algorithm> A property of a computation which may have more
	than one result.

	One way to implement a nondeterministic {algorithm} is using
	{backtracking}, another is to explore (all) possible solutions
	in parallel.

	(13 Apr 1995)

nondeterministic

	Exhibiting {nondeterminism}.

nondeterministic automaton

	<theory> (Or "probabilistic automaton") An {automaton} in
	which there are several possible actions (outputs and next
	states) at each state of the computation such that the overall
	course of the computation is not completely determined by the
	program, the starting state, and the initial inputs.

	See also {nondeterministic Turing Machine}.

	(07 May 1996)

nondeterministic polynomial time

	<complexity> (NP) A set or property of computational {decision
	problem}s solvable by a {nondeterministic Turing Machine} in a
	number of steps that is a {polynomial} function of the size of
	the input.  The word "nondeterministic" suggests a method of
	generating potential solutions using some form of
	{nondeterminism} or "trial and error".  This may take
	{exponential time} as long as a potential solution can be
	verified in {polynomial time}.

	NP is obviously a superset of P ({polynomial time} problems
	solvable by a deterministic {Turing Machine} in {polynomial
	time}) since a deterministic algorithm can be considered as a
	degenerate form of nondeterministic algorithm.  The question
	then arises: is NP equal to P?  I.e. can every problem in NP
	actually be solved in polynomial time?  Everyone's first guess
	is "no", but no one has managed to prove this; and some very
	clever people think the answer is "yes".

	If a problem A is in NP and a polynomial time algorithm for A
	could also be used to solve problem B in polynomial time, then
	B is also in NP.

	See also {Co-NP}, {NP-complete}.

	[Examples?]

	(10 Apr 1995)

Nondeterministic Turing Machine

	<complexity> A normal (deterministic) {Turing Machine} that
	has a "guessing head" - a write-only head that writes a guess
	at a solution on the tape first, based on some arbitrary
	internal {algorithm}.  The regular {Turing Machine} then runs
	and returns "yes" or "no" to indicate whether the solution is
	correct.

	A {nondeterministic Turing Machine} can solve
	{nondeterministic polynomial time} computational {decision
	problems} in a number of steps that is a {polynomial} function
	of the size of the input

	(27 Apr 1995)

non-impact printer

	<printer> Any printer, such as a {laser printer}, {ink-jet
	printer}, {LED page printer}, that prints without striking the
	paper, unlike a {dot matrix printer} which hits the paper with
	small pins.  Non-impact printers are quieter than impact
	printers, and also faster due the lack of moving parts in the
	print head.

	(20 Nov 1995)

non-interlaced

	{interlace}

nonintrusive testing

	<testing> Testing that is transparent to the software under
	test, i.e., does not change its timing or processing
	characteristics.  Nonintrusive testing usually involves
	additional hardware that collects timing or processing
	information and processes that information on another
	platform.

nonlinear

	(Scientific computation) A property of a system whose output
	is not proportional to its input.  For example, a {transistor}
	has a region of input voltages for which its output voltage is
	found by multiplying the input voltage by the gain of the
	transistor.  Outside this region though, the transistor
	behaves non-linearly, meaning that it does not obey this
	simple equation.  The behaviour of a system containing
	non-linear components is thus harder to model and to predict.

Non-Maskable Interrupt

	(NMI) An IRQ 7 on the {PDP-11} or {680x0} or the NMI line on
	an 80x86.  In contrast with a {priority interrupt} (which
	might be ignored, although that is unlikely), an NMI is
	*never* ignored.

	(13 Dec 1994)

non-optimal solution

	(Or "sub-optimal solution") An astoundingly stupid way to do
	something.  This term is generally used in deadpan sarcasm, as
	its impact is greatest when the person speaking looks
	completely serious.

	See also {Bad Thing}.

	(13 Dec 1994)

Nonpareil

	One of five pedagogical languages based on {Markov
	algorithm}s, used in ["Nonpareil, a Machine Level Machine
	Independent Language for the Study of Semantics", B. Higman,
	ULICS Intl Report No ICSI 170, U London (1968)].  The others
	were {Brilliant}, {Diamond}, {Pearl} and {Ruby}.

non parity

	{parity}

non-polynomial

	<complexity> The set or property of problems for which no
	{polynomial-time algorithm} is known.

	This includes problems for which the only known {algorithm}s
	require a number of steps which increases exponentially with
	the size of the problem, and those for which no {algorithm} at
	all is known.  Within these two there are problems which are
	"{provably difficult}" and "{provably unsolvable}".

	(10 Apr 1995)

Non Return to Zero Inverted

	<storage> (NRZI) A recording method used for 9-track {magnetic
	tapes} (200 and 800 BPI) where a zero is represented by a
	change in the signal and a one by no change.

	Compare {Phase Encoded}, {GCR}.

	(26 Jul 1996)

nontrivial

	Requiring real thought or significant computing power.  Often
	used as an understated way of saying that a problem is quite
	difficult or impractical, or even entirely unsolvable
	("Proving P=NP is nontrivial").  The preferred emphatic form
	is "decidedly nontrivial".

	See {uninteresting}, {interesting}.

	(21 Feb 1995)

Non-Uniform Memory Access

	<architecture> (NUMA) A memory architecture, used in
	{multiprocessors}, where the access time depends on the memory
	location.  A processor can access its own local memory faster
	than non-local memory (memory which is local to another
	processor or shared between processors).

	(12 Nov 1995)

non-uniform quantising logarithmic compression

	The kind of {compression} often applied to a sound waveform.
	{Logarithmic compression} is a good match for the human ear's
	sensitivity but cannot handle zero amplitude (for which the
	logarithm is negative infinity).  There are two {standard}
	compression functions which give a smooth transition between
	the logarithmic function and a linear segment passing through
	the origin: {mu-law} (North America) and {A-law} ({ITU-T}).

	(21 Feb 1995)

Non-Uniform Rational B Spline

	<graphics, mathematics> (nurbs) A common term in Mechanical
	{CAD}.  The NURBS has excellent continuity characteristics
	which make it useful for creating accurate models in 3D
	geometry generation and computer modeling.

	[What is a nurbs?  an rbs?  a bs?  a s?]

	(27 Aug 1996)

non-volatile

	{non-volatile storage}

non-volatile memory

	{non-volatile storage}

Non-Volatile Random Access Memory

	<storage> (NVRAM) {Static random access memory} which is made
	into {non-volatile storage} either by having a battery
	permanently connected or by saving its contents to {EEPROM}
	before turning the power off and reloading it when power is
	restored.

	(22 Apr 1995)

non-volatile storage

	<storage> (persistent storage, memory) A term describing a
	storage device whose contents are preserved when its power is
	off.  Storage using magnetic media (e.g. {magnetic disks},
	{magnetic tape} or {bubble memory}) is normally non-volatile
	by nature whereas {semiconductor} memories ({static RAM} and
	especially {dynamic RAM}) are normally volatile but can be
	made into non-volatile storage by having a (rechargable)
	battery permanently connected.

	{Dynamic RAM} is particularly volatile since it looses its
	data, even if the power is still on, unless it is {refresh}ed.
	An acoustic {delay line} is a (very old) example of a volatile
	storage device.

	Other examples of non-volatile storage are {EEPROM}, {CD-ROM},
	{paper tape} and {punched cards}.

	(05 Jun 1997)

no-op

	/noh'op/ alt. NOP /nop/ [no operation] 1. A machine
	instruction that does nothing (sometimes used in
	assembler-level programming as filler for data or patch areas,
	or to overwrite code to be removed in binaries).  See also
	{JFCL}.

	2. A person who contributes nothing to a project, or has
	nothing going on upstairs, or both.  As in "He's a no-op."

	3. Any operation or sequence of operations with no effect,
	such as circling the block without finding a parking space, or
	putting money into a vending machine and having it fall
	immediately into the coin-return box, or asking someone for
	help and being told to go away.  "Oh, well, that was a no-op."
	Hot-and-sour soup that is insufficiently either is "no-op
	soup"; so is wonton soup if everybody else is having
	hot-and-sour.

	(02 Dec 1994)

NOR

	Not OR.

	The {Boolean} function which is true if none of its inputs are
	true and false otherwise, the {logical complement} of
	{inclusive OR}.  The binary (two-input) NOR function can be
	defined (written as an {infix} operator):

	A NOR B = NOT (A OR B) = (NOT A) AND (NOT B)

	Its {truth table} is:

		A | B | A NOR B
		--+---+---------
		F | F |    T
		F | T |	   F
		T | F |    F
		T | T |    F

	NOR, like {NAND}, forms a complete set of {Boolean} functions on
	its own since it can be used to make NOT, AND, OR and any
	other Boolean function:

	NOT A = A NOR A

	A OR B = NOT (A NOR B)

	A AND B = (NOT A) NOR (NOT B)

	(06 Feb 1995)

NORC COMPILER

	Early system on NORC machine.  Listed in CACM 2(5):16 (May
	1959).

NorCroft

	(Contraction of Norman + Mycroft) A company producing {C}
	compilers, set up by Arthur Norman and Alan Mycroft.  Now
	"sort of" called Codemist.  The original Norcroft compiler was
	written by Alan and Arthur to provide a {platform} for
	teaching languages and compilers on the {Cambridge University}
	{mainframe}.  They then went on to develop versions for the
	{transputer}, {ARM} and others.

	[What is the relationship between NorCroft and Codemist?]

	(25 Oct 1994)

NORD PL

	Intermediate language for {Norsk Data} computers.  {Sintran
	III}, the {operating system} of the ND 10 (late 1970's), was
	written in NORD PL.

	["NORD PL User's Guide", ND-60.047.03].

NORDUnet

	A collaboration between the national research networks in
	Denmark, Finland, Iceland, Norway and Sweden.  It provides
	international access for these countries.

	{(http://info.nordu.net/)}

normal distribution

	<statistics> (Or "Gaussian distribution", "bell curve") The
	{frequency distribution} of many natural phenomena such as the
	height of people of a certain age and sex.  The formula looks
	something like:

		P(x) = e^(((x-m)/s)^2)

	where P(x) is the probability of a measurement x, m is the
	mean value of x and s is the {standard deviation}.

	(18 Mar 1995)

normal form

	1. <reduction> In {reduction} systems, a term is in normal
	form when it contains no reducible expressions.

	See also {head normal form}, {weak head normal form}.

	2.<database> A {relation} in a {relational database} is said
	to be in normal form if it satisfies certain {constraint}s.
	{Codd}'s original work defined three such forms.

	(27 Feb 1995)

normalisation

	1. <data processing> A transformation applied uniformly to
	each element in a set of data so that the set has some
	specific statistical property.  For example, monthly
	measurements of the rainfall in London might be normalised by
	dividing each one by the total for the year to give a profile
	of rainfall throughout the year.

	2. <programming> Representation of a {floating-point} number
	so that its {mantissa}'s left-most digit is non-zero.  If the
	leftmost fraction digit are zeros, the number is said to be
	unnormalised.  Unnormalised numbers are normalised by shifting
	the fraction left, one digit at a time, until the leftmost
	digit is nonzero and reducing the {exponent} by the number of
	shifts.

	(27 Feb 1995)

normalised

	Resulting from {normalisation}.

normalization

	{normalisation}

normalized

	Resulting from {normalisation}.

normal order reduction

	Under this {evaluation strategy} an expression is evaluated by
	reducing the leftmost outermost {redex} first.  This method
	will terminate for any expression for which termination is
	possible, whereas {applicative order reduction} may not.  This
	method is equivalent to passing arguments unevaluated because
	arguments are initially to the right of functions applied to
	them.  See also {computational adequacy theorem}.

NorthWestNet

	(NWNET) Kochmer, J., and NorthWestNet, "The Internet Passport:
	NorthWestNets Guide to Our World Online", NorthWestNet,
	Bellevue, WA, 1992.

NOT

	<logic> The {Boolean} function which is true only if its input
	is false.  Its {truth table} is:

	 A | NOT A
	 --+----------
	 F |   T
	 T |   F

	(04 Nov 1996)

Not-a-Number

	<mathematics> (NaN) A special {IEEE floating point} value
	representing the result of a numerical operation which cannot
	return a valid number value.  A NaN can be the result of an
	invalid operation (e.g. division by zero?); the result
	returned by a library function when it would be incorrect to
	return a numeric value (e.g. ?) or an undetermined value
	(e.g. uninitialised variable?).

	NaN is encoded as a special {bit pattern} which typically
	(always?) would otherwise represent a {floating-point} number
	value.  It is used to signal error returns where other
	mechanisms are not convenient, e.g. a hardware {floating-point
	unit} and to allow errors to propagate through a calculation.

	Similar bit patterns are defined to represent positive and
	negative {overflow} and {underflow}.

	[ANSI/IEEE Std 754-1985].

	[Correct examples?]

	(03 Dec 1997)

notebook

	1. <computer> {laptop computer}.

	2. <tool> {Labtech Notebook}.

	(05 Jan 1998)

NoteCards

	An ambitious hypertext system developed at Xerox PARC,
	"designed to support the task of transforming a chaotic
	collection of unrelated thoughts into an integrated, orderly
	interpretation of ideas and their interconnections".

Notepad

	<text, tool> The very basic {text editor} supplied with
	{Microsoft Windows}.

	(05 Jan 1998)

Notes

	{Lotus Notes}

Nother

	A parallel {symbolic mathematics} system.

	E-mail: <karhu@cs.umu.se>.

not ready for prime time

	Usable, but only just so; not very robust; for internal use
	only.  Said of a program or device.  Often connotes that the
	thing will be made more solid {Real Soon Now}.  This term
	comes from the ensemble name of the original cast of "Saturday
	Night Live", the "Not Ready for Prime Time Players".  It has
	extra flavour for hackers because of the special (though now
	semi-obsolescent) meaning of {prime time}.  Compare {beta}.

notwork

	/not'werk/ A network, when it is acting {flaky} or is {down}.
	Compare {nyetwork}.  Said at IBM to have originally referred
	to a particular period of flakiness on IBM's VNET corporate
	network ca. 1988; but there are independent reports of the
	term from elsewhere.

Nova

	<processor> A {minicomputer}(?), introduced some time before
	1978, with four 16-bit {accumulator}s, AC0 to AC3 and a 15 bit
	{program counter}.  A later model also had a 15-bit {stack
	pointer} and {frame pointer}.  AC2 and AC3 could be used for
	indexed addresses and AC3 was used to store the return address
	on a {subroutine} call.  Apart from the small {register set},
	the NOVA was an ordinary {CPU} design.

	Memory could be access indirectly through addresses stored in
	other memory locations.  If locations 0 to 3 were used for
	this purpose, they were auto-incremented after being used.  If
	locations 4 to 7 were used, they were auto-decremented.
	Memory could be addressed in 16-bit words up to a maximum of
	32K words (64K bytes).  The instruction cycle time was 500
	{nanoseconds}(?) cycle time for each.  The Nova originally
	used {core memory} though later on they gained {dynamic RAM}.

	Like the {PDP-8}, the {Data General} Nova was also copied, not
	just in one, but two implementations - the {Data General
	MN601} and {Fairchild 9440}.  Luckily, the NOVA was a more
	mature design than the PDP-8.

	Another CPU, the {PACE}, was based on the NOVA design, but
	featured 16-bit addresses (instead of the Nova's 15), more
	{addressing mode}s and a 10-level {stack} (like the {Intel
	8008}).

	[Date, speed, mini?]

	(01 Mar 1996)

Novell Data Systems

	<company> A small computer {hardware} company building {CP/M}
	{Z80}-based systems.  They later went on to become {Novell,
	Inc.} and develop {Novell Netware}.

	(23 Sep 1995)

Novell DOS

	<operating system, product> {Novell}'s fully compatible
	alternative to {MS-DOS}.  It is intended as an {operating
	system} for {workstations} on {Novell} networks.  It features
	enhanced {memory management} that moves the operating system,
	{network drivers}, and {memory-resident programs} ({TSR}s) out
	of conventional memory on all systems with an {Intel 80286} or
	later processor and {extended memory} or {expanded memory}.
	It supports {preemptive multitasking} and {peer-to-peer
	networking} using the same {DOS Requester} and {VLM}s for a
	"common client" with native {Novell NetWare}.

	A data {compression} utility effectively doubles storage
	capacity of the hard disk.  It supports disk
	{defragmentation}, a read/write {disk cache} for better
	performance of both DOS and {Microsoft Windows} {application
	programs}.  An undelete utility recovers erased files, even on
	network drives.  It has a complete on-line reference guide,
	command help, and menu-driven install and setup utilities for
	easy configuration changes.

	Novell DOS has internal and external commands like {MS-DOS}.
	The following commands have been significantly enhanced in
	Novell DOS: CHKDSK, DISKCOPY, HELP, MEM, REPLACE, UNDELETE,
	and XCOPY.  Novell DOS also includes many new commands such as
	XDIR, CURSOR, XDEL, TOUCH, SCRIPT, and RENDIR.

	Version: 7.

	(14 Apr 1995)

Novell, Inc.

	<company, networking> A {software} development company
	specialising in {network}ing and {workgroup} applications.

	{Novell} started life as {Novell Data Systems}, a computer
	hardware business.  The company was reorganised as Novell,
	Inc., and began to focus almost entirely on networking in
	1983, with the release of {Novell Netware} 1, a {Network
	Operating System} for {IBM PC}s.

	{Novell Netware}'s success has left Novell in a dominant
	position in the {network}ing market.  The product has evolved
	and now supports many {hardware} and {software} {platform}s
	together with {WAN} connectivity.

	The company has diversified in recent years, with the
	acquisition of several mainstream applications, including
	{Wordperfect} and {Quattro} Pro.  Other products include
	{UnixWare}, {AppWare}, {Personal NetWare}, {Groupwise} and
	{Novell Dos 7}.

	{Home (http://www.novell.com/)}

	(21 Sept 1995)

Novell NetWare

	<operating system, networking> {Novell, Inc.}'s proprietary
	networking {operating system} for the {IBM PC}.

	NetWare uses the {IPX}/{SPX}, {NetBEUI} or {TCP/IP} network
	{protocol}s.  It supports {MS-DOS}, {Microsoft Windows},
	{OS/2}, {Macintosh} and {Unix} {clients}.  NetWare for Unix
	lets users access Unix hosts.

	NetWare 2.2 is a 16-bit operating system, versions 4.x and 3.x
	are 32-bit operating systems.

	{Home (http://netware.novell.com/)}

	{Usenet} newsgroup: {news:comp.sys.novell}.

	["Netware", K. Siyan, pub. New Riders].

	[LAN Magazine, Sep 1993].

	(13 Jan 1996)

NOWEB

	<programming> A system of {structured programming} and
	documentation from M.Speh in {DESY}.

	See {literate programming}.

	(13 Jan 1996)

no-write allocation

	<architecture> A {cache} policy where only processor reads are
	cached, thus avoiding the need for {write-back} or
	{write-through}.

	(12 Jun 1996)

NP

	<complexity> {nondeterministic polynomial time}.

NPC

	{NP-complete}

NP-complete

	<complexity> (NPC, Nondeterministic Polynomial time complete)
	A set or property of computational {decision problem}s which
	is a subset of {NP} (i.e. can be solved by a
	{nondeterministic} {Turing Machine} in {polynomial} time),
	with the additional property that it is also {NP-hard}.  Thus
	a solution for one NP-complete problem would solve all
	problems in NP.  Many (but not all) naturally arising problems
	in class NP are in fact NP-complete.

	There is always a {polynomial-time algorithm} for transforming
	an instance of any NP-complete problem into an instance of any
	other NP-complete problem.  So if you could solve one you
	could solve any other by transforming it to the solved one.

	The first problem ever shown to be NP-complete was the
	{satisfiability problem}.  Another example is {Hamilton's
	problem}.

	See also {computational complexity}, {halting problem},
	{Co-NP}, {NP-hard}.

	{(http://fi-www.arc.nasa.gov/fia/projects/bayes-group/group/NP/)}

	[Other examples?]

	(10 Apr 1995)

NP-hard

	<complexity> A set or property of computational {search
	problem}s.  A problem is NP-hard if solving it in {polynomial
	time} would make it possible to solve all problems in class
	{NP} in polynomial time.

	Some NP-hard problems are also in {NP} (these are called
	"{NP-complete}"), some are not.  If you could reduce an {NP}
	problem to an NP-hard problem and then solve it in polynomial
	time, you could solve all NP problems.

	See also {computational complexity}.

	[Examples?]

	(10 Apr 1995)

NPL

	1. New Programming Language.  IBM's original (temporary) name
	for PL/I, changed due to conflict with England's "National
	Physical Laboratory."  MPL and MPPL were considered before
	settling on PL/I.  Sammet 1969, p.542.

	2. A {functional language} with {pattern matching} designed by
	Rod Burstall and John Darlington in 1977.  The language
	allowed certain sets and logic constructs to appear on the
	right hand side of definitions, E.g.

		setofeven(X) <= <:x: x in X & even(x) :>

	The NPL {interpreter} evaluates the list of {generator}s from
	left to right so conditions can mention any bound variables
	that occur to their left.  These were known as {set
	comprehension}s.  NPL eventually evolved into {Hope} but lost
	set comprehensions which were called {list comprehension}s in
	later functional languages.

	[John Darlington, "Program Transformation and Synthesis:
	Present Capabilities", Research Report No. 77/43, Dept. of
	Computing and Control, Imperial College of Science and
	Technology, London September 1977.]

	3. NonProcedural Language.  A {relational database} language
	developed by by T.D. Truitt et al in 1980 for {Apple II} and
	{MS-DOS}.

	["An Introduction to Nonprocedural Languages Using NPL",
	T.D. Truitt et al, McGraw-Hill 1983].

NPPL

	Network Picture Processing Language.  An interactive language
	for manipulation of {digraphs}.

	["A Graph Manipulator for On-line Network Picture Processing",
	H.A. DiGiulio, Proc FJCC 35 (1969)].

N-Prolog

	{Prolog} extended with explicit negation.  Dov Gabbay
	<dg@doc.ic.ac.uk>.

	[J Logic Programming].

NP time

	{nondeterministic polynomial time}

NQS

	Batch processing software for Unix systems.

Nqthm

	The language used in the {Boyer-Moore} {theorem prover}.

	["Proving Theorems About LISP Functions", R.S. Boyer et al
	JACM 22(1):129-144 (Jan 1975)].

NREN

	{National Research and Education Network}

nroff

	/N'rof/ [Unix, from "new {roff}"] A text formatting language
	and interpreter, companion to the Unix typesetter {troff},
	accepting identical input but preparing output for terminals
	and line printers.  See also {groff}.

NRZ

	{Non Return to Zero}

NRZI

	{Non Return to Zero Inverted}

ns

	{nanosecond}

NSA line eater

	<messaging, tool> The National Security Agency trawling
	program sometimes assumed to be reading the net for the US
	Government's spooks.  Most hackers describe it as a mythical
	beast, but some believe it actually exists, more aren't sure,
	and many believe in acting as though it exists just in case.
	Some netters put loaded phrases like "KGB", "Uzi", "nuclear
	materials", "Palestine", "cocaine", and "assassination" in
	their {sig blocks} to confuse and overload the creature.  The
	{GNU} version of {EMACS} actually has a command that randomly
	inserts a bunch of insidious anarcho-verbiage into your edited
	text.

	There is a mainstream variant of this myth involving a "Trunk
	Line Monitor", which supposedly used speech recognition to
	extract words from telephone trunks.  This one was making the
	rounds in the late 1970s, spread by people who had no idea of
	then-current technology or the storage, {signal-processing},
	or {speech recognition} needs of such a project.  On the basis
	of mass-storage costs alone it would have been cheaper to hire
	50 high-school students and just let them listen in.
	Speech-recognition technology can't do this job even now
	(1993), and almost certainly won't in this millennium, either.

	The peak of silliness came with a letter to an alternative
	paper in New Haven, Connecticut, laying out the factoids of
	this Big Brotherly affair.  The letter writer then revealed
	his actual agenda by offering - at an amazing low price, just
	this once, we take VISA and MasterCard - a scrambler
	guaranteed to daunt the Trunk Trawler and presumably allowing
	the would-be Baader-Meinhof gangs of the world to get on with
	their business.

	(13 Dec 1994)

NSAPI

	{Netscape Application Programming Interface}

NSDI

	{National Spatial Data Infrastructure}

NSE

	Network Software Environment: a proprietary CASE framework
	from Sun Microsystems.

NSF

	{National Science Foundation}

NSFNET

	{National Science Foundation Network}

NSI

	<company> {Network Solutions, Inc.}.

	(09 Nov 1995)

nslookup

	A {Unix} utility by Andrew Cherenson for querying {Internet}
	{domain name server}s.  The basic use is to find the {Internet
	address} corresponding to a given {hostname} (or vice versa).
	By changing the query type (e.g. "set type=CNAME") other types
	of information can be obtained including CNAME - the
	{canonical name} for an alias; HINFO - the host {CPU} and
	{operating system} type; MINFO - mailbox or mail list
	information; {MX} - {mail exchanger} information; NS - the
	{name server} for the named zone; PTR - the hostname if the
	query is an Internet address, otherwise the pointer to other
	information; SOA the domain's start-of-authority information;
	TXT - text information; UINFO - user information; WKS -
	supported {well-known service}s.  Other types (ANY, AXFR, MB,
	MD, MF, NULL) are described in {RFC 1035}.

	{(ftp://src.doc.ic.ac.uk/computing/operating-systems/unix/bsd-sources/usr.sbin/named/tools/nslookup/)}

	(27 Oct 1994)

NSRD

	{National Software Reuse Directory}

NSS

	1. <networking> {Nodal Switching System}.

	2. <operating system> {New Storage System}.

	(29 Jan 1997)

NT

	1. {Network Termination}.

	2. New Technology, as in {Windows NT}.

NT1

	{Network Termination}

ntalk

	<chat> ("new talk") An update of the {Unix} "{talk}" program,
	old versions of "talk" being referred to as "old talk".  New
	talk and old talk are generally incompatible, and attempts to
	get them to communicate result in entirely unhelpful error
	messages.

	On most modern {Unix} systems, the program "talk" is new talk,
	with some {SunOS} versions being a notable and annoying
	exception to this.

	(11 Sep 1997)

NTAS

	{NT Advanced Server}

NT File System

	<file system> (NTFS) The {native} {file system} of {Windows
	NT}.

	(06 Mar 1995)

NTFS

	{NT File System}

NTIS

	{National Technical Information Service}

NTMBS

	<programming> {null-terminated multibyte string}.

	(02 Oct 1995)

NTP

	{Network Time Protocol}

NTSC

	{National Television Standards Committee}

NTU

	{Network Termination Unit}

NuBus

	The proprietary {expansion bus} used on Apple {Macintosh}
	{personal computer}s.

	(03 Feb 1995)

nu-calculus

	An asynchronous version of {pi-calculus}.

NUCLEOL

	List processing language, influenced by EOL.  J. Nievergelt,
	Computer J 13(3) (Aug 1970).

nude

	Said of machines delivered without an operating system
	(compare {bare metal}).  "We ordered 50 systems, but they all
	arrived nude, so we had to spend a an extra weekend with the
	installation tapes."  This usage is a recent innovation
	reflecting the fact that most PC clones are now delivered with
	DOS or Microsoft Windows pre-installed at the factory.  Other
	kinds of hardware are still normally delivered without OS, so
	this term is particular to PC support groups.

	(13 Dec 1994)

nuke

	/n[y]ook/ 1. To intentionally delete the entire contents of a
	given directory or storage volume.  "On Unix, "rm -r /usr"
	will nuke everything in the usr file system."  Never used for
	accidental deletion.  Opposite: {blow away}.

	2. Synonym for {dike}, applied to smaller things such as
	files, features, or code sections.  Often used to express a
	final verdict.  "What do you want me to do with that 80-meg
	{wallpaper} file?"  "Nuke it."

	3. Used of processes as well as files; nuke is a frequent
	verbal alias for "kill -9" on Unix.

	4. On IBM PCs, a bug that results in {fandango on core} can
	trash the operating system, including the FAT (the in-core
	copy of the disk block chaining information).  This can
	utterly scramble attached disks, which are then said to have
	been "nuked".  This term is also used of analogous lossages on
	Macintoshes and other micros without memory protection.

null modem

	<communications, hardware> A cable, especially an {RS-232}
	cable, for connecting serial ports on two computers directly,
	rather than via modems.  Since, according to the
	specification, both computers should transmit on pin three of
	their RS-232 connectors and recieve on pin two, a null modem
	cable needs to connect one computer's pin two to the other's
	pin three and vice versa.  It also needs to have male
	connectors at both ends (again, according to the
	specification).

	(17 May 1996)

null-terminated multibyte string

	<programming> (NTMBS) (Defined in the {ANSI C++} draft)

	[Different from null-terminated string?]

	(02 Oct 1995)

NUMA

	{Non-Uniform Memory Access}

number crunching

	<application, jargon> Computations of a numerical nature,
	especially those that make extensive use of {floating-point}
	numbers.  The only thing {Fortrash} is good for.

	This term is in widespread informal use outside hackerdom and
	even in mainstream slang, but has additional hackish
	connotations: namely, that the computations are mindless and
	involve massive use of {brute force}.  This is not always
	{evil}, especially if it involves {ray tracing} or {fractal}s
	or some other use that makes {pretty pictures}, especially if
	such pictures can be used as {wallpaper}.

	See also {crunch}.

	(17 Mar 1995)

numbers

	(Scientific computation) Output from a computation that may
	not be significant but at least indicates that the program is
	running.  Numbers may be used to placate management, grant
	sponsors, etc.  "Making numbers" means running a program
	because output - any output, not necessarily meaningful output
	- is needed as a demonstration of progress.

	See {pretty pictures}, {math-out}, {social science number}.

	(13 Jan 1995)

number sign

	<character> {hash}.

Numeris

	The name given by France Telecom, the french telephone network
	operator, to its {ISDN} network.

	(31 Jan 1995)

Nuprl

	/nyu p*rl/ Nearly Ultimate PRL.

	A system for interactive creation of formal mathematics,
	including definitions and proofs.  It has an extremely rich
	type system, including dependent functions, products, sets,
	quotients and universes.  Types are first-class citizens.
	It is built on {Franz Lisp} and {Edinburgh ML}.

	["Implementing Mathematics in the Nuprl Proof Development
	System", R.L. Constable et al, P-H 1986].

	(13 Dec 1994)

NU-Prolog

	L. Naish, U Melbourne.  A Prolog with 'when' declarations, the
	successor to MU-Prolog.  Type-checked.  "NU-Prolog Reference
	Manual - Version 1.3", J.A. Thom et al eds, TR 86/10, U
	Melbourne (1988).  Available (but not free).  (See
	PNU-Prolog).  E-mail: <jas@mulga.oz.au>.

nurbs

	{Non-Uniform Rational B Spline}

Nu Thena

	A software vendor specialising in rapid prototyping tools for
	{real-time} hardware and software systems and collaborating
	with {DAZIX}.

NUXI problem

	/nuk'see pro'bl*m/ Refers to the problem of transferring data
	between machines with differing byte-order.  The string "Unix"
	might look like "NUXI" on a machine with a different "byte
	sex" (e.g. when transferring data from a {little-endian} to a
	{big-endian}, or vice-versa).  See also {middle-endian},
	{swab}, and {bytesexual}.

NVRAM

	{Non-Volatile Random Access Memory}

NWNET

	{NorthWestNet}

NYAP

	<language> An early system on the {IBM 704}.

	[Listed in CACM 2(5):16, May 1959].

	(03 Dec 1997)

nybble

	{nibble}

nyetwork

	/nyet'werk/ (Russian "nyet" = no) A network, when it is acting
	{flaky} or is {down}.

	Compare {notwork}.

	(01 Feb 1995)

Nyquist Theorem

	<communications> A theorem stating that an {analogue} signal
	must be sampled at twice the bandwidth occupied by the signal
	for analogue-to-digital conversion, e.g. a 4 kHz voice signal
	must be sampled at 8 kHz.

	[More detail?]

	(18 Feb 1996)

NYSERNET

	{New York State Educational Reasearch NETwork}

NYU OMNIFAX

	Early system on UNIVAC I or II.  Listed in CACM 2(5):16 (May
	1959).

O

	The letter of the alphabet, not to be confused with {0}, the
	digit.

O2

	Object-Oriented.  {Object-oriented database} language used in
	the {Altair} project.  Implemented as an {interpreter}.  GIP
	Altair, Versailles, France.  Francois Bancilhon et al, in
	Advances in Object-Oriented Database Systems, K.R. Dittrich
	ed, LNCS 334, Springer 1988.  See {CO2}.

Oaklisp

	A portable {object-oriented} {Scheme} by K. Lang and Barak
	Perlmutter <Pearlmutter-Barak@cs.yale.edu>.  Oaklisp uses a
	superset of Scheme syntax.  It is based on generic operations
	rather than functions and features {anonymous class}es,
	{multiple inheritance}, a strong error system, {setter}s and
	{locator}s for operations and a facility for {dynamic
	binding}.

	Version 1.2 includes an interface, {bytecode compiler},
	{run-time system} and documentation.

	{(ftp://f.gp.cs.cmu.edu/usr/bap/oak/ftpable/)}, {for Amiga
	(ftp://ftp.cso.uiuc.edu/pub/amiga/fish/ff519)}.

	["Oaklisp: An Object-Oriented Scheme with First-Class Types",
	K. Lang et al, SIGPLAN Notices 21(11):30-37 (Nov 1986) (OOPSLA
	'86)].

	(01 May 1992)

OAP

	{Outside Awareness Port}

OATH

	Object-oriented Abstract Type Hierarchy, a class library for
	C++ from {Texas Instruments}.

Ob-

	/ob/ prefix Obligatory.  A piece of {netiquette} acknowledging
	that the author has been straying from the newsgroup's charter
	topic.  For example, if a posting in alt.sex is a response to
	a part of someone else's posting that has nothing particularly
	to do with sex, the author may append "ObSex" (or "Obsex") and
	toss off a question or vignette about some unusual erotic act.
	It is considered a sign of great {winnitude} when one's Obs
	are more interesting than other people's whole postings.

OBDC

	Do you mean {ODBC}?

	(30 Jun 1996)

OBE

	Office By Example.  Moshe Zloof, IBM, early 1980's.  Sequel to
	QBE, descriptions published but apparently never implemented.

Oberon

	<language> A {strongly typed} {procedural} programming
	language and an operating environment evolved from {Modula-2}
	by {Nicklaus Wirth} in 1988.  Oberon adds type extension
	({inheritance}), extensible record types, multidimensional
	open arrays, and {garbage collection}.  It eliminates {variant
	records}, {enumeration types}, {subranges}, lower array
	indices and {for loops}.

	A successor called Oberon-2 by H. Moessenboeck features a
	handful of extensions to Oberon including type-bound
	procedures ({methods}).

	Seneca is a variant of Oberon focussing on numerical
	programming under development by R. Griesemer in April 1993
	(to be renamed).

	See also {Ceres workstation Oberon System}.

	{Home (http://ics.inf.ethz.ch/Oberon.html)}

	{(http://www.math.tau.ac.il/~laden/Oberon.html)}.

	{Macintosh, MS-DOS version
	(ftp://ftp.inf.ethz.ch/pub/Oberon)}.  {MS-DOS
	(ftp://ftp.wustl.edu/mirrors/msdos/pgmutl/)}.  {Amiga
	(ftp://ftp.cso.uiuc.edu/pub/amiga/fish/ff380)}.

	["The Programming Language Oberon", N.  Wirth, Soft Prac & Exp
	18(7):671-690 July 1988].

	["Programming in Oberon: Steps Beyond Pascal and Modula",
	M. Reiser & N. Wirth, A-W 1992].

	["Project Oberon: the design of an operating system and
	compiler", N. Wirth & J. Gutknecht, ACM Press 1992].

	(07 Jan 1996)

Oberon-2

	H. Moessenboeck, 1991.  A superset of Oberon-1 to include
	object-orientation.  A redesign of Object Oberon.  Type-bound
	procedures (equivalent to methods), read-only export of
	variables and record fields, open array variables, and a
	'with' statement with variants.  The 'for' statement is
	reintroduced.  Second Intl Modula-2 Conf, Sept 1991.

	{(ftp://neptune.inf.ethz.ch:/Oberon/)}.  {Version 4
	documentation
	(ftp://neptune.inf.ethz.ch/Oberon/Docu/Oberon2Report.ps.Z)}.

	There is an Oberon-2 {Lex} scanner and {Yacc} parser by
	Stephen J Bevan <bevan@cs.man.ac.uk> based on the one in the
	Mo"ssenbo"ck and Wirth reference.  Version 1.4

	{(ftp://ftp.psg.com/pub/oberon/tools/o2lexyac.tar.Z)} or mail
	<bevan@cs.man.ac.uk> with Subject "b-server-request" and body
	"send oberon/oberon_2_p_v1.4.shar".

	["The Programming Language Oberon-2", H. Mo"ssenbo"ck,
	N. Wirth, Institut fu"r Computersysteme, ETH Zu"rich, January
	1992].

	(06 Jul 1992)

Oberon-V

	(Formerly Seneca).  R. Griesemer, 1990.  Descendant of Oberon
	designed for numerical applications on supercomputers,
	especially vector or pipelined architectures.  Includes array
	constructors and an ALL statement.  "Seneca - A Language for
	Numerical Applications on Vectorcomputers", Proc CONPAR 90 -
	VAPP IV Conf.  R. Griesemer, Diss Nr. 10277, ETH Zurich.

Obfuscated C Contest

	<programming> The International Obfuscated C Code Contest
	(IOCCC) is an annual contest run since 1984 over {Usenet} by
	Landon Curt Noll and friends.  The overall winner is whoever
	produces the most unreadable, creative, and bizarre (but
	working) {C} program.  Various other prizes are awarded at the
	judges' whim.  C's terse {syntax} and {macro-preprocessor}
	facilities give contestants a lot of maneuvering room.  The
	winning programs often manage to be simultaneously funny,
	breathtaking works of art and horrible examples of how *not*
	to code in C.

	This relatively short and sweet entry might help convey the
	flavour of obfuscated C:

	 /*
	 * HELLO WORLD program
	 * by Jack Applin and Robert Heckendorn, 1985
	 */
	 main(v,c)char**c;{for(v[c++]="Hello, world!\n)";
	 (!!c)[*c]&&(v--||--c&&execlp(*c,*c,c[!!c]+!!c,!c));
	 **c=!c)write(!!*c,*c,!!**c);}

	Here's another good one:

	 /*
	 * Program to compute an approximation of pi
	 *  by Brian Westley, 1988
	 */

	 #define _ -F<00||--F-OO--;
	 int F=00,OO=00;
	 main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
	 {
		    _-_-_-_
	       _-_-_-_-_-_-_-_-_
	    _-_-_-_-_-_-_-_-_-_-_-_
	  _-_-_-_-_-_-_-_-_-_-_-_-_-_
	 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
	 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
	 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
	 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
	 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
	 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
	 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
	 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
	  _-_-_-_-_-_-_-_-_-_-_-_-_-_
	    _-_-_-_-_-_-_-_-_-_-_-_
		_-_-_-_-_-_-_-_
		    _-_-_-_
	 }

	Note that this program works by computing its own area.  For
	more digits, write a bigger program.  See also {hello, world}.

obi-wan error

	/oh'bee-won" er"*r/ [RPI, from "off-by-one" and the Obi-Wan
	Kenobi character in "Star Wars"] A loop of some sort in which
	the index is off by 1.  Common when the index should have
	started from 0 but instead started from 1.  A kind of
	{off-by-one error}.  See also {zeroth}.

OBJ

	Joseph Goguen 1976.  A family of declarative "ultra high
	level" languages.  Abstract types, generic modules, subsorts
	(subtypes with {multiple inheritance}), pattern-matching
	modulo equations, E-strategies (user control over laziness),
	module expressions (for combining modules), theories and views
	(for describing module interfaces).  For the massively
	parallel RRM (Rewrite Rule Machine).

	["Higher-Order Functions Considered Unnecessary for
	Higher-Order Programming", J.A. Goguen, in Research Topics in
	Functional Programming].

OBJ0

	Tardo.  Based on unsorted equational logic.

OBJ2

	Clear-like parametrised modules.  A functional system based on
	equations.  "Principles of OBJ2", K. Futatsugi et al, 12th
	POPL, ACM 1985, pp.52-66.

OBJ3

	<language> A version of {OBJ} based on {order-sorted
	rewriting}.  OBJ3 is {agent}-oriented and runs on {AKCL}.

	E-mail: <obj3sys@crl.sri.com>, <obj3dist@csl.sri.com>.

	["Introducing OBJ3", J. Goguen et al, SRI-CSL-88-9, SRI Intl,
	1988].

	(16 Mar 1995)

object

	In {object-oriented programming}, a unique instance of a data
	structure defined according to the template provided by its
	{class}.  Each object has its own values for the variables
	belonging to its class and can respond to the messages
	({method}s) defined by its class.

ObjectBroker

	A distributed object system from DEC based on the CORBA
	standard.

ObjectCenter

	A product offering similar facilities to CodeCenter for the
	C++ language, plus class browsing facilities etc (formerly
	Saber-C++).

Object CHILL

	["Object CHILL - An Object Oriented Language for Systems
	Implementation", J. Winkler et al, ACM Comp Sci Conf 1992,
	pp. 139-147].

	(31 Jan 1995)

object code

	The {machine code} generated by a {source code} language
	processor such as an {assembler} or {compiler}.  A file of
	object code may be immediately executable or it may require
	{linking} with other object code files, e.g. libraries, to
	produce a complete executable program.

	(31 Jan 1995)

Object Compatibility Standard

	(OCS) An {88open} standard for compilers and linkers.

Object Database Management Group

	<body> (ODMG) A consortium of {object-oriented database}
	management system (ODBMS) vendors and interested parties
	working on standards to allow portability of customer software
	across products.

	(18 Mar 1997)

Objecteering

	<programming, tool> An {object-oriented design} tool from
	{Softeam}, based on the {Class Relation Methodology}, with
	{C++} code generation.

	(18 Mar 1997)

Objectionable-C

	A hackish take on "{Objective C}" an {object-oriented} dialect
	of {C} in competition with the better-known {C++} (it is used
	to write {native} applications on the {NeXT}).
	Objectionable-C uses a {Smalltalk}-like {syntax}, but lacks
	the flexibility of Smalltalk {method} calls, and (like many
	such efforts) comes frustratingly close to attaining the
	{Right Thing} without actually doing so.

	(15 Feb 1995)

Objective C

	An {object-oriented} superset of {ANSI C} by Brad Cox,
	Productivity Products.  Its additions to {C} are few and are
	mostly based on {Smalltalk}.  Objective C is implemented as a
	{preprocessor} for {C}.  Objective C syntax is a superset of
	standard C syntax, and its compiler accepts both C and
	Objective C {source code} ({filename extension} ".m").

	It has no operator {overloading}, {multiple inheritance}, or
	{class variable}s.  It does have {dynamic binding}.  It is
	used as the system programming language on the {NeXT}.  As
	implemented for {NEXTSTEP}, the Objective C language is fully
	compatible with {ANSI C}.

	Objective C can also be used as an extension to {C++}, which
	lacks some of the possibilities for object-oriented design
	that {dynamic typing} and {dynamic binding} bring to Objective
	C.  C++ also has features not found in Objective C.

	Versions exist for {MS-DOS}, {Macintosh}, {VAX}/{VMS} and
	{Unix} {workstation}s.  Language versions by {Stepstone},
	{NeXT} and {GNU} are slightly different.

	There is a library of ({GNU}) Objective C {object}s by
	R. Andrew McCallum <mccallum@cs.rochester.edu> with similar
	functionality to {Smalltalk}'s Collection objects.  It
	includes: Set, {Bag}, {Array}, LinkedList, LinkList,
	CircularArray, {Queue}, {Stack}, {Heap}, SortedArray,
	MappedCollector, GapArray and DelegateList.  Version: Alpha
	Release.  {(ftp://iesd.auc.dk/pub/ObjC/)}.

	["Object-Oriented Programming: An Evolutionary Approach", Brad
	Cox, A-W 1986].

	(15 Feb 1995)

Objective PASCAL

	An extension of the {PASCAL} language which provides the
	possibility to use {object-oriented} programming constructs.

Object Linking and Embedding

	(OLE) A distributed object system and protocol from
	{Microsoft}, also used on the Acorn {Archimedes}.  OLE allows
	an editor to "farm out" part of a document to another editor
	and then reimport it.  For example, a desk-top publishing
	system might send some text to a {word processor} or a picture
	to a {bitmap} editor using OLE.

Object Lisp

	LMI.  An object-oriented Lisp.

	["ObjectLISP User Manual", G.  Dreschere, LMI 1987].

ObjectLOGO

	A variant of LOGO with object-oriented extensions.  Lexical
	scope.  Version 2.6, for the Mac.  Paradigm Software
	<paradigm@applelink.apple.com> (617)576-7675.

Object Management Group

	(OMG) A consortium aimed at setting {standard}s in
	{object-oriented programming}.  The Common Object Request
	Broker Architecture ({CORBA}) specifies what it takes to be
	OMG-compliant.

	{(ftp://omg.org/pub/)}

	(11 Nov 1994)

	[Membership?  Dates?]

Object management system

	In an IPSE, the system which maintains information about the
	system under development.

Object Modelling Technique

	<programming> (OMT) An {object-oriented} methodology.

	[Details?]

	(03 Nov 1996)

Object Oberon

	{Oberon} plus {class}es and {method}s by H. Moessenboeck &
	J. Templ, 1989.  See {Oberon-2}.

	["Object Oberon - An Object-Oriented Extension of Oberon", H.
	Moessenboeck et al, ETH TR 109 (Apr 1990)].

	["Object Oberon - A Modest Object-Oriented Language",
	H. Moessenboeck & J. Templ, in Structured Programming 10(4),
	1989].

object-orientation

	{object-oriented}

object-oriented

	1. <programming> (OO) See {object-oriented programming}.  See
	also {object-oriented analysis}, {object-oriented database},
	{object-oriented design}.

	2. <graphics> {vector graphics}.

object-oriented analysis

	(OOA) See {object-oriented design}, {Schlaer-Mellor}.

object-oriented database

	<database> (OODB) A system offering {DBMS} facilities in an
	{object-oriented programming} environment.  Data is stored as
	{objects} and can be interpreted only using the {methods}
	specified by its {class}.  The relationship between similar
	objects is preserved ({inheritance}) as are references between
	objects.  Queries can be faster because {joins} are often not
	needed (as in a {relational database}).  This is because an
	object can be retrieved directly without a search, by
	following its object id.

	The same programming language can be used for both data
	definition and data manipulation.  The full power of the
	database programming language's {type system} can be used to
	model {data structures} and the relationship between the
	different data items.

	{Multimedia} {applications} are facilitated because the
	{class} {methods} associated with the data are responsible for
	its correct interpretation.

	OODBs typically provide better support for {versioning}.  An
	object can be viewed as the set of all its versions.  Also,
	object versions can be treated as full fledged objects.  OODBs
	also provide systematic support for {triggers} and
	{constraints} which are the basis of {active databases}.
	Most, if not all, object-oriented {application programs} that
	have database needs will benefit from using an OODB.

	{Ode} is an example of an OODB built on {C++}.

	(07 Dec 1997)

object-oriented design

	<programming> (OOD) A design method in which a system is
	modelled as a collection of cooperating {objects} and
	individual objects are treated as instances of a {class}
	within a {class hierarchy}.  Four stages can be identified:
	identify the classes and objects, identify their {semantics},
	identify their relationships and specify class and object
	interfaces and implementation.  object-oriented design is one
	of the stages of {object-oriented programming}.

	["Object-oriented analysis and design with applications",
	Grady Booch, 2nd ed., pub. Benjamin/Cummings, Redwood CA,
	1994].

	(07 Dec 1997)

object-oriented language

	{object-oriented programming}

Object-Oriented Pascal

	{Object Pascal}

object-oriented programming

	<programming> (OOP) A class of programming languages and
	techniques based on the concept of an "{object}" which is a
	data structure ({abstract data type}) encapsulated with a set
	of routines, called "{methods}" which operate on the data.
	Operations on the data can only be performed via these
	methods, which are common to all objects which are instances
	of a particular "{class}" (see {inheritance}).  Thus the
	interface to objects is well defined, and allows the code
	implementing the methods to be changed so long as the
	interface remains the same.

	Each class is a separate {module} and has a position in a
	"{class hierarchy}".  Methods or code in one class can be
	passed down the hierarchy to a {subclass} or inherited from a
	{superclass}.

	Procedure calls are described in term of {message passing}.  A
	message names a method and may optionally include other
	arguments.  When a message is sent to an object, the method is
	looked up in the object's class to find out how to perform
	that operation on the given object.  If the method is not
	defined for the object's class, it is looked for in its
	superclass and so on up the class hierarchy until it is found
	or there is no higher superclass.  Procedure calls always
	return a result object, which may be an error, as in the case
	where no superclass defines the requested method.

	OOP started with {SIMULA-67} around 1970.  Popular examples of
	object-oriented languages are {Smalltalk}, from Xerox's Palo
	Alto Research Center (PARC) and {C++}.  Others include {Object
	Pascal}, {Objective C}, {DRAGOON}, {BETA}, {Emerald}, {POOL},
	{Eiffel}, {Self}, {Oblog}, {ESP}, {POLKA} and {Loops}.

	{(http://zgdv.igd.fhg.de/papers/se/oop/)}.
	{(http://cuiwww.unige.ch/Chloe/OOinfo)}.

	{FAQ (http://iamwww.unibe.ch/~scg/OOinfo/FAQ/)}

	{Usenet} newsgroup: {news:comp.object}.

	(10 Feb 1995)

Object-Oriented Turing

	Extension of {Turing} and a replacement for {Turing Plus} by
	R.C. Holt <holt@csri.toronto.edu>, U Toronto, 1991.  It is
	imperative, {object-oriented} and concurrent.  It has
	{module}s, {class}es, {single inheritance}, processes,
	exception handling, optional machine-dependent programming.

	There is an integrated environment under the {X Window System}
	and {a demo version (ftp://turing.toronto.edu/pub/turing)}.
	Versions exist for {Sun4}, {MIPS}, {RS-6000} and others.

	E-mail: <ootinfo@turing.toronto.edu>.

	["A Conceptual Framework for Software Development", Mancoridis
	et al, eds, ACM SIGSCE Conference, Feb 1993, Indianapolis].
	["Turing Reference Manual", 1992, ISBN 0-921598-15-7].

ObjectPAL

	{Object-oriented database} language, part of {Borland}'s
	{MS-Windows} version of {Paradox}.

Object Pascal

	<language> An {object-oriented} {Pascal} developed jointly by
	{Apple Computer} and {Niklaus Wirth}.

	["Object Pascal Report", Larry Tesler, Structured Language
	World 9(3):10-17 (1985)].

	(28 Oct 1994)

Object Request Broker

	(ORB) Part of the {OMG} standard.

	(28 Oct 1994)

Object Value

	<jargon> In industrial design, a measure of consumers'
	immediate desire for an object, even before they know or
	understand what it does.  "Gassee may be nuts, but at least
	the {BeBox} has great object value."

	(30 Mar 1997)

Objectworks

	An {object-oriented} development environment developed by
	{ParcPlace}, available under {Smalltalk} and {C++}.

	(28 Oct 1994)

Object Z

	University of Queensland.

	["Object Orientation in Z", S. Stepney et al eds, Springer
	1992].

Objlog

	A {frame}-based language combining {object}s and {Prolog II}
	from {CNRS}, Marseille, France.

	["The Inheritance Processes in Prolog", C. Chouraki et al,
	GRTC/187bis/Mars 1987 (CNRS)].

	E-mail: <somebody@grtc.cnrs-mrs.fr>.

	(28 Oct 1994)

OBJT

	{Error algebra}s plus an image construct.  Tardo.

ObjVlisp

	1984.  An {object-oriented} extension of {Vlisp}.
	{Reflective} architecture.

	["Metaclasses are First Class: The ObjVlisp Model", P.
	Cointe, SIGPLAN Notices 22(121):156-167 (Dec 1987) (OOPSLA
	'87)].

ObjVProlog

	{Logic programming} and {object-orientation}, an adaptation of
	the {ObjVlisp} model to {Prolog}.

	["ObjVProlog: Metaclasses in Logic", J. Malenfant, ECOOP '89,
	Cambridge U Press 1989, pp.257-269].

Obliq

	A small, statically scoped untyped language by Luca Cardelli,
	1993.  Obliq is {object-oriented}, higher order, concurrent,
	and distributed.  State is local to an address space, while
	computation can migrate over the network.  The distributed
	computation mechanism is based on {Modula-3} network objects.

	{(ftp://gatekeeper.dec.com/pub/DEC/Modula-3/contrib)}

oblique stroke

	{slash}

Oblog

	<language> A small, portable, {Object-oriented} extension to
	{Prolog} by Margaret McDougall of EdCAAD, Dept Arch,
	{University of Edinburgh}.

	(29 Dec 1995)

OBSCURE

	"A Formal Description of the Specification Language OBSCURE",
	J.  Loeckx, TR A85/15, U Saarlandes, Saarbrucken, 1985.

observational equivalence

	Two terms M and N are observationally equivalent iff for all
	contexts C[] where C[M] is a valid term, C[N] is also a valid
	term with the same value.

Oc

	"Oh see!"  A parallel logic language.

	["Self-Description of Oc and its Applications", M. Hirata,
	Proc 2nd Natl Conf Japan Soc Soft Sci Tech, pp. 153-156,
	1984].

	(16 Mar 1995)

OC-12

	{Optical Carrier 12}

OC-3

	{Optical Carrier 3}

OC-48

	{Optical Carrier 48}

OCAL

	On-Line Cryptanalytic Aid Language.

	["OCAS: On-line Cryptanalytic Aid System", D.J. Edwards,
	MAC-TR-27, MIT Project MAC, May 1966.  Sammet 1969, p.642].

occam

	<language> (Note lower case) A language based on
	{C.A.R. Hoare}'s {CSP} and {EPL}.  Named after the English
	philosopher, William of Occam (1300-1349) who propounded
	{Occam's Razor}.  The occam language was designed by David May
	of {INMOS} to easily describe {concurrent} processes which
	communicate via one-way channels.  It was developed to run on
	the {INMOS} {transputer} but compilers are available for
	{VAX}, {Sun} and {Intel} {MDS}, inter alia.

	The basic entity in occam is the process of which there are
	four fundamental types, {assignment}, input, output, and wait.
	More complex processes are constructed from these using SEQ to
	specify sequential execution, PAR to specify parallel
	execution and ALT where each process is associated with an
	input from a channel.  The process whose channel inputs first
	is executed.  The fourth constructor is IF with a list of
	conditions and associated processes.  The process executed is
	the one with the first true condition in textual order.  There
	is no operator precedence.

	The original occam is now known as "occam 1".  It was extended
	to produce {occam 2}.

	{Simulator for VAX (ftp://watserv1.waterloo.edu/)}.

	Tahoe mailing list: <occam@sutcase.case.syr.edu>.

	[David May et al, 1982.  "Concurrent algorithms"].

	["Occam", D. May, SIGPLAN Notices 18(4):69-79, 1983].

	(18 Nov 1994)

occam 2

	<language> An extension of {occam} produced in 1987.  Occam 2
	adds {floating-point}, functions and a type system.

	["occam 2 Reference Manual", INMOS, P-H 1988, ISBN
	0-13-629312-3].

	(18 Nov 1994)

Occam's Razor

	<philosophy> The English philosopher, William of Occam
	(1300-1349) propounded Occam's Razor:

	Entia non sunt multiplicanda praeter necessitatem.

	(Latin for "Entities should not be multiplied more than
	necessary").  That is, the fewer assumptions an explanation of
	a phenomenon depends on, the better it is.

	For example, some claim that God caused himself to exist and
	also caused the universe to exist - he was the "first cause" -
	whereas Occam's Razor suggests that if one accepts the
	possibility of something causing itself then it is better to
	assume that it was the universe that caused itself rather than
	God because this explanation involves fewer entities.

	The negation of Occam's Razor would suggest that an
	arbitrarily complex explanation is just as good as the
	simplest one.  (E.g. God and his cat created a robot called
	Sparky who built the universe from parts bought from a shop in
	another dimension).

	See also {KISS Principle}.

	(09 Nov 1995)

occlude

	<programming> (Or "shadow") To make a variable inaccessible by
	declaring another with the same name within the {scope} of the
	first.

	(14 Dec 1995)

occurs check

	<programming> A feature of some implementations of
	{unification} which causes unification of a {logic variable} V
	and a structure S to fail if S contains V.

	Binding a variable to a structure containing that variable
	results in a cyclic structure which may subsequently cause
	unification to loop forever.  Some implementations use extra
	pointer comparisons to avoid this.

	Most implementations of {Prolog} do not perform the occurs
	check for reasons of efficiency.  Without occurs check the
	{complexity} of {unification} is

		O(min(size(term1), size(term2)))

	with occurs check it's

		O(max(size(term1), size(term2)))

	In {theorem proving} unification without the occurs check can
	lead to unsound inference.  For example, in {Prolog} it is
	quite valid to write

		X = f(X).

	which will succeed, binding X to a cyclic structure.  Clearly
	however, if f is taken to stand for a function rather than a
	{constructor}, then the above equality is only valid if f is
	the {identity function}.

	Weijland calls unification without occur check, "complete
	unification".  The reference below describes a complete
	unification algorithm in terms of Colmerauer's consistency
	algorithm.

	["Semantics for Logic Programs without Occur Check",
	W.P. Weijland, Theoretical Computer Science 71 (1990) pp
	155-174].

	(11 Jan 1996)

OCL

	Operator Control Language.

	The {batch language} for the {IBM System/36}, used
	specifically with the {RPG II} {compiler}.

	See also {CL}.

	(18 Nov 1994)

OCLC

	{Online Computer Library Center}

OC-n

	{Optical Carrier n}

OCODE

	An {assembly language} for a {stack}-based {virtual machine},
	used as the {intermediate language} of the Cambridge {BCPL}
	compiler.

	["The Portability of the BCPL Compiler", M. Richards, Soft
	Prac & Exp 1(2) (1971)].

	(30 Jan 1995)

OCP

	<processor> {Order Code Processor}.

OCR

	{Optical Character Recognition}

OCS

	{Object Compatibility Standard}

octal

	<mathematics> Base 8.  A number representation using the
	digits 0-7 only, with the right-most digit counting ones, the
	next counting multiples of 8, then 8^2 = 64, etc.  For
	example, octal 177 is digital 127:

		digit    weight        value
		  1     8^2 = 64   1* 64 = 64
		  7     8^1 =  8   7*  8 = 56
		  7     8^0 =  1   7*  1 =  7
				          ---
					  127

	Octal system used to be widespread back when many computers
	used 6-bit {bytes}, as a 6-bit byte can be conveniently
	written as a two-digit octal number.  Since nowadays a byte is
	almost always 8-bit long the octal system lost most of its
	appeal to the {hexadecimal} system.

	For a brief discussion on the word `octal' see {hexadecimal}.

	(16 Jun 1997)

octal forty

	<character> /ok'tl for'tee/ "I'm drawing a blank."

	{Octal} 40 (decimal 32) is the {ASCII} code for space
	character.  By an odd coincidence, {hex} 40 is the {EBCDIC}
	space character.

	See {wall}.

	(06 Mar 1995)

Octave

	<language> A high-level interactive language, like {MATLAB},
	primarily intended for numerical computations.  It provides a
	convenient command line interface for solving linear and
	nonlinear problems numerically.

	Octave can do arithmetic for real and complex scalars and
	matrices, solve sets of nonlinear algebraic equations,
	integrate functions over finite and infinite intervals, and
	integrate systems of ordinary differential and
	differential-algebraic equations.

	Octave has been compiled and tested with {g++} and libg++ on a
	{SPARCstation 2} running {SunOS} 4.1.2, an {IBM} {RS/6000}
	running {AIX} 3.2.5, {DEC Alpha} systems running {OSF}/1 1.3
	and 3.0, a {DECstation 5000}/240 running {Ultrix} 4.2a, and
	{Intel 486} systems running {Linux}.  It should work on most
	other {Unix} systems with {g++} and libg++.

	Distributed under the {GNU} {General Public License}.
	Requires {gnuplot}, {C++} compiler and {FORTRAN} compiler or
	{f2c} translator.

	Version: 1.1.1.

	{(ftp://ftp.che.utexas.edu/pub/octave/)} or your nearest {GNU
	archive site}.

	E-mail: <bug-octave@che.utexas.edu>.

	(03 Mar 1995)

octet

	<jargon, networking> Eight bits.  This term is used in
	networking, in preference to {byte}, because some systems use
	the term "byte" for things that are not 8 bits long.

	(03 Mar 1995)

octothorpe

	<character> {hash}.

OCX

	{OLE custom controls}

ODA

	{Open Document Architecture} (formerly Office
	Document Architecture).

ODBC

	{Open DataBase Connectivity}

ODC

	{Open Distributed Computing}

Ode

	An {Object-Oriented Database} from {AT&T} which extends {C++}
	and supports fast queries, complex application modeling and
	{multimedia}.

	Ode uses one integrated data model ({C++} {class}es) for both
	database and general purpose manipulation.  An Ode database is
	a collection of {persistent} {object}s.  It is defined,
	queried and manipulated using the language {O++}.  O++
	programs can be compiled with C++ programs, thus allowing the
	use of existing C++ code.  O++ provides facilities for
	specifying transactions, creating and manipulating persistent
	objects, querying the database and creating and manipulating
	versions.

	The Ode object database provides four object compatible
	mechanisms for manipulating and querying the database.  As
	well as O++ there are OdeView - an {X Window System}
	interface; OdeFS (a file system interface allowing objects to
	be treated and manipulated like normal Unix files); and CQL++,
	a {C++} variant of {SQL} for easing the transition from
	{relational database}s to OODBs such as Ode.

	Ode supports large objects (critical for {multimedia}
	applications).  Ode tracks the relationship between versions
	of objects and provides facilities for accessing different
	versions.  Transactions can be specified as read-only; such
	transactions are faster because they are not logged and they
	are less likely to {deadlock}.  'Hypothetical' transactions
	allow users to pose "what-if" scenarios (as with
	{spreadsheet}s).

	EOS, the {storage engine} of Ode, is based on a client-server
	architecture.  EOS supports {concurrency} based on
	{multi-granularity} two-version two-phase locking; it allows
	many readers and one writer to access the same item
	simultaneously.  Standard two-phase locking is also available.
	Ode supports both a {client-server} mode for multiple users
	with concurrent access and a single user mode giving improved
	performance.

	Ode 3.0 is currently being used as the {multimedia} {database
	engine} for {AT&T}'s {Interactive TV} project.  Ode 2.0 has
	also been distributed to more than 80 sites within AT&T and
	more than 340 universities.  Ode is available free to
	universities under a non-disclosure agreement.  The current
	version, 3.0, is available only for {Sun} {SPARCstation}s
	running {SunOS} 4.1.3 and {Solaris} 2.3.  Ode is being ported
	to {Microsoft} {Windows NT}, {Windows 95} and {SGI}
	{platform}s.

	E-mail: Narain Gehani <nhg@research.att.com>.

	(18 Aug 1994)

ODI

	1. {Optical Digital Image}.

	2. {Open Data-link Interface}.

ODIF

	{Open Document Interchange Format}

ODMA

	{Open Document Management API}

ODMG

	{Object Data Management Group}

ODP

	{Open Distributed Processing}

ODSA

	{Open Distributed System Architecture}

ODT

	{Open Desktop}

OEM

	{original equipment manufacturer}

off-by-one error

	Exceedingly common error induced in many ways, such as by
	starting at 0 when you should have started at 1 or vice-versa,
	or by writing "< N" instead of "<= N" or vice-versa.  Also
	applied to giving something to the person next to the one who
	should have had it.  Often confounded with {fencepost error},
	which is properly a particular subtype of it.

Office

	{Microsoft Office}

Office Workstations Limited

	<company> (OWL) A UK software company, now a subsidiary of
	{Matsushita} (Panasonic, etc.).  They previously supported the
	{Guide} {hypertext} system but that support is now provided by
	US company {InfoAccess}.

	E-mail: <postmaster@owl-uk.owl-uk.co.uk>

	[Correct address?]

	(15 Jan 1996)

off-line

	<jargon> (Or "offline")

	1. Not directly connected to the computer (e.g., an off-line
	{tape drive}), or with connection suspended ("take the
	{printer} off-line").

	Contrast {background}, {on-line}.

	2. Not now or not here.  "Let's take this discussion
	off-line."  Specifically used on {Usenet} to suggest that a
	discussion be moved off a public {newsgroup} to {e-mail}.

	See also {off-line world}.

	(02 Feb 1996)

off-line world

	<jargon> A die-hard {nethead} term for non-computer-related
	experience.

	See also {big room}.

	["Internet", Feb 1996].

	(04 Mar 1996)

off-side rule

	A lexical convention due to Landin, allowing the scope of
	declarations in a program to be expressed by indentation.  Any
	non-whitespace token to the left of the first such token on
	the previous line is taken to be the start of a new
	declaration.  Used in, for example, Miranda and Haskell.

	[P.J. Landin "The Next 700 Programming Languages", CACM vol 9
	pp157-165, March 1966]

off the trolley

	Describes the behaviour of a program that malfunctions and
	goes catatonic, but doesn't actually {crash} or abort.  See
	{glitch}, {bug}, {deep space}.

ogg

	<games> /og/ ({CMU}) 1. In the multi-player space combat game
	{Netrek}, to execute kamikaze attacks against enemy ships
	which are carrying armies or occupying strategic positions.
	Named during a game in which one of the players repeatedly
	used the tactic while playing Orion ship G, showing up in the
	player list as "Og".  This trick has been roundly denounced by
	those who would return to the good old days when the tactic of
	dogfighting was dominant, but as Sun Tzu wrote, "What is of
	supreme importance in war is to attack the enemy's strategy."
	However, the traditional answer to the newbie question "What
	does ogg mean?" is just "Pick up some armies and I'll show
	you."

	2. In other games, to forcefully attack an opponent with the
	expectation that the resources expended will be renewed faster
	than the opponent will be able to regain his previous
	advantage.  Taken more seriously as a tactic since it has
	gained a simple name.

	3. To do anything forcefully, possibly without consideration
	of the drain on future resources.  "I guess I'd better go ogg
	the problem set that's due tomorrow."  "Whoops!  I looked down
	at the map for a sec and almost ogged that oncoming car."

	(31 Jan 1995)

OIC

	<chat> oh, I see.

	(18 Jan 1998)

-oid

	["android"] suffix 1. Used as in mainstream English to
	indicate a poor imitation, a counterfeit, or some otherwise
	slightly bogus resemblance.  Hackers will happily use it with
	all sorts of non-Greco/Latin stem words that wouldn't keep
	company with it in mainstream English.  For example, "He's a
	nerdoid" means that he superficially resembles a nerd but
	can't make the grade; a "modemoid" might be a 300-baud {modem}
	(Real Modems run at 144000 or up); a "computeroid" might be
	any {bitty box}.  The word "keyboid" could be used to describe
	a {chiclet keyboard}, but would have to be written; spoken, it
	would confuse the listener as to the speaker's city of origin.

	2. More specifically, an indicator for "resembling an android"
	which in the past has been confined to science-fiction fans
	and hackers.  It too has recently (in 1991) started to go
	mainstream (most notably in the term "trendoid" for victims of
	terminal hipness).  This is probably traceable to the
	popularisation of the term {droid} in "Star Wars" and its
	sequels.

	Coinages in both forms have been common in science fiction for
	at least fifty years, and hackers (who are often SF fans) have
	probably been making "-oid" jargon for almost that long
	[though GLS and ESR can personally confirm only that they were
	already common in the mid-1970s].

OIL

	1. ["The Architecture of the FAIM-1 Symbolic Multiprocessing
	System", A.  Davis et al, 9th Intl Joint Conf in Artif Intell,
	1985, pp.32-38].

	2. Operator Identification Language.  Used for {overloading}
	resolution by the {Eli} compiler-writing system.

OLAP

	{On-Line Analytical Processing}

OLC

	{On-Line Computer system}

OLDAS

	On-line Digital Analog Simulator.  An interactive version of
	{MIMIC}, for {IBM 360}.

	["OLDAS: An On-line Continuous System Simulation Language",
	R.P. Cullen, in Interactive Systems for Experimental Applied
	Mathematics, A-P 1968].

old fart

	Tribal elder.  A title self-assumed with remarkable frequency
	by (especially) {Usenet}ters who have been programming for
	more than about 25 years; often appears in {sig block}s
	attached to {Jargon File} contributions of great archaeological
	significance.  This is a term of insult in the second or third
	person but one of pride in first person.

old talk

	<chat> The old implementations of {talk}.  See "{ntalk}" for
	details.

	(11 Sep 1997)

Old Testament

	[C programmers]  The first edition of {K&R}, the
	sacred text describing {Classic C}.

OLE

	{Object Linking and Embedding}

OLE custom controls

	<programming> (OCX) An {Object Linking and Embedding}
	(OLE) custom control allowing infinite extension of the
	{Microsoft Access} control set.  OCX is similar in purpose to
	{VBX} used in {Visual Basic}.  Available OCX's include "Scroll
	Bar Control", "Calendar Control", and "Data Outline Control".

	[Details?]

	(05 Dec 1995)

OLGA

	Ouf! un Langage pour les Grammaires Attribuees.

	Inria, 1985.  Language for specification of attribute
	grammars, used as the input language of the compiler writing
	system FNC-2.  Applicative, strongly typed, polymorphic,
	pattern-matching, modules.

Olivetti

	<company> A large Italian company producing office machinery,
	computers and printers.

	Olivetti took a controlling stake in {Acorn Computers} in
	September 1985.

	Olivetti computers were once marketed in USA with the ATT
	brand name.

	[Address?  Other products?]

	(14 Mar 1995)

O-Logic

	An {object-oriented} deductive language/database system.

OLTP

	{On-Line Transaction Processing}

OLWM

	{OpenLook Window Manager}

OMA

	Object Management Architecture.

	A set of standards under study by the {OMG}.

	(11 Nov 1994)

Omega

	1. <programming> A {prototype}-based {object-oriented}
	language from Austria.

	["Type-Safe Object-Oriented Programming with Prototypes - The
	Concept of Omega", G. Blaschek, Structured Programming
	12:217-225, 1991].

	2. <text, tool> A successor to {TeX} extended to handle the
	{Unicode} character set.

	{(http://www.ens.fr/omega/)}.

	(20 Nov 1997)

Omega-algebraic

	In domain theory, a complete partial order is algebraic if
	every element is the lub of some chain of compact elements.
	If the set of compact elements is countable it is
	omega-algebraic.  Usually written with a Greek letter omega
	({LaTeX} \omega).

	(03 Feb 1995)

Omega test

	The Omega test is a system written by William Pugh
	<pugh@cs.umd.edu> and others for performing symbolic
	manipulations of {conjunction}s of {linear constraint}s over
	integer variables.  The Omega test dependence analyser is a
	system built on top of the Omega test to analyse {array} data
	dependences.

	Version 3.2.2 includes a fortran to tiny translator, a Tiny
	interpreter(?) and analysis tools.

	{(ftp://ftp.cs.umd.edu/pub/omega)}.  E-mail: <omega@cs.umd.edu>.

	(13 Nov 1992)

OMF

	Object Management Facility.

	Part of the {DAA} proposed by {Hewlett-Packard} and {Sun}.

OMG

	{Object Management Group}

OMNICODE

	Thompson, 1956.  Ran on IBM 650.

	[Sammet 1969, p. 5].

OMNIFAX

	Alternate name for NYU OMNIFAX?  Early system on UNIVAC I or
	II.  Listed in CACM 2(5):16 (May 1959).

OMNITAB

	Statistical analysis and desk calculator.  Version: OMNITAB
	II.

	["OMNITAB II User's Reference Manual", NBS Tech Note 552 (Oct
	1971).  Sammet 1969, pp. 296-299].

OMR

	{Optical Mark Reader}

OMT

	{Object Modelling Technique}

OMTool

	A graphical tool from General Electric Advanced Concepts
	Center for design and analysis of systems with the {OMT}
	methodology.  Generates {C++} and {SQL} code.

ONC

	{Open Network Computing}

Ondine

	["Concurrency Introduction to an Object-Oriented Language
	System Ondine", T. Ogihara et al, 3rd Natl Conf Record A-5-1,
	Japan Soc for Soft Sci Tech, Japan 1986].

one-banana problem

	At mainframe shops, where the computers have operators for
	routine administrivia, the programmers and hardware people
	tend to look down on the operators and claim that a trained
	monkey could do their job.  It is frequently observed that the
	incentives that would be offered said monkeys can be used as a
	scale to describe the difficulty of a task.  A one-banana
	problem is simple; hence, "It's only a one-banana job at the
	most; what's taking them so long?"

	At IBM, folklore divides the world into one-, two-, and
	three-banana problems.  Other cultures have different
	hierarchies and may divide them more finely; at ICL, for
	example, five grapes (a bunch) equals a banana.  Their upper
	limit for the in-house {sysape}s is said to be two bananas and
	three grapes (another source claims it's three bananas and one
	grape, but observes "However, this is subject to local
	variations, cosmic rays and ISO").  At a complication level
	any higher than that, one asks the manufacturers to send
	someone around to check things.

	See also {Infinite-Monkey Theorem}.

one-line fix

	Used (often sarcastically) of a change to a program that is
	thought to be trivial or insignificant right up to the moment
	it crashes the system.  Usually "cured" by another one-line
	fix.  See also {I didn't change anything!}

one-liner wars

	<games> A game popular among hackers who code in the language
	APL (see {write-only language} and {line noise}).  The
	objective is to see who can code the most interesting and/or
	useful routine in one line of operators chosen from APL's
	exceedingly {hairy} primitive set.  A similar amusement was
	practiced among {TECO} hackers and is now popular among {Perl}
	aficionados.

	Ken Iverson, the inventor of APL, has been credited with a
	one-liner that, given a number N, produces a list of the
	prime numbers from 1 to N inclusive.  It looks like this:

	  (2 = 0 +.= T o.| T) / T <- iN

	where "o" is the APL null character, the assignment arrow is a
	single character, and "i" represents the APL iota.

ones complement

	A system used in some computers to represent negative
	numbers. To negate a number, each bit of the number is
	inverted (zeros are replaced with ones and vice versa).  This
	has the consequence that there are two reperesentations for
	zero, either all zeros or all ones.

		...
		000...00011 = +3
		000...00010 = +2
		000...00001 = +1
		000...00000 = +0
		111...11111 = -0
		111...11110 = -1
		111...11101 = -2
		111...11100 = -3
		...

	Naive logic for ones complement addition might easily conclude
	that -0 + 1 = +0.

	The {twos complement} avoids this by using all ones to
	represent -1.

One Time Programmable Read Only Memory

	<storage> (OTPROM, EPROM OTP) A kind of storage device like an
	{EPROM} but with no quartz glass window in the package for
	erasing the contents.  This reduces the packaging cost but
	means the device cannot be erased with UV and so can only be
	written once.  Erasure is possible, but expensive, with
	X-rays.

	(22 Apr 1995)

one-way hash function

	<algorithm> (Or "message digest function") A function which
	takes a variable-length message and produces a fixed-length
	hash.  Given the hash it is computationally impossible to find
	a message with that hash; in fact one can't determine any
	usable information about a message with that hash, not even a
	single bit.  For some one-way hash functions it's also
	computationally impossible to determine two messages which
	produce the same hash.

	A one-way hash function can be private or public, just like an
	{encryption} function.  {MD5} and {Snefru} are examples of
	public one-way hash functions.

	A public one-way hash function can be used to speed up a
	public-key {digital signature} system.  Rather than sign a
	long message which can take a long time, compute the one-way
	hash of the message, and sign the hash.

	{sci.crypt FAQ
	(ftp://src.doc.ic.ac.uk/usenet/usenet-by-group/sci.crypt/)}.

	(16 Feb 1995)

on-line

	<jargon> (Or "online") 1. Ready for use.  E.g. "The graph
	plotter's fixed and on-line again".

	2. {Interactive} as opposed to {batch}.  Accessible via a
	computer (or {terminal}), rather than on paper or other
	medium.

	(24 Dec 1995)

On-Line Analytical Processing

	<database> (OLAP) A category of {database} software which
	provides an interface such that users can transform or limit
	raw data according to user-defined or pre-defined functions,
	and quickly and interactively examine the results in various
	dimensions of the data.

	OLAP primarily involves aggregating large amounts of diverse
	data.  OLAP can involve millions of data items with complex
	relationships.  Its objective is to analyze these
	relationships and look for patterns, trends, and exceptions.

	The term was originally coined by {Dr. Codd} in 1993 with 12
	"rules".  Since then, the {OLAP Council}, many vendors, and
	Dr. Codd himself have added new requirements and confusion.

	Richard Creeth and Nigel Pendse define OLAP as fast analysis
	of shared multidimensional information.  Their definition
	requires the system to respond to users within about five
	seconds.  It should support logical and statistical processing
	of results without the user having to program in a {4GL}.  It
	should implement all the security requirements for
	confidentiality and concurrent update locking.  The system
	must provide a multidimensional conceptual view of the data,
	including full support for multiple hierarchies.  Other
	aspects to consider include data duplication, {RAM} and disk
	space requirements, performance, and integration with {data
	warehouses}.

	{The OLAP Council (http://www.olapcouncil.org/)}.

	{(http://www.access.digex.net/~grimes/olap/)}.

	{Usenet} newsgroup: {news:comp.databases.olap}.

	{(http://www.arborsoft.com/papers/finkTOC.html)}.

	[What's a "multidimensional conceptual view"?]

	(24 Sep 1996)

Online Computer Library Center, Inc.

	(OCLC) A nonprofit membership organisation offering
	computer-based services and research to libraries, educational
	organisations, and their users.  OCLC operates the PRISM
	service for cataloging and resource sharing, provides on-line
	reference systems for both librarians and end-users, and
	distributes on-line electronic journals.

	OCLC's goals are to increase the availability of library
	resources and reduce library costs for the fundamental public
	purpose of furthering access to the world's information.

	The OCLC library information network connects more than 10,000
	libraries worldwide.  Libraries use the OCLC System for
	cataloguing, interlibrary loan, collection development,
	bibliographic verification, and reference searching.  Their
	most visible feature is the OCLC Online Union Catalog (OLUC).

	{(http://www.oclc.org/)}

	Address: (North America) National Sales Division, OCLC Online
	Computer Library Center, Inc., 6565 Frantz Road, Dublin, Ohio
	43017-3395 USA.  Tel: 1-800-848-5878.  Fax: 1-614-764-6096.

	(Europe, Middle East, Africa) OCLC Europe, 7th Floor, Tricorn
	House, 51-53 Hagley Road, Birmingham B16 8TP, UK.  Tel: +44
	(0)121 456 4656.  Fax: +44 (0)121 456 4680.

	(Asia, Pacific) 6565 Frantz Road, Dublin, Ohio 43017-3395 USA.
	Tel: 1-614-764-6189.  Fax: 1-614-764-4331.  E-mail:
	<asia_pacific_services@oclc.org>.

	(11 Nov 1994)

On-Line Computer system

	(OLC) A predecessor of the {Culler-Fried System} from {UCSB}
	ca. 1966.

	[Sammet 1969, p.253].

	(25 Nov 1995)

Online Media

	<company> A company formed by {Acorn Computer Group} plc to
	exploit the {ARM} RISC in television {set-top box} decoders.
	They are wooing {British Telecommunications} plc to use the
	box in some of its {video on demand} trials.

	The box will be based on an {ARM8} core with additional
	circuits to enable {MPEG} to be decoded in software - possibly
	dedicated instructions for interpolation, inverse {DCT} or
	{Huffman} table extraction.  They have already moved audio
	{MPEG} to sillicon.  The box will use Acorn's {RISC OS}
	{operating system} as the control environment and is also
	looking at putting {Oracle} and {Microword} on it.  Online
	will reduce component numbers and therefore cost by
	transferring functions presently on boards into the single
	RISC chip.

	The interactive set-top boxes are not limited to the
	television - personal computer videoconferencing and extended
	networking are being developed.  Acorn already has
	partnerships with {Bell Northern Research} and {Northern
	Telecom} Limited, News International, Alcatel NV and its
	majority shareholder Ing C {Olivetti} & Co SpA.

	The company is presently wholly owned by Acorn, but eventually
	expects to bring in external investment.  Online will start a
	four phase trial in Cambridge with Cambridge Cable Co,
	Advanced Telecommunications Modules Ltd. - the Hermann Hauser
	company promising super-cheap Asynchronous Transfer Mode - and
	Anglia Television, later this year.

	[Article by nobody@tandem.com cross-posted from
	tandem.news.computergram, 7 Jul 1994].

	(14 May 1997)

Online Public Access Catalog

	<library> (OPAC) A computerised system to catalogue and
	organise materials in a library (the kind that contains
	books).  OPACs have replaced card-based catalogues in many
	libraries.  An OPAC is available to library users (public
	access).

	(14 May 1997)

On-Line Transaction Processing

	<database> (OLTP) The processing of transactions by computers
	in real time.

	[Details?  Products?]

	(14 May 1997)

Ontic

	<language> {Object-oriented} language for an {inference
	system} with a {Lisp}-like appearance, but based on set
	theory.

	["Ontic: A Knowledge Representation System for Mathematics",
	D.A. McAllester, MIT Press 1989].

	(24 Jun 1996)

onto

	{surjection}

ontology

	1. <philosophy> A systematic account of Existence.

	2. <artificial intelligence> (From philosophy) An explicit
	formal specification of how to represent the objects, concepts
	and other entities that are assumed to exist in some area of
	interest and the relationships that hold among them.

	For {AI} systems, what "exists" is that which can be
	represented.  When the {knowledge} about a {domain} is
	represented in a {declarative language}, the set of objects
	that can be represented is called the {universe of discourse}.
	We can describe the ontology of a program by defining a set of
	representational terms.  Definitions associate the names of
	entities in the {universe of discourse} (e.g. classes,
	relations, functions or other objects) with human-readable
	text describing what the names mean, and formal {axioms} that
	constrain the interpretation and well-formed use of these
	terms.  Formally, an ontology is the statement of a {logical
	theory}.

	A set of {agents} that share the same ontology will be able to
	communicate about a domain of discourse without necessarily
	operating on a globally shared theory.  We say that an agent
	commits to an ontology if its observable actions are
	consistent with the definitions in the ontology.  The idea of
	ontological commitment is based on the {Knowledge-Level}
	perspective.

	3. <library> The hierarchical structuring of knowledge about
	things by subcategorising them according to their essential
	(or at least relevant and/or cognitive) qualities.  See
	{subject index}.  This is an extension of the previous senses
	of "ontology" (above) which has become common in discussions
	about the difficulty of maintaining {subject indices}.

	(09 Apr 1997)

OnX

	A graphics package from LAL Orsay.

OO

	{object-oriented}

OOA

	{object-oriented analysis}

OOD

	{object-oriented design}

OODB

	{object-oriented database}

OODBMS

	{object-oriented database management system}

OOF

	{Object-Oriented} {Fortran}.  Data items can be grouped into
	objects, which can be instantiated and executed in parallel.
	Available for {Sun}, {Iris}, {iPSC}, soon for {nCUBE}.
	E-mail: <dreese@erc.msstate.edu>.

OOGL

	Object-Oriented Graphics Language.  1970's.

OOP

	Object-oriented programming.

OOPL

	Object-oriented programming language: a language such as C++,
	Eiffel, Objective C etc designed to support object-oriented
	programming.

OOPS

	"OOPS: A Knowledge Representation Language", D. Vermeir, Proc
	19th Intl Hawaii Conf on System Sciences, IEEE (Jan 1986)
	pp.156-157.

OOPSLA

	Conference on Object-oriented Programming Systems, Languages
	and Applications.

OOSD

	Object-oriented structured design: a design method elaborated
	from structured design and incorporating the essential
	features of the object-oriented approach.

OOZE

	Object oriented extension of Z.  "Object Orientation in Z", S.
	Stepney et al eds, Springer 1992.

op

	<job> /op/ 1. In England and Ireland, a common verbal
	abbreviation for "operator", as in {system operator}.  This is
	less common in the US, where {sysop} seems to be preferred.

	2. The general term for an {IRC} {channel op}.  Also, as a
	verb: to give someone {channel op} privileges.  Compare
	{ircop}.

	(12 Dec 1997)

OPAC

	{Online Public Access Catlog}

Opal

	1. A {DSP} language.

	["OPAL: A High Level Language and Environment for DSP boards
	on PC", J.P. Schwartz et al, Proc ICASSP-89, 1989].

	2. The language of the {object-oriented database} {GemStone}.

	["Making Smalltalk a Database System", G. Copeland et al, Proc
	SIGMOD'84, ACM 1984, pp.316- 325].

	3. A {simulation} language with provision for {stochastic
	variable}s.  An extension of {Autostat}.

	["C-E-I-R OPAL", D. Pilling, Internal Report,
	C.E.I.R. Ltd. (1963)].

	4. A language for compiler testing said to be used internally
	by {DEC}.

	5. A {functional programming} language designed at the
	{Technische Universitaet Berlin} as a testbed for the
	development of {functional program}s.  OPAL integrates
	concepts from Algebraic Specification and Functional
	Programming, which favour the (formal) development of (large)
	production-quality software written in a {purely functional}
	style.

	The core of OPAL is a {strongly typed}, {higher-order},
	{strict} applicative language which belongs to the tradition
	of {Hope} and {ML}.  The algebraic flavour of OPAL is visible
	in the syntactical appearance and in the preference of
	{parameterisation} to {polymorphism}.

	OPAL supports: {information hiding} - each language unit is
	divided into an interface (signature) and an implementation
	part; selective import; {parameterised module}s; free
	constructor {views} on {sorts}, which allow pattern-based
	function definitions despite quite different implementations;
	full {overloading} of names; puristic scheme language with no
	{built-in} data types (except {Boolean}s and denotations).

	OPAL and its predecessor OPAL-0 have been used for some time
	at the Technische Universitaet Berlin in CS courses and for
	research into optimising compilers for applicative languages.
	The OPAL compiler itself is writte entirely in OPAL.

	An overview is given in "OPAL: Design And Implementation of an
	Algebraic Programming Language".

	{Home (http://www.cs.tu-berlin.de/~opal/)}

	{(ftp://ftp.cs.tu-berlin.de/pub/local/uebb/papers/DesignImplOpal.ps.gz)}.

	(16 Feb 1995)

op code

	{instruction mnemonic}

open

	1. To prepare to read or write a file.  This usually involves
	checking whether the file already exists and that the user has
	the necessary authorisation to read or write it.  The result
	of a successful open is usually some kind of {capability}
	(e.g. a {Unix} {file descriptor}) - a token that the user
	passes back to the system in order to access the file without
	further checks and finally to close the file.

	2. Abbreviation for "open (or left) parenthesis" - used when
	necessary to eliminate oral ambiguity.  To read aloud the LISP
	form (DEFUN FOO (X) (PLUS X 1)) one might say: "Open defun
	foo, open eks close, open, plus eks one, close close."

	3. Non-proprietary.  An open {standard} is one which can be
	used without payment.

	(31 Jan 1995)

open box testing

	{white box testing}

open/closed principle

	<programming, theory> A principle used in {OOPL} which states
	that a {class} must be open and closed where open means it has
	the ability to be extended and closed means it cannot be
	modified other than by extension.

	The idea is that once a class has been approved for use having
	gone through code reviews, unit tests, and other qualifying
	procedures, you don't want to change the class very much, just
	extend it.  In practice the open/closed principle simply means
	making good use of {abstraction} and {polymorphism}.

	(23 Sep 1997)

open-collar worker

	<job> Someone who works at home or telecommutes.

	(17 Apr 1997)

Open DataBase Connectivity

	<standard, database> (ODBC) A {standard} for accessing
	different {database} systems.  There are interfaces for
	{Visual Basic}, {Visual C++}, {SQL} and the ODBC driver pack
	contains drivers for the {Access}, {Paradox}, {dBase}, Text,
	{Excel} and {Btrieve} databases.

	An application can submit statements to ODBC using the ODBC
	flavor of SQL.  ODBC then translates these to whatever flavor
	the database understands.

	ODBC 1.0 was released in September 1992.

	ODBC is based on {Call-Level Interface} and was defined by the
	{SQL Access Group}.  {Microsoft} was one member of the group
	and was the first company to release a commercial product
	based on its work (under {Microsoft Windows}) but ODBC is not
	a Microsoft standard (as many people believe).

	ODBC drivers and development tools are available now for
	{Microsoft Windows}, {Unix}, {OS/2}, and {Macintosh}.

	[On-line document?]

	["Unix Review", Aug 1995].

	(27 May 1996)

Open Data-link Interface

	<networking, standard> (ODI) A {Novell}-developed {network
	card} {API} that provides media and {protocol} independence.
	It allows the sharing of a single card by multiple {transport
	layer} {protocol}s and resolves conflicts.

	(13 Mar 1995)

Open DeathTrap

	<abuse> An abusive hackerism for the {Santa Cruz Operation}'s
	{Open DeskTop}.  The funniest part is that this was coined by
	SCO's own developers.

	Compare {AIDX}, {Macintrash} {Nominal Semidestructor},
	{ScumOS}, {sun-stools}, {HP-SUX}.

	(02 Feb 1995)

Open Desktop

	<operating system, product> A {Motif}-based graphical
	interface from the {Santa Cruz Operation} (SCO), built over
	their {Unix} environment, part of the {ACE} initiative.

	Also known as "{Open DeathTrap}".

	(02 Feb 1995)

Open Distributed Processing

	<standard> (ODP) An attempt to standardise an {OSI}
	{application layer} communications architecture.  ODP is a
	natural progression from {OSI}, broadening the target of
	standardisation from the point of interconnection to the end
	system behaviour.  The objective of ODP is to enable the
	construction of {distributed system}s in a multi-vendor
	environment through the provision of a general architectural
	framework that such systems must conform to.  One of the
	cornerstones of this framework is a model of multiple
	viewpoints which enables different participants to observe a
	system from a suitable perspective and a suitable level of
	{abstraction}.

	(10 Mar 1995)

Open Distributed System Architecture

	(ODSA) A research program sponsored by the UK Department of
	Trade and Industry and the Engineering and Physical Sciences
	Research Council.

	[Details?]

	(09 Feb 1995)

OpenDoc

	<operating system> A compound document architecture from {CIL}
	based on {CORBA}.  It aims to enable embedding of features
	from different {application program}s into a single working
	document.

	(21 Feb 1997)

Open Document Architecture

	<standard> (ODA) {ISO} {standard} (8613) for describing
	documents.  It allows text, graphics, and facsimile documents
	to be transferred between different systems.

	{ODIF} is part of ODA.

	(03 Mar 1995)

Open Document Interchange Format

	<standard> (ODIF) Part of the {ODA} standard.

	(16 Oct 1996)

Open Document Management API

	<text, standard> An open standard allowing desktop
	applications to interface with {document management systems}.

	{(http://www.activedoc.com)}

	(04 Jul 1997)

OpenGL

	{Open Graphics Library}

Open Graphics Library

	<graphics, library> (OpenGL) A multi-{platform} software
	interface to graphics hardware, supporting {rendering} and
	{imaging} operations.  The OpenGL interface was developed by
	{Silicon Graphics}, who license it to other vendors.

	The OpenGL graphics interface consists of several hundred
	functions operating on 2D and 3D objects, supporting basic
	techniques, such as {modelling} and {smooth shading}, and
	advanced techniques, such as {texture mapping} and {motion
	blur}.  Many operations require a {frame buffer}.  OpenGL is
	{network-transparent}, and a common extension to the {X Window
	System} allows an OpenGL {client} to communicate across a
	network with a different vendor's OpenGL {server}.

	OpenGL is based on Silicon Graphics' proprietary {IRIS GL}.

	{OpenGL WWW Center (http://www.sgi.com/Technology/openGL/)}.

	{Mesa GL (http://www.ssec.wisc.edu/~brianp/Mesa.html)} (PD
	implementation).

	(30 Sep 1996)

OpenInsight

	<programming, database> The {workflow}-enabled {Windows
	95}/{Windows NT} version of {Advanced Revelation}, featuring
	native support for {Lotus Notes}, {Microsoft SQL Server},
	{Oracle} and {ODBC}.  OpenInsight is available from
	{Revelation Software}.

	(25 Apr 1997)

Open Look

	<operating system> A {graphical user interface} and {window
	manager} from {Sun} and {AT&T}.

	{Usenet} newsgroup: {news:comp.graphics.openlook}.

	(11 Jun 1995)

Open Network Computing

	(ONC) {Sun}'s {network} {protocols}.

	[more detail?]

Open Prolog

	{Prolog} for the {Macintosh} by Michael Brady
	<brady@cs.tcd.ie>.

	{(ftp://grattan.cs.tcd.ie/languages/open-prolog/)}.
	{(ftp://aisun1.ai.uga.edu/ai.prolog/)}.

	(27 Oct 1994)

Open Scripting Architecture

	(OSA) A {CIL} approach to the coexistence of multiple
	scripting systems.

	(10 Mar 1995)

Open Shortest-Path First

	{Open Shortest-Path First Interior Gateway Protocol}

Open Shortest-Path First Interior Gateway Protocol

	<networking, protocol, standard> (OSPF) A {link state routing
	protocol}, as opposed to a {distance vector routing protocol}.
	It is one of the {Internet} standard {Interior Gateway
	Protocols} defined in {RFC 1247}.

	See also {Information Protocol}.

	{OSPF Design Guide
	(http://www.cisco.com/warp/public/104/1.html)}.

	[Is there an OSPF EGP?]

	(01 Mar 1997)

Open Software Foundation

	<body> (OSF) A foundation created by nine computer vendors,
	({Apollo}, {DEC}, {Hewlett-Packard}, {IBM}, {Bull}, {Nixdorf},
	{Philips}, {Siemens} and {Hitachi}) to promote "Open
	Computing".  It is planned that common {operating system}s and
	interfaces, based on developments of {Unix} and the {X Window
	System} will be forthcoming for a wide range of different
	hardware architectures.  OSF announced the release of the
	industry's first open {operating system} - OSF/1 on 23 October
	1990.

	(23 Nov 1994)

OpenStep

	<operating system> An {object-oriented} {application
	programming interface} (API) derived from {NEXTSTEP} and
	proposed as an {open standard} by {NeXT} in 1994.

	OpenStep was designed to be implemented independently of the
	computer's operating system, hardware, and user interface.
	The {API} for {Rhapsody} will be a superset of {OpenStep}'s.

	When the OpenStep {API} is implemented for a specific platform
	and made into a product, it is written in uppercase,
	e.g. OPENSTEP Developer 4.2 for Mach, or OPENSTEP Enterprise
	for {Windows NT} and {Windows 95}.  Versions of OPENSTEP exist
	for Windows 95/NT, Solaris, HP/UX, and Mach.

	(15 Oct 1997)

open switch

	({IBM}, probably from railways) An unresolved question, issue,
	or problem.

	(11 Nov 1994)

Open Systems Interconnect

	<networking> (OSI-RM, OSI Reference Model, seven layer model)
	A model of network architecture and a suite of {protocols} (a
	{protocol stack}) to implement it, developed by {ISO} in 1978
	as a framework for international {standards} in heterogeneous
	computer {network} architecture.

	The OSI architecture is split between seven {layers}, from
	lowest to highest: 1 {physical layer}, 2 {data link layer}, 3
	{network layer}, 4 {transport layer}, 5 {session layer}, 6
	{presentation layer}, 7 {application layer}.

	Each layer uses the layer immediately below it and provides a
	service to the layer above.  In some implementations a layer
	may itself be composed of sub-layers.

	OSI is the umbrella name for a series of non-proprietary
	protocols and specifications, comprising, among others, the
	OSI Reference Model, ASN.1 ({Abstract Syntax Notation 1}), BER
	({Basic Encoding Rules}), {CMIP} and {CMIS} (Common Management
	Information Protocol and Services), {X.400} (Message Handling
	System, or MHS), {X.500} (Directory Service), {Z39.50} (search
	and retrieval protocol used by {WAIS}), and many others.

	{OSI protocols FAQ
	(ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/osi-protocols)}.

	(07 Dec 1997)

Open Systems Interconnection

	Normally called {Open Systems Interconnect}.

	(12 Jan 1995)

Open University

	(OU) The UK distance-learning organisation, established in
	1969.  It teaches degree-level courses in many subjects via
	BBC radio and television broadcasts and summer schools.

	{(http://hcrl.open.ac.uk/ou/ouhome.html)}

OpenVMS

	{Virtual Memory System}

OpenWindows

	<operating system> A {graphical user interface} {server} for
	{Sun} {workstation}s which handles {SunView}, {NeWS} and {X
	Window System} protocols.

	(11 Jun 1995)

operand

	<programming> An {argument} of an {operator} or of a {machine
	language} instruction.

	(18 Aug 1995)

operating system

	<operating system> (OS) The low-level software which schedules
	tasks, allocates storage, handles the interface to peripheral
	hardware and presents a default interface to the user when no
	{application program} is running.

	The OS may be split into a {kernel} which is always present
	and various system programs which use facilities provided by
	the kernel to perform higher-level house-keeping tasks, often
	acting as {server}s in a {client-server} relationship.

	Some would include a {graphical user interface} and {window
	system} as part of the OS, others would not.

	The facilities an operating system provides and its general
	design philosophy exert an extremely strong influence on
	programming style and on the technical cultures that grow up
	around the machines on which it runs.

	Example operating systems include {386BSD}, {AIX}, {AOS},
	{Amoeba}, {Angel}, {Artemis microkernel}, {Brazil}, {COS},
	{CP/M}, {CTSS}, {Chorus}, {DACNOS}, {DOSEXEC 2}, {GCOS},
	{GEORGE 3}, {GEOS}, {ITS}, {KAOS}, {LynxOS}, {MPV}, {MS-DOS},
	{MVS}, {Mach}, {Macintosh operating system}, {MINIX},
	{Multics}, {Multipop-68}, {Novell NetWare}, {OS-9}, {OS/2},
	{Pick}, {Plan 9}, {QNX}, {RISC OS}, {STING}, {System V},
	{System/360}, {TOPS-10}, {TOPS-20}, {TRUSIX}, {TWENEX},
	{TYMCOM-X}, {Thoth}, {Unix}, {VM/CMS}, {VMS}, {VRTX}, {VSTa},
	{VxWorks}, {WAITS}, {Windows 95}, {Windows NT}.

	{FAQ
	(ftp://src.doc.ic.ac.uk/usenet/news-info/comp.os.research)}.

	{Usenet} newsgroup: {news:comp.os.research}.

	(04 Jan 1995)

operational database

	<database> A {database} containing up-to-date, modifiable
	data, in contrast to a {decision support database}.

	(14 Feb 1995)

operational requirements

	<programming> Qualitative and quantitative parameters that
	specify the desired capabilities of a system and serve as a
	basis for determining the operational effectiveness and
	suitability of a system prior to deployment.

	(07 Jan 1997)

operational semantics

	<theory> A set of rules specifying how the state of an actual
	or hypothetical computer changes while executing a program.
	The overall state is typically divided into a number of
	components, e.g. {stack}, {heap}, {register}s etc.  Each rule
	specifies certain preconditions on the contents of some
	components and their new contents after the application of the
	rule.

	It is similar in spirit to the notion of a {Turing machine},
	in which actions are precisely described in a mathematical
	way.

	Compuare {axiomatic semantics}, {denotational semantics}.

	(21 Aug 1996)

operational test and evaluation

	<testing> (OT&E) Formal testing conducted prior to deployment
	to evaluate the operational effectiveness and suitability of
	the system with respect to its mission.

	(07 Jan 1997)

operational testing

	<testing> A US DoD term for testing performed by the
	{end-user} on software in its normal operating environment.

	(07 Jan 1997)

operation code

	<programming> (Or "op code") The part or parts of a {machine
	language} instruction which determines what kind of action the
	computer should take, e.g. add, jump, load, store.  In any
	particular {instruction set} certain fixed bit positions
	within the instruction word contain the op code, others give
	{parameters} such as the addresses or {registers} involved.
	For example, in a 32-bit instruction the most significant
	eight bits might be the op code giving 256 possible
	operations.

	For some instruction sets, certain values in the fixed bit
	positions may select a group of operations and the exact
	operation may depend on other bits within instruction word or
	subsequent words.

	When programming in {assembly language}, the op code is
	represented by a readable name called an {instruction
	mnemonic}.

	(14 Feb 1997)

operator

	<programming> A symbol used as a {function}, with {infix
	syntax} if it has two arguments (e.g. "+") or {prefix syntax} if
	it has only one (e.g. {Boolean} NOT).  Many languages use
	operators for built-in functions such as arithmetic and logic.

	(30 Apr 1995)

operator overloading

	{overloading}

OPS

	1. On-line Process Synthesizer.  M. Greenberger, MIT ca. 1964.
	Discrete simulation under CTSS.  Sammet 1969, p.660.
	Versions: OPS-3, OPS-4.  "On- line Computation and Simulation:
	The OPS-3 System", M. Greenberger et al, MIT Press 1965.

	2. Official Production System.  CMU, 1970.  The first
	production-system (i.e. rule-based) programming language, used
	for building expert systems.  Written originally in {Franz
	Lisp}, later ported to other LISP dialects.

OPS5

	<language> A programming language for rule-based {production
	system}s.  A rule consists of pre-condition(s) and a resulting
	action.

	The system checks its working memory to see if there are rules
	whose pre-conditions are satisfied, if so, the action in one
	selected satisfied rule is executed.

	There is a {public domain} implementation of an OPS5
	{interpreter} written by Charles L. Forgy <forgy@cs.cmu.edu>
	in 1977.  It was first implemented in {Lisp} and later in
	{BLISS}.  It was also ported to {Common Lisp} by George Wood
	and Jim Kowalski.

	{CLIPS} is a language for writing {expert system}s, with some
	of the capabilities of OPS5.

	See also {C5}, {OPS83}, {OPS4}, {OPS5+}, {OPS83}.

	Inference Engine Tech, Cambridge MA.

	{An OPS5 interpreter in Common LISP
	(ftp://ftp.wustl.edu/mirrors/Unix-c/languages/ops5)}.

	{A version by Mark Kantrowitz
	(ftp://ftp.cs.cmu.edu/afs/cs.cmu.edu/user/mkant/Public/Lisp/)}
	<mkant+@cs.cmu.edu>.

	["Programming Expert Systems in OPS5", L. Brownston et al, A-W
	1985].

	["An OPS5 Primer", Sherman et al, comes with OPS5 for DOS].

	["Rule-Based Programming in the Unix System", G.T. Vesonder,
	AT&T Tech J 67(1), 1988].

	(18 Aug 1995)

OPS83

	A commercial version of {OPS5}.

Optical Carrier 12

	<networking> (OC-12) A {SONET} rate of 12 * 51.84 = 622.08
	{megabits} per second.

	[Matches {STS-12}]?

	(26 May 1997)

Optical Carrier 3

	<networking> (OC-3) A {SONET} rate of 3 * 51.84 = 155.52
	{megabits} per second, which matches {STS-3}.

	(05 Feb 1997)

Optical Carrier 48

	<networking> (OC-48) A {SONET} rate of 48 * 51.84 = 2488.32
	{megabits} per second.

	[Matches {STS-48}]?

	(26 May 1997)

Optical Carrier n

	<networking> (OC-n) A {SONET} rate of n times 51.84 {megabits}
	per second.

	(05 Feb 1997)

Optical Character Recognition

	(OCR) Recognition of printed or written characters by
	computer.

optical diff

	{vdiff}

optical fiber

	{optical fibre}

optical fibre

	<communications> (fibre optics, FO, US "fiber", light pipe) A
	plastic or glass (silicon dioxide) fibre no thicker than a
	human hair used to transmit information using infra-red or
	even visible light as the carrier (usually a laser).  The
	light beam is an electromagnetic signal with a frequency in
	the range of 10^14 to 10^15 Hertz.

	Optical fibre is less susceptible to external noise than other
	transmission media, and is cheaper to make than copper wire,
	but it is much more difficult to connect.  Optical fibres are
	difficult to tamper with (to monitor or inject data in the
	middle of a connection), making them appropriate for secure
	communications.  The light beams do not escape from the medium
	because the material used provides total internal reflection.

	{AT&T} {Bell Laboratories} in the United States managed to
	send information at a rate of 420 megabits per second, over
	161.5 km through an optical fibre cable.  In Japan, 445.8
	megabits per second was achieved over a shorter distance.  At
	this rate, the entire text of the Encyclopedia Britannica
	could be transmitted in one second.  Currently, AT&T is
	working on a world network to support high volume data
	transmission, international computer networking, {electronic
	mail} and voice communications (a single fibre can transmit
	200 million telephone conversations simultaneously).

	See also {FDDI}, {Optical Carrier n}, {SONET}.

	(26 May 1997)

optical grep

	{vgrep}

Optical Mark Reader

	<hardware> (OMR) A special scanning device that can read
	carefully placed pencil marks on specially designed documents.
	OMR is frequenty used in forms, questionnaires, and
	answer-sheets.

	(13 Apr 1995)

Optical Time Domain Reflectometer

	A device used to perform {Optical Time Domain Reflectometry}.

	(01 Feb 1995)

Optical Time Domain Reflectometry

	Measurement of the elapsed time and intensity of light
	reflected on {optical fibre} using an optical time domain
	reflectometer.  The reflectometer can compute the distance to
	problems on the fibre such as attenuation and breaks, making
	it a useful tool in optical network trouble-shooting.

	(01 Feb 1995)

optimal

	1. <mathematics> Describes a solution to a problem which
	minimises some {cost function}.  {Linear programming} is one
	technique used to discover the optimal solution to certain
	problems.

	2. <programming> Of code: best or most efficient in time,
	space or code size.

	(05 Oct 1995)

optimise

	To perform {optimisation}.

optimising compiler

	<programming, tool> {compiler} which attempts to analyse the
	code it produces and to produce more efficient code by
	performing {program transformation} such as {branch
	elimination}, {partial evaluation}, or {peep-hole
	optimisation}.

	Contrast {pessimising compiler}.

	(01 Feb 1995)

optimism

	What a programmer is full of after fixing the last bug and
	just before actually discovering the *next* last bug.  Fred
	Brooks's book "{The Mythical Man-Month}" contains the
	following paragraph that describes this extremely well.

	All programmers are optimists.  Perhaps this modern sorcery
	especially attracts those who believe in happy endings and
	fairy god-mothers.  Perhaps the hundreds of nitty frustrations
	drive away all but those who habitually focus on the end goal.
	Perhaps it is merely that computers are young, programmers are
	younger, and the young are always optimists.  But however the
	selection process works, the result is indisputable: "This
	time it will surely run," or "I just found the last bug.".

	See also {Lubarsky's Law of Cybernetic Entomology}.

optimization

	{optimisation}

optimize

	To perform {optimisation}.

option

	<software> (Or "flag", "switch", "option switch") An argument
	to a command that modifies its function rather than providing
	data.  Options generally start with "-" in {UNIX} or "/" in
	{MS-DOS}.  This is usually followed by a single letter or
	occasionally digit.

	Some commands require each option to be a separate argument,
	introduced by a new "-" or "/", others allow multiple option
	letters to be concatenated into a single argument with a
	single "-" or "/", e.g. "ls -al".  Some options may or must be
	followed by a value, e.g. "cc prog.c -o prog".

	{getopt} and {getopts} are commands for parsing command line
	options.  There is also a {C} library routine called getopt
	for the same purpose.

	(11 Dec 1996)

OPTRAN

	Specification language for attributed tree transformation
	writetn by R. Wilhelm, U Saarlandes in the early 1980's.

	["POPSY and OPTRAN Manual", ESPRIT PROSPECTRA Project Item
	S.1.6-R.3.0, U Saarlandes (Mar 1986)].

Opus

	<project, product> A {Honeywell} {operating system} promised
	as a sop to customers after canning {Multics} in 1985.  Opus
	was to provide everything Multics had and more, plus total
	compatibility with the {Level 6}/{DPS6} operating system.

	"Opus" was a code name, the system was officially named VS3
	(short for HVS R3 or Honeywell Virtual System Release Three).
	It was to run on the {DPS6-plus} hardware known internally as
	the MRX and HRX, and be all things to all people.

	The hardware was a dud (though it did run the native DPS6
	software just fine), and the goal was, shall we say,
	ambitious.  The effort was cancelled by {Bull} in 1987, in
	favor of another project going on in France.

OR

	<logic> The {Boolean} function which is true if any of its
	arguments are true.  Its {truth table} is:

	 A | B | A OR B
	 --+---+---------
	 F | F |    F
	 F | T |    T
	 T | F |    T
	 T | T |    T

	(04 Nov 1996)

Oracle 7

	<database> Version 7 of the {Oracle} {relational database}
	system software.

	(05 Nov 1996)

Oracle Card

	<tool> A {Hypercard}-like product from {Oracle} for
	constructing {database} {application}s.  It runs on {IBM PC}
	and {Macintosh}.

	(15 Mar 1995)

Oracle*CASE

	A set of {CASE} tools from {Oracle}.

Oracle Co-operative Applications

	<tool, product> Packaged {client/server} software from
	{Oracle} for accounting, manufacturing, distribution, human
	resources and project control.

Oracle Corporation

	<company> The world's leading supplier of information
	management software.  The company, worth $2 billion, offers
	its products, along with related consulting, education and
	support services in more than 90 countries around the world.

	Oracle is best known for its {database management system}s
	vendor and {relational DBMS} products.  Oracle develops and
	markets {Oracle Media Server} and the {Oracle7} family of
	software products for {database} management; {Co-operative
	Development Environment} and {Oracle Co-operative
	Applications}

	Oracle software runs on {personal digital assistant}s,
	{set-top box}s, {IBM PC}s, {workstation}s, {minicomputer}s,
	{mainframe}s and {massively parallel computer}s.

	See also {Adaptable User Interface}, {Bookviewer},
	{CASE*Method}, {Component Integration Laboratories}, {DDE
	Manager}, {Online Media}, {Oracle Card}, {Oracle*CASE},
	{siod}.

	{Home (http://www.oracle.com/)}

	Address: Redwood Shores, CA, USA.

	(15 Mar 1995)

Oracle Rdb

	<database> A set of {relational database} products originally
	known as Rdb from {Digital Equipment Corporation}, but
	purchased by {Oracle Corporation} in 1994.  The current (October
	1996) versions are Oracle Rdb V7.0 for {OpenVMS} {VAX}, Oracle
	Rdb V7.0 for OpenVMS {Alpha}, and Oracle Rdb V7.0 for {Digital
	UNIX}.

	This release of Oracle Rdb includes advances in {non-stop
	computing} for {business critical} applications, improvements
	to {OLTP} performance, and easy {client/server} application
	development.  It also includes an {ODBC} Driver.

	(30 Oct 1996)

Oracle Toolkit

	{Adaptable User Interface}

Orange Book

	<security, standard> A standard from the US Government
	{National Computer Security Council} (an arm of the
	U.S. National Security Agency), "Trusted Computer System
	Evaluation Criteria, DOD standard 5200.28-STD, December 1985"
	which defines criteria for trusted computer products.  There
	are four levels, A, B, C, and D.  Each level adds more
	features and requirements.

	D is a non-secure system.

	C1 requires user log-on, but allows {group ID}.

	C2 requires individual log-on with password and an audit
	mechanism.  (Most {Unix} implementations are roughly C1, and
	can be upgraded to about C2 without excessive pain).

	Levels B and A provide mandatory control.  Access is based on
	standard Department of Defense clearances.

	B1 requires DOD clearance levels.

	B2 guarantees the path between the user and the security
	system and provides assurances that the system can be tested
	and clearances cannot be downgraded.

	B3 requires that the system is characterised by a mathematical
	model that must be viable.

	A1 requires a system characterized by a mathematical model
	that can be proven.

	See also {crayola books}, {book titles}.

	(09 Jan 1997)

ORB

	{Object Request Broker}

Orbit

	A {Scheme} compiler.

	["Orbit: An Optimising Compiler for Scheme", D.A. Kranz et al,
	SIGPLAN Notices 21(7):281-292 (Jul 1986)].

	(28 Oct 1994)

Orca

	Vrije Universiteit, Amsterdam, 1986.  Similar to Modula-2, but
	with support for distributed programming using shared data
	objects, like Linda.  A 'graph' data type removes the need for
	pointers.  Version for the Amoeba OS, comes with Amoeba.
	"Orca: A Language for Distributed Processing", H.E.  Bal
	<bal@cs.vu.nl> et al, SIGPLAN Notices 25(5):17-24 (May 1990).

Order Code Processor

	<processor> The {ICL 2900}, {ICL 3900} and above term for
	"{CPU}".

	(06 May 1995)

order-embedding

	A function f : D -> C is order-embedding iff for all x, y in
	D,

		f(x) <= f(y)  <=>  x <= y.

	I.e. arguments and results compare similarly.  A function which
	is order-embedding is {monotonic} and one-to-one and an
	{injection}.

	("<=" is written in {LaTeX} as {\sqsubseteq}).

	(03 Feb 1995)

ordering

	A relation.

	See {partial ordering}, {pre-order}, {total ordering}.

ordinal

	<mathematics> An {isomorphism class} of {well-ordered set}s.

	(10 Mar 1995)

ordinate

	<mathematics> The y-coordinate on an (x,y) graph; the output
	of a function plotted against its input.

	x is the "{abscissa}".

	See {Cartesian coordinates}.

	(08 Jul 1997)

OREGANO

	["On the Design and Specification of the Programming Language
	OREGANO", D.M. Berry. UCLA-ENG-7388, 1973].

O'Reilly and Associates

	The leading publisher of information on the {Internet},
	{Unix}, the {X Window System} and other {open} systems.  They
	also provide the {Global Network Navigator} service.

	{Home page(http://www.ora.com/)}

	(10 Jan 1995)

Organic Mode

	<programming> A term used by {COCOMO} to describe a project
	that is developed in a familiar, stable environment.

	The product is similar to previously developed products.  Most
	people connected with the project have extensive experience in
	working with related systems and have a thorough understanding
	of the project.  The project contains a minimum of innovative
	data processing architectures or {algorithms}.  The product
	requires little innovation and is relatively small, rarely
	greater than 50,000 {DSI}s.

	(29 May 1996)

Orient84/K

	<language>

	["A Concurrent Object-Oriented Knowledge Representation
	Language Orient84/K", Y. Ishikawa, Keio U, Yokohama, SIGPLAN
	Notices 21(11):232-241 OOPSLA '86, Nov 1986].

	(29 May 1996)

Original Equipment Manufacturer

	<company> (OEM) A company which makes equipment (e.g.
	computers) as opposed to one which sells equipment made by
	other companies.

	See also {Value Added Reseller}.

	(07 Dec 1994)

ORKID

	{Open Real-time Kernel Interface Definition}

orphaned i-node

	/or'f*nd i:'nohd/ [Unix] 1. A file that retains storage but no
	longer appears in the directories of a file system.

orphan process

	<operating system> A {Unix} process whose original parent has
	terminated and which has become a child of "{init}(1)".

	Compare {zombie}.

	(29 May 1996)

ORTHOCARTAN

	<mathematics, tool> A system for {symbolic mathematics},
	especially General Relativity, written by A. Krasinski of
	Warsaw in the early 1980s.

	(12 Apr 1995)

orthogonal

	Mutually independent; well separated; sometimes, irrelevant
	to.  Used in a generalisation of its mathematical meaning to
	describe sets of primitives or capabilities that, like a
	vector basis in geometry, span the entire "capability space"
	of the system and are in some sense non-overlapping or
	mutually independent.

	In logic, the set of operators "not" and "or" is orthogonal,
	but the set "nand", "or", and "not" is not (because any one of
	these can be expressed in terms of the others).

	Also used in comments on human discourse: "This may be
	orthogonal to the discussion, but ..."

	See also {orthogonal instruction set}.

	(21 Dec 1994)

orthogonal instruction set

	An {instruction set} where all (or most) instructions have the
	same format and all register can be used interchangeably - the
	choice of which register to use is orthogonal to the choice of
	instruction.  This contrasts with some early {Intel}
	{microprocessor}s where only certain registers could be used
	by certain instructions.

	Examples include the {PDP-11}, {680x0}, {ARM}, {VAX}.

	(05 Jan 1995)

Orwell

	Lazy functional language, Miranda-like.  List comprehensions
	and pattern matching.  "Introduction to Orwell 5.00",
	P.L. Wadler et al, Programming Research Group, Oxford U, 1988.

OS

	1. {operating system}.

	2. [obsolete, {ITS}], an output spy.  See "{OS and JEDGAR}".

	3. <operating system> An {operating system} from {IBM} for
	their {System/360} line of hardware announced in 1964.  OS was
	planned with several flavours that were supposed to be
	compatible.  OS was late, memory hungry and not able to reach
	the marketing objectives of IBM for the 360/30, the planned
	successor of the {IBM 1401}.  IBM then decided to design a new
	operating system for the low end machines which they called
	{DOS/360}.

	(22 Sep 1997)

OS2

	<spelling> Normally written "{OS/2}".

	(02 May 1997)

OS/2

	/O S too/ {IBM} and {Microsoft}'s successor to the {MS-DOS}
	{operating system} for {Intel 80286} and {Intel 80386}-based
	{microprocessors}.  It is proof that they couldn't get it
	right the second time either.  Often called "Half-an-OS".  The
	design was so {baroque}, and the implementation of 1.x so bad,
	that 3 years after introduction you could still count the
	major {application programs} shipping for it on the fingers of
	two hands, in {unary}.  Later versions improved somewhat, and
	informed hackers now rate them superior to {Microsoft
	Windows}, which isn't saying much.  See {second-system
	effect}.

	On an {Intel 80386} or better, OS/2 can {multitask} between
	existing {MS-DOS} {applications}.  OS/2 is strong on
	connectivity and the provision of robust {virtual machines}.
	It can support {Microsoft Windows} programs in addition to its
	own {native} applications.  It also supports the {Presentation
	Manager} {graphical user interface}.

	{OS/2} supports {hybrid multiprocessing} (HMP), which provides
	some elements of {symmetric multiprocessing} (SMP), using
	add-on IBM software called {MP/2}.  OS/2 SMP was planned for
	release in late 1993.

	After OS/2 1.x the {IBM} and {Microsoft} partnership split.
	IBM continued to develop OS/2 2.0, while Microsoft developed
	what was originally intended to be OS/2 3.0 into {Windows NT}.
	In October 1994, IBM released version OS/2 3.0 (known as
	"Warp") but it is only distantly related to {Windows NT}.
	This version raised the limit on RAM from 16MB to 1GB (like
	Windows NT).

	IBM introduced networking with "OS/2 Warp Connect", the first
	multi-user version.  OS/2 Warp 4.0 ("Merlin") is a {network
	operating system}.

	{(http://www.mit.edu:8001/activities/os2/os2world.html)}.

	[Dates?]

	(20 Jul 1995)

OS/390

	<operating system> An {IBM} {mainframe} {operating system}
	which delivers integrated {MVS}, {UNIX}, {LAN}, {distributed
	computing}, and application enablement services through its
	base elements.  These base services enable open, distributed
	processing and offer a foundation for object-ready application
	development.  The OS/390 base includes a Communication Server
	that includes {VTAM}, the VTAM AnyNet feature, {TCP/IP}, and
	{TIOC}.  It provides {SNA} ({3270}), {APPC}, {High Performance
	Routing}, {ATM} support, {Socket}s, and {RPC}.

	{Home (http://204.146.133.206/os390/index.html)}.

	(21 Nov 1996)

OS-9

	<operating system> A {real-time} {operating system} written by
	{Microware Corporation}.  The original version was written
	about 1978 for the {Motorola 6809} and has since been ported
	to the {Motorola 68000}, {Intel 80386}, {Intel 486}, and the
	{PowerPC}.  The {kernel} of OS-9 is {ROMable}, modular, with a
	unified file system, allowing it to easily be scaled up or
	down as required.

	{FAQ (http://os9archive.rtsi.com/os9faq.html)}

	{User Group (http://www.cs.wisc.edu/~pruyne/os9ugfaq.html)}

	{Usenet} newsgroup: {news:comp.os.os9}.

	(03 Apr 1996)

OSA

	{Open Scripting Architecture}

OSCAR

	1. Oregon State Conversational Aid to Research.  Interactive
	numerical calculations, vectors, matrices, complex arithmetic,
	string operations, for CDC 3300.  "OSCAR: A User's Manual with
	Examples", J.A. Baughman et al, CC, Oregon State U.

	2. Object-oriented language used in the COMANDOS Project.
	"OSCAR: Programming Language Manual", TR, COMANDOS Project,
	Nov 1988.

OSE

	{Open Systems Environment}

OSF

	{Open Software Foundation}

OSI

	{Open Systems Interconnect}

OSI Reference Model

	{Open Systems Interconnect}

OSI-RM

	{Open Systems Interconnect}

OSI seven layer model

	{Open Systems Interconnect}

O'small

	A small, concise, formally defined {object-oriented} language
	intended for teaching, by Andreas Hense
	<hense@sol.cs.uni-sb.de>.

	{(ftp://cs.uni-sb.de:/pub/osmall/machine/)}

	O'small requires {sml-yacc}, {sml-lex} and {sml-noshare}.
	Binaries areprovided for {SPARC} and it is probably portable
	to other {Unix} systems.  There is also an {interpreter} in
	{Miranda}.

	[Christoph Boeschen, "Christmas - An abstract machine for
	O'small".  Master's thesis, Universit"at des Saarlandes,
	Fachbereich 14, June 1993].

	(1993/06/25)

OSPF

	{Open Shortest-Path First Interior Gateway Protocol}

OSQL

	Object-oriented Structured Query Language.

	A {functional language}, a superset of {SQL}, used in
	{Hewlett-Packard}'s {OpenODB} {database} system.

	E-mail: <boronkay@cup.hp.com>.

	(29 Nov 1994)

OSSL

	Operating Systems Simulation Language.

	["OSSL - A Specialized Language for Simulating Computer
	Systems", P.B. Dewan et al, Proc SJCC 40, AFIPS (Spring
	1972)].

OTDR

	{Optical Time-Domain Reflectometry}

OT&E

	{operational test and evaluation}

OTI

	{Open Tool Interface}

OTOH

	On the other hand.

OTP

	{One Time Programmable Read Only Memory}

OTPROM

	{One Time Programmable Read Only Memory}

OTT

	Over the top.

	Excessive or uncalled for.

	(31 Jan 1995)

Ottawa Euclid

	A variant of {Euclid}.

	(31 Jan 1995)

outline font

	<text> (Or "vector font") A {font} defined as a set of lines
	and curves as opposed to a {bitmap font}.  An outline font
	(e.g. {PostScript}, {TrueType}, {RISC OS}) can be scaled to any
	size and otherwise transformed more easily than a bitmap font,
	and with more attractive results, though this requires a lot
	of numerical processing.  The result of transforming a
	character in an outline font in a particular way is often
	saved as a bitmap in a {font cache} to avoid repeating the
	calculations if that character is to be drawn again.

	(16 Mar 1995)

out-of-band

	(From telecommunications and network theory) 1. In software,
	describes values of a function which are not in its "natural"
	range of return values, but are rather signals that some kind
	of exception has occurred.  Many C functions, for example,
	return a nonnegative integral value, but indicate failure with
	an out-of-band return value of -1.  Compare {hidden flag},
	{green bytes}, {fence}.

	2. Also sometimes used to describe what communications people
	call "shift characters", such as the ESC that leads control
	sequences for many terminals, or the level shift indicators in
	the old 5-bit Baudot codes.

	3. In personal communication, using methods other than
	{electronic mail}, such as telephone or {snail-mail}.

	(29 Nov 1994)

output

	<architecture> {Data} transferred from a computer system to
	the outside world via some kind of {output device}.

	Opposite: {input}.

	(28 Apr 1997)

output device

	<hardware> Electronic or electromechanical equipment connected
	to a computer and used to transfer data out of the computer in
	the form of text, images, sounds or other media to a {display
	screen}, {printer}, loudspeaker or storage device.  Most
	modern storage devices such as {disk drives} and {magnetic
	tape drives} act as both input and output devices, others such
	as {CD-ROM} are input only.

	(18 Mar 1997)

Outside Awareness Port

	<humour> (OAP) A humorous {IBM} term for a window (the glass
	kind) rather than the {GUI} kind.

outside-in testing

	<testing> A strategy for {integration testing} where units
	handling program inputs and outputs are tested first, and
	units that process the inputs to produce output are
	incrementally included as the system is integrated.  A form of
	{hybrid testing}.

	(07 Jan 1997)

outsourcing

	<business> Paying another company to provide services which a
	company might otherwise have employed its own staff to
	perform, e.g. software development.

	(28 Mar 1995)

Overdrive

	<processor> An {Intel} {Pentium} processor which fits into a
	socket designed to accomodate an {Intel 486}, or into a
	special upgrade socket on the {motherboard}.

	(27 Mar 1995)

overflow bit

	1. A {flag} on some processors indicating an attempt to
	calculate a result too large for the destination {register} to
	hold.

	2. More generally, an indication of any kind of capacity
	overload condition.  "Well, the {Ada} description was
	{baroque} all right, but I could hack it OK until they got to
	the exception handling ... that set my overflow bit."

	3. The hypothetical bit that will be set if a hacker doesn't
	get to make a trip to the Room of Porcelain Fixtures: "I'd
	better process an internal interrupt before the overflow bit
	gets set".

overflow pdl

	The place where you put things when your {pdl} is full.  If
	you don't have one and too many things get pushed, you forget
	something.  The overflow pdl for a person's memory might be a
	memo pad.  This usage inspired the following doggerel:

	 Hey, diddle, diddle
	 The overflow pdl
	   To get a little more stack;
	 If that's not enough
	 Then you lose it all,
	   And have to pop all the way back.
				       --The Great Quux

	The term {pdl} seems to be primarily an {MIT}ism; outside MIT
	this term is replaced by "overflow {stack}".

overhead

	1. Resources (in computing usually processing time or storage
	space) consumed for purposes which are incidental to, but
	necessary to, the main one.  Overheads are usually
	quantifiable "costs" of some kind.

	Examples: The overheads in running a business include the cost
	of heating the building.  Keeping a program running all the
	time eliminates the overhead of loading and initialising it
	for each transaction.  Turning a {subroutine} into {inline}
	code eliminates the call and return time overhead for each
	execution but introduces space overheads.

	2. <communications> information, such as control, routing, and
	error checking characters, that is transmitted along with the
	user data.  It also includes information such as network
	status or operational instructions, network routing
	information, and retransmissions of user data received in
	error.

	3. Overhead transparencies or "slides" (usually 8-1/2" x 11")
	that are projected to an audience via an overhead (flatbed)
	projector.

	(01 Sep 1997)

overloading

	<language> (Or "Operator overloading").  Use of a single
	symbol to represent operators with different argument types,
	e.g. "-", used either, as a monadic operator to negate an
	expression, or as a dyadic operator to return the difference
	between two expressions.  Another example is "+" used to add
	either integers or {floating-point} numbers.  Overloading is
	also known as ad-hoc {polymorphism}.

	User-defined operator overloading is provided by several
	modern programming languages, e.g. {C++}'s {class} system and
	the {functional programming} language {Haskell}'s {type
	class}es.

	(30 Apr 1995)

overriding

	<programming> Redefining in a {child class} a {method} or
	function member defined in a {parent class}.

	Not to be confused with "{overloading}".

	(21 Dec 1996)

overrun

	1. A frequent consequence of data arriving faster than it can
	be consumed, especially in {serial line} communications.  For
	example, at 9600 baud there is almost exactly one character
	per millisecond, so if a {silo} can hold only two characters
	and the machine takes longer than 2 milliseconds to get to
	service the interrupt, at least one character will be lost.

	2. Also applied to non-serial-I/O communications.  "I forgot
	to pay my electric bill due to mail overrun."  "Sorry, I got
	four phone calls in 3 minutes last night and lost your message
	to overrun."  When {thrash}ing at tasks, the next person to
	make a request might be told "Overrun!"  Compare {firehose
	syndrome}.

	3. More loosely, may refer to a {buffer overflow} not
	necessarily related to processing time (as in {overrun
	screw}).

overrun screw

	A variety of {fandango on core} produced by a {C} program
	scribbling past the end of an {array} ({C} implementations
	typically have no checks for this error).  This is relatively
	benign and easy to spot if the array is static; if it is
	{auto}, the result may be to {smash the stack} - often
	resulting in {heisenbug}s of the most diabolical subtlety.
	The term "overrun screw" is used especially of scribbles
	beyond the end of arrays allocated with {malloc}; this
	typically overwrites the allocation header for the next block
	in the {arena}, producing massive lossage within malloc and
	often a {core dump} on the next operation to use {stdio} or
	malloc itself.

	See {spam}, {overrun}; see also {memory leak}, {memory smash},
	{aliasing bug}, {precedence lossage}, {fandango on core},
	{secondary damage}.

	(19 Jan 1995)

OWHY

	<language> An early {functional language}(?).

	["A Type-Theoretical Alternative to CUCH, ISWIM, OWHY", Dana
	Scott, Oxford U 1969].

	(19 Jan 1995)

OWL

	1. <company> {Office Workstations Limited}.

	2. <language> {Object Windows Language}.

	(13 Jan 1996)

Owl

	The original name of {Trellis}.

	(19 Jan 1995)

Ox

	version:        G1.01

	parts: Yacc/Lex/C preprocessor, tutorial, reference manual,
	manual page, examples, Ox-ready parsers (C, C++, Pascal, Ada,
	Fortran)

	author:                Kurt Bischoff <bischoff@cs.iastate.edu>

	how to get:            {(ftp://ftp.cs.iastate.edu/pub/ox/)}

	Ox generalises the function of Yacc in the way that attribute
	grammars generalise context-free grammars.  Ordinary Yacc and
	Lex specifications may be augmented with definitions of
	synthesised and inherited attributes written in C syntax.  Ox
	checks these specifications for consistency and completeness,
	and generates from them a program that builds and decorates
	attributed parse trees.  Ox accepts a most general class of
	attribute grammars.  The user may specify postdecoration
	traversals for easy ordering of side effects such as code
	generation.  Ox handles the tedious and error-prone details of
	writing code for parse-tree management, so its use eases
	problems of security and maintainability associated with that
	aspect of translator development.  Ox is a preprocessor, and
	extends the syntax and semantics of Yacc, Lex, and C.

	reference: Most compiler textbooks have descriptions of
	attribute grammars.

	features: {LALR1 grammar}, semantic-analyser generation.

	bugs: none known.  Report bugs to <ox-project@cs.iastate.edu>.

	restriction: Use of Ox is free.  Ox-generated code is the
	property of the Ox user.

	requires:        yacc, lex

	ports:	               every kind of Unix

	contact:        <ox-request@cs.iastate.edu>

	["User Manual for Ox: An Attribute-Grammar Compiling System
	based on Yacc, Lex and C", K.M.  Bischoff, TR92-30, Iowa State
	U, Dec 1992].

	(14 Nov 1993)

Oz

	An {object-oriented} {concurrent} {constraint} language from
	the {University of Saarbrucken}.  Oz is based on {constraint
	communication}, a new form of {asynchronous} communication
	using {logic variable}s.  Partial information about the values
	of variables is imposed concurrently and incrementally.
	Supports {higher order} programming and object-orientation
	including {multiple inheritance}.

	{(ftp:duck.dfki.uni-sb.de/pub/papers)}

	["Object-Oriented Concurrent Constraint Programming in Oz",
	G. Smolka et al].

oz

	An old Australian {top-level domain} and network which got
	incorporated into the current one.  The former Australian
	{domain}s .oz, .edu and .com are now .oz.au, .edu.au and
	.com.au.

	(04 Oct 1994)

Oz-Email

	<company> An {Internet} access provider.

	{Home (http://www.ozemail.com.au/)}

	Address: Sydney, Australia.

	(02 Mar 1995)

P+

	["Experience with Remote Procedure Calls in a Real-Time
	Control System", B. Carpenter et al, Soft Prac & Exp
	14(9):901-907 (Sep 1984)].

P1754

	<processor, standard> IEEE Std 1754-1994 "A 32-Bit
	Microprocessor Architecture".  The {IEEE} standard defining a
	version of the {SPARC} {microprocessor} architecture.

	The P1754 standard (the first microprocessor standard) was
	approved after four years on 17 March 1994.  It is compatible
	with, but distinct from, {SPARC International}'s 32 bit
	version of the SPARC Architecture, SPARC V8, from which it is
	largely derived.  It is possible for a processor to comply
	with neither, one, or both specifications.

	{SI article
	(http://www.sparc.com/sparc.new/other/sflash/94-03.html)}.

	(21 Dec 1996)

p2c

	A {Pascal} to {C} translator by Dave Gillespie
	<daveg@synaptics.com>.

	{Version 1.20 (ftp://csvax.cs.caltech.edu/)}

	Supports {ANSI}/{ISO} {standard} {Pascal} as well as
	substantial subsets of {HP Pascal}, {Turbo Pascal}, VAX, and
	many other dialects.

	(13 Apr 1990)

P3L

	(Superscript 3).  A language with explicit parallelism
	including constructs for {farm}s and {geometric parallelism}.
	P3L currently uses {C++} as a host language.

	[S. Pelagatti, "A method for the development and the support
	of massively parallel programs.  PhD Thesis - TD 11/93,
	University of Pisa, Mar 1993].

	(15 Jul 1994)

P4

	A {macro}/subroutine package for parallel programming by Rusty
	Lusk <lusk@anta.mcs.anl.gov>.  P4 uses {monitor}s on shared
	memory machines and message passing on distributed memory
	machines.  It is implemented as a subroutine library for {C}
	and {Fortran}.  An enhancement of the "Argonne macros",
	{PARMACS}.

	{(ftp://info.mcs.anl.gov/pub/p4t1.2.tar.Z)}.  E-mail:
	<p4@mcs.anl.gov>.

P6

	<processor> ("P" from {Pentium}, 6 from 686, the successor to
	586 which is what the Pentium would have been had it followed
	the naming scheme its predecessors) The name for the {Pentium
	Pro} during development.

	(15 Nov 1995)

PABX

	A {packet switching} center for {X25} communication.

PACE

	A CPU based on the {Nova} design, but with 16-bit addressing,
	more {addressing mode}s and a 10 level {stack} (like the
	{Intel 8008}).

	(30 Nov 1994)

Packard Bell Electronics, Inc.

	<company> A leading US computer vendor.

	As recently as 29 November 1995 the Wall Street Journal
	reported that the company was having financial difficulties
	and that one of its major suppliers of CPUs, {Intel}, was
	about to make a large cash loan, so as to prevent loss of a
	major customer.  Packard Bell is a privately held company and
	the WSJ also reported that {NEC} has been rumored to have
	bought a large minority block of shares to help the company
	stay in business.

	Its computers are sold in major retail outlets in the USA and
	are available as a bundled package: desktop or {tower} {486}
	{CPU}, single 3.5 inch {floppy disk drive}, {CD-ROM}, {sound
	card}, 14 inch colour {monitor}, and 4-8MB of {RAM}.

	1995 end-of-year prices in Computer Currents magazine (a
	California Bay Area bi-monthly giveaway publication) are
	US$1500 (approx.  1000 pounds) for a 486 desktop, with 8MB
	RAM, 420MB hard disk drive, single 3.5 inch floppy drive, 14
	inch colour monitor, 2-speed CD-ROM, and 16-bit sound card.

	Headquarters: Sacramento, California, USA.

	(02 Jan 1996)

packed decimal

	<data> A number representation in which each decimal digit is
	represented by four bits (one {nibble}).  The rightmost nibble
	of the field contains the sign (positive or negative).

	An n-byte packed decimal field can represent a (2n-1)-digit
	decimal number.

	[Where is it used?  How is the sign encoded?]

	(08 Jun 1997)

packet

	The unit of data sent across a {network}.  "Packet" is a
	generic term used to describe a unit of data at any layer of
	the {OSI} {protocol stack}, but it is most correctly used to
	describe {application layer} data units ("{application
	protocol data unit}", APDU).

	See also {datagram}, {frame}.

	(30 Nov 1994)

Packet Assembler/Disassembler

	(PAD) Hardware or software device for splitting a data stream
	into discrete {packet}s for transmission over some medium and
	then reforming the stream(s) at the receiver.

	The term is most often used for interfaces to {X.25} lines.

	(31 Jan 1995)

packet driver

	{IBM PC} {local area network} software that divides data into
	{packet}s which it routes to the network.  It also handles
	incoming data, reassembling the packets so that {application
	program}s can read the data as a continuous stream.

	{FTP Software} created the specification for {IBM PC} packet
	drivers but {Crynwr Software} dominate the market and have
	done the vast majority of the implementations.

	Packet drivers provide a simple, common programming interface
	that allows multiple {application}s to share a {network
	interface} at the {data link} layer.  Packet drivers
	demultiplex incoming packets among the applications by using
	the network media's {standard packet type} or {service access
	point} field(s).

	The packet driver provides calls to initiate access to a
	specific packet type, to end access to it, to send a packet,
	to get statistics on the network interface and to get
	information about the interface.

	Protocol implementations that use the packet driver can
	coexist and can make use of one another's services, whereas
	multiple applications which do not use the driver do not
	coexist on one machine properly.  Through use of the packet
	driver, a user could run {TCP/IP}, {XNS} and a proprietary
	protocol implementation such as {DECnet}, {Banyan}'s,
	{LifeNet}'s, {Novell}'s or {3Com}'s without the difficulties
	associated with pre-empting the network interface.

	Applications which use the packet driver can also run on new
	network hardware of the same class without being modified;
	only a new packet driver need be supplied.

	There are several levels of packet driver.  The first is the
	basic packet driver, which provides minimal functionality but
	should be simple to implement and which uses very few host
	resources.  The basic driver provides operations to broadcast
	and receive packets.  The second driver is the extended packet
	driver, which is a superset of the basic driver.  The extended
	driver supports less commonly used functions of the network
	interface such as {multicast}, and also gathers statistics on
	use of the interface and makes these available to the
	application.  The third level, the high-performance functions,
	support performance improvements and tuning.

	{(http://www.crynwr.com/crynwr/home.html)}

	(05 Dec 1994)

Packet InterNet Groper

	<networking, tool> (ping, probably originally contrived to
	match submariners' term for the sound of a returned sonar
	pulse) A program used to test reachability of destinations by
	sending them one, or repeated, {ICMP} echo requests and
	waiting for replies.  Since ping works at the {IP} level its
	server-side is often implemented entirely within the
	{operating system} {kernel} and is thus pretty much the lowest
	level test of whether a remote host is alive.  Ping will often
	respond even when higher level, {TCP}-based services cannot.

	The term is also used as a verb: "Ping host X to see if it is
	up."

	The {Unix} command "ping" can be used to do this manually and
	to measure round-trip delays.

	The funniest use of "ping" was described in January 1991 by
	Steve Hayman on the {Usenet} group comp.sys.next.  He was
	trying to isolate a faulty cable segment on a {TCP/IP}
	{Ethernet} hooked up to a {NeXT} machine, and got tired of
	having to run back to his console after each cabling tweak to
	see if the ping packets were getting through.  So he used the
	sound-recording feature on the NeXT, then wrote a {script}
	that repeatedly invoked ping, listened for an echo, and played
	back the recording on each returned packet.  Result?  A
	program that caused the machine to repeat, over and over,
	"Ping ... ping ... ping ..." as long as the network was up.
	He turned the volume to maximum, ferreted through the building
	with one ear cocked, and found a faulty tee connector in no
	time.

	See also {ACK}, {ENQ}, {traceroute}, {spray}.

	{Unix manual page}: ping(8).

	(28 Mar 1995)

packet radio

	<communications> (PR) The use of amateur radio to communicate
	between computers.  PR is a complete amateur radio computer
	network with "digipeaters" (relays), mailboxes (BBS) and other
	special nodes.

	In Germany, it is on HF, say, 2m (300 and 1200 BPS), 70cm
	(1200 to 9600 BPS), 23cm (normally 9600 BPS and up, currently
	most links between digipeaters) and higher frequencies.  There
	is a KW (short wave) Packet Radio at 300 BPS, too.

	Satellites with OSCAR (Orbiting Sattelite Carring Amateur
	Radio) transponders (mostly attached to commercial satellites
	by the AMateur SATellite (AMSAT) group) carry Packet Radio
	mailboxes or digipeaters.

	There are both on-line and off-line services on the packet radio
	network: You can send {electronic mail}, read bulletins, chat,
	transfer files, connect to on-line DX-Clusters (DX=far
	distance) to catch notes typed in by other HAMs about the
	hottest international KW connections currently coming up (so
	you can pile up).

	PR uses {AX.25} (an {X.25} derivative) as its {transport
	layer} and sometimes even {TCP/IP} is transmitted over AX.25.
	AX.25 is like X.25 but the adressing uses HAM "calls" like
	"DG8MGV".

	There are special "wormholes" all over the world which
	"tunnel" amateur radio traffic through the {Internet} to
	forward mail.  Sometimes mails travels over satelites.
	Normally amateur satellites have strange orbits, however the
	mail forwarding or maibox satellites have very predictable
	orbits.  Some wormholes allow HAMs to bridge from Internet to
	{AMPR-NET}, e.g. db0fho.ampr.org or db0fho.et-inf.fho-emden.de,
	but only if you are registered HAM.

	Because amateur radio is for non profit, it must not be
	interconnected to the {Internet} but it may be connected
	through the Internet.  All people on the (completely free)
	amateur radio net must be licensed radio amateurs and must
	have a "call" which is unique all over the world.

	There is a special {domain} AMPR.ORG (44.*.*.*) for amateur
	radio reserved in the IP space.  This domain is split between
	countries, which can split up the IP space even more.  For
	example 44.130.*.* is Germany, 44.130.58.* is Augsburg (in
	Bavaria), and 44.130.58.20 is dg8mgv.ampr.org (you may verify
	this with {nslookup}).

	Mail transport is only one aspect of packet radio.  You can
	talk interactively (as in {chat}), read files, or play silly
	games built in the Packet Radio software.  Usually you can use
	the autorouter to let the digipeater network find a path to
	the station you want.  However there are many (sometimes
	software incompatible) digipeaters out there, which the router
	cannot use.  Paths over 1000 km are unlikely to be useable for
	{real-time} communication and long paths can introduce
	significant delay times (answer latency).

	Other uses of amateur radio for computer communication include
	{RTTY} ({baudot}), {AMTOR}, {PACTOR}, and {CLOVER}.

	{A huge hamradio archive (ftp://ftp.ucsd.edu/hamradio/)}

	{Usenet} newsgroup: {news:rec.radio.amateur.packet}.

	(27 Feb 1995)

packet-switched

	See {packet switching}.

packet switching

	A communications paradigm in which {packet}s (messages or
	fragments of messages) are individually {route}d between
	{host}s, with no previously established communication path.
	Packets are routed to their destination through the most
	expedient route (as determined by some routing algorithm).
	Not all packets travelling between the same two hosts, even
	those from a single message, will necessarily follow the same
	route.  The destination computer reassembles the packets into
	their appropriate sequence.  Packet switching is used to
	optimise the use of the {bandwidth} available in a network and
	to minimise the {latency}.  {X.25} is an international
	standard packet switching network.

	Also called {connectionless}.  Opposite of {circuit switched}
	or {connection-oriented}.  See also {virtual circuit}.

Packet Switch Node

	(PSN) A dedicated computer whose purpose is to accept, {route}
	and forward {packet}s in a {packet-switched} network.

	(30 Nov 1994)

PackIt

	<file format, tool> A file format used on the {Apple
	Macintosh} to represent collections of Mac files, possibly
	{Huffman} compressed.  Packing many small related files
	together before a {MacBinary} transfer or a translation to
	{BinHex} 4.0 is common practice.

	(30 Nov 1994)

PACT I

	An early system on the {IBM 701}.  Version PACT IA was for the
	{IBM 704}.

	[Listed in CACM 2(5):16 (May 1959)].

	(30 Nov 1994)

PACTOLUS

	Digital simulation.

	[Sammet 1969, p. 627].

	(30 Nov 1994)

PAD

	{Packet Assembler/Disassembler}

padded cell

	Where you put {luser}s so they can't hurt anything.  A program
	that limits a luser to a carefully restricted subset of the
	capabilities of the host system (for example, the "{rsh}"
	utility on {USG Unix}).  Note that this is different from an
	{iron box} because it is overt and not aimed at enforcing
	security so much as protecting others (and the {luser}) from
	the consequences of the luser's boundless naivet'e (see
	{naive}).  Also "padded cell environment".

	(30 Nov 1994)

Paddle

	A language for transformations leading from specification to
	program.  Used in the {POPART} programming environment
	generator.

	(30 Nov 1994)

PAGE

	A typesetting language.

	["Computer Composition Using PAGE-1", J.L.  Pierson, Wiley
	1972].

page

	1. <operating system> {paging}.

	2. <World-Wide Web> {web page}.

	(10 Apr 1997)

Page Description Language

	(PDL) A language such as {Adobe}'s {PostScript} or {Xerox}'s
	{Interpress} which allows the appearance of a printed page to
	be described in a high-level, device-independent way.
	Printing then becomes a two-stage process: an {application
	program} produces a description in the language, which is then
	interpreted by a specific output device.  Such a language can
	therefore serve as an interchange standard for transmission
	and storage of printable documents.

	(20 Feb 1995)

page fault

	<architecture> In a {paged virtual memory} system, an access
	to a page (block) of memory that is not currently mapped to
	{physical memory}.  When a page fault occurs the {operating
	system} either fetches the page in from {secondary storage}
	(usually disk) if the access was legitimate or otherwise
	reports the access as illegal.

	(11 Nov 1995)

page in

	What a {paging} system does when it copies part of a task's
	working memory from {swap space} on disk to {RAM}.

	(23 Jan 1995)

page mode

	1. <hardware, storage> See {page mode DRAM}.

	2. <hardware> An operation mode of {video terminals} like the
	{IBM 3270}, in which the terminal only sends a completed input
	screen (page) to the host instead of sending each character as
	the keys are pressed.

	(28 Mar 1995)

Page Mode DRAM

	{Page Mode Dynamic Random Access Memory}

Page Mode Dynamic Random Access Memory

	<hardware, storage> A technique used to support faster
	sequential access to {DRAM} by allowing any number of accesses
	to the currently open row to be made after supplying the {row
	address} just once.

	The {RAS} signal is kept active, and with each {falling edge}
	of the {CAS}\ signal a new {column address} can be supplied
	and the corresponding bits can be accessed.  This is faster
	than a full RAS-CAS cycle because only the shorter Column
	Access Time needs to be obeyed.

	Note that strictly speaking such a DRAM is not a true {random
	access memory} since accesses to the open row are faster than
	to other locations.

	{EDO RAM} is replacing Page Mode DRAM in many new
	microcomputers.

	[Is "Fast Page Mode" the same as "Page Mode"?]

	(06 Oct 1996)

page out

	<operating system> What a {paging} system does when it copies
	part of a {task}'s working memory from {RAM} to {swap space}
	on disk.

	(23 Jan 1995)

pager

	1. <hardware, communications> a "beeper" or "bleeper" (UK?).
	A small wireless receiver that, when triggered (generally via
	phone), will beep or vibrate (un)pleasantly.  The wearer will
	have been trained to respond to this signal by looking at a
	small screen on the device for an unimportant message.

	In recent years, pagers have grown more complex, allowing for
	long {alphanumeric} messages to be received and scrolled
	though (as opposed to earlier models, which supported only
	short numeric messages); at the same time as pager functions
	are integrated into some {PDA}s.  If this trend continues, the
	distinction between {PDA}s and high-end {pagers} will
	disappear.

	{Short Message Service} allows a mobile phone to display a
	message, just like an alphanumeric pager.

	2. <tool> A program for viewing a {text file} a screenful at a
	time via a text {terminal}, as opposed to scrolling thru it in
	a {GUI} window, or {cat}ting it all at once to the terminal.

	The best known pagers are {more}, {less}, pg, and list.com.

	(11 Sep 1997)

paging

	<operating system> A technique for increasing the memory space
	available by moving infrequently-used parts of a program's
	working memory from {RAM} to a secondary storage medium,
	usually disk.  The unit of transfer is called a page.

	A {memory management unit} (MMU) monitors accesses to memory
	and splits each address into a page number (the most
	significant bits) and an offset within that page (the lower
	bits).  It then looks up the page number in its page table.
	The page may be marked as paged in or paged out.  If it is
	paged in then the memory access can proceed after translating
	the {virtual address} to a {physical address}.  If the
	requested page is paged out then space must be made for it by
	paging out some other page, i.e. copying it to disk.  The
	requested page is then located on the area of the disk
	allocated for "{swap space}" and is read back into {RAM}.  The
	page table is updated to indicate that the page is paged in
	and its physical address recorded.

	The MMU also records whether a page has been modified since it
	was last paged in.  If it has not been modified then there is
	no need to copy it back to disk and the space can be reused
	immediately.

	Paging allows the total memory requirements of all running
	tasks (possibly just one) to exceed the amount of {physical
	memory}, whereas {swapping} simply allows multiple processes
	to run concurrently, so long as each process on its own fits
	within {physical memory}.

	(22 Nov 1996)

PaiLisp

	Parallel Lisp built on Scheme.  1986.

	["A Parallel Lisp Language PaiLisp and its Kernel
	Specification", T. Ito et al, in Parallel Lisp: Languages and
	Systems, T. Ito et al eds, LNCS 441, Springer 1989].

	(30 Jan 1995)

pain in the net

	{flamer}

Paintbrush

	<graphics, tool> A {Microsoft Windows} tool for creating
	{bitmap} graphics.

	(26 Aug 1996)

PAISley

	An operational specification language from {Bell Labs}.

	["An Operational Approach to Requirements Specification for
	Embedded Systems", P. Zave, IEEE Trans Soft Eng
	SE-8(3):250-269 (May 1982)].

	(30 Jan 1995)

PAL

	1. <language> {Paradox Application Language}.

	2. For the {AVANCE} distributed {persistent} {operating
	system}.

	["PAL Reference Manual", M. Ahlsen et al, SYSLAB WP-125,
	Stockholm 1987].

	["AVANCE: An Object Management System", A. Bjornerstedt et al,
	SIGPLAN Notices 23(11):206-221 (OOPSLA '88) (Nov 1988)].

	[What is it?]

	3. <language> An {object-oriented} {Prolog}-like language.

	["Inheritance Hierarchy Mechanism in Prolog", K. Akama, Proc
	Logic Prog '86, LNCS 264, Springer 1986, pp. 12-21].

	4. <language> {PDP Assembly Language}.

	5. <language> {Pedagogic Algorithmic Language}.

	6. <hardware, integrated circuit> {Programmable Array Logic}.

	(26 Jan 1995)

Palace

	<virtual reality, chat> A proprietary multi-user {virtual
	reality}-like {talk} system.

	The Palace is distinguished from most other VR-like systems in
	that it is only two-dimensional rather than three; rooms,
	{avatars}, and "props" are made up of relatively small 2D
	{bitmap} images.

	Palace is a crude {hack}, or lightweight, depending on
	your point of view.

	{Home (http://www.thepalace.com/)}.

	(14 Sep 1997)

palette

	{colour palette}

palmtop

	{pocket computer}

Palo Alto Research Center

	{XEROX PARC}

Palo Alto Research Centre

	{XEROX PARC}

PAM

	{Pluggable Authentication Module}

Pam

	<language> A {toy} {ALGOL}-like language used in "Formal
	Specification of Programming Languages: A Panoramic Primer",
	F.G. Pagan, P-H 1981.

	(23 Dec 1996)

Pandora

	<language> {Parlog} extended to allow {don't-know
	nondeterminism}.

	["Pandora: Non-Deterministic Parallel Logic Programming",
	R. Bahgat et al, Proc 6th Intl Conf Logic Programming, MIT
	Press 1989 pp. 471-486].

	(27 Apr 1995)

panic

	1. <operating system> What {Unix} does when a critical
	internal consistency checks fails in such a way that Unix
	cannot continue.  The {kernel} attempts to print a short
	message on the {console} and write an image of memory into the
	{swap area} on disk.  This can be analysed later using {adb}.
	The kernel will then either wait in a {tight loop} until the
	machine is rebooted or will initiate an automatic {reboot}.

	{Unix manual page}: panic(8).

	2. Action taken by software which discovers some fatal problem
	which prevents it from continuing to run.

	(01 Mar 1995)

PANON

	A family of pattern-directed string processing languages based
	on {generalised Markov algorithm}s.

	PANON-1 is based on {simple generalised Markov algorithm}s and
	PANON-2 on {conditional functional generalised Markov
	algorithm}s.

	["String Processing Languages and Generalized Markov
	Algorithms", A. C. Forino, Proc IFIP Working Conf on Symb
	Manip Languages, pp.141-206, Amsterdam 1968].

PANS

	{Pretty Amazing New Stuff}.

Pansophic

	A US Software Engineering company.

Pantone

	<graphics> A set of standard colours for printing, each of
	which is specified by a single number.  You can buy a Pantone
	swatch book containing samples of each colour.  Some computer
	graphics software allows colours to be specified as Pantone
	numbers.  Even though a computer {monitor} can only show an
	approximation to some of the colours, the software can output
	a {colour separation} for each different Pantone colour,
	enabling a print shop to exactly reproduce the original
	desired colour.

	(23 Mar 1996)

PAP

	<networking> {Password Authentication Protocol}.

	(23 Mar 1996)

Paper Feed Control Character

	(PFCC) An obscure mechanism used in Fortran run-time systems
	whereby the first character of a line of output to a
	line-printer caused various actions after the line was
	printed:

		space	return newline
		0	return newline return newline
		1	form-feed
		+	return

paper-net

	Hackish way of referring to the postal service, comparing it
	to a very slow, low-reliability network.  {Usenet} {sig
	block}s sometimes include a "Paper-Net:" header just before
	the sender's postal address; common variants of this are
	"Papernet" and "P-Net".  Note that the standard {netiquette}
	guidelines discourage this practice as a waste of bandwidth,
	since netters are quite unlikely to casually use postal
	addresses and if they really wanted your {snail mail} address
	they could always ask for it by e-mail.  Compare {voice-net},
	{P-mail}.

PARADE

	PARallel Applicative Database Engine.  A project at Glasgow
	University to construct a transaction-processor in the
	parallel {functional programming} language {Haskell} to run on
	an {ICL} {EDS+} database machine.

PARADIGM PLUS

	A configurable {object-oriented} {CASE} tool from {Proto
	Soft}.

Paradigms of AI Programming

	A book by Peter Norvig with {Scheme} and {Prolog}
	{interpreter}s and {compiler}s in {Common Lisp}.

	{(ftp://Unix.sri.com/pub/norvig/)}

	["Paradigms of AI Programming", Peter Norvig].

Paradise

	Paradise is a subsystem (a set of packages) developed to
	implement inter-processes, inter-tasks and inter-machine
	communication for {Ada} programs under {Unix}. This subsystem
	gives the user full access to files, {pipe}s, {socket}s (both
	Unix and {Internet}) and {pseudo-device}s.

	Paradise has been ported to {Sun}, {DEC}, {Sony MIPS},
	{Verdex} compiler, DEC compiler, {Alsys}/{Systeam} compiler.

	{Version 2.0 of the library
	(ftp://cnam.cnam.fr/pub/Ada/Paradise)}.  E-mail:
	<paradise-info@cnam.cnam.fr>.

	(30 Sep 1992)

Paradox

	<database> {Borland}'s {IBM PC} {relational database}.

	Paradox 7 runs under {Windows 95} and {Windows NT}.  Paradox 5
	runs on {Microsoft Windows} and provides a graphical
	environment, a debugger, a {data modeling} tool, and many
	"ObjectPAL" commands.

	{(http://www.borland.com/Product/ProdInfo.html)}.

	(27 May 1996)

paradox

	<logic> An apparently sound argument leading to a
	{contradiction}.

	Some famous examples are {Russell's paradox} and the {liar
	paradox}.  Most paradoxes stem from some kind of
	{self-reference}.

	(17 Mar 1995)

Paradox Application Language

	(PAL) The programming language for {Paradox}, {Borland}'s
	{relational database}.

	(26 Jan 1995)

Paragon

	Mark Sherman.  IEEE Software (Nov 1991).

Paralation

	PARALlel reLATION.  Sabot, MIT 1987.  A framework for parallel
	programming.  A "field" is an array of objects, placed at
	different sites.  A paralation is a group of fields, defining
	nearness between field elements.  Operations can be performed
	in parallel on every site of a paralation.

	["The Paralation Model: Architecture Independent Programming",
	G.W. Sabot <gary@think.com>, MIT Press 1988].

Paralation C

	Paralation embedded in C.  Under development.

Paralation LISP

	Embeds the paralation model in Common LISP.  Available
	from MIT Press, (800)356-0343.

ParAlfl

	Hudak, Yale.  Parallel functional language, a superset of
	Alfl.  Used by the Alfalfa system on Intel iPSC and Encore
	Multimax.

	["Para-Functional Programming", P. Hudak, Computer 19(8):60-70
	(Aug 1986)].

	["Alfalfa: Distributed Graph Reduction on a Hypercube
	Multiprocessor", B.  Goldberg & P. Hudak, TR, Yale U, Nov
	1986].

Parallaxis

	A {procedural} programming language by Thomas Braunl
	<braunl@informatik.uni-stuttgart.de> of the {University of
	Stuttgart}.  It is based on {Modula-2}, but extended for {data
	parallel} ({SIMD}) programming.  The main approach for machine
	independent parallel programming is to include a description
	of the virtual parallel machine with each parallel
	{algorithm}.

	There is a simulator and {X Window System}-based profiler for
	{workstation}s, {Macintosh} and {IBM PC}.

	Version 2.0 runs on {MP-1}, {CM-2}, {Sun-3}, {Sun-4},
	{DECstation}, {HP 700}, {RS/6000}.

	{(ftp://ftp.informatik.uni-stuttgart.de/pub/parallaxis)}

	["User Manual for Parallaxis Version 2.0", T. Braunl, U
	Stuttgart].

	(23 Oct 1992)

Parallel C

	1. Never implemented, but influenced the design of {C*}.

	2. {C} for the {transputer} by {3L}.

	3. (PC) Extensions to {C} developed at the {University of
	Houston} providing a {shared memory} {SIMD} model on {message
	passing} computers.

	{(ftp://karazm.math.uh.edu/pub/Parallel/Tools/pc.1.1.1.tar.Z)}

	E-mail: Ridgway Scott <scott@uh.edu>.

	(21 Mar 1995)

parallel computer

	{parallel processor}

parallel computing

	{parallel processing}

Parallel FORTH

	{Forth} For the {MPP}.

Parallel Haskell

	<language, parallel> (pH) A parallel variant of {Haskell}
	incorporating ideas from {Id} and {Sisal}.  pH is under
	development.

	Mailing list: pH@abp.lcs.mit.edu.

	(31 Mar 1995)

parallelism

	1. {parallel processing}.

	2. <parallel> The maximum number of independant subtasks in a
	given task at a given point in its execution.  E.g. in
	computing the expression

		(a + b) *

	(c + d) the expressions a, b, c and d can all be calculated in
	parallel giving a degree of parallelism of (at least) four.
	Once they have been evaluated then the expressions a + b and c
	+ d can be calculated as two independent parallel processes.

	The {Bernstein condition} states that processes P and Q can be
	executed in parallel (or in either sequential order) only if:

	(i) there is no overlap between the inputs of P and the
	outputs of Q and vice versa and

	(ii) there is no overlap between the outputs of P, the outputs
	of Q and the inputs of any other task.

	If process P outputs value v which process Q reads then P must
	be executed before Q.  If both processes write to some
	variable then its final value will depend on their execution
	order so they cannot be executed in parallel if any other
	process depends on that variable's value.

	(07 May 1995)

Parallel Pascal

	<language> A {data-parallel} language, similar to {Actus} and
	{Glypnir}.

	["Parallel Pascal: An Extended Pascal for Parallel Computers",
	A. Reeves, J Parallel Dist Computing 1:64-80 (1984)].

	(07 May 1995)

parallel port

	<hardware> An interface from a computer system where data is
	transferred in or out in parallel, that is, on more than one
	wire.  A parallel port carries one {bit} on each wire thus
	multiplying the transfer rate obtainable over a single wire.
	There will usually be some control signals on the port as well
	to say when data is ready to be sent or received.

	The commonest kind of parallel port is a {printer port}, e.g. a
	{Centronics} port which transfers eight bits at a time.  Disks
	are also connected via special parallel ports, e.g. {SCSI} or
	{IDE}.

	(24 Jan 1995)

parallel processing

	<parallel> The simultaneous use of more than one computer to
	solve a problem.  There are many different kinds of parallel
	computer (or "parallel processor").  They are distinguished by
	the kind of interconnection between processors (known as
	"processing elements" or PEs) and between processors and
	memory.  {Flynn's taxonomy} also classifies parallel (and
	serial) computers according to whether all processors execute
	the same instructions at the same time ("{single
	instruction/multiple data}" - SIMD) or each processor executes
	different instructions ("{multiple instruction/multiple data}"
	- MIMD).

	The processors may either communicate in order to be able to
	cooperate in solving a problem or they may run completely
	independently, possibly under the control of another processor
	which distributes work to the others and collects results from
	them (a "{processor farm}").  The difficulty of cooperative
	problem solving is aptly demonstrated by the following dubious
	reasoning:

		If it takes one man one minute to dig a post-hole
		then sixty men can dig it in one second.

	{Amdahl's Law} states this more formally.

	Processors communicate via some kind of network or bus or a
	combination of both.  Memory may be either {shared memory}
	(all processors have equal access to all memory) or private
	(each processor has its own memory - "{distributed memory}")
	or a combination of both.

	A huge number of software systems have been designed for
	programming parallel computers, both at the {operating system}
	and programming language level.  These systems must provide
	mechanisms for partitioning the overall problem into separate
	tasks and allocating tasks to processors.  Such mechanisms may
	provide either {implicit parallelism} - the system (the
	{compiler} or some other program) partitions the problem and
	allocates tasks to processors automatically or {explicit
	parallelism} where the programmer must annotate his program to
	show how it is to be partitioned.  It is also usual to provide
	synchronisation primitives such as {semaphore}s and {monitor}s
	to allow processes to share resources without conflict.

	{Load balancing} attempts to keep all processors busy by
	moving tasks from heavily loaded processors to less loaded
	ones.

	Communication between tasks may be either via {shared memory}
	or {message passing}.  Either may be implemented in terms of
	the other and in fact, at the lowest level, shared memory uses
	message passing since the address and data signals which flow
	between processor and memory may be considered as messages.

	See also {cellular automaton}.

	{Usenet} newsgroup: {news:comp.parallel}.

	{Institutions (http://www.ccsf.caltech.edu/other_sites.html)},
	{research groups
	(http://www.cs.cmu.edu/~scandal/research-groups.html)}.

	(23 Apr 1996)

parallel processor

	<parallel> A computer with more than one {central processing
	unit}, used for {parallel processing}.

	(23 Apr 1996)

parallel random access machine

	<parallel> (PRAM) An idealised {parallel processor} consisting
	of P processors, unbounded {shared memory}, and a common
	{clock}.  Each processor is a random access machine (RAM)
	consisting of R {registers}, a {program counter}, and a
	read-only signature register.  Each RAM has an identical
	program, but the RAMs can branch to different parts of the
	program.  The RAMs execute the program synchronously one
	instruction in one clock cycle.

	See also {pm2}.

	(04 Jun 1997)

parallel reduction

	A form of {applicative order reduction} in which all {redex}es
	in an expression are reduced simultaneously.  Variants include
	{parallel outermost reduction} and {lenient reduction}.  See
	{normal order reduction}.

Parallel SML

	["Parallel SML: A Functional Language and its Implementation
	in Dactl", Kevin Hammond, Pitman Press 1990].

Parallel Sysplex

	<operating system> A {Sysplex} that uses one or more {coupling
	facilities}.

	{Home (http://www.s390.ibm.com/products/pso/psohp.html)}.

	(21 Nov 1996)

Parallel Virtual Machine

	<parallel, networking, tool> (PVM) 1. A {software} system
	designed to allow a network of {heterogeneous} machines to be
	used as a single {distributed} {parallel processor}.

	PVM was developed by the {University of Tennessee}, The {Oak
	Ridge National Laboratory} and the {Emory University}.

	{Home (http://www.epm.ornl.gov/pvm/)}.

	{Usenet} newsgroup: {news:comp.parallel.pvm}.

	2. The {intermediate language} used by the {Gambit} compiler for
	{Scheme}.

	[And Multilisp?]

	(30 Jan 1995)

param

	{argument}

parameter

	{argument}

parameter RAM

	(PRAM) A small memory in a {Macintosh} with a battery power
	supply which stores system parameters (desktop pattern,
	selectable memory configuration, etc.) when the computer is
	turned off.

	(08 Oct 1995)

parametric polymorphism

	See {polymorphism}.

paraML

	An extension of {Standard ML} which supports {coarse-grained
	parallelism}.  Peter Bailey, while at the Edinburgh Parallel
	Computing Centre at {University of Edinburgh}, has implemented of
	Murray Cole's original four {skeleton}s in paraML.

	See also {Skel-ML}.

paranoid programming

	<programming> Programming style that tries to prepare for the
	worst external conditions, including incorrect input, resource
	limitations, hardware and software failure and even {can't
	happen} errors to the fullest possible extent.  The expression
	usually has the connotation that the efforts are unnecessary
	or too costly ("Maybe this code is just paranoid programming,
	but I think it is necessary to avoid a possible overflow
	condition".)

	(27 Feb 1997)

ParaSoft Corp

	Distributors of the {message passing} system {Express}.

	{(ftp://ftp.parasoft.com/)}.  Telephone: +1 (818) 792-9941.
	E-mail: <support@parasoft.com>.

	(19 Oct 1994)

Parasol

	Parallel Systems Object Language.

	An {object-oriented} language which supports network and
	parallel computing.  It has {module}s and {exception}s.

	["The Parasol Programming Language", R. Jervis
	<hjervis!rbj@uunet.uu.net>, Dr Dobbs J, Oct 1993, pp. 34-41].

	(26 Jan 1995)

PARC

	{XEROX PARC}

parentheses

	See {left parenthesis}, {right parenthesis}.

	(03 Dec 1997)

parent message

	<messaging> What a {followup} follows up.

	(03 Dec 1997)

parent process

	<operating system> The {Unix} {process} that created one or
	more other processes.

	Every process except process 0 is created when another process
	executes the {fork} {system call}.  The process that invoked
	fork is the parent process, and the newly created process is
	the {child process}.  Every process has one parent process,
	but can have many child processes.

	The {kernel} identifies each process by its {process
	identifier} (PID).  Process 0 is a special process that is
	created when the system boots; after forking a child process
	(process 1), process 0 becomes the {swapper} process.  Process
	1, known as {init}, is the ancestor of every other process in
	the system and enjoys a special relationship with them.

	(03 Dec 1997)

Pari

	<mathematics, tool> A system for {symbolic mathematics},
	especially {number theory}.

	Version 1.37 for {Unix}, {Macintosh}, {MS-DOS}, {Amiga}.

	E-mail: <pari@alioth.greco-prog.fr>.

	{(ftp://math.ucla.edu/pub/pari)}

	(12 Apr 1995)

Paris

	PARallel Instruction Set.

	A low-level language for the {Connection Machine}.

	(16 Feb 1995)

parity

	<storage, communications> An extra bit added to a {byte} or
	{word} to reveal errors in storage (in {RAM} or {disk}) or
	transmission.  Even (odd) parity means that the parity bit is
	set so that there are an even (odd) number of one bits in the
	word, including the parity bit.  A single parity bit can only
	reveal single bit errors since if an even number of bits are
	wrong then the parity bit will not change.  Moreover, it is
	not possible to tell which bit is wrong, as it is with more
	sophisticated {error detection and correction} systems.

	See also {longditudinal parity}, {checksum}, {cyclic
	redundancy check}.

	(01 Mar 1996)

parity bit

	<storage, communications> An extra bit added to a {byte} or
	{word} to reveal errors.

	See {parity}.

	(01 Mar 1996)

parity error

	<storage, communications> An error discovered by the inclusion
	of a {parity} bit.

	(01 Mar 1996)

Parkinson's Law of Data

	"Data expands to fill the space available for storage"; buying
	more memory encourages the use of more memory-intensive
	techniques.  It has been observed over the last 10 years that
	the memory usage of evolving systems tends to double roughly
	once every 18 months.  Fortunately, memory density available
	for constant dollars also tends to double about once every 12
	months (see {Moore's Law}); unfortunately, the laws of physics
	guarantee that the latter cannot continue indefinitely.

Park-Miller

	A {pseudo-random} number generation {algorithm} which was
	discredited by Marsaglia and Steve Sullivanin in the July 1993
	CACM.

	[CACM Oct 1988].

Parlance

	A {concurrent} language.

	["Parallel Processing Structures: Languages, Schedules, and
	Performance Results", P.F. Reynolds, PhD Thesis, UT Austin
	1979].

	(12 Dec 1994)

Parlog

	Clark & Gregory, Imperial College 1983.  An {AND-parallel}
	{Prolog}, with {guards} and {committed choice nondeterminism}
	({don't care nondeterminism}).  {Shallow backtracking} only.

	Implementations: MacParlog and PC-Parlog from Parallel Logic
	Programming Ltd., Box 49 Twickenham TW2 5PH, UK.

	See also {SPM}.

	{(ftp://ftp.inria.fr/lang/Parlog.tar.Z)}.  E-mail:
	<parlog@doc.ic.ac.uk>.

	["Parlog: A Parallel Logic Programming Language", K.L. Clark
	and S. Gregory, Imperial College, London, May 1983].
	("Parlog83", in which the ouput mechanism was assignment).

	["Parallel Logic Programming in PARLOG, The Language and Its
	Implementation", S. Gregory, A-W 1987].  ("Parlog86", in which
	the output mechanism was unification, as in {GHC}).  (See
	{Strand}).

Parlog++

	An object-oriented extension to MacParlog.  It combines
	object-oriented and parallel logic programming, giving the
	benefits of both paradigms within a single coherent
	development environment.

	Andrew Davison <ad@cs.mu.oz.au>, then Imperial College now U
	Melbourne.  Object orientation plus parallel logic, built on
	top of MacParlog.

	"Parlog++: A Parlog Object-Oriented Language", A. Davison,
	Parlog Group, Imperial College 1988.  Sold by PLP Ltd.
	E-mail: <parlog@doc.ic.ac.uk>.

parm

	/parm/ Further-compressed form of {param}.  This term is an
	{IBM}ism, and written use is almost unknown outside IBM shops;
	spoken /parm/ is more widely distributed, but the synonym
	{arg} is favoured among hackers.  Compare {var}.

PARMACS

	The "Argonne macros" from {Argonne National Laboratory}.  A
	package of {macro}s written in {m4} for portable {parallel
	programming}, using {monitor}s on {shared memory} machines,
	and {message passing} on {distributed memory} machines.

	[E. Lusk et al, "Portable Programs for Parallel Processors",
	HRW 1987. p4].

	{(ftp://research.att.com/netlib/parmacs)}

ParMod

	"Parallel Programming with ParMod", S. Eichholz, Proc 1987
	Intl Conf on Parallel Proc, pp.377-380.

PARSEC

	Extensible language with PL/I-like syntax, derived from
	PROTEUS.  "PARSEC User's Manual", Bolt Beranek & Newman (Dec
	1972).

parser

	<language> An {algorithm} or program to determine the
	syntactic structure of a sentence or string of symbols in some
	language.  A parser normally takes as input a sequence of
	{tokens} output by a {lexical analyser}.  It may produce some
	kind of {abstract syntax tree} as output.  One of the best
	known {parser generators} is {yacc}.

	(21 Jul 1997)

parser generator

	A program which takes a formal description of a {grammar}
	(e.g. in {BNF}) and outputs source code for a parser which will
	recognise valid strings obeying that grammar and perform
	associated actions.  {Unix}'s {yacc} is a well known example.

parsing

	{parser}

Parsley

	A {Pascal} extension for construction of {parse tree}s, by
	Barber of {Summit Software}.  It features {Iterator}s.

	["PARSLEY: A New Compiler-Compiler", in Software Development
	Tools, Techniques and Alternatives, Arlington VA, Jul 1983,
	pp.232-241].

	(22 Feb 1995)

Partial Differential Equation LANguage

	(PDELAN)

	["An Extension of FORTRAN Containing Finite Difference
	Operators", J. Gary et al, Soft Prac & Exp 2(4) (Oct 1972)].

partial equivalence relation

	(PER) A relation R on a set S where R is symmetric (x R y => y
	R x) and transitive (x R y R z => x R z) and where there may
	exist elements in S for which the relation is not defined.  A
	PER is an equivalence relation on the subset for which it is
	defined, i.e. it is also reflexive (x R x).

partial evaluation

	Also known as specialisation.  An optimisation technique where
	the compiler evaluates some subexpressions at compile-time.
	E.g.

		pow x 0 = 1
		pow x n = if even n
			  then pxn2 * pxn2
			  else x * pow x (n-1)
				where pxn2 = pow x (n/2)
		f x = pow x 5

	Since n is known we can specialise pow in its second argument
	and unfold the recursive calls:

		pow5 x = x * x4 where x4 = x2 * x2
				      x2 = x * x
		f x = pow5 x

	pow5 is known as the residual.  We could now also unfold pow5
	giving:

		f x = x * x4 where x4 = x2 * x2
				   x2 = x  * x

	It is important that the partial evaluation algorithm should
	terminate.  This is not guaranteed in the presence of
	recursive function definitions.  For example, if partial
	evaluation were applied to the right hand side of the second
	clause for pow above, it would never terminate because the
	value of n is not known.

	Partial evaluation might change the termination properties of
	the program if, for example, the expression (x * 0) was
	reduced to 0 it would terminate even if x (and thus x * 0) did
	not.

	It may be necessary to reorder an expression to partially
	evaluate it, e.g.

		f x y = (x + y) + 1
		g z = f 3 z

	If we rewrite f:

		f x y = (x + 1) + y

	then the expression x+1 becomes a constant for the function g
	and we can say

		g z = f 3 z = (3 + 1) + z = 4 + z

	Partial evaluation of built-in functions applied to constant
	arguments is known as Constant folding.  See also Full
	laziness.

partial function

	A function which is not defined for all arguments of its input
	type.  E.g.

		f(x) = 1/x if x /= 0.

	The opposite of a {total function}.  In {denotational
	semantics}, a partial function

		f : D -> C

	may be represented as a total function

		ft : D' -> lift(C)

	where D' is a superset of D and

		ft x = f x	if x in D
		ft x = bottom	otherwise

	where lift(C) = C U {bottom}.  Bottom ({LaTeX} {\perp})
	denotes "undefined".

	(03 Feb 1995)

partial key

	<database> A {key} which identifies a subset of a set of
	information items (e.g. database "{records}"), and which could
	narrow the subset to one item if other partial key(s) were
	combined with it.

	(26 Apr 1997)

partially ordered set

	A {set} with a {partial ordering}.

partial ordering

	A {relation} R is a partial ordering if it is a {pre-order}
	(i.e. it is {reflexive} (x R x) and {transitive} (x R y R z =>
	x R z)) and it is also {antisymmetric} (x R y R x => x = y).
	The ordering is partial, rather than total, because there may
	exist elements x and y for which neither x R y nor y R x.

	In {domain theory}, if D is a set of values including the
	undefined value ({bottom}) then we can define a partial
	ordering relation <= on D by

		x <= y  if  x = bottom or x = y.

	The constructed set D x D contains the very undefined element,
	(bottom, bottom) and the not so undefined elements, (x,
	bottom) and (bottom, x).  The partial ordering on D x D is
	then

		(x1,y1) <= (x2,y2)  if  x1 <= x2 and y1 <= y2.

	The partial ordering on D -> D is defined by

		f <= g  if  f(x) <= g(x)  for all x in D.

	(No f x is more defined than g x.)

	A {lattice} is a partial ordering where all finite subsets
	have a {least upper bound} and a {greatest lower bound}.

	("<=" is written in {LaTeX} as {\sqsubseteq}).

	(03 Feb 1995)

Partial Response Maximum Likelihood

	<storage> (PRML) A method for converting the weak {analog}
	signal from the head of a {magnetic disk} drive into a digital
	signal.  PRML attempts to correctly interpret even small
	changes in the analog signal, whereas {peak detection} relies
	on fixed thresholds.  Because PRML can correctly decode a
	weaker signal it allows higher density recording.

	For example, PRML would read the magnetic flux density pattern
	70, 60, 55, 60, 70 as binary "101", and the same for 45, 40,
	30, 40, 45.  A peak detector would decode everything above,
	say, 50 as high, and below 50 as low, so the first pattern
	would read "111" and the second as "000".

	(27 Dec 1996)

partition

	1. <storage> A {logical} section of a {disk}.  Each partition
	normally has its own {filesystem}.  {Unix} tends to treat
	partitions as though they were separate physical entities.

	2. <mathematics> A division of a set into subsets so that each
	of its elements is in exactly one subset.

	(09 Dec 1996)

PARTS

	{Digitalk}.  {Visual language} for {OS/2} 2.0.

@-party

	<event> /at'par-tee/ (Or "@-sign party" /at'si:n par'tee/,
	from the {@} sign in an {electronic mail address}) A
	semi-closed party thrown for hackers at a science-fiction
	convention (especially the annual Worldcon); one must have an
	{electronic mail address} to get in, or at least be in company
	with someone who does.  One of the most reliable opportunities
	for hackers to meet {face-to-face} with people who might
	otherwise be represented by mere phosphor dots on their
	screens.

	Compare {boink}.

	(08 May 1996)

PARULEL

	"The PARULEL Parallel Rule Language", S. Stolfo et al, Proc
	1991 Intl Conf Parallel Proc, CRC Press 1991, pp.36-45.

Pascal

	<language> (After the French mathematician {Blaise Pascal}
	(1623-1662)) A programming language designed by {Niklaus
	Wirth} around 1970.  Pascal was designed for simplicity and
	for teaching programming, in reaction to the complexity of
	{ALGOL 68}.  It emphasises {structured programming}
	constructs, data structures and {strong typing}. Innovations
	included {enumeration type}s, {subrange}s, sets, {variant
	record}s and the {case statement}.  Pascal has been extremely
	influential in programming language design and has a great
	number of variants and descendants.

	ANSI/IEEE770X3.97-1993 is very similar to {ISO Pascal} but
	does not include {conformant array}s.

	ISO 7185-1983(E).  Level 0 and Level 1.  Changes from Jensen &
	Wirth's Pascal include name equivalence; names must be bound
	before they are used; loop index must be local to the
	procedure; formal procedure parameters must include their
	arguments; {conformant array schema}s.

	An ALGOL-descended language designed by Niklaus Wirth on the
	CDC 6600 around 1967--68 as an instructional tool for
	elementary programming.  This language, designed primarily to
	keep students from shooting themselves in the foot and thus
	extremely restrictive from a general-purpose-programming point
	of view, was later promoted as a general-purpose tool and, in
	fact, became the ancestor of a large family of languages
	including Modula-2 and {Ada} (see also {bondage-and-discipline
	language}).  The hackish point of view on Pascal was probably
	best summed up by a devastating (and, in its deadpan way,
	screamingly funny) 1981 paper by Brian Kernighan (of {K&R}
	fame) entitled "Why Pascal is Not My Favourite Programming
	Language", which was turned down by the technical journals but
	circulated widely via photocopies.  It was eventually
	published in "Comparing and Assessing Programming Languages",
	edited by Alan Feuer and Narain Gehani (Prentice-Hall, 1984).
	Part of his discussion is worth repeating here, because its
	criticisms are still apposite to Pascal itself after ten years
	of improvement and could also stand as an indictment of many
	other bondage-and-discipline languages.  At the end of a
	summary of the case against Pascal, Kernighan wrote:

	9. There is no escape

	This last point is perhaps the most important.  The language
	is inadequate but circumscribed, because there is no way to
	escape its limitations.  There are no casts to disable the
	type-checking when necessary.  There is no way to replace the
	defective run-time environment with a sensible one, unless one
	controls the compiler that defines the "standard procedures".
	The language is closed.

	People who use Pascal for serious programming fall into a
	fatal trap.  Because the language is impotent, it must be
	extended.  But each group extends Pascal in its own direction,
	to make it look like whatever language they really want.
	Extensions for separate compilation, FORTRAN-like COMMON,
	string data types, internal static variables, initialisation,
	{octal} numbers, bit operators, etc., all add to the utility
	of the language for one group but destroy its portability to
	others.

	I feel that it is a mistake to use Pascal for anything much
	beyond its original target.  In its pure form, Pascal is a toy
	language, suitable for teaching but not for real programming.

	Pascal has since been almost entirely displaced (by {C}) from
	the niches it had acquired in serious applications and systems
	programming, but retains some popularity as a hobbyist
	language in the {MS-DOS} and {Macintosh} worlds.

	See also {Kamin's interpreters}, {p2c}.

	["The Programming Language Pascal", N. Wirth, Acta Informatica
	1:35-63, 1971].

	["PASCAL User Manual and Report", K. Jensen & N. Wirth,
	Springer 1975] made significant revisions to the language.

	[BS 6192, "Specification for Computer Programming Language
	Pascal", {British Standards Institute} 1982].

	(12 Jun 1996)

Pascal-

	Pascal subset used in Brinch Hansen on Pascal Compilers, P.
	Brinch Hansen, P-H 1985.

Pascal-80

	A successor of Platon.  Developed at RC International for
	systems programming.  Later it was renamed Real-Time Pascal.
	"PASCAL80 Report", J. Staunstrup, RC Intl, Denmark Jan 1980.

Pascal+CSP

	"Pascal+CSP, Merging Pascal and CSP in a Parallel Processing
	Oriented Language", J. Adamo, Proc 3rd Intl Conf Distrib Comp
	Sys, IEEE 1982, pp.542-547.

Pascal-F

	Pascal extended to include fixed-point arithmetic.  E. Nelson,
	"Pascal-F: Programming Language for Real-Time Automotive
	Control", IEEE ElectroTechnol. Rev. (USA), 2:39, 1968.

Pascal-FC

	A {Pascal} derived from {Pascal-S} which provides several
	types of {concurrency}: {semaphore}s, {monitors}, both
	{occam}/{CSP}-style and {Ada}-style {rendezvous}.

	["The Teaching Language Pascal-FC", G.L. Davies et al,
	Computer J 33(2):147-154 (Apr 1990)].

	(02 Nov 1994)

Pascal/L

	A {SIMD} parallel extension of {Pascal}.

	["Implementation of an Array and Vector Processing Language",
	C. Fernstrom, Intl Conf Parallel Proc, IEEE, pp.113-127
	(1982)].

	(02 Nov 1994)

Pascal-Linda

	Ian Flockhart, U Edinburgh, 1991.  Under development.

Pascal-m

	["Pascal-m: A Language for Loosely Coupled Distributed
	Systems", S. Abramsky et al in Distributed Computing Systems,
	Y. Paker et al eds, Academic Press 1986, pp. 163-189].

	(02 Nov 1994)

Pascal-P

	The variant of {Pascal} used by the {UCSD} {p-system}
	environment.  It has extended string and {array} operations,
	{random access file}s and {separate compilation}.  It uses
	{P-code} intermediate code and is available from {Pecan}.

	(02 Nov 1994)

Pascal P4

	compiler and interpreter

	Version ? 1

	compiler, assembler/interpreter, documentation

	Urs Ammann, Kesav Nori, Christian Jacobi

	{(ftp://ftp.cwi.nl/pascal/)}

	A compiler for Pascal written in Pascal, producing an
	intermediate code, with an assembler and interpreter for the
	code.

	reference: Pascal Implementation, by Steven Pemberton and
	Martin Daniels, published by Ellis Horwood, Chichester, UK (an
	imprint of Prentice Hall), ISBN: 0-13-653-0311.  Also
	available in Japanese.

	E-mail: <Steven.Pemberton@cwi.nl>.

	(1993/07/05)

Pascal Plus

	<language> {Pascal} with extensions for {object-oriented}
	{multiprogramming} by Jim Welsh and D. Bustard of {Queens
	University, Belfast}, UK.  Pascal Plus uses an "envelope"
	construct for both {packages} and {classes}.

	["Pascal Plus - Another Language for Modular
	Multiprogramming", J. Welsh et al, Soft Prac & Exp 9:947
	(1979)].

	["Sequential Program Structures", J. Welsh et al, P-H 1984,
	ISBN 0-13806828-3].

	(09 Dec 1997)

Pascal/R

	{Pascal} with {relational database} constructs added.  The
	first successful integrated {database} language.

	["Pascal/R Report", J.W. Schmidt et al, U Hamburg, Fachbereich
	Informatik, Report 66, Jan 1980].

	(19 Oct 1994)

Pascal-S

	Simplified Pascal.  June, 1975.  A strict subset of Pascal,
	omits scalar types, subranges, sets, files, pointers, packed
	structures, 'with' and 'goto.  Source for a complete Pascal-S
	compiler is in "Pascal-S: A Subset and Its Implementation",
	N. Wirth in Pascal - The Language and Its Implementation, by
	D.W. Barron, Wiley 1979.

	{(ftp://csseq.cs.tamu.edu/mcguire/pascal-s)}

Pascal-SC

	ESPRIT DIAMOND Project.  An extension of Pascal for numerical
	analysis, with controlled rounding, overloading, dynamic
	arrays and modules.  "PASCAL-SC, A Computer Language for
	Scientific Computation", G.  Bohlender et al, Academic Press
	1987.

pasos2

	version:    Alpha

	parts:	            Compiler, run-time library

	author:             Willem Jan Withagen <wjw@eb.ele.tue.nl>

	how to get:         {(ftp://ftp.eb.ele.tue.nl/pub/src/pascal/pasos2*)}

	A PASCAL/i386 compiler which generates code for OS/2 and
	DOS. It uses EMX as DOS extender and GNU/GAS, MASM or TASM as
	assembler.

	1993/12/17

Pasqual

	["Pasqual: A Proposed Generalization of Pascal", R.D. Tennent,
	TR75-32, Queen's U, Canada, 1975].

PASRO

	{PAScal} for RObots.

	["PASRO - Pascal for Robots", C. Blume et al, Springer 1985].

PASSIM

	A {simulation} language based on {Pascal}.

	["PASSIM: A Discrete-Event Simulation Package for Pascal", D.H
	Uyeno et al, Simulation 35(6):183-190 (Dec 1980)].

passive matrix display

	<hardware> A type of {liquid crystal display} which relies on
	{persistence} to maintain the state of each display element
	({pixel}) between refresh scans.  The {resolution} of such
	displays is limited by the ratio between the time to set a
	pixel and the time it takes to fade.

	Contrast {active matrix display}.

	(09 Dec 1995)

passphrase

	<operating system> A string of words and characters that you
	type in to authenticate yourself.  Passphrases differ from
	passwords only in length.  Passwords are usually short - six
	to ten characters.  Passphrases are usually much longer - up
	to 100 characters or more.  Their greater length makes
	passphrases more secure.  Modern passphrases were invented by
	Sigmund N. Porter in 1982.

	Phil Zimmermann's popular encryption program {PGP}, for
	example, requires you to make up a passphrase that you then
	must enter whenever you sign or decrypt messages.

	{(http://world.std.com/~reinhold/diceware.page.html)}.

	(21 Dec 1996)

password

	An arbitrary string of characters chosen by a user or {system
	administrator} and used to authenticate the user when he
	attempts to log on in order to prevent unauthorised access to
	his account.

	A favourite activity among unimaginative {computer nerd}s and
	{cracker}s is writing programs which attempt to discover
	passwords by using lists of commonly chosen passwords such as
	people's names (spelled forwards or backwards).  It is
	recommended that to defeat such methods passwords use a
	mixture of upper and lower case letters or digits and avoid
	proper names and real words.  If you have trouble remembering
	random strings of characters, make up an acronym like
	"ihGr8trmP" ("I have great trouble remembering my password").

	(27 Oct 1994)

Password Authentication Protocol

	<networking> (PAP) An {authentication} scheme used by {PPP}
	servers to validate the identity of the originator of the
	connection.

	PAP applies a two-way {handshaking} procedure.  After the link
	is established the originator sends an id-password pair to the
	server.  If authentication succeeds the server sends back an
	acknowledgement; otherwise it either terminates the connection
	or gives the originator another chance.

	PAP is not a strong authentication method.  Passwords are sent
	over the circuit "in the clear" and there is no protection
	against playback or repeated "trial and error" attacks.  The
	originator is in total control of the frequency and timing of
	the attempts.  Therefore, any server that can use a stronger
	authentication method, such as {CHAP}, will offer to negotiate
	that method prior to PAP.  The use of PAP is appropriate,
	however, if a {plaintext} password must be available to
	simulate a login at a remote host.

	PAP is defined in {RFC} 1334.

	(23 Mar 1996)

pastie

	/pay'stee/ An adhesive label designed to be attached to a key
	on a keyboard to indicate some non-standard character which
	can be accessed through that key.  Pasties are likely to be
	used in APL environments, where almost every key is associated
	with a special character.  A pastie on the R key, for example,
	might remind the user that it is used to generate the rho
	character.  The term properly refers to nipple-concealing
	devices formerly worn by strippers in concession to
	indecent-exposure laws; compare {tits on a keyboard}.

PAT

	1. Personalized Array Translator.  Small subset of APL.
	Sammet 1969, p.252.

	2.  E-mail: <oed@watsol.uwaterloo.ca>.

patch

	1. A temporary addition to a piece of code, usually as a
	{quick-and-dirty} remedy to an existing bug or misfeature.  A
	patch may or may not work, and may or may not eventually be
	incorporated permanently into the program.  Distinguished from
	a {diff} or {mod} by the fact that a patch is generated by
	more primitive means than the rest of the program; the
	classical examples are instructions modified by using the
	front panel switches, and changes made directly to the binary
	executable of a program originally written in an {HLL}.
	Compare {one-line fix}.

	2. To insert a patch into a piece of code.

	3. [in the Unix world] A {diff}.

	4. A set of modifications to binaries to be applied by a
	patching program.  IBM operating systems often receive updates
	to the operating system in the form of absolute {hexadecimal}
	patches.  If you have modified your OS, you have to
	disassemble these back to the source.  The patches might later
	be corrected by other patches on top of them (patches were
	said to "grow scar tissue").  The result was often a
	convoluted {patch space} and headaches galore.

	There is a classic story of a {tiger team} penetrating a
	secure military computer that illustrates the danger inherent
	in binary patches (or, indeed, any patches that you can't - or
	don't - inspect and examine before installing).  They couldn't
	find any {trap door}s or any way to penetrate security of
	IBM's OS, so they made a site visit to an IBM office
	(remember, these were official military types who were
	purportedly on official business), swiped some IBM stationery,
	and created a fake patch.  The patch was actually the trapdoor
	they needed.  The patch was distributed at about the right
	time for an IBM patch, had official stationery and all
	accompanying documentation, and was dutifully installed.  The
	installation manager very shortly thereafter learned something
	about proper procedures.

	5. {Larry Wall}'s "patch" utility, which automatically applies
	a patch to a set of {source code} or other text files.  It
	accepts input in any of the four forms output by the {Unix}
	{diff} utility and uses many helpful {heuristics} to determine
	how to apply them.

	Diff and patch are the standard way of producing and applying
	updates to {Unix} files ditributed via {Usenet} and the
	{Internet}, both have been ported to other {operating
	systems}.

	{GNU version (http://src.doc.ic.ac.uk/gnu/patch-2.1.tar.gz)}.

	(04 Jun 1996)

patch space

	An unused block of bits left in a binary so that it can later
	be modified by insertion of machine-language instructions
	there (typically, the patch space is modified to contain new
	code, and the superseded code is patched to contain a jump or
	call to the patch space).  The widening use of HLLs has made
	this term rare; it is now primarily historical outside {IBM}
	shops.  See {patch}, {zap}, {hook}.

PATCHY

	A {FORTRAN} {code management} program written at {CERN}.

path

	1. <networking> A {bang path} or explicitly routed {Internet
	address}; a node-by-node specification of a link between two
	machines.

	2. <file system> {pathname}.

	3. <operating system>  The list of directories the kernel
	(under {Unix}) or the command interpreter (under {MS-DOS})
	searches for {executables}.  It is stored as part of the
	{environment} in both operating systems.

	Other, similar constructs abound under Unix; the {C}
	{preprocessor}, for example, uses such a search path to locate
	"#include" files.

	(21 Nov 1996)

pathname

	<file system> (Or "path") The specification of a node (file or
	directory) in a {hierarchical file system}.  The path is
	usually specified by listing the nodes top-down, separating
	the directories by the {pathname separator} ("/" in {Unix},
	"\" in {MS-DOS}).

	A pathname may be an {absolute pathname} or a {relative
	pathname}.  The part of the pathname of a file after the last
	separator is called the {basename}.

	(10 Mar 1997)

pathname separator

	<file system> The character used to separate elements of a
	{path} or {pathname}.  Under {Unix} and {POSIX.1} compliant
	systems the pathname separator is the (forward) {slash}, in
	{MS-DOS} {backslash} serves the same purpose.  For obvious
	reasons the no directory or file name can contain this
	character.

	(21 Nov 1996)

pathological

	1. [scientific computation] Used of a data set that is grossly
	atypical of normal expected input, especially one that exposes
	a weakness or bug in whatever algorithm one is using.  An
	algorithm that can be broken by pathological inputs may still
	be useful if such inputs are very unlikely to occur in
	practice.

	2. When used of test input, implies that it was purposefully
	engineered as a worst case.  The implication in both senses is
	that the data is spectacularly ill-conditioned or that someone
	had to explicitly set out to break the algorithm in order to
	come up with such a crazy example.

	3. Also said of an unlikely collection of circumstances.  "If
	the network is down and comes up halfway through the execution
	of that command by root, the system may just crash."  "Yes,
	but that's a pathological case."  Often used to dismiss the
	case from discussion, with the implication that the
	consequences are acceptable, since they will happen so
	infrequently (if at all) that it doesn't seem worth going to
	the extra trouble to handle that case (see sense 1).

Path Pascal

	Parallel extension of Pascal.  Processes have shared access to
	data objects.  Constraints on their synchronisation are
	specified in a path expression.

	["An Overview of Path Pascal's Design", R.H. Campbell, SIGPLAN
	Notices 15(9):13-24 (Sep 1980)].

pathspec

	{pathname}

pattern matching

	1. A function is defined to take arguments of a particular
	type, form or value.  When applying the function to its actual
	arguments it is necessary to match the type, form or value of
	the actual arguments against the formal arguments in some
	definition.  For example, the function

		length []     = 0
		length (x:xs) = 1 + length xs

	uses pattern matching in its argument to distinguish a null
	list from a non-null one.

	There are well known {algorithm} for translating pattern
	matching into conditional expressions such as "if" or "case".
	E.g. the above function could be transformed to

		length l = case l of
			   []   -> 0
			   x:xs -> 1 : length xs

	Pattern matching is usually performed in textual order though
	there are languages which match more specific patterns before
	less specific ones.

	2. Descritive of a type of language or utility such as {awk}
	or {Perl} which is suited to searching for strings or patterns
	in input data, usually using some kind of {regular
	expression}.

	(28 Nov 1994)

pattern recognition

	<artificial intelligence, data processing> A branch of
	{artificial intelligence} concerned with the classification or
	description of observations.

	Pattern recognition aims to classify {data} (patterns) based
	on either a priori knowledge or on statistical information
	extracted from the patterns.  The patterns to be classified
	are usually groups of measurements or observations, defining
	points in an appropriate multidimensional space.

	A complete pattern recognition system consists of a sensor
	that gathers the observations to be classified or described; a
	{feature extraction} mechanism that computes numeric or
	{symbolic} information from the observations; and a
	classification or description scheme that does the actual job
	of classifying or describing observations, relying on the
	extracted features.

	The classification or description scheme is usually based on
	the availability of a set of patterns that have already been
	classified or described.  This set of patterns is termed the
	{training set} and the resulting learning strategy is
	characterised as {supervised}.  Learning can also be
	{unsupervised}, in the sense that the system is not given an a
	priori labelling of patterns, instead it establishes the
	classes itself based on the statistical regularities of the
	patterns.

	The classification or description scheme usually uses one of
	the following approaches: statistical (or {decision
	theoretic}), syntactic (or structural), or neural.
	Statistical pattern recognition is based on statistical
	characterisations of patterns, assuming that the patterns are
	generated by a {probabilistic} system.  Structural pattern
	recognition is based on the structural interrelationships of
	features.  Neural pattern recognition employs the neural
	computing paradigm that has emerged with {neural networks}.

	(22 Sep 1995)

PAW

	<tool> {Physics Analysis Workbench}.

PAW++

	An extended version of PAW with a Motif human interface.

payware

	/pay'weir/  Commercial software.  Opposite: {shareware}
	or {freeware}.

PB Cache

	{Pipeline Burst Cache}

PBD

	{Programmer Brain Damage}

PBEM

	{play by electronic mail}

PBM

	play by mail.  See {play by electronic mail}.

PBX

	{private branch exchange}

PC

	1. <computer> {personal computer}.

	2. <computer> {IBM PC}.

	3. <hardware> {program counter}.

	4. <hardware> {printed circuit}.

	5. <language> {Parallel C}.

pC++

	{Data parallel} extension to {C++}.  {Class}es and {method}s
	for managing distributed collections.

	E-mail: Dennis Gannon <gannon@cs.indiana.edu>.

	["Distributed pC++: Basic Ideas for an Object Parallel
	Language", F. Bodin et al, Proc Supercomput 91, ACM SIGARCH,
	pp. 273-282].

PCA

	A dynamic analyser from {DEC} giving information on run-time
	performance and code use.

P-CAD

	A {CAE} system marketed by {CADAM}, an {IBM} company.

PCB

	1. <hardware> {Power Circuit Breaker}.

	2. <hardware> {Power Control Box}.

	3. <hardware> {Printed Circuit Board}.

	4. {Process Control Block}.

	5. {Product Configuration Baseline}.

	6. {Program Control Block}.

	7. <networking> {Protocol Control Block}.

	({TCP}).

PC Card

	{Personal Computer Memory Card International Association}

PCCTS

	{Purdue Compiler-Construction Tool Set}

PCF

	A simply typed, {functional language}.

	["Fully Abstract Translations Between Functional Languages",
	J. Riecke, 18th POPL, pp. 245-254 (1991)].

	["LCF Considered as a Programming Language", Theor CS 5:223,
	1977].

	(18 Jan 1996)

PCI

	{Peripheral Component Interconnect}

PCI bus

	{Peripheral Component Interconnect}

PCI Mezzanine Card

	<hardware> (PMC) A family of low profile {mezzanine} cards for
	{VMEbus}, {Futurebus+}, desktop computers and other computer
	systems with logical and electrical layers based on the
	{Peripheral Component Interconnect} (PCI) specification.  PMC
	is defined in {IEEE} P1386.1 and follows the {Common Mezzanine
	Card} (CMC) mechanical specification.

	PCI2.0 defines a 4.2 inch by 12.3 inch board that plugs
	perpendicularly into a {mother board}.

	(06 Oct 1994)

PCI slot

	<hardware> A connector on {Peripheral Component Interconnect}
	and the associated physical space occupied by the installed
	PCI card.

	(07 Dec 1997)

PC-ism

	/P-C-izm/ A piece of code or coding technique that takes
	advantage of the unprotected single-tasking environment in
	{IBM PC}s and the like, e.g. by {busy-wait}ing on a {hardware
	register}, direct diddling of {screen memory} or using hard
	timing loops.  Compare {ill-behaved}, {vaxism}, {Unixism}.

PCjr

	{IBM PCjr}

PCL

	1. Printer Control Language.  A {Document description
	language} used by {Hewlett-Packard} {Laserjet} printers, a
	superset of {HP-GL/2}.

	[PCL 5 Printer Language Printer Technical Reference Manual, HP
	33459-90903.  Versions: PCL 3, PCL 5].

	2. {Portable CommonLoops}.

	3. Peripheral Conversion Language.  A {Honeywell} command
	language for {file transfer} between I/O devices on the {CP-V}
	and {CP-6} {operating system}s.

	4. ["PCL - A Process Oriented Job Control Language", V. Lesser
	et al, Proc 1st Intl Conf Distrib Comp Sys, IEEE 1979,
	pp.315-329].

PCLIPS

	Parallel CLIPS - U Lowell.  Concurrent independent CLIPS
	expert systems.  They use 'rassert' (remote assert) to enter
	facts into each other's database.  "PCLIPS: A Distributed
	Expert System Environment", R.  Miller, CLIPS Users Group
	Conf, Aug 1990.  E-mail: <pclips@dragon.ulowell.edu>(?).

PCM

	{Pulse Code Modulation}

PCMCIA

	<body, standard> {Personal Computer Memory Card International
	Association}.  (Or People Can't Memorise Computer Industry
	Acronyms).

PCMIA

	{Personal Computer Manufacturer Interface Adaptor}

PCN

	1. {Program Composition Notation}.

	2. <communications> {Personal Communication Network}.

PC-NFS

	{Personal Computer Network File System}

P-code

	The intermediate code produced by the {Pascal-P} compiler.
	Assembly language for a hypothetical stack machine, the
	P-machine, said to have been an imitation of the instruction
	set for the Burroughs Large System.  The term was first used
	in Algorithms + Data Structures = Programs, N. Wirth, P-H
	1976.  Byte articles on writing a Pascal Compiler in Northstar
	BASIC (ca Aug 1978) also used the term.  Later used in Apple
	Pascal, and as the intermediate language in the UCSD P-system.

	Variants: P2 P-code, P4 P-code, UCSD P-code, LASL P-code.

	Address: USUS, Box 1148, La Jolla, CA 92038, USA.

	["A Comparison of PASCAL Intermediate Languages", P.A. Nelson,
	SIGPLAN Notices 14(8):208-213 (Aug 1979)].

	(15 Oct 1995)

PC Pursuit

	A {TELENET} service which enabled people to dial up {BBS}es in
	other cities for less than normal long-distance rates.  PC
	Pursuit died because TELENET were too mean to upgrade beyond
	2400 bits per second.

	(17 Oct 1994)

PC-RT

	<computer> An incorrect name for the {RT-PC}.

	(06 Apr 1995)

PCS

	1. {Personal Communication Services}.

	2. {PC-Scheme}.

PC-Scheme

	Version 3.03

	compiler, debugger, profiler, editor, libraries

	{(ftp://altdorf.ai.mit.edu/archive/pc-scheme/)}

	Written at {Texas Instruments}.  Runs on {MS-DOS} 286/386 IBM
	PCs and compatibles.  Includes an optimising compiler, an
	emacs-like editor, inspector, debugger, performance testing,
	foreign function interface, window system and an
	object-oriented subsystem.  Also supports the dialect used in
	{Hal Abelson} and {Gerald Sussman}'s {SICP}.

	Conformance: Revised^3 Report, also supports dialect used in
	SICP.

	restriction:	official version is $95, contact <rww@ibuki.com>

	ports:		MS-DOS

	See also {PCS/Geneva}.

	(1992/02/23)

PCS/Geneva

	A cleaned-up version of {Texas Instrument}'s {PC Scheme}
	developed at the {University of Geneva}.  The main extensions
	to PC Scheme are {486} support, {BGI} graphics, {LIM-EMS}
	pagination support, line editing and {assembly code}-level
	interfacing.

	Version 4.02PL1.

	E-mail: <schemege@uni2a.unige.ch>.

	(11 Jan 1994)

PC-TALK III

	<communications, tool> An {MS-DOS} communications program by
	{Andrew Fluegelman}.

	(25 Aug 1997)

PCTE

	{Portable Common Tool Environment}

PCTE+

	A European NATO specification based on {PCTE} with security
	enhancements.

PC-TILES

	<language> A {visual programming language}.

	(25 Aug 1997)

PC-ware

	Pejorative term for software full of {PC-ism}s on a machine
	with a more capable {operating system}.

pcx

	<filename extension> A {filename extension} for {images}
	created with the {IBM PC} {Paintbrush} tool.

	[Format?]

	(10 Dec 1995)

PD

	{public domain}

PDA

	{Personal Digital Assistant}

PDC Prolog

	Prolog Development Centre Prolog.  A {Prolog} evolved from
	{Turbo Prolog} by the original authors.

PDEL

	Partial Differential Equation Language.  A {preprocessor} for
	{PL/I}.

	["PDEL - A Language for Partial Differential Equations",
	A.F. Cardenas, CACM 13(3):184-191 (Mar 1970)].

PDELAN

	{Partial Differential Equation LANguage}

PDES

	{Product Data Exchange using STEP}

PDF

	<file format> {Portable Document Format}.

	(28 Feb 1995)

PDFTeX

	<text, tool> A modification of {TeX} to produce {PDF} output
	instead of the {canonical} {DVI}.

	{(ftp://ftp.tug.org/tex-archive/systems/pdftex/)}.

	(20 Nov 1997)

PDH

	{Plesiochronous Digital Hierarchy}

PDIL

	<language> A language developed at Agence d'Informatique,
	France in the 1970s for description of communication
	{protocol}s.  It was part of the {RHIN} project.

	(28 Feb 1995)

pdksh

	Version 4.9

	interpreter

	Simon J. Gerraty <sjg@zen.void.oz.au>

	comp.sources.misc volume 4

	It is not intended to be the ultimate shell but rather a
	usable ksh work alike.

	conformance:	Almost identical to ksh88, but missing arrays

	E-mail: Simon J Gerraty <sjg@melb.bull.oz.au> (zen.void.oz.au
	is down)

	ports:		Sun, 386bsd, ?

	1993/10/11

PDL

	1. {Page Description Language}.

	2. {Program Design Language}.

	3. {Push Down List}.

	4. Dave Lebling, one of the co-authors of {Zork}.  His
	{network address} on the {ITS} machines was at one time
	<pdl@dms>.

	5. {Propositional Dynamic Logic}.

PDL2

	<language> {Process Design Language 2}.

PDM

	1. {Product Development Management}.

	2. {Product Data Management}.

	(11 Feb 1997)

PDP

	{Programmed Data Processor}

PDP-10

	<computer> Programmed Data Processor model 10.

	The series of {minicomputers} from {DEC} that made
	{time-sharing} real.  It looms large in hacker folklore
	because of its adoption in the mid-1970s by many university
	computing facilities and research labs, including the {MIT}
	{AI Lab}, {Stanford}, and {CMU}.  Some aspects of the
	{instruction set} (most notably the bit-field instructions)
	are still considered unsurpassed.

	The PDP-10 was eventually eclipsed by the {VAX} machines
	(descendants of the {PDP-11}) when DEC recognised that the
	PDP-10 and VAX product lines were competing with each other
	and decided to concentrate its software development effort on
	the more profitable VAX.  The machine was finally dropped from
	DEC's line in 1983, following the failure of the {Jupiter}
	Project at DEC to build a viable new model.  (Some attempts by
	other companies to market clones came to nothing; see {Foonly}
	and {Mars}.)  This event spelled the doom of {ITS} and the
	technical cultures that had spawned the original {Jargon
	File}, but by mid-1991 it had become something of a badge of
	honourable old-timerhood among hackers to have cut one's teeth
	on a PDP-10.

	See {TOPS-10}, {AOS}, {BLT}, {DDT}, {DPB}, {EXCH}, {HAKMEM},
	{JFCL}, {LDB}, {pop}, {push}.

	{news:alt.sys.pdp10}

	[Was the PDP-10 a mini or a mainframe?]

	(21 Dec 1994)

PDP-11

	Programmed Data Processor model 11.

	A series of {minicomputer}s based on an {instruction set}
	designed by C. Gordon Bell at {DEC} in the early 1970s (late
	60s?).  The PDP-11 family, which came after, but was not
	derived from, the {PDP-10}, was the most successful computer
	of its time until it was itself succeeded by the {VAX}.

	Models included the 11/23 and 11/24 (based on the F11
	chipset); 11/44, 11/04, 11/34, 11/05, 11/10, 11/15, 11/20,
	11/35, 11/40, 11/45, 11/70, 11/60 ({MSI} and {SSI}); LSI-11/2
	and LSI-11 (LSI-11 chipset).  In addition there were the 11/8x
	(J11 chipset) and SBC-11/21 (T11 chip) and then there was
	compatibility mode in the early {VAX} processors.

	The {B} and {C} languages were both used initially to
	implement {Unix} on the PDP-11.  The {microprocessor} design
	tradition owes a heavy debt to the PDP-11 {instruction set}.

	See also {SEX}.

	(21 Dec 1994)

PDP-20

	The most famous computer that never was.  {PDP-10} computers
	running the {TOPS-10} operating system were labelled
	"DECsystem-10" as a way of differentiating them from the
	{PDP-11}.  Later on, those systems running {TOPS-20} were
	labelled "DECSYSTEM-20" (the block capitals being the result
	of a lawsuit brought against DEC by Singer, which once made a
	computer called "system-10"), but contrary to popular lore
	there was never a "PDP-20"; the only difference between a 10
	and a 20 was the {operating system} and the colour of the
	paint.  Most (but not all) machines sold to run {TOPS-10} were
	painted "Basil Blue", whereas most TOPS-20 machines were
	painted "Chinese Red" (often mistakenly called orange).

	(21 Dec 1994)

PDP-6

	<computer> Programmed Data Processor model 6.  A computer
	designed around 1960 with more or less exactly the same
	hardware architecture as the {PDP-10}.  It already had
	multi-user {time sharing} and {batch processing} and
	multi-level priority {interrupts}

	(21 Dec 1996)

PDP-7

	<computer> A minicomputer sold by DEC in 1964.  It had a
	memory cycle time of 1.75 microseconds and add time of 4
	microseconds.  I/O included a keyboard, printer, {paper-tape}
	and dual transport DECtape drives (type 555).

	DEC provided an "advanced" {FORTRAN II} {compiler}, a Symbolic
	{Assembler}, Editor, {DDT} Debugging System, Maintenance
	routines and a library of arithmetic, utility and programming
	aids developed on the program-compatible {PDP-4}.

	[DEC sales brochure].

	The PDP-7 was considered reliable enough (when properly
	programmed) to be used for control of nuclear reactors and
	such.

	Around 1970 {Ken Thompson} built the {operating system} that
	became {Unix} on a scavenged {PDP-7} so he could play a
	descendant of the {SPACEWAR} game.

	(10 Mar 1995)

PDP Assembly Language

	<language> (PAL) The {assembly language} for the {PDP-8} and
	{PDP-11}.

	[Description?]

	(26 Jan 1995)

PDS

	1. <hardware> {Processor Direct Slot}.

	2. {partitioned data set}.

PDSA cycle

	Plan, Do, See, Approve (from Japan).

PDS/MaGen

	Problem Descriptor System.  A system for generating matrices
	and reports for mathematical programming and {operations
	research}.

	["PDS MaGen User Information Manual", Haverly Systems (Dec
	1977)].

	(27 Oct 1994)

PDU

	{Protocol Data Unit}

PE

	1. <database> {periodic group}

	2. <storage> {Phase Encoded}.

	3. <architecture> {processing element}.

	(30 Oct 1995)

PeaceNet

	One of the {IGC} networks.  PeaceNet serves peace and social
	justice advocates around the world in such areas as human
	rights, disarmament, and international relations.  A number of
	alternative news services provide a range of information about
	these and other topics from around the world.

	E-mail: <peacenet@igc.apc.org>.  {(ftp://igc.apc.org/)}.

Peano arithmetic

	<mathematics> A system for representing {natural number}s
	inductively using only two symbols, "0" (zero) and "S"
	(successor).

	This could be expressed as a {recursive} data type with the
	following {Haskell} definition:

		data Peano = Zero | Succ Peano

	The number three, usually written "SSS0", would be Succ (Succ
	(Succ Zero)).  Addition of Peano numbers can be expressed as a
	simple syntactic transformation:

		plus Zero     n = n
		plus (Succ m) n = Succ (plus m n)

	(28 Mar 1995)

PEARL

	1. Constable, Cornell U, 80's.  Constructive mathematics.

	2. Process and Experiment Automation Real-Time Language.  A
	{real-time} language for programming process control systems,
	widely used in Europe.  Size and complexity exceeds {Ada}.
	{DIN} 66253 Teil 2.

	["Programmiersprache PEARL", Beuth-Verlag, Nov 1980].

	3. One of five pedagogical languages based on {Markov}
	{algorithm}s, used in "Nonpareil, a Machine Level Machine
	Independent Language for the Study of Semantics", B. Higman,
	ULICS Intl Report No ICSI 170, U London (1968).  Compare
	{Brilliant}, {Diamond}, {Nonpareil}, {Ruby}.

	4. Brian Randell, ca 1970.  Multilevel language, mentioned in
	Machine Oriented Higher Level Languages, W. van der Poel, N-H
	1974.

Pebble

	A {polymorphic} language.

	["A Kernel Language for Abstract Data Types and Modules",
	R.M. Burstall & B. Lampson, in Semantics of Data Types, LNCS
	173, Springer 1984].

	(26 Jan 1995)

Pebbleman

	{DoD} requirements that led to {APSE}.  They were written in
	Jul 1978 and revised Jan 1979.

	(26 Jan 1995)

PECOS

	A {constraint}-based language, built on the {object-oriented}
	module of {Le-Lisp}.

	["Pecos Reference Manual", ILOG, 1990.  ILOG, 12 av Raspail,
	BP 7, F94251 Gentilly, France].

	(26 Jan 1995)

Pedagogic Algorithmic Language

	["PAL - A Language for Teaching Programming Linguistics",
	A. Evans Jr, Proc ACM 23rd Natl Conf, Brandon/Systems Press
	(1968)].

	(26 Jan 1995)

PEEK

	The command in most {microcomputer} {BASIC}s for reading
	memory contents (a byte) at an absolute address.  POKE is the
	corresponding command to write a value to an absolute address.

	This is often extended to mean the corresponding constructs in
	any {High Level Language}.

	Much hacking on small {microcomputer}s without {MMU}s consists
	of "peek"ing around memory, more or less at random, to find
	the location where the system keeps interesting stuff.  Long
	(and variably accurate) lists of such addresses for various
	computers circulate (see {interrupt list}).  The results of
	"poke"s at these addresses may be highly useful, mildly
	amusing, useless but neat, or total {lossage} (see {killer
	poke}).

	Since a {real operating system} provides useful, higher-level
	services for the tasks commonly performed with peeks and pokes
	on micros, and real languages tend not to encourage low-level
	memory groveling, a question like "How do I do a peek in C?"
	is diagnostic of the {newbie}.  Of course, {operating system}
	{kernel}s often have to do exactly this; a real {C} hacker
	would unhesitatingly, if unportably, assign an absolute
	address to a pointer variable and indirect through it.

	(31 Jan 1995)

PEEL

	Used to implement version of {EMACS} on {PRIME} computers.

peephole optimisation

	<compiler> A kind of {code optimisation} that considers only a
	few adjacent instructions at a time and looks for certain
	combinations which can be replaced with more efficient
	sequences.  E.g.

		ADD R0, #1
		ADD R0, #1

	(add one to register R0) could be replaced by

		ADD R0, #2

	(28 Mar 1995)

peer

	A unit of communications hardware or software that is on the
	same {protocol layer} of a network as another.  A common way
	of viewing a communications link is as two {protocol stack}s,
	which are actually connected only at the very lowest
	(physical) layer, but can be regarded as being connected at
	each higher layer by virtue of the services provided by the
	lower layers.  Peer-to-peer communication refers to these real
	or virtual connections between corresponding systems in each
	layer.

	To give a simple example, when two people talk to each other,
	the lowest layer is the physical layer which concerns the
	sound pressure waves travelling from mouth to ear (so mouths
	and ears are peers) the next layer might be the speech and
	hearing centres in the people's brains and the top layer their
	cerebellums or minds.  Although, barring telepathy, nothing
	passes directly between the two minds, there is a peer-to-peer
	communication between them.

peer-to-peer

	The kind of communication found in a system using layered
	{protocol}s.  Each software or hardware component can be
	considered to communicate only with its {peer} in the same
	layer via the connection provided by the lower layers.

	(14 Dec 1994)

Pegasus

	<networking, product> A product to support {Internet}
	searches, {electronic mail} and {Usenet news}.

	[Details?  Addesss?]

	(14 Jul 1997)

PEIPA

	{Pilot European Image Processing Archive}

PEM

	{Privacy Enhanced Mail}

PENCIL

	Pictorial ENCodIng Language.  On-line system to display line
	structures.  Sammet 1969, 675.

pencil and paper

	An archaic information storage and transmission device that
	works by depositing smears of graphite on bleached wood pulp.
	More recent developments in paper-based technology include
	improved "write-once" update devices which use tiny rolling
	heads similar to mouse balls to deposit coloured pigment.  All
	these devices require an operator skilled at so-called
	"handwriting" technique.  These technologies are ubiquitous
	outside hackerdom, but nearly forgotten inside it.  Most
	hackers had terrible handwriting to begin with, and years of
	keyboarding tend to have encouraged it to degrade further.
	Perhaps for this reason, hackers deprecate pencil-and-paper
	technology and often resist using it in any but the most
	trivial contexts.

	(06 Dec 1994)

penis war

	An argument which has degenerated into quantitative boasting
	of the sort "My [program|bot|etc.] is [faster|meaner|etc.]
	than yours!", generally as unconstructive (and with as little
	emphasis on empirical proof) as men debating who has the
	biggest penis.

	Often used on {IRC}.  Sometimes applied to IRC {botwars},
	because of their equally pointless nature.

	(07 Apr 1997)

Pentium

	<processor> {Intel}'s {superscalar} successor to the {486}.
	It has two 32-bit 486-type integer {pipelines} with dependency
	checking.  It can execute a maximum of two instructions per
	cycle.  It does pipelined {floating-point} and performs
	{branch prediction}.  It has 16 {kilobytes} of on-chip
	{cache}, a 64-bit memory interface, 8 32-bit general-purpose
	{registers} and 8 80-bit {floating-point} registers.  It is
	built from 3.1 million transistors on a 262.4 mm^2 die with
	~2.3 million transistors in the core logic.  Its {clock rate}
	is 66MHz, heat dissipation is 16W, integer performance is 64.5
	{SPECint92}, {floating-point} performance 56.9 {SPECfp92}.

	It is called "Pentium" because it is the fifth in the 80x86
	line.  It would have been called the 80586 had a US court not
	ruled that you can't trademark a number.

	The successors are the {Pentium Pro} and {Pentium II}.

	A {floating-point division bug
	(ftp://ftp.isi.edu/pub/carlton/pentium/FAQ)} was discovered in
	October 1994.

	[Internal implementation, "Microprocessor Report" newsletter,
	29 Mar 1993, volume 7, number 4].

	[Pentium based computers, PC Magazine, 25 Jan 1994].

	(21 Nov 1997)

Pentium 2

	{Pentium II}

Pentium II

	<processor> {Intel Inc.}'s successor to the {Pentium Pro}.
	The Pentium II has {Multimedia Extensions} (MMX) built in.  It
	runs at 233, 266 and 300 {MHz} and is rectangular in shape.

	It has a new {motherboard} mounting, "{Slot I}", by which the
	chip is mounted on a small {daughterboard}.  This makes
	upgrading to Pentium II from {Socket 7} architecture diifcult
	but upgrades from Pentium II should be easier.

	{Home (http://www.intel.com/PentiumII/)}.

	(21 Nov 1997)

Pentium Pro

	<processor> (Known as "P6" during development) {Intel}'s
	successor to the {Pentium} processor, in development Jan 1995,
	generally available 01 Nov 1995.  The P6 has an internal
	{RISC} architecture with a {CISC}-{RISC} translator, 3-way
	{superscalar} execution, and {out-of order execution} (or
	"{speculative execution}", which Intel calls "{Dynamic
	Execution}").  It also features {branch prediction} and
	{register renaming}, and is superpipelined (14 stages).

	The P6 is made as a two-chip assembly: the first chip is the
	{CPU} and 16 kilobyte {first-level cache} (5.5 million
	{transistors}) and the other is a 256 (or 512) kilobyte
	{second-level cache} (15 million transistors).  The first
	version has a clock frequency of 133 Mhz and consumes about
	20W of power.  It is about twice as fast as the 100 MHz
	Pentium.  The original 0.35 micron versions of the Pentium Pro
	released on 01 Nov 1995 run at 150 and 166 Mhz for desktop
	machines and up to 200 Mhz for {servers}.  Heat disspation is
	about 20 Watts.

	The Pentium Pro is optimised for 32-bit software and runs
	16-bit software slower than the original Pentium.

	[Performance?]

	(01 Mar 1996)

peon

	A person with no special ({root} or {wheel}) privileges on a
	computer system.  "I can't create an account on *foovax* for
	you; I'm only a peon there."

Pepper

	A variant of {POP-11} by Chris Dollin <kers@hplb.hpl.hp.com>.

PEPsy

	{Prolog} extended with parallel modules within which explicit
	{OR-parallelism} can be used.

	["PEPsy: A Prolog for Parallel Processing", M. Ratcliffe et
	al, ECRC TR CA-17, 1986].

PER

	{partial equivalence relation}

percent

	%

	Common: {ITU-T}: percent sign; mod; grapes.  {INTERCAL}:
	double-oh-seven.

	(06 Mar 1995)

perceptron

	1. A single {McCulloch-Pitts neuron}.

	2. A network of {neuron}s in which the output(s) of some
	neurons are connected through weighted connections to the
	input(s) of other neurons.  A {multilayer perceptron} is a
	specific instance of this.

perf

	{chad}

perfect programmer syndrome

	Arrogance; the egotistical conviction that one is above normal
	human error.  Most frequently found among programmers of some
	native ability but relatively little experience (especially
	new graduates; their perceptions may be distorted by a history
	of excellent performance at solving {toy problem}s).  "Of
	course my program is correct, there is no need to test it."
	"Yes, I can see there may be a problem here, but *I'll* never
	type "rm -r /" while in {root mode}."

PERFORM

	<programming> A {COBOL} statement used for executing
	"paragraphs".

	[What's a paragraph?]

	(10 Jun 1997)

periodic group

	<database> (PE) Groups of logically related fields which occur
	multiple times within a group.

	Periodic groups are a non-{relational} technique.  An example
	of a PE would be for storing the history of a person's name
	changes, where name was kept in logically related fields such
	as surname, first name and middle name - with the person
	having changed their name more than once.

	[Clarify?]

	(30 Oct 1995)

peripheral

	<hardware> (Or "peripheral device") Any part of a computer
	other than the {CPU} or {working memory}, i.e. {disks},
	{keyboards}, {monitors}, {mice}, {printers}, {scanners}, {tape
	drives}, {microphones}, {speakers}, {cameras}, to list just
	the less exotic ones.

	High speed working {memory} deviced, such as {RAM}, {ROM}, or,
	in the old days, {core} would not normally be referred to as
	peripherals.

	(15 Apr 1996)

Peripheral Component Interconnect

	<hardware> (PCI) A standard for connecting {peripherals} to a
	{personal computer}, designed by {Intel} and released around
	Autumn 1993.  PCI is supported by most major manufacturers
	including {Apple Computer}.  It is technically far superior to
	{VESA}'s {local bus} and runs at 33 Mhz.

	PCI is used in systems based on {Pentium}, {Pentium Pro}, {AMD
	5x86}, {AMD K5} and {AMD K6} processors, in some {DEC Alpha}
	and {PowerPC} systems, and probably {Cyrix 586} and {Cyrix
	686} systems.  However, it is processor independent and so can
	work with other processor architectures as well.

	Technically, PCI is not a bus but a {bridge} or {mezzanine}.
	It includes buffers to decouple the {CPU} from relatively slow
	peripherals and allow them to operate asynchronously.

	(07 Dec 1997)

Peripheral Technology Group

	<company> A national and international distributor of {IBM
	PC}-to-{Unix} and {Internet} connectivity products.  They
	cater for resellers, dealers and {VAR}s and are one of the top
	{Seagate} and {Micropolis} distributors in the US.

	{Home (http://www.ptgs.com/)}

	Address: Eden Prairie, MN, USA (a suburb of Minneapolis).

	Eden Prairie ("Silicon Prairie") is the home of Digi
	International, Ontrack, Open Systems, LaserMaster, Best Buy,
	and others.

	(29 Nov 1995)

Perl

	<language, tool> /perl/ Practical Extraction and Report
	Language (or Pathologically Eclectic Rubbish Lister).  An
	interpreted language developed by {Larry Wall} and distributed
	over {Usenet}.

	Perl superficially resembles {awk}, but is much hairier.
	{Unix} {sysadmins}, who are almost always incorrigible
	{hackers}, increasingly consider it one of the {languages of
	choice}.  Perl has been described, in a parody of a famous
	remark about {lex}, as the "Swiss-Army chain-saw" of {Unix}
	programming.  It can be very concise (and thus hard to read)
	because of its powerful operators such as regular expression
	substitution.

	Perl is a general purpose language, often used for scanning
	text and printing formatted reports.  It provides extensive
	support for {regular expression} matching, {dynamically
	scoped} variables and functions, extensible {run-time
	libraries}, {exception} handling and packages,
	provide/require.

	The use of Perl has grown significantly since its adoption as
	the language of choice of many {World-Wide Web} developers.
	{CGI} interfaces and libraries for Perl exist for several
	{platforms} and Perl's speed and flexibility make it well
	suited for form processing and on-the-fly page creation.

	{Perl5} is a major rewrite and enhancement of Perl version 4.
	It adds nested data structures and {object-oriented} features.

	Like {awk}, Perl provides {associative arrays} but in Perl
	they can be bound to {dbm} files.  Perl does not place any
	arbitrary limits on data structures and allows direct access
	to almost all {system calls}.  It can handle binary data and
	has many powerful idioms for common tasks.  It is {eight bit
	clean}, including {null}s.  The three variable types are
	{scalar}, {array}, and associative array (implemented by a
	{hash table}).  Different variable types are distinguished by
	prefix characters.

	{Usenet} newsgroups: {news:comp.lang.perl.announce},
	{news:comp.lang.perl.misc}.

	Almost anything related to Perl, including kits, ports and
	documentation can be found on the {Comprehensive Perl Archive
	Network}.

	["Programming Perl", Larry Wall and Randal L. Schwartz,
	O'Reilly & Associates, Inc.  Sebastopol, CA.  ISBN
	0-93715-64-1].

	["Learning Perl" by Randal L. Schwartz, O'Reilly & Associates,
	Inc., Sebastopol, CA].

	(04 Jun 1996)

Perl5

	A major rewrite and enhancement of {Perl} version 4.  It adds
	real data structures (by way of "references"), un-adorned
	subroutine calls, and {method} {inheritance}.  It is not
	stable (yet).

	(Nov 1993)

perl-byacc

	A modified version of {byacc} that generates a {parser} in
	{Perl} code, by Rick Ohnemus <rick@imd.sterling.com>.  It has
	a "-p" switch so multiple parsers can be used in one program
	({C} or Perl).  Version 1.8.2 should work on most {Unix}
	systems.  It also works with {SAS/C} 6.x on {Amiga}.

	{(ftp://ftp.sterling.com/local/perl-byacc.tar.Z)}.
	{(ftp://ftp.sterling.com/local/perl-byacc1.8.2.tar.Z)}.

	(24 Jan 1993)

Perl profiler

	<tool> (pprof) A tool by Anthony Iano-Fletcher
	<arf@maths.nott.ac.uk> to profile, and collate data from,
	{Perl} scripts.

	Version: 1?

	Source posted on comp.lang.perl in mid-June 1993.

	(17 Jun 1993)

Permanent Virtual Circuit

	<networking> (PVC, or in {ATM} terminology, "Permanent Virtual
	Connection") A {virtual circuit} that is permanently
	established, saving the time associated with circuit
	establishment and tear-down.

	(06 Oct 1997)

Permanent Virtual Connection

	{Permanent Virtual Circuit}

permission

	<file system> (Or "file mode") An access privelege (e.g. read,
	write, execute) associated with a {file} or {directory}.
	Depending on the {operating system}, each file may have
	different permissions for different kinds of access and
	different users or groups of users.

	{chmod} ("change mode") is the {UNIX} command to change
	permissions.

	(08 Apr 1997)

permutation

	<mathematics> An ordering of a certain number of elements of a
	given set.

	For instance, the permutations of (1,2,3) are (1,2,3) (2,3,1)
	(3,1,2) (3,2,1) (1,3,2) (2,1,3).

	Permutations form one of the canonical examples of a "{group}"
	- they can be composed and that you can find an inverse
	permutation that reverses the action of any given permutation.

	A permutation is a {bijection}.

	The number of permutations of r things taken from a set of n
	is

		n P r = n! / (n-r)!

	where "n P r" is usually written with n and r as subscripts
	and n! is the {factorial} of n.

	What the football pools call a "permutation" is not a
	permutation but a {combination} - the order does not matter.

	(10 Apr 1995)

\perp

	{LaTeX} inverted T.  Used in {domain theory} to represent
	{bottom}.

	(03 Feb 1995)

perplexity

	The {geometric mean} of the number of words which may follow
	any given word for a certain {lexicon} and {grammar}.

persistence

	1. <programming> A property of a programming language where
	created objects and variables continue to exist and retain
	their values between runs of the program.

	2. <hardware> The length of time a phosphor dot on the screen
	of a {cathode ray tube} will remain illuminated after it has
	been energised by the electron beam.  Long-persistence
	phosphors reduce flicker, but generate ghost-like images that
	linger on screen for a fraction of a second.

	(09 Nov 1994)

persistent

	{persistence}

Persistent Functional Language

	<language, database> (PFL) A {functional database} language
	developed by Carol Small <carol@cs.bbk.ac.uk> and Alexandra
	Poulovassilis (now at {King's College London}).

	In PFL, functions are defined equationally and bulk data is
	stored using a special class of functions called selectors.
	It is a {lazy} language, supports {higher-order function}s,
	has a strong {polymorphic} {type inference} system, and allows
	new user-defined data types and values.  All functions, types
	and values persist in a database.  Functions can be written
	which update all aspects of the database: by adding data to
	selectors, by defining new equations, and by introducing new
	data types and values.

	PFL is "semi-{referentially transparent}", in the sense that
	whilst updates are referentially opaque and are executed
	{destructive}ly, all evaluation is referentially transparent.
	Similarly, {type checking} is "semi-static" in the sense that
	whilst updates are dynamically type checked at run time,
	expressions are type checked before they are evaluated and no
	type errors can occur during their evaluation.

	["{A Functional Approach to Database Updates
	(http://web.dcs.bbk.ac.uk/CS/Research/DBPL/papers/INFSYS93.abs.html)}",
	C. Small, Information Systems 18(8), 1993, pp. 581-95].

	(27 Apr 1995)

persistent memory

	{non-volatile storage}

Personal Communication Network

	<networking> (PCN) Any {network} supporting {Personal
	Communication Service} (PCS).  Also, sometimes used to refer
	to the specific implementation (using the {GSM}-derivative
	{DCS-1800}) of initial PCS capabilities in the United Kingdom.

	(23 Aug 1996)

Personal Communication Services

	<communications> (PCS) Telecommunications services that bundle
	voice communications, numeric and text messaging, {voice-mail}
	and various other features into one device, service contract
	and bill.  PCS are carried over {cellular} links, most often
	digital.

	(01 Aug 1996)

personal computer

	<computer> (PC) A general-purpose single-user {microcomputer}
	designed to be operated by one person at a time.

	This term and the concept has been successfully hijacked by
	{IBM} due to the huge market share of the {IBM PC}, despite
	its many obvious weaknesses when compared to other equally
	valid claimants to the term, e.g. the {Acorn} {Archimedes},
	{Amiga}, {Atari}, {Macintosh}.

	(02 Nov 1994)

Personal Computer Memory Card International Association

	<body, hardware, standard> (PCMCIA, or "PC Card") An
	international trade association and the {standards} they have
	developed for devicies, such as {modems} and external {hard
	disk} drives, that can be plugged into {notebook computers}q.
	A PCMCIA card is about the size of a credit card.

	For some unfathomable reason, around 1995(?) they decided to
	rename PCMCIA cards "PC Cards", perhaps to encourage sales to
	confused purchasers.

	E-mail: Bryan Richter <bryan@cirrus.com>.

	{(ftp://ftp.sidewinder.com/pub/Portables/PCMCIA)}

	Address: PCMCIA Administration, 1030 East Duane Avenue, Suite
	G, Sunnyvale, CA 94086 USA.

	Telephone: +1 (408) 720 0107.  Fax: +1 (408) 720 9416.  BBS:
	+1 (408) 720 9388.

	(16 Oct 1996)

Personal Digital Assistant

	<computer> (PDA) A small hand-held computer used to write
	notes, track appointments and otherwise keep your life in
	order.  PDAs provide all the functionality of a cheap pad of
	paper at hundreds of times the cost, and with far less storage
	capacity.  Early PDA's required data to be input using a
	keypad with keys the size of Chiclets, but more recent models
	(e.g. the {Apple Newton}) use a combination of pen-based input
	and character recognition software to render your data
	incomprehensible.

	(22 Nov 1994)

Personal Identification Number

	<security> (PIN, "PIN number") A {password}, typically four
	digits entered through a telephone keypad or automatic teller
	machine.

	(03 Nov 1996)

person of no account

	(University of California at Santa Cruz) Used when referring
	to a person with no {network address}, frequently to forestall
	confusion.  Most often as part of an introduction: "This is
	Bill, a person of no account, but he used to be
	bill@random.com".

	Compare {return from the dead}.

	(22 Nov 1994)

perspective

	<games> In computer games, the {virtual} position from which
	the human player views the playing area.  There are three
	different perspectives: first person, second person, and third
	person.

	First person perspective: Viewing the world through the eyes
	of the primary character in three dimensions.  e.g. Doom,
	Quake.

	Second person perspective: Viewing the game through a
	spectator's eyes, in two or three dimensions.  Depending on
	the game, the main character is always in view. e.g. Super
	Mario Bros., Tomb Raider.

	Third person perspective: a point of view which is independent
	of where characters or playing units are.  The gaming world is
	viewed much as a satellite would view a battlefield.
	E.g. Warcraft, Command & Conquer.

	(19 Jun 1997)

PERT

	{Program Evaluation and Review Technique}

pessimal

	/pes'im-l/ (Latin-based antonym for "optimal") Maximally bad.
	"This is a pessimal situation."  Also "pessimise" To make as
	bad as possible.  These words are the obvious Latin-based
	antonyms for "optimal" and "optimise", but for some reason
	they do not appear in most English dictionaries, although
	"pessimise" is listed in the OED.

	(01 Feb 1995)

pessimising compiler

	/pes'*-mi:z"ing k*m-pi:l"r/ (Antonym of "{optimising
	compiler}") A {compiler} that produces {object code} that is
	worse than the straightforward or obvious hand translation.
	The implication is that the compiler is actually trying to
	optimise the program, but through excessive cleverness is
	doing the opposite.  A few pessimizing compilers have been
	written on purpose, however, as pranks or burlesques.

	(01 Feb 1995)

peta-

	{prefix}

petabyte

	<unit> 2^50 = 1,125,899,906,842,624 {bytes} = 1024
	{terabytes} or roughly 10^15 bytes.

	See {prefix}.

	(12 Aug 1996)

petaflops

	<unit> 10^15 {flops} or 1000 {teraflops}.  No computer has
	achieved this performance yet.

	(21 Jul 1997)

petdingo

	<tool> An {Estelle} to {C++} translator.

	(24 Jan 1997)

Peter Chen

	<person> The developer of the {Entity-Relationship model}.

	(07 Feb 1995)

Petri net

	<parallel, simulation> A {directed}, {bipartite graph} in
	which nodes are either "places" (represented by circles) or
	"transitions" (represented by rectangles), invented by Carl
	Adam Petri.  A Petri net is marked by placing "tokens" on
	places.  When all the places with arcs to a transition (its
	input places) have a token, the transition "fires", removing a
	token from each input place and adding a token to each place
	pointed to by the transition (its output places).

	Petri nets are used to model {concurrent} systems,
	particularly {network} {protocol}s.

	Variants on the basic idea include the {coloured Petri Net},
	{Time Petri Net}, {Timed Petri Net}, {Stochastic Petri Net},
	and {Predicate Transition Net}.

	{FAQ (http://www.daimi.aau.dk/PetriNets/faq/answers.htm)}.

	(10 Sep 1996)

PETSCII

	<character> /pet'skee/ {PET} {ASCII}.  The variation (many
	would say perversion) of the ASCII {character set} used by the
	{Commodore Business Machines}' {PET} series of {personal
	computer}s and the later {Commodore 64}, {Commodore 16}, and
	{Commodore 128} computers.  The PETSCII set used left-arrow
	and up-arrow (as in old-style ASCII) instead of underscore and
	caret, placed the unshifted alphabet at positions 65--90, put
	the shifted alphabet at positions 193--218, and added {graphic
	characters}.

	(29 Oct 1995)

PEX

	(PHIGS Extension to X) Extension to the {X Window System}
	providing 3d graphics support.

PFE

	{Portable Forth Environment}

PFL

	1. <language> A concurrent extension of {ML} by Holmstrom and
	Matthews, using {CCS}.

	["PFL: A Functional Language for Parallel Programming",
	S. Holmstrom in Proc Declarative Language Workshop, London
	1983].

	2. <language, database> {Persistent Functional Language}.

Pfortran

	Parallel Fortran.

	Extensions to {Fortran} by Ridgway Scott <scott@uh.edu> of
	Houston University.  Pfortran provides a {shared memory}
	{SIMD} model on {message passing} computers.

	It is under development.

	["Pfortran: A Parallel Dialect of Fortran", L.R. Scott,
	Fortran Forum 11(3):20-31 (Sep 1992)].

	(08 Nov 1994)

PGA

	{Professional Graphics Adapter}

PGP

	{Pretty Good Privacy}

PH

	<tool> The tool for looking up people in Eudora on the
	{Macintosh}.  Equivalent to {Unix}'s {finger} service.

	(31 Mar 1995)

pH

	{Parallel Haskell}

phage

	A program that modifies other programs or databases in
	unauthorised ways; especially one that propagates a {virus} or
	{Trojan horse}.  See also {worm}, {mockingbird}.  The
	analogy, of course, is with phage viruses in biology.

phase

	1. The offset of one's waking-sleeping schedule with respect
	to the standard 24-hour cycle; a useful concept among people
	who often work at night and/or according to no fixed schedule.
	It is not uncommon to change one's phase by as much as 6 hours
	per day on a regular basis.  "What's your phase?"  "I've been
	getting in about 8 P.M. lately, but I'm going to {wrap around}
	to the day schedule by Friday."  A person who is roughly 12
	hours out of phase is sometimes said to be in "night mode".
	(The term "day mode" is also (but less frequently) used,
	meaning you're working 9 to 5 (or, more likely, 10 to 6).)
	The act of altering one's cycle is called "changing phase";
	"phase shifting" has also been recently reported from Caltech.

	2. "change phase the hard way": To stay awake for a very long
	time in order to get into a different phase.

	3. "change phase the easy way": To stay asleep, etc.  However,
	some claim that either staying awake longer or sleeping longer
	is easy, and that it is *shortening* your day or night that is
	really hard (see {wrap around}).  The "jet lag" that afflicts
	travelers who cross many time-zone boundaries may be
	attributed to two distinct causes: the strain of travel per
	se, and the strain of changing phase.  Hackers who suddenly
	find that they must change phase drastically in a short period
	of time, particularly the hard way, experience something very
	like jet lag without travelling.

Phase Encoded

	<storage> (PE) A recording method used for 1600 BPI {magnetic
	tapes}.

	Compare {NRZI}, {GCR}.

	(03 Feb 1996)

phase of the moon

	Used humorously as a random parameter on which something is
	said to depend.  Sometimes implies unreliability of whatever
	is dependent, or that reliability seems to be dependent on
	conditions nobody has been able to determine.  "This feature
	depends on having the channel open in mumble mode, having the
	foo switch set, and on the phase of the moon."

	See also {heisenbug}.

	True story: Once upon a time there was a {bug} that really did
	depend on the phase of the moon.  There was a little
	subroutine that had traditionally been used in various
	programs at {MIT} to calculate an approximation to the moon's
	true phase.  {GLS} incorporated this routine into a {Lisp}
	program that, when it wrote out a file, would print a
	timestamp line almost 80 characters long.  Very occasionally
	the first line of the message would be too long and would
	overflow onto the next line, and when the file was later read
	back in the program would {barf}.  The length of the first
	line depended on both the precise date and time and the length
	of the phase specification when the timestamp was printed, and
	so the bug literally depended on the phase of the moon!

	The first paper edition of the {Jargon File} (Steele-1983)
	included an example of one of the timestamp lines that
	exhibited this bug, but the typesetter "corrected" it.  This
	has since been described as the phase-of-the-moon-bug bug.

	(22 Feb 1995)

phase-wrapping

	({MIT}) {wrap around}.

	(22 Feb 1995)

PHIGS

	{Programmers Hierarchical Interactive Graphics System}

Philips

	<company> A Dutch multinational electronics company.  It
	produces washing machines, consumer electronics, {integrated
	circuits} and light bulbs.  Together with {Sony} they set the
	{Compact Disc} standard, especially {Green Book CD-ROM}.  They
	are members of the {Open Software Foundation}.  Philips
	Research Labs developed the {POOL} and {SPL} languages.

	Address: Philips Research Labs, Eindhoven, Netherlands.

	(07 Feb 1995)

Philips SCC68070

	<processor> A {microprocessor} which is {object code}
	compatible with the {Motorola 68000}.  It is not a performance
	improvement over the 68060; it's performance rather resembles
	that of the 68000.

	(22 Apr 1995)

philosophy

	See {computer ethics}, {liar paradox}, {netiquette}, {proof}.

PHOCUS

	An {object-oriented} {Prolog}-like language.

	["PHOCUS: Production Rules, Horn Clauses, Objects and Contexts
	in a Unification Based System", D. Chan et al, Actes du Sem
	Prog et Logique, Tregastel (May 1987), pp. 77-108].

	(09 Nov 1994)

phone mail

	{voice mail}

Phonetastic

	<communications> A {CTI} product from {Callware}.  Phonetastic
	employs if-then rules and customer records to tell those
	receiving calls who is calling (based on {ANI} and {DNIS}) and
	to determine how the call should be routed, e.g. to a certain
	sales representative or to the general sales department;
	receive high-priority treatment; receive a fax-back, etc.

	(08 Dec 1996)

Phong shading

	<graphics> A model of how light is reflected from surfaces
	used extensively in three dimensional graphics to generate
	visually realistic images.

	[Details?]

	(09 Nov 1994)

phosphor fatigue

	{screen saver}

photo CD

	<multimedia, specification, standard, storage, graphics> A
	{standard} for storing photographic images on {CD-ROM},
	produced by {Kodak}.

	{Kodak Photo CD page
	(http://www.kodak.com/digitalImaging/aboutPhotoCD/aboutPCD.shtml)}

	(12 Dec 1995)

Photoshop

	An image manipulation program by {Adobe}.

	{Home (http://www.adobe.com/Apps/Photoshop.html)}

	[Summary?]

	(05 Jul 1995)

phreaking

	<jargon> /freek'ing/ "phone phreak" 1. The art and science of
	{cracking} the telephone network so as, for example, to make
	free long-distance calls.

	2. By extension, security-{cracking} in any other context
	(especially, but not exclusively, on communications networks).

	At one time phreaking was a semi-respectable activity among
	hackers; there was a gentleman's agreement that phreaking as
	an intellectual game and a form of exploration was OK, but
	serious theft of services was taboo.  There was significant
	crossover between the hacker community and the hard-core phone
	phreaks who ran semi-underground networks of their own through
	such media as the legendary "TAP Newsletter".

	This ethos began to break down in the mid-1980s as wider
	dissemination of the techniques put them in the hands of less
	responsible phreaks.  Around the same time, changes in the
	phone network made old-style technical ingenuity less
	effective as a way of hacking it, so phreaking came to depend
	more on overtly criminal acts such as stealing phone-card
	numbers.

	The crimes and punishments of gangs like the "414 group"
	turned that game very ugly.  A few old-time hackers still
	phreak casually just to keep their hand in, but most these
	days have hardly even heard of "blue boxes" or any of the
	other paraphernalia of the great phreaks of yore.

	(09 Nov 1994)

physical address

	<architecture> The address presented to a computer's main
	memory in a {virtual memory} system, in contrast to the
	{virtual address} which is the address generated by the {CPU}.
	A {memory management unit} translates virtual addresses into
	physical addresses.

	(31 Mar 1995)

physical addressing

	<networking> The low level addressing scheme used on
	{Ethernet}.  The 48-bit destination {Ethernet address} in a
	{packet} is compared with the receiving node's Ethernet
	address.

	Compare {Internet address}.

	(23 Dec 1994)

physical layer

	<networking> The lowest layer in the {OSI} {seven layer
	model}.  It concerns electrical and mechanical connections and
	{MAC}.  It is used by the {data link layer}.  Example physical
	layer protocols are {CSMA/CD}, {token ring} and bus.

	(23 Dec 1994)

physical memory

	<architecture> The memory hardware (normally {RAM}) installed
	in a computer.  The term is only used in contrast to {virtual
	memory}.

	(23 Mar 1996)

Physics Analysis Workbench

	<tool> (PAW) A general purpose portable tool for analysis and
	presentation of physics data.

	(28 Nov 1994)

PI

	An interface between {Prolog} {application program}s and the
	{X Window System} that aims to be independent from the
	{Prolog} {engine}, provided that it has a {Quintus} {foreign
	function} interface (e.g. {SICStus} and {YAP}).  It is mostly
	written in {Prolog} and is divided in two libraries: Edipo -
	the lower level interface to the {Xlib} functions; and
	Ytoolkit - the higher level user interface toolkit.

	{(ftp://ftp.ncc.up.pt/pub/prolog/ytoolkit.tar.Z)}

	E-mail: Ze' Paulo Leal <zp@ncc.up.pt>.

	(02 Mar 1993)

PIC

	1. A graphics language by {Brian Kernighan}, for textually
	describing pictures with {troff}.

	[Featured in "More Programming Pearls", Jon Bentley].

	["PIC - A Language for Typesetting Graphics", B.W. Kernighan,
	Soft Prac & Exp 12(1):1-21 (Jan 1982)].

	["PIC - A Graphics Language for Typesetting, Revised User
	Manual", Bell Labs TR 116, Dec 1984].

	(28 Oct 1994)

	2. {personal intelligent communicator}.

	(23 Dec 1994)

pi-calculus

	<theory> A {process algebra} in which channel names can act
	both as transmission medium and as transmitted data.  Its
	basic atomic actions are individual point to point
	communications which are {nondeterministic}ally selected and
	globally sequentialised.

	[Details?  Examples?]

	(20 Mar 1995)

Pick BASIC

	See {Data/BASIC}.

PICL

	Language on {Ncube} or {iPSC} machines?

pico-

	{prefix}

picosecond

	<unit> 10^-12 seconds.

	(26 Apr 1997)

PICT

	<file format> An {Apple} graphics format.

	[Details?]

	(06 Jun 1997)

PicTeX

	A version of {TeX} for pictures.

	{(ftp://june.cs.washington.edu/tex/PiCTeX.tar.Z)}

Pictorial Janus

	K. Kahn, Xerox.  Visual extension of Janus.  Requires
	Strand88 and a PostScript interpreter.

Picture Quality Scale

	(PQS) A system for rating image quality based upon features of
	images that affect their perception by the human eye, rather
	than the traditional {signal-to-noise ratio} which examines
	differences for every single {pixel}.

	[Details?]

	(12 Jan 1995)

pictures

	{image}

PID

	{process identifier}

pidgen+

	A language for the {Apple II}.

	{(ftp://ftp.wustl.edu/system/apple2/Lang/pidgen/)}

	[Published in Dr. Dobbs Journal?]

	(29 Nov 1994)

PIE

	A language from {CMU} similar to {Actus}.

	(29 Nov 1994)

pif

	{Program Information File}

piggybacking

	1. A method for passing {acknowledgement frame}s and {data
	frame}s in the same direction along a line.

	2. The practice of increasing memory capacity by soldering
	chips on top of other chips.  The chip-enable or high address
	pins would be connected to the {address bus} by a flying lead.
	Many {Ohio Superboard}s were expanded to a massive 8K of {RAM}
	in this way.

	(29 Nov 1994)

pig, run like a

	To run very slowly on given hardware, said of software.
	Distinct from {hog}.

	(29 Nov 1994)

PIGUI

	{Platform Independent Graphical User Interface}

PIL

	Procedure Implementation Language.

	A subsystem of {DOCUS}.

	[Sammet 1969, p.678].

	(29 Nov 1994)

PILE

	1. Polytechnic's Instructional Language for Educators.
	Similar in use to an enhanced PILOT, but structurally more
	like Pascal with Awk-like associative arrays (optionally
	stored on disk).  Distributed to about 50 sites by Initial
	Teaching Alphabet Foundation for Apple II and CP/M.

	["A Universal Computer Aided Instruction System," Henry
	G. Dietz & Ronald J Juels, Proc Natl Educ Computing Conf '83,
	pp.279-282].

	2. "PILE _ A Language for Sound Synthesis", P. Berg, Comput
	Music J 3,1 (1979).

PIL/I

	Variant of JOSS.  Sammet 1969, p.217.

PILOT

	Programmed Inquiry Learning Or Teaching.  CAI language, many
	versions.  "Guide to 8080 PILOT", J. Starkweather, Dr Dobb's J
	(Apr 1977).

pilot error

	<jargon> ({Sun}, from aviation) A user's misconfiguration or
	misuse of a piece of software, producing apparently {bug}like
	results.

	E.g. "Joe Luser reported a bug in sendmail that causes it to
	generate bogus headers."  "That's not a bug, that's pilot
	error.  His "sendmail.cf" is hosed."

	Compare {UBD}.

	(05 Dec 1994)

Pilot European Image Processing Archive

	(PEIPA) An archive devoted to {image processing}, {computer
	vision}, and {computer graphics}.  It includes software,
	images, reference material, and miscellaneous goodies.

	The archive is funded by the {British Machine Vision
	Association} (BMVA) and the {University of Essex} and is
	closely associated with the {Pixel} {mailing list} and
	Technical Committee 5 (Benchmarking and Software) of the
	{IAPR}.

	{(http://peipa.essex.ac.uk/)}

PIM

	1. {Personal Information Manager}.

	2. {Product Information Management}.

	(11 Feb 1997)

PIN

	{Personal Identification Number}

PINBOL

	<language, games> A {decision table} language for controlling
	pinball machines used at Atari.  PINBOL included a
	{multitasking} executive and an {interpreter} that worked on
	data structures compiled from condition:action lists.

	(03 Nov 1996)

Pine

	Program for Internet News & Email.  A tool for reading,
	sending, and managing electronic messages.  It was designed
	specifically with novice computer users in mind, but can be
	tailored to accommodate the needs of "power users" as well.
	Pine uses {Internet} message {protocol}s (e.g. {RFC 822},
	{SMTP}, {MIME}, {IMAP}, {NNTP}) and runs under {Unix} and
	{MS-DOS}.

	The guiding principles for Pine's user-interface were: careful
	limitation of features, one-character mnemonic commands,
	always-present command menus, immediate user feedback, and
	high tolerance for user mistakes.  It is intended that Pine
	can be learned by exploration rather than reading manuals.
	Feedback from the {University of Washington} community and a
	growing number of {Internet} sites has been encouraging.

	Pine's message composition editor, {Pico}, is also available
	as a separate stand-alone program.  Pico is a very simple and
	easy-to-use {text editor} offering paragraph justification,
	cut/paste, and a spelling checker.

	Pine features on-line help; a message index showing a message
	summary which includes the status, sender, size, date and
	subject of messages; commands to view and process messages; a
	message composer with easy-to-use editor and spelling checker;
	an address book for saving long complex addresses and personal
	distribution lists under a nickname; message attachments via
	{Multipurpose Internet Mail Extensions}; {folder} management
	commands for creating, deleting, listing, or renaming message
	folders; access to remote message folders and archives via the
	{Interactive Mail Access Protocol} as defined in {RFC 1176};
	access to {Usenet} news via {NNTP} or {IMAP}.

	Pine, {Pico} and {UW}'s {IMAP} {server} are copyrighted but
	freely available.

	{Unix} Pine runs on {Ultrix}, {AIX}, {SunOS}, {SVR4} and
	{PTX}.  PC-Pine is available for {Packet Driver}, {Novell
	LWP}, {FTP PC/TCP} and {Sun} {PC/NFS}.  A {Microsoft
	Windows}/{WinSock} version is planned, as are extensions for
	off-line use.

	Pine was originally based on {Elm} but has evolved much since
	("Pine Is No-longer Elm").  Pine is the work of Mike Seibel,
	Mark Crispin, Steve Hubert, Sheryl Erez, David Miller and
	Laurence Lundblade (now at Virginia Tech) at the University of
	Washington Office of Computing and Communications.

	{(ftp://ftp.cac.washington.edu/mail/pine.tar.Z)}.
	{(telnet://demo.cac.washington.edu/)} (login as "pinedemo").

	E-mail: <pine@cac.washington.edu>,
	<pine-info-request@cac.washington.edu>,
	<pine-announce-request@cac.washington.edu>.

	(21 Sep 93)

pin feed

	{sprocket feed}

ping

	1. <networking> {Packet INternet Groper}.

	2. <messaging> To send a message to all members of a {mailing
	list} requesting an {ACK} (in order to verify that everybody's
	addresses are reachable).  "We haven't heard much of anything
	from Geoff, but he did respond with an ACK both times I pinged
	jargon-friends."

	3. A quantum packet of happiness.  People who are very happy
	tend to exude pings; furthermore, one can intentionally create
	pings and aim them at a needy party (e.g. a depressed person).
	This sense of ping may appear as an exclamation; "Ping!" (I'm
	happy; I am emitting a quantum of happiness; I have been
	struck by a quantum of happiness).  The form "pingfulness",
	which is used to describe people who exude pings, also occurs.
	(In the standard abuse of language, "pingfulness" can also be
	used as an exclamation, in which case it's a much stronger
	exclamation than just "ping"!).  Opposite: {blargh}.

	(10 Mar 1997)

ping-flood

	<networking> To {flood} another user with {ping} requests.

	(07 Apr 1997)

pinging

	{ping}

ping-pong

	<architecture> A phenomenon which can occur in a
	multi-processor system with private caches where two
	processors are alternately caching a shared location.  Each
	time one writes to it it invalidates the other's copy.

	(29 Dec 1995)

Pink-Shirt Book

	<publication> "The Peter Norton Programmer's Guide to the IBM
	PC".

	The original cover featured a picture of Peter Norton with a
	silly smirk on his face, wearing a pink shirt.  Perhaps in
	recognition of this usage, the current edition has a different
	picture of Norton wearing a pink shirt.

	See also {book titles}.

	(28 Mar 1995)

pin-out

	<hardware> (Or "pinout") The allocation of logical functions
	or signals to the electrical connection points (pins) of an
	{integrated circuit} or other component or connector.

	(04 Apr 1996)

PIP

	<tool> Peripheral Interchange Program.

	A program on {CP/M}, {RSX-11}, {RSTS/E}, {TOPS-10}, and {OS/8}
	(derived from a utility on the {PDP-6}) that was used for file
	copying (and in OS/8 and RT-11 for just about every other file
	operation you might want to do).  It is said that when the
	program was written, during the development of the PDP-6 in
	1963, it was called ATLATL ("Anything, Lord, to Anything,
	Lord"; this played on the Nahuatl word "atlatl" for a
	spear-thrower, with connotations of utility and primitivity
	that were no doubt quite intentional).

	See also {BLT}, {dd}, {cat}.

	(28 Mar 1995)

pipe

	1. <operating system> One of {Unix}'s buffers which can be
	written to by one {asynchronous} process and read by another,
	with the {kernel} suspending and waking up the sender and
	receiver according to how full the pipe is.  In later versions
	of Unix, rather than using an anonymous kernel-managed
	temporary file to implement a pipe, it can be named and is
	implemented as a local {socket} pair.

	2. <character> "|" {ASCII} character 124.  Used to represent a
	pipe between two processes in a {shell} command line.  E.g.

		grep foo log | more

	which feeds the output of grep into the input of more without
	requiring a named temporary file and without waiting for the
	first process to finish.

	3. <jargon, networking> A connection to a {network}.

	See also {light pipe}.

	(24 Sep 1996)

pipeline

	<architecture> A sequence of {functional units} ("stages")
	which performs a task in several steps, like an assembly line
	in a factory.  Each functional unit takes inputs and produces
	outputs which are stored in its output {buffer}.  One stage's
	output buffer is the next stage's input buffer.  This
	arrangement allows all the stages to work in parallel thus
	giving greater throughput than if each input had to pass
	through the whole pipeline before the next input could enter.

	The costs are greater latency and complexity due to the need
	to synchronise the stages in some way so that different inputs
	do not interfere.  The pipeline will only work at full
	efficiency if it can be filled and emptied at the same rate
	that it can process.

	Pipelines may be synchronous or asynchronous.  A synchronous
	pipeline has a master clock and each stage must complete its
	work within one cycle.  The minimum clock period is thus
	determined by the slowest stage.  An asynchronous pipeline
	requires {handshaking} between stages so that a new output is
	not written to the interstage buffer before the previous one
	has been used.

	Many {CPU}s are arranged as one or more pipelines, with
	different stages performing tasks such as fetch instruction,
	decode instruction, fetch arguments, arithmetic operations,
	store results.  For maximum performance, these rely on a
	continuous stream of instructions fetched from sequential
	locations in memory.  This stream is interrupted when a branch
	is taken as the contents of early stages will contain
	instructions from locations after the branch which should not
	be executed.  This is known as a {pipeline break}.

	(13 Oct 1996)

pipeline break

	<architecture> (Or "pipeline stall") The delay caused on a
	processor using {pipelines} when a {transfer of control} is
	taken.  Normally when a control-transfer instruction (a
	branch, conditional branch, call or trap) is taken, any
	following instructions which have been loaded into the
	processor's {pipeline} must be discarded or "flushed" and new
	instructions loaded from the branch destination.  This
	introduces a delay before the processor can resume execution.

	"{Delayed control-transfer}" is a technique used to reduce
	this effect.

	(13 Oct 1996)

Pipeline Burst Cache

	<hardware, storage> (PB Cache) A {synchronous cache} built
	from {pipelined} {SRAM}.

	A {cache} in which reading or writing a new location takes
	multiple {cycles} but subsequent locations can be accessed in
	a single {cycle}.  On {Pentium} systems in 1996, pipeline burst
	caches are frequently used as {secondary caches}.  The first 8
	{bytes} of data are transferred in 3 {CPU} {cycles}, and the
	next 3 8-{byte} pieces of data are transferred in one {cycle}
	each.

	(13 Oct 1996)

pipelined

	{pipeline}

Pipelined Burst Cache

	{Pipeline Burst Cache}

pipeline stall

	{pipeline break}

pipelining

	{pipeline}

PIPEX Ltd.

	{UUNET PIPEX}

piracy

	{software piracy}

pirate

	{software pirate}

PIRL

	Pattern Information Retrieval Language.

	A language for {digraph} manipulation, embeddable in {FORTRAN}
	or {ALGOL}, for {IBM 7094}.

	["PIRL - Pattern Information Retrieval Language",
	S. Berkowitz, Naval Ship Res Dev Ctr, Wash DC].

	(29 Nov 1994)

pistol

	[IBM] A tool that makes it all too easy for you to shoot
	yourself in the foot.  "Unix "rm *" makes such a nice pistol!"

PIT

	Language for IBM 650.  (See {IT}).

pixel

	Picture element.  The smallest resolvable rectangular area of
	an image, either on a screen or stored in memory.  Each pixel
	in a monochrome image has its own brightness, from 0 for black
	to the maximum value (e.g. 255 for an eight bit pixel) for
	white.  In a colour image, each pixel has its own brightness
	and colour, usually represented as a triple of red, green and
	blue intensities (see {RGB}).  Compare {voxel}.

pixmap

	(Contraction of "pixel map").  A 3 dimensional {array} of bits
	corresponding to a 2 dimensional array of {pixel}s.  It is
	used, for example, in the {X Window System} to describe a
	memory region where graphics can be drawn without affecting
	the screen.  Typically this is used for the efficient handling
	of {expose} events, {icon} images or for animation.  Compare
	{bitmap}.

	[Xlib Guide].

pizza box

	[Sun] The largish thin box housing the electronics in
	(especially {Sun}) desktop {workstation}s, so named because of
	its size and shape and the dimpled pattern that looks like air
	holes.

	Two megabyte single-platter removable disk packs used to be
	called pizzas, and the huge drive they were stuck into was
	referred to as a pizza oven.  It's an index of progress that
	in the old days just the disk was pizza-sized, while now the
	entire computer is.

PJPEG

	{Progressive JPEG}

pklite

	An executable file {compression} utility for {MS-DOS}.  It
	compresses the body of the executable and adds a small, fast
	decompress routine in the header.  In many cases it performs
	better than {lzexe}.  With {headpack} the output is smaller
	and cannot be decompressed.

pkunzip

	<tool, compression> A decompression program written by
	{PKWare} and released on a freely distributable basis to
	encourage use of their compression system {PKZip}.  It is
	recommended that you use version 2.04g or later.  It is mainly
	for {IBM PC}s but versions for other computers exist.

	{(ftp://ftp.pkware.com/pub/pkware/)}

	See also {gzip}, {compress}.

	(05 Jan 1995)

PKWare, Inc.

	<company, compression> The company which produces the {pkzip}
	and {pkunzip} compression tools and libraries.  They are
	mainly for {IBM PC}s.

	{(ftp://ftp.pkware.com/pub/pkware/)}

	[E-mail?]

	(05 Jan 1995)

pkzip

	<tool> A file {compression} and archiver utility for {MS-DOS}
	from {PKWare}.  It uses a variation on the {sliding window}
	compression {algorithm}.  Comes with {pkunzip} and {pklite}
	and is available from most {FTP archive}s in a self expanding
	format for {MS-DOS} usually called pk204g.exe.

	If you use PKZip or Unzip you are recommended to use the
	latest version: 2.04g (27 Sep 1995).

	{WINZIP} is a version with a {GUI} for {Microsoft Windows}.

	A distribution in about 22 Jun 1995 claiming to be "PKZIP 3"
	was actually a {trojan horse} which attempted to reformat the
	hard disk and delete all files on it.

	{(ftp://ftp.pkware.com/pub/pkware/)}

	(29 Nov 1995)

PL1

	<spelling> Misspelling of "{PL/I}".

	(13 Dec 1996)

PL/1

	<spelling> Misspelling of "{PL/I}".

	(13 Dec 1996)

PL-11

	<language> A high-level machine-oriented language for the
	{PDP-11} developed by R.D. Russell of CERN in Nov 1971.  It is
	similar to {PL360} and is written in {Fortran IV} and
	{cross-compile}d on other machines.

	(05 Jan 1995)

PL360

	{Structured assembly language} for the {IBM 360} and {IBM
	370}, with a few high-level constructs.  Syntactically it
	resembles {ALGOL 60}.  Its grammar is defined entirely by
	operator precedence.

	["PL/360, A Programming Language for the 360 Computers",
	N. Wirth, J ACM 15(1):37-74 (Jan 1968)].

	(05 Jan 1995)

PL516

	An {ALGOL}-like {assembly language} for the {DDP-516}, similar
	to {PL360}.

	["PL 516, An ALGOL-like Assembly Language for the DDP-516",
	B.A. Wichmann, Natl Phys Lab UK, Report CCU 9, 1970].

	(05 Jan 1995)

PL-6

	A {PL/I}-like system language for the {Honeywell} {operating
	system}, {CP-6}.

	(05 Jan 1995)

PL.8

	A systems dialect of {PL/I}, developed originally for the {IBM
	801} {RISC} {minicomputer}, later used internally for {IBM RT}
	and {R/6000} development.

	["An Overview of the PL.8 Compiler", M. Auslander et al, Proc
	SIGPLAN '82 Symp on Compiler Writing].

	(05 Jan 1995)

Pla

	High-level music programming language, written in SAIL.
	Includes concurrency based on message passing.  "Pla: A
	Composer's Idea of a Language", B. Schottstaedt, Computer
	Music J 7(1):11-20 (Winter 1983).

PLACE

	Programming Language for Automatic Checkout Equipment.

	["The Compiler for the Programming Language for Automatic
	Checkout Equipment (PLACE)", AFAPL TR-68-27, Battelle Inst,
	Columbus, May 1968].

PLAGO

	A translator-interpreter for a PL/I subset.  "PLAGO/360 User's
	Manual, Poly Inst Brooklyn.

plaid screen

	[XEROX PARC] A "special effect" that occurs when certain kinds
	of {memory smash}es overwrite the control blocks or image
	memory of a bit-mapped display.  The term "salt and pepper"
	may refer to a different pattern of similar origin.  Though
	the term as coined at PARC refers to the result of an error,
	some of the {X} demos induce plaid-screen effects deliberately
	as a {display hack}.

PLAIN

	Programming LAnguage for INteraction.  Pascal-like, with
	extensions for database, string handling, exceptions and
	pattern matching.  "Revised Report on the Programming Language
	PLAIN", A. Wasserman, SIGPLAN Notices 6(5):59-80 (May 1981).

plain ASCII

	/playn-as'kee/ {flat ASCII}.

Plain Old Telephone System

	{Public Switched Telephone Network}

plain TeX

	<publication> {Donald Knuth}'s original set of user-level
	{macros} for interaction with his {TeX} formatter.  Dedicated
	TeX fans still prefer these over the more {user-friendly}
	{LaTeX} macros used by the majority of the TeX community.

	(20 Nov 1997)

plaintext

	<cryptography> A message before {encryption} or after
	decryption, i.e. in its usual form which anyone can read, as
	opposed to its encrypted form ("{ciphertext}").

	(10 May 1995)

PLAN

	<language> Programming LANguage Nineteen hundred.

	The {assembly language} for {ICL 1900} series computers.

	(21 Mar 1995)

.plan

	<operating system> See {plan file}.

Plan 9

	<operating system> (Named after the classically bad,
	exceptionally low-budget SF film "Plan 9 from Outer Space") An
	{operating system} developed at {Bell Labs} by many
	researchers previously intimately involved with {Unix}.

	Plan 9 is superficially Unix-like but features far finer
	control over the {name-space} (on a per-process basis) and is
	inherently distributed and scalable.

	Plan 9 is divided according to service functions.  CPU servers
	concentrate computing power into large multiprocessors; file
	servers provide repositories for storage and terminals give
	each user of the system a dedicated computer with bitmap
	screen and mouse on which to run a window system.  The sharing
	of computing and file storage services provides a sense of
	community for a group of programmers, amortises costs and
	centralises and hence simplifies management and
	administration.

	The pieces communicate by a single protocol, built above a
	reliable data transport layer offered by an appropriate
	network, that defines each service as a rooted tree of files.
	Even for services not usually considered as files, the unified
	design permits some simplification.  Each process has a local
	file name space that contains attachments to all services the
	process is using and thereby to the files in those services.
	One of the most important jobs of a terminal is to support its
	user's customised view of the entire system as represented by
	the services visible in the name space.

	{Documentation (ftp://plan9.att.com/dist/plan9doc/)} (an FTP
	server running Plan 9).

Planet

	["An Experiment in Language Design for Distributed Systems",
	D. Crookes et al, Soft Prac & Exp 14(10):957-971 (Oct 1984)].

plan file

	<operating system> On {Unix} systems that support {finger},
	the ".plan" file in a user's {home directory} is displayed
	when the user is fingered.  This feature was originally
	intended to be used to keep potential fingerers apprised of
	one's location and near-future plans, but has been turned
	almost universally to humorous and self-expressive purposes
	(like a {sig block}).  See also {Hacking X for Y}.

	A later innovation in plan files was the introduction of
	"scrolling plan files" which are one-dimensional animations
	made using only the printable {ASCII} character set, {carriage
	return} and {line feed}, avoiding terminal specific {escape
	sequences}, since the {finger} command will (for security
	reasons; see {letterbomb}) not pass the {escape} character.

	Scrolling .plan files have become art forms in miniature, and
	some sites have started competitions to find who can create
	the longest running, funniest, and most original animations.
	A compiler (ASP) is available on {Usenet} for producing them.
	Typical animation components include:

	 Centipede:		 mmmmme
	 Lorry/Truck:		 oo-oP
	 Andalusian Video Snail: _@/

	In the mid-1990s {WWW} {home pages} largely supplanted .plan
	files, providing a much richer forum for the publication of
	personal minutiae and digital creativity.

	See also {twirling baton}.

	(16 Jan 1998)

PLANIT

	Programming LANguage for Interaction and Teaching.  CAI
	language.  "PLANIT - A Flexible Language Designed for
	Computer-Human Interaction", S.L. Feingold, Proc FJCC 31,
	AFIPS (Fall 1967) Sammet 1969, p.706.

Plankalkl

	(Or "Plankalkuel" if you don't have umlauts).  The first
	programming language, by {Konrad Zuse}, ca. 1945.  Zuse wrote
	"Rechenplan allgemeiner Struktur" in 1944 which developed into
	Plankalkl.  Plankalkl included {array}s and {record}s and
	used a style of {assignment} in which the new value appears on
	the right.

	Zuse wrote Plankalkl for his {Z3} computer (finished before
	1945) and implemented it on there as well.  Much of his work
	may have been either lost or confiscated in the aftermath of
	World War II.

	["The Plankalkl of Konrad Zuse", F.L. Bauer et al, CACM
	15(7):678-685 (Jul 1972)].

PLANNER

	A language for writing {theorem prover}s by {Carl Hewitt}
	<hewitt@ai.mit.edu> {MIT} 1967.  Never fully implemented.

	{CONNIVER} was an outgrowth of {PLANNER} and {microPLANNER} a
	subset.  {PLASMA} is a PLANNER-like system modelled on
	{Actors}.  See also {POPLER}, {QLISP}, {Scheme}.

	["PLANNER: A Language for Proving Theorems in Robots", Carl
	Hewitt, Proc IJCAI-69, Wash DC, May 1969].

Planner-73

	The original name for {PLASMA}.

PLANS

	Programming Language for Allocation and Network Scheduling.  A
	PL/I preprocessor, used for developing scheduling algorithms.
	"A User's Guide to the Programming Language for Allocation and
	Network Scheduling", H.R.  Ramsey et al, TR SAI-77-068-DEN,
	Science Applications Inc (Jun 1977).

plants

	["The Algorithmic Beauty of Plants", Przemyslaw Prusinkiewicz,
	Aristid Lindenmayer. New York: Springer-Verlag, 1990.
	3-54097297-8].

PLASMA

	PLAnner-like System Modelled on Actors.  {Carl Hewitt}, 1975.
	The first {actor} language.  Originally called Planner-73, and
	implemented in MacLisp.  Lisp-like syntax, but with several
	kinds of parentheses and brackets.

	["A PLASMA Primer", B. Smith et al, AI Lab Working Paper 92,
	MIT Oct 1975].

	["Viewing Control Structures as Patterns of Passing Messages",
	C. Hewitt, AI Lab Memo 410, MIT 1976].

platform

	Specific computer hardware, as in the phrase
	"platform-independent".  It may also refer to a specific
	combination of hardware and {operating system} and/or
	{compiler}, as in "this program has been ported to several
	platforms".  It is also used to refer to support software for
	a particular activity, as in "This program provides a platform
	for research into routing protocols".

	(07 Dec 1994)

Platform Independent Graphical User Interface

	(PIGUI) {The PIGUI FAQ
	(ftp://rtfm.mit.edu/pub/usenet/news.answers/portable-GUI-software/)}.

	[Summary?]

	(22 Nov 1994)

platinum-iridium

	<standard> A standard, against which all others of the same
	category are measured.  Usage: silly.

	The notion is that one of whatever it is has actually been
	cast in platinum-iridium alloy and placed in the vault beside
	the Standard Kilogram at the International Bureau of Weights
	and Measures near Paris, as the bar defining the standard
	{metre} once was.

	"This {garbage collection} {algorithm} has been tested against
	the platinum-iridium cons cell in Paris."

	Compare {golden}.

	(20 Feb 1997)

Platon

	Distributed language based on asynchronous message passing.

	["Message Passing Communication Versus Procedure Call
	Communication", J. Staunstrup, Soft Prac & Exp 12(3):223-234
	(Mar 1982)].

	["Platon Reference Manual", S. Soerensen et al, RECAU, U
	Aarhus, Denmark].

PLAY

	A language for {real-time} music synthesis.  1977.

	["An Introduction to the Play Program", J. Chadabe ete al,
	Computer Music J 2,1 (1978)].

play by electronic mail

	<games> A kind of game where the players use {electronic mail}
	to communicate.  This may be done via a human {moderator} or
	an automatic {mailing list} {exploder} on some central machine
	or it may be fully distributed with each player just
	addressing his mail to all other players.

	This is a natural extension of "play by mail" games conducted
	via {snail mail}.

	{(http://fermi.clas.virginia.edu/~gl8f/pbm.html)}.  {Usenet}
	newsgroup: {news:rec.games.pbm}.

	(27 Oct 1994)

Playground

	A visual language for children, developed for Apple's Vivarium
	Project.  OOPSLA 89 or 90?

Play, Inc.

	<company> The company which designed and markets {Snappy Video
	Snapshot}.

	{Home (http://www.play.com)}.

	(11 Jul 1997)

playpen

	(IBM) A room where programmers work.

	Compare {salt mines}.

Playstation

	<games, hardware> A {games console} from {Sony Corporation}.

	{Home (http://www.scea.sony.com/playstation/)}

	{FAQ
	(http://www.flex.net/users/cjayc/vgfa/system/sony_psx.txt)}.

	[Features?]

	(21 Mar 1996)

playte

	<data, jargon> /playt/ 16 {bits}, by analogy with {byte}.
	Usage: rare and extremely silly.

	See also {dynner}, {crumb}.

	(03 Dec 1997)

PLC

	{Programmable Logic Controller}

PL/C

	<language> A subset of {PL/I} for student use.

	["User's Guide to PL/C", S. Worona et al, Cornell, June 1974].

	["PL/C - A High Performance Compiler" H.L. Morgan et al, Proc
	SJCC, AFIPS 38:503-510 (1971)].

	(28 Feb 1995)

plenum cable

	<hardware> Cable that that can be (legally) installed in the
	plenum (the space between a ceiling and the floor above it).
	Such cable is (usually) teflon-coated so that it will not give
	off toxic fumes when burned.  In some parts of the world such
	cable is required by law.

	(25 Aug 1996)

pleonasm

	Redundancy of expression; tautology.

	(25 Mar 1995)

plesiochronous

	<communications> Nearly synchronised.

	A term describing a communication system where transmitted
	signals have the same nominal digital rate but are
	synchronised on different clocks.

	According to {ITU-T} {standard}s, corresponding signals are
	plesiochronous if their significant instants occur at
	nominally the same rate, with any variation in rate being
	constrained within specified limits.  (28 Feb 1995)

	(02 Mar 1995)

Plesiochronous Digital Hierarchy

	<communications> (PDH) A transmission system for voice
	communication using {plesiochronous} synchronisation.

	PDH is the conventional {multiplexing} technology for network
	transmission systems.  PDH is being replaced by {SONET} and
	other SDH ({Synchronous Digital Hierarchy}) schemes.  Service
	levels are described with terms like {DS1}, as in {ISDN}.

	(02 Mar 1995)

Pleuk grammar development system

	A shell for grammar development by Jo Calder
	<jcalder@cs.sfu.ca>, Kevin Humphreys <kwh@cogsci.ed.ac.uk>,
	Chris Brew <chrisbr@cogsci.ed.ac.uk>, Mike Reape
	<mreape@cs.tcd.ie>.  It handles various grammatical formalisms
	and requires {SICStus Prolog} version 2.1#6 or later.

	Version 1.0

	{(ftp://ai.uga.edu/ai.natural.language/)}

	E-mail: <pleuk@cogsci.ed.ac.uk>.

	(18 Jun 1993)

Plexus

	A modular {World-Wide Web} {server} written in {Perl} by Tony
	Sanders <sanders@earth.com>.  Comes with interfaces to allow
	many other information services to be served via the Web.

	{Version 3.0m 22 Jul 1994 (ftp://ftp.earth.com/plexus/)}

	(22 Jul 1994)

PL/I

	Programming Language One.

	An attempt to combine the best features of {FORTRAN}, {COBOL}
	and {ALGOL 60}.  Developed by George Radin of {IBM} in 1964.
	Originally named NPL and FORTRAN VI.  The result is large but
	elegant.  PL/I was one of the first languages to have a formal
	{semantic} definition, using the {Vienna Definition Language}.
	{EPL}, a dialect of PL/I, was used to write almost all of the
	{Multics} {operating system}.  PL/I is still widely used
	internally at {IBM}.  The PL/I standard is ANS X3.53-1976.

	PL/I has no {reserved word}s.  Types are fixed, float,
	complex, character strings with maximum length, bit strings,
	and label variables.  {Array}s have lower bounds and may be
	dynamic.  It also has summation, multi-level structures,
	{structure assignment}, untyped pointers, {side effect}s and
	{aliasing}.  {Control flow} constructs include goto; do-end
	groups; do-to-by-while-end loops; external procedures;
	internal nested procedures and blocks; {generic procedure}s
	and {exception handling}.  Procedures may be declared
	{recursive}.  Many implementations support {concurrency}
	('call task' and 'wait(event)' are equivalent to {fork}/join)
	and compile-time statements.

	{LPI} is a PL/I {interpreter}.

	["A Structural View of PL/I", D. Beech, Computing Surveys, 2,1
	33-64 (1970)].

	(25 Oct 1994)

PL/I-FORMAC

	A variant of {FORMAC}.

	["The PL/I-FORMAC Interpreter", J.  Xenakis, Proc 2nd Symp
	Symbolic and Algebraic Manip, ACM (Mar 1971)].

	[Sammet 1969, p. 486].

	(25 Oct 1994)

pling

	{Commonwealth Hackish} spoken name for exclamation mark ("!"
	ASCII 33).  Used by {Acorn Archimedes} owners.  {Bang} is more
	common in the USA.

plingnet

	{UUCPNET}.  See also {pling}.

PLisp

	1. PostScript Lisp?  A {Common Lisp} translator and
	programming environment in {PostScript} by John Peterson
	<peterson-john@cs.yale.edu>.

	2. Pattern LISP.  1990.  A {pattern-matching} rewrite-rule
	language, optimised for describing syntax translation rules.
	(See {LISP70}).

PL/I SUBSET

	An early 70's version of {PL/I} for {minicomputer}s.

PL/I Subset G

	("General Purpose") The commercial {PL/I} subset, i.e. what was
	actually implemented by most vendors.  ANS X3.74-1981.

PLITS

	Programming Language In The Sky.  A computational model for
	concurrency with communication via {asynchronous
	message-passing}.

	["High Level Programming for Distributed Computing",
	J.A. Feldman, CACM 22(6):353- 368 (Jun 1979)].

PLL

	{phase-locked loop}

PL/M

	Programming Language/Microcomputers.  MAA (later Digital
	Research) for Intel, 1972.  A very low level language
	incorporating ideas from PL/I, ALGOL and XPL.  Integrated
	macro processor.  Originally the implementation language for
	CP/M.  "PL/M-80 Programming Manual", Doc 98-268B, Intel 1976.
	"A Guide to PL/M Programming for Microcomputer Applications",
	D. McCracken, A-W 1978.  Versions: PL/M-80, PL/M-86, PL/M-286.

plokta

	/plok't*/ Press Lots Of Keys To Abort.  To press random keys
	in an attempt to get some response from the system.  One might
	plokta when the abort procedure for a program is not known, or
	when trying to figure out if the system is just sluggish or
	really hung.  Plokta can also be used while trying to figure
	out any unknown key sequence for a particular operation.
	Someone going into "plokta mode" usually places both hands
	flat on the keyboard and mashes them down, hoping for some
	useful response.

	A slightly more directed form of plokta can often be seen in
	mail messages or {Usenet} articles from new users - the text
	might end with

	       ^X^C
	       q
	       quit
	       :q
	       ^C
	       end
	       x
	       exit
	       ZZ
	       ^D
	       ?
	       help

	as the user vainly tries to find the right exit sequence, with
	the incorrect tries piling up at the end of the message.

plonk

	<networking, abuse> (Possibly influenced by British slang
	"plonk" for cheap booze, or "plonker" for someone behaving
	stupidly) The sound a {newbie} makes as he falls to the bottom
	of a {kill file}.  Used almost exclusively in the {Usenet}
	{newsgroup} {news:talk.bizarre}, this term (usually written
	"*plonk*") is a form of public ridicule.

	(25 Oct 1995)

plotter

	<hardware> A device that uses one or more pens that can be
	raised, lowered and moved over the printing media to draw
	graphics or text.

	The heart of the plotter is the printer head assembly,
	consisting of a horizontal bar and, attached to it, the head
	assembly holding the pen in use.  The pen can be positioned
	horizontally by moving the pen assembly along the bar.
	Vertical positioning is achieved by either moving the bar
	(stationary page plotter) or the paper (rolling page plotter).
	Combinations of horizontal and vertical movement are used to
	draw arbitrary lines and curves in a single action, in
	contrast to {printers} which usually scan horizontally across
	the page.

	Colour plots can be made by using more than one pen.  Older
	plotters required a separate pen for each colour and the pens
	had to be changed by hand.  Modern colour plotters usually use
	only four pens (cyan, magenta, yellow, and black, see {CMYK})
	and need no human intervention to change them.

	Monochromatic plotters have been largely phased out by {laser
	printers} except when large paper size is needed, e.g. in
	{CAD}.

	(10 Jan 1996)

PL/P

	Programming Language, Prime.  Russ Barbour, PRIME Computer,
	late 70's.  Subset of PL/I used internally for implementation
	of PRIMOS.  (See SPL[4]).

PL/PROPHET

	PL/I-like language for the PROPHET system, used by
	pharmacologists.  "The Implementation of the PROPHET System",
	P.A.  Castleman et al, NCC 43, AFIPS (1974).

PL/S

	Programming Language/Systems.

	IBM late 60's, for the IBM 360 and 370.

	A machine-oriented language derived from PL/I, permiting
	inline assembly code and control over {register} usage.

	Much of IBM 360 OS/MFT/MVT/SVS/{MVS} was written in it.  Used
	internally, never released to the public.  Documented by
	various IBM internal ZZ-? publications.

	Versions: PLS1, PLSII.

	["PL/S, Programming Language/Systems", W.R. Brittenham, Proc
	GUIDE Intl, GUIDE 34, May 14, 1972, pp. 540-556].

	(15 Feb 1995)

PL/Seq

	Programming Language for Sequences.  A DSP language.  "A
	General High Level Language for Signal Processors", J. Skytta
	& O. Hyvarinen, Digital Signal Processing 84, Proc Intl Conf,
	Fiorence, Italy, Sep 1984, pp.217-221.

PLTL

	{Propositional Linear Temporal Logic}

plug and play

	<jargon> 1. Hardware or software that, after being installed
	("plugged in"), can immediately be used ("played with"), as
	opposed to hardware or software which requires configuration.

	See also {turnkey}, {plug and pray}.

	2. A new recruit who needs no training.  "The new guy, John,
	is great.  He's totally plug-and-play."

	(30 Mar 1997)

plug and pray

	<humour> The {Windows 95} equivalent of the {Macintosh}'s
	{plug and play}, referring to difficulties encountered when
	setting up new {hardware} under Windows 95.

	(11 Oct 1997)

Pluggable Authentication Module

	<security> (PAM) The new industry standard integrated {login}
	{framework}.  PAM is used by system entry components, such as
	the {Common Desktop Environment}'s dtlogin, to authenticate
	users logging into a {Unix} system.  It provides pluggability
	for a variety of system-entry services.  PAM's ability to
	{stack} authentication {modules} can be used to integrate
	{login} with different authentication mechanisms such as
	{RSA}, {DCE} and {Kerberos}, and thus unify login mechanisms.
	PAM can also integrate {smart card} authentication.

	{White paper (http://www.gr.osf.org/book/psm-wppr.htm)}.

	[OSF-RFC 86.0 V. Samar, R. Schemers, "Unified Login with
	Pluggable Authentication Modules (PAM)", Oct 1995].

	(18 Jul 1997)

plugh

	<games> /ploogh/ A magic word from the {ADVENT} game.

	(01 Apr 1996)

plug-in

	<tool> A file containing data used to alter, enhance, or
	extend the operation of a parent {application program}.  One
	of the first uses of this term was in {Silicon Beach}'s
	{SuperPaint} application (late 1980s?) for the {Macintosh}.
	It had a Plug-ins {folder} containing different tools and
	effects.

	The {Netscape Navigator} {World-Wide Web} {browser} supports
	plug-ins which display or interpret a particular file format
	or {protocol} such as {Shockwave}, {RealAudio}, {Adobe} {PDF},
	{Corel CMX} ({vector graphics}).  The file to be displayed is
	included in a {web page} using an <EMBED ...> {HTML} {tag}.

	Plug-ins, both commercially and indepently authored, can
	usually be downloaded for free and are stored locally.
	Plug-ins come in different versions specific to particular
	{operating systems} ({Microsoft Windows 3.1}, 3.2, and
	{Macintosh} are available).

	Compare {applet}.

	{Plug-in Plaza (http://www.browserwatch.com/plug-in.html)}.

	{PC Mag Plug-ins
	(http://www.zdnet.com/pcmag/IU/plugins/plugins.htm)}.

	(25 May 1996)

PLUM

	A {compiler} for a substantial subset of {PL/I} for the
	{Univac 1100}, from the {University of Maryland}.

	["PL/I Programming with PLUM", M.V. Zelkowitz, Paladin House,
	1978].

	(23 Feb 1995)

plumbing

	(Unix) Term used for {shell} code, so called because of the
	prevalence of "{pipeline}s" that feed the output of one
	program to the input of another.  Under {Unix}, user utilities
	can often be implemented or at least prototyped by a suitable
	collection of pipelines and temporary file {grind}ing
	encapsulated in a {shell script}.  This is much less effort
	than writing {C} every time, and the capability is considered
	one of Unix's major winning features.  A few other {operating
	system}s such as {IBM}'s {VM/CMS} support similar facilities.

	The {tee} utility is specifically designed for plumbing.

	(23 Feb 1995)

Plural EuLisp

	EuLisp with parallel extensions.  "Collections and Garbage
	Collection", S.C. Merall et al, in Memory Management - IWMM92,
	Springer 1992, pp.473-489.

PLUS

	Late 60's.  Machine-oriented systems language used internally
	by Univac.

plus

	+

	Common: {ITU-T}: plus; add.  Rare: cross; {INTERCAL}:
	intersection.

PLUSS

	Proposition of a Language Useable for Structured
	Specifications.  Algebraic specification language, built on
	top of ASL.  "A First Introduction to PLUSS", M.C. Gaudel, TR,
	U Paris Sud, Orsay 1984.

PM

	1. {preventive maintenance}.

	2. {Presentation Manager}

	3. ["PM, A System for Polynomial Manipulations", G.E. Collins,
	CACM 9(8):578-589 (Aug 1966)].

pm2

	<compiler, emulator> A software emulator for parallel random
	access machine (PRAM) and a parallel {Modula-2} compiler for the
	emulator.  pm2 programming language is Modula-2/Pascal mixture
	having extensions for parallel execution in a PRAM.
	Parallelism is expressed by pardo-loop-structure.  Additional
	features include private/shared variables, two synchronisation
	strategies, load balancing and parallel dynamic memory
	allocation.

	{(ftp://cs.joensuu.fi/pub/Software/pram/)}.

	E-mail: Simo Juvaste <sjuva@cs.joensuu.fi>.

	(04 Jun 1997)

P-mail

	Physical mail, as opposed to {e-mail}.  Synonymous
	with {snail-mail}.

PMC

	{PCI Mezzanine Card}

PML

	Parallel {ML}.

	["Synchronous Operations as First-Class Values", J.H.  Reppy
	<jhr@research.att.com>, Proc SIGPLAN 88 Conf Prog Lang Design
	and Impl, June 1988, pp. 250-259].

pnambic

	/p*-nam'bik/ (From the scene in the film, "The Wizard of Oz"
	in which the true nature of the wizard is first discovered:
	"Pay no attention to the man behind the curtain"). A term
	coined by Daniel Klein <dvk@lonewolf.com> for a stage of
	development of a process or function that, owing to incomplete
	implementation or to the complexity of the system, requires
	human interaction to simulate or replace some or all of its
	actions, inputs or outputs.  The term may also be applied to a
	process or function whose apparent operations are wholly or
	partially falsified or one requiring {prestidigitization}.

	The ultimate pnambic product was "Dan Bricklin's Demo", a
	program which supported flashy user-interface design
	prototyping.

	There is a related maxim among hackers: "Any sufficiently
	advanced technology is indistinguishable from a rigged demo."
	See {magic} for illumination of this point.

	["Open Channel", IEEE "Computer", November 1981].

	(01 Nov 1994)

PNG

	{Portable Network Graphics}

PNP

	1. <electronics> A type of {bipolar transistor} consisting of
	a layer of N-doped {semiconductor} (the "base") between two
	P-doped layers (the "collector" and "emitter").  PNP
	transistors are commonly operated with the emitter at {ground}
	and the collector at a negative {voltage}.

	In the 1960s, the germanium PNP transistor was the cheapest
	and best for use at ordinary temperatures.  The {leakage
	current} from collector to base in this type of device is
	larger than for the silicon transistor, and also varies more
	with temperature.  The effect of these deficiencies can be
	lessened by proper biasing and feedback, which can make the
	circuit both serviceable and reliable.  Neither germanium nor
	PNP transistors are as common today.

	The voltages used on a PNP transistor are inverted when
	compared with {vacuum tubes}.  Further, the behaviour of
	vacuum tubes is usually described in terms of {voltages}
	whereas transistors are better described in terms of
	{current}.

	2. <architecture> {plug and play}.

	(05 May 1997)

PNU-Prolog

	A parallel extension of NU-Prolog, implemented as a
	preproccessor.

	{(ftp://munnari.oz.au/pub/bebop.tar.Z)}

POC

	Point Of Contact.  An individual associated with a particular
	Internet entity (IP network, domain, ASN).

POCAL

	PETRA Operator's CommAnd Language.

pocket calculator

	<computer> A small battery-powered digital electronic device
	for performing simple arithmetic operations on data input on a
	keypad and outputting the result (usually a single number) to
	a simple {LCD} or other display.

	The most sophisticated programmable calculators are really
	{pocket computers} which are limited to handling numerical
	data only.

	(23 Dec 1996)

pocket computer

	<computer> (Or "plamtop") A small general-purpose programmable
	computer cabable of operating from batteries and of handling
	both numbers and text (in contrast to most {pocket
	calculators}).

	The {Psion Organiser} is one of the best known examples.  [Was
	it the first?]

	(23 Dec 1996)

pod

	[allegedly from abbreviation POD for "Prince Of Darkness"] A
	{Diablo} 630 (or, latterly, any {letter-quality} {impact
	printer}).  From the {DEC-10} {PODTYPE} program used to feed
	formatted text to it.  Not to be confused with {P.O.D.}.

P.O.D.

	Piece Of Data (as opposed to code).

POE

	{PowerOpen Environment}

POFAC

	A subset of {Fortran}.

	[Mentioned in Machine Oriented Higher Level Languages, W. van
	der Poel, N-H 1974, p. 273].

	["POFAC Description", R.  Haentjens, Report 19, Cenre
	d'Information, Ecole Royale Militaire, Brussels, 1973].

	(20 Oct 1994)

POGO

	Early system on G-15.  Listed in CACM 2(5):16 (May 1959).

point

	<text, unit> (Sometimes abbreviated "pt") The unit of
	measurement for {text} {character}s.  One point is 1/72 inches
	(approx 0.35mm) so 12 point text would be 1/6th inch (approx
	4.2mm) high when printed.

	(07 Jun 1996)

point-and-drool interface

	<abuse> (Or "point-and-grunt interface") A parody of
	"{point-and-shoot interface}", describing a windows, icons,
	and mouse-based interface such as is found on the {Macintosh}.
	The implication, of course, is that such an interface is only
	suitable for idiots.

	See {for the rest of us}, {WIMP}, {Macintrash}, {drool-proof
	paper}.

	(22 Dec 1994)

pointed domain

	In most formulations of {domain theory}, a {domain} is defined
	to have a {bottom} element and {algebraic} {CPO}s without
	bottoms are called "{predomain}s".  David Schmidt's domains do
	not have this requirement and he calls a domain with a bottom
	"pointed".

pointer

	<programming> An address, from the point of view of a
	programming language.  A pointer may be typed, with its type
	indicating the type of object to which it points.

	{Tony Hoare} once said:

	Pointers are like jumps, leading wildly from one part of the
	data structure to another.  Their introduction into high-level
	languages has been a step backwards from which we may never
	recover.

	[C.A.R.Hoare "Hints on Programming Language Design", 1973,
	Prentice-Hall collection of essays and papers by Tony Hoare].

	(06 Feb 1995)

pointer swizzling

	{swizzle}

pointing device

	<hardware> Any hardware component that allows a user to input
	spatial data to a computer.  {CAD} systems and {Graphical User
	Interfaces} (GUI) allow the user to control and provide data
	to the computer using physical "gestures" - {point}, {click},
	and {drag} - typically by moving a hand-held {mouse} across
	the surface of the physical desktop and activating switches on
	the mouse.  Movements of the pointing device are echoed on a
	graphical representation of a desktop on the screen by
	movements of the {mouse pointer} and other visual changes.

	While the most common pointing device by far is a mouse, other
	kinds include {tracker ball}, {trackpad}, {lightpen}, various
	kinds of {digitising tablets} which use a stylus, and even a
	special "{data glove}" that translates the user's movements to
	computer gestures.

	(03 Feb 1997)

point of presence

	(PoP) A site where there exists a collection of
	telecommunications equipment, usually {modem}s, digital leased
	lines and {multi-protocol router}s.  An {Internet access
	provider} may operate several PoPs distributed throughout
	their area of operation to increase the chance that their
	subscribers will be able to reach one with a local telephone
	call.  The alternative is for them to use {virtual PoP}s
	(virtual points of presence) via some third party.

	(13 Dec 1994)

point of sale terminal

	<hardware> (Or "POS") A computer, probably with a {bar code}
	reader, serving as a glorified cash register.

	(23 Nov 1997)

Point-to-Point Protocol

	<communications, protocol> (PPP) The {protocol} defined in
	{RFC 1661}, the {Internet} standard for transmitting {network
	layer} {datagrams} (e.g. {IP} packets) over serial
	point-to-point links.

	PPP has a number of advantages over {SLIP}; it is designed to
	operate both over {asynchronous} connections and bit-oriented
	{synchronous} systems, it can configure connections to a
	remote network dynamically, and test that the link is usable.
	PPP can be configured to encapsulate different network layer
	protocols (such as {IP}, {IPX}, or {AppleTalk}) by using the
	appropriate {Network Control Protocol} (NCP).

	{RFC 1220} describes how PPP can be used with remote bridging.

	{Usenet} newsgroup: {news:comp.protocols.ppp}.

	{A paper on PPP
	(ftp://ftp.uu.net/vendor/MorningStar/papers/sug91-cheapIP.ps.Z)}.

	(13 Dec 1994)

Poisson distributions

	<mathematics> A {probability distribution} used to describe
	the occurrence of unlikely events in a large number of
	independent repreated trials.

	Poisson distributions are often used in building simulated
	user loads.

	(12 Oct 1995)

poke

	The {BASIC} command to write a value to an absolute address.

	See {peek}.

	(31 Jan 1995)

Polka

	An {object-oriented}, parallel {logic programming} language,
	built on top of {Parlog}.

	["Polka: A Parlog Object-Oriented Language", Andrew Davison
	<ad@mullauna.cs.mu.oz.au>, TR, Parlog Group, Imperial College,
	London 1988].

	(31 Jan 1995)

poll

	To check the status of an input line, sensor, or memory
	location to see if a particular external event has been
	registered.

	Contrast {interrupt}.

	(31 Jan 1995)

polling

	See {poll}.

Poly

	1. D.C.J. Matthews, Cambridge, early 80's.  Polymorphic,
	block-structured.

	"An Overview of the Poly Programming Language", D.C.J.
	Matthews <djcm@cl.cam.ac.uk>, in Data Types and Persistence,
	M.P. Atkinson et al eds, Springer 1988.

	2. St Andrews U, Scotland.  Software Prac & Exp, Oct 1986.

	3. {Polymorphic} language used in Polymorphic Programming
	Languages, David M. Harland, Ellis Horwood 1984.

polygon pusher

	(Or "rectangle slinger").  A chip designer who spends most of
	his or her time at the physical layout level (which requires
	drawing *lots* of multi-coloured polygons).

POLYGOTH

	<language> A distributed language integrating {class}es with a
	parallel block structure, including {multiprocedure}s and
	{fragment}s.

	["Operational Semantics of a Distributed Object-Oriented
	Language and its Z Formal Specification", M. Benveniste
	<mbenveni@irisa.irisa.fr>, TR532, IRISA/INRIA-Rennes].

	(17 Oct 1995)

polylithism

	<programming> A property of a data-object that can exist in
	many shapes and sizes, but not simultaneously; which
	distinguishes it from a {union}.  It is often implemented as a
	set of {classes} (or structs) derived from a common {base
	class} (or with a common header, as in the case of structs),
	typically without any {methods}.

	It has been loosely described as {polymorphic} data.

	[Clarification?]

	(07 Jan 1996)

Poly/ML

	{SML} implemented in D.C.J. Matthews's {Poly}, for {Motorola
	68020} and {SPARC}.

	Abstract Hardware Ltd. <ahl@ahl.co.uk>.

polymorphic

	See {polymorphism}.

polymorphic lambda-calculus

	(Or "second order typed lambda-calculus").  An extension of
	{typed lambda-calculus} allowing functions which take types as
	parameters.  E.g. the {polymorphic} function "twice" may be
	written:

	 	twice = /\ t . \  (f :: t -> t) . \ (x :: t) . f (f x)

	(where "/\" is an upper case Greek lambda and "(v :: T)" is
	usually written as v with subscript T).  The parameter t will
	be bound to the type to which twice is applied, e.g.:

		twice Int

	takes and returns a function of type Int -> Int.  (Actual type
	arguments are often written in square brackets [ ]).  Function
	twice itself has a higher type:

		twice :: Delta t . (t -> t) -> (t -> t)

	(where Delta is an upper case Greek delta).  Thus /\
	introduces an object which is a function of a type and Delta
	introduces a type which is a function of a type.  Polymorphic
	lambda-calculus was invented by Jean-Yves Girard in 1971 and
	independently by John C. Reynolds in 1974.

	(16 Dec 1994)

polymorphism

	A concept first identified by Christopher Strachey (1967) and
	developed by Hindley and Milner, allowing types such as list
	of anything.  E.g. in {Haskell}:

		length :: [a] -> Int

	is a function which operates on a list of objects of any type,
	a (a is a type variable).  This is known as parametric
	polymorphism.  Polymorphic typing allows strong type checking
	as well as generic functions.  {ML} in 1976 was the first
	language with polymorphic typing.

	Ad-hoc polymorphism (better described as {overloading}) is the
	ability to use the same syntax for objects of different types,
	e.g. "+" for addition of reals and integers or "-" for unary
	negation or diadic subtraction.  Parametric polymorphism
	allows the same object code for a function to handle arguments
	of many types but overloading only reuses syntax and requires
	different code to handle different types.

	See also {generic type variable}.

	In {object-oriented programming}, the term is used to describe
	variables which may refer at run-time to objects of different
	{class}es.

polynomial

	1. <mathematics> An arithmetic expression composed by summing
	multiples of powers of some variable.

		P(x) = sum a_i x^i for i = 0 .. N

	The multipliers, a_i, are known as "{coefficient}s" and N, the
	highest power of x with a non-zero coefficient, is known as
	the "degree" of the polynomial.  If N=0 then P(x) is constant,
	if N=1, P(x) is linear in x.  N=2 gives a "{quadratic}" and
	N=3, a "cubic".

	2. <complexity> {polynomial-time}.

polynomial-time

	<complexity> (P) The set or property of problems which can be
	solved by a known {polynomial-time algorithm}.

	(10 Apr 1995)

polynomial-time algorithm

	<complexity> A known {algorithm} (or {Turing Machine}) that is
	guaranteed to terminate within a number of steps which is a
	{polynomial} function of the size of the problem.

	See also {computational complexity}, {exponential time},
	{nondeterministic polynomial-time} (NP), {NP-complete}.

	(13 Apr 1995)

POM

	{phase of the moon}

	Usually used in the phrase "POM-dependent", which means
	{flaky}.

	(10 Apr 1995)

Ponder

	A {non-strict} {polymorphic}, {functional language} by Jon
	Fairbairn <jf@cl.cam.ac.uk>.

	Ponder's type system is unusual.  It is more powerful than the
	{Hindley-Milner type} system used by {ML} and {Miranda} and
	extended by {Haskell}.  Ponder adds extra recursive 'mu' types
	to those of Girard's {System F}, allowing more general
	{recursion}.  Surprisingly, the type system and {type
	inference} {algorithm} are still not completely understood.

	["Ponder and its Type System", J. Fairbairn, TR 31, Cambridge
	U Computer Lab, Nov 1982].

	[J. Fairbairn, "Design and Implementation of a Simple Typed
	Language based on the Lambda-Calculus", Technical Report
	No. 75, Computer Laboratory, University of Cambridge, May
	1985].

	[J. Fairbairn, "A New Type-Checker for a Functional Language",
	Technical Report No. 53, Computer Laboratory, University of
	Cambridge, 1984].

	[J. Fairbairn, "Some Types with Inclusion Properties in
	\forall, \rightarrow, \mu", Technical Report No. 171, Computer
	Laboratory, University of Cambridge, Jun 1989].

	[Valeria C. V. de Paiva, "Subtyping in Ponder (Preliminary
	Report)", Technical Report No. 203, Computer Laboratory,
	University of Cambridge, Aug 1990].

Pong

	<game> A computer game invented in 1972 by {Atari}'s Nolan
	Bushnell.  The game is a minimalist rendering of table tennis.
	Each of the two players are represented as a white slab,
	controllable by a knob, which deflects a bouncing ball.  The
	goal of the game is to "AVOID MISSING BALL FOR HIGH SCORE".

	{Yahoo
	(http://www.yahoo.com/Recreation/Games/Video_Games/Classic_Arcade_Games/Titles/Pong/)}.

	(23 Nov 1997)

POOL

	Parallel Object-Oriented Language.

	A series of languages from {Philips Research Labs}.

	See {POOL2}, {POOL-I}, {POOL-T}.

	(07 Feb 1995)

POOL2

	Parallel Object-Oriented Language 2.

	Philips Research Labs, 1987.

	Strongly typed, synchronous message passing, designed to run
	on {DOOM} (DOOM = Decentralised Object-Oriented Machine).

	["POOL and DOOM: The Object- Oriented Approach", J.K. Annot,
	PAM den Haan, in Parallel Computers, Object-Oriented,
	Functional and Logic, P. Treleaven ed].

	["Issues in the Design of a Parallel Object-Oriented
	Language", P. America, Formal Aspects of Computing
	1(4):366-411 (1989)].

	(07 Feb 1995)

POOL-I

	One of the {POOL} languages.

	["A Parallel Object-Oriented Language with Inheritance and
	Subtyping", P. America et al, SIGPLAN Notices 25(10):161-168
	(OOPSLA/ECOOP '90) (Oct 1990)].

	(07 Feb 1995)

POOL-T

	Object-oriented, concurrent, synchronous.  Predecessor of
	POOL2.

	["Definition of the Programming Language POOL-T", Esprit
	Project 415, Doc.  0091, Philips Research Labs, Eindhoven,
	Netherlands, June 1985].

	(07 Feb 1995)

POP

	1. <language> A family of programming languages, {POP-1},
	{POP-2}, {POP-10}, {Pop-11}, {POP++}, {POP-9X}, {POPLOG}.

	2. {Post Office Protocol}.

	See also {pop}, {PoP}.

	(18 Feb 1996)

PoP

	<networking> {Point Of Presence}.

	(18 Feb 1996)

pop

	<programming> To remove something from the top of a {stack}.

	Opposite of {push}.

	Not to be confuse with {POP} or {PoP}.

	(18 Feb 1996)

POP++

	An object-oriented extension of {POPLOG}.  Available from
	Integral Solutions.

POP-1

	Package for Online Programming.  Edinburgh, 1966.  First of
	the POP family of languages.  Used reverse Polish notation.
	Implemented as a threaded interpreter.  EPU-R-17, U Edinburgh
	(Jul 1966).  "POP-1: An Online Language", R. Popplestone, Mach
	Intell 2, E. Dale et al eds, Oliver and Boyd, Edinburgh 1968.

POP-10

	Descendant of {POP}-2, for the {PDP-10} by Julian Davies,
	1973.  ["POP-10 User's Manual", D.J.M. Davies, CS R25, U West
	Ontario, 1976].

Pop-11

	Robin POPplestone, 1975.  Originally for the {PDP-11}.  In
	some ways, Pop-11 is like FORTH (stack-oriented, extensible,
	efficient).  It's also like LISP (functional, dynamically
	typed, interactive, garbage- collected).  And the syntax is
	like Pascal (block-structured).  "Programming in POP-11",
	J. Laventhol <jcl@deshaw.com>, Blackwell 1987.
	Implementations: AlphaPop for Mac (Computable Functions Inc,
	413-253-7637).  PopTalk, POPLOG (U Sussex) available for
	VAX/VMS and most workstations.  E-mail: Robin Popplestone
	<pop@cs.umass.edu> (413)253-7637

POP-2

	Robin POPplestone, Edinburgh, 1967.  An innovative language
	incorporating many of Landin's ideas, including streams,
	closures, and functions as first-class citizens.  ALGOL-like
	syntax.  The first implementation was named Multi-POP, based
	on a REVPOL function written in POP-1, producing the
	reverse-polish form as output.  "POP-2 Papers", R.M.  Burstall
	et al, Oliver & Boyd 1968.  "Programming in POP-2",
	R.M. Burstall et al, Edinburgh U Press 1971.  "POP-2 User's
	Manual", R. Popplestone, Mach Intell 2, E. Dale et al eds,
	Oliver and Boyd, Edinburgh 1968.

POP3

	<messaging, protocol> Version 3 of the {Post Office Protocol}.
	POP3 is defined in {RFC 1081}, written in November 1988 by
	Marshall Rose, which is based on RFC 918 (since revised as RFC
	937).  POP3 allows a {client} computer to retrieve {electronic
	mail} from a POP3 {server} via a (temporary) {TCP/IP} or
	other[?] connection.  It does not provide for sending mail,
	which is assumed to be done via {SMTP} or some other method.

	POP is useful for computers, e.g. mobile or home computers,
	without a permanent network connection which therefore require
	a "post office" (the POP server) to hold their mail until they
	can retrieve it.

	Although similar in form to the original POP proposed for the
	{Internet} community, POP3 is similar in spirit to the ideas
	investigated by the {MZnet} project at the University of
	California, Irvine, and is incompatible with earlier versions
	of POP.

	Substantial work was done on examining POP in a {PC}-based
	environment.  This work, which resulted in additional
	functionality in this protocol, was performed by the {ACIS}
	Networking Systems Group at {Stanford University}.

	RFC 1082 (POP3 Extended Service) extends POP3 to deal with
	accessing mailboxes for {mailing lists}.

	(09 Jan 1997)

POP-9X

	Proposed {BSI} standard for {Pop-11}.

POPART

	A {grammar}-driven programming environment generator.  Uses
	{Paddle}.

	["POPART: Producer of Paddles and Related Tools, System
	Builders' Manual", D.S. Wile TR RR-82-21, ISI, Marina del Rey,
	CA 1982].

	(30 Nov 1994)

POPCORN

	AI system built on POP-2.  "The POPCORN Reference Manual", S.
	Hardy, Essex U, Colchester, 1973.

POPJ

	/pop'J/ [{PDP-10} return-from-subroutine instruction]. To
	return from a digression.  By verb doubling, "Popj, popj"
	means roughly "Now let's see, where were we?"  See {RTI}.

Poplar

	Morris, 1978.  A blend of LISP with SNOBOL4 pattern matching
	and APL-like {postfix syntax}.  Implicit iteration over lists,
	sorting primitive.  "Experience with an Applicative
	String-Processing Language", J.H. Morris et al, 7th POPL, ACM
	1980, pp.32-46.

POPLER

	A PLANNER-type language for the POP-2 environment.

	["Popler 1.6 Reference Manual", D. Davies et al, U Edinburgh,
	TPU Report No 1 (May 1973)].

POPLOG

	A multi-language programming environment, which includes the
	languages {Pop-11}, {ML}, {Common Lisp} and {Prolog}.  It
	supports mixed-language programming and {incremental
	compilation} and includes a comprehensive {X Window System}
	interface.  It is built on top of a two-stack {virtual
	machine}, PVM.  POPLOG was developed at the University of
	Sussex, Brighton, UK.

	["POPLOG's Two-Level Virtual Machine Support for Interactive
	Languages", R. Smith et al, in Research Directions in
	Cognitive Science, v.5 (1992)].

POPLOG ML

	{SML} for the {Poplog} system from the University of Sussex,
	UK.

POP server

	{Post Office Protocol}

PopTalk

	<language, product> A commercial {object-oriented} derivative
	of {POP}, from {Cambridge Consultants}, used in the {expert
	system} {MUSE}.

	(27 Feb 1995)

porno

	{pornography}

pornography

	<application> Still or moving images, usually of women, in
	varying states of nudity, posing or performing erotic acts
	with men, women, animals or other props.  Some say it degrades
	women, some say it corrupts young boys (who down-load it from
	{bulletin board system}s or exchange it on {floppy disk}s).
	Much of it is in the form of {GIF} images, or, increasingly
	{JPEG} images.  There are even pornographic games, an early
	example being {Mac Playmate}.

	What you probably want to know is where you can get some
	(more).  Possible places to start are {NOSC
	(http://white.nosc.mil/images.html)} or {Yahoo
	(http://akebono.stanford.edu/yahoo/Computers/Multimedia/Pictures/)}.

	The {Digital Picture Archive
	(http://olt.et.tudelft.nl/fun/pictures/pictures.html)} at
	Delft University in the Netherlands had an excellent
	collection (I'm told) but had to shut it down because it was
	so popular.

	Beware - many institutions, particularly universities, have
	strict rules against their computers and networks being used
	to transfer or store such things, and you might get corrupted.

	(27 Feb 1995)

port

	1. <networking> A logical channel in a communications system.
	The {Transmission Control Protocol} and {User Datagram
	Protocol} {transport layer} protocols used on {Ethernet} use
	port numbers to demultiplex messages.  Each {application
	program} has a unique port number associated with it, defined
	in /etc/services or the {Network Information Service}
	"services" database.

	2. <operating system, programming> To translate {software} to
	run on a different system or the results of doing so.  See
	{portability}.

	3. <language> An {imperative} language descended from {Zed}
	from {Waterloo Microsystems} (now {Hayes} Canada) ca. 1979.

	["Port Language" document in the Waterloo Port Development
	System].

	(24 Oct 1994)

portability

	<operating system, programming> The ease with which a piece of
	software can be "ported", i.e. made to run on a new {platform}
	(and/or compile with a new {compiler}).

	The most important factor is the language in which the
	software is written and the most portable language is almost
	certainly {C} (though see Vaxocentrism for counterexamples).
	This is true in the sense that C compilers are available for
	most systems and are often the first compiler provided for a
	new system.  This has led several compiler writers to compile
	other languages to C code in order to benefit from its
	portability (as well as the quality of compilers available for
	it).

	The least portable type of language is obviously {assembly
	code} since it is specific to one particular (family of)
	{processor}(s).  It may be possible to translate mechanically
	from one assembly code (or even {machine code}) into another
	but this is not really portability.  At the other end of the
	scale would come {interpreted} or {semi-compiled} languages
	such as {LISP} or {Java} which rely on the availability of a
	portable {interpreter} or {virtual machine} written in a lower
	level language (often C for the reasons outlined above).

	The act or result of porting a program is called a "port".
	E.g. "I've nearly finished the {Pentium} port of my big bang
	simulation."

	(18 Jun 1997)

portable

	{portability}

Portable Commodore 64

	<computer> A version of the {Commodore 64} modelled after the
	original Osborne portable PCs, with a flip-down keyboard that
	revealed a 5-inch colour monitor, and a built-in {1541} {floppy
	disk} drive.  It is thought that few were made but that they
	did go on sale, at least in Canada.

	[Relationship to {Commodore 65}?]

	(14 Sep 1997)

Portable Common Loops

	(PCL) A language which started out as an implementation of
	{CommonLoops} and turned into a portable {CLOS}
	implementation.  Version 28 Aug 1992.  It runs under {Lucid
	Common LISP} 4.0.1 and {CMU Common LISP} 16e.

	{(ftp://parcftp.xerox.com/pcl)}

	(02 Sep 1992)

	[Was it developed by Richard Harris
	<rharris@ptolemy2.rdrc.rpi.edu>?]

Portable Common Tool Environment

	(PCTE) An {ECMA} standard framework for software tools
	developed in the {Esprit} programme.  It is based on an
	{entity-relationship} {Object Management System} and defines
	the way in which tools access this.

Portable Document Format

	<file format> (PDF) The native file format for {Adobe
	Systems}' {Acrobat}.  PDF is the file format for representing
	documents in a manner that is independent of the original
	application software, hardware, and operating system used to
	create those documents.  A PDF file can describe documents
	containing any combination of text, graphics, and images in a
	device-independent and {resolution} independent format.  These
	documents can be one page or thousands of pages, very simple
	or extremely complex with a rich use of {font}s, graphics,
	colour and images.

	["The Portable Document Format Reference Manual", Adobe
	systems, Inc. Addison-Wesley Publ.  Co., ISBN: 0-201-62628-4].

	(04 Oct 1995)

Portable Forth Environment

	(PFE) A {Forth} development system by Dirk Zoller
	<duz@roxi.rz.fht-mannheim.de>.  PFE aims to be correct,
	complete, portable, usable and simple but it isn't optimised
	for speed.  Version 0.8.0 supports all {dpANS} word sets.  It
	runs on {Linux}, {RS/6000}, {HP-UX} and is highly portable.

	{(ftp://roxi.rz.fht-mannheim.de/pub/languages/forth/)}

	(11 Aug 1993)

Portable Network Graphics

	<file format> /ping/ (PNG) An extensible {file format} for the
	{lossless}, {portable}, well-compressed storage of {raster
	images}.  PNG provides a patent-free replacement for {GIF} and
	can also replace many common uses of {TIFF}.
	{Indexed-colour}, {greyscale} and {truecolour} images are
	supported, plus an optional {alpha channel}.  Sample depths
	range from 1 to 16 bits.

	PNG is designed for online viewing applications, such as the
	{World Wide Web}, so it is fully {streamable} with a
	{progressive display} option.  PNG is robust, providing both
	full file integrity checking and simple detection of common
	transmission errors.  Also, PNG can store {gamma correction}
	and {chromaticity} data for improved colour matching on
	heterogeneous {platforms}.

	{Filename extension}: .png.

	{RFC 2083}.  {W3C PNG pages
	(http://www.w3.org/Graphics/PNG/)}.  {PNG home page
	(http://www.wco.com/~png/)}.

	(07 Aug 1997)

Portable Operating System Interface

	<operating system, standard> (POSIX) A set of {IEEE} standards
	designed to provide {application} {portability} between {Unix}
	variants.  IEEE 1003.1 defines a Unix-like operating system
	interface, IEEE 1003.2 defines the {shell} and utilities and
	IEEE 1003.4 defines {real-time} extensions.

	["More UNIX For Dummies", ISBN: 1-56884-361-5] says it stands
	for "Portable Operating System Interface with an X thrown in
	to make it sound cooler."

	(04 Dec 1997)

Portable Pixmap

	<file format> (PPM) A colour {image} {file format}.

	A PPM file contains the following:

	 a two character "{magic number}" - "P3",
	 the width in pixels,
	 the height in pixels,
	 the maximum colour component value,
	 HEIGHT rows of WIDTH {pixels}.

	The rows are ordered from top to bottom with the pixels in
	each row ordered from left to right.  Each pixel is
	represented as three values for red, green, and blue.

	All parts are separated by {whitespace} and numbers are in
	decimal {ASCIII} representation.  A zero pixel component means
	that colour is absent.  Characters from a "#" to the next
	end-of-line are ignored and no line should be longer than 70
	characters.

	Here is an example of a small pixmap in this format:

	 P3
	 # feep.ppm
	 4 4
	 15
	  0  0  0    0  0  0    0  0  0   15  0 15
	  0  0  0    0 15  7    0  0  0    0  0  0
	  0  0  0    0  0  0    0 15  7    0  0  0
	 15  0 15    0  0  0    0  0  0    0  0  0

	A "RAWBITS" variant has magic number "P6", pixel values are
	stored as plain binary bytes, instead of ASCII decimal and no
	whitespace is allowed after a single whitespace character
	after the maximum colour component value which must be less
	than or equal to 255.

	(06 Feb 1998)

Portable Scheme Debugger

	(PSD) A package for source code debugging of {R4RS}-compliant
	{Scheme} under {GNU Emacs} by Kellom ?ki Pertti
	<pk@cs.tut.fi>.  Version 1.1.  Distributed under {GNU} {GPL}.
	It works with {scm}, {Elk} and {Scheme->C}.

	{(ftp://ftp.cs.tut.fi/pub/src/languages/schemes/psd.tar.Z)}

	(08 Oct 1992)

Portable Scheme Interpreter

	(PSI) A portable scheme interpreter by Ozan Yigit
	<oz@ursa.sis.yorku.ca>, David Keldsen and Pontus Hedman that
	includes a simple {DAG} compiler and a {virtual machine}.  It
	can be used as an integrated extension {interpreter} in other
	systems and allows easy addition of new primitives.  There are
	some unique debugging and tracing facilities.  Acceptable
	performance results from a fairly straight-forward
	implementation.  {Continuation}s are fully and portably
	supported and perform well.  PSI is based on the simple
	compilers and {virtual machine} in Kent Dbyvig's thesis.

	The pre-release version conforms to {R4RS} with a number of
	useful extensions.

	(19 Feb 1993)

Portable Standard Lisp

	(PSL) A dialect of {Lisp} from {Utah University}.  It is
	available as a kit for {68000} and also runs on {VAX}.  It
	compiles {Lisp} to {C}-code {virtual machine} language.

	["The Portable Standard LISP Users Manual", TR-10, CS Dept, U
	Utah, Jan 1982].

	["A Portable Lisp System", M.L. Griss et al, Proc 1982 ACM
	Symp on Lisp and Functional Prog, Aug 1982].

PORTAL

	Process-Oriented Real-Time Algorithmic Language.

	["PORTAL - A Pascal-based Real-Time Programming Language",
	R. Schild in Algorithmic Languages, J.W. deBakker et al eds,
	N-H 1981].

porting

	Translating software to run on a different computer and/or
	{operating system}.

	(06 Jan 1995)

Port Language

	["Communicating Parallel Processes", J. Kerridge et al, Soft
	Prac & Exp 16(1):63-86 (Jan 1986)].

portmapper

	<networking> A {server} that converts {TCP/IP} {protocol}
	{port} numbers into {RPC} program numbers.  It must be running
	in order to make RPC calls.

	When an RPC server starts, it tells portmap the port number it
	is listening on and what RPC program numbers it serves.
	Before a client can call a given RPC program number, it must
	contacts portmap on the server machine to determine the port
	number to which RPC packets should be sent.

	(09 Dec 1996)

POS

	{point of sale}

POSE

	<language A {query language} written in 1967.

	["POSE: A Language for Posing Problems to Computers",
	S. Schlesinger et al, CACM 10:279-285, May 1967].

	(09 Dec 1996)

poset

	{partially ordered set}

POSIX

	{Portable Operating System Interface}

post

	<messaging> To send a message to a {mailing list} or
	{newsgroup}.  Usually implies that the message is sent
	indiscriminately to multiple users, in contrast to "mail"
	which implies one or more deliberately selected individual
	recipients.

	You should only post a message if you think it will be of
	interest to a significant proportion of the readers of the
	group or list, otherwise you should use private {electronic
	mail} instead.  See {netiquette}.

	(04 Dec 1997)

postcardware

	{Shareware} that borders on {freeware}, in that the author
	requests only that satisfied users send a postcard of their
	home town or something.  (This practice, silly as it might
	seem, serves to remind users that they are otherwise getting
	something for nothing, and may also be psychologically related
	to real estate "sales" in which $1 changes hands just to keep
	the transaction from being a gift.)

posted write-through

	A {cache} with a posted write-through policy (e.g. Intel 80386)
	delays the write-back to main memory until the bus is not in
	use.

Postel, Jon

	{Jon Postel}

postfix notation

	<language> (Or Reverse Polish Notation, RPN) One of the
	possible orderings of {functions} and {operands}: in postfix
	notation the functions are preceded by all their operands.
	For example, what may normally be written as "1+2" becomes "1
	2 +".  Postfix notation is well suited for {stack} based
	{architectures} but modern {compilers} reduced this advantage
	considerably.  The best-known language that with strictly
	postfix syntax is {FORTH}.

	Compare:  {infix notation}, {prefix notation}.

	(17 Jan 1997)

postfix syntax

	{postfix notation}

POSTGRES

	An {active DBMS} from the University of California at
	Berkeley.

posting

	A message sent to a {newsgroup} or {mailing list} (may also be
	called "a post") or the act of sending it.  Distinguished from
	a "letter" or ordinary {electronic mail} message by the fact
	that it is broadcast rather than point-to-point.  It is not
	clear whether messages sent to a small mailing list are
	postings or e-mail; perhaps the best dividing line is that if
	you don't know the names of all the potential recipients, it
	is a posting.

postmaster

	The {electronic mail} contact and maintenance person at a site
	connected to the {Internet} or {UUCPNET}.  Often, but not
	always, the same as the {admin}.  The Internet standard for
	electronic mail ({RFC} 822) requires each machine to have a
	"postmaster" address; usually it is aliased to this person.
	See also {webmaster}.

post office problem

	Given a set of points (in N dimensions), find another point
	which minimises the sum of the distances from that point to
	each of the others.

Post Office Protocol

	<messaging, protocol> (POP) A {protocol} designed to allow
	single user computers to retrieve {electronic mail} from a POP
	{server}.  The POP server might be a computer with a permanent
	{Internet} connection whereas its clients might only connect
	to it occasionally, e.g. by {modem}.

	There are (in 1994) three versions: POP, POP2, and {POP3}.
	Later versions are NOT compatible with earlier ones.

	[Details?]

	(06 Mar 1997)

post-order traversal

	<algorithm> An {algorithm} for exploring a tree structure
	which visits each {node} in the tree after visiting its
	children.

	The opposite is {pre-order traversal}.

	(10 Mar 1997)

POSTQUEL

	POSTGRES QUERy Language.  The language used by the {POSTGRES}
	{database} system.

	["The Design of POSTGRES", M. Stonebraker et al, Proc ACM
	SIGMOD Conf, June 1986].

	{Version 4.0
	(ftp://postgres.berkeley.edu/pub/postgresv4r0.tar.Z)}.

PostScript

	<language, text, graphics> A {Page Description Language} based
	on work originally done by John Gaffney at Evans and
	Sutherland in 1976, evolving through "JaM" ("John and Martin",
	Martin Newell) at {XEROX PARC}, and finally implemented in its
	current form by John Warnock et al. after he and Chuck Geschke
	founded {Adobe Systems, Inc.} in 1982.

	PostScript is an interpreted, stack-based language (like
	{FORTH}).  It was used as a page description language by the
	{Apple LaserWriter}, and now many {laser printers} and
	on-screen graphics systems.  Its primary application is to
	describe the appearance of text, graphical shapes and sampled
	images on printed or displayed pages.

	A program in PostScript can communicate a document description
	from a composition system to a printing system in a
	device-independent way.

	PostScript is an unusually powerful printer language because
	it is a full programming language, rather than a series of
	low-level escape sequences.  (In this it parallels {Emacs},
	which exploited a similar insight about editing tasks).  It is
	also noteworthy for implementing on-the fly {rasterisation},
	from {Bezier curve} descriptions, of high-quality {font}s at
	low (e.g. 300 dpi) resolution (it was formerly believed that
	hand-tuned {bitmap font}s were required for this task).

	PostScript's combination of technical merits and widespread
	availability has made it the language of choice for graphical
	output.

	See also {PDF}.

	{An introduction
	(http://www.cs.indiana.edu/docproject/programming/postscript/postscript.html)}.

	["PostScript Language Reference Manual" ("The Red Book"),
	Adobe Systems, A-W 1985].

	(23 Feb 1997)

Post, Telephone and Telegraph administration

	(PTT) One of the many national bodies responsible for
	providing communications services in a particular country,
	e.g. British Telecom.  Most PTTs outside the USA and UK are
	(state) monopolies.

POSYBL

	Programming system for distributed applications.  A {Linda}
	implementation for {Unix} networks by Ioannis Schoinas
	<sxoinas@csd.uch.gr>.

	{(ftp://ariadne.csi.forth.gr/pub/POSYBL.TAR.Z)}

	(04 Dec 1995)

potential difference

	{voltage}

POTS

	{Plain Old Telephone System}

pound

	{hash}

pound on

	{bang on}

pound sign

	{hash}

POWER

	Performance Optimization with Enhanced RISC.  The {IBM}
	processor architecture on which {PowerPC} was based.

PowerBuilder

	<tool> A {graphical user interface} development tool from
	{Powersoft} for developing {client-server} {database}
	{application}s.  It runs under {MS-DOS}(?) and {Microsoft
	Windows}.  There are also versions for {Microsoft Windows},
	{Windows NT}, {Macintosh}, and {Unix}.

	Applications can be built by creating {windows}, controls
	(such as {listboxes} and {buttons}), and {menus} within the
	PowerBuilder development environment.  The language used to
	program PowerBuilder, {PowerScript}, is loosely based on
	{BASIC}.

	PowerBuilder supports programming on many database backends
	including {Sybase} and {Oracle}.  It also has added support
	for {ODBC} database drivers.  PowerBuilder also comes with a
	built-in database backend ({WATCOM} {SQL} 32-bit {relational
	database}).

	{Product information
	(http://www.powersoft.com/mktg/prodinfo/prodintr.html)}

	{FAQ (ftp://ftp.oar.net/pub/psoft/pb01.faq)}

	{PowerBuilder Interactive on-line magazine
	(http://pk.com/PowerBuilder/)}.

	{Usenet} newsgroup: {news:comp.soft-sys.powerbuilder}.

	[Correct list of platforms?]

	(21 Apr 1995)

power cycle

	(Or "cycle power", "cycle") To turn a machine's power off and
	on, with the intention of clearing some kind of {hung} or
	{gronk}ed state.  Synonym {120 reset}; see also {Big Red
	Switch}.  Compare {Vulcan nerve pinch}, {bounce} and {boot},
	and see the {AI Koan} about Tom Knight and the novice.

powerdomain

	The powerdomain of a {domain} D is a domain containing some of
	the subsets of D.  Due to the asymmetry condition in the
	definition of a {partial order} (and therefore of a domain)
	the powerdomain cannot contain all the subsets of D.  This is
	because there may be different sets X and Y such that X <= Y
	and Y <= X which, by the asymmetry condition would have to be
	considered equal.

	There are at least three possible orderings of the subsets of
	a powerdomain:

	Egli-Milner:

		X <= Y  iff  for all x in X, exists y in Y: x <= y
		        and  for all y in Y, exists x in X: x <= y

	("The other domain always contains a related element").

	Hoare or Partial Correctness or Safety:

		X <= Y  iff  for all x in X, exists y in Y: x <= y

	("The bigger domain always contains a bigger element").

	Smyth or Total Correctness or Liveness:

		X <= Y  iff  for all y in Y, exists x in X: x <= y

	("The smaller domain always contains a smaller element").

	If a powerdomain represents the result of an {abstract
	interpretation} in which a bigger value is a safe
	approximation to a smaller value then the Hoare powerdomain is
	appropriate because the safe approximation Y to the
	powerdomain X contains a safe approximation to each point in
	X.

	("<=" is written in {LaTeX} as {\sqsubseteq}).

	(03 Feb 1995)

PowerFuL

	Combines functional and logic programming, using "angelic
	Powerdomains".

power hit

	(Or "power {glitch}") A sudden increase (spike) or decrease
	(drop-out) in the mains electricity supply.  These can cause
	crashes and even permanent damage to computers.  Computers and
	other electronic equipment should really include some kind of
	over-voltage protection in its mains input to prevent such
	damamge.

PowerMac

	{Power Macintosh}

Power Macintosh

	<computer> {Apple Computer}'s {personal computer} based on the
	{PowerPC}, introduced on 14 March 1994.  Existing {680x0} code
	(both applications and device drivers) run on Power Macintosh
	systems without modification via a {68020} {emulator}.  The
	performance of these unmodified applications is between that
	of a fast {68030}-based Macintosh and a 68040-based Macintosh.
	The Power Macintosh runs {System 7.5} - the {Macintosh
	operating system}.

	{Home (http://www.info.apple.com/ppc/ppchome.html)}.

	[Emulates 68040 or 68020?]

	(30 Jan 1997)

PowerOpen

	The {PowerOpen Association} defines and promotes the
	{PowerOpen Environment} (POE).

PowerOpen Association

	An independent body established to promote, and test
	conformance with, the {PowerOpen Environment} (POE).

	(08 Nov 1994)

PowerOpen Environment

	<operating system> (POE) A definition containing {API} and
	{ABI} specifications based on the {PowerPC} architecture.  It
	is not an {operating system}.  The presence of the ABI
	specification in the POE distinguishes it from other open
	systems (POSIX, XPG4, etc.)  since it allows {platform}
	independent binary compatibility which is otherwise typically
	limited to particular hardware.

	The POE is an {open standard}, derived from {AIX} and
	conforming to industry open standards including {POSIX},
	{XPG4} and {Motif}.  The POE specification will be publicly
	available to anyone wishing to produce either {application
	program}s or hardware {platform}s.  The {PowerOpen
	Association} will provide the necessary {conformance test}ing
	and POE branding.

	The POE is hardware {bus} independent.  System implementations
	can range from {laptop computers} to {supercomputers}.  It
	requires a multi-user, {multitasking} {operating system}.  It
	provides networking support, an {X Window System} extension, a
	{Macintosh} Application Services extension and {Motif}.  It is
	{conformance test}ed and certified by an independent party
	(the {PowerOpen Association}).

	The POE specification is targeted for availability in the
	first quarter of 1994.  The {PowerOpen Association} will soon
	have some of the information material available on-line.

	(08 Nov 1994)

PowerPC

	<processor, standard> (PPC) A {RISC} {microprocessor} designed
	to meet a {standard} which was jointly designed by {Motorola},
	{IBM}, and {Apple Computer} (the PowerPC Alliance).  The
	PowerPC standard specifies a common {instruction set
	architecture} (ISA), allowing anyone to design and fabricate
	PowerPC processors, which will run the same code.  The PowerPC
	architecture is based on the IBM {POWER} architecture, used in
	IBM's {RS/6000} {workstation}s.  Currently {IBM} and
	{Motorola} are working on PowerPC chips.

	The PowerPC standard specifies both 32-bit and 64-bit data
	paths.  Early implementations will be 32 bit; future
	higher-performance implementations will be 64 bit
	(e.g. {PowerPC 601}).  A PowerPC has 32 integer {registers}
	(32- or 64 bit) and 32 {floating-point} (IEEE standard 64 bit)
	{floating-point} registers.

	The POWER CPU chip and PowerPC have a (large) common core, but
	both have instructions that the other doesn't.  The PowerPC
	offers the following features that POWER does not:

	Support for running in {little-endian} mode.

	Addition of single precision {floating-point} operations.

	Control of branch prediction direction.

	A hardware coherency model (not in Book I).

	Some other {floating-point} instructions (some optional).

	The real time clock (upper and lower) was replaced with the
	time base registers (upper and lower), which don't count in
	sec/ns (the decrementer also changed).

	64-bit instruction operands, registers, etc. (in 64 bit
	processors).

	See also {PowerOpen}, {PowerPC Platform} (PReP).

	{IBM PPC info
	(http://fnctsrv0.chips.ibm.com/products/ppc/index.html)}.

	{(gopher://info.hed.apple.com/)}, "Apple Corporate News/"
	(press releases), "Apple Technologies/" and "Product
	Information/".  {(gopher://ike.engr.washington.edu/)}, "IBM
	General News/", "IBM Product Announcements/", "IBM Detailed
	Product Announcements/", "IBM Hardware Catalog/".

	{Usenet} newsgroups: {news:comp.sys.powerpc},
	{news:comp.sys.mac.hardware}.

	["Microprocessor Report", 16 October 1991].

	(30 Sep 1994)

PowerPC 601

	A 64-bit {RISC} processor with 2.8 million transistors (~1.2
	million in the core logic) and a 32 kilobyte on-chip {cache}.
	Die size 118.8 mm2.  Heat dissipation at 66MHz: 9W.
	Performance at 66MHz: integer >60 {SPECint92},
	{floating-point} >80 {SPECfp92}.  Estimated manufacturing
	cost: $76.  Maximum instructions per cycle: 3.  32 32 bit
	general-purpose registers.  32 64-bit {floating-point}
	registers.  Successors: PowerPC 603,604,620.

	(08 Nov 1994)

PowerPC Platform

	<architecture, standard> (PPCP, PReP - PowerPC Reference
	Platform, formerly CHRP - Common Hardware Reference Platform)
	An open system standard, designed by {IBM}, intended to ensure
	compatibility among {PowerPC}-based systems built by different
	companies.  The PReP standard specifies the {PCI} bus, but
	will also support {ISA}, {MicroChannel} and {PCMCIA}.

	PReP-compliant systems will be able to run the {Macintosh} OS,
	{OS/2}, {WorkplaceOS}, {AIX}, {Solaris}, {Taligent} and
	{Windows NT}.  IBM systems will (of course) be PReP-compliant.
	Apple's first {PowerPC} {Macintosh}es will not be compliant,
	but future ones may be.

	{IBM info
	(http://fnctsrv0.chips.ibm.com/products/ppc/L3ppcp.html)}.

	{(http://billboard.emedia.com.au/chipster/computers/CHRP/whatsCHRP.html)}.

	[Current OS statuses?]

	(23 Mar 1997)

PowerPC Reference Platform

	{PowerPC Platform}

Powerpoint

	<graphics, tool> A {Microsoft} application for creating
	presentations, speeches, slides, etc.

	(26 Aug 1996)

power save mode

	<architecture> A feature of a component or subsystem designed
	to actively reduce its power consumption when not in use.
	Almost any electronic device might benefit from having a power
	save mode but the most common application is for portable
	computers which attempt to conserve battery life by
	incorporating power saving modes in the {CPU}, display, disks,
	printer, or other units.

	(14 Oct 1995)

powerset

	<mathematics> The powerset of a set S is the set of possible
	subsets of S, usually written PS.

	(08 Nov 1994)

Powersoft Corporation

	<company> A leading vendor of {client/server} application
	development tools.

	In February 1994, {Watcom} became a wholly-owned subsidiary of
	Powersoft Corporation which merged with {Sybase} on 13
	February 1995.  In April 1995, the new company is the fastest
	growing top-ten software company and the seventh largest
	software company in the world.

	{Home (http://www.powersoft.com/)}

	Headquarters: Concord, Massachusetts, USA.

	(27 Dec 1995)

PPC

	{PowerPC}

PPCP

	{PowerPC Platform}

PPL

	Polymorphic Programming Language.  An interactive, extensible
	language, based on {APL}, from {Harvard University}.

	["Some Features of PPL - A Polymorphic Programming Language",
	T.A. Standish, SIGPLAN Notices 4(8) (Aug 1969)].

	(06 Oct 1994)

PPLambda

	<language> essentially the {first-order predicate calculus}
	superposed upon the {simply-typed} {polymorphic
	lambda-calculus}.  PPLambda is the {object language} for
	{LCF}.

	["Logic and Computation: Interactive Proof with Cambridge
	LCF", L. Paulson, Cambridge U Press, 1987].

	(01 May 1995)

PPM

	{Portable Pixmap}

PPN

	Project-Programmer Number.

	A user-ID under {TOPS-10} and its various mutant progeny at
	{SAIL}, {BBN}, {CompuServe} and elsewhere.  Old-time hackers
	from the {PDP-10} era sometimes use this to refer to user IDs
	on other systems as well.

	(18 Nov 1994)

PPP

	{Point-to-Point Protocol}

P-Prolog

	<language> A parallel {logic language}.

	["P-Prolog: A Parallel Logic Language Based on Exclusive
	Relation", R. Yang et al, Third Intl Conf on Logic Prog, 1986,
	pp. 255-269].

	(18 Nov 1994)

PQS

	{Picture Quality Scale}

PR

	{Packet Radio}

pr0n

	{pron}

PRA

	PRAgmatics.

	The language used by {COPS} for specification of {code
	generator}s.

	["Metalanguages of the Compiler Production System COPS", J.
	Borowiec, in GI Fachgesprach "Compiler-Compiler", ed
	W. Henhapl, Tech Hochs Darmstadt 1978, pp. 122-159].

	(18 Nov 1994)

pragma

	(pragmatic information) A standardised form of {comment} which
	has meaning to a {compiler}.  It may use a special {syntax} or
	a specific form within the normal comment syntax.  A pragma
	usually conveys non-essential information, often intended to
	help the compiler to optimise the program.

	(08 Nov 1994)

PRAM

	<hardware> 1. {parallel random access machine}.

	2. {parameter RAM}.

PRE-CC

	PREttier Compiler-Compiler.

	An earlier version of {PRECCX}.

	(24 Jan 1995)

PRECCX

	Pre-C-Compiler eXtended.

	{(ftp://ftp.comlab.ox.ac.uk/Programs)}

	An infinite-{lookahead} {compiler-compiler} by Peter Breuer
	<ptb@comlab.ox.ac.uk> for {context dependent grammar}s.  It
	generates {ANSI C}.  Specification scripts are in very {EBNF}
	with {inherited attribute}s and {synthetic attribute}s
	allowed.  Scripts can be compiled in separate {module}s and
	linked together later.  {Meta-production rule}s are
	allowed. The technology is essentially LL(oo) with
	optimisations.  A converter for {yacc} scripts is available.

	Versions 1.xx were known as "PRECC" and only had unbounded
	lookahead.  The 2.xx series added the "X" for "extended" and
	featured higher order parameterisation (inherited attributes).

	Version 2.42 finally achieved full integration between
	inherited and synthesized attributes by abandoning the
	{yacc}-style attribute stack and using a "monadic" model for
	parsing.  You can now synthsize attributes during the pass and
	inherit them in the remainder, e.g.

		@ foo = bar\x gum(x)

	synthesises an x in bar and passes it down into gum as a
	parameter.  Useful for @ what = ?\x did_you_say(x), for
	example.  It now compiles into {C} instead of running an
	{interpreter} at parse-time.

	Version 2.42 runs under {Unix} and {MS-DOS}.

	{Home (http://www.comlab.ox.ac.uk/archive/redo/precc.html)}

	{(ftp://ftp.comlab.ox.ac.uk/pub/Programs/)}

	E-mail: Peter Breuer <ptb@comlab.ox.ac.uk>, Jonathan Bowen
	<bowen@comlab.ox.ac.uk>.

	["The PRECC Compiler-Compiler" by P.T. Breuer and J.P. Bowen.
	In E. Davies and A. Findlay (eds.), Proc. UKUUG/SUKUG Joint
	New Year 1993 Conference, St. Cross Centre, Oxford, UK, 6-8
	January 1993, ISBN 1 873611 06 4 (UKUUG), 0 9520700 0 6
	(SUKUG) UKUUG/SUKUG Secretariat, Owles Hall, Buntingford,
	Herts SG9 9PL, UK, pp 167-182, 1993].

	(24 Jan 1995)

precedence lossage

	/pre's*-dens los'*j/ A {C} coding error in an expression due
	to unintended grouping of arithmetic or logical operators.
	Used especially of certain common coding errors in {C} due to
	the nonintuitively low precedence levels of "&", "|", "^",
	"<<" and ">>".  For example, the following C expression,
	intended to test the least significant bit of x,

		x & 1 == 0

	is parsed as

		x & (1 == 0)

	which the compiler would probably evaluate at compile-time to

		(x & 0)

	and then to 0.

	Precedence lossage can always be avoided by suitable use of
	parentheses.  For this reason, some {C} programmers
	deliberately ignore the language's precedence hierarchy and
	parenthesise defensively.  {Lisp} fans enjoy pointing out that
	this can't happen in *their* favourite language, which eschews
	precedence entirely, requiring one to use explicit parentheses
	everywhere.

	Other sources of {bug}s include {aliasing bug}, {memory leak},
	{memory smash}, {smash the stack}, {fandango on core},
	{overrun screw}.

	(16 Dec 1994)

precharge

	<storage> The phase in the access cycle of {DRAM} during which
	the storage capacitors are charged to the appropriate value.

	(23 Feb 1997)

predicate calculus

	<logic> A notation for representing logical statements which
	goes beyond {propositional calculus}.

	Where a statement (logic) is concerned only with direct
	relationship it is usually called a {propositional logic}.
	The simplest of these is known as classical or {Boolean}
	propositional logic, in which it is assumed that all
	declarations have a definite truth value; a declaration is
	either true or it is false.

	Where a statement (logic) is concerned not only with direct
	relationship but also with the internal structure of the
	declaration, it is usually called a predicate logic.

	{Predicate Logic
	(http://www.rbjones.com/rbjpub/logic/log019.htm)}.

	{Predicate Calculus
	(http://www.cs.adfa.oz.au/~rim/AI2/Lec8.html)}.

	[Better explanation?  Distinguish predicate from propositional
	and logic from calculus?  Examples?]

	(25 Jan 1998)

predomain

	<theory> A {domain} with no {bottom} element.

	(04 May 1995)

pre-emptive multitasking

	<operating system, parallel> A type of {multitasking} where
	the {scheduler} can interrupt and suspend ("swap out") the
	currently running task in order to start or continue running
	("swap in") another task.  The tasks under pre-emptive
	multitasking can be written as though they were the only task
	and the {scheduler} decides when to swap them.  The scheduler
	must ensure that when swapping tasks, sufficient state is
	saved and restored that tasks do not interfere.

	The length of time for which a process runs is known as its
	"{time slice}" and may depend on the task's priority or its
	use of resources such as memory and I/O.

	{OS/2}, {Unix}, and the {Amiga} use pre-emptive multitasking.

	This contrasts with {cooperative multitasking} where each task
	must include calls to allow it to be {deschedule}d
	periodically.

	(20 Mar 1995)

prefetch

	{instruction prefetch}

prefix

	1. <unit> The standard metric prefixes used in the SI
	(Syst`eme International) conventions for scientific
	measurement.  With units of time or things that come in powers
	of 10, such as money, they retain their usual meanings of
	multiplication by powers of 1000 = 10^3.  When used with bytes
	or other things that naturally come in powers of 2, they
	usually denote multiplication by powers of 1024 = 2^(10).

	Here are the SI magnifying prefixes, along with the
	corresponding binary interpretations in common use:

	 prefix abr decimal  binary

	 yocto-     1000^-8
	 zepto-     1000^-7
	 atto-      1000^-6
	 femto-  f  1000^-5
	 pico-   p  1000^-4
	 nano-   n  1000^-3
	 micro-  *  1000^-2          * Abbreviation: Greek mu
	 milli-  m  1000^-1

	 kilo- 	 k  1000^1 1024^1 = 2^10 = 1,024
	 mega- 	 M  1000^2 1024^2 = 2^20 = 1,048,576
	 giga- 	 G  1000^3 1024^3 = 2^30 = 1,073,741,824
	 tera- 	 T  1000^4 1024^4 = 2^40 = 1,099,511,627,776
	 peta- 	    1000^5 1024^5 = 2^50 = 1,125,899,906,842,624
	 exa-  	    1000^6 1024^6 = 2^60 = 1,152,921,504,606,846,976
	 zetta-     1000^7 1024^7 = 2^70 = 1,180,591,620,717,411,303,424
	 yotta-     1000^8 1024^8 = 2^80 = 1,208,925,819,614,629,174,706,176

	The prefixes zetta-, yotta-, zepto-, and yocto- have been
	included in these tables purely for completeness and giggle
	value; they were adopted in 1990 by the "19th Conference
	Generale des Poids et Mesures".  The binary peta- and exa-
	loadings, though well established, are not in jargon use
	either - yet.  The prefix milli-, denoting multiplication by
	1000^(-1), has always been rare in jargon (there is, however,
	a standard joke about the "millihelen" - notionally, the
	amount of beauty required to launch one ship).  "Femto" and
	"atto" (which, interestingly, derive not from Greek but from
	Danish) have not yet acquired jargon loadings, though it is
	easy to predict what those will be once computing technology
	enters the required realms of magnitude (however, see
	{attoparsec}).

	The abbreviated forms of these prefixes are common in
	electronics and physics.  k, M and G are also common in
	computing where they stand for powers of two more often than
	powers of ten.  Thus "MB" stands for megabytes (2^20 bytes).
	In speach, the unit is often dropped so one may talk of "a 40K
	salary" (40000 dollars) or "2M of disk space" (2*2^20 bytes).

	Note that the formal SI metric prefix for 1000 is lower case
	"k"; some, including this dictionary, use this strictly,
	reserving "K" for multiplication by 1024 (KB is thus
	"kilobytes").

	Confusing 1000 and 1024 (or other powers of 2 and 10 close in
	magnitude) - for example, describing a memory in units of 500K
	or 524K instead of 512K - is a sure sign of the {marketroid}.
	One example of this: it is common to refer to the capacity of
	3.5" {microfloppies} as "1.44 MB" In fact, this is a
	completely {bogus} number.  The correct size is 1440 KB, that
	is, 1440 * 1024 = 1474560 bytes.  So the "mega" in "1.44 MB"
	is compounded of two "kilos", one of which is 1024 and the
	other of which is 1000.  The correct number of megabytes would
	of course be 1440 / 1024 = 1.40625.  Alas, this fine point is
	probably lost on the world forever.

	In 1993, hacker Morgan Burke proposed, to general approval on
	{Usenet}, the following additional prefixes: groucho (10^-30),
	harpo (10^-27), harpi (10^27), grouchi (10^30).  This would
	leave the prefixes zeppo-, gummo-, and chico- available for
	future expansion.  Sadly, there is little immediate prospect
	that Mr. Burke's eminently sensible proposal will be ratified.

	2. <language> Related to the {prefix notation}.

	(11 Aug 1995)

prefix notation

	<language> One of the possible orderings of {functions} and
	{operands}: in prefix notation the function precedes all its
	operands.  For example, what may normally be written as "1+2"
	becomes "(+ 1 2)".  A few languages (e.g., {lisp}) have
	strictly prefix syntax, many more employ prefix notation in
	combination with {infix notation}.

	Compare: {postfix notation}.

	(17 Jan 1997)

prefix syntax

	{prefix syntax}

pre-order

	1. See {pre-order traversal}.

	2. A {relation} R is a pre-order if it is {reflexive} (x R x)
	and {transitive} (x R y R z => x R z).  If it is also
	{antisymmetric} (x R y R x => x = y) then it is a {partial
	ordering}.

pre-order traversal

	A pre-order traversal of a tree visits each node in the tree
	before visiting its children.  The opposite is {post-order
	traversal}.

PREP

	1. (PReP) {PowerPC Reference Platform}.

	2. (PREP) PRogrammed Electronics Patterns.  Language for
	designing {integrated circuit}s.  ["Computer Assisted Mask
	Production", R.L. Rosenfeld, Proc IEEE 57(9) Sep 1969].

prepend

	/pree"pend"/ (by analogy with "append") To prefix or add to
	the beginning.

preprocessor

	A program invoked by various {compiler}s to process code
	before compilation.  For example, the {C} preprocessor, {cpp},
	handles textual {macro} substitution, {conditional
	compilation} and inclusion of other files.  A preprocessor may
	be used to transform a program into a simpler language, e.g. to
	transform {C++} into {C}.

	(09 Nov 1994)

presentation layer

	<networking> The second highest layer (layer 6) in the {OSI}
	seven layer model.  Performs functions such as text
	{compression}, code or format conversion to try to smooth out
	differences between {hosts}.  Allows incompatible processes in
	the {application layer} to communicate via the {session
	layer}.

	Documents: {ITU} Rec. X.226 ({ISO} 8823), ITU Rec. X.216 (ISO
	8822).

	(20 Jul 1996)

Presentation Manager

	The {elephantine} graphical user interface to the {OS/2}
	{operating system}.

prestidigitization

	/pres`t*-di"j*-ti:-zay"sh*n/ 1. A term coined by Daniel Klein
	<dvk@lonewolf.com> for the act of putting something into
	digital notation via sleight of hand.

	["Open Channel", IEEE "Computer", November 1981].

	2. Data entry through legerdemain.

	(01 Nov 1994)

PRESTO

	A parallel language for shared-memory multiprocessors, built
	on top of C++ by Bershad et al, U Washington 1987.  PRESTO
	provides {class}es for {thread}s and {spinlock}s as well as
	{Mesa}-style {monitor}s and {condition variable}s.

	{(ftp://cs.washington.edu/pub/presto1.0.tar.Z)}.  E-mail:
	<presto@cs.washington.edu>.

	["PRESTO: A Kernel for Parallel Programming Environments",
	B.N. Bershad et al, U Wash CS TR, Jan 1987].

Pretty Amazing New Stuff

	<humour, communications> (PANS) What {POTS} is evouling into.

	(16 Oct 1996)

Pretty Good Privacy

	<tool, cryptography> (PGP) A high security {RSA} {public-key
	encryption} application for {MS-DOS}, {Unix}, {VAX/VMS}, and
	other computers.  It was written by {Philip R. Zimmermann}
	<pkz@acm.org> of Phil's Pretty Good(tm) Software and later
	augmented by a cast of thousands, especially including Hal
	Finney, Branko Lankester, and Peter Gutmann.

	PGP was distributed as "{guerrilla freeware}".  The authors
	don't mind if it is distributed widely, just don't ask Philip
	Zimmermann to send you a copy.  PGP uses a {public-key
	encryption} {algorithm} claimed by US patent #4,405,829.  The
	exclusive rights to this patent are held by a California
	company called {Public Key Partners}, and you may be
	infringing this patent if you use PGP in the USA.  This is
	explained in the PGP User's Guide, Volume II.

	PGP allows people to exchange files or messages with {privacy}
	and {authentication}.  Privacy and authentication are provided
	without managing the keys associated with conventional
	cryptographic software.  No secure channels are needed to
	exchange keys between users, which makes PGP much easier to
	use.  This is because PGP is based on {public-key
	cryptography}.

	PGP encrypts data using the {International Data Encryption
	Algorithm} with a random {session key}, and uses the {RSA}
	algorithm to encrypt the session key.

	In December 1994 Philip Zimmermann faced prosecution for
	"exporting" PGP out of the United States but in January 1996
	the US Goverment dropped the case.  A US law prohibits the
	export of {encryption} software out of the country.
	Zimmermann did not do this, but the US government hoped to
	establish the proposition that posting an encryption program
	on a {BBS} or on the {Internet} constitutes exporting it - in
	effect, stretching export control into domestic censorship.
	If the government had won it would have had a chilling effect
	on the free flow of information on the global network, as well
	as on everyone's privacy from government snooping.

	{FAQ (ftp://ftp.netcom.com/pub/mp/mpj/getpgp.asc)}.  {UK FTP
	v2.3 (ftp://src.doc.ic.ac.uk:/packages/pgp/)}.  {USA FTP
	latest version (http://web.mit.edu/network/pgp-form.html)}.
	{(http://www.pegasus.esprit.ec.org/people/arne/pgp.html)}.

	{Justice Dept. announcement
	(http://www.eff.org/pub/Alerts/usatty_pgp_011196.announce)}.

	["Protect Your Privacy: A Guide for PGP Users", William
	Stallings, Prentice-Hall, ISBN 0-13-185596-4].

	(07 Apr 1996)

pretty pictures

	(scientific computation) The next step up from {numbers}.
	Interesting graphical output from a program that may not have
	any sensible relationship to the system the program is
	intended to model, but good for showing to {management}.

	(15 Feb 1995)

prettyprint

	/prit'ee-print/ (Or "pretty-print") To generate "pretty"
	human-readable output from a {hairy} internal representation;
	especially used for the process of {grind}ing program code.

	(15 Feb 1995)

pretzel key

	The {Macintosh} {feature key}.

	(15 Feb 1995)

preventive maintenance

	(PM) To bring down a machine for inspection or test purposes.

	See {provocative maintenance}, {scratch monkey}.

	(15 Feb 1995)

PRI

	{ISDN} {Primary Rate Interface}.

	See also {BRI}

	(08 Dec 1994)

primary cache

	<hardware, architecture> (L1 cache, level one cache) A small,
	fast {cache} memory inside or close to the {CPU} chip.

	For example, an {Intel 80486} has an eight-{kilobyte} on-chip
	cache, and most {Pentiums} have a 16-KB on-chip level one
	cache that consists of an 8-KB {instruction cache} and an 8-KB
	{data cache}.

	The larger, slower secondary cache is normally connected to
	the CPU via its external {bus}.

	(25 Jun 1997)

primary key

	<database> The {candidate key} selected as being most
	important for identifying a body of information (an entity,
	object or {record}).

	(26 Apr 1997)

Primary Rate Interface

	(PRI) A type of {ISDN} connection.  In North America and
	Japan, this consists of 24 channels, usually divided into 23 B
	channels and 1 D channel, and runs over the same physical
	interface as {T1}.  Elsewhere the PRI has 31 user channels,
	usually divided into 30 B channels and 1 D channel and is
	based on the {E1} interface.

	PRI is typically used for connections such as one between a
	PBX (private branch exchange, a telephone exchange operated by
	the customer of a telephone company) and a CO (central office,
	of the telephone company) or IXC (inter exchange carrier, a
	long distance telephone company).

	(18 Jan 1995)

Prime Computer

	<company> (Or "Pr1ME") A {minicomputer} manufacturer.

	[Dates?  Status?  Products?  Addresses?]

	(28 Sep 1996)

Primenet, Inc.

	Arizona's {Internet provider}.

	(08 Dec 1994)

prime number theorem

	<mathematics> The number of {prime number}s less than x is
	about x/log(x).  Here "is about" means that the ratio of the
	two things tends to 1 as x tends to infinity.  This was first
	conjectured by {Gauss} in the early 19th century, and was
	proved (independently) by Hadamard and de la Vall'ee Poussin
	in 1896.  Their proofs relied on {complex analysis}, but Erds
	and Selberg later found an "elementary" proof.

	(10 Apr 1995)

prime time

	(From TV programming) Normal high-usage hours on a
	{time-sharing} system; the day shift.  Avoidance of prime time
	was traditionally given as a major reason for {night mode}
	hacking.  The rise of the personal workstation has rendered
	this term, along with {time-sharing} itself, almost obsolete.
	The hackish tendency to late-night {hacking run}s has changed
	not a bit.

	(18 Jan 1995)

primitive

	<programming> A function or operator which is built into a
	programming language (or {operating system}), either for speed
	of execution or because it would be impossible to write it in
	the language.  Primitives typically include the arithmetic and
	logical operations (plus, minus, and, or, etc.) and are
	implemented by a small number of {machine language}
	instructions.

	(01 May 1995)

Princeton University

	<body, education> Chartered in 1746 as the College of New
	Jersey, Princeton was British North America's fourth college.
	First located in Elizabeth, then in Newark, the College moved
	to Princeton in 1756.  The College was housed in Nassau Hall,
	newly built on land donated by Nathaniel and Rebeckah
	FitzRandolph.  Nassau Hall contained the entire College for
	nearly half a century.  The College was officially renamed
	Princeton University in 1896; five years later in 1900 the
	Graduate School was established.

	Fully coeducational since 1969, Princeton now enrolls
	approximately 6,400 students (4,535 undergraduates and 1,866
	graduate students).  The ratio of full-time students to
	faculty members (in full-time equivalents) is eight to one.

	Today Princeton's main campus in Princeton Borough and
	Princeton Township consists of more than 5.5 million square
	feet of space in 160 buildings on 600 acres.  The University's
	James Forrestal Campus in Plainsboro consists of one million
	square feet of space in four complexes on 340 acres.

	As Mercer County's largest private employer and one of the
	largest in the Mercer/Middlesex/Somerset County region, with
	approximately 4,830 permanent employees - including more than
	1,000 faculty members - the University plays a major role in
	the educational, cultural, and economic life of the region.

	{(http://www.princeton.edu/index.html)}

	(19 Jan 1994)

principal type

	The most general {type} of an expression.  For example, the
	following are all valid types for the {lambda abstraction}
	(\ x . x):

		Int -> Int
		Bool -> Bool
		(a->b) -> (a->b)

	but any valid type will be an instance of the principal type:
	a -> a.  An instance is derived by substituting the same type
	expression for all occurences of some {type variable}.  The
	principal type of an expression can be computed from those of
	its subexpressions by Robinson's {unification} {algorithm}.

	(16 Dec 1994)

PRINT

	<language> PRe-edited INTerpreter.

	An early mathematics language for the {IBM 705}.

	[Sammet 1969, p. 134].

	(01 May 1995)

printed circuit board

	<hardware> (PCB) A thin board to which electronic components
	are fixed by solder.  Component leads and {integrated circuit}
	pins may pass through holes ("vias") in the board or they may
	be {surface mounted}, in which case no holes are required
	(though they may still be used to connect different layers).

	The simplest kind of PCB has components and wires on one side
	and interconnections (the printed circuit) on the other.  PCBs
	may have components mounted on both sides and may have many
	internal layers, allowing more connections to fit in the same
	board area.  Boards with internal conductor layers usually
	have "plated-through holes" to improve the electrical
	connection to the internal layers.

	The connections are metal strips (usually copper).  The
	pattern of connections is often produced using photo-resist
	and acid etching.  Boards, especially those for high frequency
	circuits such as modern {microprocessor}s, usually have one or
	more "{ground plane}s" and "power planes" which are large
	areas of copper for greater current carrying ability.

	A computer or other electronic system might be built from
	several PCBs, e.g. processor, memory, graphics controller, disk
	controller etc.  These boards might all plug into a
	{motherboard} or {backplane} or be connected by a {ribbon
	cable}.

	(01 May 1995)

printer

	<printer> A {peripheral} device for producing text and images
	on paper.  There are many different types, broadly grouped
	into "{impact printers}" and "{non-impact printers}".

	Compare {plotter}.

	(13 Jan 1996)

printer port

	<hardware, printer> A connector found on many {microcomputers}
	intended for attaching a printer.  This may be a
	general-purpose input/output {parallel port} or may be a
	special {Centronics} interface.

	Most printers can also be connected to a {serial port} but
	that is unlikely to be described as a "printer port".

	(07 Jan 1996)

printf

	<library> The standard function in the {C} programming
	language library for printing formatted output.

	The first argument is a format string which may contain
	ordinary characters which are just printed and "conversion
	specifications" - sequences beginning with '%' such as %6d
	which describe how the other arguments should be printed, in
	this case as a six-character decimal integer padded on the
	right with spaces.

	Possible conversion specifications are d, i or u (decimal
	integer), o ({octal}), x, X or p ({hexadecimal}), f
	({floating-point}), e or E ({mantissa} and {exponent},
	e.g. 1.23E-22), g or G (f or e format as appropriate to the
	value printed), c (a single character), s (a string), %
	(i.e. %% - print a % character).  d, i, f, e, g are signed,
	the rest are unsigned.

	The variant {fprintf} prints to a given output stream and
	sprintf stores what would be printed in a string variable.

	{Unix manual page}: printf(3).

	(08 Dec 1996)

PRINT I

	An early system on {IBM 705}.

	[CACM 2(5):16 (May 1959)].

printing discussion

	[XEROX PARC] A protracted, low-level, time-consuming,
	generally pointless discussion of something
	only peripherally interesting to all.

priority interrupt

	[hardware] Describes any stimulus compelling enough to yank
	one right out of {hack mode}.  Classically used to describe
	being dragged away by an {SO} for immediate sex, but may also
	refer to more mundane interruptions such as a fire alarm going
	off in the near vicinity.  Also called an {NMI} (non-maskable
	interrupt), especially in PC-land.

priority inversion

	<programming> A phenomenon which can arise in a {concurrent}
	programming environment where a high priority task (H) is
	blocked by a low priority task (L), e.g. because L has locked
	some resource needed by H, and L then has to wait for a medium
	priority task (M).  The net result is that H ends up waiting
	for M instead of the other way round - the priorities become
	inverted.

	This can be a problem if, for example, M takes a long time,
	causing H to miss a deadline.

	A possible cure is to have tasks inherit the maximum priority
	of any task that is waiting for them.  In that case L
	temporarily becomes high priority until H can procede, thus
	preventing M from running in place of H.

	(13 Dec 1997)

priority queue

	<programming> A data structure with three operations: insert a
	new item, return the highest priority item, and remove the
	highest priority item.  The obvious way to represent priority
	queues is by maintaining a sorted list but this can make the
	insert operation very slow.  Greater efficiency can be
	achieved by using {heaps}.

	(12 Mar 1996)

PRISM

	A distributed {logic language}.

	["PRISM: A Parallel Inference System for Problem Solving",
	S. Kasif et al, Proc 1983 Logic Prog Workshop, pp. 123-152].

privacy

	Where only the intended recipients can read a message.

Privacy Enhanced Mail

	(PEM) {Internet} {electronic mail} which provides
	confidentiality, {authentication} and message integrity using
	various {encryption} methods.

	See also {Pretty Good Privacy}.

private branch exchange

	<communications> (PBX) A telephone exchange local to a
	particular organisation who use, rather than provide,
	telephone services.

	(25 Jun 1997)

privileged instruction

	A {machine code} instruction that may only be executed when
	the processor is running in {supervisor mode}.  Privileged
	instructions include operations such as I/O and {memory
	management}.

	(15 Feb 1995)

PRL

	Proof Refinement Logic.

	Versions: {micro-PRL}, {lambda-PRL}, {nu-PRL}.

	["PRL: Proof Refinement Logic Programmer's Manual", CS Dept,
	Cornell, 1983].

	(24 Jan 1995)

PRML

	{Partial Response Maximum Likelihood}

probabilistic

	<probability> Relating to, or governed by, probability. The
	behaviour of a probabilistic system cannot be predicted
	exactly but the probability of certain behaviours is known.
	Such systems may be simulated using {pseudo-random} numbers.
	{Evolutionary computation} uses probabilistic processes to
	generate new (potential) solutions to a problem.

	See also {deterministic}, {non-probabilistic}.

	(22 Sep 1995)

probabilistic automaton

	{nondeterministic automaton}

Probe

	An {object-oriented} {logic language} based on {ObjVlisp}.

	["Proposition d'une Extension Objet Minimale pour Prolog",
	Actes du Sem Prog en Logique, Tregastel (May 1987),
	pp. 483-506].

problem state

	{IBM} jargon for {user mode}, the opposite of "supervisor
	state".

	On IBM {System 360}, 370 and 390 {mainframe}s {privileged
	instruction}s may only be executed in "supervisor state".
	{Application program}s request the {operating system} to
	perform these operations by using the Supervisor Call (SVC)
	instruction.

	(15 Feb 1995)

PROC

	Job control language used in the {Pick} {operating system}.

	["Exploring the Pick Operating System", J.E. Sisk et al,
	Hayden 1986].

procedural language

	(Or "imperative language").  Used in contrast to {declarative
	language} to describe a language where the programmer
	specifies an explicit sequences of steps to follow to produce
	a result.  Some common examples of procedural languages
	include {Basic}, {Pascal}, {C} and {Modula-2}.

procedure

	{subroutine}

process

	<operating system, software> An executing {program}.  A
	process consists of the program {code} (which may be shared
	with other processes which are executing the same program),
	and some private data.  It may have other associated resources
	such as a {process identifier}, open files, {CPU time} limits,
	{shared memory}, {child processes}, and {signal handlers}.

	A {multitasking} {operating system} can run multiple processes
	{concurrently} or in {parallel}.

	(09 Dec 1996)

Process Design Language 2

	<language> (PDL2) A language developed for the {Texas
	Instruments} {ASC} computer.

	["Texas Instruments Process Design Methodology - Design
	Specification: Process Design Language", Volume I (Sep 1976)].

	[Mentioned in "An Overview of Ada" J.G.P. Barnes, Soft Prac &
	Exp 10:851-887 (1980)].

	(13 Aug 1995)

process ID

	{process identifier}

process identifier

	<operating system> (PID) An integer used by the {Unix}
	{kernel} to uniquely identify a process.  PIDs are returned by
	the {fork} {system call} and can be passed to wait() or
	kill() to perform actions on the given process.

	(09 Dec 1996)

processor

	{Central Processing Unit}

Processor Direct Slot

	<hardware> (PDS) {Apple Computer}'s name for a {local bus}
	connection.  Most {Macintosh}es have only one PDS connector.
	Different Apple computers have different PDS specifications.

	(02 May 1995)

processor farm

	<computer, parallel> A {parallel processor} where tasks are
	distributed "farmed out" by one "farmer" processor to several
	"worker" processors and results are sent back to the farmer.
	This arrangement is suitable for {application}s which can be
	partitioned into many separate, independant tasks, the
	canonical examples being {ray tracing} and the {Mandelbrot
	set}.  In order to be efficient, the tasks need to be big
	enough that the communications {overhead} is negligible.

	(16 Mar 1995)

process scheduling

	On a {time-sharing} {operating system}, running each active
	process in turn for its share of time (its "{timeslice}"),
	thus creating the illusion that multiple processes are running
	simultaneously on a single processor.

PROCOL

	J. Van Den Bos, Erasmus U, Rotterdam.  Constraints and
	distributed delegation.  "PROCOL: A Parallel Object Language
	with Protocols", J. Van Den Bos et al, SIGPLAN Notices
	24(10):95-102 (OOPSLA '89) (Oct 1989).

Procomm

	<communications, product> A communications program from
	{Datastorm Technologies}, used for connection to {BBS}es etc.

	Procomm Plus for Windows incorporates automatic {modem} make
	and modem detection, a custom log-on script generator and
	sophisticated {off-line} message managers for {CompuServe} and
	{MCI Mail}.  It also has a fax send and receive capability.

	Current version 2.0 was chosen as the Editors Choice in PC
	Magazine March 14, 1995.  List price is $179.  It requires
	{Microsoft} {Windows 3.1} or later.

	(04 Apr 1995)

Procrustean string

	<programming> A fixed-length {string}.  If a string value is
	too long for the allocated space, it is truncated to fit; and
	if it is shorter, the empty space is padded, usually with
	space characters.

	This is an allusion to Procrustes, a legendary robber of ancient
	Attica.  He bound his victims to a bed, and if they were longer
	than the bed, he stretched their limbs until they would fit; if
	their limbs were longer, he lopped them off.

	(12 Sep 1997)

Prodigy

	<networking> A commercial on-line conferencing service,
	co-developed by {IBM} and Sears, Roebuck, Inc.

	Prodigy's main competitors are {AOL} and {Compuserve}.

	(01 Mar 1995)

ProDoc

	A set of tools for software documentation from {SPC}.

product

	See {tuple}.

production system

	A production system consists of a collection of productions
	(rules), a {working memory} of {fact}s and an {algorithm}
	known as {forward chaining} for producing new facts from old.
	A rule becomes eligible to "fire" when its conditions match
	some set of elements currently in working memory.  A {conflict
	resolution strategy} determines which of several eligible
	rules (the {conflict set}) fires next.  A condition is a list
	of symbols which represent constants, which must be matched
	exactly; variables which bind to the thing they match and "<>
	symbol" which matches a field not equal to symbol.  Examples
	are {OPS5}, {CLIPS}, {flex}.

Professional Graphics Adapter

	<graphics, specification> (PGA) A computer video {display
	standard} produced by {IBM} for early {CAD} applications.  It
	had a resolution of 640x400 {pixels}.

	(25 Apr 1997)

Professional Office System

	<messaging> (PROFS) An office messaging system from {IBM},
	used worldwide, mainly on IBM {mainframes}.

	(23 Mar 1996)

professional programming

	See {paranoid programming}.

PROFILE

	Simple language for matching and scoring data.  "User's Manual
	for the PROFILE System", Cambridge Computer Assoc (May 1974).

profile

	1. A control file for a program, especially a text file
	automatically read from each user's home directory and
	intended to be easily modified by the user in order to
	customise the program's behaviour.  Used to avoid {hardcoded}
	choices (see also {dot file}, {rc file}).

	2. A report on the amounts of time spent in each routine of a
	program, used to find and {tune} away the {hot spot}s in it.
	This sense is often verbed.  Some profiling modes report units
	other than time (such as call counts) and/or report at
	granularities other than per-routine, but the idea is similar.

PROFS

	{Professional Office System}

PROGENY

	1961.  Report generator for UNIVAX SS90.

proglet

	/prog'let/ [UK] A short extempore program written to meet an
	immediate, transient need.  Often written in BASIC, rarely
	more than a dozen lines long and containing no subroutines.
	The largest amount of code that can be written off the top of
	one's head, that does not need any editing, and that runs
	correctly the first time (this amount varies significantly
	according to one's skill and the language one is using).
	Compare {toy program}, {noddy}, {one-liner wars}.

program

	1. A magic spell cast over a computer allowing it to turn
	one's input into error messages.

	2. An exercise in experimental epistemology.

	3. A form of art, ostensibly intended for the instruction of
	computers, which is nevertheless almost inevitably a failure
	if other programmers can't understand it.

Program Composition Notation

	(PCN) A specification language for parallelism between {C} and
	{Fortran} {module}s.  PCN provides a simple language for
	specifying {concurrent} {algorithm}s, interfaces to {Fortran}
	and {C}, a portable toolkit that allows applications to be
	developed on a {workstation} or small parallel computer and
	run unchanged on {supercomputer}s and integrated debugging and
	performance analysis tools.  PCN was developed at {Argonne
	National Laboratory} and the {California Institute of
	Technology}.  It has been used to develop a wide variety of
	applications, in areas such as climate modeling, fluid
	dynamics, computational biology, chemistry, and circuit
	simulation.

	Version 2.0 runs on networks of workstations: {Sun4}, {NeXT},
	{RS/6000}, {SGI}; {multicomputer}s: {iPSC}/860, {Touchstone
	DELTA}; and {shared memory} multiprocessors:
	{Symmetry}/{Dynix}.

	{(ftp://info.mcs.anl.gov/pub/pcn)}

	E-mail: Ian Foster <pcn@mcs.anl.gov>, Steve Tuecke
	<tuecke@mcs.anl.gov>.

	["Productive Parallel Programming: The PCN Approach",
	I. Foster et al, Sci Prog 1(1):51-66 (1992)].

	(12 Feb 1993)

program counter

	<hardware> (PC, or "instruction address register") A
	{register} in the {central processing unit} that contains the
	addresss of the next instruction to be executed.  The PC is
	automatically incremented after each instruction is fetched to
	point to the following instruction.  It is not normally
	manipulated like an ordinary {register} but instead, special
	instructions are provided to alter the {flow of control} by
	writing a new value to the PC, e.g. JUMP, CALL, {RTS}.

	(21 Mar 1995)

Program Design Language

	Any of a large class of formal and profoundly useless
	pseudo-languages in which {management} forces one to design
	programs.  Too often, management expects PDL descriptions to
	be maintained in parallel with the code, imposing massive
	overhead of little or no benefit.

	See also {flow chart}.

	(01 Apr 1995)

Program Evaluation and Review Technique

	<programming> (PERT) A method used to size a software product
	and calculate the Standard Deviation (SD) for risk assessment.
	The PERT equation (beta distribution) estimates the Equivalent
	{Delivered Source Instructions} (EDSIs) and the SD based on
	the analyst's estimates of the lowest possible size, the most
	likely size, and the highest possible size of each computer
	program component (CPC).

	(29 May 1996)

Program Information File

	<file format> Under {Windows}, a file providing information on
	how a non-Windows {application program} should be run,
	including how much {memory} should be allocated to it and what
	graphics interface it requires.

	{Filename extension}: .pif

	(11 Oct 1997)

Programmable Array Logic

	<hardware> (PAL) A family of fuse-programmable logic
	{integrated circuits} originally developed by {MMI}.
	Registered or {combinatorial} output functions are modelled in
	a {sum of products} form.  Each output is a sum (logical or)
	of a fixed number of products (logical and) of the input
	signals.  This structure is well suited for automatic
	generation of programming patterns by logic compilers.

	PAL devices are programmed by blowing the fuses permanently
	using overvoltage.

	Today, more complex devices based on the same original
	architecture are available (CPLD's for Complex PLD's) that
	incorporate the equivalent of several original PAL chips.  PAL
	chips are, however, still popular due to their high speed.

	{Generic Array Logic} devices are reprogrammable and contain
	more {logic gates}.

	(09 Dec 1995)

Programmable Logic Controller

	<hardware> (PLC) A device used to automate monitoring and
	control of industrial plant.  Can be used stand-alone or in
	conjunction with a {SCADA} or other system.

	(11 Feb 1997)

Programmable Read Only Memory

	<storage> (PROM) A kind of {ROM} which can be written using a
	PROM programmer.  The contents of each bit is determined by a
	{fuse} or {antifuse}.  The memory can be programmed once after
	manufacturing by "blowing" the fuses, which is an irreversible
	process.  Blowing a fuse opens a connection while blowing an
	antifuse closes a connection (hence the name).  Programming is
	done by applying high-voltage pulses which are not encountered
	during normal operation.

	(22 Apr 1995)

Programmed Data Processor

	<computer> (PDP) Early (1960's?) {Digital Equipment
	Corporation} family of {minicomputers}.  The best known ranges
	were the {PDP-10} and {PDP-11}.  {PAL} was the {assembly
	language}.

	(21 Nov 1997)

PROgrammed Graph REwriting Systems

	<language> (PROGRES) A very high level language based on
	{graph grammar}s, developed by Andy Scheurr
	<andy@i3.informatik.rwth-aachen.de> and Albert Zuendorf
	<albert@i3.informatik.rwth-aachen.de> of {RWTH}, Aachen in
	1991.

	PROGRES supports structurally {object-oriented specification}
	of {attributed graph} structures with {multiple inheritance}
	hierarchies and types of types (for {parametric
	polymorphism}).  It also supports declarative/relational
	specification of derived attributes, node sets, binary
	relationships (directed edges) and {Boolean} {constraint}s,
	rule-oriented/visual specification of parameterised graph
	rewrite rules with complex application conditions,
	{nondeterministic} and imperative programming of composite
	graph transformations (with built-in {backtracking} and
	cancelling arbitrary sequences of failing graph
	modifications).

	It is used for implementing {abstract data type}s with
	graph-like internal structure, as a visual language for the
	{graph-oriented database} {GRAS}, and as a rule-oriented
	language for prototyping {nondeterministic}ally specified
	data/rule base transformations.

	PROGRES has a formally defined {semantics} based on
	"PROgrammed Graph Rewriting Systems".  It is an almost
	{statically typed} language which additionally offers "down
	casting" operators for run-time checked type
	casting/conversion (in order to avoid severe restrictions
	concerning the language's expressiveness).

	Version RWTH 5.10 includes an integrated environment.

	[A. Scheurr, "Introduction to PROGRES, an Attribute Graph
	Grammar Based Specification Language", in Proc WG89 Workshop
	on Graphtheoretic Concepts in Computer Science", LNCS 411,
	Springer 1991].

	{(ftp://ftp.informatik.rwth-aachen.de/pub/Unix/PROGRES/)} for
	{Sun4}.

	(02 Nov 1993)

Programmer Brain Damage

	<humour> (PBD) A classification of a {bug} which was obviously
	introduced by an incompetent or short-sighted programmer.

	Compare {UBD}.  See also {brain-damaged}.

	(13 Oct 1996)

Programmer's Cheer

	<humour>

	 "Shift to the left!
	 Shift to the right!
	 Pop up, push down!
	 Byte!  Byte!  Byte!"

	[Origin?]

	(13 Oct 1996)

Programmers Hierarchical Interactive Graphics System

	(PHIGS) An {ANSI}/{ISO} {standard}.  Worked on by the
	{ISO}/{IEC} group {JTC1/SC24}.

	[More detail?]

	(04 Jan 1995)

PROgrammer's Microapplication Language

	<language> (PROMAL) An interpreted {C}-like language from
	{Systems Management Associates} for {MS-DOS}, {Commodore 64},
	and {Apple II}.

	[Computer Language, Mar 1986, pp. 128-134].

	(21 Mar 1996)

Programmer's Switch

	<hardware> A button on the front of some {Apple Macintosh}
	computers ({Centris} and above) which, when pressed, causes a
	command line prompt to appear.  This gives access to the
	debugger, which by default has only one command:

		G "Finder"

	It is useful for getting out of system {crash}es, but you need
	to install a more sophisticated {debugger} for inspecting
	{breakpoint}s, etc.

	(02 May 1995)

programming

	1. The art of debugging a blank sheet of paper (or, in these
	days of on-line editing, the art of debugging an empty file).

	2. A pastime similar to banging one's head against a wall, but
	with fewer opportunities for reward.

	3. The most fun you can have with your clothes on (although
	clothes are not mandatory).

programming fluid

	<jargon> (Or "{wirewater}") Coffee, unleaded coffee
	(decaffeinated), Cola, or any caffeinacious stimulant.  Many
	hackers consider these essential for those all-night {hacking
	runs}.

	(01 May 1996)

programming language

	<language> A formal language in which computer programs are
	written.  The definition of a particular language consists of
	both {syntax} (how the various symbols of the language may be
	combined) and {semantics} (the meaning of the language
	constructs).

	Languages are classified as low level if they are close to
	{machine code} and high level if each language statement
	corresponds to many machine code instructions (though this
	could also apply to a low level language with extensive use of
	{macro}s, in which case it would be debatable whether it still
	counted as low level).  A roughly parallel classification is
	the description as {first generation language} through to
	{fifth generation language}.

	Another major distinction is between {imperative language}s
	and {declarative language}s.

	(06 Apr 1995)

program transformation

	The systematic development of efficient programs from
	high-level specifications by meaning-preserving program
	manipulations.  Also known as optimisation.  See {fusion},
	{loop combination}, {peephole optimisation}, {register
	allocation}, {tupling}, {unfold/fold}.

Prograph

	<language>

	A visual {dataflow} programming language and environment from
	the {Technical University of Halifax}.

	Prograph is an entirely graphical {visual programming}
	language, other than for the text of {method} names, and
	supports the program development process in a
	highly-interactive fashion.  Operation icons are connected by
	data links through which information flows.  It supports
	{object orientation} via {class}-based {data abstraction} with
	{single inheritance}.

	Prograph is available for the {Macintosh}, and soon for
	Windows and Unix, from {TGS Systems}.

	(31 Mar 1995)

PROGRES

	<language> {PROgrammed Graph REwriting Systems}.

progressive coding

	<algorithm> A way to send an {image} gradually to a receiver
	instead of all at once so that the receiver first receives a
	low {resolution} version of the image and susbsequent data
	increases the {resolution}.

	{JBIG} uses {progressive coding}.

	See also {progressive/sequential coding}.

	["Progressive Bi-level Image Compression, Revision 4.1",
	ISO/IEC JTC1/SC2/WG9, CD 11544, September 16, 1991].

	(01 Mar 1995)

Progressive JPEG

	<graphics, file format> (PJPEG) An implementation of {JPEG}
	that supports distinct passes, much as other formats supprt
	{interlacing}.

	[Standards documents?]

	(10 Feb 1998)

progressive/sequential coding

	<compression, algorithm> The kind of image {compression}
	{algorithm} used in {JBIG} where an image coded using
	{progressive coding} can be decoded sequentially, and vice
	versa.

	(01 Mar 1995)

PROJECT

	Subsystem of ICES.  Sammet 1969, p.616.

project assurance

	The process of specifying the support system: techniques,
	internal standards, measurements, tools, and training for a
	project; counselling the project team in the application of
	these elements and monitoring the adherence to the standards.

Project Guardian

	<project, security> A project which grew out of the {ARPA}
	support for {Multics} and the sale of Multics systems to the
	US Air Force.  The USAF wanted a system that could be used to
	handle more than one security classification of data at a
	time.  They contracted with {Honeywell} and {MITRE} to figure
	out how to do this.  Project Guardian led to the creation of
	the {Access Isolation Mechanism}, the forerunner of the {B2}
	labeling and star property support in Multics.  The {DoD
	Orange Book} was influenced by the experience in building
	secure systems gained in Project Guardian.

	(29 Jan 1997)

projection

	<theory> In domain theory, a {function}, f, which is (a)
	{idempotent}, i.e.  f(f(x))=f(x) and (b) whose result is no
	more defined than its argument.  E.g. F(x)=bottom or F(x)=x.

	In {reduction} systems, a function which returns some
	{component} of its argument.  E.g. head, tail, \ (x,y) . x.
	In a {graph reduction} system the function can just return a
	pointer to part of its argument and does not need to build any
	new graph.

	(29 Jan 1997)

projective plane

	<mathematics> The space of {equivalence classes} of {vectors}
	under non-zero {scalar} multiplication.  Elements are sets of
	the form

		{kv: k != 0, k scalar, v != O, v a vector}

	where O is the origin.  v is a representative member of this
	equivalence class.

	The projective plane of a {vector space} is the collection of
	its 1-dimensional {subspaces}.  The properties of the vector
	space induce a {topology} and notions of {smoothness} on the
	projective plane.

	A projective plane is in no meaningful sense a plane and would
	therefore be (but isn't) better described as a "projective
	space".

	(28 Sep 1996)

Project MAC

	<project> A project suggested by J C R Licklider; its founding
	director was {MIT} Prof. Robert M Fano.  MAC stood for
	Multiple Access Computers on the 5th floor of Tech Square, and
	Man and Computer on the 9th floor.  The major efforts were
	Corbato's {Multics} development and {Marvin Minsky}'s
	{Artificial Intelligence} Laboratory.  In 1963 Project MAC
	hosted a summer study, which brought many well-known computer
	scientists to Cambridge to use {CTSS} and to discuss the
	future of computing.

	Funding for Project MAC was provided by the Information
	Processing Techniques Office of the {Advanced Research
	Projects Agency} (ARPA) of the US Department of Defense.

	See also {Early PL/I}, {MacLisp}, {MACSYMA}, {MDL},
	{Multipop-68}, {OCAL}.

	(29 Jan 1997)

project management

	The process of planning, organising, staffing, directing, and
	controlling the production of a system.  Software tools are
	available to help with this, e.g. {PERT} chart editors.

project planning

	See {project management}.

Prolog

	Programming in Logic or (French) Programmation en Logique.
	The first of the huge family of {logic programming} languages.

	Prolog was invented by Alain Colmerauer and Phillipe Roussel
	at the University of Aix-Marseille in 1971.  It was first
	implemented 1972 in {ALGOL-W}.  It was designed originally for
	{natural-language processing} but has become one of the most
	widely used languages for {artificial intelligence}.

	It is based on {LUSH} (or {SLD}) {resolution} {theorem
	proving} and {unification}.  The first versions had no
	user-defined functions and no control structure other than the
	built-in {depth-first search} with {backtracking}.  Early
	collaboration between Marseille and Robert Kowalski at
	University of Edinburgh continued until about 1975.

	{ISO} {draft standard (ftp://ftp.th-darmstadt.de/)} or
	{(ftp://ai.uga.edu/ai.prolog.standard)}.

	See also {negation by failure}, {Kamin's interpreters},
	{Paradigms of AI Programming}, {Aditi}.

	Implementations include {C-Prolog}, {ESLPDPRO}, {Frolic},
	{LM-Prolog}, {Open Prolog}, {SB-Prolog}, {UPMAIL Tricia
	Prolog}.

	A Prolog {interpreter} in {Scheme}.
	{(ftp://cpsc.ucalgary.ca/pub/prolog1.1)}.

	{A Prolog package
	(ftp://cpsc.ucalgary.ca/pub/prolog1.1/prolog11.tar.Z)} from
	the {University of Calgary} features {delayed goal}s and
	{interval arithmetic}.  It requires {Scheme} with
	{continuation}s.

	A Prolog by Michael Covington <mcovingt@uga.cc.uga.edu> runs
	on {MS-DOS} and {Macintosh}.
	{(ftp://ftp.ai.uga.edu/ai.prolog/Contents)}.

	["Programming in Prolog", W.F. Clocksin & C.S.  Mellish,
	Springer 1985].

	(02 Nov 1994)

Prolog++

	(After {C++}) {Prolog} with {object-oriented} features added
	by Phil Vasey of {Logic Programming Associates}.  Prolog++ is
	available for {MS-DOS} and the {X Window System}.  It is
	distributed by {AI International} Ltd. in England and by
	{Quintus}.

Prolog-2

	An implementation of Edinburgh Prolog by Nick Henfrey, {ESL}.

	["An Advanced Logic Programming Language", Anthony Dodd].

Prolog-D-Linda

	Embeds the {Linda} parallel paradigm into {SISCtus Prolog}.

	{(ftp://ftp.cs.uwa.au/)}.  E-mail: <geoff@cs.uwa.edu.au>.

Prolog-II

	Prolog with two new predicates: "dif" for coroutines and
	"freeze" for delayed evaluation.

	Available from ExperIntelligence, Santa Barbara CA.

	["Prolog II Reference Manual and Theoretical Model",
	A. Colmerauer, Internal Report, GroupeIA, U Aix-Marseille (Oct
	1982)].

Prolog-III

	A. Colmerauer, U Aix-Marseille, ca 1984.  Marseille Prolog,
	with unification replaced by constraint resolution.  [deferred
	goals too?]  (Not to be confused with Prolog 3, a commercial
	product?)

	Version 1.2 for MS-DOS.

	["Opening the Prolog-III Universe", BYTE 12(9):177-182 (Aug
	1987)].

	["An Introduction to Prolog III", A. Colmerauer, CACM
	33(7):69-90 (1990)].

Prolog-Linda

	1. Prolog extended with Linda-style parallelism.  Proc 4th
	Australian Conf on Artif Intell.

	{(ftp://bison.cs.uwa.oz.au/)}

	2. Neil MacDonald, U Edinburgh 1989.  Another Prolog extended
	with Linda, implemented on a Computing Surface.

Prolog/Mali

	(PM) {Lambda-Prolog} for the {MALI}-V06 abstract memory system
	by Pascal Brisset <brisset@irisa.fr>.  There is a compiler
	which compiles to {C}, a linker, libraries, {run-time system}
	and documentation.  It runs under {Unix}.

	{(ftp://ftp.irisa.fr/pm/)}

	Mailing list: prolog-mali-request@irisa.fr.  E-mail:
	<pm@irisa.fr>.

	(06 Jul 1992)

PROM

	<storage> {Programmable Read Only Memory}.

PROMAL

	{PROgrammer's Microapplication Language}

Prometheus

	<language> A programmaing language geared for logic,
	mathematics, {AI}, and string, list and database processing.
	Prometheus runs on a variety of {platforms} from {Macintosh}
	to {MS-DOS}

	{Home (http://www.aard.tracor.com/Jason/Prometheus/)}

	(04 Mar 1996)

promiscuous mode

	<networking> Where a node on a network accepts all {packets},
	regardless of their destination address.

	(04 Mar 1996)

PROM monitor

	<operating system> a small program stored in {PROM} (or
	{ROM}), responsible for both loading the {OS} and providing
	some means to analyse OS {crashes}.  It may also have some
	sort of {user interface} which can be used to examine and
	change the contents of memory, control the boot process
	(specifying arguments to the {kernel}, or changing where to
	look for the it), and so forth.

	The main difference between a PROM monitor and a {bootstrap
	loader} is that the PROM monitor regains control when the OS
	terminates.  This may enable a {wizard} to find out what went
	wrong if the OS crashed, although it is usually of little help
	for the average {sysadmin}.

	(03 Dec 1996)

pron

	<jargon> (Or "pr0n") {B1FF}-speak for pornography.  Often seen
	on {IRC} in such desperate cries for help as "I WNAT
	PRON!!!!!"

	(14 Sep 1997)

Pronet

	<language>

	["The Design of a Programming Language Based on Connectivity
	Networks", R. LeBlanc et al, Proc 3rd Intl Conf Distrib Comp
	Sys, IEEE 1982, pp. 532-541].

	(14 Sep 1997)

Pronunciation

	This dictionary gives pronunciation for some entries that are
	neither words found in a standard English dictionary nor
	obvious compounds thereof.  The notation, and many of the
	pronunciations, was adapted from the Hacker's {Jargon File}.
	Slashes bracket phonetic pronunciations, which are to be
	interpreted as follows.

	Syllables are separated by {dash} or followed {single quote}
	or {back quote}.  Single quote means the preceding syllable is
	stressed (louder), back quote follows a syllable with
	intermediate stress (slightly louder), otherwise all syllables
	are equally stressed.

	Consonants are pronounced as in English but note:

		ch	soft, as in "church"
		g	hard, as in "got"
		gh	aspirated g+h of "bughouse" or "ragheap"
		j	voiced, as in "judge"
		kh	guttural of "loch" or "l'chaim"
		s	unvoiced, as in "pass"

	Uppercase letters are pronounced as their English letter
	names; thus (for example) /H-L-L/ is equivalent to /aych el
	el/.  /Z/ is pronounced /zee/ in the US and /zed/ in the UK
	(elsewhere?).

	Vowels are represented as follows:

		a	back, that
		ah	father, palm (see note)
		ar	far, mark
		aw	flaw, caught
		ay	bake, rain
		e	less, men
		ee	easy, ski
		eir	their, software
		i	trip, hit
		i:	life, sky
		o	block, stock (see note)
		oh	flow, sew
		oo	loot, through
		or	more, door
		ow	out, how
		oy	boy, coin
		uh	but, some
		u	put, foot
		y	yet, young
		yoo	few, chew
		[y]oo	/oo/ with optional fronting as
			in `news' (/nooz/ or /nyooz/)

	A /*/ is used for the `schwa' sound of unstressed or occluded
	vowels (often written with an upside-down `e').  The schwa
	vowel is omitted in unstressed syllables containing vocalic l,
	m, n or r; that is, "kitten" and "colour" would be rendered
	/kit'n/ and /kuhl'r/, not /kit'*n/ and /kuhl'*r/.

	The above table reflects mainly distinctions found in standard
	American English (that is, the neutral dialect spoken by TV
	network announcers and typical of educated speech in the Upper
	Midwest, Chicago, Minneapolis/St.Paul and Philadelphia).
	However, we separate /o/ from /ah/, which tend to merge in
	standard American.  This may help readers accustomed to
	accents resembling British Received Pronunciation.

	Entries with a pronunciation of `//' are written-only.

	(10 Dec 1997)

proof

	1. <logic> A {finite} sequence of {well-formed formula}s, F1,
	F2, ... Fn, where each Fi either is an {axiom}, or follows by
	some rule of inference from some of the previous F's, and Fn
	is the statement being proved.

	See also {proof theory}.

	2. A left-associative {natural language} {parser} by Craig
	R. Latta <latta@xcf.berkeley.edu>.  Ported to {Decstation
	3100}, {Sun-4}.

	{(ftp://scam.berkeley.edu/pub/src/local/proof/)}

	E-mail: <proof@xcf.berkeley.edu>.  Mailing list:
	proof-requestf@xcf.berkeley.edu (Subject: add me).

	(29 Nov 1994)

PROOF/L

	A {functional}, {object-oriented language} with {implicit
	parallelism}.

	[J Parallel Dist Comp 12:202-212 (1991)].

	[Forthcoming Technical Report from {RADC}].

	(31 Oct 1994)

proof theory

	<logic> The branch of {logic} describing procedures for
	combining logical statements to show, by a series of
	truth-preserving transformations, that one statement is a
	consequence of some other statement or group of statements.

	(31 Oct 1994)

propeller head

	<jargon> Used by hackers, this is synonym with {computer
	geek}.  Non-hackers sometimes use it to describe all techies.
	Probably derives from SF fandom's tradition (originally
	invented by old-time fan Ray Faraday Nelson) of propeller
	beanies as fannish insignia (though nobody actually wears them
	except as a joke).

	(18 Jan 1995)

propeller key

	The {Macintosh} {feature key}.

	(18 Jan 1995)

Proposal Writing

	Extension of {FORTRAN} for proposal writing.

	[Sammet 1969, p. 170].

	(18 Jan 1995)

propositional calculus

	A system of {symbolic logic}.

	[More detail?].

proprietary

	1. In {marketroid}-speak, superior; implies a product imbued
	with exclusive magic by the unmatched brilliance of the
	company's own hardware or software designers.

	2. In the language of hackers and users, inferior; implies a
	product not conforming to {open-systems} {standard}s, and thus
	one that puts the customer at the mercy of a vendor who can
	inflate service and upgrade charges after the initial sale has
	locked the customer in.

PROSE

	1. PROblem Solution Engineering.  Numerical problems including
	differentiation and integration.  "Computing in Calculus",
	J. Thames, Research/Development 26(5) (May 1975).

	2. A constraints-and-sequencing system similar to
	Kaleidoscope.  "Reflexive Constraints for Dynamic Knowledge
	Bases", P. Berlandier et al in Proc First Intl CS Conf '88:
	AI: Theory and Appls, Dec 1988.

ProSet

	A derivative of {SETL} with {Ada}-like {syntax} developed at
	the {University of Essen} in 1990.  Formerly known as SETL/E.

	["SETL/E, A Prototyping System Based on Sets", E.E. Doberkat
	et al, in Tagungsband TOOL90, W. Zorn ed, pp. 109-118, U
	Karlsruhe, Nov 1990].

	["ProSet - A Language for Prototyping with Sets",
	E.-E. Doberkat et al, in Proc Third Intl Workshop on Rapid
	System Prototyping, N.  Kanopoulos ed, IEEE Comp Soc Press,
	June 1992, pp. 235-248].

PROSPER

	["PROSPER: A Language for Specification by Prototyping", J.
	Leszczylowski, Comp Langs 14(3):165-180 (1989)].

Prospero

	A tool for organising {Internet} resources.  Prospero allows
	each user to organise the contents of remote file servers into
	his own virtual file system with his own hierarchical name
	space consisting of links to remote objects.  Remote indexing
	services are made available by treating the results as a
	virtual directory.  A "union link" allows the contents of the
	link's target directory to appear as part of the directory
	containing the link.  Arbitrary filters can be associated with
	links to modify the representation of the target directory as
	desired.  Prospero directories can be shared between users.
	The Prospero protocol is used for communication between
	clients and servers in the archie system.

	A prototype of Prospero has been available since December
	1990.  It interfaces with Sun {NFS}, the {Andrew File System}
	and {FTP} (with local caching) and {Archie}.  Support for
	{World-Wide Web} and {WAIS} is planned (1992).

	E-mail: <info-prospero@isi.edu>.
	{(ftp://prospero.isi.edu/pub/prospero)}.

ProTalk

	{Quintus}.  An {object-oriented} {Prolog}.

protected mode

	An operating mode of {Intel 80x86} processors.  The opposite
	of real mode.  The {Intel 8088}, {Intel 8086}, {Intel 80188}
	and {Intel 80186} had only real mode, processors beginning
	with the {Intel 80286} feature a second mode called protected
	mode.

	In real mode, addresses are generated by adding an address
	offset to the value of a {segment register} shifted left four
	bits.  As the segment register and address offset are 16 bits
	long this results in a 20-bit address.  This is the origin of
	the one megabyte (2^20) limit in real mode.

	There are 4 segment registers on processors before the {Intel
	80386}.  The 80386 introduced two more segment registers.
	Which segment register is used depends on the instruction, on
	the {addressing mode} and of an optional instruction prefix
	which selects the segment register explicitly.

	In protected mode, the segment registers contain an index into
	a table of {segment descriptors}.  Each segment descriptor
	contains the start address of the segment, to which the offset
	is added to generate the address.  In addition, the segment
	descriptor contains {memory protection} information.  This
	includes an offset limit and bits for write and read
	permission.  This allows the processor to prevent memory
	accesses to certain data.  The {operating system} can use this
	to protect different processes' memory from each other, hence
	the name "protected mode".

	While the standard {register set} belongs to the {CPU}, the
	segment registers lie "at the boundary" between the CPU and
	MMU.  Each time a new value is loaded into a segment register
	while in protected mode, the corresponding descriptor is
	loaded into a descriptor cache in the (Segment-)MMU.  On
	processors before the {Pentium} this takes longer than just
	loading the segment register in real mode.  Addresses
	generated by the CPU (which are segment offsets) are passed to
	the MMU to be checked against the limit in the segment
	descriptor and are there added to the segment base address in
	the descriptor to form a {linear address}.

	On a 80386 or later, the linear address is further processed
	by the paged MMU before the result (the physical address)
	appears on the chip's address pins.  The 80286 doesn't have a
	paged MMU so the linear address is output directly as the
	physical address.

	The paged MMU allows for arbitrary remapping of four klilobyte
	memory blocks ({page}s) through a translation table stored in
	memory.  A few entries of this table are cached in the MMU's
	{Translation Lookaside Buffer} to avoid excessive memory
	accesses.

	After processor reset, all processors start in real mode.
	Protected mode has to be enabled by software.  On the 80286
	there exists no documented way back to real mode apart from
	resetting the processor.  Later processors allow switching
	back to real mode by software.

	Software which has been written or compiled to run in
	protected mode must only use segment register values given to
	it by the operating system.  Unfortunately, most application
	code for {MS-DOS}, written before the 286, will fail in
	protected mode because it assumes real mode addressing and
	writes arbitrary values to segment registers, e.g. in order to
	perform address calculations.

	Such use of segment registers is only really necessary with
	data structures that are larger than 64 kilobytes and thus
	don't fit into a single segment.  This is usually dealt with
	by the {huge memory model} in compilers.  In this model,
	compilers generate address arithmetic involving segment
	registers.  A solution which is portable to protected mode
	with almost the same efficiency would involve using a table of
	segments instead of calculating new segment register values ad
	hoc.

	To ease the transition to protected mode, {Intel 80386} and
	later processors provide "{virtual 86 mode}".

	(29 Mar 1995)

PROTEUS

	An extensible language, the core of {PARSEC}.

	["The Design of a Minimal Expandable Computer Language",
	J.R. Bell, PhD Thesis, CS, {Stanford University} (Dec 1968)].

protocal

	<spelling> Misspelling of "{protocol}".

protocol

	A set of formal rules describing how to transmit data,
	especially across a {network}.  Low level protocols define the
	electrical and physical standards to be observed, bit- and
	byte-ordering and the transmission and {error detection and
	correction} of the bit stream.  High level protocols deal with
	the data formatting, including the {syntax} of messages, the
	terminal to computer dialogue, {character set}s, sequencing of
	messages etc.

	Many protocols are defined by {RFC}s or by {OSI}.

	See also {handshaking}.

	(12 Jan 1995)

protocol converter

	<networking> A device or program to translate between
	different {protocol}s which serve similar functions
	(e.g. {TCP} and {TP4}).

	Some call this a "gateway", though others use that term for
	other kinds of {internetworking} device.

	(07 Mar 1996)

Protocol Data Unit

	(PDU) A {packet} of data passed across a {network}.  The term
	implies a specific layer of the {OSI} seven layer model and a
	specific {protocol}.

	(13 Oct 1994)

protocol stack

	<protocol> A layered set of {protocols} which work together to
	provide a set of network functions.  Each intermediate {layer}
	uses the layer below it to provide a service to the layer
	above.
	
	The {OSI} seven layer model is an attempt to provide a
	standard framework within which to describe protocol stacks.

	(07 Dec 1997)

PROTON

	1. A home computer made by {Acorn Computers} under a contract
	won from the {BBC} in April 1981.

	[Details?]

	2. Something to do with {Microsoft} {SoftLib}?

	(28 Nov 1994)

Protosynthex

	A query system for English text.

	[Sammet 1969, p. 669].

Prototyper

	An {interface builder} for the {Macintosh} from Smethers
	Barnes.

	(28 Nov 1994)

prototyping

	The creation of a model and the {simulation} of all aspects of
	a product.  {CASE} tools support different degrees of
	prototyping.  Some offer the end-user the ability to review
	all aspects of the {user interface} and the structure of
	documentation and reports before code is generated.

provably difficult

	The set or property of problems for which it can be proven
	that no {polynomial-time} {algorithm} exists, only
	{exponential-time} {algorithm}s.

provably unsolvable

	The set or property of problems for which no {algorithm} at
	all exists.  E.g. the {Halting Problem}.  See also {provably
	difficult}.

provider

	{Internet Access Provider}

provocative maintenance

	[Common ironic mutation of "preventive maintenance"] Actions
	performed upon a machine at regularly scheduled intervals to
	ensure that the system remains in a usable state.  So called
	because it is all too often performed by a {field servoid} who
	doesn't know what he is doing; such "maintenance" often
	*induces* problems, or otherwise results in the machine's
	remaining in an *un*usable state for an indeterminate amount
	of time.  See also {scratch monkey}.

prowler

	({Unix}) A {daemon} that is run periodically (typically once a
	week) to seek out and erase {core} files, truncate
	administrative logfiles, nuke "lost+found" directories, and
	otherwise clean up the {cruft} that tends to pile up in the
	corners of a file system.

	See also {GFR}, {reaper}, {skulker}.

	(14 Feb 1995)

proxy ARP

	The technique in which one {host}, usually a {router}, answers
	{Address Resolution Protocol} (ARP) requests intended for
	another machine.  By "faking" its identity, the router accepts
	responsibility for routing packets to the "real" destination.
	Proxy ARP allows a site to use a single {IP address} with two
	physical networks.  {Subnet}ting would normally be a better
	solution.

proxy gateway

	<networking> A computer and associated software which will
	pass on a request for a {URL} from a {World-Wide Web}
	{browser} such as {Mosaic} to an outside server and return the
	results.  This provides clients that are sealed off from the
	{Internet} a trusted agent that can access the Internet on
	their behalf.  Once the client is properly configured, its
	user should not be aware of the proxy gateway.

	A proxy gateway often runs on a {firewall machine}.  Its main
	purpose is to act as a barrier to the threat of {crackers}.
	It may also be used to hide the {IP addresses} of the
	computers inside the firewall from the {Internet} if they do
	not use official registered {network numbers}.

	Browsers such as {Mosaic} and {Netscape} can be configured to
	use a different proxy or no proxy for each URL {access method}
	(or "{scheme}") - {FTP}, {Gopher}, {WAIS}, {news}, and {HTTP}.

	{Mosaic and proxy gateways
	(http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/proxy-gateways.html)}.

	Compare {proxy server}.

	(08 Jun 1997)

proxy server

	<programming, World-Wide Web> A process providing a {cache} of
	items available on other {servers} which are presumably slower
	or more expensive to access.

	This term is used particularly for a {World-Wide Web} server
	which accepts {URL}s with a special prefix.  When it receives
	a request for such a URL, it strips off the prefix and looks
	for the resulting URL in its local {cache}.  If found, it
	returns the document immediately, otherwise it fetches it from
	the remote server, saves a copy in the cache and returns it to
	the requester.  The cache will usually have an expiry
	{algorithm} which flushes documents according to their age,
	size, and access history.

	Compare {proxy gateway}.

	(14 Feb 1995)

PS

	{PostScript}

PS/2

	{IBM}'s second generation of {personal computer}s.  The PS/2
	series introduced three advances over the PC series: 3.5" 1.44
	megabyte {microfloppy} disks, {VGA} and {8514} graphics
	{display standard}s, and the {Micro Channel} bus architecture.
	The 3.5" disks and VGA can be easily installed on other PCs
	and will become the standard for new compatible computers.
	The Micro Channel bus allows for multiprocessing and less
	aggravation, but cannot be retrofitted to older PCs.

	PS/2 models 25 and 30 are {ISA}, other models have Micro
	Channel and {ESDI}.

	(27 Nov 1995)

PS 440

	The system implementation language for the Telefunken TR 440
	computer.  K. Lagally, ca 1974.

PSA

	Problem Statement Analizer.  See {PSL/PSA}.

PS-ALGOL

	Persistent ALGOL.  ca 1981, released 1985.  A derivative of
	S-ALGOL.  Database capability derived from the longevity of
	data.  "The PS- Algol Reference Manual", TR PPR-12-85, CS
	Dept, U Glasgow 1985.  IBM PC version available from CS Dept,
	U Strathclyde, Glasgow.

pSather

	<language> A parallel extension of {Sather} for a clustered
	{shared memory} model.  It features {thread}s synchronised by
	{monitor} objects ("gates"); {locality} {assertion}s and
	placement operators.

	There is an implementation for the {CM-5}.

	["pSather Monitors: Design, Tutorial, Rationale and
	Implementation", J.A. Feldman et al, TR-91-031 and TR-93-028,
	ICSI, Berkeley, CA].

	(13 Mar 1995)

PSD

	<tool> {Portable Scheme Debugger}.

PSDN

	<communications> {Public Switched Data Network}.

pseudo

	<jargon> /soo'doh/ ({Usenet}) Pseudonym.

	1. An {electronic-mail} or {Usenet} persona adopted by a human
	for amusement value or as a means of avoiding negative
	repercussions of one's net.behaviour; a "nom de {Usenet}",
	often associated with forged postings designed to conceal
	message origins.  Perhaps the best-known and funniest hoax of
	this type is {BIFF}.

	2. Notionally, a {flamage}-generating {AI} program simulating
	a {Usenet} user.  Many flamers have been accused of actually
	being such entities, despite the fact that no AI program of
	the required sophistication yet exists.  However, in 1989
	there was a famous series of forged postings that used a
	phrase-frequency-based travesty generator to simulate the
	styles of several well-known flamers; it was based on large
	samples of their back postings (compare {Dissociated Press}).
	A significant number of people were fooled by the forgeries,
	and the debate over their authenticity was settled only when
	the perpetrator came forward to publicly admit the hoax.

	(13 Mar 1995)

Pseudocode

	A notation resembling a programming language but not intended
	for actual compilation.  It usually combines some of the
	structure of a programming language with an informal
	natural-language description of the computations to be carried
	out.  It is often produced by CASE systems as a basis for
	later hand coding.

pseudoprime

	A backgammon prime (six consecutive occupied points) with one
	point missing.  This term is an esoteric pun derived from a
	mathematical method that, rather than determining precisely
	whether a number is prime (has no divisors), uses a
	statistical technique to decide whether the number is
	"probably" prime.  A number that passes this test is called a
	pseudoprime.  The hacker backgammon usage stems from the idea
	that a pseudoprime is almost as good as a prime: it does the
	job of a prime until proven otherwise, and that probably won't
	happen.

pseudo-random number

	<programming> One of a sequence of numbers generated by some
	algorithm so as to have an even distribution over some range
	of values and minimal correlation between successive values.

	{Home (http://random.mat.sbg.ac.at/home.html)}

	(21 Apr 1995)

PseudoScheme

	A translator from {Scheme} to {Common Lisp} by Jonathan Rees
	<jar@cs.cornell.edu>.  Version 2.8.  It conforms to all of
	{R3RS} except {call/cc} and requires {Common Lisp}.  Runs on
	{Lucid}, {Symbolics CL}, {VAX Lisp}, {Explorer CL}.

	Mailing list: info-clscheme-request@mc.lcs.mit.edu.

	(28 Oct 1994)

pseudosuit

	/soo'doh-s[y]oot"/ A {suit} wannabee; a hacker who has decided
	that he wants to be in management or administration and begins
	wearing ties, sport coats, and (shudder!) suits voluntarily.
	It's his funeral.  See also {lobotomy}.

pseudo-tty

	{Berkeley} {Unix} networking device which appears to an
	{application program} as an ordinary terminal but which is in
	fact connected via the network to a process running on a
	different {host} or a windowing system.  Pseudo-ttys have a
	slave half and a control half.  The slave tty (/dev/ttyp*) is
	the device that user programs use and the control tty
	(/dev/ptyp*) is used by {daemon}s to talk to the net.

	(08 Nov 1994)

PSI

	{Portable Scheme Interpreter}

Psion Organiser

	<computer> A popular {pocket computer} from the UK Company
	{Psion} plc.  The organiser uses a {graphical user interface}
	with windows, menus, icons and {dialog box}es.  There have
	been several versions so far: Series3a, Series3, HC, MC,
	OrgII.

	{Usenet} newsgroups: {news:comp.sys.psion},
	{news:comp.binaries.psion}.

	(03 Mar 1995)

PSK

	<communications> {Phase Shift Keying}.

PSL

	1. {Portable Standard Lisp}.

	2. Problem Statement Language.  See {PSL/PSA}.

PSL/PSA

	Problem Statement Language/Problem Statement Analyser.  A
	{CASE} system developed by D. Teichroew.  It allows
	computer-based development and analysis of a statement of
	requirements, and assistance during the design phase.

PSML

	Processor System Modeling Language.  Simulating computer
	systems design.  A preprocessor to SIMSCRIPT.  "Processor
	System Modeling - A Language and Simulation System",
	F. Pfisterer, Proc Symp on Simulation of Computer Systems (Aug
	1976).

PSN

	{Packet Switch Node}

PSTN

	{Public Switched Telephone Network} (T.70).

psychedelicware

	/si:"k*-del"-ik-weir/ [UK] Synonym {display hack}.  See also
	{smoking clover}.

psyton

	<humour> /si:'ton/ (From {TMRC}) The elementary particle
	carrying the sinister force.  The probability of a process
	losing is proportional to the number of psytons falling on it.
	Psytons are generated by observers, which is why demos are
	more likely to fail when lots of people are watching.  This
	term appears to have been largely superseded by {bogon}; see
	also {quantum bogodynamics}.

	(26 Apr 1997)

pt

	{point}

P-TAC

	Parallel Three Address Code.

	{Kid} is a refinement of {P-TAC}, used as an intermediate
	language for {Id}.

	["P-TAC: A Parallel Intermediate Language", Z. Ariola et al,
	Fourth Intl Conf Func Prog Langs and Comp Arch, ACM Sept
	1989].

ptc

	A {Pascal} to {C} translator.

	{(ftp://uxc.sco.uiuc.edu/languages/ptc)}

Pthreads

	A library of pre-emptive thread routines (for {Ada}?), designed
	and implemented in the {PART} (POSIX / Ada-Runtime Project).
	Pthreads is compliant with {POSIX} 1003.4a Draft 6.

	Version 1.17 has been ported to {Sun-4}/{SunOS} 4.1.x.

	{(ftp://ftp.cs.fsu.edu/pub/PART/)}.  Mailing list:
	mueller@uzu.cs.fsu.edu ("Subject: subscribe-pthreads").
	E-mail: <pthreads-bugs@ada.cs.fsu.edu>.

	(22 Jul 1993)

PTI

	Portable Tool Interface: a standard such as PCTE, allowing
	interworking between different software tools via defined
	interfaces to the user and to the repository or object
	management system.

Ptolemy

	A flexible foundation for the specification, simulation, and
	rapid prototyping of systems.  It is an {object-oriented}
	framework within which diverse models of computation can
	co-exist and interact.  For example, using Ptolemy a
	{data-flow} system can be easily connected to a hardware
	simulator which in turn may be connected to a discrete-event
	system.  Because of this, Ptolemy can be used to model entire
	systems.  In addition, Ptolemy now has code generation
	capabilities.  From a {flow graph} description, Ptolemy can
	generate both {C} code and {DSP} {assembly code} for rapid
	prototyping.  Note that code generation is not yet complete,
	and is included in the current release for demonstration
	purposes only.

	Version 0.4.1 includes a graphical algorithm layout, code
	generator and simulator.  It requires {C++}, {C} and has been
	ported to {Sun-4}, {MIPS}/{Ultrix}; {DSP56001}, {DSP96002}.
	Ptolemy is an active research project.

	{(ftp://ptolemy.bekeley.edu/pub/ptolemy/)}.  Mailing list:
	ptolemy-hackers-request@ohm.berkeley.edu.  E-mail:
	<ptolemy@ohm.berkeley.edu>.

	(22 Apr 1993)

PTT

	{Post, Telephone and Telegraph administration}

PUB

	1. PUBlishing.  A 1972 text-formatting language for {TOPS-10},
	with syntax based on {SAIL}.  Influenced {TeX} and {Scribe}.
	["PUB: The Document Compiler", Larry Tesler, Stanford AI Proj
	Op Note, Sept 1972].

	2. /pub, the top-level, publicly accessible directory on most
	{anonymous FTP} archives.  This is usually where the
	interesting files are.  See {pubic directory}.

pubic directory

	[NYU] (also "pube directory" /pyoob' d*-rek't*-ree/) The "pub"
	(public) directory on a machine that allows {FTP} access.  So
	called because it is the default location for {SEX} (software
	exchange).

public domain

	(PD) The total absence of {copyright} protection.  If
	something is "in the public domain" then anyone can copy it or
	use it in any way they wish.  The author has none of the
	exclusive rights which apply to a copyright work.

	The phrase "public domain" is often used incorrectly to refer
	to {freeware} or {shareware} (software which is copyrighted
	but is distributed without (advance) payment).  Public domain
	means no copyright -- no exclusive rights.  In fact the phrase
	"public domain" has no legal status at all in the UK.

	See also {archive site}, {careware}, {charityware},
	{copyleft}, {crippleware}, {guiltware}, {postcardware} and
	{-ware}.  Compare {payware}.

public domain software

	See {public domain}.

public-key cryptography

	{public-key encryption}

public-key encryption

	<cryptography> (Or "public-key cryptography") An {encryption}
	scheme, introduced by Diffie and Hellman in 1976, where each
	person gets a pair of keys, called the public key and the
	private key.  Each person's public key is published while the
	private key is kept secret.  Messages are encrypted using the
	intended recipient's public key and can only be decrypted
	using his private key.

	The need for sender and receiver to share secret information
	(keys) via some secure channel is eliminated: all
	communications involve only public keys, and no private key is
	ever transmitted or shared.

	Public-key cryptography can be used for authentication
	({digital signatures}) as well as for privacy (encryption).

	{RSA} is an example of a public-key cryptosystem.

	FAQs: {alt.security
	(http://www.cis.ohio-state.edu/hypertext/faq/bngusenet/alt/security/top.html)},
	{FAQ at RSA (http://www.rsa.com/rsalabs/faq/faq_home.html)}.

	See also {knapsack problem}.

	(27 Mar 1995)

Public Switched Telephone Network

	<communications> (PSTN, T.70) The collection of interconnected
	systems operated by the various telephone companies and
	administrations ({PTT}s) around the world.  Also known as the
	Plain Old Telephone System (POTS) in contrast to {Integrated
	Services Digital Network} (and {PANS}).

	The PSTN started as human-operated analogue circuit switching
	systems (plugboards), progressed through electromechanical
	switches and are now (1994) almost completely digital except
	for the final connection to the subscriber.  Other things that
	make the PSTN less than bit-transparent include {A-law} to
	{mu-law} conversion or vice versa on international calls;
	{robbed bit} signalling in North America (56 kbps <--> 64
	kbps); data {compression} to save bandwidth on long-haul
	trunks; signal processing such as echo suppression and voice
	signal enhancement such as AT&T TrueVoice.

	(16 Oct 1996)

puff

	<algorithm> To decompress data that has been crunched by
	{Huffman coding}.  At least one widely distributed Huffman
	decoder program was actually *named* "PUFF", but these days it
	is usually packaged with the encoder.

	Opposite: {huff}.

	(16 Oct 1996)

PUFFT

	["The Purdue University Fast FORTRAN Translator", Saul Rosen
	et al, CACM 8(11):661-666 (Nov 1965)].

	(05 Jan 1995)

pull

	{pull media}

pull media

	<messaging> A model of media distribution were the bits of
	content have to be requested by the user, e.g. normal use of
	{HTTP} on the {World-Wide Web}.

	Opposite: "{push media}".

	(10 Apr 1997)

Pulse Code Modulation

	(PCM) A method by which an audio signal is represented as
	digital data.

	Virtually all digital audio systems use PCM, including, {CD},
	{DAT}, F1 format, 1630 format, DASH, DCC, and MD.  Many people
	get confused because "PCM" is also slang for Sony's F1 format
	which stores PCM digital audio on videotape.

	(09 Feb 1995)

punched card

	<storage> (Or "punch card", obsolete) The signature medium of
	computing's {Stone Age}, now obsolescent outside of some {IBM}
	{shop}s.  The punched card actually predated computers
	considerably, originating in 1801 as a control device for
	mechanical looms.  The version patented by {Herman Hollerith}
	and used with mechanical tabulating machines in the 1890 US
	Census was a piece of cardboard about 90 mm by 215 mm.  There
	is a widespread myth that it was designed to fit in the
	currency trays used for that era's larger dollar bills, but
	recent investigations have falsified this.

	{IBM} (which originated as a tabulating-machine manufacturer)
	married the punched card to computers, encoding binary
	information as patterns of small rectangular holes; one
	character per column, 80 columns per card.  Other coding
	schemes, sizes of card, and hole shapes were tried at various
	times.

	The 80-column width of most character terminals is a legacy of
	the IBM punched card; so is the size of the quick-reference
	cards distributed with many varieties of computers even today.

	See {chad}, {chad box}, {eighty-column mind}, {green card},
	{dusty deck}, {lace card}, {card walloper}.

	(16 Dec 1994)

punt

	(From the punch line of an old joke referring to American
	football: "Drop back 15 yards and punt!") 1. To give up,
	typically without any intention of retrying.  "Let's punt the
	movie tonight."  "I was going to hack all night to get this
	feature in, but I decided to punt" may mean that you've
	decided not to stay up all night, and may also mean you're not
	ever even going to put in the feature.

	2. More specifically, to give up on figuring out what the
	{Right Thing} is and resort to an inefficient hack.

	3. A design decision to defer solving a problem, typically
	because one cannot define what is desirable sufficiently well
	to frame an algorithmic solution.  "No way to know what the
	right form to dump the graph in is - we'll punt that for
	now."

	4. To hand a tricky implementation problem off to some other
	section of the design.  "It's too hard to get the compiler to
	do that; let's punt to the run-time system."

Purdue Compiler-Construction Tool Set

	(PCCTS) A highly integrated lexical analser generator and
	parser generator by Terence J. Parr <parrt@acm.org>, Will
	E. Cohen <cohenw@ecn.purdue.edu> and Henry G. Dietz
	<hankd@ecn.purdue.edu>.  ANTLR (ANother Tool for Language
	Recognition) corresponds to YACC and DLG (DFA-based Lexical
	analyser Generator) functions like {LEX}.  PCCTS has many
	additional features which make it easier to use for a wide
	range of translation problems.  PCCTS {grammar}s contain
	specifications for lexical and syntactic analysis with
	selective {backtracking} ("infinite lookahead"), {semantic
	predicate}s, intermediate-form construction and error
	reporting.  Rules may employ {Extended BNF} (EBNF) grammar
	constructs and may define parameters, return values and have
	{local variable}s.  Languages described in PCCTS are
	recognised via {LLk} parsers constructed in pure,
	human-readable, {C} code.  Selective backtracking is available
	to handle non-LL(k) constructs.  PCCTS {parser}s may be
	compiled with a {C++} compiler.  PCCTS also includes the
	{SORCERER} tree parser generator.

	The current version, 1.10, runs under {Unix}, {MS-DOS}, {OS/2}
	and {Macintosh} and is very portable.

	{(ftp://marvin.ecn.purdue.edu/pub/pccts/1.10)}

	{UK FTP (ftp://src.doc.ic.ac.uk/
	computing/programming/languages/tools/pccts/)}.  {Macintosh
	FTP (ftp://maya.dei.unipd.it/pub/mac/)}.

	Mailing list: pccts-users-request@ahpcrc.umn.edu ("subscribe
	pccts-users your_name" in the message body).

	E-mail: Terence J. Parr <parrt@acm.org>, Roberto Avanzi
	<mocenigo@maya.dei.unipd.it> (Mac port).

	(14 Sep 1993)

Purdue University

	{(http://www.purdue.edu/)}

	(05 Jan 1995)

pure functional language

	{purely functional language}

pure lambda-calculus

	{Lambda-calculus} with no constants, only functions expressed
	as {lambda abstraction}s.

	(27 Oct 1994)

PureLink

	An incremental linker from {Pure Software}.

Pure Lisp

	A {purely functional language} derived from {Lisp} by
	excluding any feature which causes {side-effect}s.

purely functional language

	<language> A {functional language} with no {side-effect}s.
	Program execution consists of evaluation of an expression and
	all subexpressions are {referentially transparent}.

	(11 Jul 1996)

Purify

	A debugging tool from Pure Software.

Purple Book

	1. <publication> The "System V Interface Definition".  The
	covers of the first editions were an amazingly nauseating
	shade of off-lavender.

	2. <publication> The {Wizard Book}.

	See also {book titles}.

purple wire

	<jargon, hardware> Wire installed by {IBM} Field Engineers to
	work around problems discovered during testing or debugging.
	These are called "purple wires" even when (as is frequently
	the case) they are yellow.

	Compare {blue wire}, {yellow wire}, and {red wire}.

	(11 Apr 1995)

Purveyor

	<World-Wide Web> A {World-Wide Web} {server} for {Windows NT}
	and {Windows 95} (when available).

	{Home (http://www.process.com/)}

	E-mail: <info@process.com>.

	(11 Apr 1995)

push

	1. <programming> To put something onto a {stack} or {pdl}.

	Opposite: "{pop}".

	2. <communications> {push media}.

	(10 Apr 1997)

push-button

	<electronics> A roughly fingertip-sized plastic cover attached
	to a spring-loaded, normally-open switch, which, when pressed,
	closes the switch.  Typical examples are the keys on a
	computer or calculator keyboard and {mouse} buttons.

	(07 Jul 1997)

Push Down List

	<programming> (PDL) In {ITS} days, the preferred {MIT}ism for
	{stack}.

	See {overflow pdl}.

	(21 Dec 1995)

push media

	<messaging> A model of media distribution where items of
	content are sent to the user (viewer, listener, etc.) in a
	sequence, and at a rate, determined by a {server} to which the
	user has connected.  This contrasts with {pull media} where
	the user requests each item individually.  Push media usually
	entail some notion of a "channel" which the user selects and
	which delivers a particular kind of content.

	Broadcast television is (for the most part) the prototypical
	example of push media: you turn on the TV set, select a
	channel and shows and commercials stream out until you turn
	the set off.

	By contrast, the {World-Wide Web} is (mostly) the prototypical
	example of pull media: each "page", each bit of content, comes
	to the user only if he requests it; put down the keyboard and
	the mouse, and everything stops.

	At the time of writing (April 1997), much effort is being put
	into blurring the line between push media and pull media.
	Most of this is aimed at bringing more push media to the
	{Internet}, mainly as a way to disseminate advertising, since
	telling people about products they didn't know they wanted is
	very difficult in a strict pull media model.

	These emergent forms of push media are generally variations on
	targeted advertising mixed in with bits of useful content.
	"At home on your computer, the same system will run soothing
	{screensavers} underneath regular news flashes, all while
	keeping track, in one corner, of press releases from companies
	whose stocks you own.  With frequent commercial messages, of
	course."  (Wired, March 1997, page 12).

	{Pointcast (http://www.pointcast.com)} is probably the best
	known push system on the Internet at the time of writing.

	As part of the eternal desire to apply a fun new words to
	boring old things, "push" is occasionally used to mean nothing
	more than email {spam}.

	(10 Apr 1997)

PVC

	{Permanent Virtual Circuit}

PVM

	{Parallel Virtual Machine}

PV~WAVE

	Interactive scientific {visualisation} software from Precision
	Visuals.

	[Is it really spelled with a "~"?]

Python

	1. <language> A simple, high-level interpreted language by
	Guido van Rossum <guido@cwi.nl>, 1991.  Python combines ideas
	from {ABC}, {C}, {Modula-3} and {Icon}.  It bridges the gap
	between {C} and {shell} programming, making it suitable for
	rapid prototyping or as an extension language for C
	applications.  It is {object-oriented} and supports packages,
	{modules}, {classes}, user-defined exceptions, a good C
	interface, dynamic loading of C modules and has no arbitrary
	restrictions.

	Python is available, among others, for {Unix}, {Windows},
	{DOS}, {OS/2}, {Macintosh}, and {Amoeba}.  Current version is
	1.4, including the {interpreter}, libraries, and
	documentation.

	{Python home page (http://www.python.org/)}.

	{Usenet} newsgroup: {news:comp.lang.python}.

	2. <compiler> A {compiler} for {CMU Common LISP}.  Python is
	more sophisticated than other {Common Lisp} compilers.  It
	produces better code and is easier to use.  The programming
	environment based on the {Hemlock} editor is better integrated
	than {GNU} {Emacs} based environments.

	(27 Feb 1997)

Q

	Very high level language based on generalised (lazy)
	sequences.  {Lexical scope}, some support for logical and
	constraint programming.  Macros.  Implemented in C++.

	{(ftp://ftp.cygnus.com/pub/)}

	(Also small subsets of Common Lisp and Scheme)

	Version ? 1

	interpreter, compiler framework, libraries, documentation

	Per Bothner <bothner@cygnus.com>

	{(ftp://ftp.cygnus.com/pub/Q/)}

	Q is a very high-level programming language, and a test-bed
	for programming language ideas.  Where APL uses arrays to
	explicit looping, Q uses generalised sequences (finite or
	infinite, stored or calculated on demand).  It has {lexical
	scope}, and some support for logical and constraint
	programming.  The syntax was designed for convenient
	interactive use.  A macro facility together with primitives to
	run programs is used to make an interactive command language
	with full shell features.  The Q system is written in C++, and
	its run-time code may be useful to people implementing other
	languages.  ports: Linux and SUN 4 portability: Should work on
	32-bit Unix-like systems

	(1993/06/07)

QA

	{Quality Assurance}

QA4

	Question-answering language.  A procedural calculus for
	intuitive reasoning.  A LISP-based pattern-matching language
	for theorem proving.  "QA4, A Language for Writing
	Problem-Solving Programs", J.F. Rulifson et al, Proc IFIP
	Congress 1968.

QAM

	1. {Quadrature Amplitude Modulation}.

	2. {Quality Assurance Management}.

Qbasic

	<language> Quick basic.

	A version of {BASIC} from {Microsoft}, later known as
	{MS-BASIC}.

	(16 Mar 1995)

QBE

	Query By Example.  A {user-friendly} {query language} by Moshe
	Zloof of {IBM}, 1975.

	["QBE: A Language for Office and Business Automation", M.M.
	Zloof, Computer pp.13-22 (May 1981)].

qdjanus

	A {Janus}-to-{Prolog} compiler by Saumya Debray
	<debray@cs.arizona.edu>.  It is meant to be used with {Sicstus
	Prolog} and is mostly compliant with "Programming in Janus" by
	Saraswat, Kahn, and Levy.  Current version: 1.3.

	{(ftp://cs.arizona.edu/janus/qdjanus/)}

	(18 May 1992)

QDOS

	<operating system> The Sinclair {QL}'s proprietary {operating
	system}.  The origin of the name is uncertain (a weak pun on
	kudos, perhaps, as {Unix} was on {Multics}).  There was
	another OS around from the birth of personal computers called
	Q.D.O.S. - Quick And Dirty Operating System.  QDOS might also
	stand for QL Data/Disk/Drive/Device Operating System.

	QDOS did the usual OS sorts of things, as well as
	multitasking.  It was unusual in several ways.  It treated all
	devices (serial ports, mouse ports, screen, {microdrive},
	{disk drive}, keyboard, etc.) uniformly, so you could print a
	text file direct to disk or save a binary to the screen for
	example.

	Also logical channels could be assigned to particular physical
	devices.  Output directed to a channel would go to the
	appropriate in/output.  This also meant you could have many
	windows on screen (the QL booted up from internal ROMs with 3
	windows - command line, output and program listing) all
	independent to some extent.  Channels could be redirected
	without affecting the way the process sent or received the
	data.

	(22 Jul 1996)

QEMM386

	<software, storage> A combined {expanded memory manager} and
	{extended memory manager} for {IBM PCs} with an {Intel 80386}
	or higher processor from {Quarterdeck Office Systems}.
	QEMM386 can also act as an {UMB} provider and an {A20
	handler}.

	(10 Jan 1996)

QIC

	{Quarter-Inch Cartridge}

QL

	<computer> (Quantum Leap) Sir {Clive Sinclair}'s first
	{Motorola 68008}-based {personal computer}, developed from
	around 1981 and released about 1983.  The QL ran Sinclair's
	{QDOS} {operating system} which was the first {multitasking}
	OS on a home computer, though few programmers used this
	feature.  It had a structured, extended {BASIC} and a suite of
	integrated {application program}s written by {Psion}.  It
	featured innovative "{microdrive}s" which were random access
	tape drives.  It was not a success.

	The microdrives were innovative but probably a mistake.
	Though reliable and quite quick, they sounded like they were
	going to jam and explode, releasing a shower of plastic
	shavings and tape into your face.

	The QL and QDOS only supported two graphics modes - ominously
	named high res and low res.  High res had four (fixed) colours
	at a resolution of 512 by 256 {pixels}.  Low res had 8 colours
	(black, blue, red, magenta, green, cyan, yellow, white) plus a
	flash mode with 256 by 256 pixels.  The sound was next to
	useless - single channel single oscillator with various
	parameters for fuzz, pitch change.  There was one internal
	{font}, scalable to 2 heights and 3 widths.

	Peripherals and enhancements included a {GUI} on a plug-in
	{ROM}, accelerator cards ({Motorola 68020}, 4 MB RAM), {floppy
	disks} and {hard disks}.

	In 1996 there is still some interest in the QL, spread by the
	Internet of course.  {Emulation} software, {source code}, "The
	QL Hackers Journal" and similar are still available, and many
	QLs are on the net.

	{(http://www.imaginet.fr/~godefroy/english)}.

	(01 Aug 1996)

Qlambda

	["Queue-based Multi-processing Lisp", R. Gabriel &
	J. McCarthy, Proc 1984 Symp Lisp and Functional Prog,
	pp. 25-44].

QLISP

	1. SRI 1973.  General problem solving, influenced by PLANNER.
	QA4 features merged with INTERLISP.

	["QLISP - A Language for the Interactive Development of
	Complex Systems", E. Sacerdoti et al, NCC 45:349-356, AFIPS,
	1976].

	2. A parallel LISP.

	["Qlisp", R. Gabriel et al in Parallel Computation and
	Computers for AI, J. Kowalik ed, 1988, pp.63-89].

QLOG

	A version of {Prolog} implemented in {Lisp} which allows
	Prolog programs to call Lisp and vice versa.

	["QLOG - The Programming Environment for Prolog in LISP",
	H.J. Komorowski in Logic Prgramming, K.L. Clark et al eds,
	Academic Press 1982].

	(25 Jan 1995)

QMW

	{Queen Mary and Westfield College}

Q'NIAL

	A portable {incremental compiler} for {NIAL}, written in {C}
	at {Queen's University}, Canada.

	There aree versions for {Unix} and {MS-DOS}, from {NIAL
	Systems} Ltd.

	["The Q'NIAL Reference Manual", M.A. Jenkins, Queen's U
	Report, Dec 1983].

	(25 Jan 1995)

QNX

	A {realtime}, network distributed, {POSIX}-certified,
	{microkernel}, multi-user, {multitasking}, {ROMable},
	{fault-tolerant}, embeddable {operating system} that supports
	{TCP/IP}, {NFS}, {FTP}, the {X Window System}, {Microsoft
	Windows} as a guest process, {Ethernet}, {Token Ring},
	{Arcnet} and {Watcom} {ANSI C}/{C++}.  Support for {Pentium},
	{486}, {386}, {286}, {80x87}.  Developed and distributed by
	QNX Software Systems, Ltd.

	E-mail: Dan Hildebrand <danh@qnx.com>.

	{Papers (ftp://ftp.cse.ucsc.edu/pub/qnx/qnx-paper.ps.Z)}
	(128.114.134.19).

	{Usenet} newsgroup: {news:comp.os.qnx}.

	(13 Mar 1995)

QPE

	Two-dimensional pictorial query language.  "Pictorial
	Information Systems", S.K. Chang et al eds, Springer 1980.

	Q-systems.  A. Colmerauer, 1969.  A rewrite system with
	one-way unification, used for English-French translation.  It
	led to Prolog.  "The Birth of Prolog" A. Colmerauer et al,
	SIGPLAN Notices 28(3):37-52 (March 1993).

QT-OBJECTS

	A library by Michael Travers <mt@media.mit.edu> and others
	providing an interface between {MCL} and {QuickTime}.

	(20 Dec 1992)

QTRADER

	<application> Analytical software for stock and commodity
	trading, released in July 1995 by {Caribou CodeWorks}.

	QTRADER allows dynamic automated analysis of current trends
	and features "Paper Trade" plotting, as well as "TradeSignal
	Bands" and "StudyMatrix" filter to screen potential trades.
	Projected ranges are handled with a "Tomorrow's Bar".

	QTRADER version 3.0 runs on {IBM PC}-compatibles, a
	{Macintosh} version is not available until late 1996.

	{Demo copy (http://www.winternet.com/~jottis)}.
	{(ftp://ftp.winternet.com/users/jottis)}.

	(05 Nov 1995)

quad

	1. Two bits; synonym for {quarter}, {crumb}, {tayste}.

	2. A four-pack of anything (compare {hex}).

	3. The rectangle or box glyph used in the APL language for
	various arcane purposes mostly related to I/O.

	Former Ivy-Leaguers and Oxford types are said to associate it
	with nostalgic memories of dear old University (short for
	"quadrangle").

Quadralay Corporation

	Developers of {GWHIS}.  Director of Technical Marketing: Brian
	Combs <combs@quadralay.com>.

	{(http://www.quadralay.com)}.  {(ftp://ftp.quadralay.com/)}.
	Telephone: +1 512-346-9199.  Fax: +1 512-346-8990.

Quadrature Amplitude Modulation

	(QAM) A method for encoding digital data in an analog signal
	in which each combination of phase and amplitude represents
	one of sixteen four bit patterns.  This is required for fax
	transmission at 9600 bits per second.

	(02 Feb 1995)

quadruple bucky

	Obsolete. 1. On an MIT {space-cadet keyboard}, use of all four
	of the shifting keys (control, meta, hyper, and super) while
	typing a character key.

	2. On a Stanford or MIT keyboard in {raw mode}, use of four
	shift keys while typing a fifth character, where the four
	shift keys are the control and meta keys on *both* sides of
	the keyboard.  This was very difficult to do!  One accepted
	technique was to press the left-control and left-meta keys
	with your left hand, the right-control and right-meta keys
	with your right hand, and the fifth key with your nose.

	Quadruple-bucky combinations were very seldom used in
	practice, because when one invented a new command one usually
	assigned it to some character that was easier to type.  If you
	want to imply that a program has ridiculously many commands or
	features, you can say something like: "Oh, the command that
	makes it spin the tapes while whistling Beethoven's Fifth
	Symphony is quadruple-bucky-cokebottle."  See {double bucky},
	{bucky bits}, {cokebottle}.

Quake

	A string-oriented language designed to support the
	construction of {Modula-3} programs from {module}s, interfaces
	and libraries.  Written by Stephen Harrison of DEC SRC, 1993.

Qualcomm

	<company> A California-based technology company; their primary
	product is the {OMNITRACS} tractor-trailer-tracking system.
	They also develop the free and commercial versions of
	{Eudora} for {Macintosh} and {IBM PC}.

	(05 Oct 1995)

quality

	The totality of features and characteristics of a product or
	service that bear on its ability to satisfy stated or implied
	needs.  Not to be mistaken for "degree of excellence" or
	"fitness for use" which meet only part of the definition.

	[{ISO8402}].

	(10 Nov 1995)

Quality Assurance

	<testing> (QA) A planned and systematic pattern of all actions
	necessary to provide adequate confidence that the product
	optimally fulfils customer's expectations.

	(07 Jan 1998)

Quality Control

	<testing> The assessment of product compliance.  Independently
	finding deficiencies assures compliance of the product with
	stated requirements.

	(07 Jan 1998)

Quality Systems & Software Ltd.

	<company> The company which produced the {DOORS} requirements
	engineering tool.  They also provide consultancy as
	Requirements Engineering Ltd.

	{Home (http://www.qss.co.uk/)}

	E-mail: Ian Alexander <iany@easynet.co.uk>, Amanda
	Haisman-Baker <100023.44@compuserve.com>.

	(11 Nov 1995)

quantifier

	An operator in mathematics and logic specifying for which
	values of a variable a formula is true.  Universally
	quantified means "for all values" (written with an inverted A,
	{LaTeX} \forall) and existentially quantified means "there
	exists some value" (written with a reversed E, {LaTeX}
	\exists).  To be unambiguous, the set to which the values of
	the variable belong should be specified, though this is often
	omitted when it is clear from the context.  E.g.

		Forall x . P(x)  <=>  not (Exists x . not P(x))

	meaning that any x (in some unspecified set) has property P
	which is equivalent to saying that there does not exist any x
	which does not have the property.

	If a variable is not quantified then it is a {free variable}.
	In {logic programming} this usually means that it is actually
	universally quantified.

	See also {first order logic}.

Quantify

	A performance analysis tool from {Pure Software}.

quantum bogodynamics

	/kwon'tm boh"goh-di:-nam"iks/ A theory that characterises the
	universe in terms of {bogon} sources (such as politicians,
	used-car salesmen, TV evangelists, and {suit}s in general),
	bogon sinks (such as taxpayers and computers), and bogosity
	potential fields.  Bogon absorption causes human beings to
	behave mindlessly and machines to fail (and may also cause
	both to emit secondary bogons); however, the precise mechanics
	of bogon-{computron} interaction are not yet understood.

	Quantum bogodynamics is most often invoked to explain the
	sharp increase in hardware and software failures in the
	presence of suits; the latter emit bogons, which the former
	absorb.

	(02 Nov 1994)

quantum computer

	<computer> A type of computer which uses the ability of
	quantum systems, such as a collection of atoms, to be in many
	different states at once.  In theory, such superpositions
	allow the computer to perform many different computations
	simultaneously.  This capability is combined with interference
	among the states to produce answers to some problems, such as
	factoring integers, much more rapidly than is possible with
	conventional computers.  In practice, such machines have not
	yet been built due to their extreme sensitivity to noise.

	{Oxford University (<a
	href="http://eve.physics.ox.ac.uk/QChome.html)}, {Stanford
	University (http://feynman.stanford.edu/qcomp/)}.

	A {quantum search algorithm
	(ftp://parcftp.xerox.com/pub/dynamics/quantum.html)} for
	{constraint satisfaction} problems exhibits the phase
	transition for {NP-complete} problems.

	(11 Feb 1997)

quantum computing

	{quantum computer}

quarter

	Two bits.  This in turn comes from the "pieces of eight" famed
	in pirate movies - Spanish silver crowns that could be broken
	into eight pie-slice-shaped "bits" to make change.  Early in
	American history the Spanish coin was considered equal to a
	dollar, so each of these "bits" was considered worth 12.5
	cents.  Usage: rare.

	Synonyms: {tayste}, {crumb}, {quad}.

	See also {nickle}, {nibble}, {byte}, {dynner}.

	(25 Jan 1995)

Quarter Inch Cartridge

	<storage> /kwik/ (QIC) a type of {magnetic tape} and {tape
	drive}.  Development standards for QIC make it possible for
	tapes written on one QIC drive to be read on another.  QIC
	drives are made to work with different lengths of tape.  The
	model number of the drive consists of QIC followed by a number
	which indicates the drives tape capacity in {megabytes} (MB).

	(09 Dec 1996)

Quay Financial Software

	{CSK Software}

QUEASY

	An early system on the {IBM 701}.

	[Listed in CACM 2(5):16 (May 1959)].

	(25 Jan 1995)

Queen Mary and Westfield College

	(QMW) One of the largest of the multi-faculty schools of the
	{University of London}.  QMW has some 6000 students and over
	600 teaching and research staff organised into seven
	faculties.

	QMW was one of the first colleges in the University of London
	to develop fully the course-unit, or modular, approach to
	degree programmes.  Cross faculty courses are encouraged and
	the physical proximity of all the College buildings is a major
	factor in enabling students to adopt an interdisciplinary
	approach to their studies.

	{Home (http://www.qmw.ac.uk/)}

	(25 Jan 1995)

Queens Problem

	{Eight Queens Puzzle}

Queens Puzzle

	{Eight Queens Puzzle}

Queen's University

	A Canadian University.  Source of {GVL}, {NIAL}, {Pasqual},
	{Q'NIAL} and {TXL}.

	{(ftp://ftp.qucis.queensu.ca/pub/)}

	(20 Oct 1994)

QUEL

	The {query language} used by the {database management system}
	{INGRES}.

	(31 Jan 1995)

query

	1. <database> A user's (or {agent}'s) request for information,
	generally as a formal request to a {database} or {search
	engine}.

	{SQL} is the most common {database query language}.

	2. <character> {question mark}.

	(09 Apr 1997)

ques

	{question mark}

Quest

	1. A language designed for its simple denotational semantics.
	"The Denotational Semantics of Programming Languages",
	R. Tennent, CACM 19(8):437-453 (Aug 1976).

	2. QUantifiers and SubTypes.  Language with a sophisticated
	type system.  Just as types classify values, "kinds" classify
	types and type operators.  Explicit universal and existential
	quantification over types, type operators, and subtypes.
	Subtyping is defined inductively on all type constructions,
	including higher-order functions and abstract types.
	User-definable higher-order type operators.

	"Typeful Programming", Luca Cardelli <luca@src.dec.com>, RR
	45, DEC SRC 1989.

	Implemented in Modula-3.

	{(ftp://gatekeeper.dec.com/pub/DEC/Quest/quest12A.tar.Z)}

	3. <tool, text> A {multimedia} {authoring} system.  Quest has
	been available for {MS-DOS} for some time.  Version 3.5 for
	{Microsoft Windows} was released around March 1995.  It
	features an {Authorware}-style {flowchart} system with an
	{ANSI-C} {script language}.

	(02 Apr 1995)

question mark

	<character> "?", {ASCII} character 63.

	Common names: query; {ITU-T}: question mark; {ques}.  Rare:
	whatmark; {INTERCAL}: what; wildchar; huh; hook; buttonhook;
	hunchback.

	(02 Apr 1995)

queue

	<programming> A {first-in first-out} data structure used to
	sequence multiple demands for a resource such as a {printer},
	{processor} or communications channel.  Objects are added to
	the tail of the queue and taken off the head.

	A typical use of queues in an {operating system} involves a
	user command which places something on a queue, e.g. a file on
	a printer queue or a job on a job queue, and a {background}
	process or "{demon}" which takes things off and processes them
	(e.g. prints or executes them).  Another common use is to pass
	data between an {interrupt handler} and a user process.

	(11 May 1995)

QUICK

	<language> An early system on the {IBM 701}.

	[Listed in CACM 2(5):16 (May 1959)].

	(11 May 1995)

quick-and-dirty

	<jargon, programming> Describes a {crock} put together under
	time or user pressure.  Used especially when you want to
	convey that you think the fast way might lead to trouble
	further down the road.  "I can have a quick-and-dirty fix in
	place tonight, but I'll have to rewrite the whole module to
	solve the underlying design problem."

	See also {kluge}.

	(11 May 1995)

QuickDraw

	<library, graphics> Part of the software in the {Apple
	Macintosh}'s {ROM} that performs graphics operations.

	(11 May 1995)

Quicksilver

	<database> A {dBASE}-like compiler for {MS-DOS} from
	{WordTech}.

	(11 May 1995)

Quicksort

	A sorting {algorithm} with O(n log n) average time
	{complexity}.

	One element, x of the list to be sorted is chosen and the
	other elements are split into those elements less than x and
	those greater than or equal to x.  These two lists are then
	sorted {recursive}ly using the same algorithm until there is
	only one element in each list, at which point the sublists are
	recursively recombined in order yielding the sorted list.

	This can be written in {Haskell}:

		qsort               :: Ord a => [a] -> [a]
		qsort []             = []
		qsort (x:xs)         = qsort [ u | u<-xs, u<x ] ++
				       [ x ] ++
				       qsort [ u | u<-xs, u>=x ]

	[Mark Jones, Gofer prelude.]

Quicktime

	<graphics, standard, file format, product> {Apple Computer}'s
	standard for integrating {full-motion video} and digitised
	sound into {application program}s.

	[Details?  Archives?]

	(21 Apr 1995)

QUIKSCRIPT

	Simulation language derived from {SIMSCRIPT}, based on
	{20-GATE}.

	["Quikscript - A Simpscript-like Language for the G-20",
	F.M. Tonge et al, CACM 8(6):350-354 (June 1965)].

QUIKTRAN

	FORTRAN-like, interactive with debugging facilities.  Sammet
	1969, p.226.

QUIN

	Pyle 1965.  Interactive language.  Sammet 1969, p.691.

quine

	<programming> /kwi:n/ (After the logician Willard V. Quine,
	via Douglas Hofstadter) A program that generates a copy of its
	own source text as its complete output.  Devising the shortest
	possible quine in some given programming language is a common
	hackish amusement.

	In most interpreted languages, any constant, e.g. 42, is a
	quine because it "evaluates to itself".  In certain {Lisp}
	dialects (e.g. {Emacs Lisp}), the symbols "nil" and "t" are
	"self-quoting", i.e. they are both a symbol and also the value
	of that symbol.  In some dialects, the function-forming
	function symbol, "lambda" is self-quoting so that, when
	applied to some arguments, it returns itself applied to those
	arguments.  Here is a quine in {Lisp} using this idea:

	 ((lambda (x) (list x x)) (lambda (x) (list x x)))

	Compare this to the {lambda expression}:

		(\ x . x x) (\ x . x x)

	which reproduces itself after one step of {beta reduction}.
	This is simply the result of applying the {combinator} {fix}
	to the {identity function}.  In fact any quine can be
	considered as a {fixed point} of the language's evaluation
	mechanism.

	We can write this in {Lisp}:

	 ((lambda (x) (funcall x x)) (lambda (x) (funcall x x)))

	where "funcall" applies its first argument to the rest of its
	arguments, but evaluation of this expression will never
	terminate so it cannot be called a quine.

	Here is a more complex version of the above Lisp quine, which
	will work in Scheme and other Lisps where "lambda" is not
	self-quoting:

	 ((lambda (x)
	   (list x (list (quote quote) x)))
	  (quote
	     (lambda (x)
	       (list x (list (quote quote) x)))))

	It's relatively easy to write quines in other languages such
	as {PostScript} which readily handle programs as data; much
	harder (and thus more challenging!) in languages like {C}
	which do not.  Here is a classic {C} quine for {ASCII}
	machines:

	 char*f="char*f=%c%s%c;main() {printf(f,34,f,34,10);}%c";
	 main(){printf(f,34,f,34,10);}

	For excruciatingly exact quinishness, remove the interior line
	break.  Some infamous {Obfuscated C Contest} entries have been
	quines that reproduced in exotic ways.

	{Ken Thompson}'s {back door} involved an interesting variant
	of a quine - a compiler which reproduced part of itself when
	compiling (a version of) itself.

	(25 Apr 1995)

Quintec-Objects

	Based on {Quintec Prolog} (not {Quintus}).  British.

quintillion

	10^30 in Europe (this is called a {nonillion} in the United
	States and Canada).

	10^18 in the United States and Canada (this is called a
	trillion in Europe).

	[Collins dictionary].

Quintus Prolog

	<language, product> A version of {Prolog} from {Qunitus}.

	{(ftp://ftp.quintus.com/)}

	Telephone: +1 (800) 542 1283.

	[More details?]

	(24 Apr 1995)

quote chapter and verse

	[by analogy with the mainstream phrase] To cite a relevant
	excerpt from an appropriate {bible}.  "I don't care if "rn"
	gets it wrong; "Followup-To: poster" is explicitly permitted
	by {RFC} 1036.  I'll quote chapter and verse if you don't
	believe me."  See also {legalese}, {language lawyer}, {RTFS}
	(sense 2).

quotient

	The number obtained by dividing one number (the "numerator")
	by another (the "denominator").  If both numbers are
	{rational} then the result will also be rational.

Qu-Prolog

	An extension of {Prolog} which performs {meta-level
	computation}s over {object language}s, such as {predicate
	calculi} and {lambda-calculi}, which have object-level
	variables, and {quantifier}s that create local {scope}s for
	those variables. Qu-Prolog is well suited as an implementation
	language for {theorem prover}s and support notations typically
	found in texts on mathematics and logic.

Quty

	A functional plus logic language.  "Quty: A Functional
	Language Based on Unification", M. Sato et al, in Conf. Fifth
	Gen. Computer Systems, ICOT 1984, pp.157-165.

quux

	/kwuhks/ [Mythically, from the Latin semi-deponent verb quuxo,
	quuxare, quuxandum iri; noun form variously "quux" (plural
	"quuces", anglicised to "quuxes") and "quuxu" (genitive plural
	is "quuxuum", for four u-letters out of seven in all, using up
	all the "u" letters in Scrabble).]  1. Originally, a
	{metasyntactic variable} like {foo} and {foobar}.  Invented by
	{Guy Steele} for precisely this purpose when he was young and
	naive and not yet interacting with the real computing
	community.  Many people invent such words; this one seems
	simply to have been lucky enough to have spread a little.  In
	an eloquent display of poetic justice, it has returned to the
	originator in the form of a nickname.

	2. See {foo}; however, denotes very little disgust, and is
	uttered mostly for the sake of the sound of it.

	3. {Guy Steele} in his persona as "The Great Quux", which is
	somewhat infamous for light verse and for the "Crunchly"
	cartoons.

	4. In some circles, used as a punning opposite of "crux".
	"Ah, that's the quux of the matter!" implies that the point is
	*not* crucial (compare {tip of the ice-cube}).

qux

	/kwuhks/ The fourth of the standard {metasyntactic variable},
	after {baz} and before the quu(u...)x series.  See {foo},
	{bar}, {baz}, {quux}.  This appears to be a recent mutation
	from {quux}, and many versions (especially older versions) of
	the standard series just run {foo}, {bar}, {baz}, {quux}, ...

QWERTY

	<hardware> /kwer'tee/ (From the top left row of letter keys of
	most keyboards) Pertaining to a standard English-language
	typewriter keyboard (sometimes called the Sholes keyboard
	after its inventor), as opposed to Dvorak or foreign-language
	layouts (e.g. AZERTY in french-speaking countries) or a
	{space-cadet keyboard} or {APL keyboard}.

	The QWERTY layout is a fine example of a {fossil}.  It is
	sometimes said that it was designed to slow down the typist,
	but this is wrong; it was designed to allow *faster* typing -
	under a constraint now long obsolete.  In early typewriters,
	fast typing using nearby type-bars jammed the mechanism.  So
	Sholes fiddled the layout to separate the letters of many
	common digraphs (he did a far from perfect job, though; "th",
	"tr", "ed", and "er", for example, each use two nearby keys).
	Also, putting the letters of "typewriter" on one line allowed
	it to be typed with particular speed and accuracy for {demos}.
	The jamming problem was essentially solved soon afterward by a
	suitable use of springs, but the keyboard layout lives on.

	Compare: {Dvorak}.

	[Do french speakers refer to it as a "keyboard AZERTY"?]

	(15 Jan 1998)

QX

	(Meaning "OK", from E.E. Smith SF books) A language for
	{digital signal processing} of digitised speech, by Richard
	Gillmann of {SDC}, Santa Monica.  QX was part of SDC's {speech
	recognition} project.

	(09 Feb 1995)

R2000

	{MIPS R2000}

R2RS

	A revision of {RRS}, itself revised in {R3RS}.

	["The Revised Revised Report on the Algorithmic Language
	Scheme", Clinger, AI Memo 848, MIT Aug 1985].

	(09 Feb 1995)

R3.99RS

	{R4RS} without the {macro}s.

R3RS

	A revision of {R2RS}, revised in {R4RS}.

	["The Revised^3 Report on the Algorithmic Language Scheme",
	J. Rees et al, SIGPLAN Notices 21(12):37-79 (Dec 1986)].

R4RS

	A revision of {R3RS}, revised in {R3.99RS}.

	{(ftp://altdorf.ai.mit.edu/)}

	["The Revised^4 Report on the Algorithmic Language Scheme", W.
	Clinger et al, MIT (Nov 1991)].

	(28 Oct 1994)

	[Later revisions?]

rabbit job

	(Cambridge) A batch job that does little, if any, real work,
	but creates one or more copies of itself, breeding like
	rabbits.

	Compare {wabbit}, {fork bomb}.

	(09 Nov 1994)

RACE

	<programming> {Requirements Acquisition and
	Controlled Evolution}.

	(21 Nov 1995)

race condition

	A problem in an electronic circuit where the value output by a
	{logic gate} depends on the exact timing of two or more input
	signals.

	For example, consider a two input AND gate fed with a logic
	signal X on input A and its negation, NOT X, on input B.  In
	theory, the output (X AND NOT X) should never be high.
	However, if changes in the value of X take longer to propagate
	to input B than to input A then when X changes from false to
	true, there will be a brief period during which both inputs
	are true, and so the gate's output will also be true.  If this
	output is fed to an edge-sensitive component such as a counter
	or flip-flop then the temporary effect ("{glitch}") will
	become permanent.

	(09 Nov 1994)

RACF

	{Resource Access Control Facility}

RAD

	<programming> {Rapid Application Development}.

Raddle

	["On the Design of Large Distributed Systems", I.R. Forman,
	Proc 1st IEEE Intl Conf Comp Langs, pp.25-27 (Oct 1986)].

Radio Frequency Interference

	<hardware, testing> (RFI) Electromagnetic radiation which is
	emitted by electrical circuits carrying rapidly changing
	signals, as a by-product of their normal operation, and which
	causes unwanted signals (interference or noise) to be induced
	in other circuits.

	The most important means of reducing RFI are: use of bypass or
	"decoupling" {capacitors} on each active device (connected
	across the power supply, as close to the device as possible),
	risetime control of high speed signals using series resistors
	and {VCC filtering}.  Shielding is usually a last resort after
	other techniques have failed because of the added expense of
	RF gaskets and the like.

	The efficiency of the radiation is dependant on the height
	above the ground or power plane (at RF one is as good as the
	other) and the length of the conductor in relationship to the
	wavelength of the signal component (fundamental, harmonic or
	transient (overshoot, undershoot or ringing)).  At lower
	frequencies, such as 133 MHz, radiation is almost exclusively
	via I/O cables; RF noise gets onto the power planes and is
	coupled to the line drivers via the VCC and ground pins.  The
	Rf is then coupled to the cable through the line driver as
	common node noise.  Since the noise is common mode, shielding
	has very little effect, even with differential pairs.  The RF
	energy is capacitively coupled from the signal pair to the
	shield and the shield itself does the radiating.

	At higher frequencies, usually above 500 Mhz, traces get
	electrically longer and higher above the plane.  Two
	techniques are used at these frequencies: wave shaping with
	series resistors and embedding the traces between the two
	planes.  If all these measures still leave too much RFI,
	sheilding such as RF gaskets and copper tape can be used.
	Most digital equipment is designed with metal, or coated
	plastic, cases.

	Switching power supplies can be a source of RFI, but have
	become less of a problem as design techniques have improved.

	Most countries have legal requirements that electronic and
	electrical hardware must still work correctly when subjected
	to certain amounts of RFI, and should not emit RFI which could
	interfere with other equipment (such as radios).

	See also {Electrostatic Discharge}, {Electromagnetic
	Compatibility}.

	(26 Jan 1998)

radiosity

	A technique for modelling light for producing (rendering)
	images from three dimensional models.  It is physically more
	accurate than {raytracing}, but takes more computing
	power.

	{Usenet} newsgroup: {news:comp.graphics}.

	[Details?]

	(05 Jan 1995)

radix

	<mathematics> (Or "base", "number base") In a positional
	representation of numbers, that integer by which the
	significance of one digit place must be multiplied to give the
	significance of the next higher digit place.  Conventional
	decimal numbers are radix ten, {binary} numbers are radix two.

	(24 Dec 1995)

RAID

	{Redundant Arrays of Independent Disks}

RAIL

	Automatix.  High-level language for industrial robots.

rainbow series

	<publication> Any of several series of technical manuals
	distinguished by cover colour.  The original rainbow series
	was the NCSC security manuals (see {Orange Book}, {crayola
	books}); the term has also been commonly applied to the
	PostScript reference set (see {Red Book}, {Green Book}, {Blue
	Book}, {White Book}).  Which books are meant by ""the" rainbow
	series" unqualified is thus dependent on one's local technical
	culture.

	(03 Dec 1996)

rain dance

	1. Any ceremonial action taken to correct a hardware problem,
	with the expectation that nothing will be accomplished.  This
	especially applies to reseating {printed circuit board}s,
	reconnecting cables, etc.  "I can't boot up the machine.
	We'll have to wait for Greg to do his rain dance."

	2. Any arcane sequence of actions performed with computers or
	software in order to achieve some goal; the term is usually
	restricted to rituals that include both an {incantation} or
	two and physical activity or motion.

	Compare {magic}, {voodoo programming}, {black art}, {cargo
	cult programming}, {wave a dead chicken}.

	(09 Feb 1995)

RAISE

	See {RSL}.

RAL

	1. Rutherford Appleton Laboratory (UK).

	2. An {expert system}.

RAM

	1. <storage> {Random Access Memory}.

	2. <humour> Rarely Adequate Memory.

	A humorous reference to the fact that programs and data
	expand to fill the memory available.

	(22 Apr 1995)

Rambus DRAM

	<storage> A high bandwidth {DRAM}, designed by {Rambus, Inc.}
	of Mountain View, CA.

	RDRAM is used mainly for {video accelerators}, and also in the
	{Ultra 64} from {Nintendo}.  It offers sustained {transfer
	rates} of around 1000 Mbps, compared to 200 Mbps for ordinary
	DRAM.  Although it cannot be used as a direct replacement for
	existing memory, it is likely that it will replace DRAM and
	{SDRAM} as the main memory system in {personal computers} as
	the {bus} speeds required by these machines increase.  SDRAM
	can operate up to around 100MHz, but RDRAM has been
	demonstrated by the manufacturers running at 600MHz.

	The memory is also only 8 or 9 {bit}s wide, so the bandwidth
	would increase enormously if it were used in parallel to give
	32 or 64-bit memory.

	(13 Dec 1996)

Rambus, Inc.

	<company> The company which designed {Rambus DRAM}.

	{Home (http://www.rambus.com/)}.

	Address: Mountain View, CA., USA.

	(15 Dec 1996)

RAMDAC

	{Random Access Memory Digital-to-Analog Converter}

RAM disk

	<operating system, storage> A memory-resident program which
	mimics a {hard disk} drive.  It uses part of computer's {RAM}
	to store data which can be accessed as files.  Unlike a real
	disk drive, this drive forgets all stored data when the
	computer is turned off.

	(14 Mar 1995)

RAM drive

	{RAM disk}

RAMIS II

	Rapid Access {Management Information System}.

	A {database} from {On-Line Software International}.

	(14 Nov 1994)

RAMTRON

	<company> The company which holds the patents for {FRAM} and
	licenses the technology to other companies.

	The licensees are currently (Feb 1997) {Hitachi}, {Rohm},
	{Samsung}, {SGS-Thomson} and {Toshiba}, none of who offer FRAM
	products of their own yet.

	{Home (http://www.csn.net/ramtron/)}.

	(19 Feb 1997)

random

	1. Unpredictable (closest to mathematical definition); weird.
	"The system's been behaving pretty randomly."

	2. Assorted; undistinguished.  "Who was at the conference?"
	"Just a bunch of random business types."

	3. (pejorative) Frivolous; unproductive; undirected.  "He's
	just a random loser."

	4. Incoherent or inelegant; poorly chosen; not well organised.
	"The program has a random set of misfeatures."  "That's a
	random name for that function."  "Well, all the names were
	chosen pretty randomly."

	5. In no particular order, though {deterministic}.  "The I/O
	channels are in a pool, and when a file is opened one is
	chosen randomly."

	6. Arbitrary.  "It generates a random name for the scratch
	file."

	7. Gratuitously wrong, i.e. poorly done and for no good
	apparent reason.  For example, a program that handles file
	name defaulting in a particularly useless way, or an assembler
	routine that could easily have been coded using only three
	registers, but redundantly uses seven for values with
	non-overlapping lifetimes, so that no one else can invoke it
	without first saving four extra registers.  What {randomness}!

	8.  A random hacker; used particularly of high-school students
	who soak up computer time and generally get in the way.

	9.  Anyone who is not a hacker (or, sometimes, anyone not
	known to the hacker speaking).  "I went to the talk, but the
	audience was full of randoms asking bogus questions".

	10.  (occasional MIT usage) One who lives at Random Hall.  See
	also {J. Random}, {some random X}.

	(05 Dec 1995)

random-access memory

	<storage> (RAM) (Previously "direct-access memory").  A data
	storage device for which the order of access to different
	locations does not affect the speed of access.  This is in
	contrast to, say, a {magnetic disk}, {magnetic tape} or a
	{mercury delay line} where it is very much quicker to access
	data sequentially because accessing a non-sequential location
	requires physical movement of the storage medium rather than
	just electronic switching.

	The most common form of RAM in use today is built from
	{semiconductor} {integrated circuit}s, which can be either
	static ({SRAM}) or dynamic ({DRAM}).  In the 1970s magnetic
	{core} memory was used.  RAM is still referred to as core by
	some old-timers.

	The term "RAM" has gained the additional meaning of
	read-write.  Most kinds of semiconductor {read-only memory}
	(ROM) are actually "random access" in the above sense but are
	never referred to as RAM.  Furthermore, memory referred to as
	RAM can usually be read and written equally quickly
	(approximately), in contrast to the various kinds of
	{programmable read-only memory}.  Finally, RAM is usually
	volatile though {non-volatile random-access memory} is also
	used.

	Interestingly, some {DRAM} devices are not truly random access
	because various kinds of "{page mode}" or "column mode" mean
	that sequential access is faster than random access.

	(05 Dec 1995)

Random Access Memory Digital-to-Analog Converter

	<hardware> (RAMDAC) A combination of three fast {DAC}s with a
	small {SRAM} used in graphics {display adapters} to store the
	{colour palette} and to generate the analog signals to drive a
	colour {monitor}.  The logical colour number from the display
	memory is fed into the address inputs of the SRAM to select a
	palette entry to appear on the output of the SRAM.  This entry
	is composed of three separate values corresponding to the
	three components (red, green, and blue) of the desired
	physical colour.  Each component value is fed to a separate
	DAC, whose analog output goes to the monitor, and ultimately
	to one of its three {electron guns} (or equivalent in
	non-{CRT} displays).

	DAC word lengths range usually from 6 to 10 bits.  The SRAM's
	wordlength is three times the DAC's word length.  The SRAM
	acts as a {colour lookup table}.  It usually has 256 entries
	(and thus an 8-bit address).  If the DAC's word length is also
	8 bits, we have a 256 x 24-bit SRAM which allows a selection
	of 256 out of 16777216 possible colours for the display.  The
	contents of the SRAM can be changed while the display is not
	active (during {display blanking} times).  The SRAM can
	usually be bypassed and the DACs can be fed directly by
	display data (for {true colour} modes).

	(24 Mar 1996)

randomness

	1. An inexplicable misfeature; gratuitous inelegance.

	2. A {hack} or {crock} that depends on a complex combination
	of coincidences (or, possibly, the combination upon which the
	crock depends for its accidental failure to malfunction).
	"This hack can output characters 40--57 by putting the
	character in the four bit accumulator field of an XCT and then
	extracting six bits - the low 2 bits of the XCT opcode are
	the right thing."  "What randomness!"

	3. Of people, synonymous with "flakiness".  The connotation is
	that the person so described is behaving weirdly,
	incompetently, or inappropriately for reasons which are (a)
	too tiresome to bother inquiring into, (b) are probably as
	inscrutable as quantum phenomena anyway, and (c) are likely to
	pass with time. "Maybe he has a real complaint, or maybe it's
	just randomness.  See if he calls back."

random numbers

	1. <programming> {pseudorandom number}.

	2. <jargon> When one wishes to specify a large but random
	number of things, and the context is inappropriate for {N},
	certain numbers are preferred by hacker tradition (that is,
	easily recognised as placeholders).  These include the
	following:

	17 - Long described at MIT as "the least random number"; see
	23.

	23 - Sacred number of Eris, Goddess of Discord (along with 17
	and 5).

	42 - The Answer to the Ultimate Question of Life, the
	Universe, and Everything, as revealed in Douglas Adams'
	"Hitchhiker's Guide to the Galaxly".  Note that this answer is
	completely fortuitous :-) (US pronunciation).  It has been
	observed that in the little-used number base 13, the answer to
	the ultimate question, "What is 6 x 9?", is indeed 42, showing
	that in six dimensions white mice have 13 digits.

	69 - From the sexual act.  This one was favoured in {MIT}'s
	{ITS} culture.

	105 - 69 {hex} = 105 decimal and 69 decimal = 105 {octal}.

	666 - The Number of the Beast.

	For further enlightenment, study the "Principia Discordia",
	"The Joy of Sex", and the Christian Bible (Revelation 13:18).

	See also {Discordianism} or consult your pineal gland.  See
	also {for values of}.

	(10 Feb 1997)

range

	[Mathematics].  See {image}.

Rapid Application Development

	<programming> (RAD) A loose term for any {software life-cycle}
	designed to give faster development and better results and to
	take maximum advantage of recent advances in development
	software.

	RAD is associated with a wide range of approaches to software
	development: from hacking away in a {GUI builder} with little
	in the way of analysis and design to complete {methodologies}
	expanding on an {information engineering} framework.

	Some of the current RAD techniques are: {CASE} tools,
	{iterative life-cycles}, {prototyping}, {workshops}, {SWAT
	team}s, {timebox development}, and {Re-use} of applications,
	templates and code.

	{RAD at BSO/Den Haag
	(http://www.riv.nl/origin/company/denhaag/RAD.HTM)}.

	["Rapid Application Development", James Martin].

	(23 Sep 1995)

RapidCAD

	<processor> A specially packaged {Intel 486DX} and a dummy
	{floating point unit} (FPU) designed as pin-compatible
	replacements for an {Intel 80386} processor and {80387} FPU.
	Since the DX variant has a working on-chip FPU, a dummy FPU
	package is supplied to go in the {387} FPU socket.

	(10 May 1995)

Rapidly Extensible Language, English

	<language> (REL English) A {formal language} based on English.

	["Practical Natural Language Processing: The REL System as
	Prototype", Adv in Computers 13, Academic Press 1975].

	(09 Apr 1997)

rapid prototyping

	<programming> The creation of a working model of a software
	module to demonstrate the feasibility of the function.  The
	prototype is later refined for inclusion in a final product.

	(29 May 1996)

Rapidwrite

	<language, tool> A method for translating set of abbreviations
	into the much more verbose {COBOL} code.

	[Sammet 1969, p. 338].

	(10 May 1995)

RAPT

	["An Interpreter for a Language for Describing Assemblies",
	R.J. Popplestone et al, Artif Intell 14:79-107 (1980)].

	(10 May 1995)

RARE

	{Rseaux Associs pour la Recherche Europenne}

rare mode

	<operating system> {Unix} CBREAK mode (character-by-character
	with keyboard {interrupt}s enabled).  Distinguished from {raw
	mode} and {cooked mode}; the phrase "a sort of half-cooked
	(rare?) mode" is used in the V7/BSD manuals to describe the
	mode.  Usage: rare.

	(10 May 1995)

RARP

	{Reverse Address Resolution Protocol}

RAS

	1. <hardware, storage> {Row Address Strobe}.

	2. <communications> {Remote Access Services}.

	(14 Aug 1996)

RASP

	<language> ["RASP - A Language with Operations on Fuzzy Sets",
	D.D. Djakovic, Comp Langs 13(3):143-148 (1988)].

	(10 May 1995)

raster

	<hardware> The area of a video display that is covered by
	sweeping the electron beam of the display in a series of
	horizontal lines from top to bottom.  The beam then returns to
	the top during the vertical flyback interval.

	See also {CRT}, {frame buffer}.

	(22 Mar 1995)

raster blaster

	<hardware, jargon> (Cambridge) Specialised hardware for
	{bitblt} operations (a {blitter}).  Allegedly inspired by
	"Rasta Blasta", British slang for the sort of portable stereo
	Americans call a "boom box" or "ghetto blaster".

	(22 Mar 1995)

raster burn

	1. (Or terminal illness).  Eyestrain brought on by too many
	hours of looking at low-resolution, poorly tuned, or
	glare-ridden monitors, especially graphics monitors.

	2. The "burn-in" condition your {CRT} tends to get if you
	don't use a {screen saver}.

raster font

	{bitmap font}

rastergram

	{Single Image Random Dot Stereogram}

raster graphics

	<graphics> Computer graphics in which an {image} is composed
	of an array of pixels arranged in rows and columns.

	Opposite: {vector graphics}.

	(22 Mar 1995)

raster subsystem

	<graphics> The part of a graphics system concerned with an
	{image} after it has been transformed and scaled to screen
	coordinates.  It includes scan conversion and display.

	(22 Mar 1995)

Ratatosk

	An {SLR parser} generator written in {Gofer} (a {Haskell}
	variant) by Torben AEgidius Mogensen <torbenm@diku.dk>.
	Ratatosk generates {purely functional} {backtracking} {LR0
	grammar} {parser}s (also in Gofer).

	Even though the {sematic} value of a {production} is a
	function of the attributes of its right-hand side (and thus
	apparently purely synthesised), inherited attributes are
	easily simulated by using {higher-order function}s.

	{(ftp://ftp.diku.dk/pub/diku/dists/Ratatosk.tar.Z)}

rat belt

	A cable tie, especially the sawtoothed, self-locking plastic
	kind that you can remove only by cutting (as opposed to a
	random twist of wire or a twist tie or one of those humongous
	metal clip frobs).  Small cable ties are "mouse belts".

RatC

	A version of Ron Cain's original {Small-C} compiler.

	["A Book on C", R.E. Berry and B.A. Meekings, 1984, ISBN
	0-333-36821-5].

	(04 Oct 1994)

	[Why "Rat"?]

RATEL

	Raytheon Automatic Test Equipment Language.  For analog and
	digital computer controlled test centres.  "Automatic Testing
	via a Distributed Intelligence Processing System", S.J. Ring,
	IEEE AUTOTESTCON 77 (Nov 1977).

Rate monotonic scheduling

	<algorithm> A means of {scheduling} the time allocated to
	periodic {hard-deadline} {real-time} users of a resource.  The
	users are assigned priorities such that a shorter fixed period
	between deadlines is associated with a higher priority.

	Rate monotonic scheduling provides a low-overhead, reasonably
	resource-efficient means of guaranteeing that all users will
	meet their deadlines provided that certain analytical
	equations are satisfied during the system design.  It avoids
	the design complexity of {time-line scheduling} and the
	overhead of dynamic approaches such as {earliest-deadline
	scheduling}.

	[D. R. Wilcox, Naval Ocean Systems Center Technical Report
	1310, August 1989, "Periodic Phase Adjustment Distributed
	Clock Synchronization in the Hard Realtime Environment",
	p. 9].

	(23 Mar 1996)

RATFIV

	Successor to {RATFOR}.

RATFOR

	RATional FORTRAN.  Kernighan.  {FORTRAN} {preprocessor} to
	allow programming with {C}-like control flow.  Mainly of
	historical significance.

	["Ratfor - A Preprocessor for a Rational Fortran",
	B.W. Kernighan, Soft Prac & Exp 5:395-406 (Oct 1975)].

	[Software Tools, B.W. Kernighan & P.J. Plauger, A-W 1976].

	{(ftp://ftp.wustl.edu/mirrors/Unix-c/languages/ratfor.tar-z)}

	A translator from Ratfor to Fortran IV was posted to
	comp.sources.Unix volume 13.

	["Ratfor - A Preprocessor for a Rational Fortran",
	B.W. Kernighan, Soft Prac & Exp 5:395-406 (Oct 1975)].

rational

	[Mathematics] a fractional number n/d, where n and d are
	integers, n is the numerator and d is the denominator.  The
	set of all rational numbers is usually called Q.
	Computers do not usually deal with rational numbers but
	instead convert them to {real} numbers which are represented
	(approximately in some cases) as {floating-point} numbers.
	Compare {irrational}.

rave

	[WPI] 1. To persist in discussing a specific subject.

	2. To speak authoritatively on a subject about which one knows
	very little.

	3. To complain to a person who is not in a position to correct
	the difficulty.

	4. To purposely annoy another person verbally.

	5. To evangelise.  See {flame}.

	6. Also used to describe a less negative form of blather, such
	as friendly bullshitting.  "Rave" differs slightly from
	{flame} in that "rave" implies that it is the persistence or
	obliviousness of the person speaking that is annoying, while
	{flame} implies somewhat more strongly that the tone or
	content is offensive as well.

rave on!

	Sarcastic invitation to continue a {rave}, often by someone
	who wishes the raver would get a clue but realises this is
	unlikely.

raw mode

	A mode that allows a program to transfer bits directly to or
	from an I/O device (or, under {bogus} systems that make a
	distinction, a disk file) without any processing, abstraction,
	or interpretation by the operating system.  Compare {rare
	mode}, {cooked mode}.

RAWOOP-SNAP

	<language> An early system on the {IBM 1103} or 1103A.

	[Listed in CACM 2(5):16, May 1959].

	(29 May 1996)

Rayleigh distribution

	<mathematics> A curve that yields a good approximation to the
	actual labour curves on software projects.

	[Details?  Equation?]

	(29 May 1996)

ray tracing

	<graphics> A technique used in computer graphics to create
	realistic images by calculating the paths taken by rays of
	light entering the observer's eye at different angles.  The
	paths are traced backwards from the viewpoint, through a point
	(a pixel) in the image plane until they hit some object in the
	scene or go off to infinity.  Objects are modelled as
	collections of abutting surfaces which may be rectangles,
	triangles or more complicated shapes such as 3D splines.  The
	optical properties of different surfaces (colour, reflectance,
	transmitance, refraction, texture) also affect how it will
	contribute to the colour and brightness of the ray.  The
	position, colour and brightness of light sources, including
	ambient lighting, is also taken into account.

	Ray tracing is an ideal application for parallel processing
	since there are many pixels, each of whose values is
	independent and can thus be calculated in parallel.

	{Usenet} newsgroup: {news:comp.graphics.raytracing}.

	{(http://www.cm.cf.ac.uk:/Ray.Tracing/)}

	(29 May 1996)

R:BASE

	{MS-DOS} 4GL from Microrim.  Based on Minicomputer DBMS RIM.

	[Was Wayne Erickson the author?]

RBASIC

	Database language for Revelation, by Cosmos, Inc.  Combines
	features of BASIC, Pascal and Fortran.

RBCSP

	Roper and Barter's CSP.

	["A Communicating Sequential Process Language and
	Implementation", T. Roper & J. Barter, Soft Prac & Exp
	11(11):1215-1234 (Nov 1981)].

RBOC

	{Regional Bell Operating Company}

rc

	1. <filename extension> (run commands) The {filename
	extension} common to many {Unix} configuration files, e.g.
	{.newsrc}, {.cshrc}, {.twmrc}, elmrc, etc.

	The suffix "rc" derives from a script-creation utility in
	{CTSS} called "{runcom}" (for "run commands").

	{Unix FAQ
	(http://www.cis.ohio-state.edu/hypertext/faq/usenet/unix-faq/faq/top.html)}.

	2. {AT&T} {Plan 9} {shell} by Tom Duff.

	Version 1.4 of the free lookalike shell by Byron Rakitzis
	<byron@archone.tamu.edu> or <byron@netapp.com> is available by
	{(ftp://archone.tamu.edu/)}, {(ftp://ftp.white.toronto.edu/)}.

	Mailing list: <rc-request@hawkwind.utcs.toronto.edu>.

	(09 Apr 1996)

RC4

	<cryptography> A {cipher} designed by {RSA Data Security,
	Inc.} which can accept {keys} of arbitrary length, and is
	essentially a {pseudo random number generator} with the output
	of the generator being {XOR}ed with the data stream to produce
	the encrypted data.  For this reason, it is very important
	that the same RC4 key never be used to encrypt two different
	data streams.  The encryption mechanism used to be a trade
	secret, until someone posted source code for an {algorithm}
	onto {Usenet News}, claiming it to be equivalent to RC4.  The
	algorithm is very fast, its security is unknown, but breaking
	it does not seem trivial either.  There is very strong
	evidence that the posted algorithm is indeed equivalent to
	RC4.

	The United States government routinely approves RC4 with
	40-bit keys for export.  Keys this small can be easily broken
	by governments, criminals, and amateurs.  The exportable
	version of {Netscape}'s {Secure Socket Layer}, which uses
	RC4-40, was broken by at least two independent groups.
	Breaking it took about eight days; in many universities or
	companies the same computing power is available to any
	computer science student.

	See also {Damien Doligez's SSL cracking page
	(http://pauillac.inria.fr/~doligez/ssl/)}, {RC4 Source and
	Information (http://www.cs.hut.fi/crypto/rc4)}, {SSLeay
	(http://www.cs.hut.fi/crypto/software.html#ssleay)}, {Crypto++
	(http://www.cs.hut.fi/crypto/software.html#crypto++)}, {Ssh
	(http://www.cs.hut.fi/crypto/software.html#ssh)}, {A
	collection of articles
	(http://www.cs.hut.fi/crypto/rc4-breaking)}.

	(28 Oct 1996)

RCA 1802

	An extremely simple {microprocessor} fabricated in {CMOS},
	which allowed it to run at 6.4 MHz (at 10V, but very fast for
	1974) or suspended with the clock stopped.  It was an 8 bit
	processor, with 16-bit addressing but the major features were
	its extreme simplicity, and the flexibility of its large
	{register set}.  Simplicity was the primary design goal, and
	in that sense it was one of the first {RISC} chips.  It had
	sixteen 16-bit {register}s, which could be accessed as
	thirty-two 8-bit registers, and an {accumulator} D used for
	arithmetic and memory access - memory to D, then D to
	registers and vice versa, using one 16-bit register as an
	address.  This led to one person describing the 1802 as having
	32 bytes of {RAM} and 65535 I/O ports.  A 4-bit control
	register P selected any one general register as the {program
	counter}, while control registers X and N selected registers
	for I/O Index and the operand for the current instruction.
	All instructions were 8 bits - a 4-bit {op code} (total of 16
	operations) and 4-bit {operand register} stored in N.  There
	was no real conditional branching, no {subroutine} support and
	no actual {stack} but clever use of the register set allowed
	these to be implemented - for example, changing P to another
	register allowed jump to a subroutine.  Similarly, on an
	interrupt P and X were saved, then R1 and R2 were selected for
	P and X until an {RTI} restored them.

	The {RCA 1805} was an enhanced version.

	Apart from the {COSMAC} (VIP?) {microcomputer} kit, the 1802
	saw action in some video games from {RCA} and {Radio Shack}.
	It was used in the {DREAM 6800} and {ETI-660} computers and is
	also the heart of the Voyager, Viking and Galileo probes.  One
	reason for this is that the 1802 was also fabricated on
	sapphire ({Silicon on Sapphire}), which leads to radiation and
	static resistance, ideal for space operation.

	(16 Nov 1994)

RCA 1805

	A later, enhanced version of the {RCA 1802}.  It added several
	{Forth} language primitives.

	(16 Nov 1994)

RCC

	An extensible language.

	[More detail?]

rc file

	/R C fi:l/ [Unix: from the startup script "/etc/rc", but this
	is commonly believed to have been named after older scripts to
	"run commands"] Script file containing startup instructions
	for an application program (or an entire operating system),
	usually a text file containing commands of the sort that might
	have been invoked manually once the system was running but are
	to be executed automatically each time the system starts up.
	See also {dot file}, {profile} (sense 1).

RCL

	Reduced Control Language.  A simplified job control language
	for OS360, translated to IBM JCL.  "Reduced Control Language
	for Non- Professional Users", K. Appel in Command Languages,
	C. Unger ed, N-H 1973.

rcp

	<networking, tool> (Remote copy) The {Unix} utility for
	copying files over {Ethernet}.  Rcp is similar to {FTP} but
	uses the {hosts.equiv} user authentication method.

	{Unix manual page}: rcp(1).

	(12 Jan 1997)

RCS

	A {code management} system.

	{Unix manual page}: rcs(1).

	["RCS -- A System for Version Control", Walter F. Tichy,
	Software--Practice & Experience 15, 7 (July 1985), 637-654].

	(23 Dec 1994)

Rdb

	{Oracle Rdb}

rdb

	A roll-your-own {database}, created in the {Unix} toolkit
	philosophy.  It appears to be written in the {awk} language,
	and is very compatible with awk.  It uses awk's syntax and can
	be combined with awk commands.

	The definitive introduction is "Unix Relational Database
	Management: Application Development in the Unix Environment",
	by Rod Manis, Evan Schaeffer, and Robert Jorgensen, published
	by Prentice Hall.  The book tells how to use rdb to create
	database/spreadsheets in the awk tradition, only easier. It's
	a good way to get into programming for novices.  It's also a
	good way to learn DB theory and construction quite painlessly.

RDBA

	{Remote Database Access}

RDBMS

	{relational database} management system.

RDI

	{Receiver Data Interface}

RDL

	Requirements and Development Language.

	["RDL: A Language for Software Development", H.C. Heacox,
	SIGPLAN Notices 14(9):71-79 (Sep 1979)].

RDOS

	{Realtime Disk Operating System}

RDRAM

	{Rambus DRAM}

RDS

	{Random Dot Stereogram}

RE

	{regular expression}

re

	<chat> /re-/ (From "rehi") Hello again.  A greeting
	originating in, and most often heard on, {Internet}
	interactive conversation services.

	(28 Feb 1995)

README file

	<convention> An introduction traditionally included in the
	top-level directory of a {Unix} {source} distribution,
	containing a pointer to more detailed documentation, credits,
	miscellaneous revision history, notes, etc.  The file may be
	named README, or READ.ME, or rarely ReadMe or readme.txt or
	some other variant.

	In the {Macintosh} and {IBM PC} worlds, software is not
	usually distributed in source form, and the README is more
	likely to contain user-oriented material like last-minute
	documentation changes, error workarounds, and restrictions.

	The README convention probably follows the famous scene in
	Lewis Carroll's "Alice's Adventures In Wonderland" in which
	Alice confronts magic munchies labelled "Eat Me" and "Drink
	Me".

	(28 Feb 1995)

Read-Only Memory

	<storage> (ROM) A type of data storage device which is
	manufactured with fixed contents.  In its most general sense,
	the term might be used for any storage system whose contents
	cannot be altered, such as a gramophone record or a printed
	book; however, the term is most often applied to
	{semiconductor} {integrated circuit} memories, of which there
	are several types, and {CD-ROM}.

	ROM is inherently {non-volatile storage} - it retains its
	contents even when the power is switched off, in contrast to
	{RAM}.

	ROM is often used to hold programs for {embedded system}s
	since these usually have a fixed purpose.  ROM is also used
	for storage of the lowest level {bootstrap} software
	(firmware) in a computer.

	See also {Programmable Read-Only Memory}.

	(09 May 1995)

read-only user

	<jargon> Describes a {luser} who uses computers almost
	exclusively for reading {Usenet}, {bulletin board}s, and/or
	{electronic mail}, rather than writing code or purveying
	useful information.

	See {twink}, {terminal junkie}, {lurker}.

	(28 Feb 1995)

Read the Fucking Manual

	<jargon> (Always written "RTFM") Traditional response when
	someone asks a question in a {newsgroup} or {mailing list}
	which they could have easily answered for themself if they had
	bothered to RTFM.

	(28 Feb 1995)

real

	1. Not simulated.  Often used as a specific antonym to
	{virtual} in any of its jargon senses.

	2. <mathematics> {real number}.

	(12 Mar 1997)

Realaudio

	<tool, communications> A program for playing {audio} over the
	{Internet}.

	The system is implemented as a {client/server} architecture.
	The Realaudio server incorporates an {encoder} which
	compresses sound into Realaudio files.  The client side is a
	{web browser} {plug-in} or {add-on} (a recent version of
	{Internet Explorer} apparently has built-in support for
	Realaudio) which allows the stream of data sent from the
	server to be uncompressed and output using the normal sound
	facilities of the computer, such as a {sound card}.

	A 14.4 {KBps} or better {modem} is required, and a 28.8 KBps
	connection is recommended for music-quality sound.

	{Home (http://www.realaudio.com/)}.

	(28 Nov 1996)

real estate

	<jargon> May be used for any critical resource measured in
	units of area.  Most frequently used of "chip real estate",
	the area available for logic on the surface of an {integrated
	circuit} (see also {nanoacre}).  May also be used of floor
	space in a {dinosaur pen}, or even space on a crowded desktop
	(whether physical or electronic).

	(06 Nov 1996)

real hack

	A {crock}.  This is sometimes used affectionately; see {hack}.

reality check

	1. The simplest kind of test of software or hardware; doing
	the equivalent of asking it what 2 + 2 is and seeing if you
	get 4.  The software equivalent of a {smoke test}.

	2. The act of letting a {real user} try out prototype
	software.

	Compare {sanity check}.

real mode

	An operating mode of {Intel 80x86} processors.  The opposite
	of {protected mode}.

	(29 Mar 1995)

real number

	<mathematics> One of the infinitely divisible range of values
	between positive and negative {infinity}, used to represent
	continuous physical quantities such as distance, time and
	temperature.

	Between any two real numbers there are infinitely many more
	real numbers.  The {integers} ("counting numbers") are real
	numbers with no fractional part and real numbers ("measuring
	numbers") are {complex numbers} with no imaginary part.  Real
	numbers can be divided into {rational numbers} and {irrational
	numbers}.

	Real numbers are usually represented (approximately) by
	computers as {floating point} numbers.

	Strictly, real numbers are the {equivalence classes} of the
	{Cauchy sequences} of {rationals} under the {equivalence
	relation} "~", where a ~ b if and only if a-b is {Cauchy} with
	limit 0.

	The real numbers are the minimal {topologically closed}
	{field} containing the rational field.

	A sequence, r, of rationals (i.e. a function, r, from the
	{natural numbers} to the rationals) is said to be Cauchy
	precisely if, for any tolerance delta there is a size, N,
	beyond which: for any n, m exceeding N,

	 | r[n] - r[m] | < delta

	A Cauchy sequence, r, has limit x precisely if, for any
	tolerance delta there is a size, N, beyond which: for any n
	exceeding N,

	 | r[n] - x | < delta

	(i.e. r would remain Cauchy if any of its elements, no matter
	how late, were replaced by x).

	It is possible to perform addition on the reals, because the
	equivalence class of a sum of two sequences can be shown to be
	the equivalence class of the sum of any two sequences
	equivalent to the given originals: ie, a~b and c~d implies
	a+c~b+d; likewise a.c~b.d so we can perform multiplication.
	Indeed, there is a natural {embedding} of the rationals in the
	reals (via, for any rational, the sequence which takes no
	other value than that rational) which suffices, when extended
	via continuity, to import most of the algebraic properties of
	the rationals to the reals.

	(12 Mar 1997)

real operating system

	<operating system, abuse> The sort the speaker is used to.
	People from the {BSD}ophilic academic community are likely to
	issue comments like "{System V}?  Why don't you use a *real*
	operating system?", people from the commercial/industrial
	{Unix} sector are known to complain "BSD?  Why don't you use a
	*real* operating system?", and people from {IBM} object "Unix?
	Why don't you use a *real* operating system?"

	See {holy wars}, {religious issues}, {proprietary}, {Get a
	real computer!}.

	(12 Mar 1997)

Real Programmer

	[indirectly, from the book "Real Men Don't Eat Quiche"] A
	particular sub-variety of hacker: one possessed of a flippant
	attitude toward complexity that is arrogant even when
	justified by experience.  The archetypal "Real Programmer"
	likes to program on the {bare metal} and is very good at same,
	remembers the binary opcodes for every machine he has ever
	programmed, thinks that HLLs are sissy, and uses a debugger to
	edit his code because full-screen editors are for wimps.  Real
	Programmers aren't satisfied with code that hasn't been
	{bum}med into a state of {tense}ness just short of rupture.
	Real Programmers never use comments or write documentation:
	"If it was hard to write", says the Real Programmer, "it
	should be hard to understand."  Real Programmers can make
	machines do things that were never in their spec sheets; in
	fact, they are seldom really happy unless doing so.  A Real
	Programmer's code can awe with its fiendish brilliance, even
	as its crockishness appals.  Real Programmers live on junk
	food and coffee, hang line-printer art on their walls, and
	terrify the crap out of other programmers - because someday,
	somebody else might have to try to understand their code in
	order to change it.  Their successors generally consider it a
	{Good Thing} that there aren't many Real Programmers around
	any more.  For a famous (and somewhat more positive) portrait
	of a Real Programmer, see "{The Story of Mel}".  The term
	itself was popularised by a 1983 Datamation article "{Real
	Programmers Don't Use Pascal}" by Ed Post, still circulating
	on {Usenet} and Internet in on-line form.

	(29 Aug 1997)

Real Programmers Don't Use PASCAL

	<humour> Back in the good old days -- the "Golden Era" of
	computers, it was easy to separate the men from the boys
	(sometimes called "Real Men" and "Quiche Eaters" in the
	literature). During this period, the Real Men were the ones
	that understood computer programming, and the Quiche Eaters
	were the ones that didn't.  A real computer programmer said
	things like "DO 10 I=1,10" and "ABEND" (they actually talked
	in capital letters, you understand), and the rest of the world
	said things like "computers are too complicated for me" and "I
	can't relate to computers -- they're so impersonal". (A
	previous work [1] points out that Real Men don't "relate" to
	anything, and aren't afraid of being impersonal.)

	But, as usual, times change. We are faced today with a world
	in which little old ladies can get computers in their
	microwave ovens, 12-year-old kids can blow Real Men out of the
	water playing Asteroids and Pac-Man, and anyone can buy and
	even understand their very own Personal Computer.  The Real
	Programmer is in danger of becoming extinct, of being replaced
	by high-school students with TRASH-80's.

	There is a clear need to point out the differences between the
	typical high-school junior Pac-Man player and a Real
	Programmer. If this difference is made clear, it will give
	these kids something to aspire to -- a role model, a Father
	Figure. It will also help explain to the employers of Real
	Programmers why it would be a mistake to replace the Real
	Programmers on their staff with 12-year-old Pac-Man players
	(at a considerable salary savings).

	LANGUAGES

	The easiest way to tell a Real Programmer from the crowd is by
	the programming language he (or she) uses. Real Programmers
	use FORTRAN.  Quiche Eaters use PASCAL. Nicklaus Wirth, the
	designer of PASCAL, gave a talk once at which he was asked
	"How do you pronounce your name?". He replied, "You can either
	call me by name, pronouncing it 'Veert', or call me by value,
	'Worth'."  One can tell immediately from this comment that
	Nicklaus Wirth is a Quiche Eater. The only parameter passing
	mechanism endorsed by Real Programmers is
	call-by-value-return, as implemented in the IBM\370 FORTRAN-G
	and H compilers.  Real programmers don't need all these
	abstract concepts to get their jobs done -- they are perfectly
	happy with a keypunch, a FORTRAN IV compiler, and a beer.

	Real Programmers do List Processing in FORTRAN.

	Real Programmers do String Manipulation in FORTRAN.

	Real Programmers do Accounting (if they do it at all) in
	FORTRAN.

	Real Programmers do Artificial Intelligence programs in
	FORTRAN.

	If you can't do it in FORTRAN, do it in assembly language.  If
	you can't do it in assembly language, it isn't worth doing.

	STRUCTURED PROGRAMMING

	The academics in computer science have gotten into the
	"structured programming" rut over the past several years. They
	claim that programs are more easily understood if the
	programmer uses some special language constructs and
	techniques. They don't all agree on exactly which constructs,
	of course, and the examples they use to show their particular
	point of view invariably fit on a single page of some obscure
	journal or another -- clearly not enough of an example to
	convince anyone. When I got out of school, I thought I was the
	best programmer in the world. I could write an unbeatable
	tic-tac-toe program, use five different computer languages,
	and create 1000-line programs that WORKED.  (Really!) Then I
	got out into the Real World. My first task in the Real World
	was to read and understand a 200,000-line FORTRAN program,
	then speed it up by a factor of two. Any Real Programmer will
	tell you that all the Structured Coding in the world won't
	help you solve a problem like that -- it takes actual
	talent. Some quick observations on Real Programmers and
	Structured Programming:

	Real Programmers aren't afraid to use GOTO's.

	Real Programmers can write five-page-long DO loops without
	getting confused.

	Real Programmers like Arithmetic IF statements -- they make
	the code more interesting.

	Real Programmers write self-modifying code, especially if they
	can save 20 nanoseconds in the middle of a tight loop.

	Real Programmers don't need comments -- the code is obvious.

	Since FORTRAN doesn't have a structured IF, REPEAT ... UNTIL,
	or CASE statement, Real Programmers don't have to worry about
	not using them. Besides, they can be simulated when necessary
	using assigned GOTO's.

	Data Structures have also gotten a lot of press
	lately. Abstract Data Types, Structures, Pointers, Lists, and
	Strings have become popular in certain circles. Wirth (the
	above-mentioned Quiche Eater) actually wrote an entire book
	[2] contending that you could write a program based on data
	structures, instead of the other way around. As all Real
	Programmers know, the only useful data structure is the
	Array. Strings, lists, structures, sets -- these are all
	special cases of arrays and can be treated that way just as
	easily without messing up your programing language with all
	sorts of complications. The worst thing about fancy data types
	is that you have to declare them, and Real Programming
	Languages, as we all know, have implicit typing based on the
	first letter of the (six character) variable name.

	OPERATING SYSTEMS

	What kind of operating system is used by a Real Programmer?
	CP/M? God forbid -- CP/M, after all, is basically a toy
	operating system.  Even little old ladies and grade school
	students can understand and use CP/M.

	Unix is a lot more complicated of course -- the typical Unix
	hacker never can remember what the PRINT command is called
	this week -- but when it gets right down to it, Unix is a
	glorified video game.  People don't do Serious Work on Unix
	systems: they send jokes around the world on UUCP-net and
	write adventure games and research papers.

	No, your Real Programmer uses OS\370. A good programmer can
	find and understand the description of the IJK305I error he
	just got in his JCL manual.  A great programmer can write JCL
	without referring to the manual at all.  A truly outstanding
	programmer can find bugs buried in a 6 megabyte core dump
	without using a hex calculator.  (I have actually seen this
	done.)

	OS is a truly remarkable operating system. It's possible to
	destroy days of work with a single misplaced space, so
	alertness in the programming staff is encouraged. The best way
	to approach the system is through a keypunch.  Some people
	claim there is a Time Sharing system that runs on OS\370, but
	after careful study I have come to the conclusion that they
	were mistaken.

	PROGRAMMING TOOLS

	What kind of tools does a Real Programmer use? In theory, a
	Real Programmer could run his programs by keying them into the
	front panel of the computer.  Back in the days when computers
	had front panels, this was actually done occasionally.  Your
	typical Real Programmer knew the entire bootstrap loader by
	memory in hex, and toggled it in whenever it got destroyed by
	his program. (Back then, memory was memory -- it didn't go
	away when the power went off.  Today, memory either forgets
	things when you don't want it to, or remembers things long
	after they're better forgotten.) Legend has it that Seymore
	Cray, inventor of the Cray I supercomputer and most of Control
	Data's computers, actually toggled the first operating system
	for the CDC7600 in on the front panel from memory when it was
	first powered on.  Seymore, needless to say, is a Real
	Programmer.

	One of my favorite Real Programmers was a systems programmer
	for Texas Instruments.  One day he got a long distance call
	from a user whose system had crashed in the middle of saving
	some important work. Jim was able to repair the damage over
	the phone, getting the user to toggle in disk I/O instructions
	at the front panel, repairing system tables in hex, reading
	register contents back over the phone.  The moral of this
	story: while a Real Programmer usually includes a keypunch and
	lineprinter in his toolkit, he can get along with just a front
	panel and a telephone in emergencies.

	In some companies, text editing no longer consists of ten
	engineers standing in line to use an 029 keypunch. In fact,
	the building I work in doesn't contain a single keypunch. The
	Real Programmer in this situation has to do his work with a
	"text editor" program.  Most systems supply several text
	editors to select from, and the Real Programmer must be
	careful to pick one that reflects his personal style.  Many
	people believe that the best text editors in the world were
	written at Xerox Palo Alto Research Center for use on their
	Alto and Dorado computers [3].  Unfortunately, no Real
	Programmer would ever use a computer whose operating system is
	called SmallTalk, and would certainly not talk to the computer
	with a mouse.

	Some of the concepts in these Xerox editors have been
	incorporated into editors running on more reasonably named
	operating systems -- EMACS and VI being two.  The problem with
	these editors is that Real Programmers consider "what you see
	is what you get" to be just as bad a concept in Text Editors
	as it is in women.  No the Real Programmer wants a "you asked
	for it, you got it" text editor -- complicated, cryptic,
	powerful, unforgiving, dangerous. TECO, to be precise.

	It has been observed that a TECO command sequence more closely
	resembles transmission line noise than readable text [4].  One
	of the more entertaining games to play with TECO is to type
	your name in as a command line and try to guess what it does.
	Just about any possible typing error while talking with TECO
	will probably destroy your program, or even worse -- introduce
	subtle and mysterious bugs in a once working subroutine.

	For this reason, Real Programmers are reluctant to actually
	edit a program that is close to working.  They find it much
	easier to just patch the binary object code directly, using a
	wonderful program called SUPERZAP (or its equivalent on
	non-IBM machines).  This works so well that many working
	programs on IBM systems bear no relation to the original
	FORTRAN code.  In many cases, the original source code is no
	longer available.  When it comes time to fix a program like
	this, no manager would even think of sending anything less
	than a Real Programmer to do the job -- no Quiche Eating
	structured programmer would even know where to start.  This is
	called "job security".

	Some programming tools NOT used by Real Programmers:

	FORTRAN preprocessors like MORTRAN and RATFOR. The Cuisinarts
	of programming -- great for making Quiche. See comments above
	on structured programming.

	Source language debuggers. Real Programmers can read core
	dumps.

	Compilers with array bounds checking. They stifle creativity,
	destroy most of the interesting uses for EQUIVALENCE, and make
	it impossible to modify the operating system code with
	negative subscripts. Worst of all, bounds checking is
	inefficient.

	Source code maintenance systems. A Real Programmer keeps his code
	locked up in a card file, because it implies that its owner cannot
	leave his important programs unguarded [5].

	THE REAL PROGRAMMER AT WORK

	Where does the typical Real Programmer work? What kind of
	programs are worthy of the efforts of so talented an
	individual?  You can be sure that no Real Programmer would be
	caught dead writing accounts-receivable programs in COBOL, or
	sorting mailing lists for People magazine.  A Real Programmer
	wants tasks of earth-shaking importance (literally!).

	Real Programmers work for Los Alamos National Laboratory,
	writing atomic bomb simulations to run on Cray I
	supercomputers.

	Real Programmers work for the National Security Agency,
	decoding Russian transmissions.

	It was largely due to the efforts of thousands of Real
	Programmers working for NASA that our boys got to the moon and
	back before the Russkies.

	Real Programmers are at work for Boeing designing the
	operating systems for cruise missiles.

	Some of the most awesome Real Programmers of all work at the
	Jet Propulsion Laboratory in California. Many of them know the
	entire operating system of the Pioneer and Voyager spacecraft
	by heart.  With a combination of large ground-based FORTRAN
	programs and small spacecraft-based assembly language
	programs, they are able to do incredible feats of navigation
	and improvisation -- hitting ten-kilometer wide windows at
	Saturn after six years in space, repairing or bypassing
	damaged sensor platforms, radios, and batteries.  Allegedly,
	one Real Programmer managed to tuck a pattern-matching program
	into a few hundred bytes of unused memory in a Voyager
	spacecraft that searched for, located, and photographed a new
	moon of Jupiter.

	The current plan for the Galileo spacecraft is to use a
	gravity assist trajectory past Mars on the way to Jupiter.
	This trajectory passes within 80 +/-3 kilometers of the
	surface of Mars.  Nobody is going to trust a PASCAL program
	(or a PASCAL programmer) for navigation to these tolerances.

	As you can tell, many of the world's Real Programmers work for
	the U.S.  Government -- mainly the Defense Department.  This
	is as it should be.  Recently, however, a black cloud has
	formed on the Real Programmer horizon.  It seems that some
	highly placed Quiche Eaters at the Defense Department decided
	that all Defense programs should be written in some grand
	unified language called "ADA" ((C), DoD).  For a while, it
	seemed that ADA was destined to become a language that went
	against all the precepts of Real Programming -- a language
	with structure, a language with data types, strong typing, and
	semicolons.  In short, a language designed to cripple the
	creativity of the typical Real Programmer.  Fortunately, the
	language adopted by DoD has enough interesting features to
	make it approachable -- it's incredibly complex, includes
	methods for messing with the operating system and rearranging
	memory, and Edsgar Dijkstra doesn't like it [6].  (Dijkstra,
	as I'm sure you know, was the author of "GoTos Considered
	Harmful" -- a landmark work in programming methodology,
	applauded by PASCAL programmers and Quiche Eaters alike.)
	Besides, the determined Real Programmer can write FORTRAN
	programs in any language.

	The Real Programmer might compromise his principles and work
	on something slightly more trivial than the destruction of
	life as we know it, providing there's enough money in
	it. There are several Real Programmers building video games at
	Atari, for example. (But not playing them -- a Real Programmer
	knows how to beat the machine every time: no challenge in
	that.)  Everyone working at LucasFilm is a Real Programmer.
	(It would be crazy to turn down the money of fifty million
	Star Trek fans.)  The proportion of Real Programmers in
	Computer Graphics is somewhat lower than the norm, mostly
	because nobody has found a use for computer graphics yet.  On
	the other hand, all computer graphics is done in FORTRAN, so
	there are a fair number of people doing graphics in order to
	avoid having to write COBOL programs.

	THE REAL PROGRAMMER AT PLAY

	Generally, the Real Programmer plays the same way he works --
	with computers. He is constantly amazed that his employer
	actually pays him to do what he would be doing for fun anyway
	(although he is careful not to express this opinion out loud).
	Occasionally, the Real Programmer does step out of the office
	for a breath of fresh air and a beer or two.  Some tips on
	recognizing Real Programmers away from the computer room:

	At a party, the Real Programmers are the ones in the corner
	talking about operating system security and how to get around
	it.

	At a football game, the Real Programmer is the one comparing
	the plays against his simulations printed on 11 by 14 fanfold
	paper.

	At the beach, the Real Programmer is the one drawing
	flowcharts in the sand.

	At a funeral, the Real Programmer is the one saying "Poor
	George. And he almost had the sort routine working before the
	coronary."

	In a grocery store, the Real Programmer is the one who insists
	on running the cans past the laser checkout scanner himself,
	because he never could trust keypunch operators to get it
	right the first time.

	THE REAL PROGRAMMER'S NATURAL HABITAT

	What sort of environment does the Real Programmer function
	best in?  This is an important question for the managers of
	Real Programmers. Considering the amount of money it costs to
	keep one on the staff, it's best to put him (or her) in an
	environment where he can get his work done.

	The typical Real Programmer lives in front of a computer
	terminal.  Surrounding this terminal are:

	Listings of all programs the Real Programmer has ever worked
	on, piled in roughly chronological order on every flat surface
	in the office.

	Some half-dozen or so partly filled cups of cold
	coffee. Occasionally, there will be cigarette butts floating
	in the coffee. In some cases, the cups will contain Orange
	Crush.

	Unless he is very good, there will be copies of the OS JCL
	manual and the Principles of Operation open to some
	particularly interesting pages.

	Taped to the wall is a line-printer Snoopy calendar for the
	year 1969.

	Strewn about the floor are several wrappers for peanut butter
	filled cheese bars -- the type that are made pre-stale at the
	bakery so they can't get any worse while waiting in the
	vending machine.

	Hiding in the top left-hand drawer of the desk is a stash of
	double-stuff Oreos for special occasions.

	Underneath the Oreos is a flowcharting template, left there by
	the previous occupant of the office.  (Real Programmers write
	programs, not documentation. Leave that to the maintenance
	people.)

	The Real Programmer is capable of working 30, 40, even 50
	hours at a stretch, under intense pressure. In fact, he
	prefers it that way.  Bad response time doesn't bother the
	Real Programmer -- it gives him a chance to catch a little
	sleep between compiles.  If there is not enough schedule
	pressure on the Real Programmer, he tends to make things more
	challenging by working on some small but interesting part of
	the problem for the first nine weeks, then finishing the rest
	in the last week, in two or three 50-hour marathons.  This not
	only impresses the hell out of his manager, who was despairing
	of ever getting the project done on time, but creates a
	convenient excuse for not doing the documentation.  In
	general:

	No Real Programmer works 9 to 5 (unless it's the ones at
	night).

	Real Programmers don't wear neckties.

	Real Programmers don't wear high-heeled shoes.

	Real Programmers arrive at work in time for lunch [9].

	A Real Programmer might or might not know his wife's name. He
	does, however, know the entire ASCII (or EBCDIC) code table.

	Real Programmers don't know how to cook.  Grocery stores
	aren't open at three in the morning.  Real Programmers survive
	on Twinkies and coffee.

	THE FUTURE

	What of the future?  It is a matter of some concern to Real
	Programmers that the latest generation of computer programmers
	are not being brought up with the same outlook on life as
	their elders.  Many of them have never seen a computer with a
	front panel.  Hardly anyone graduating from school these days
	can do hex arithmetic without a calculator.  College graduates
	these days are soft -- protected from the realities of
	programming by source level debuggers, text editors that count
	parentheses, and "user friendly" operating systems.  Worst of
	all, some of these alleged "computer scientists" manage to get
	degrees without ever learning FORTRAN!  Are we destined to
	become an industry of Unix hackers and PASCAL programmers?

	From my experience, I can only report that the future is
	bright for Real Programmers everywhere. Neither OS\370 nor
	FORTRAN show any signs of dying out, despite all the efforts
	of PASCAL programmers the world over.  Even more subtle
	tricks, like adding structured coding constructs to FORTRAN
	have failed.  Oh sure, some computer vendors have come out
	with FORTRAN 77 compilers, but every one of them has a way of
	converting itself back into a FORTRAN 66 compiler at the drop
	of an option card -- to compile DO loops like God meant them
	to be.

	Even Unix might not be as bad on Real Programmers as it once
	was.  The latest release of Unix has the potential of an
	operating system worthy of any Real Programmer -- two
	different and subtly incompatible user interfaces, an arcane
	and complicated teletype driver, virtual memory.  If you
	ignore the fact that it's "structured", even 'C' programming
	can be appreciated by the Real Programmer: after all, there's
	no type checking, variable names are seven (ten?  eight?)
	characters long, and the added bonus of the Pointer data type
	is thrown in -- like having the best parts of FORTRAN and
	assembly language in one place.  (Not to mention some of the
	more creative uses for #define.)

	No, the future isn't all that bad.  Why, in the past few
	years, the popular press has even commented on the bright new
	crop of computer nerds and hackers ([7] and [8]) leaving
	places like Stanford and M.I.T. for the Real World.  From all
	evidence, the spirit of Real Programming lives on in these
	young men and women.  As long as there are ill-defined goals,
	bizarre bugs, and unrealistic schedules, there will be Real
	Programmers willing to jump in and Solve The Problem, saving
	the documentation for later.  Long live FORTRAN!

	ACKNOWLEGEMENT

	I would like to thank Jan E., Dave S., Rich G., Rich E., for
	their help in characterizing the Real Programmer, Heather
	B. for the illustration, Kathy E. for putting up with it, and
	atd!avsdS:mark for the initial inspiration.

	REFERENCES

	[1] Feirstein, B., "Real Men don't Eat Quiche", New York,
	Pocket Books, 1982.

	[2] Wirth, N., "Algorithms + Data Structures Programs",
	Prentice Hall, 1976.

	[3] Ilson, R., "Recent Research in Text Processing", IEEE
	Trans.  Prof.  Commun., Vol.  PC-23, No.  4, Dec.  4, 1980.

	[4] Finseth, C., "Theory and Practice of Text Editors -- or --
	a Cookbook for an EMACS", B.S.  Thesis, MIT/LCS/TM-165,
	Massachusetts Institute of Technology, May 1980.

	[5] Weinberg, G., "The Psychology of Computer Programming",
	New York, Van Nostrand Reinhold, 1971, p.  110.

	[6] Dijkstra, E., "On the GREEN language submitted to the
	DoD", Sigplan notices, Vol. 3 No.  10, Oct 1978.

	[7] Rose, Frank, "Joy of Hacking", Science 82, Vol. 3 No.  9,
	Nov 82, pp.  58-66.

	[8] "The Hacker Papers", Psychology Today, August 1980.

	[9] sdcarl!lin, "Real Programmers", UUCP-net, Thu Oct 21
	16:55:16 1982.

	Ed Post, "Real Programmers Don't Use Pascal", DATAMATION, July
	1983, pp. 263-265 (Readers' Forum).

	(29 Aug 1997)

Real Soon Now

	(RSN) [Originally from SF's fanzine community, popularised by
	Jerry Pournelle's column in "BYTE"] 1. Supposed to be
	available (or fixed, or cheap, or whatever) real soon now
	according to somebody, but the speaker is quite skeptical.

	2. When one's gods, fates, or other time commitments permit
	one to get to it (in other words, don't hold your breath).

real-time

	1. Describes an application which requires a program to
	respond to stimuli within some small upper limit of response
	time (typically milli- or microseconds).  Process control at a
	chemical plant is the classic example.  Such applications
	often require special operating systems (because everything
	else must take a back seat to response time) and speed-tuned
	hardware.

	2. In jargon, refers to doing something while people are
	watching or waiting.  "I asked her how to find the calling
	procedure's program counter on the stack and she came up with
	an algorithm in real time."

	Used to describe a system that must guarantee a response to an
	external event within a given time.

	(23 Nov 1997)

Realtime Disk Operating System

	<operating system> A {Data General} {operating system}
	developed in the 1970s or 1980s.  When used in conjuction with
	a {BASIC} (e.g. {Business Basic}) it could support 16
	concurrent users at the {record locking} level and two
	printers all on 128K memory.

	Reputedly {IBM} wanted to license this for the first {IBM PC}
	but DG turned them down so they went to {Microsoft} instead.
	How different the world could have been.

	[Before or after IBM wanted {CP/M}?]

	(23 Nov 1997)

Real-Time Euclid

	Real-time language, restriction to time-bounded constructs.
	["Real-Time Euclid: A Language for Reliable Real-Time
	Systems", E. Kligerman et al, IEEE Trans Software Eng
	SE-12(9):941-949 Sep 1986].

Real-Time Mentat

	An extension of C++.  "Real-Time Mentat: A Data-Driven
	Object-Oriented System", A.S. Grimshaw et al, Proc IEEE
	Globecom, Nov 1989 pp.232-241.

Real-Time Object-Oriented Modeling

	<programming> (ROOM Methodology)

	{Home (http://www.objectime.on.ca/ROOM.HTML)}.

	[Summary?]

	(17 Feb 1997)

Real-Time Operating System

	<operating system> Any {operating system} where interrupts are
	guaranteed to be handled within a certain specified maximum
	time, thereby making it suitable for control of hardware in
	{embedded systems} and other time-critical applications.

	[Other criteria?]

	(06 Mar 1997)

Real-Time Pascal

	<language> A later name for {Pascal-80} by {RC International},
	Denmark.

	(09 May 1995)

real-time structured analysis

	<programming> (RTSA) Any version of {structured analysis}
	capable of modelling {real-time} aspects of software.

	(06 Apr 1995)

real user

	1. A commercial user.  One who is paying *real* money for his
	computer usage.

	2. A non-hacker.  Someone using the system for an explicit
	purpose (a research project, a course, etc.)  other than pure
	exploration.  See {user}.  Hackers who are also students may
	also be real users.  "I need this fixed so I can do a problem
	set.  I'm not complaining out of randomness, but as a real
	user."  See also {luser}.

Real World

	1. Those institutions at which "programming" may be used in
	the same sentence as "FORTRAN", "{COBOL}", "RPG", "{IBM}",
	"DBASE", etc.  Places where programs do such commercially
	necessary but intellectually uninspiring things as generating
	payroll checks and invoices.

	2. The location of non-programmers and activities not related
	to programming.

	3. A bizarre dimension in which the standard dress is shirt
	and tie and in which a person's working hours are defined as 9
	to 5 (see {code grinder}).

	4. Anywhere outside a university.  "Poor fellow, he's left MIT
	and gone into the Real World."  Used pejoratively by those not
	in residence there.  In conversation, talking of someone who
	has entered the Real World is not unlike speaking of a
	deceased person.  It is also noteworthy that on the campus of
	Cambridge University in England, there is a gaily-painted
	lamp-post which bears the label "REALITY CHECKPOINT".  It
	marks the boundary between university and the Real World;
	check your notions of reality before passing.  This joke is
	funnier because the Cambridge "campus" is actually coextensive
	with the centre of Cambridge.

	See also {fear and loathing}, {mundane}, {uninteresting}.

reaper

	A {prowler} that {GFR}s files.  A file removed in this way is
	said to have been "reaped".

reassembly

	Joining back together a previously fragmented {IP} {packet}
	before it is passed to the {transport layer}.  See also
	{fragmentation}.

reboot

	<operating system> (From {boot}) A {boot} with the implication
	that the computer has not been down for long, or that the
	{boot} is a {bounce} intended to clear some state of
	{wedgitude}.

	See {warm boot}.

	(27 Nov 1995)

REC

	Regular Expression Converter.  See {CONVERT}.

recipe

	See {suspension}.

Recital

	{dBASE}-like language and {DBMS} from Recital Corporation.
	Versions include {Vax} {VMS}.

RECOL

	REtrieval COmmand Language.  CACM 6(3):117-122 (Mar 1963).

Recommended Standard

	<standard> (RS) A series of {EIA} {standards} including
	{RS-232}.

	(28 Mar 1995)

Record Management Services

	(RMS) A set of {operating system} procedures that is called by
	programs to process files and records within files.  {VMS} RMS
	allows programs to issue GET and PUT requests at the record
	level (record I/O) as well as read and write blocks (block
	I/O).  VMS RMS is and integral part of the system software;
	its procedures run in {executive mode}.

Record Separator

	<character> (RS) {ASCII} character 30.

rectangle slinger

	See {polygon pusher}.

recurse

	To perform {recursion}.

recursion

	<mathematics, programming> When a function (or procedure)
	calls itself.  Such a function is called "recursive".  If the
	call is via one or more other functions then this group of
	functions are called "mutually recursive".  If a function will
	always call itself, however it is called, then it will never
	terminate.  Usually however, it first performs some test on
	its arguments to check for a "base case" - a condition under
	which it can return a value without calling itself.

	The {canonical} example of a recursive function is
	{factorial}:

		factorial 0 = 1
		factorial n = n * factorial (n-1)

	{Functional programming languages} rely heavily on recursion,
	using it where a {procedural language} would use {iteration}.

	See also {recursion}, {recursive definition}, {tail recursion}.

	(11 May 1996)

recursive

	{recursion}

recursive acronym

	<convention> A hackish (and especially {MIT}) tradition is to
	choose acronyms and abbreviations that refer humorously to
	themselves or to other acronyms or abbreviations.  The classic
	examples were two MIT editors called {EINE} ("EINE Is Not
	{EMACS}") and {ZWEI} ("ZWEI Was EINE Initially").  More
	recently, there is a {Scheme} compiler called {LIAR} (Liar
	Imitates Apply Recursively), and {GNU} stands for "GNU's Not
	Unix!" - and a company with the name {CYGNUS}, which expands
	to "Cygnus, Your GNU Support".

	See also {mung}.

	(28 Apr 1995)

recursive definition

	See {recursive definition}.

recursive descent parser

	<grammar> A "top-down" {parser} built from a set of
	{mutually-recursive} procedures or a non-recursive equivalent
	where each such procedure usually implements one of the
	{production}s of the {grammar}.  Thus the structure of the
	resulting program closely mirrors that of the grammar it
	recognises.

	["Recursive Programming Techniques", W.H. Burge, 1975, ISBN
	0-201-14450-6].

	(28 Apr 1995)

Recursive Macro Actuated Generator

	<tool> (RMAG) Robert A. Magnuson, NIH ca 1970.

	A stand-alone macroprocessor for IBM 360/370 under VS or
	OS. Many built-in features and a library of several hundred
	macros.  Several large systems were written in RMAG to
	generate source code for languages such as IBM JCL, IBM
	assembly language, COBOL.

	There was also a system (SLANG: Structured LANGuage compiler)
	which would generate 370 assembly language from a
	pseudo-structured-programming language, based on Michael
	Kessler's structure programming macros developed at IBM.

	["Project RMAG--RMAG22 User's Guide", R.A. Magnuson,
	NIH-DCRT-DMB-SSS-UG103, NIH, DHEW, Bethesda, MD 20205 (1977)].

	(23 Nov 1995)

recursive type

	A data type which contains itself.  The commonest example is
	the list type, in {Haskell}:

		data List a = Nil | Cons a (List a)

	which says a list of a's is either an empty list or a {cons
	cell} containing an 'a' (the "head" of the list) and another
	list (the "tail").

	Recursion is not allowed in {Miranda} or Haskell {synonym
	type}s, so the following {Haskell} types are illegal:

		type Bad = (Int, Bad)
		type Evil = Bool -> Evil

	whereas the seeminly equivalent {algebraic data type}s are
	acceptable:

		data Good = Pair Int Good
		data Fine = Fun (Bool->Fine)

Red

	(Or "REDL") A language proposed by {Intermetrics} to meet the
	{Ironman} requirements which led to {Ada}.

	["On the RED Language Submitted to the DoD", E.W. Dijkstra,
	SIGPLAN Notices 13(10):27 (Oct 1978)].

	["RED Language Reference Manual", J. Nestor and M. van Deusen,
	Intermetrics 1979].

	(19 Jan 1995)

Red Book

	1.  <publication> Informal name for one of the four standard
	references on {PostScript}.  The other three official guides
	are known as the {Blue Book}, the {Green Book}, and the {White
	Book}.

	["PostScript Language Reference Manual", Adobe Systems,
	Addison-Wesley, 1985 (ISBN 0-201-10174-2); second edition
	1990 (ISBN 0-201-18127-4)].

	2. <publication> Informal name for one of the three standard
	references on Smalltalk.  This book also has blue and green
	siblings.

	["Smalltalk-80: The Interactive Programming Environment",
	Adele Goldberg, Addison-Wesley, 1984; (ISBN 0-201-11372-4)].

	3.  <publication> Any of the 1984 standards issued by the
	{ITU-T} eighth plenary assembly.  These include, among other
	things, the {X.400} {electronic mail} specification, the Group
	1 through 4 fax standards, {ISDN}, the R2 signalling system
	(Q.400 series recommendations), data communication via the
	{PSTN} (the V series recommendations) and tariffs and metering
	principles (the D series).

	4.  <publication> The new version of the {Green Book} - IEEE
	1003.1-1990, also known as ISO 9945-1 - is (because of the
	colour and the fact that it is printed on A4 paper) known in
	the USA. as "the Ugly Red Book That Won't Fit On The Shelf"
	and in Europe as "the Ugly Red Book That's A Sensible Size".

	5.  <publication> The NSA "Trusted Network Interpretation"
	companion to the {Orange Book}.

	See also {book titles}.

REDCODE

	The {ICWS} standard language for {Core War} "battle programs".

redex

	Reducible Expression.  An expression matching the left hand
	side of a {reduction rule} or definition.

Red Hat

	<operating system> A distribution of {Linux}.

	{Home (http://www.redhat.com/)}.

	(21 Dec 1996)

RediLisp

	R.M. Keller, U Utah.  Dialect of Lisp used on the Rediflow
	machine, a derivative of FEL.

redirect

	1. <operating system> {input/output redirection}.

	2. <World-Wide Web> {URL redirection}.

	(15 Jul 1997)

RedNet Ltd.

	A systems integration company who also provide "onLine", an
	{Internet} service aimed at both hobbyists and corporate
	end-users.  The service offers {dial-in} {PoP}s in London,
	Birmingham, Bristol, Cambridge, Manchester and Edinburgh.  All
	{PoP}s are {V.32bis}, {V.42} and {V.42 bis} compatible with
	{MNP4} and {MNP5}.

	You can connect to the {PoP}s using {slip} or {PPP}, all
	required software is provided preconfigured.

	For GBP15 per month (ex VAT) you get a {POP3} {electronic
	mail} account, {dial-up} access to the {Internet} and all the
	the {Internet} goodies you want including {NSFnet}.

	{(http://www.rednet.co.uk)}

	E-mail: <info@rednet.co.uk> (with INFO in the body).

	{Snail mail}: RedNet Ltd., 6 Cliveden Office Village, Lancaser
	Road, High Wycombe, Bucks, HP12 3YZ, UK.  Telephone: +44
	(1494) 513 333.  Fax: +44 (494) 443 374.

	(08 Nov 1994)

redocumentation

	The creation or revision of a semantically equivalent
	representation within the same relative abstraction level.
	The resulting forms of representation are usually considered
	alternate views intended for a human audience.

REDUCE

	A {symbolic mathematics} language with {ALGOL}-like {syntax}
	written in {Lisp} by Anthony Hearn in 1963.

	Reduce 2 is a version based on {Portable Standard LISP}.

	{(http://www.rrz.uni-koeln.de/REDUCE/)}.  Mailing list:
	REDUCE-L@DEARN.BITNET.  E-mail: <reduce@rand.org>.  Server:
	reduce-netlib@rand.org.

	["REDUCE, Software for Algebraic Computation", G. Rayna,
	Springer 1987].

	(31 Oct 1994)

Reduced Instruction Set Computer

	<processor> (RISC) A {processor} whose design is based on the
	rapid execution of a sequence of simple instructions rather
	than on the provision of a large variety of complex
	instructions (as in a {Complex Instruction Set Computer}).

	Features which are generally found in RISC designs are uniform
	instruction encoding (e.g. the {op-code} is always in the same
	bit positions in each instruction which is always one word
	long), which allows faster decoding; a homogenous {register
	set}, allowing any register to be used in any context and
	simplifying {compiler} design; and simple {addressing mode}s
	with more complex modes replaced by sequences of simple
	arithmetic instructions.

	Examples of (more or less) RISC processors are the {Berkeley
	RISC}, {HP-PA}, {Clipper}, {i960}, {AMD 29000}, {MIPS R2000}
	and {DEC Alpha}.  {IBM}'s first RISC computer was the {RT/PC}
	({IBM 801}), they now produce the RISC-based {RISC
	System/6000} and {SP/2} lines.

	Despite {Apple Computer}'s bogus claims for their
	{PowerPC}-based {Macintosh}es, the first RISC processor used
	in a {personal computer} was the {Advanced RISC Machine} (ARM)
	used in the {Acorn} {Archimedes}.

	(03 Jun 1997)

reduction

	(Or "contraction") The process of transforming an expression
	according to certain reduction rules.  The most important
	forms are {beta reduction} (application of a {lambda
	abstraction} to one or more argument expressions) and {delta
	reduction} (application of a mathematical function to the
	required number of arguments).

	An {evaluation strategy} (or {reduction strategy}), determines
	which part of an expression (which redex) to reduce first.
	There are many such strategies.

	See {graph reduction}, {string reduction}, {normal order
	reduction}, {applicative order reduction}, {parallel
	reduction}, {alpha conversion}, {beta conversion}, {delta
	conversion}, {eta conversion}.

	(21 Feb 1995)

reduction strategy

	<theory> An {algorithm} for deciding which {redex}(es) to
	reduce next.  Different strategies have different termination
	properties in the presence of {recursive} functions or values.

	See {string reduction}, {normal order reduction}, {applicative
	order reduction}, {parallel reduction}

	(09 May 1995)

redundancy

	1. <parallel> The provision of multiple interchangeable
	components to perform a single function in order to cope with
	failures and errors.  Redundancy normally applies primarily to
	hardware.  For example, one might install two or even three
	computers to do the same job.  There are several ways these
	could be used.  They could all be active all the time thus
	giving extra performance through {parallel processing} as well
	as extra availability; one could be active and the others
	simply monitoring its activity so as to be ready to take over
	if it failed ("warm standby"); the "spares" could be kept
	turned off and only switched on when needed ("cold standby").
	Another common form of hardware redundancy is {disk
	mirroring}.

	Redundancy can also be used to detect and recover from errors,
	either in hardware or software.  A well known example of this
	is the {cyclic redundancy check} which adds redundant data to
	a block in order to detect corruption during storage or
	transmission.  If the cost of errors is high enough, e.g. in a
	{safety-critical system}, redundancy may be used in both
	hardware AND software with three separate computers programmed
	by three separate teams and some system to check that they all
	produce the same answer, or some kind of majority voting
	system.

	2. <communications> The proportion of a message's gross
	information content that can be eliminated without losing
	essential information.

	Technically, redundancy is one minus the ratio of the actual
	uncertainty to the maximum uncertainty.  This is the fraction
	of the structure of the message which is determined not by the
	choice of the sender, but rather by the accepted statistical
	rules governing the choice of the symbols in question.

	[Shannon and Weaver, 1948, p. l3]

	[Better explanation?]

	(09 May 1995)

Redundant Array of Inexpensive Disks

	It's {Redundant Arrays of Independent Disks}.

Redundant Arrays of Independent Disks

	<storage, architecture> (RAID.  Originally "Redundant Arrays
	of Inexpensive Disks") A project at the computer science
	department of the {University of California at Berkeley},
	under the direction of Professor Katz, in conjunction with
	Professor John Ousterhout and Professor David Patterson.  The
	project is reaching its culmination with the implementation of
	a prototype disk array file server with a capacity of 40
	GBytes and a sustained bandwidth of 80 MBytes/second.  The
	server is being interfaced to a 1 Gb/s {local area network}.
	A new initiative, which is part of the {Sequoia 2000} Project,
	seeks to construct a geographically distributed storage system
	spanning disk arrays and automated libraries of {optical
	disk}s and tapes.  The project will extend the interleaved
	storage techniques so successfully applied to disks to
	tertiary storage devices.  A key element of the research will
	be to develop techniques for managing latency in the I/O and
	network paths.

	The original ("..Inexpensive..") term referred to the 3.5 and
	5.25 inch disks used for the first RAID system but no longer
	applies.

	The following standard RAID specifications exist:

	 RAID 0	Non-redundant striped array
	 RAID 1	Mirrored arrays
	 RAID 2	Parallel array with ECC
	 RAID 3	Parallel array with parity
	 RAID 4	Striped array with parity
	 RAID 5	Striped array with rotating parity

	{(ftp://wuarchive.wustl.edu/doc/techreports/berkeley.edu/raid/raidPapers)}.
	{(http://HTTP.CS.Berkeley.EDU/projects/parallel/research_summaries/14-Computer-Architecture/)}.

	["A Case for Redundant Arrays of Inexpensive Disks (RAID)",
	"D. A. Patterson and G. Gibson and R. H. Katz", Proc ACM
	SIGMOD Conf, Chicago, IL, Jun 1988].

	["Introduction to Redundant Arrays of Inexpensive Disks
	(RAID)", "D. A. Patterson and P. Chen and G. Gibson and
	R. H. Katz", IEEE COMPCON 89, San Francisco, Feb-Mar 1989].

	(20 Jul 1995)

Redundant Arrays of Inexpensive Disks

	Renamed {Redundant Arrays of Independent Disks}.

red wire

	(IBM) Patch wires installed by programmers who have no
	business mucking with the hardware.  It is said that the only
	thing more dangerous than a hardware guy with a code patch is
	a {softy} with a soldering iron.

	Compare {blue wire}, {yellow wire}, {purple wire}.

	(23 Dec 1994)

red zone

	<networking> An environment located between internal and
	external {firewalls} where software and hardware are deployed
	to enable access to {extranet} applications.

	Compare {De-Militarised Zone}.

	(05 Nov 1997)

re-engineering

	The examination and modification of a system to reconstitute
	it in a new form and the subsequent implementation of the new
	form.

	{(http://www.erg.abdn.ac.uk/users/brant/sre)}

	(23 Dec 1994)

re-entrant

	<programming> Used to describe code which can have multiple
	simultaneous, interleaved, or nested invocations which will
	not interfere with each other.  This is important for
	{parallel processing}, {recursive} functions or subroutines,
	and {interrupt handling}.

	It is usually easy to arrange for multiple invocations
	(e.g. calls to a subroutine) to share one copy of the code and
	any read-only data but, for the code to be re-entrant, each
	invocation must use its own copy of any modifiable data (or
	synchronised access to shared data).  This is most often
	achieved using a {stack} and allocating local variables in a
	new {stack frame} for each invocation.  Alternatively, the
	caller may pass in a pointer to a block of memory which that
	invocation can use (usually for outputting the result) or the
	code may allocate some memory on a {heap}, especially if the
	data must survive after the routine returns.

	Re-entrant code is often found in system software, such as
	{operating systems} and {teleprocessing monitors}.  It is also
	a crucial component of {multithreaded} programs where the term
	"thread-safe" is often used instead of "re-entrant".

	(21 Dec 1996)

REFAL

	Recursive Functional Algorithmic Language.  V.F. Turchin,
	Moscow about 1972 (now at CUNY?).  See also
	{supercompilation}.

	[V.F. Turchin, "An algorithm of generalisation in the
	supercompiler", Workshop on partial evaluation and mixed
	computations, Oct 1987, Denmark, Eds. D. Bjorner, A.P. Ershov,
	N.D. Jones].

	[V. Turchin, "Supercompiler System Based on the Language
	Refal", V. Turchin, SIGPLAN Notices 14(2):46-54 (Feb 1979)].

REF-ARF

	"REF-ARF: A System for Solving Problems Stated as Procedures",
	R.E. Fikes, Artif Intell J 1(1) (Spring 1970).

reference counting

	A {garbage collection} technique where each memory cell
	contains a count of the number of other cells which point to
	it.  If this count reaches zero the cell is freed and its
	pointers to other cells are followed to decrement their
	counts, and so on {recursive}ly.

	This technique cannot cope with circular data structures.
	Cells in such structures refer (indirectly) to themselves and
	so will never have a zero reference count.  This means they
	will never be reclaimed, even when there are no references
	from outside the structure.

	(22 Feb 1995)

referential integrity

	<database> A collection of properties which should be
	possessed by data in a {relational database}.

	For example, in a database of family members, if we enter
	Diana as a spouse of Charles, we should also enter Charles as
	a spouse of Diana.  Similarly, if we remove one end of the
	relationship we should also remove the other.

	(17 Mar 1996)

referentially transparent

	referential transparency

referential transparency

	<programming> An expression E is referentially transparent if
	any subexpression and its value (the result of evaluating it)
	can be interchanged without changing the value of E.  This is
	not the case if the value of an expression depends on global
	state which can change value.  The most common example of
	changing global state is assignment to a global variable.  For
	example, if y is a global variable in:

		f(x)
		{ return x+y; }

		g(z)
		{
		  a = f(1);
		  y = y + z;
		  return a + f(1);
		}

	function g has the "{side-effect}" that it alters the value of
	y.  Since f's result depends on y, the two calls to f(1) will
	return different results even though the argument is the same.
	Thus f is not referentially transparent.  Changing the order
	of evaluation of the statements in g will change its result.

	{Pure functional languages} achieve referential transparency
	by forbidding {assignment} to global variables.  Each
	expression is a constant or a function application whose
	evaluation has no side-effect, it only returns a value and
	that value depends only on the definition of the function and
	the values of its arguments.

	We could make f above referentially transparent by passing in
	y as an argument:

		f(x, y) = x+y

	Similarly, g would need to take y as an argument and return
	its new value as part of the result:

		g(z, y)
		{
		  a = f(1, y);
		  y' = y+z;
		  return (a + f(1, y'), y');
		}

	Referentially transparent programs are more amenable to
	{formal methods} and easier to reason about because the
	meaning of an expression depends only on the meaning of its
	subexpressions and not on the order of evaluation or
	side-effects of other expressions.

	We can stretch the concept of referential transparency to
	include input and output if we consider the whole program to
	be a function from its input to its output.  The program as a
	whole is referentially transparent because it will always
	produce the same output when given the same input.  This is
	stretching the concept because the program's input may include
	what the user types, the content of certain files or even the
	time of day.  If we do not consider global state like the
	contents of files as input, then writing to a file and reading
	what was written behaves just like assignment to a global
	variable.  However, if we must consider the state of the
	universe as an input rather than global state then any
	{deterministic} system would be referentially transparent!

	See also {extensional equality}, {observational equivalence}.

	(25 Mar 1997)

REFINE

	1. "Research on Knowledge-Based Software Environments at
	Kestrel Institute", D.R. Smith et al, IEEE Trans Soft Eng,
	SE-11(11) (1985).  E-mail: <maria@kestrel.edu>.

	2. Cordell Green et al, Stanford U.  Uses logic to specify and
	evolve programs.  [same as 1?] Reasoning Systems, Inc.
	E-mail: <help@reasoning.com>.

Refined C

	(RC) An extension of C to directly specify data access rights
	so that flow analysis, and hence automatic parallelisation, is
	more effective.  Research implementations only.  "Refining A
	Conventional Language For Race-Free Specification Of Parallel
	Algorithms," H.G. Dietz et al, Proc 1984 Intl Conf Parallel
	Proc, pp.380-382.

Refined Fortran

	(RF) Similar to Refined C.  Research implementations only.
	"Refined FORTRAN: Another Sequential Language for Parallel
	Programming," H.G. Dietz et al, Proc 1986 Intl Conf Parallel
	Proc, pp.184-191.

Reflexive

	A relation R is reflexive if, for all x, x R x.  Equivalence
	relations, pre-, partial and total orders are all reflexive.

Reflexive domain

	A domain satisfying a recursive domain equation.
	E.g. D = D -> D.

Reflexive transitive closure

	Two elements, x and y, are related by the reflexive transitive
	closure, R+, of a relation, R, if they are related by the
	transitive closure, R*, or they are the same element.

RefLisp

	A {Lisp} {interpreter} by Bill Birch <bbirch@hemel.bull.co.uk>
	with {shallow-binding} and {dynamic scope}.  Use of {reference
	counting} makes it suitable for experimenting with {real-time}
	and {graphical user interface}s.  {Common Lisp} compatibility
	{macro}s are provided, and most of the examples in "Lisp" by
	Winston & Horn have been run on RefLisp.  RefLisp makes no
	distinction between symbol-values and function-values, so a
	symbol can be either but not both.  There are Lisp {module}s
	for {lexical scope} and for running {indefinite extent}
	{Scheme} programs.

	Version 2.67 ("Last Update for a While", the author is
	emigrating to Australia) includes an interpreter,
	documentation, examples and a profiler.  It runs under
	{MS-DOS} ({CGA}/{EGA}/{VGA}) and {AIX}.

	{(ftp://ftp.cs.cmu.edu/afs/cs.cmu.edu/user/mkant/Public/Lisp/implementations/reflisp/)}

	(09 Feb 1993)

refresh

	1. <storage> {DRAM refresh}.

	2. <hardware> {screen refresh}.

refresh rate

	<hardware> (Or "vertical refresh rate", "vertical scan rate")
	The maximum number of {frames} that can be displayed on a
	{monitor} in a second, expressed in {Hertz}.

	The scan rate is controlled by the vertical sync signal
	generated by the {video controller}, ordering the monitor to
	position the {electron gun} at the upper left corner of the
	{raster}, ready to paint another frame.  It is limited by the
	monitor's maximum {horizontal scan rate} and the {resolution},
	since higher resolution means more {scan lines}.  Increasing
	the refresh rate decreases flickering reducing eye strain, but
	few people notice any change above 60-72 Hz.

	(09 Feb 1996)

refutable

	In lazy functional languages, a refutable pattern is one which
	may fail to match.  An expression being matched against a
	refutable pattern is first evaluated to head normal form
	(which may fail to terminate) and then the top-level
	constructor of the result is compared with that of the
	pattern.  If they are the same then any arguments are matched
	against the pattern's arguments otherwise the match fails.

	An irrefutable pattern is one which always matches.  An
	attempt to evaluate any variable in the pattern forces the
	pattern to be matched as though it were refutable which may
	fail to match (resulting in an error) or fail to terminate.

	Patterns in Haskell are normally refutable but may be made
	irrefutable by prefixing them with a tilde (~).  For example,

		(\ (x,y) -> 1) undefined	==>	undefined
		(\ ~(x,y) -> 1) undefined	==>	1

	Patterns in Miranda are refutable, except for tuples which are
	irrefutable.  Thus

		g [x] = 2
		g undefined			==>	undefined

		f (x,y) = 1
		f undefined			==>	1

	Pattern bindings in local definitions are irrefutable in both
	languages:

		h = 1 where [x] = undefined	==>	1
	Irrefutable patterns can be used to simulate unlifted products
	because they effectively ignore the top-level constructor of
	the expression being matched and consider only its components.

regex

	The {GNU} {regular expression} matching library.  See also
	{Rx}.

regexp

	1. {regular expression}.

	2. Name of a well-known PD regexp-handling package in portable
	C, written by revered {Usenet}ter Henry Spencer
	<henry@zoo.toronto.edu>.

Regina

	A {Rexx} {interpreter} The VMS version has an almost complete
	set of DCL lexical functions in the interpreter.  Ports to
	{MS-DOS} and OS/2 exist by lack special support for these
	{platform}s.

	conformance: Almost completely to Rexx Language Level 4.00
	with some Rexx SAA API extensions.

	Version 0.05i

	interpreter, documentation, test programs

	Anders Christensen <anders@pvv.unit.no>

	{Norway (ftp://flipper.pvv.unit.no/pub/rexx/regina-0.05g.tar.Z)}.
	{USA (ftp://rexx.uwaterloo.ca/pub/freerexx/regina/regina-0.05d.tar.Z)}

	restriction:	GNU {General Public License}

	ports:		Unix, VMS, {MS-DOS}

	(partial), OS/2 (partial) Mailing list:	comp.lang.rexx

	1993/10/15

regional network

	See {mid-level network}.

register

	1. One of a small number of high-speed memory locations in a
	computer's {CPU}.  Registers differ from ordinary
	{random access memory} in several respects:

	There are only a small number of registers (the "register
	set"), typically 32 in a modern processor though some,
	e.g. SPARC, have as many as 144.  A register may be directly
	addressed with a few bits.  In contrast, there are usually
	millions of words of main memory (RAM), requiring at least
	twenty bits to specify a memory location.  Main memory
	locations are often specified indirectly, using an {indirect
	addressing} mode where the actual memory address is held in a
	register.

	Registers are fast; typically, two registers can be read and a
	third written -- all in a single cycle.  Memory is slower; a
	single access can require several cycles.

	The limited size and high speed of the register set makes it
	one of the critical resources in most computer architectures.
	{Register allocation}, typically one phase of the {back-end},
	controls the use of registers by a compiled program.

	See also {accumulator}, {FUBAR}, {orthogonal}, {register
	dancing}, {register allocation}, {register spilling}.

	2. An addressable location in a {memory-mapped} peripheral
	device.  E.g. the transmit data register in a {UART}.

register allocation

	The phase of a {compiler} that determines which values will be
	placed in {register}s.  Often used to include {register
	assignment}.  This problem can be shown to be isomorphic to
	{graph colouring} by relating values to nodes in the graph and
	registers to colours.  Values (nodes) which must be valid
	simultaneously are linked by edges and cannot be stored in the
	same register (coloured the same).

	See also {register dancing} and {register spilling}.

	Preston Briggs, PhD thesis, Rice University, April 1992:
	{"Register Allocation via Graph Coloring"
	(ftp://cs.rice.edu/public/preston/thesis.ps)}

register assignment

	The phase of a {compiler} that determines which {register} to
	use for each program value selected during {register
	allocation}.

register dancing

	Many older processor architectures suffer from a serious
	shortage of general-purpose registers.  This is especially a
	problem for compiler-writers, because their generated code
	needs places to store temporaries for things like intermediate
	values in expression evaluation.  Some designs with this
	problem, like the Intel 80x86, do have a handful of
	special-purpose registers that can be pressed into service,
	providing suitable care is taken to avoid unpleasant side
	effects on the state of the processor: while the
	special-purpose register is being used to hold an intermediate
	value, a delicate minuet is required in which the previous
	value of the register is saved and then restored just before
	the official function (and value) of the special-purpose
	register is again needed.

register set

	All a processor's {register}s.  The size and arrangement of a
	processor's register set is one of the crucial factors in its
	performance.

register spilling

	<programming, compiler> (By analogy with spilling the contents
	of an overfull container) When a {compiler} is generating
	{machine code} and there are more {live variables} than the
	machine has {registers} and it has to transfer or "spill" some
	variables from registers to memory.

	(24 Jun 1997)

Register Transfer Language

	(RTL) 1. A kind of {hardware description language} (HDL) used
	in describing the {register}s of a computer or digital
	electronic system, and the way in which data is transferred
	between them.

	2.  An intermediate code for a machine with an infinite number
	of {register}s, used for machine-independent optimisation.
	RTL was developed by Chris Fraser <cwf@research.att.com> and
	J. Davidson <jwd@virginia.edu> at the {University of Arizona}
	in the early 1980s.  RTL is used by the {GNU} C compiler,
	{gcc} and by Davidson's {VPCC} (Very Portable C compiler).

	["Quick Compilers Using Peephole Optimisation", Davidson et
	al, Soft. Prac. & Exp. 19(1):79-97 (Jan 1989)].

	(16 Nov 1994)

regression

	1. <mathematics> A mathematical method where an {empirical
	function} is derived from a set of experimental data.

	2. {regression testing}.

	(14 Mar 1995)

regression testing

	<programming> Part of the test phase of software development
	where, as new {modules} are integrated into the system and the
	added functionality is tested, previously tested functionality
	is re-tested to assure that no new module has corrupted the
	system.

	[Bennatan, E.M., "Software Project Management", 2nd edition,
	McGraw-Hill International, 1992].

	(04 Dec 1995)

REG-SYMBOLIC

	An early system on the {IBM 704}.

	[Listed in CACM 2(5):16 (May 1959)].

	(02 Dec 1994)

REGTRAL

	Mentioned in Attribute Grammars, LNCS 323, p.108.

	Relational Language.  Clark & Gregory.  First parallel logic
	language to use the concept of committed choice.  Forerunner
	of PARLOG.  "A Relational Language for Parallel Programming",
	K.L. Clark et al, Proc ACM Conf on Functional Prog Langs and
	Comp Arch, pp.171-178, ACM 1981.

regular expression

	1. <text, operating system> (regexp, RE) One of the {wild
	card} patterns used by {Unix} utilities such as {grep}, {sed}
	and {awk} and editors such as {vi} and {Emacs}.  These use
	conventions similar to but more elaborate than those described
	under {glob}.  A regular expression is a sequence of
	characters with the following meanings:

	An ordinary character (not one of the special characters
	discussed below) matches that character.

	A backslash (\) followed by any special character matches the
	special character itself.  The special characters are:

	"." matches any character except NEWLINE; "RE*" (where
	the "*" is called the "{Kleene star}") matches zero
	or more occurrences of RE.  If there is any choice, the
	longest leftmost matching string is chosen, in most
	regexp {flavour}s.

	"^" at the beginning of an RE matches the start of a line and
	"$" at the end of an RE matches the end of a line.

	[string] matches any one character in that string.  If the
	first character of the string is a "^" it matches
	any character (except NEWLINE, in most regexp {flavour}s)
	and the remaining characters in the string.  "-" may be used
	to indicate a range of consecutive ASCII characters.

	\( RE \) matches whatever RE matches and \n, where n is a
	digit, matches whatever was matched by the RE between the nth
	\( and its corresponding \) earlier in the same RE.  In
	many flavours ( RE ) is used instead of \( RE \)

	The concatenation of REs is a RE that matches the
	concatenation of the strings matched by each RE.

	\< matches the beginning of a word and \> matches the end of a
	word.  In many flavours of regexp, \> and \< are are replaced
	by "\b", the special character for "word boundary".

	RE\{m\} matches m occurences of RE.  RE\{m,\} matches m or
	more occurences of RE.  RE\{m,n\} matches between m and n
	occurences.

	The exact details of how regexp will work in a given
	application vary greatly from flavour to flavour.  A comprehensive
	survey of regexp flavours is found in Friedl 1997 (see below).

	[Jeffrey E.F. Friedl, "{Mastering Regular
	Expressions(http://enterprise.ic.gc.ca/~jfriedl/regex/index.html)},
	O'Reilly, 1997.]

	2. Any description of a {pattern} composed from combinations
	of {symbols} and the three {operators}:

	Concatenation - pattern A concatenated with B matches a match
	for A followed by a match for B.

	Or - pattern A-or-B matches either a match for A or a match
	for B.

	Closure - zero or more matches for a pattern.

	The earliest form of regular expressions (and the term itself)
	were invented by mathematician {Stephen Cole Kleene} in the
	mid-1950s, as a notation to easily manipulate "regular sets",
	formal descriptions of the behavior of {finite state
	machines}, in {regular algebra}.

	[S.C. Kleene, "Representation of events in nerve nets and
	finite automata", 1956, Automata Studies. Princeton].

	[J.H. Conway, "Regular algebra and finite machines", 1971, Eds
	Chapman & Hall].

	[Sedgewick, "Algorithms in C", page 294].

	(03 Aug 1997)

regular graph

	<mathematics> A {graph} in which all {node}s have the same
	{degree}.

	(07 Mar 1995)

rehi

	<chat> Hello again.

	(28 Feb 1995)

Reid, Brian

	{Brian Reid}

reify

	To regard (something abstract) as a material thing.

	(07 Mar 1995)

reincarnation, cycle of

	{cycle of reincarnation}

reinvent the wheel

	<jargon> To design or implement a tool equivalent to an
	existing one or part of one, with the implication that doing
	so is silly or a waste of time.  This is often a valid
	criticism.  On the other hand, automobiles don't use wooden
	rollers, and some kinds of wheel have to be reinvented many
	times before you get them right.  On the third hand, people
	reinventing the wheel do tend to come up with the moral
	equivalent of a trapezoid with an offset axle.

	(12 Apr 1997)

relation

	1. <mathematics> A subset of the {product} of two sets, R : A
	x B.  If (a, b) is an element of R then we write a R b,
	meaning a is related to b by R.  A relation may be:
	{reflexive} (a R a), {symmetric} (a R b => b R a),
	{transitive} (a R b & b R c => a R c), {antisymmetric} (a R b
	& b R a => a = b) or {total} (a R b or b R a).

	See {equivalence relation}, {partial ordering}, {pre-order},
	{total ordering}.

	2. <database> A {table} in a {relational database}.

	(28 Feb 1995)

relational algebra

	<database, theory> A family of {algebra} with a {well-founded}
	{semantics} used for modelling the data stored in {relational
	databases}, and defining queries on it.  The main operations
	of the relational algebra are the {set} operations (such as
	{union}, {intersection}, and {cartesian product}), selection
	(keeping only some lines of a {table}) and the {projection}
	(keeping only some columns).

	See {relational data model}.

	(17 Feb 1997)

relational database

	<database> (RDBMS - relational database management system) A
	{database} based on the {relational model} developed by
	{E.F. Codd}.  A relational database allows the definition of
	data structures, storage and retrieval operations, and
	{integrity constraint}s.  In such a database, the data and
	relations between them are organised in {table}s.  A table is
	a collection of records and each record in a table contains
	the same fields.  Certain fields may be designated as keys,
	which means that searches for specific values of that field
	will use indexing to speed them up.  Records in different
	tables may be linked if they have the same value in one
	particular field in each table.

	{INGRES}, {Oracle} and {Microsoft Access} are well-known
	examples.

	The first commercial RDBMS was the {Multics Relational Data
	Store}, first sold in 1978.

	(06 Nov 1996)

relational database management system

	{relational database}

relational data model

	<database> A {data model} introduced by {E.F. Codd},
	particularly well suited for business data management.

	In this model, data are organised in tables.  The set of names
	of the columns is called the "schema" of the table.  Here is
	an example table with the schema (account number, amount) and
	3 lines.

	 +----------------+-------------+
	 | account number |    amount   |
	 +----------------+-------------+
	 | 12343243546456 |  + 30000.00 |
	 | 23149875245824 |  +  2345.33 |
	 | 18479827492874 |  -   123.25 |
	 +----------------+-------------+

	The data can be manipulated using a {relational algebra}.
	{SQL} is an implementation of such an algebra.

	[Is this the same as the "{relational model}"].

	(01 Dec 1996)

Relational DBMS

	{relational database}

relational language

	<language> Relational languages specify output in terms of
	some property and some arguments.  For example, if Tom has two
	brothers, Dick and Harry, a relational language will respond
	to the query "Who is Tom's brother?" with either Dick or
	Harry.  Notice that unlike {functional language}s, relational
	languages do not require a unique output for each
	{predicate}/argument pair.  {Prolog} is the best known
	relational language.

	(31 Mar 1995)

relational model

	<database> A {data model} introduced by {E.F. Codd} in 1970.

	See {relational database}.

	["A relational model for large shared data banks"
	Communications of ACM 13:6, pp 377-387].

	[Is this the same as the "{relational data model}"].

	(31 Mar 1995)

RELATIVE

	Early system on IBM 650.  Listed in CACM 2(5):16 (May 1959).

relatively prime

	<mathematics> Having no common divisors (greater than 1).

	Two numbers are said to be relativey prime if there is no
	number greater than unity that divides both of them evenly.

	For example, 10 and 33 are relativly prime.  15 and 33 are not
	relatively prime, since 3 is a {divisor} of both.

	(11 Mar 1997)

relative pathname

	<file system> A {path} relative to the {working directory}.
	Its first character can be anything but the {pathname
	separator}.

	(21 Nov 1996)

RELCODE

	Early system on UNIVAC I or II.  Listed in CACM 2(5):16 (May
	1959).

release

	<programming> (Or "released version", "baseline") A version of
	a piece of software which has been made public (as opposed to
	a version that is in development, or otherwise unreleased).

	A release is either a {major release}, a {revision}, or a
	{bugfix}.

	Pre-release versions may be called {alpha test}, or {beta
	test} versions.

	See {change management}.

	(04 Aug 1996)

released version

	{release}

REL English

	{Rapidly Extensible Language, English}

relevance

	<library> A measure of how closely a given object (file, {web
	page}, database {record}, etc.) matches a user's search for
	information.

	The relevance {algorithms} used in most large web {search
	engines} today are based on fairly simple word-occurence
	measurement: if the word "daffodil" occurs on a given page,
	then that page is considered relevant to a {query} on the word
	"daffodil"; and its relevance is quantised as a factor of the
	number of times the word occurs in the page, on whether
	"daffodil" occurs in title of the page or in its META
	keywords, in the first {N} words of the page, in a heading,
	and so on; and similarly for words that a {stemmer} says are
	based on "daffodil".

	More elaborate (and resource-expensive) relevance algorithms
	may involve thesaurus (or {synonym ring}) lookup; e.g. it
	might rank a document about narcissuses (but which may not
	mention the word "daffodil" anywhere) as relevant to a query
	on "daffodil", since narcissuses and daffodils are basically
	the same thing.  Ditto for queries on "jail" and "gaol", etc.

	More elaborate forms of thesaurus lookup may involve
	multilingual thesauri (e.g. knowing that documents in Japanese
	which mention the Japanese word for "narcissus" are relevant
	to your search on "narcissus"), or may involve thesauri (often
	auto-generated) based not on equivalence of meaning, but on
	word-proximity, such that "bulb" or "bloom" may be in the
	thesaurus entry for "daffodil".

	{Word spamming} essentially attempts to falsely increase a web
	page's relevance to certain common searches.

	See also {subject index}.

	(09 Apr 1997)

reliability

	1. {software reliability}.

	2. {reliable communication}.

reliable communication

	Communication where messages are guaranteed to reach their
	destination complete and uncorrupted and in the order they
	were sent.  This reliability can be built on top of an
	unreliable {protocol} by adding sequencing information and
	some kind of {checksum} or {cyclic redundancy check} to each
	message or {packet}.  If the communication fails, the sender
	will be notified.  {Transmission Control Protocol} is a
	reliable protocol used on {Ethernet}.

religion of CHI

	/ki:/ [Case Western Reserve University] Yet another hackish
	parody religion (see also {Church of the SubGenius},
	{Discordianism}).  In the mid-70s, the canonical "Introduction
	to Programming" courses at CWRU were taught in {ALGOL}, and
	student exercises were punched on cards and run on a Univac
	1108 system using a homebrew operating system named CHI.  The
	religion had no doctrines and but one ritual: whenever the
	worshipper noted that a digital clock read 11:08, he or she
	would recite the phrase "It is 11:08; ABS, ALPHABETIC, ARCSIN,
	ARCCOS, ARCTAN."  The last five words were the first five
	functions in the appropriate chapter of the ALGOL manual; note
	the special pronunciations /obz/ and /ark'sin/ rather than the
	more common /ahbz/ and /ark'si:n/.  Using an alarm clock to
	warn of 11:08's arrival was {considered harmful}.

religious issues

	Questions which seemingly cannot be raised without touching
	off {holy wars}, such as "What is the best operating system
	(or editor, language, architecture, shell, mail reader, news
	reader)?", "What about that Heinlein guy, eh?", "What should
	we add to the new Jargon File?"  See {holy wars}; see also
	{theology}, {bigot}.

	This term is a prime example of {ha ha only serious}.  People
	actually develop the most amazing and religiously intense
	attachments to their tools, even when the tools are
	intangible.  The most constructive thing one can do when one
	stumbles into the crossfire is mumble {Get a life!} and leave
	- unless, of course, one's *own* unassailably rational and
	obviously correct choices are being slammed.

	(16 Aug 1996)

Remote Access Services

	<communications> (RAS) A service provided by {Windows NT}
	which allows most of the services which would be available on
	a {network} to be accessed over a {modem} link.  The service
	includes support for {dialup} and {logon}, and then presents
	the same network interface as the normal network drivers
	(albeit slightly slower!).  It is not necessary to run Windows
	NT on the {client} - there are client versions for other
	{Windows} {operating systems}.

	(14 Aug 1996)

Remote Database Access

	(RDBA) A standard permitting the exchange of information
	between different {DBMS} systems.

remote login

	Operating interactively on a remote computer, using a protocol
	over a computer network, as though locally attached.  See also
	{rlogin}, {telnet}.

Remote Method Invocation

	<programming> (RMI) Part of the {Java} {programming language}
	{library} which enables a Java program running on one computer
	to access the {objects} and {methods} of another Java program
	running on a different computer.

	{Home
	(http://java.sun.com/products/jdk/1.1/docs/guide/rmi/index.html)}

	(04 Sep 1997)

Remote Operations Service Element

	<networking> (ROSE) A sub-layer of {layer} six ({presentation
	layer}) in the {OSI} seven layer model which provides {SASE}
	for remote operations.

	Documents: {ITU} Rec. X.229 ({ISO} 9072-2), ITU Rec. X.219
	(ISO 9072-1).

	(07 Dec 1997)

Remote Procedure Call

	<networking, programming> (RPC) A {protocol} which allows a
	program running on one {host} to cause code to be executed on
	another host without the programmer needing to explicitly code
	for this.  RPC is an easy and popular paradigm for
	implementing the {client-server} model of {distributed
	computing}.  An RPC is initiated by the caller (client)
	sending request message to a remote system (the server) to
	execute a certain procedure using arguments supplied.  A
	result message is returned to the caller.  There are many
	variations and subtleties in various implementations,
	resulting in a variety of different (incompatible) RPC
	{protocols}.

	[RFC?]

	(28 Nov 1997)

Remote Reference Layer

	<protocol> (RRL) Part of {Java}'s {Remote Method Invocation}
	protocol.  RRL exists in both the RMI {client} and {server}.
	It is used by the {stub} or {skeleton} {layer} and uses the
	{transport layer}.  RRL is reponsible for
	transport-independent functioning of RMI, such as {connection
	management} or {unicast}/{multicast} {object invocation}.

	[Specification URL?]

	(03 Dec 1997)

Remote Spooling Communication Subsystem

	<communications> (RSCS) A {networking} {protocol} used
	primarily on {Bitnet}.

	[Details?]

	(04 Feb 1996)

Remote Write Protocol

	<chat, protocol> (RWP) A proposed {Internet} {protocol} for
	exchanging short messages between terminals.

	The RWP proposal is detailed in {RFC 1756}.

	(08 Sep 1996)

removable disk

	<storage> A type of {magnetic disk}, or possibly
	{magneto-optical disk} which is not permanently attached to
	the {disk drive} (not a {fixed disk}) but which can be taken
	out and replaced, allowing many disks to be used in the same
	drive.

	{Floppy disks} are removable disks but the term is not
	commonly used for them but mostly for {hard disks} in suitable
	cartridges such as those made by {Syquest}, {Iomega} and
	others.

	Removable disks have become popular on {microcomputers} in the
	1990s since they offer a cheap way of expanding disk space,
	transporting large amounts of data between computers and
	storing back-ups.  The concept is not new however, removable
	disk packs were common on {minicomputers} such as the {PDP-11}
	in use in the 1970s except that the drives were the size of
	{washing machines} and the disk packs as big as car wheels.

	(06 Jun 1997)

rendering

	Generation of a graphical image from a mathematical model of a
	three-dimensional object or scene.  A common method is
	{ray-tracing}.

RenderMan Shading Language

	["The RenderMan Companion", S. Upstill, A-W 1989, chaps
	13-15].

rendezvous

	1. In {Ada}, the method of synchronising the activity of
	different tasks.

	2. Query language, close to natural English.

	["Seven Steps to Rendezvous with the Casual User", E. Codd in
	Data Base Management, J.W.  Klimbie et al eds, N-H 1974,
	pp.179-199].

repeater

	A device which propagates electrical signals from one cable to
	another.  Less intelligent than a {bridge}, {gateway} or
	{router}.

REPL

	Restricted EPL.  The efficient subset of {EPL} used to write
	the core of {Multics}.

replacement algorithm

	The method used to determine which entry in an associative
	{cache} to flush to main memory when it is desired to cache a
	new block of data.  The "least recently used" algorithm
	flushed the block which has not been accessed for the longest
	time.  A random replacement algorithm picks any block with
	equal probability.

Replay

	{Acorn Computers}' {full-motion video} system written by Roger
	Wilson.  Video and sound information are stored in compressed
	form.  Compression is relatively slow but decompression is
	done in {real-time} with quality and {frame-rate} varying with
	the processing power available, the size of the picture and
	whether it appears in a {window} or uses the whole screen.

	(09 Nov 1994)

replication

	<database, networking> Creating and maintaining a duplicate
	copy of a database or file system on a different computer,
	typically a {server}.  The term usually implies the
	intelligent copying of parts of the source database which have
	changed since the last replication with the destination.

	Replication may be one-way or two-way.  Two-way replication is
	much more complicated because of the possibility that a
	replicated object may have been updated differently in the two
	locations in which case some method is needed to reconcile the
	different versions.

	For example, {Lotus Notes} can automatically distribute
	document databases across telecommunications networks.  Notes
	supports a wide range of network {protocols} including {X25}
	and {Internet} {TCP/IP}.

	Compare {mirror}.  See also {rdist}.

	(12 Dec 1997)

replicator

	Any construct that acts to produce copies of itself; this
	could be a living organism, an idea (see {meme}), a program
	(see {quine}, {worm}, {wabbit}, {fork bomb}, and {virus}), a
	pattern in a {cellular automaton} (see {life}), or
	(speculatively) a robot or {nanobot}.  It is even claimed by
	some that {Unix} and {C} are the symbiotic halves of an
	extremely successful replicator; see {Unix conspiracy}.

reply

	See {followup}.

Repondez s'il vous plait

	{Rpondez s'il vous plait}

Repository

	The core of a {CASE} tool, typically a {DBMS} where all
	development documents are stored.

Request For Comments

	<standard> (RFC) One of a series, begun in 1969, of numbered
	{Internet} informational documents and {standard}s widely
	followed by commercial software and {freeware} in the
	{Internet} and {Unix} communities.  Few RFCs are standards but
	all Internet standards are recorded in RFCs.  Perhaps the
	single most influential RFC has been {RFC 822}, the Internet
	{electronic mail} format standard.

	The RFCs are unusual in that they are floated by technical
	experts acting on their own initiative and reviewed by the
	Internet at large, rather than formally promulgated through an
	institution such as {ANSI}.  For this reason, they remain
	known as RFCs even once adopted as standards.

	The RFC tradition of pragmatic, experience-driven,
	after-the-fact standard writing done by individuals or small
	working groups has important advantages over the more formal,
	committee-driven process typical of {ANSI} or {ISO}.

	Emblematic of some of these advantages is the existence of a
	flourishing tradition of "joke" RFCs; usually at least one a
	year is published, usually on April 1st.  Well-known joke RFCs
	have included 527 ("ARPAWOCKY", R. Merryman, UCSD; 22 June
	1973), 748 ("Telnet Randomly-Lose Option", Mark R. Crispin; 1
	April 1978), and 1149 ("A Standard for the Transmission of IP
	Datagrams on Avian Carriers", D. Waitzman, BBN STC; 1 April
	1990).  The first was a Lewis Carroll pastiche; the second a
	parody of the {TCP/IP} documentation style, and the third a
	deadpan skewering of standards-document legalese, describing
	protocols for transmitting Internet data packets by carrier
	pigeon.

	The RFCs are most remarkable for how well they work - they
	manage to have neither the ambiguities that are usually rife
	in informal specifications, nor the committee-perpetrated
	{misfeature}s that often haunt formal standards, and they
	define a network that has grown to truly worldwide
	proportions.

	{InterNIC (http://ds.internic.net/rfc/)}.
	{W3
	(http://www.w3.org/hypertext/DataSources/Archives/RFC_sites.html)}
	{JANET UK FTP (ftp://nic.ja.net/pub/newsfiles/JIPS/rfc)}.
	{Imperial College, UK FTP (ftp://src.doc.ic.ac.uk/rfc/)}.
	{Nexor UK (http://www.nexor.com/public/rfc/index/rfc.html)}.
	{Ohio State U
	(http://www.cis.ohio-state.edu/hypertext/faq/usenet/top.html)}.

	See also {For Your Information}, {STD}.

	(10 Nov 1997)

request for proposal

	<programming> (RFP) The publication by a prospective software
	purchaser of details of the required system in order to
	attract offers by software developers to supply it.  Software
	development under contract starts with the selection of the
	software developer by the customer.  A request for proposal
	(also called in Britain an "invitation to tender") is the
	beginning of the selection process.

	[Bennatan, E.M., "Software Project Management", 2nd edition,
	McGraw-Hill International, 1992].

	(04 Dec 1995)

Request For Technology

	(RFT) The process established by the {OSF} to get proposals
	for new standards.

	(30 Nov 1994)

Required-COBOL

	A minimal subset of {COBOL} developed in 1961.  It was later
	dropped entirely.

	[Sammet 1969, p. 339].

	(30 Nov 1994)

requirements

	<programming> The first stage of software development which
	defines what the potential users want the system to do.  In
	modern methods these requirements should be testable, and will
	usually be traceable in later development stages.  A common
	feature of nearly all software is that the requirements change
	during its lifetime.  See {software life-cycle}.

	(11 Nov 1995)

Requirements Acquisition and Controlled Evolution

	<programming, project> (RACE) A "back to basics" approach to
	{requirements engineering}.  The method, is being pieced
	together through a series of intermediate research studies.
	In essence, the approach has been to establish requirements
	for RACE, identify individual techniques that meet those
	requirements, experiment with the combined use of the
	techniques, and finally assemble the method.  In practice,
	RACE has been influenced significantly by Checkland and
	Wilson's {Soft Systems Methodology} (SSM) and this forms the
	core of the method.

	(21 Nov 1995)

requirements analysis

	<project> The process of reviewing a business's processes to
	determine the business needs and {functional requirements}
	that a computer system must meet.

	(01 Aug 1996)

Requirements Engineering

	<programming> The task of capturing, structuring, and
	accurately representing the user's {requirements} so that they
	can be correctly embodied in systems which meet those
	requirements (i.e. are of good quality).

	{DOORS} is one product to help with this task.

	(11 Nov 1995)

Research Systems, Inc.

	(RSI) Distributors of {Interactive Data Language} (IDL).

	{(ftp://gateway.rs.inc.com/pub/)}.  E-mail: <info@rsinc.com>.

	(07 Oct 1994)

reserved memory

	<storage> The address range 640-1024 {kilobytes} on an {IBM
	PC}, reserved for {BIOS}, {video cards}, and add-on cards.
	Depending on the configuration some of the address space may
	be unused in which case it can be used by {EMS} or {UMB}.

	(10 Jan 1996)

resolution

	1. <hardware> the maximum number of {pixels} that can be
	displayed on a {monitor}, expressed as (number of horizontal
	pixels) x (number of vertical pixels), i.e., 1024x768.  The
	ratio of horizontal to vertical resolution is usually 4:3, the
	same as that of conventional television sets.

	2. <logic> A mechanical method for proving statements of
	{first order logic}, introduced by J. A. Robinson in 1965.
	Resolution is applied to two {clauses} in a {sentence}.  It
	eliminates, by {unification}, a {literal} that occurs
	"positive" in one and "negative" in the other to produce a new
	clause, the {resolvent}.

	For example, given the sentence:

		(man(X) => mortal(X))  AND  man(socrates).

	The literal "man(X)" is "negative".  The literal
	"man(socrates)" could be considered to be on the right hand
	side of the degenerate implication

		True => man(socrates)

	and is therefore "positive".  The two literals can be unified
	by the binding X = socrates.

	The {truth table} for the implication function is

		A | B | A => B
		--+---+-------
		F | F |   T
		F | T |   T
		T | F |   F
		T | T |   T

	(The implication only fails if its premise is true but its
	conclusion is false).  From this we can see that

		A => B   ==   (NOT A) OR B

	Which is why the left hand side of the implication is said to
	be negative and the right positive.  The sentence above could
	thus be written

		((NOT man(socrates)) OR mortal(socrates))
		AND
		man(socrates)

	Distributing the AND over the OR gives

		((NOT man(socrates)) AND man(socrates))
		OR
		mortal(socrates) AND man(socrates)

	And since (NOT A) AND A == False, and False OR A == A we can
	simplify to just

		mortal(socrates) AND man(socrates)

	So we have proved the new literal, mortal(socrates).

	Resolution with {backtracking} is the basic control mechanism
	of {Prolog}.

	See also {modus ponens}, {SLD Resolution}.

	3. <networking> {address resolution}.

	(09 Feb 1996)

resolver

	<networking> The {TCP/IP} {protocol} library software that
	formats requests to be sent to the {Domain Name Server} for
	{hostname} to {Internet address} conversion.

	(28 Mar 1995)

Resource Access Control Facility

	(RACF) {IBM}'s large system security product.  It originally
	ran only under {MVS} but has since been ported to run under
	{VM}.

	(07 Feb 1995)

resource fork

	<file system> See {Macintosh file system}.

	(04 Mar 1996)

restriction

	A {bug} or design error that limits a program's capabilities,
	and which is sufficiently egregious that nobody can quite work
	up enough nerve to describe it as a {feature}.  Often used
	(especially by {marketroid} types) to make it sound as though
	some crippling bogosity had been intended by the designers all
	along, or was forced upon them by arcane technical constraints
	of a nature no mere user could possibly comprehend (these
	claims are almost invariably false).

	Old-time hacker Joseph M. Newcomer advises that whenever
	choosing a quantifiable but arbitrary restriction, you should
	make it either a power of 2 or a power of 2 minus 1.  If you
	impose a limit of 17 items in a list, everyone will know it is
	a random number - on the other hand, a limit of 15 or 16
	suggests some deep reason (involving 0- or 1-based indexing in
	binary) and you will get less {flamage} for it.  Limits which
	are round numbers in base 10 are always especially suspect.

Restructured EXtended eXecutor

	<language> (REXX, or "System Product Interpreter", originally
	known as "REX") A {script}ing language for {IBM VM} and {MVS}
	systems, developed by M. Cowlishaw at {IBM} ca. 1979,
	replacing {EXEC2}.

	Versions: PC-Rexx for {MS-DOS}, {AREXX} for the {Amiga}, the
	{OS/2} implementation from IBM, WINREXX (Rexx for Windows,
	from {Quercus systems}) and Personal Rexx (Rexx for MS-DOS,
	from Quercus systems).

	See also {Regina}, {freerexx}, {imc}.

	{REXXWARE} is an implementation of {REXX} for {Novell
	NetWare}.

	Mailing list: <REXX-L@UIUCVMD.BITNET>.

	{Usenet} newsgroup: {news:comp.lang.rexx}.

	["The REXX Language: A Practical Approach to Programming",
	M.F. Cowlishaw, 1985].

	(13 May 1992)

restructuring

	The transformation from one representation form to another at
	the same relative abstraction level, while preserving the
	subject system's external behaviour (functionality and
	semantics).

retcon

	/ret'kon/ retroactive continuity.

	The common situation in fiction where a new story "reveals"
	things about events in previous stories, usually leaving the
	"facts" the same (thus preserving continuity) while completely
	changing their interpretation.  For example, revealing that a
	whole season of "Dallas" was a dream was a retcon.

	This term was once thought to have originated on the {Usenet}
	newsgroup {news:rec.arts.comics} but is now believed to have
	been used earlier in comic fandom.

	(08 Dec 1994)

RETI

	Synonym for {RTI}.

Retrieve

	Query language, inspired {JPLDIS} which led to {Vulcan} and
	then to {dBASE II}.  Tymshare Corp, 1960's.

retrocomputing

	/ret'-roh-k*m-pyoo'ting/ Refers to emulations of
	way-behind-the-state-of-the-art hardware or software, or
	implementations of never-was-state-of-the-art; especially if
	such implementations are elaborate practical jokes and/or
	parodies, written mostly for {hack value}, of more "serious"
	designs.  Perhaps the most widely distributed retrocomputing
	utility was the "pnch(6)" or "bcd(6)" program on V7 and other
	early Unix versions, which would accept up to 80 characters of
	text argument and display the corresponding pattern in
	{punched card} code.  Other well-known retrocomputing hacks
	have included the programming language {INTERCAL}, a
	{JCL}-emulating shell for Unix, the card-punch-emulating
	editor named 029, and various elaborate {PDP-11} hardware
	emulators and RT-11 OS emulators written just to keep an old,
	sourceless {Zork} binary running.

return from the dead

	To regain access to the net after a long absence.  Compare
	{person of no account}.

Return To Zero

	<communications> A class of encoding methods for physical
	circuits in which the carrier (current, voltage) returns to
	zero after each transmitted bit, i.e. the data is carried in
	pulse width or polarity, not in the level of the signal.

	Contrast {NRZ}.

	(11 Nov 1995)

reusability

	See {reuse}.

reuse

	Using code developed for one {application program} in another
	application.  Traditionally achieved using program libraries.
	{Object-oriented programming} offers reusability of code via
	its techniques of {inheritance} and {genericity}.  {Class}
	libraries with {intelligent browser}s and {application
	generator}s are under development to help in this process.
	{Polymorphic} {functional language}s also support reusability
	while retaining the benefits of {strong typing}.

	See also {DRAGOON}, {National Software Reuse Directory},
	{RLF}.

Reverse Address Resolution Protocol

	(RARP) A {protocol} defined in {RFC 903} which provides the
	reverse function of {ARP}.  RARP maps a hardware address ({MAC
	address}) to an {Internet address}.  It is used primarily by
	diskless nodes, when they first initialise, to find their
	{Internet address}.

	See also {BOOTP}.

	(08 Dec 1994)

reverse engineering

	The process of analysing an existing system to identify its
	components and their interrelationships and create
	representations of the system in another form or at a higher
	level of abstraction.  Reverse engineering is usually
	undertaken in order to redesign the system for better
	maintainability or to produce a copy of a system without
	access to the design from which it was originally produced.

	For example, one might take the {executable} code of a
	computer program, run it to study how it behaved with
	different input and then attempt to write a program oneself
	which behaved identially (or better).  An {integrated circuit}
	might also be reverse engineered by an unscrupulous company
	wishing to make unlicensed copies of a popular chip.

	(06 Oct 1995)

Reverse Polish Notation

	{postfix notation}

Revised ALGOL 60

	{ALGOL 60 Revised}

revision

	<programming> A {release} of a piece of software which is not
	a {major release} or a {bugfix}, but only introduces small
	changes or new features.

	(04 Aug 1996)

Revolutionary Surrealist Vandal Party

	<body> (RSVP)
	{(http://www.impropaganda.com/kultcha.html#bullet21)}.

	(01 Dec 1996)

REX

	The original name for {Restructured EXtended eXecutor}.

REXX

	{Restructured EXtended eXecutor}

REXXWARE

	An implementation of {REXX} for {Novell NetWare} produced by
	{Simware, Inc.} in January 1994.  It is used by {LAN} managers
	to automate LAN administration chores on a Novell NetWare
	{server}.

	As a scripting language, REXXWARE is an NLM ({NetWare Loadable
	Module}) that runs on {Novell NetWare} servers.  It includes
	more than 275 NetWare-specific functions, plus the standard
	{REXX} {keyword}s, instructions, built-in functions,
	{flow-control}, tracing, and error trapping and recovery
	features.

	REXXWARE is certified by Novell for use with NetWare.

	E-mail: <rexxware@simware.com>.

	(11 Jan 1995)

RFC

	{Request For Comments}

RFC 1014

	<programming, networking, standard> The {RFC} defining
	{eXternal Data Representation}.

	{(rfc:1014)}.

	(13 Dec 1994)

RFC 1034

	<networking, standard> One of the {RFC}s defining the {Domain
	Name System}.

	{(rfc:1034)}.

	(15 Dec 1997)

RFC 1035

	<networking, standard> One of the {RFC}s defining the {Domain
	Name System}.

	{(rfc:1035)}.

	(15 Dec 1997)

RFC 1058

	<networking, standard> The {RFC} defining {Routing Information
	Protocol}.  Updated by {RFC 1388}.

	{(rfc:1058)}.

	(30 Nov 1994)

RFC 1081

	<messaging, standard> The {RFC} defining {POP3}, {Post Office
	Protocol} version 3.

	{(rfc:1081)}.

	(12 Dec 1994)

RFC 1094

	<standard, networking, storage> The {RFC} defining {Sun
	Microsystems}'s {Network File System} (NFS).

	{(rfc:1094)}.

	(12 Dec 1994)

RFC 1112

	<networking, standard> The {RFC} describing {MBONE}.

	{(rfc:1112)}.

	(11 Nov 1994)

RFC 1119

	<networking, standard> The {RFC} defining {Network Time
	Protocol}.

	{(rfc:1119)}.

	(30 Nov 1994)

RFC 1123

	<networking, standard> The {RFC} "Requirements for Internet
	Hosts Application and Support" which clarifies or changes the
	specification of protocols given in earlier RFCs.

	RFC 1123 defines the terms "MUST", "SHOULD", "MAY",
	"unconditionally compliant", "conditionally compliant".
	Capitals are used to emphasise that the official definition of
	the word is being used.

	MUST or REQUIRED means an absolute requirement for
	conformance.

	SHOULD or RECOMMENDED means the item can be ignored under
	certain circumstances, although the full implications should
	be understood.

	MAY or OPTIONAL means the implementor can choose, usually
	depending on whether it is needed or not.

	Something "unconditionally compliant" meets all the MUST and
	SHOULD requirements, "conditionally compliant" meets all the
	MUST requirements and "not compliant" - does not meet some
	MUST requirement.

	For example, RFC 1123 amends RFC952 to say software MUST
	handle either a letter or a digit as the first character of a
	{hostname}.

	{(rfc:1123)}.

	(13 Jan 1996)

RFC 1156

	<standard> The {RFC} which established the MIB I {Management
	Information Base} standard.

	{(rfc:1156)}.

	(14 Nov 1994)

RFC 1157

	<networking, standard> The {RFC} defining {Simple Network
	Management Protocol}.

	{(rfc:1157)}.

	(14 Nov 1994)

RFC 1171

	<protocol, standard> The {RFC} defining the {Point-to-Point
	Protocol}.

	{(rfc:1171)}.

	(13 Dec 1994)

RFC 1208

	<networking, standard> The {RFC} defining many of the
	network-related terms in this dictionary.

	{(rfc:1208)}.

	["A Glossary of Networking Terms", Jacobsen, O., and D. Lynch,
	RFC 1208, Interop, Inc., March 1991.]

	(06 Aug 1996)

RFC 1213

	<networking, standard> The {RFC} which definied the MIB II
	{Management Information Base}.

	{(rfc:1213)}.

	(14 Nov 1994)

RFC 1267

	<networking, standard> One of the {RFC}s describing {Border
	Gateway Protocol}.

	{(rfc:1267)}.

RFC 1268

	<networking, standard> One of the {RFC}s describing {Border
	Gateway Protocol}.

	{(rfc:1268)}.

RFC 1321

	<messaging, standard> The {RFC} defining the {Message Digest
	5} {algorithm}.

	{(rfc:1321)}.

	(04 Aug 1996)

RFC 1334

	<networking, security, standard, protocol> The {RFC} defining
	{Challenge-Handshake Authentication Protocol} and {Password
	Authentication Protocol}.

	{(rfc:1334)}.

	(23 Mar 1996)

RFC 1341

	<messaging, standard> The June 1992 {RFC} defining
	{Multipurpose Internet Mail Extensions} (MIME).  This {RFC}
	has been superceded by {RFC 1521}.

	{(rfc:1341)}.

	(30 Aug 1997)

RFC 1347

	<networking, protocol> One of the {RFC}s describing the {TUBA}
	{protocol}.

	{(rfc:1347)}.

	(30 Aug 1997)

RFC 1350

	<networking, protocol> The {RFC} defining {TFTP}.

	{(rfc:1350)}.

	(30 Aug 1997)

RFC 1388

	<networking, standard> An update to {RFC 1058}, the {RFC}
	defining {Routing Information Protocol}.

	{(rfc:1388)}.

	(30 Nov 1994)

RFC 1436

	<networking, standard> The {RFC} defining the {Internet}
	{Gopher} {protocol}.

	{(rfc:1436)}.

	(16 Nov 1995)

RFC 1441

	<networking, standard> The {RFC} introducing {SNMP v2}.

	{(rfc:1441)}.

	(23 Nov 1997)

RFC 1442

	<networking, standard> The {RFC} defining {SMI} for {SNMP v2}.

	{(rfc:1442)}.

	(23 Nov 1997)

RFC 1443

	<networking, standard> The {RFC} defining textual conventions
	for {SNMP v2}.

	{(rfc:1443)}.

	(23 Nov 1997)

RFC 1444

	<networking, standard> The {RFC} defining conformance
	statements for {SNMP v2}.

	{(rfc:1444)}.

	(23 Nov 1997)

RFC 1445

	<networking, standard> The {RFC} defining the administrative
	model for {SNMP v2}.

	{(rfc:1445)}.

	(23 Nov 1997)

RFC 1446

	<networking, standard> The {RFC} defining security protocols
	for {SNMP v2}.

	{(rfc:1446)}.

	(23 Nov 1997)

RFC 1447

	<networking, standard> The {RFC} defining {Party MIB} for
	{SNMP v2}.

	{(rfc:1447)}.

	(23 Nov 1997)

RFC 1448

	<networking, standard> The {RFC} defining protocol operations
	for {SNMP v2}.

	{(rfc:1448)}.

	(23 Nov 1997)

RFC 1449

	<networking, standard> The {RFC} defining {transport mappings}
	for {SNMP v2}.

	{(rfc:1449)}.

	(23 Nov 1997)

RFC 1450

	<networking, standard> The {RFC} defining {MIB} for {SNMP v2}.

	{(rfc:1450)}.

	(23 Nov 1997)

RFC 1451

	<networking, standard> The {RFC} defining {Manager to Manger
	MIB}.

	{(rfc:1451)}.

	(23 Nov 1997)

RFC 1452

	<networking, standard> The {RFC} describing coexistance
	between {SNMP} v1 and {SNMP v2}.

	{(rfc:1452)}.

	(15 Feb 1995)

RFC 1475

	<networking, protocol> The {RFC} describing the {TP/IX}
	{protocol}.

	{(rfc:1475)}.

	(03 Apr 1995)

RFC 1508

	<security, standard> One of the {RFC}s defining {GSS-API}.

	{(rfc:1508)}.

	(19 May 1996)

RFC 1509

	<security, standard> One of the {RFC}s defining {GSS-API}.

	{(rfc:1509)}.

	(19 May 1996)

RFC 1520

	<networking, standard> The {RFC} defining {Classless
	Inter-Domain Routing}.

	{(rfc:1520)}.

	(01 Oct 1996)

RFC 1521

	<messaging, standard> The {RFC} defining {Multipurpose
	Internet Mail Extensions} (MIME).  It replaced {RFC 1341}.

	{(rfc:1521)}.

	(23 Nov 1997)

RFC 1526

	<networking, protocol> One of the {RFC}s describing the {TUBA}
	{protocol}.

	{(rfc:1526)}.

	(23 Nov 1997)

RFC 1550

	<networking, protocol> An {RFC} {white paper} on {IPng}.

	{(rfc:1550)}.

	(03 Apr 1995)

RFC 1561

	<networking, protocol> One of the {RFC}s describing the {TUBA}
	{protocol}.

	{(rfc:1561)}.

	(23 Nov 1997)

RFC 1568

	<messaging, standard> An {RFC} defining the {Simple Network
	Paging Protocol} (SNPP) which is designed to support
	{Internet} access to {paging} services such as those based on
	the {Telocator Alphanumeric Protocol}.  See also {RFC 1861}.

	{(rfc:1568)}.

	(24 Jun 1996)

RFC 1630

	<networking, standard> The {RFC} defining the {Universal
	Resource Identifier}.

	{(rfc:1630)}.

	(13 Jan 1995)

RFC 1661

	<networking, standard> The {RFC} defining {Point-to-Point
	Protocol}.

	{(rfc:1661)}.

	(05 Feb 1997)

RFC 1701

	<networking, standard> The {RFC} defining {Generic Routing
	Encapsulation}.

	See also {RFC 1702}.

	{(rfc:1701)}.

	(02 Apr 1997)

RFC 1702

	<networking, standard> The {RFC} defining {Generic Routing
	Encapsulation} over {IP}.

	{(rfc:1702)}.

	(02 Apr 1997)

RFC 1707

	<networking, standard> The {RFC} defining {CATNIP}.

	{(rfc:1707)}.

	(23 Mar 1996)

RFC 1730

	<messaging, standard> The {RFC} defining {IMAP}.

	{(rfc:1730)}.

	(11 Mar 1996)

RFC 1756

	<messaging> The {RFC} describing {Remote Write Protocol}.

	{(rfc:1756)}.

	(08 Sep 1996)

RFC 1777

	<networking, standard> The {RFC} defining {Lightweight
	Directory Access Protocol}.

	{(rfc:1777)}.

	(23 Aug 1996)

RFC 1823

	<networking, standard> The {RFC} defining the {C} language
	{application program interface} to the {Lightweight Directory
	Access Protocol}.

	{(rfc:1823)}.

	(28 Nov 1996)

RFC 1825

	<networking, standard> The {RFC} describing security
	mechanisms for {Internet Protocol} version 4 and {IP version
	6} and the services that they provide.

	{(rfc:1825)}.

	(09 Jul 1997)

RFC 1861

	<networking, standard> The {RFC} defining {Simple Network
	Paging Protocol}.  See also {RFC 1568}.

	{(rfc:1861)}.

	(25 Apr 1997)

RFC 1951

	<standard> The {RFC} describing {deflate} {compression}.

	{(rfc:1951)}.

	(21 Jun 1997)

RFC 1959

	<networking, standard> The {RFC} defining a {URL} format for
	the {Lightweight Directory Access Protocol}.

	{(rfc:1959)}.

	(28 Nov 1996)

RFC 1960

	<networking, standard> The {RFC} defining the format of search
	filters used with the {Lightweight Directory Access Protocol}.

	{(rfc:1960)}.

	(28 Nov 1996)

RFC 2048

	<file format, standard> The {RFC} explaining registration of
	{MIME types}.

	{(rfc:2048)}.

	(11 Feb 1998)

RFC 2068

	<networking, standard> The {RFC} defining {HTTP} version 1.1.

	{(rfc:2068)}.

	(03 May 1997)

RFC 2234

	<standard> The {RFC} defining {Augumented Backus-Naur Form}.

	{(rfc:2234)}.

	(23 Nov 1997)

RFC 792

	<networking, standard> The {RFC} defining {Internet Control
	Message Protocol}.

	{(rfc:792)}.

	(23 Aug 1996)

RFC 822

	<messaging, standard> The {RFC} defining the {Internet}
	standard format for {electronic mail} message headers.  Also
	{STD 11}, evolved from RFC 733.

	{(rfc:822)}.

	(08 Mar 1997)

RFC 826

	<networking, standard> The {RFC} defining the {Address
	Resolution Protocol}.

	{(rfc:826)}.

	(21 Nov 1997)

RFC 903

	<networking, standard> The {RFC} defining {Reverse Address
	Resolution Protocol}.

	{(rfc:903)}.

	(08 Dec 1994)

RFC 959

	<networking, standard> The {RFC} containing the official
	specification of {File Transfer Protocol} (FTP).

	{(rfc:959)}.

	(12 Jan 1995)

RFE

	1. {Request For Enhancement} (compare {RFC}).

	2. (From "Radio Free Europe", {Bellcore} and {Sun}) Radio Free
	Ethernet.

	A system originated by Peter Langston for broadcasting audio
	among Sun {SPARCstation}s over the {Ethernet}.

	(06 Dec 1994)

RFI

	{Radio Frequency Interference}

RFT

	{Request For Technology}

RG58

	<electronics> A common, low-impedance (52 ohm), quarter-inch
	diameter {coaxial cable} used for {10base2} {Ethernet} wiring
	("{cheapernet}").

	(10 Feb 1996)

RGB

	Red, Green, Blue.  The three colours of light which can be
	mixed to produce any other colour.  Coloured images are often
	stored as a sequence of RGB triplets or as separate red, green
	and blue overlays though this is not the only possible
	representation (see {CMYK} and {HSV}).  These colours
	correspond to the three "guns" in a colour {cathode ray tube}
	and to the colour receptors in the human eye.

	Often used as a synonym for colour, as in "RGB monitor" as
	opposed to {monochrome} (black and white).

Rhapsody

	<operating system> {Apple Computer, Inc.}'s next-generation
	{operating system} for {PowerPC} processor-based systems
	capable of running {Mac OS}.  Rhapsody includes four
	components: the Core OS, the {Blue Box} (the implementation of
	the Mac OS within Rhapsody), the {Yellow Box}, and the Advanced
	Mac Look and Feel.

	"Rhapsody for Intel" runs on {Intel} processors [which ones?].
	It includes the Core OS, the {Yellow Box}, and the Advanced
	Mac Look and Feel, but lacks the {Blue Box} and therefore is
	unable to run Mac OS software.

	"Rhapsody Developer Release" is a developer-only release of
	{Rhapsody}, scheduled for release in late 1997.  It will go to
	all members of the Macintosh Developer Program and the Apple
	Media Program worldwide who have signed nondisclosure
	agreements.

	"Rhapsody Premier Release" will be the second release of
	{Rhapsody}, scheduled for early 1998.  It is meant for early
	adopters and will include a partially finished human interface
	and a partial implementation of the {Blue Box}.

	"Rhapsody Unified Release" will be the third release,
	scheduled for mid-1998.  It will be the first public release,
	and it will include the first full implementation of the
	{Rhapsody} human interface and the {Blue Box}.

	{FAQ (http://devworld.euro.apple.com/rhapsody/faqsec1.html)}.

	(15 Oct 1997)

rib site

	<networking> (By analogy with {backbone site}) A {host} with
	an on-demand high-speed link to a {backbone site} that serves
	as a regional distribution point for lots of third-party
	traffic in {electronic mail} and {Usenet} news.

	Compare {leaf site}.

	(30 Nov 1994)

rice box

	(Ham radio slang) Any Asian-made commodity computer,
	especially an {80x86}-based machine built to {IBM
	PC}-compatible {ISA} or {EISA}-bus standards.

	(30 Nov 1994)

Richard Stallman

	Richard M. Stallman.  Founder of the {GNU} project.  He
	resigned from the {AI lab} at {MIT} so he would be free to
	produce {free software} which he could then distribute on his
	own terms.  He went on to establish the {Free Software
	Foundation} to support the production of free software and
	ensure its free distribution.

	E-mail: <rms@gnu.ai.mit.edu>.

	(28 Oct 1994)

rich object

	In {artificial intelligence}, an object which cannot be
	completely described or represented but about which assertions
	can be made.

	(14 Dec 1994)

Rich Text Format

	(RTF) An interchange format from {Microsoft} for exchange of
	documents between {Word} and other document preparation
	systems.

	(08 Dec 1994)

RIFF

	<file format> {Microsoft}'s equivalent to the {Amiga}'s {IFF}
	files format.  RIFF is used for {WAV} and {AVI} files.

	(21 Apr 1995)

RIGAL

	A language for compiler writing.  Data strucures are atoms,
	lists/trees.  Control is based on {pattern matching}.

	["Programming Language RIGAL as a Compiler Writing Tool",
	M.I. Augustson, Inst of Math and CS of Latvia U, 1987].

	(28 Oct 1994)

Rigel

	A {database} language?  Based on {Pascal}.  Listed by
	M.P. Atkinson & J.W. Schmidt in a tutorial presented in
	Zurich, 1989.

	(28 Oct 1994)

right brace

	<character> "}".  {ASCII} character 125.

	Common names: close brace; right brace; right squiggly; right
	squiggly bracket/brace; right curly bracket/brace; {ITU-T}:
	closing brace.  Rare: unbrace; uncurly; rytit ("{" = leftit);
	right squirrelly; {INTERCAL}: bracelet ("{" = embrace).

	Paired with {left brace}

	(30 Mar 1995)

right bracket

	<character> "]".  {ASCII} character 93.

	Common names: right square bracket; {ITU-T}: closing bracket;
	unbracket.  Rare: unsquare; {INTERCAL}: U turn back.

	Paired with {left bracket}.

	(23 Nov 1997)

right parenthesis

	<character> ")".  {ASCII} character 41.

	Common names: right paren; right parenthesis; right; close;
	thesis ("(" = paren); close paren; close parenthesis; right
	parenthesis; right banana.  Rare: already ("(" = so); rparen;
	{ITU-T}: closing parenthesis; close round bracket, right round
	bracket, {INTERCAL}: wane ("(" = wax); unparenthisey ("(" =
	parenthisey); right ear.

	Paired with {left parenthesis}.

	(06 Mar 1995)

Right Thing

	That which is *compellingly* the correct or appropriate thing
	to use, do, say, etc.  Always capitalised, always emphasised
	in speech as though capitalised.  Use of this term often
	implies that in fact reasonable people may disagree.  "What's
	the Right Thing for {Lisp} to do when it sees "(mod a 0)"?
	Should it return "a", or give a divide-by-0 error?"

	Opposite: {Wrong Thing}.

	(28 Oct 1994)

RIP

	{Routing Information Protocol}

RIPE

	{Rseaux IP Europens}

RIPEM

	Riordan's Internet Privacy Enhanced Mail (RIPEM) is a (not yet
	complete, but useful) implementation of Privacy Enhanced Mail
	(PEM).  RIPEM allows your electronic mail to have the four
	security facilities provided by PEM: disclosure protection
	(optional), originator authenticity, message integrity
	measures, and non-repudiation of origin (always).  RIPEM was
	written primarily by Mark Riordan <mrr@scss3.cl.msu.edu>.
	Most of the code is in the public domain, except for the RSA
	routines, which are a library called RSAREF licensed from RSA
	Data Security, Inc.  The current (November 1993) version of
	RIPEM is 1.1a; the current version of the Macintosh port of
	RIPEM is 0.8b1.

RISC

	{Reduced Instruction Set Computer}

RISC OS

	(Reduced Instruction Set Computer Operating System) {Acorn
	Computers}' {operating system} for their {Archimedes} family
	of {personal computer}s.  RISC OS replaced the {Arthur}
	operating system used on the first Archimedeses.  It is
	written in {ARM} {assembly code} and distributed on {ROM} so
	it takes up no disk space and takes no time to load.  It
	supports {cooperative multitasking} with memory management and
	includes a {graphical user interface} or "WIMP".  It is
	written in a highly modular style and makes extensive use of
	{vector}s so it is easy to modify and extend by loading new
	modules in {RAM}.  A large number of {system call}s (called
	"SWIs" - software interrupts) are available to the
	applications programmer and some of these are available as
	user comands via a built-in {command line interpreter}.  RISC
	OS also supported {outline font}s when only {bitmap font}s
	were available on most other {platform}s.

Risc PC

	<computer> The latest addition to {Acorn}'s {Archimedes}
	family of {personal computer}s.  The Risc PC, released in
	April 1994, allows a second processor, e.g. an {Intel 486} or
	a second {ARM}, to share the {bus}, memory and {peripherals}
	with the main processor.  It also offers significantly
	increased speed with an {ARM610} {RISC} processor and full
	24-bit colour graphics support.

	{(http://www.cs.nott.ac.uk/~pjg/RiscPC/)}

	(05 Feb 1996)

RISC System/6000

	<computer> (Or "RS/6000") {IBM}'s current {RISC}-based {Unix}
	computer.  The RS/6000, announced in 1990, replaced the
	{RT-PC}.  It runs {AIX} 3.x and 4.x.  Most models have an
	{MCA} bus.  A wide range of models are available.

	(06 Apr 1995)

RJ11

	<hardware, communications> An American-style telephone jack
	with six possible connections.  Often found on the back of
	US-manufactured {modems} or for connection to a {leased line}.

	(09 May 1995)

RJ-45

	<hardware> A {serial} connector which looks very much like a
	standard telephone connector, except it houses eight wires
	instead of four.  RJ-45s are not typically found on
	{computers} or normal serial equipment, but because they are
	so small they are often used on devices such as {terminal
	servers} that have many {ports}.

	(09 Dec 1996)

RKM

	{Rom Kernel Manual}

RL

	(MUD community) Real Life.

	"Firiss laughs in RL" means that Firiss's player is laughing.

	Opposite: {VR}.

	(09 May 1995)

rl

	Kent Wittenburg <kentw@bellcore.com>.

	The RL files contain code for defining {relational grammar}s
	and using them in a bottom-up parser to recognise and/or parse
	expressions in Relational Languages.

	The approach is a simplification of that described in
	Wittenburg, Weitzman, and Talley (1991), Unification-Based
	Grammars and Tabular Parsing for Graphical Languages, Journal
	of Visual Languages and Computing 2:347-370.  This code is
	designed to support the definition and parsing of Relational
	Languages, which are characterised as sets of objects standing
	in user-defined relations.

	Correctness and completeness is independent of the order in
	which the input is given to the parser.  Data to be parsed can
	be in many forms as long as an interface is supported for
	queries and predicates for the relations used in grammar
	productions.

	To date, this software has been used to parse recursive
	pen-based input such as math expressions and {flow chart}s; to
	check for data integrity and design conformance in databases;
	to automatically generate constraints in drag-and-drop style
	graphical interfaces; and to generate graphical displays by
	parsing relational data and generating output code.

	requires:	Common Lisp

	ports: Allegro Common Lisp 4.1, Macintosh Common Lisp 2.0

	{(ftp://flash.bellcore.com/rl/)}

	(1992/10/31)

RLaB

	A {MATLAB}-like matrix-oriented programming language/toolbox.
	RLaB focusses on creating a good experimental environment (or
	laboratory) in which to do matrix mathematics.  Currently RLaB
	has numeric scalars and matrices (real and complex), and
	string scalars, and matrices.  RLaB also contains a list
	variable type, which is a heterogeneous associative array.

	Version 0.95 includes an interpreter, libraries and
	documentation.  E-mail: Ian Searle <ians@eskimo.com>.
	{(ftp://evans.ee.adfa.oz.au)}.  Requires {GNUPLOT},
	lib[IF]77.a (from f2c).  Ported to many {platform}s including
	{Unix}, {OS/2},	{Amiga}.

	(27 Oct 1993).

RLE

	{run-length encoding}

RLF

	{Reuse Library Framework} of the {DoD}.

RLL

	Representation Language Language.  A {frame language}.  "A
	Representation Language Language", R. Greiner and D.B. Lenat,
	Proc AAAI-80, 1980.

rlogin

	<networking, tool> (Remote login) The {4.2BSD} {Unix} utility
	to allow a user to log in on another {host} via a network.
	Rlogin communicates with a {daemon} on the remote host.

	{Unix manual page}: rlogin(1).

	See also {telnet}.

	(12 Jan 1997)

RMAG

	{Recursive Macro Actuated Generator}

RMAIL

	<messaging> A {MUA} written in {Emacs Lisp} to run within
	{Emacs}.

	(21 Mar 1996)

RMI

	{Remote Method Invocation}

RM-ODP

	<programming> The {ISO Reference Model} for {Open
	Distributed Environments}.

	{(http://pepper.open.ac.uk/~armsarms/sa.html)}

	(23 Nov 1995)

RMON

	{Remote Monitor}, Remote Monitoring.

RMS

	1. {Record Management Services}.

	2. {Richard Stallman}.

RNF

	{root normal form}

roach

	[Bell Labs] To destroy, especially of a data structure.
	Hardware gets {toast}ed or {fried}, software gets roached.

ROADS

	Subsystem of ICES.  Sammet 1969, p.616.

Robert T. Morris

	The creator of the "{Internet Worm}" that wreaked havoc on
	many {Internet} systems for a day or two.

	Morris, the son of an NSA spook, did some jail time for
	releasing the worm.

	(12 Jan 1995)

ROBEX

	ROBot EXapt.  Aachen Tech College.  Based on EXAPT.  Version:
	ROBEX-M for micros.

RoboHELP

	<tool> A {Microsoft} {Windows} Help authoring tool from {Blue
	Sky Software}.  Used with {Microsoft Word} to create Help
	files for inclusion in a Windows application or for stand
	alone use.

	(19 Jan 1997)

robot

	1. <hardware> A mechanical device for performing a task which
	might otherwise be done by a human, e.g. spraying paint on
	cars.

	See also {cybernetics}.

	2. <chat> An {IRC} or {MUD} user who is actually a program.
	On IRC, typically the robot provides some useful service.
	Examples are {NickServ}, which tries to prevent random users
	from adopting {nick}s already claimed by others, and MsgServ,
	which allows one to send {asynchronous} messages to be
	delivered when the recipient signs on.  Also common are
	"annoybots", such as KissServ, which perform no useful
	function except to send cute messages to other people.
	Service robots are less common on {MUD}s; but some others,
	such as the "Julia" robot active in 1990--91, have been
	remarkably impressive {Turing test} experiments, able to pass
	as human for as long as ten or fifteen minutes of
	conversation.

	3. <World-Wide Web> (Or "crawler", "spider") A program that
	automatically explores the {World-Wide Web} by retrieving a
	document and recursively retrieving some or all the documents
	that are referenced in it.  This is in contrast with normal
	{web browsers} that are operated by a human and don't
	automatically follow links other than {inline images} and
	{URL redirection}.

	The algorithm used to pick which references to follow strongly
	depends on the purpose of the robot.  {Index}-building robots
	usually retrieve a significant part of the references.  The
	other extreme is robots that try to validate the references in
	a set of documents; these usually do not retrieve any of the
	links apart from redirections.

	{Home
	(http://info.webcrawler.com/mak/projects/robots/robots.html)}.

	See also {standard for robot exclusion}.

	(23 Mar 1996)

robust

	Said of a system that has demonstrated an ability to recover
	gracefully from the whole range of exceptional inputs and
	situations in a given environment.  One step below
	{bulletproof}.  Carries the additional connotation of elegance
	in addition to just careful attention to detail.  Compare
	{smart}, opposite: {brittle}.

Rockwell Protocol Interface

	(RPI) A cost-cutting feature of some {modem}s allowing data
	{compression} and {error correction} (e.g. {ITU-T} {V.42bis},
	{V.42}) to be provided in software instead of hardware.

	Usually an RPI modem comes with RPI-aware software (e.g. the
	low-end RPI models of Supra come with the {COMit} which
	supports RPI, providing {MNP} 2,4,5,7, V.42 and V.42bis).  RPI
	is not supported by many commercial packages nor by current
	releases of popular {shareware} communication programs
	({Telix} v3.22 and {Telemate} v4.12).  {ProComm Plus} for
	{Windows 2.0} will support RPI.

	Currently {Rockwell} produce two classes of RPI chip set.  The
	original is capable of 2400 bit/s data, 9600 bit/s class
	1-only fax.  The newer one is capable of 14400 bit/s data/fax.
	Currently there are no RPI chipset from Rockwell supporting
	speeds higher than 14400 bit/s.

	(01 Jul 1994)

Rocky Mountain Basic

	<language> The {BASIC} language used by {Hewlett Packard} on
	their {680x0}-based computers.  Rocky Mountain Basic is good
	for interfaces to {IEEE 488} controls and contains many
	mathematical and matrix functions.  It has about 600 commands.
	Typical applications include automatic test stations.

	(28 Apr 1996)

rococo

	<jargon, abuse> {Baroque} in the extreme.  Used to imply that
	a program has become so encrusted with the software equivalent
	of gold leaf and curlicues that they have completely swamped
	the underlying design.  Called after the later and more
	extreme forms of Baroque architecture and decoration prevalent
	during the mid-1700s in Europe.  Alan Perlis said: "Every
	program eventually becomes rococo, and then rubble."

	Compare {critical mass}.

	(06 Apr 1996)

roff

	Text formatting language/{interpreter} associated with {Unix}.
	(See {groff}, {nroff}, {troff}).

rogue

	<games> [Unix] A Dungeons-and-Dragons-like game using
	character graphics, written under BSD Unix and subsequently
	ported to other Unix systems.  The original BSD "curses(3)"
	screen-handling package was hacked together by Ken Arnold to
	support "rogue(6)" and has since become one of Unix's most
	important and heavily used application libraries.  Nethack,
	Omega, Larn, and an entire subgenre of computer dungeon games
	all took off from the inspiration provided by "rogue(6)".  See
	also {nethack}.

ROM

	<hardware> {Read Only Memory}.

ROME

	An experimental {object-oriented} language.

	["The Point of View Notion for {Multiple Inheritance}",
	B. Carre et al, SIGPLAN Notices 25(10):312-321 (OOPSLA/ECOOP
	'90) (Oct 1990)].

	(30 Nov 1994)

Rom Kernel Manual

	<publication> (RKM) A series of books or files for developers
	for the {Amiga} computer, containing information about the
	{operating system} {kernel} stored in {ROM}.

	(06 Apr 1996)

room

	{channel}

ROOM Methodology

	{Real-Time Object-Oriented Modeling}

room-temperature IQ

	<abuse> (IBM) 80 or below.  Used in describing the expected
	intelligence range of the {luser}.  "Well, but how's this
	interface going to play with the room-temperature IQ crowd?"
	This is a much more insulting phrase in countries that use
	Celsius thermometers.

	See {drool-proof paper}.

	(06 Apr 1996)

root

	1. The {Unix} {superuser} account (with user name "root" and
	user ID 0) that overrides file permissions.  The term {avatar}
	is also used.  By extension, the privileged system-maintenance
	login on any {operating system}.

	See {root mode}, {go root}, {wheel}.

	(27 Oct 1994)

	2. Short for {root directory}.

	(21 Nov 1996)

root directory

	<file system> The topmost node of a {hierarchical file
	system}.

	(21 Nov 1996)

root mode

	Synonym with {wizard mode} or "wheel mode".  Like these, it is
	often generalised to describe privileged states in systems
	other than {operating system}s.

Root Normal Form

	(RNF) {Head Normal Form} in {graph rewriting}.

root version

	The initial value of an object in a {change management}
	system.

ROSE

	{Remote Operations Service Element}

Rosette

	<language> A {concurrent} {object-oriented language} from
	{MCC}.

	[Details?]

	(26 Nov 1997)

Roskind grammars

	<tool> {Yacc}-based {parsers} for {C} and {C++} by Jim Roskind
	<jar@netscape.com>.  It does not use the %prec and %assoc YACC
	features so conflicts are never hidden.  The C {grammar} has
	only one {shift-reduce conflict}, the C++ grammar has a few
	more.  With {byacc} it can produce graphical {parse trees}
	automatically.  The C grammar conforms to {ANSI C} and the C++
	grammar supports {cfront} 2.0 constructs.  The current version
	is cpp5 (cf2.0).

	{(ftp://ftp.infoseek.com/pub/c++grammar/)}

	(04 Jan 1996)

rot13

	/rot ther'teen/ [{Usenet}: from "rotate alphabet 13 places"],
	v. The simple Caesar-cypher encryption that replaces each
	English letter with the one 13 places forward or back along
	the alphabet, so that "The butler did it!" becomes "Gur ohgyre
	qvq vg!"  Most {Usenet} news reading and posting programs
	include a rot13 feature.  It is used to enclose the text in a
	sealed wrapper that the reader must choose to open - e.g. for
	posting things that might offend some readers, or {spoiler}s.
	A major advantage of rot13 over rot(N) for other N is that it
	is self-inverse, so the same code can be used for encoding and
	decoding.

rotary debugger

	(Commodore) Essential equipment for those late-night or
	early-morning debugging sessions.  Mainly used as sustenance
	for the hacker.  Comes in many decorator colours, such as
	Sausage, Pepperoni, and Garbage.

	(11 Jan 1995)

rotational latency

	The time for the start of the required {sector} on a disk to
	appear underneath the read/write head.  The worst case is
	where it has just passed the head when the request is
	received.  For a {disk drive} with N heads per surface,
	rotating at R revolutions per minute, the average rotational
	latency will be

		L = 30/NR seconds.

	Rotational latency is one component of {access time}.

ROTFL

	<chat> Rolls on the floor laughing.

	Used in a {MUD}, {news}.

	See also {ROTFLMAO}, {ROTFLOL}.

	(22 Feb 1996)

ROTFLMAO

	<chat> Rolling on the floor laughing my ass off.  An extreme
	form of {ROTFL}.

	(01 Mar 1997)

ROTFLOL

	<chat> Rolling on the floor laughing out loud.  See {ROTFL}.

	(06 Mar 1997)

round-robin

	<algorithm> A {scheduling} {algorithm} in which processes are
	activated in a fixed cyclic order.  Those which cannot proceed
	because they are waiting for some event (e.g. termination of a
	{child process} or an input/output operation) simply return
	control to the scheduler.  The virtue of round-robin
	scheduling is its simplicity - only the processes themselves
	need to know what they are waiting for or how to tell if it
	has happened.  However, if a process goes back to sleep just
	before the event for which it is waiting occurs then the event
	will not get handled until all the other processes have been
	activated.

	Compare {priority interrupt}.

	(10 Feb 1996)

round tape

	<storage, jargon> Industry-standard 1/2-inch {magnetic tape}
	(7- or 9-track) on traditional circular reels.

	See {macrotape}, opposite: {square tape}.

	(03 Feb 1996)

round-trip time

	(RTT) A measure of the current delay on a network, found by
	timing a packet bounced off some remote host.  This can be
	done with {ping} -s.

	(30 Nov 1994)

route

	The sequence of {host}s, {router}s, {bridge}s, {gateway}s and
	other devices that network traffic takes from its source to
	its destination.  Also, a possible path from a given host to
	another host or destination.  You can find the route from your
	computer to another using the program {traceroute} on {Unix}.

routed

	/root dee/ Route Daemon.  A program which runs under {4.2BSD}
	{Unix} systems and derivatives to propagate routes among
	machines on a {local area network}, using the {Routing
	Information Protocol}.  See also {gated}.

router

	<networking> A device which forwards {packets} between
	{networks}.  The forwarding decision is based on {network
	layer} information and routing tables, often constructed by
	routing {protocols}.

	{Unix manual page}: route(8).

	See also {bridge}, {gateway}, {Exterior Gateway Protocol},
	{Interior Gateway Protocol}.

	(14 Dec 1994)

routine

	{subroutine}

routing

	The process, performed by a {router}, of selecting the correct
	interface and next {hop} for a {packet} being forwarded.

	See also {Exterior Gateway Protocol}, {Interior Gateway
	Protocol}.

	(14 Dec 1994)

routing domain

	A set of {router}s exchanging routing information within an
	{administrative domain}.

	(14 Dec 1994)

Routing Information Protocol

	1. <networking> (RIP) A {distance vector}, as opposed to {link
	state}, {routing} {protocol}.  RIP is an {Internet} {standard}
	{Interior Gateway Protocol} defined in {STD} 34, {RFC 1058}
	and updated by {RFC 1388}.

	See also {Open Shortest Path First}.

	2. <networking> (RIP) A companion {protocol} to {IPX} for
	exchange of {routing} information in a {Novell} {network}.
	RIP has been partly superseded by {NLSP}.  It is not related
	to the {Internet} protocol of the same name.

	(04 Mar 1997)

Routing Table Maintenance Protocol

	<protocol> (RTMP) A {protocol} used by {AppleTalk} to ensure
	that all {routers} on the network have consistent routing
	information.

	(11 May 1997)

Royal Veterinary and Agricultural University

	Address: Thorvaldsensvej 40, DK-1871 Frederiksberg C, Denmark.

	(12 Dec 1994)

RPC

	{Remote Procedure Call}

RPG

	Report Program Generator.

	A system produced by {IBM} in 1965 for easy production of
	sophisticated large system reports.

	Versions: RPG II, RPG III, RPG/400 for the IBM {AS/400}.
	{MS-DOS} versions by {California Software} and {Lattice}.

	See also {CL}, {OCL}.

	(12 Jan 1995)

RPI

	{Rockwell Protocol Interface}

RPL

	Reverse Polish LISP.  Language used by HP-28 and HP-48
	calculators.

RPL-1

	Data reduction language.  Proc SJCC 30:571-575, AFIPS (Spring
	1967).

RPM

	<operating system, tool> A {Unix} {package}-management system
	that helps installation of software packages; similar to an
	install program.

	[More details?  Reference?  Expansion?]

	(07 Mar 1996)

RPN

	{Reverse Polish Notation}

Rpondez s'il vous plait

	<chat> (RSVP) French for "please reply", commonly found
	(abbreviated) on invitations.

	(02 Dec 1996)

RPT

	Unify.  Report Writer Language.

RRL

	{Remote Reference Layer}

RRS

	An early definition of {Scheme}.  Revised in {R2RS}.

	["The Revised Report on Scheme", G.L. Steele et al, AI Memo
	452, MIT, Jan 1978].

	(28 Oct 1994)

	[Was the original "Report on Scheme" published?]

RS

	1. <character> {Record Separator}

	2. <standard> Recommended Standard, a series of {EIA}
	{standards} including {RS-232}.

RS-232

	<communications, standard> The most common {asynchronous}
	{serial line} {standard}.  RS-232 is the {EIA} equivalent of
	{ITU-T} {V.24} and {V.28}.

	RS-232 specifies the gender and pin use of connectors, but not
	their physical type.  {RS-423} specifies the electrical
	signals.  25-way {D-type} connectors are common but often only
	three wires are connected - one ground (pin seven) and one for
	data in each direction.  The other pins are mostly related to
	{hardware handshaking} between sender and receiver and to
	{carrier detection} on {modem}s, inoperative circuits, busy
	conditions etc.

	The standard classifies equipment as either {Data
	Communications Equipment} (DCE) or {Data Terminal Equipment}
	(DTE).  A DCE RS-232 interface should have a female connector
	and should transmit on pin two and receive on pin three.  DTE
	should have a male connector and should should transmit on pin
	three (TD) and receive on pin two (RD).  Originally DCE was a
	{modem} and DTE was either a computer or a {terminal}.  The
	terminal and computer were connected (via RS-232) to two
	modems, which were connected via a telephone line.

	The above arrangement allows a computer or terminal to be
	connected to a modem with a straight-through (2-2, 3-3) cable.
	It is not uncommon though to find equipment with the wrong sex
	connector and/or with pins two and three the wrong way round,
	requiring the insertion of a cable or adaptor wired as a
	{gender mender} or {null modem}.  Such a cable is also
	required when connecting a computer directly to a terminal or
	to another computer when not using modems.

	(24 Dec 1995)

RS-232C

	<communications, standard> The {EIA} equivalent of {ITU-T}
	{standard} {V.24}.

	The {EIA} RS-232C electrical signal is unbalanced +/- 5 to +/-
	12V, {polar} {non return to zero} and handles data speeds up
	to 19.2 kilobits per second.

	[Difference from RS-232?]

	(02 Mar 1995)

RS-232D

	<communications, standard> The {EIA} equivalent of {ITU-T}
	{standard} {V.28}.

	[Difference from RS-232/RS-232C?]

	(02 Mar 1995)

RS-422

	<communications, standard> An {EIA} {serial line} {standard}
	which specifies {differential driver}s and recievers.

	[Details?]

	(14 Mar 1995)

RS-423

	A common electrical specification for the signals on a {serial
	line}.  When no data is being transmitted, the serial line is
	at a logical zero (+3 to +15 Volts).  A logical one is
	represented as a signal level of -15 to -3 Volts.  In
	practise, one often finds signals which switch between
	nominally +4.5 and +0.5 Volts.  Such signals are large by
	modern standards, and because the impedance of the circuits is
	relatively high, the allowable {bit rate} is modest.

	The data is preceded by a {start bit} which is always a
	logical one.  There may be seven or eight bits of data,
	possibly followed by an even or odd {parity} bit and one or
	two {stop bit}s.

	A "break" condition is a continuous logical one on the line
	which is what would be observed if nothing was connected.

	{RS-232} specifies the physical connector normally used for
	RS-423 lines.

	(02 Feb 1995)

RS-449

	<communications, standard> (Recommended Standard 449) An {EIA}
	recommendation for an interface between 37-pin to 9-pin.

	[Where is it used?]

	(07 Jun 1996)

RS-485

	<communications, standard> An {EIA} standard for serial
	communications over wires.  It allows multiple devices to
	share a line.  It is also used in {Differential SCSI}.

	(28 Mar 1995)

RS6000

	{RS/6000}

RS/6000

	{RISC System/6000}

RSA

	<cryptography, company> (The initials of the authors)

	1. {RSA Data Security, Inc.}

	2. Their {cryptography} systems, especially {RSA encryption}.

	The RSA {algorithm} was first described in the paper:

	[R. Rivest, A. Shamir, L. Adleman, "A Method for Obtaining
	Digital Signatures and Public-key Cryptosystems". CACM 21,2;
	1978]

	(21 Mar 1995)

RSA Data Security, Inc.

	<cryptography, company> (After Rivest, Shamir, Adleman - see
	{RSA}) A recognised world leader in {cryptography}, with
	millions of copies of its software encryption and
	authentication installed and in use worldwide.  RSA's
	technologies are the global {de facto standard} for {public
	key cryptography} and {digital signature}s, and are part of
	existing and proposed {standard}s for the {Internet}, {ITU-T},
	{ISO}, {ANSI}, {PKCS}, {IEEE} and business and financial
	networks around the world.

	{(http://www.rsa.com/)}

	(08 Dec 1994)

RSA encryption

	<cryptography> Is a {public-key cryptosystem} for both
	{encryption} and {authentication}; it was invented in 1977 by
	Ron Rivest, Adi Shamir, and Leonard Adleman.

	It works as follows: take two large {prime number}s, p and q,
	and find their product n = pq; n is called the modulus.
	Choose a number, e, less than n and {relatively prime} to
	(p-1)(q-1), and find its inverse, d, mod (p-1)(q-1), which
	means that ed = 1 mod (p-1)(q-1); e and d are called the
	public and private exponents, respectively.  The public key is
	the pair (n,e); the private key is d.  The factors p and q
	must be kept secret, or destroyed.  It is difficult
	(presumably) to obtain the private key d from the public key
	(n,e).  If one could factor n into p and q, however, then one
	could obtain the private key d.  Thus the entire security of
	RSA is predicated on the assumption that factoring is
	difficult; an easy method for factoring large prime numbers
	would break RSA.

	(29 Mar 1995)

RSCS

	<communications> {Remote Spooling Communication
	Subsystem}.

	(04 Feb 1996)

Rseaux Associs pour la Recherche Europenne

	(RARE) An association of national and international European
	networks and users.

	See also {CCIRN}.

	(30 Nov 1994)

Rseaux IP Europens

	(RIPE) A collaboration between European networks which use the
	{TCP/IP} {protocol} suite to provide {Internet} services.

	(30 Nov 1994)

RS flip-flop

	{SR flip-flop}

rsh

	Remote shell.

	A {Berkeley Unix} networking command to execute a given
	command on a remote {host}, passing it input and receiving its
	output.  Rsh communicates with a {daemon} on the remote host.
	It is sometimes called remsh to avoid confusion with the
	{restricted shell}, also called "rsh".

	{Unix manual page}: rsh(1).

	(08 Dec 1994)

RSI

	1. {Repetative Strain Injury}.

	2. {Research Systems, Inc.}.

RSL

	RAISE Specification Language.  (RAISE = Rigorous Approach to
	Industrial Software Engineering).  A wide-spectrum
	specification and design language developed by {ESPRIT}
	Project 315 at {CRI} A/S, Denmark.  Systems may be modular,
	{concurrent}, {nondeterministic}.  Specifications may be
	{applicative} or {imperative}, explicit or implicit, abstract
	or concrete.

	["The RAISE Specification Language", RAISE Language Group, P-H
	1992, ISBN 0-13-752833-7].

RSN

	{Real Soon Now}

rstat

	{netstat}

RSTS/E

	<operating system> A {multi-user}, general purpose
	{timesharing} {operating system} produced by {Mentec, Inc.}
	and licensed bu {Digital Equipment Corporation}.

	RSTS/E can be used for interactive timesharing, {batch
	processing}, indirect command file processing, program
	development using a variety of languages and tools, and a wide
	variety of special purpose applications.  Up to 127 concurrent
	{terminal} users in both local and remote locations through
	multi-terminal services can interact with application tasks.
	Without multi-terminal services, 63 users are the maximum.
	Tasks can share computational, storage, and input/output
	services provided by the RSTS/E system.

	{Full description
	(http://pyrfect.ico.olivetti.com/SPD/13-01-37.txt)}

	(04 Jun 1996)

RSVP

	1. <chat> {Rpondez s'il vous plait}.

	2. <body> {Revolutionary Surrealist Vandal Party}.

	(02 Dec 1996)

RTBM

	({Unix}) Read The Bloody Manual.

	{Commonwealth Hackish} variant of {RTFM}.  RTBM is often the
	entire text of the first reply to a question from a {newbie};
	the *second* would escalate to "RTFM".

	(08 Dec 1994)

RTC++

	A {real-time} extension of {C++}.

	["Object-Oriented Real-Time Language Design: Constructs for
	Timing Constraints", Y. Ishikawa et al, SIGPLAN Notices
	25(10):289-298 (OOPSLA/ECOOP '90) (Oct 1990)].

	(08 Dec 1994)

RT-CDL

	Real-Time Common Design Language.  Real-time language for the
	design of reliable reactive systems.  "RT-CDL: A Real-Time
	Description Language and Its Semantics", L.Y. Lin et al, 11th
	World Computer Congress IFIP '89 pp.19-26 (Sep 1989).

RTEE

	Real Time Engineering Environment: a set of CASE tools
	produced by Westmount Technology B.V.

RTF

	{Rich Text Format}

RTFAQ

	({Usenet}, primarily written, by analogy with {RTFM}) Read the
	FAQ!

	An exhortation that the person addressed ought to read the
	newsgroup's {FAQ list} before posting questions.

	(08 Dec 1994)

RTFB

	<jargon> (By analogy with {RTFM}) Read The Fucking
	Binary.

	Used when neither documentation nor source for the problem at
	hand exists, and the only thing to do is use some debugger or
	monitor and directly analyse the assembler or even the
	{machine code}.

	"RTFB" is the least pejorative of the RTF? forms, the anger is
	directed at the absence of both source *and* adequate
	documentation rather than at the person asking a question.

	(20 Aug 1995)

RTFM

	<jargon> Read The Fucking Manual.

	1. (Sometimes bowdlerised to "- Fine -") Used by {guru}s to
	brush off questions they consider trivial or annoying.

	Compare {Don't do that, then!}.

	2. Used when reporting a problem to indicate that you aren't
	just asking out of {randomness}.  "No, I can't figure out how
	to interface Unix to my toaster, and yes, I have RTFM."
	Unlike sense 1, this use is considered polite.

	See also {FM}, {RTFAQ}, {RTFB}, {RTFS}, {RTM}, all of which
	mutated from RTFM, and compare {UTSL}.

	[Earliest use?]

	(29 Jul 1995)

RTFS

	1. Read The Fucking Source.  Variant form of {RTFM}, used when
	the problem at hand is not necessarily obvious and not
	answerable from the manuals - or the manuals are not yet
	written and maybe never will be.  For even trickier
	situations, see {RTFB}.  Unlike RTFM, the anger inherent in
	RTFS is not usually directed at the person asking the
	question, but rather at the people who failed to provide
	adequate documentation.

	2. Read The Fucking Standard; this oath can only be used when
	the problem area (e.g. a language or operating system
	interface) has actually been codified in a ratified standards
	document.  The existence of these standards documents (and the
	technically inappropriate but politically mandated compromises
	that they inevitably contain, and the impenetrable {legalese}
	in which they are invariably written, and the unbelievably
	tedious bureaucratic process by which they are produced) can
	be unnerving to hackers, who are used to a certain amount of
	ambiguity in the specifications of the systems they use.
	(Hackers feel that such ambiguities are acceptable as long as
	the {Right Thing} to do is obvious to any thinking observer;
	sadly, this casual attitude towards specifications becomes
	unworkable when a system becomes popular in the {Real World}.)
	Since a hacker is likely to feel that a standards document is
	both unnecessary and technically deficient, the deprecation
	inherent in this term may be directed as much against the
	standard as against the person who ought to read it.

RTI

	Return from interrupt.  An instruction {mnemonic} on many
	computers including the {6502} and {6800}.  The variant "RETI"
	is found among former {Zilog Z80} hackers (almost nobody
	programs these things in {assembly code} anymore).

	(31 Oct 1994)

RTL

	1. <hardware> {Resistor-Transistor Logic}.

	2. <language> {Register Transfer Language}.

RTL/1

	<language> Real Time Language.

	A {real-time} language written by by J.G.P. Barnes of {ICI} in
	1971.  It was the predecessor of {RTL/2}.

	["Real Time Languages for Process Control", J.G.P. Barnes,
	Computer J 15(1):15-17, Feb 1972].

	(09 Nov 1994)

RTL/2

	Real Time Language.

	A small {real-time} language based on {ALGOL 68}, with
	{separate compilation} designed by J.G.P. Barnes of ICI in
	1972 as a successor to {RTL/1}.

	A program is composed of separately compilable modules called
	"bricks" which may be datablocks, procedures or stack.  A
	stack is a storage area for use as a workspace by a task.  The
	language is {block-structured} and {weakly typed}.  Simple
	types are byte, int, frac and real.  There are no {Boolean}s.
	Compound types may be formed from {array}s, {record}s and
	{ref}s (pointers).  There are no user-defined types.  Control
	statements are if-then-elseif-else-end, for-to-by-do-rep,
	block-endblock, switch, goto, and label variables.

	["RTL/2: Design and Philosophy", J.G.P. Barnes, Hayden & Son,
	1976].

RTM

	1. [{Usenet}] Read The Manual.  Politer variant of {RTFM}.

	2. Robert T. Morris Jr.

	The perpetrator of the great Internet worm of 1988 (see {Great
	Worm}); villain to many, naive hacker gone wrong to a few.
	Morris claimed that the worm that brought the Internet to its
	knees was a benign experiment that got out of control as the
	result of a coding error.  After the storm of negative
	publicity that followed this blunder, Morris's username on ITS
	was hacked from RTM to {RTFM}.

	(31 Mar 1995)

RTMP

	{Routing Table Maintenance Protocol}

RT-PC

	<computer> RISC Technology Personal Computer.

	(Commonly, but incorrectly, known as the "PC-RT", later
	changed to just "RT") {IBM}'s first {RISC}-based {Unix}
	computer.  The RT-PC was the predecessor to IBM's {RS/6000}.
	It ran {AIX} 1.x and 2.x and had a {PC-AT} bus and IBM's
	{ROMP} {microprocessor}.  It was withdrawn from the marketing
	around 1989 or 1990.

	(06 Apr 1995)

RTSA

	{real-time structured analysis}

RTT

	{Round-Trip Time}

RTTI

	{Run Time Type Information}

Ruby

	1. A {relational language} designed by Jones and M. Sheeran in
	1986 for describing and designing circuits (a {hardware
	description language}).  Ruby programs denote {binary
	relation}s and programs are built-up inductively from
	primitive relations using a pre-defined set of {relational
	operator}s.  Ruby programs also have a geometric
	interpretation as networks of primitive relations connected by
	wires, which is important when layout is considered in circuit
	design.

	Ruby has been continually developed since 1986, and has been
	used to design many different kinds of circuits, including
	{systolic array}s, {butterfly network}s and arithmetic
	circuits.

	{(ftp://ftp.cs.chalmers.se/pub/misc/ruby/)} (129.16.225.66).
	E-mail: <graham@cs.chalmers.se>.

	["Ruby - A Language of Relations and Higher-Order Functions",
	M. Sheeran, Proc 3rd Banff Workshop on Hardware Verification,
	Springer 1990].

	(27 Oct 1994)

	2. One of five pedagogical languages based on {Markov
	algorithm}s, used in Higman's report (below).  The other
	languages are {Brilliant}, {Diamond}, {Nonpareil} and {Pearl}.

	["Nonpareil, a Machine Level Machine Independent Language for
	the Study of Semantics", B. Higman, ULICS Intl Report No ICSI
	170, U London (1968)].

	(27 Oct 1994)

rude

	[WPI] 1. Badly written or functionally poor, e.g. a program
	that is very difficult to use because of gratuitously poor
	design decisions.  Opposite: {cuspy}.

	2. Anything that manipulates a shared resource without regard
	for its other users in such a way as to cause a (non-fatal)
	problem.  Examples: programs that change tty modes without
	resetting them on exit, or windowing programs that keep
	forcing themselves to the top of the window stack.  Compare
	{all-elbows}.

	(27 Oct 1994)

RUFL

	Rhodes University Functional Language.  A {Miranda}-like
	functional language from Rhodes University, Grahamstown, South
	Africa with a {SPARC} {code generator}.

	(27 Oct 1994)

RUNCIBLE

	Early system for mathematics on {IBM 650}.

	See also {FORTRUNCIBLE}, {IT}.

	[Listed in CACM 2(5):16 (May 1959)].

	(27 Oct 1994)

runes

	1. Anything that requires {heavy wizardry} or {black art} to
	{parse}: core dumps, {JCL} commands, {APL} or code in a
	language you haven't a clue how to read.  Not quite as bad as
	{line noise}, but close.

	Compare {casting the runes}, {Great Runes}.

	2. Special display characters (for example, the high-half
	graphics on an {IBM PC}).

runic

	<jargon> Obscure, consisting of {runes}.

	{VMS} fans sometimes refer to {Unix} as "RUnix".  Unix fans
	return the compliment by expanding VMS to "Very Messy Syntax"
	or "Vachement Mauvais Systeme" (French; literally "Cowlike Bad
	System", idiomatically "Bitchy Bad System").

	(17 Sep 1996)

run-length encoding

	A kind of {compression} {algorithm} which replaces sequences
	("runs") of consecutive repeated characters (or other units of
	data) with a single character and the length of the run.  This
	can either be applied to all input characters, including runs
	of length one, or a special character can be used to introduce
	a run-length encoded group.  The longer and more frequent the
	runs are, the greater the compression that will be achieved.
	This technique is particularly useful for encoding black and
	white {image}s where the data units would be single bit
	{pixel}s.

	(27 Oct 1994)

run time

	1. The elapsed time to perform a computation on a particular
	computer.

	2. The amount of time a its processor actually spent on one
	process and not on other processes or overhead (see
	{time-sharing}).

run-time

	(Or "runtime", occassionally "{run time}").

	1. The period of time during which a program is being
	executed, as opposed to compile time or load time.

	2. {run-time support}.

run-time environment

	<operating system> A collection of subroutines and
	{environment variable}s that provide commonly used functions
	and data for a program while it is running.

	Compare {run-time support}.

	(22 Mar 1995)

run-time error

	<programming> An {error} in the execution of a program which
	occurs at {run-time}, as opposed to a {compile-time error}.

	A good programming language should, among other things, aim to
	replace run-time errors by compile-time errors.  Language
	features such as {strong typing} help.

	A good program should attempt to avoid run-time errors by, for
	example, checking that their input data is sensible.  Where
	this is not possible, the program should attempt to detect the
	error and handle it gracefully rather than just exiting via
	the language or operating system's default handler.  Here
	again, a good language will make this easy to do (or at least
	possible).

	See also {abort}, {core dump}, {GPF}.

	(13 Jan 1997)

run-time library

	<operating system, programming, library> A file containing
	routines which are linked with a program at {run-time} rather
	than at {compile-time}.  The advantage of such {dynamic
	linking} is that only one copy of the library needs to be
	stored, rather than a copy being included with each
	{executable} that refers to it.  This can greatly reduce the
	disk space occupied by programs.  Furthermore, it means that
	all programs immediately benefit from changes (e.g. {bug}
	fixes) to the single copy of the library without requiring
	recompilation.  Since the library code is normally classified
	as read-only to the {memory management} system, it is possible
	for a single copy of the library to be loaded into memory and
	shared by all active programs, thus reducing {RAM} and
	{virtual memory} requirements and program load time.

	(16 Jul 1997)

Run-Time Support

	<programming> (RTS, run-time) Library code and processes which
	support software written in a particular language running on a
	particular {platform}.

	(24 Jul 1996)

Run-Time Type Information

	<compiler> (RTTI) Facilities included in {C++} {compilers} to
	allow the {type} of an object to be determined at {run time}.

	This facility, found in good C++ compilers and some other
	{high level languages}, adds type information to memory
	resident objects (i.e. type name or unique type-id).  This
	allows the {runtime system} to determine if an object is of a
	specific type, for example, to ensure that a {cast} of an
	object is valid.

	(15 Apr 1996)

ruptime

	{Unix} {Berkeley networking} command to report the status of
	all hosts on the net.  See also rwho.  See ruptime(1N).

RUSH

	1. <language> An interactive dialect of {PL/I}, related to
	{CPS}, dated about 1966.  The name is the abbreviation of
	"Remote Use of Shared Hardware".

	["Introduction to RUSH", Allen-Babcock Computing 1969.  Sammet
	1969, p.309.]

	2. <language> A {high-level language} that closely resembles
	{Tcl} but aimed to provide substantially faster execution.
	See {An Introduction to the Rush Language
	(ftp://ginsberg.cs.berkeley.edu/pub/papers/asah/rush-tcl94.ps.gz)}
	by Adam Sah, Jon Blow, and Brian Dennis (1994).

	(17 Dec 1996)

Russell

	(After {Bertrand Russell}) A compact, {polymorphical}ly typed
	{functional language} by A. Demers & J. Donahue with {bignum}s
	and {continuation}s.  Types are themselves {first-class}
	values and may be passed as arguments.

	{(ftp://parcftp.xerox.com/pub/russell/russell.tar.Z)}

	["An Informal Description of Russell", H. Boehm et al, Cornell
	CS TR 80-430, 1980].

	["Understanding Russell: A First Attempt", J.G. Hook in LNCS
	173, Springer].

	(27 Mar 1995)

Russell, Bertrand

	{Bertrand Russell}

Russell's Attic

	<mathematics> An imaginary room containing {countably many}
	pairs of shoes (i.e. a pair for each {natural number}), and
	countably many pairs of socks.  How many shoes are there?
	Answer: countably many (map the left shoes to even numbers and
	the right shoes to odd numbers, say).  How many socks are
	there?  Also countably many, we want to say, but we can't
	prove it without the {Axiom of Choice}, because in each pair,
	the socks are indistinguishable (there's no such thing as a
	left sock).  Although for any single pair it is easy to select
	one, we cannot specify a general method for doing this.

	(29 Mar 1995)

Russell's Paradox

	<mathematics> A logical contradiction in {set theory}
	discovered by the British mathematician {Bertrand Russell}
	(1872-1970).  If R is the set of all sets which don't contain
	themselves, does R contain itself?  If it does then it doesn't
	and vice versa.

	The paradox stems from the acceptance of the following
	{axiom}: If P(x) is a property then

		{x : P}

	is a set.  This is the {Axiom of Comprehension} (actually an
	{axiom schema}).  By applying it in the case where P is the
	property "x is not an element of x", we generate the paradox,
	i.e. something clearly false.  Thus any theory built on this
	axiom must be inconsistent.

	In {lambda-calculus} Russell's Paradox can be formulated by
	representing each set by its {characteristic function} - the
	property which is true for members and false for non-members.
	The set R becomes a function r which is the negation of its
	argument applied to itself:

		r = \ x . not (x x)

	If we now apply r to itself,

		r r = (\ x . not (x x)) (\ x . not (x x))
		    = not ((\ x . not (x x))(\ x . not (x x)))
		    = not (r r)

	So if (r r) is true then it is false and vice versa.

	An alternative formulation is: "if there is a (clean-shaven)
	barber of Seville who shaves all men in Seville who don't
	shave themselves, and only those men, who shaves the barber?"
	This can be taken simply as a proof that no such barber can
	exist whereas seemingly obvious axioms of {set theory} suggest
	the existence of the paradoxical set R.

	{Zermelo Frnkel set theory} is one "solution" to this
	paradox.  Another, {type theory}, restricts sets to contain
	only elements of a single type, (e.g. integers or sets of
	integers) and no type is allowed to refer to itself so no set
	can contain itself.

	A message from Russell induced {Frege} to put a note in his
	life's work, just before it went to press, to the effect that
	he now knew it was inconsistent but he hoped it would be
	useful anyway.

	(25 Mar 1995)

rusty iron

	<jargon, hardware> Synonym {tired iron}.  It has been claimed
	that this is the inevitable fate of {water MIPS}.

	(25 Mar 1995)

rusty memory

	<storage, humour> {Mass-storage} that uses iron-oxide-based
	magnetic media (especially {magnetic tape} and the
	pre-{Winchester} {removable disk packs} used in {washing
	machines}).

	Compare {donuts}.

	(20 Jul 1997)

RUTH

	Harrison <D.A.Harrison@newcastle.ac.uk>.  Real-time language
	based on LispKit.  Uses timestamps and real-time clocks.

	["RUTH: A Functional Language for Real-Time Programming",
	D. Harrison in PARLE: Parallel Architectures and Languages
	Europe, LNCS 259, Springer 1987, pp.297-314].

rwho

	<networking> The {Berkeley Unix} networking command to report
	who is logged in on all {hosts} on the local {network
	segment}.

	{Unix manual page}: rwho(1).

	(08 Sep 1996)

RWP

	{Remote Write Protocol}

Rx

	A pattern matcher compatible with {GNU} {regex}, but generally
	faster.

	Version 0.05, released 18 May 1994, contained substantial
	changes from the version last distributed with GNU {sed}.
	These changes provide low-level support for searching across
	arbitrarily fragmented strings and suspendable searches.

S

	<language> A statistical analysis language from {AT&T}.

	["S: An Interactive Environment for Data Analysis and
	Graphics", Richard A. Becker, Wadsworth 1984].

	(21 Jan 1997)

s///

	<chat> s/{foo}/{bar}/ is an idiom which means "I didn't mean
	to type 'foo', I meant to type 'bar'".

	Its use in {talk} systems, especially {irc}, comes from the
	use of s/// as a substitution operator in {Perl}, {sed} and
	{ed}.  In these languages and tools, s/foo/bar/ would replace
	any substring matching the {regular expression} "foo" with the
	string "bar".

	(16 Mar 1997)

S3

	ALGOL-like system language for the ICL 2900 computer.

SA

	{Structured Analysis}

SA-110

	<processor> The first member of the {StrongARM} family
	resulting from the architecture license agreement between
	{Digital Equipment Corporation} and {Advanced RISC Machines}
	Ltd. (ARM), developer of the {ARM} 32-bit {RISC} architecture.

	The SA-110 combines ARM's low-power architecture with
	Digital's processor design and {CMOS} process expertise, and
	is targetted at {embedded} consumer electronics products.

	(06 Feb 1996)

SAA

	{Systems Application Architecture}

Saber-C

	Renamed to {CodeCenter}.

Saber-C++

	Renamed to {ObjectCenter}.

SAC

	An early system on the {Datatron 200} series.

	[Listed in CACM 2(5):16 (May 1959)].

	(12 Apr 1995)

SAC-1

	<mathematics, tool> An early {symbolic mathematics} system,
	written in {FORTRAN} by G.E. Collins.

	[Proc 2nd Symp Symb Alg Manip pp.144-152 (1971)].

	(12 Apr 1995)

SAC2

	<mathematics, tool> A {symbolic mathematics} system which
	compiles to {FORTRAN} or {Common Lisp}.

	E-mail: <jma@poly.polytechnique.fr>.

	(12 Apr 1995)

sacadm

	<operating system> A {Unix} (Solaris?) command for
	administering both {ttymon} and {listen}.  It can be used to
	add and remove, start and stop, and enable and disable {port
	monitors}.

	[What does "sac" stand for?]

	(21 Dec 1997)

sacred

	Reserved for the exclusive use of something (an extension of
	the standard meaning).  Often means that anyone may look at
	the sacred object, but clobbering it will screw whatever it is
	sacred to.  The comment "Register 7 is sacred to the interrupt
	handler" appearing in a program would be interpreted by a
	hacker to mean that if any *other* part of the program changes
	the contents of register 7, dire consequences are likely to
	ensue.

SAD

	{Systems Analysis Definition}

SAD SAM

	Query language by Lindsay.  Sammet 1969, p.669.

SADT

	Structured Analysis and Design Technique.

SAFARI

	ON-line text editing system by MITRE.  Sammet 1969, p.685.

safe

	A safe program analysis is one which will not reach invalid
	conclusions about the behaviour of the program.  This may
	involve making safe approximations to properties of parts of
	the program.  A safe approximation is one which gives less
	information.

	For example, strictness analysis aims to answer the question
	"will this function evaluate its argument"?.  The two possible
	results are "definitely" and "don't know".  A safe
	approximation for "definitely" is "don't know".  The two
	possible results correspond to the two sets: "the set of all
	functions which evaluate their argument" and "all functions".
	A set can be safely approximated by another which contains it.

safety

	See {safe}, {safety-critical system}.

safety-critical system

	A computer, electronic or electromechanical system whose
	failure may cause injury or death to human beings.  E.g. an
	aircraft or nuclear power station control system.  Common
	tools used in the design of safety-critical systems are
	{redundancy} and {formal methods}.

	See also {aeroplane rule}.

saga

	[WPI] A {cuspy} but {bogus} raving story about N {random}
	broken people.

	Here is a classic example of the saga form, as told by {Guy
	Steele} (GLS):

	Jon L. White (login name JONL) and I (GLS) were office mates
	at {MIT} for many years.  One April, we both flew from Boston
	to California for a week on research business, to consult
	face-to-face with some people at {Stanford}, particularly our
	mutual friend {Richard Gabriel} (RPG).

	RPG picked us up at the San Francisco airport and drove us
	back to {Palo Alto} (going {logical} south on route 101,
	parallel to {El Camino Bignum}).  Palo Alto is adjacent to
	Stanford University and about 40 miles south of San Francisco.
	We ate at The Good Earth, a "health food" restaurant, very
	popular, the sort whose milkshakes all contain honey and
	protein powder.  JONL ordered such a shake - the waitress
	claimed the flavour of the day was "lalaberry".  I still have
	no idea what that might be, but it became a running joke.  It
	was the colour of raspberry, and JONL said it tasted rather
	bitter.  I ate a better tostada there than I have ever had in
	a Mexican restaurant.

	After this we went to the local Uncle Gaylord's Old Fashioned
	Ice Cream Parlor.  They make ice cream fresh daily, in a
	variety of intriguing flavours.  It's a chain, and they have a
	slogan: "If you don't live near an Uncle Gaylord's - MOVE!"
	Also, Uncle Gaylord (a real person) wages a constant battle to
	force big-name ice cream makers to print their ingredients on
	the package (like air and plastic and other non-natural
	garbage).  JONL and I had first discovered Uncle Gaylord's the
	previous August, when we had flown to a computer-science
	conference in {Berkeley}, California, the first time either of
	us had been on the West Coast.  When not in the conference
	sessions, we had spent our time wandering the length of
	Telegraph Avenue, which (like Harvard Square in Cambridge) was
	lined with picturesque street vendors and interesting little
	shops.  On that street we discovered Uncle Gaylord's Berkeley
	store.  The ice cream there was very good.  During that August
	visit JONL went absolutely bananas (so to speak) over one
	particular flavour, ginger honey.

	Therefore, after eating at The Good Earth - indeed, after
	every lunch and dinner and before bed during our April visit
	--- a trip to Uncle Gaylord's (the one in Palo Alto) was
	mandatory.  We had arrived on a Wednesday, and by Thursday
	evening we had been there at least four times.  Each time,
	JONL would get ginger honey ice cream, and proclaim to all
	bystanders that "Ginger was the spice that drove the Europeans
	mad!  That's why they sought a route to the East!  They used
	it to preserve their otherwise off-taste meat."  After the
	third or fourth repetition RPG and I were getting a little
	tired of this spiel, and began to paraphrase him: "Wow!
	Ginger!  The spice that makes rotten meat taste good!"  "Say!
	Why don't we find some dog that's been run over and sat in the
	sun for a week and put some *ginger* on it for dinner?!"
	"Right!  With a lalaberry shake!"  And so on.  This failed to
	faze JONL; he took it in good humour, as long as we kept
	returning to Uncle Gaylord's.  He loves ginger honey ice
	cream.

	Now RPG and his then-wife KBT (Kathy Tracy) were putting us up
	(putting up with us?) in their home for our visit, so to thank
	them JONL and I took them out to a nice French restaurant of
	their choosing.  I unadventurously chose the filet mignon, and
	KBT had je ne sais quoi du jour, but RPG and JONL had lapin
	(rabbit).  (Waitress: "Oui, we have fresh rabbit, fresh
	today."  RPG: "Well, JONL, I guess we won't need any
	*ginger*!")

	We finished the meal late, about 11 P.M., which is 2 A.M
	Boston time, so JONL and I were rather droopy.  But it wasn't
	yet midnight.  Off to Uncle Gaylord's!

	Now the French restaurant was in Redwood City, north of Palo
	Alto.  In leaving Redwood City, we somehow got onto route 101
	going north instead of south.  JONL and I wouldn't have known
	the difference had RPG not mentioned it.  We still knew very
	little of the local geography.  I did figure out, however,
	that we were headed in the direction of Berkeley, and
	half-jokingly suggested that we continue north and go to Uncle
	Gaylord's in Berkeley.

	RPG said "Fine!" and we drove on for a while and talked.  I
	was drowsy, and JONL actually dropped off to sleep for 5
	minutes.  When he awoke, RPG said, "Gee, JONL, you must have
	slept all the way over the bridge!", referring to the one
	spanning San Francisco Bay.  Just then we came to a sign that
	said "University Avenue".  I mumbled something about working
	our way over to Telegraph Avenue; RPG said "Right!" and
	maneuvered some more.  Eventually we pulled up in front of an
	Uncle Gaylord's.

	Now, I hadn't really been paying attention because I was so
	sleepy, and I didn't really understand what was happening
	until RPG let me in on it a few moments later, but I was just
	alert enough to notice that we had somehow come to the Palo
	Alto Uncle Gaylord's after all.

	JONL noticed the resemblance to the Palo Alto store, but
	hadn't caught on.  (The place is lit with red and yellow
	lights at night, and looks much different from the way it does
	in daylight.)  He said, "This isn't the Uncle Gaylord's I went
	to in Berkeley!  It looked like a barn!  But this place looks
	*just like* the one back in Palo Alto!"

	RPG deadpanned, "Well, this is the one *I* always come to when
	I'm in Berkeley.  They've got two in San Francisco, too.
	Remember, they're a chain."

	JONL accepted this bit of wisdom.  And he was not totally
	ignorant - he knew perfectly well that University Avenue was
	in Berkeley, not far from Telegraph Avenue.  What he didn't
	know was that there is a completely different University
	Avenue in Palo Alto.

	JONL went up to the counter and asked for ginger honey.  The
	guy at the counter asked whether JONL would like to taste it
	first, evidently their standard procedure with that flavour,
	as not too many people like it.

	JONL said, "I'm sure I like it.  Just give me a cone."  The
	guy behind the counter insisted that JONL try just a taste
	first.  "Some people think it tastes like soap."  JONL
	insisted, "Look, I *love* ginger.  I eat Chinese food.  I eat
	raw ginger roots.  I already went through this hassle with the
	guy back in Palo Alto.  I *know* I like that flavour!"

	At the words "back in Palo Alto" the guy behind the counter
	got a very strange look on his face, but said nothing.  KBT
	caught his eye and winked.  Through my stupor I still hadn't
	quite grasped what was going on, and thought RPG was rolling
	on the floor laughing and clutching his stomach just because
	JONL had launched into his spiel ("makes rotten meat a dish
	for princes") for the forty-third time.  At this point, RPG
	clued me in fully.

	RPG, KBT, and I retreated to a table, trying to stifle our
	chuckles.  JONL remained at the counter, talking about ice
	cream with the guy b.t.c., comparing Uncle Gaylord's to other
	ice cream shops and generally having a good old time.

	At length the g.b.t.c. said, "How's the ginger honey?"  JONL
	said, "Fine!  I wonder what exactly is in it?"  Now Uncle
	Gaylord publishes all his recipes and even teaches classes on
	how to make his ice cream at home.  So the g.b.t.c. got out
	the recipe, and he and JONL pored over it for a while.  But
	the g.b.t.c. could contain his curiosity no longer, and asked
	again, "You really like that stuff, huh?"  JONL said, "Yeah,
	I've been eating it constantly back in Palo Alto for the past
	two days.  In fact, I think this batch is about as good as the
	cones I got back in Palo Alto!"

	G.b.t.c. looked him straight in the eye and said, "You're *in*
	Palo Alto!"

	JONL turned slowly around, and saw the three of us collapse in
	a fit of giggles.  He clapped a hand to his forehead and
	exclaimed, "I've been hacked!"

	[My spies on the West Coast inform me that there is a close
	relative of the raspberry found out there called an
	"ollalieberry" - ESR]

	[Ironic footnote: it appears that the {meme} about ginger vs.
	rotting meat may be an urban legend.  It's not borne out by an
	examination of mediaeval recipes or period purchase records
	for spices, and appears full-blown in the works of Samuel
	Pegge, a gourmand and notorious flake case who originated
	numerous food myths. - ESR]

	(08 Dec 1994)

sagan

	/say'gn/ [Carl Sagan's TV series "Cosmos"; think "billions and
	billions"] A large quantity of anything.  "There's a sagan
	different ways to tweak EMACS."  "The US Government spends
	sagans on bombs and welfare - hard to say which is more
	destructive."

SAGE

	1. {Systems Administrators Guild}.

	2. {Strategic Air Ground Environment}.

	(28 Nov 1995)

SAIC

	{Home (http://www.saic.com)}.

	(21 Mar 1996)

SAID

	{Security Association ID}

SAIL

	/sayl/, not /S-A-I-L/ 1. The Stanford Artificial Intelligence
	Laboratory.  An important site in the early development of
	LISP; with the MIT AI Lab, BBN, CMU, XEROX PARC, and the Unix
	community, one of the major wellsprings of technical
	innovation and hacker-culture traditions (see the {WAITS}
	entry for details).  The SAIL machines were shut down in late
	May 1990, scant weeks after the MIT AI Lab's ITS cluster was
	officially decommissioned.

	2. Stanford Artificial Intelligence Language.  Dan Swinehart &
	Bob Sproull, Stanford AI Project, 1970.  A large ALGOL 60-like
	language for the DEC-10 and DEC-20.  Its main feature is a
	symbolic data system based upon an associative store
	(originally called LEAP).  Items may be stored as unordered
	sets or as associations (triples).  Processes, events and
	interrupts, contexts, backtracking and record garbage
	collection.  Block- structured macros.  "Recent Developments
	in SAIL - An ALGOL-based Language for Artificial
	Intelligence", J. Feldman et al, Proc FJCC 41(2), AFIPS (Fall
	1972).  (See MAINSAIL).

	The Stanford Artificial Intelligence Language used at SAIL
	(sense 1).  It was an ALGOL 60 derivative with a coroutining
	facility and some new data types intended for building search
	trees and association lists.

	3. Early system on Larc computer.  Listed in CACM 2(5):16 (May
	1959).

SAINT

	Symbolic Automatic INTegrator.

	A {symbolic mathematics} program written in {Lisp} by
	J. Slagle at {MIT} in 1961.

	[Sammet 1969, p. 410].

	(08 Dec 1994)

SAL

	1. {Single Assignment Language}.

	2. Simple Actor Language.

	A minimal {actor} language, used for pedagogical purposes in:

	["Actors, A Model of Concurrent Computation in Distributed
	Systems", G. Agha, MIT Press 1986].

	(08 Dec 1994)

	3. SPARK Annotation Language.

	{ICL}, Ltd.  Used in the verification of {SPARK} programs
	against {Z} specifications.

	(08 Dec 1994)

SALEM

	["SALEM - A Programming System for the Simulation of Systems
	Described by Partial Differential Equations", S.M. Morris et
	al, Proc SJCC 33(1), 1968].

	(08 Dec 1994)

salescritter

	/sayls'kri"tr/ Pejorative hackerism for a computer
	salesperson.  Hackers tell the following joke:

	Q. What's the difference between a used-car dealer and a
	computer salesman?

	A. The used-car dealer knows he's lying.  [Some versions add:
	...and probably knows how to drive.]

	This reflects the widespread hacker belief that salescritters
	are self-selected for stupidity (after all, if they had brains
	and the inclination to use them, they'd be in programming).
	The terms "salesthing" and "salesdroid" are also common.

	Compare {marketroid}, {suit}, {droid}.

	(08 Dec 1994)

S-ALGOL

	Orthogonal data structures on ALGOL 60.  "S-Algol Language
	Reference Manual", R. Morrison, TR CS/79/1 U St Andrews, 1979.
	"An Introduction to Programming with S-Algol", A.J. Cole &
	R. Morrison, Cambridge U Press 1982.

SALT

	1. Symbolic Assembly Language Trainer.  Assembly-like language
	implemented in BASIC by Kevin Stock, now at Encore in France.

	2. Sam And Lincoln Threaded language.  A threaded extensible
	variant of BASIC.  "SALT", S.D. Fenster et al, BYTE (Jun 1985)
	p.147.

salt

	A tiny bit of near-random data inserted where too much
	regularity would be undesirable; a data {frob} (sense 1).  For
	example, the Unix crypt(3) manual page mentions that "the salt
	string is used to perturb the DES algorithm in one of 4096
	different ways."

salt mines

	Dense quarters housing large numbers of programmers working
	long hours on grungy projects, with some hope of seeing the
	end of the tunnel in N years.  Noted for their absence of
	sunshine.  Compare {playpen}, {sandbox}.

salt substrate

	[MIT] Collective noun used to refer to potato chips, pretzels,
	saltines, or any other form of snack food designed primarily
	as a carrier for sodium chloride.  From the technical term
	"chip substrate", used to refer to the silicon on the top of
	which the active parts of integrated circuits are deposited.

sam

	A multi-file {screen editor} with structural {regular
	expression}s.  Sam runs under the {X Window System}.

SAM76

	A {macro} language by Claude Kagan descended from {TRAC}.
	There is a version for {CP/M}.

	[Dr Dobbs J ca 1977].

Samba

	<networking> Samba is a free suite of programs which implement
	the {Server Message Block} (SMB) protocol.

	Originally developed for {Unix} by Andrew Tridgell at the
	{Australian National University}, the Samba {server} allows
	files and printers on the {host} {operating system} to be
	shared with {clients} such as {Windows for Workgroups}, {DOS},
	{OS/2}, {Windows NT}, and others.

	For example, instead of using {telnet} to log in to a Unix
	machine to edit a file there, a {Windows 95} user might
	connect a drive in the Windows {Explorer} to a Samba server on
	the Unix machine and edit the file in a Windows editor.

	A Unix client called smbclient, built from the same code base,
	allows {ftp}-like access to SMB resources.

	Samba is available for many Unix variants, OS/2, and {VMS}.
	Porting to {Novell Netware} is in progress (August 1996).

	smblib is a {portable} generic library for making SMB calls
	for implementing {client/server} functions from within any
	program.  {Linux} implements a complete filesystem (based on
	smbclient) so by default Linux users have full access to
	resources on {LAN Server}, Windows NT and {LAN Manager}
	networks.

	{Home (http://samba.canberra.edu.au/pub/samba)}.
	{(ftp://samba.anu.edu.au/pub/samba)}.  {FAQ
	(http://lake.canberra.edu.au/pub/samba/docs/samba.faq.html)}.
	{History
	(ftp://nimbus.anu.edu.au/pub/tridge/samba/docs/history)}.

	(17 Dec 1996)

SAME

	{Standard ANSI Module language with Extensions}

same-day service

	<humour, operating system> An ironic term used to describe
	long response time, particularly with respect to {MS-DOS}
	{system calls} (which ought to require only a tiny fraction of
	a second to execute).  Such response time is a major incentive
	for programmers to write programs that are not {well-behaved}.

	See also {PC-ism}.

	(17 Dec 1996)

SAMeDL

	{SQL} {Ada} Module Description Language.  Used to interface
	{Ada} {application program}s to {SQL}-based {DBMS}s.

	E-mail: Marc Graham <marc@sei.cmu.edu>.
	{(ftp://ajpo.sei.cmu.edu/public/atip/samedl/)}.

	["Rationale for SQL Ada Module Description Language SAMeDL",
	SEI-92-TR-016].

samizdat

	(Russian, literally "self publishing") The process of
	disseminating documentation via underground channels.
	Originally referred to photocopy duplication and distribution
	of banned books in the former Soviet Union; now refers by
	obvious extension to any less-than-official promulgation of
	textual material, especially rare, obsolete, or
	never-formally-published computer documentation.  Samizdat is
	obviously much easier when one has access to high-bandwidth
	networks and high-quality laser printers.  Note that samizdat
	is properly used only with respect to documents which contain
	needed information (see also {hacker ethic}) but which are for
	some reason otherwise unavailable, but *not* in the context of
	documents which are available through normal channels, for
	which unauthorised duplication would be unethical copyright
	violation.

	See {Lions Book} for a historical example.

	(23 Mar 1995)

samurai

	A hacker who hires out for legal cracking jobs, snooping for
	factions in corporate political fights, lawyers pursuing
	privacy-rights and First Amendment cases, and other parties
	with legitimate reasons to need an electronic locksmith.  In
	1991, mainstream media reported the existence of a loose-knit
	culture of samurai that meets electronically on BBS systems,
	mostly bright teenagers with personal micros; they have
	modelled themselves explicitly on the historical samurai of
	Japan and on the "net cowboys" of William Gibson's {cyberpunk}
	novels.  Those interviewed claim to adhere to a rigid ethic of
	loyalty to their employers and to disdain the vandalism and
	theft practiced by criminal crackers as beneath them and
	contrary to the hacker ethic; some quote Miyamoto Musashi's
	"Book of Five Rings", a classic of historical samurai
	doctrine, in support of these principles.

	See also {Stupids}, {social engineering}, {cracker}, {hacker
	ethic}, and {dark-side hacker}.

sandbender

	[IBM] A person involved with silicon lithography and the
	physical design of {integrated circuit}s.  Compare
	{ironmonger}, {polygon pusher}.

sandbox

	1. Common term for the R&D department at many software and
	computer companies (where hackers in commercial environments
	are likely to be found).  Half-derisive, but reflects the
	truth that research is a form of creative play.  Compare
	{playpen}.  (In the UK this would be "sandpit").

	2. Synonym {link farm}.

Sandman

	The {DoD} requirements that led to {APSE}.

sanity check

	1. The act of checking a piece of code (or anything else,
	e.g. a {Usenet} posting) for completely stupid mistakes.
	Implies that the check is to make sure the author was sane
	when it was written; e.g. if a piece of scientific software
	relied on a particular formula and was giving unexpected
	results, one might first look at the nesting of parentheses or
	the coding of the formula, as a "sanity check", before looking
	at the more complex I/O or data structure manipulation
	routines, much less the algorithm itself.  Compare {reality
	check}.

	2. A run-time test, either validating input or ensuring that
	the program hasn't screwed up internally (producing an
	inconsistent value or state).

Santa Cruz Operation

	(SCO) A supplier of {Unix} systems for {Intel}
	{microprocessor}s.  They supply {Xenix} and {Open Desktop}.

	Founded in 1979, SCO became a public company in May, 1993 and
	trades on the Nasdaq National Market System under the symbol
	SCOC.  SCO maintains its world headquarters in Santa Cruz,
	California, USA; a European headquarters in Watford, England;
	a Government Systems Group in Reston, Virginia; and offices in
	Asia, Australia, Canada, Latin America, and throughout Europe
	and the United States.  In February 1993, SCO acquired {IXI}
	Limited of Cambridge, England, the leading supplier of {Unix}
	System windowing software.

	{(http://websco.sco.com/)}

	(28 Oct 1994)

	[Addresses?]

SAP

	1. <company> {SAP AG}.

	2. <protocol> {Service Advertising Protocol}.

	3. <networking> {Service Access Point}.

	4. <language> {Symbolic Assembler Program}.

	(13 Jan 1996)

SAP AG

	<company> (Systeme Anwendungen Producte in der Daten
	Verarbeitung - German for "Systems Applications Products in
	Data Processing") A company from Germany that sells the
	leading suite of {client-server} business software.  The US
	branch is called SAP America.

	{Home (http://www.sap.com/)}.

	[Details?]

	(08 Feb 1998)

SAPI

	1. <programming> {Speech Application Programming Interface}.

	2. <programming> {Scheduling Application Programming
	Interface}.

	3. <networking> {Service Access Point Identifier}.

	(03 Oct 1996)

SAS

	Statistical Analysis System.

	A statistical and matrix handling language with {PL/I}-like
	{syntax}.

	["A User's Guide to SAS", A.J. Barr, SAS Inst 1976].

	(12 Dec 1994)

SASD

	{Structured Analysis, Structured Design}

SASE

	{Specific Application Service Element}.  Opposite: {CASE}.

SASI

	{Small Computer System Interface}

SASL

	Single ASsignment Language or Saint Andrews Static Language.

	(Not to be confused with {SISAL}).  A {functional programming}
	language designed by Professor {David Turner} in 1976.

	SASL is a derivative of {ISWIM} with infinite data
	structures. It is fully {lazy} but weakly typed.  It was
	designed for teaching functional programming, with very simple
	syntax.  A version of the {expert system} {EMYCIN} has been
	written in SASL.

	Example syntax:

		def fac n =
		   n = 0 -> 1 ; n x fac(n-1)

	{(ftp://a.cs.uiuc.edu/uiuc/kamin.distr/distr/sasl.p)}.
	See also {Kamin's interpreters}.

	["A New Implementation Technique for Applicative Languages",
	D.A. Turner, Soft Prac & Exp 8:31-49 (1979)].

SASL+LV

	Unifies logic and functional programming.  A more complete
	version of FGL+LV, in SASL syntax.  "Combinator Evaluations of
	Functional Programs with Logical Variables", G. Bage et al, TR
	UUCS-87-027, U Utah, Oct 1987.

SASL-YACC

	A version of {Yacc} written in {SASL} by Simon Peyton-Jones.

SATAN

	<networking, security, tool> Security Administrator Tool for
	Analyzing Networks.

	A tool written by Dan Farmer and Wietse Venema which remotely
	probes systems via the network and stores its findings in a
	database.  The results can be viewed with an {HTML} {browser}
	such as {Mosaic} or {Netscape}.  SATAN requires {Perl} 5.000
	or better.

	In its simplest mode, SATAN gathers as much information about
	remote hosts and networks as possible by examining such
	network services as {finger}, {NFS}, {NIS}, {FTP} and {TFTP},
	{rexd}, and other services.  The information gathered includes
	the presence of various network information services as well
	as potential security flaws - usually in the form of
	incorrectly setup or configured network services, well-known
	bugs in system or network utilities, or poor or ignorant
	policy decisions.  It can then either report on this data or
	use a simple rule-based system to investigate any potential
	security problems.  Users can then examine, query, and analyze
	the output with an {HTML} {browser}, such as {Mosaic},
	{Netscape}, or {Lynx}.  While the program is primarily geared
	towards analysing the security implications of the results, a
	great deal of general network information can be gained when
	using the tool - network topology, network services running,
	and types of hardware and software being used on the network.

	SATAN can also be used in exploratory mode.  Based on the
	initial data collection and a user configurable ruleset, it
	will examine the avenues of trust and dependency and iterate
	further data collection runs over secondary hosts.  This not
	only allows the user to analyse his own network, but also to
	examine the real implications inherent in network trust and
	services and help them make reasonably educated decisions
	about the security level of the systems involved.

	{Home (http://www.fish.com/dan/satan.html)}.

	{(http://web.indstate.edu/~cckeg/security/satan/satan_documentation.html)}.

	E-mail: <satan@fish.com>.

	(10 Apr 1995)

Sather

	<language> /Say-ther/ (Named after the Sather Tower at {UCB},
	as opposed to the Eiffel Tower).

	An interactive {object-oriented} language designed by Steve
	M. Omohundro at {ICSI} in 1991.  Sather has simple {syntax},
	similar to {Eiffel}, but it is non-proprietary and faster.

	Sather 0.2 was nearly a subset of Eiffel 2.0, but Sather 1.0
	adds many distinctive features: parameterised {class}es,
	{multiple inheritance}, statically-checked {strong typing},
	{garbage collection}.  The compiler generates {C} as an
	{intermediate language}.  There are versions for most
	{workstation}s.

	Sather attempts to retain much of {Eiffel}'s theoretical
	cleanliness and simplicity while achieving the efficiency of
	{C++}.  The compiler generates efficient and portable C code
	which is easily integrated with existing code.

	A variety of development tools including a debugger and
	{browser} based on {gdb} and a {GNU Emacs} development
	environment have also been written.  There is also a {class
	library} with several hundred classes that implement a variety
	of basic data structures and numerical, geometric,
	connectionist, statistical, and graphical abstractions.  The
	authors would like to encourage contributions to the library
	and hope to build a large collection of efficient,
	well-written, well-tested classes in a variety of areas of
	computer science.

	Sather runs on {Sun-4}, {HP9000}/300, {Decstation} 5000,
	{MIPS}, {Sony News} 3000, {Sequent}/{Dynix}, {SCO} {SysV}R3.2,
	{NeXT}, {Linux}.

	See also {dpSather}, {pSather}, {Sather-K}.

	{(ftp://ftp.icsi.berkeley.edu/pub/sather)}

	E-mail: <sather-admin@icsi.berkeley.edu>.

	Mailing list: sather-request@icsi.berkeley.edu.

	(26 Apr 1995)

Sather-K

	<language> Karlsruhe Sather.

	A sublanguage of {Sather} used for introductory courses in
	{object-oriented design} and {typesafe programming}.

	E-mail: <trapp@karlsruhe.gmd.de>.

	(11 Nov 1994)

satisfiability problem

	A problem used as an example in {complexity theory}.  It can
	be stated thus:

	 Given a Boolean expression E, decide if there is some
	 assignment to the variables in E such that E is true.

	A {Boolean} expression is composed of Boolean variables,
	(logical) negation (NOT), (logical) {conjunction} (AND) and
	parentheses for grouping.  The satisfiability problem was the
	first problem to be proved to be {NP-complete} (by Cook).

	["Introduction to Automata Theory, Languages, and Computation"
	by Hopcroft and Ullman, pub. Addison-Wesley].

	(11 Nov 1994)

Saturday-night special

	(From police slang for a cheap handgun) A {quick-and-dirty}
	program or feature {kluge}d together during off hours, under a
	deadline, and in response to pressure from a {salescritter}.
	Such hacks are dangerously unreliable, but all too often sneak
	into a production release after insufficient review.

	(11 Nov 1994)

SAVE

	An {assembler} for the {Burroughs 220} by Melvin Conway (see
	{Conway's Law}).  The name "SAVE" didn't stand for anything,
	it was just that you lost fewer card decks and listings
	because they all had SAVE written on them.

	(16 Jan 1995)

say

	A human may "say" things to a computer by typing them on a
	terminal.  "To list a directory verbosely, say "ls -l"."
	Tends to imply a {newline}-terminated command (a "sentence").

	A computer may "say" things to you, even if it doesn't have a
	speech synthesiser, by displaying them on a terminal in
	response to your commands.  This usage often confuses
	{mundane}s.

SB AWE32

	<multimedia, hardware> A standard {SB16 MultiCD} {sound card}
	with the {EMU8000} "Advanced WavEffect" music synthesizer
	{integrated circuit}.  The card includes all the standard SB16
	features as well as the {Advanced Signal Processor} and
	multiple interfaces supporting {Creative}, {Mitsumi} and
	{Sony} {CD-ROM} drives.

	The EMU8000 comes integrated with 1MB of {General MIDI}
	samples and 512kB of {DRAM} for additional sample downloading.
	It can address up to 28 MB of external DRAM.  The SB AWE32
	supports General MIDI, Roland GS, and Sound Canvas MT-32
	{emulation}.

	(16 Dec 1996)

SBCS

	<character> (IBM) single-byte character set.

	A {character set} that uses 8 bits to represent a character.

	(21 Mar 1995)

SBM

	{Solution Based Modelling}

SB-Prolog

	Stony Brook Prolog.  A {public domain} {Prolog} {interpreter}
	for {Unix}.  Version 3.1.  Distributed under the {GNU}
	{General Public License}.

	{(ftp://sbcs.sunysb.edu/pub/sbprolog/)}

	{Amiga version 2.3.2
	(ftp://ftp.cso.uiuc.edu/amiga/fish/f1/ff140)} and
	{(ftp://ftp.cso.uiuc.edu/amiga/fish/f1/ff141)}.

	E-mail: <warren@sbcs.sunysb.edu>.

	(16 Jan 1995)

Sbus

	<hardware> The hardware interface for add-in boards in later
	{Sun-3} (and {Sun-4}?) {workstation}s.

	(28 Mar 1995)

SC

	<body> Subcommittee (of {ISO}, {JTC}?).

SCADA

	{Supervisory Control and Data Acquisition}

scag

	To destroy the data on a disk, either by corrupting the
	file system or by causing media damage.

	Compare {scrog}, {roach}.

	(16 Jan 1995)

scalability

	How well a solution to some problem will work when the size of
	the problem increases.

	For example, a central {server} of some kind with ten
	{client}s may perform adequately but with a thousand clients
	it might fail to meet response time requirements.  In this
	case, the average response time probably scales linearly with
	the number of clients, we say it has a {complexity} of O(N)
	("order N") but there are problems with other complexities.
	E.g. if we want N nodes in a network to be able to communicate
	with each other, we could connect each one to a central
	exchange, requiring O(N) wires or we could provide a direct
	connection between each pair, requiring O(N^2) wires (the
	exact number or formula is not usually so important as the
	highest power of N involved).

	(29 Mar 1995)

Scalable Coherent Interface

	(SCI) {IEEE} {standard} 1596-1992.

	[But what is it?]

Scalable Processor ARChitecture

	<computer> (SPARC) An {instruction set architecture} designed
	by {Sun Microsystems} for their own use in 1985.  Sun was a
	maker of {680x0}-based {Unix} {workstations}.  Research
	versions of {RISC} processors had promised a major step
	forward in speed but existing manufacturers were slow to
	introduce a RISC type processor, so Sun went ahead and
	developed its own, based on the {University of California at
	Berkley}'s {RISC I} and {RISC II} 1980-2.  In keeping with
	their open philosophy, they licenced it to other companies,
	rather than manufacture it themselves.  The evolution and
	standardisation of SPARC is now directed by the non-profit
	consortium {SPARC International, Inc.}

	SPARC was not the first {RISC} processor.  The {AMD 29000}
	came before it, as did the {MIPS R2000} (based on {Stanford}'s
	design) and {Hewlett-Packard} {Precision Architecture} {CPU},
	among others.  The SPARC design was radical at the time, even
	omitting multiple cycle multiply and divide instructions (like
	a few others), while most RISC CPUs are more conventional.

	SPARC implementations usually contain 128 or 144 {registers},
	({CISC} designs typically had 16 or less).  At each time 32
	registers are available - 8 are global, the rest are allocated
	in a "window" from a stack of registers.  The window is moved
	16 registers down the stack during a function call, so that
	the upper and lower 8 registers are shared between functions,
	to pass and return values, and 8 are local.  The window is
	moved up on return, so registers are loaded or saved only at
	the top or bottom of the register stack.  This allows
	functions to be called in as little as 1 cycle.  Like some
	other RISC processors, reading global register zero always
	returns zero and writing it has no effect.  SPARC is
	{pipelined} for performance, and like previous processors, a
	dedicated {condition code register} holds comparison results.

	SPARC is "scalable" mainly because the register stack can be
	expanded (up to 512, or 32 windows), to reduce loads and saves
	between functions, or scaled down to reduce {interrupt} or
	{context switch} time, when the entire register set has to be
	saved.  Function calls are usually much more frequent, so the
	large register set is usually a plus.

	SPARC is not a chip, but a specification, and so there are
	various designs of it.  It has undergone revisions, and now
	has multiply and divide instructions.  Most versions are 32
	bits, but there are designs for 64-bit and {superscalar}
	versions.  SPARC was submitted to the {IEEE} society to be
	considered for the {P1754} microprocessor standard.

	[The SPARC Architecture Manual, v8, ISBN 0-13-825001-4].

	(01 Nov 1994)

scalar

	1. <mathematics> A single number, as opposed to a {vector} or
	{matrix} of numbers.  Thus, for example, "scalar
	multiplication" refers to the operation of multiplying one
	number (one scalar) by another and is used to contrast this
	with "matrix multiplication" etc.

	2. <architecture> In a {parallel processor} or {vector
	processor}, the "scalar processor" handles all the sequential
	operations - those which cannot be parallelised or vectorised.

	See also {superscalar}.

	(12 Nov 1995)

SCALLOP

	A medium-level language for {CDC} computers, used to
	{bootstrap} the first {Pascal} compiler.

	(01 Nov 1994)

SCAN

	1. ["A Parallel Implementation of the SCAN Language",
	N.G. Bourbakis, Comp Langs 14(4):239-254 (1989)].

	2. A {real-time} language from {DEC}.

	[Are these the same language?]

	(01 Nov 1994)

scan

	1. (computer peripheral) See {scanner}.

	2. (circuit design) See {scan design}.

	3. ({functional programming}) See {scanl}, {scanr}.

	4. <storage, algorithm> An algorithm for scheduling multiple
	accesses to a disk.  A number of requests are ordered
	according to the data's position on the storage device.  This
	reduces the disk arm movement to one "scan" or sweep across
	the whole disk in the worst case.  The serivce time can be
	estimated from the disk's track-to-track {seek} time, maximum
	seek time (one scan), and maximum {rotational latency}.

	{Scan-EDF} is a variation on this.

	(15 Nov 1995)

scan design

	<electronics> (Or "Scan-In, Scan-Out") A electronic circuit
	design design technique which aims to increase the
	controllability and observability of a digital {logic circuit}
	by incorporating special "{scan register}s" into the circuit
	so that they form a {scan path}.

	Some of the more common types of scan design include the
	{multiplexed register} designs and {level-sensitive scan
	design} (LSSD) used extensively by {IBM}.  {Boundary scan} can
	be used alone or in combination with either of the above
	techniques.

	["Digital Systems Testing and Testable Design" by Abramovici,
	Breuer, and Friedman, ISBN 0-7167-8179-4].

	["Design of Testable Logic Circuits" by R.G. Bennetts,
	(Brunel/Southhampton Universities), ISBN 0-201-14403-4].

	(23 Feb 1995)

SCANDISK

	<operating system, storage> An {MS-DOS} command to check for
	faults on a disk and provide a graphical representation the
	results.  Scandisk was introduced with MS-DOS version 6 to
	replace CHKDSK.

	[What kinds of disk?  What faults?]

	(16 Jul 1997)

Scan-EDF

	<storage, algorithm> A variation of the {Scan} disk aceess
	algorithm for use in a {real-time} environment where, in
	general, requests are served according to {Earliest Deadline
	First}.  If two requests share the same deadline, they may be
	reorganised according to Scan.

	A typical example is a video server that retrieves video data
	from a hard disk.  The playback of a video impose tight
	real-time constraints but if the server retrieves data once
	every second for each video channel, Scan-EDF can be applied,
	reducing the {seek} {overhead}.

	(15 Nov 1995)

scanf

	The {C} library routine that reads data from the {standard
	input} {stream} {stdin} into the locations given by each entry
	in its argument list.  The first argument is a format string
	which controls interpretation of the input and each subsequent
	argument points to a variable with a type that corresponds to
	a type specifier in the format-string.

	{Unix manual page}: scanf(3).

	(23 Feb 1995)

Scan-In, Scan-Out

	{scan design}

scan line

	<hardware> A horizontal line of {pixels} generated by a single
	horizontal sweep of the beam from a {monitor}'s {electron
	gun}.  The number of scanlines that make up a {frame} is the
	vertical {resolution}.

	(09 Feb 1996)

scanner

	1. An input device that takes in an optical image and
	digitises it into an electronic image represented as binary
	data.  This can be used to create a computerised version of a
	photo or illustration.

	A scanner may be linked to {optical character recognition}
	software allowing printed documents to be converted to
	electronic text without having to type them in at a keyboard.

	2. {lexical analyser}.

	(14 Feb 1995)

scanno

	/skan'oh/ An error in a document caused by a {scanner} glitch,
	analogous to a typo or {thinko}.

	(14 Feb 1995)

scan path

	(circuit design) A technique used to increase the
	controllability and observability of a {logic circuit} by
	incorporating "{scan register}s" into the circuit.  Normally
	these act like {flip-flop}s but they can be switched into a
	"test" mode where they all become one long {shift register}.
	This allows data to be clocked serially through all the scan
	registers and out of an output pin at the same time as new
	data is clocked in from an input pin.

	Using this technique, the state of certain points in the
	circuit can be examined and modified at any time by suspending
	normal operation and switching to test mode.  If the scan path
	is placed adjacent to the circuit's input and output pins then
	this is known as "{boundary scan}".

	(14 Feb 1995)

scan register

	(circuit design) A digital {logic circuit} which can act
	either as a {flip-flop} or as a serial {shift register} and
	which is used to form a {scan path}.

	The most common design is a multiplexed {flip-flop}:

		      ___	  ____
	 normal in --|	 \	 |    |
		     |	  |------|D  Q|---- normal/scan output
	 scan in ----|___/ mux	 |    |
		       |	 |    |
	 test mode ----+    +----|>   | flip-flop
			    |	 |____|
	 clk ---------------+

	The addition of a {multiplexor} (mux) to each {flip-flop}'s
	input allows operation in either normal or test mode.  The
	output of each flip-flop goes to the normal functional logic
	as well as to the scan input of the next multiplexor in the
	scan path.

	The other common design is {level-sensitive scan design}
	(LSSD).

	(14 Feb 1995)

SCC

	{strongly connected component}

SCCS

	Source Code Control System: a popular {code management} system
	for Unix systems.

SCEPTRE

	Designing and analysing circuits.

	["SCEPTRE: A Computer Program for Circuit and Systems
	Analysis", J.C. Bowers et al, P-H 1971].

scheduler

	An {algorithm} or piece of software which does {scheduling}.
	Compare {planner}.

scheduling

	The arrangement of a number of related operations in time.

	See {instruction scheduling}, {process scheduling}, {task
	scheduling}.

	Compare {planning}.

	(11 Jan 1995)

Scheduling API

	{Scheduling Application Programming Interface}

Scheduling Application Programming Interface

	(SAPI, Scheduling API) An {API} aimed at {software} which aids
	humans in arranging their (business) activities.

	{Microsoft} has defined a SAPI for its {Schedule+}
	application.

	(11 Jan 1995)

Schema Representation language

	(SRL)

	["SRL/2 Users Manual", J.M. Wright et al, Robotics Inst, CMU,
	1984].

schematic capture

	The process of entering the logical design of an electronic
	circuit into a CAE system by creating a schematic
	representation of components and interconnections.

schematic type variable

	See {generic type variable}.

Schematik

	A {NeXT} front-end to {MIT Scheme} for the NeXT by Chris Kane
	and Max Hailperin <max@nic.gac.edu>.  Schematik provides
	syntax-knowledgeable text editing, graphics windows and a
	user-interface to an underlying MIT Scheme process.  It comes
	with MIT Scheme 7.1.3 ready to install on the NeXT and
	requires {NEXTSTEP}.

	Version: 1.1.5.2.

	{USA FTP (ftp://ftp.gac.edu/pub/next/scheme/)}.  {Germany
	(ftp://ftp.informatik.uni-muenchen.de/pub/next/ProgLang)}.

	 E-mail: <schematik@gac.edu>.

	 (11 Mar 1993)

Scheme

	(Originally "Schemer", by analogy with {Planner} and
	{Conniver}).  A small, uniform {Lisp} dialect with clean
	{semantics}, developed initially by {Guy Steele} and {Gerald
	Sussman} in 1975.  Scheme uses {applicative order reduction}
	and is {lexically scoped}.  It treats both functions and
	{continuation}s as {first-class} objects.

	Implementations include {Bigloo}, {Elk}, {Liar}, {Orbit},
	{Scheme86} (Indiana U), {SCM}, {MacScheme} (Semantic
	Microsystems), {PC Scheme} (TI), {MIT Scheme}, {T}.

	See also {Kamin's interpreters}, {PSD}, {PseudoScheme},
	{Schematik}, {Scheme Repository}, {STk}, {syntax-case}, {Tiny
	Clos}, {Paradigms of AI Programming}.

	There have been a series of revisions of the report defining
	Scheme, known as {RRS} (Revised Report on Scheme), {R2RS}
	(Revised Revised Report ..), {R3RS}, {R3.899RS}, {R4RS}.

	acorn.cs.brandeis.edu/dist/gambit1.51-tar.Z (compiler for
	68000's)

	ux1.cso.uiuc.edu/amiga/fish/f7/ff764 (Gambit compiler for
	Amiga)

	Mailing list: scheme@mc.lcs.mit.edu.

	IEEE P1178-1990, "IEEE Standard for the Scheme Programming
	Language", ISBN 1-55937-125-0.

Scheme84

	{Scheme} from {Indiana University}.  It requires {Franz Lisp}
	on a {VAX} under {VMS} or {BSD}.

	E-mail: Nancy Garrett <nlg@indiana.edu>.

	Send a tape with return postage to Scheme84 Distribution,
	Nancy Garrett, c/o Dan Friedman, Department of Computer
	Science, Indiana University, Bloomington, Indiana.  Telephone:
	+1 (812) 335 9770.

Scheme88

	{(ftp://nexus.yorku.ca/pub/scheme/)}

	[Description?]

Scheme->C

	{Scheme-to-C}

Scheme-Linda

	A {Scheme} interface to {Linda} written by Ulf Dahlen of
	{University of Edinburgh} in 1990.  It runs on the {Computing
	Surface} and the {Symmetry}.

	["Scheme-Linda", U. Dahlen et al, EPCC-TN-90-01 Edinburgh
	1990].

	(15 Dec 1994)

Scheme Object System

	(SOS) Chris Hanson?

	{(ftp://altdorf.ai.mit.edu/archive/cph/sos.tar.gz)}

	[Description?]

Scheme Repository

	A collection of free {Scheme} programs.

	{(ftp://nexus.yorku.ca/pub/scheme/)}

Scheme-to-C

	A {Scheme} compiler that emits {C} by Joel Bartlett fo
	{Digital Western Research Laboratory}.  Version 15mar93
	translates a superset of Revised**4 Scheme to C that is then
	compiled by the {native} {C} compiler for the {target
	machine}.  This design results in a portable system that
	allows either stand-alone Scheme programs or programs written
	in both compiled and interpreted Scheme and other languages.
	It supports "{expansion passing style}" {macro}s, {foreign
	function} calls, {record}s and interfaces to {Xlib} ({Ezd} and
	{Scix}).

	It will run on {VAX}, {ULTRIX}, {DECstation}, {Alpha AXP}
	{OSF}/1, {Windows 3.1}, {Apple Macintosh} 7.1, {HP 9000/300},
	{HP 9000/700}, {Sony News}, {SGI} {Iris} and {Harris}
	{Nighthawk} and other {Unix}-like {88000} systems.  The
	earlier 01nov91 version also runs on {Amiga}, {SunOS}, {NeXT},
	and {Apollo} systems.

	Send Subject "help" to <WRL-Techreports@decwrl.dec.com> for
	technical report.

	{(ftp://gatekeeper.dec.com/pub/DEC/Scheme-to-C/)}

	(15 Mar 1993)

Schlaer-Mellor

	An {object-oriented analysis} (OOA), design and modeling
	method that addresses the the integration of structural and
	behavioural properties.  It also allows an animation of the
	design.

	{I-OOA} is a tool that supports the Schlaer Mellor Design
	Method.

	(31 Jan 1995)

Schoonschip

	(Dutch for "beautiful ship")

	A program for {symbolic mathematics}, especially High Energy
	Physics, written by M. Veltman of CERN in 1964.  Schoonschip
	only does algebra, no derivatives.  It was implemented
	originally in {CDC-6600} and {CDC-7600} {assembly language}
	and currently in {680x0} {assembly language}.  Latest versions
	run on {Amiga}, {Atari ST}, {Sun 3} and {NeXT}.

	E-mail: David Williams <dnw@williams.physics.lsa.umich.edu>.
	{(ftp://archive.umich.edu/physics/schip)}.

	(Oct 1991)

schroedinbug

	<jargon, programming> /shroh'din-buhg/ ({MIT}, from the
	Schroedinger's Cat thought-experiment in quantum physics) A
	design or implementation {bug} in a program that doesn't
	manifest until someone reading source or using the program in
	an unusual way notices that it never should have worked, at
	which point the program promptly stops working for everybody
	until fixed.  Though (like {bit rot}) this sounds impossible,
	it happens; some programs have harboured latent schroedinbugs
	for years.

	Compare {heisenbug}, {Bohr bug}, {mandelbug}.

	(28 Feb 1995)

SCI

	1. {Scalable Coherent Interface}.

	2. {serial communications interface}.

	(14 Feb 1998)

Science and Engineering Research Council

	(SERC) Formerly the largest of the five research councils
	funded by the British Government through the Office of Science
	and Technology.  SERC funded higher education research in
	science and engineering, including computing and was
	responsible for the Rutherford Appleton Laboratory, near
	Oxford; the Daresbury Laboratory, near Warrington; the Royal
	Greenwich Observatory at Cambridge and the Royal Observatory,
	Edinburgh.

	In April 1994 SERC was split into the Engineering and Physical
	Sciences Research Council and the Particle Physics and
	Astronomy Research Council.  SERC's remote sensing efforts
	have been transferred to the Natural Environment RC and its
	biotechnology efforts merged with the Agriculture and Food RC
	to make the new Biotechnology and Biological Sciences RC.  The
	two major SERC laboratories - {Rutherford Appleton Laboratory}
	and Daresbury Laboratory are now independent.

	{(http://unixfe.rl.ac.uk/serc/serc.html)}

	(15 Dec 1994)

science-fiction fandom

	Another voluntary subculture having a very heavy overlap with
	hackerdom; most hackers read SF and/or fantasy fiction avidly,
	and many go to "cons" (SF conventions) or are involved in
	fandom-connected activities such as the Society for Creative
	Anachronism.  Some hacker jargon originated in SF fandom such
	as {defenestration}, great-wall, {cyberpunk}, {h}, {ha ha only
	serious}, {IMHO}, {mundane}, {neep-neep}, {Real Soon Now}.
	Additionally, the jargon terms {cowboy}, {cyberspace},
	{de-rezz}, {go flatline}, {ice}, {phage}, {virus}, {wetware},
	{wirehead}, and {worm} originated in SF stories.

	(02 Dec 1994)

SCL

	1. System Control Language.  Command language for the VME/B
	operating system on the ICL2900.  Block structured, strings,
	superstrings (lists of strings), int, bool, array types.  Can
	trigger a block whenever a condition on a variable value
	occurs.  Macros supported.  Commands are treated like
	procedure calls.  Default arguments.

	["VME/B SCL Syntax", Intl Computers Ltd. 1980].

	2. Symbolic Communication Language.  Designed primarily for
	the manipulation of symbolic formulas.  Featured pattern
	matching (which was partly the inspiration for SNOBOL), string
	operations in buffers, and automatic storage management.  "A
	Language for Symbolic Communication", C.Y. Lee et al, Tech Mem
	62-3344-4, Bell Labs, Sept 1962.

scm

	A {Sceme} {interpreter} in {C} by Aubrey Jaffer
	<jaffer@zurich.ai.mit.edu>.  Scm comes with the {Hobbit2}
	compiler which compiles to {C}.  It conforms to {R4RS} and
	{IEEE} {P1178} and includes a conformance test.  It is
	distributed under {GPL}.  Version 4c5 runs on {Unix}, {Amiga},
	{Atari ST}, {Macintosh}, {MS-DOS}, {NOS/VE} and {VMS}.

	{x-scm} provides an {X Window System} interface for scm
	programs.

	{FTP MIT (ftp://altdorf.ai.mit.edu/archive/scm/)}.  {Canada
	(ftp://nexus.yorku.ca/pub/oz/scheme/new/)}.  {Europe
	(ftp://ftp.maths.tcd.ie/pub/bosullvn/jacal/)}.

	(01 Nov 1994)

SC/MP

	(Nicknamed "Scamp") A typical 8-bit {microprocessor} from
	{National Semiconductor} released in April 1976.  It was
	intended for control applications (a simple {BASIC} in a 2.5K
	{ROM} was added to one version).  It featured 16 bit
	addressing, with 12 address lines and 4 lines borrowed from
	the data bus (it was common to borrow lines from the data bus
	for addressing).  Internally, it included three {index
	register}s (P1 to P3) and two 8-bit general-purpose
	{register}s.  It had a {PC}, but no {stack pointer} or
	{subroutine} instructions (though they could be emulated with
	index registers).  During {interrupt}s, the {PC} was saved in
	P3.  It was meant for embedded control, and these features
	were omitted for cost reasons.  It was also {bit serial}
	internally to keep it cheap.

	The unique feature was the ability to completely share a
	system bus with other processors.  Most processors of the time
	assumed they were the only ones accessing memory or I/O
	devices.  Multiple SC/MPs could be hooked up to the bus, as
	well as other intelligent devices, such as {DMA controller}s.
	A control line (ENOUT (Enable Out) to ENIN) could be chained
	along the processors to allow cooperative processing.  This
	was very advanced for the time, compared to other {CPU}s.

	In addition to I/O ports like the {Intel 8080}, the SC/MP also
	had instructions and one pin for serial input and one for
	output.

	(16 Nov 1994)

SCO

	The {Santa Cruz Operation}.

Scode

	The internal representation used by the {Liar} compiler for
	{MIT Scheme}.

	(01 Nov 1994)

SCOOP

	Structured Concurrent Object-Oriented Prolog.

	["SCOOP, Structured Concurrent Object-Oriented Prolog",
	J. Vaucher et al, in ECOOP '88, S. Gjessing et al eds, LNCS
	322, Springer 1988, pp.191-211].

SCOOPS

	Scheme Object-Oriented Programming System.  Developed at
	{Texas Instruments} in 1986.  It supports {multiple
	inheritance} and {class variable}s.

	{(ftp://altdorf.ai.mit.edu/archive/scheme-library/unsupported/CScheme)}

	(01 Nov 1994)

SCOPE

	<project> Software Evaluation and Certification Programme
	Europe.

	An {ESPRIT} project.

	(12 Apr 1995)

scope

	<programming> The scope of an identifier is the region of a
	program source within which it represents a certain thing.
	This usually extends from the place where it is declared to
	the end of the smallest enclosing block (begin/end or
	procedure/function body).  An inner block may contain a
	redeclaration of the same identifier in which case the scope
	of the outer declaration does not include (is "shadowed" or
	"{occlude}d" by) the scope of the inner.

	See also {activation record}, {dynamic scope}, {lexical
	scope}.

	(01 Nov 1994)

Scorpion

	Twenty tools that can be used to construct specialised
	programming environments.  The Scorpion Project was started by
	Prof. Richard Snodgrass <rts@cs.arizona.edu> as an outgrowth
	of the {SoftLab} Project (which produced the {IDL Toolkit})
	that he started when he was at the {University of North
	Carolina}.  The Scorpion Project is directed by him at the
	{University of Arizona} and by Karen Shannon at the
	{University of North Carolina} at Chapel Hill.

	Version 6.0 runs on {Sun-3}, {Sun-4}, {VAX}, {Decstation},
	{Iris}, {Sequent}, {HP9000}.

	See also {Candle}.

	{(ftp://cs.arizona.edu/scorpion/)}

	Mailing list: info-scorpion-request@cs.arizona.edu.

	E-mail: <scorpion-project@cs.arizona.edu>.

	(04 Nov 1993)

Scott-closed

	A set S, a subset of D, is Scott-closed if

	(1) If Y is a subset of S and Y is {directed} then lub Y is in
	S and

	(2) If y <= s in S then y is in S.

	I.e. a Scott-closed set contains the {lub}s of its {directed}
	subsets and anything less than any element.  (2) says that S
	is downward {closed} (or left closed).

	("<=" is written in {LaTeX} as {\sqsubseteq}).

	(03 Feb 1995)

Scott domain

	An {algebraic}, {boundedly complete}, {complete partial
	order}.  Often simply called a {domain}.

	(01 Nov 1994)

SCPI

	{Standard Commands for Programmable Instruments}

SCPI Consortium

	A body established to promote {Standard Commands for
	Programmable Instruments}.

	Address: 8380 Hercules Drive, Suite P3, La Mesa, CA 91942,
	USA.

	(01 Nov 1994)

scram switch

	(From the nuclear power industry) An emergency-power-off
	switch (see {Big Red Switch}), especially one positioned to be
	easily hit by evacuating personnel.  In general, this is *not*
	something you {frob} lightly; these often initiate expensive
	events (such as Halon dumps) and are installed in a {dinosaur
	pen} for use in case of electrical fire or in case some
	luckless {field servoid} should put 120 volts across himself
	while {Easter egging}.

	See also {molly-guard}, {TMRC}.

SCRAP

	Something written at {CSIR}, Pretoria, South Africa in the
	late 1970s.  It ran on {Interdata} and {Perkin-Elmer}
	computers and was in use until the late 1980s.

	[But what was it?]

	(15 Dec 1994)

scratch

	1. (From "scratchpad") Describes a data structure or recording
	medium attached to a machine for testing or temporary-use
	purposes; one that can be {scribble}d on without loss.
	Usually in the combining forms "scratch memory", "scratch
	register", "scratch disk", "scratch tape", "scratch volume".

	See also {scratch monkey}.

	2. (primarily {IBM}) To delete (as in a file).

	(15 Dec 1994)

scratch monkey

	As in "Before testing or reconfiguring, always mount a
	{scratch monkey}", a proverb used to advise caution when
	dealing with irreplaceable data or devices.  Used to refer to
	any scratch volume hooked to a computer during any risky
	operation as a replacement for some precious resource or data
	that might otherwise get trashed.

	This term preserves the memory of Mabel, the Swimming Wonder
	Monkey, star of a biological research program at the
	University of Toronto.  Mabel was not (so the legend goes)
	your ordinary monkey; the university had spent years teaching
	her how to swim, breathing through a regulator, in order to
	study the effects of different gas mixtures on her physiology.
	Mabel suffered an untimely demise one day when a DEC engineer
	troubleshooting a crash on the program's VAX inadvertently
	interfered with some custom hardware that was wired to Mabel.

	It is reported that, after calming down an understandably
	irate customer sufficiently to ascertain the facts of the
	matter, a DEC troubleshooter called up the {field circus}
	manager responsible and asked him sweetly, "Can you swim?"

	Not all the consequences to humans were so amusing; the sysop
	of the machine in question was nearly thrown in jail at the
	behest of certain clueless droids at the local "humane"
	society.  The moral is clear: When in doubt, always mount a
	scratch monkey.

	[There is a version of this story, complete with reported
	dialogue between one of the project people and DEC field
	service, that has been circulating on Internet since 1986.  It
	is hilarious and mythic, but gets some facts wrong.  For
	example, it reports the machine as a {PDP-11} and alleges that
	Mabel's demise occurred when DEC {PM}ed the machine.  Earlier
	versions of this entry were based on that story; this one has
	been corrected from an interview with the hapless sysop. -
	ESR]

	(15 Dec 1994)

Scratchpad I

	A general-purpose language originally for interactive
	{symbolic mathematics} by Richard Jenks, Barry Trager, Stephen
	M. Watt and Robert S. Sutor of {IBM Research}, ca 1971.  It
	features abstract parametrised data types, {multiple
	inheritance} and {polymorphism}.  There were implementations
	for {VM/CMS} and {AIX}.

	["Scratchpad User's Manual", RA 70, IBM (June 1975)].

	(15 Dec 1994)

Scratchpad II

	See {Scratchpad I}, {AXIOM}.

	["Scratchpad II Programming Language Manual", R.D. Jenks et
	al, IBM, 1985].

	[Scratchpad II Newsletter: Computer Algebra Group, TJWRC, Box
	218, Yorktown Hts, NY 10598].

scream and die

	Synonym {cough and die}, but connotes that an error message
	was printed or displayed before the program crashed.

Screamer

	An extension of {Common Lisp} providing {nondeterministic}
	{backtracking} and {constraint} programming.

	{(ftp://ftp.ai.mit.edu/pub/screamer.tar.Z)}

	[Isn't all backtracking nondeterministic by definition?]

screaming tty

	[Unix] A terminal line which spews an infinite number of
	random characters at the operating system.  This can happen if
	the terminal is either disconnected or connected to a
	powered-off terminal but still enabled for login;
	misconfiguration, misimplementation, or simple bad luck can
	start such a terminal screaming.  A screaming tty or two can
	seriously degrade the performance of a vanilla Unix system;
	the arriving "characters" are treated as userid/password pairs
	and tested as such.  The Unix password encryption algorithm is
	designed to be computationally intensive in order to foil
	brute-force crack attacks, so although none of the logins
	succeeds; the overhead of rejecting them all can be
	substantial.

screen blanker

	{screen saver}

Screen Peace

	<tool> A {screen saver} for {Microsoft Windows} by Anthony
	Andersen.  Released as {charityware}.  It can load extension
	modules with {filename extension} ".SPX".

	{Some modules
	(ftp://src.doc.ic.ac.uk/computing/systems/ibmpc/windows3/desktop/spx2.zip)}.

	(23 Nov 1997)

screen saver

	<tool> A program which displays either a completely black
	image or a constantly changing image on a computer monitor to
	prevent a stationary image from "burning" into the phosphor of
	the screen.  Screen savers usually start automatically after
	the computer has had no user input for a preset time.  Some
	screen savers come with many different modules, each giving a
	different effect.

	Approximately pre-1990, many {cathode ray tubes}, in TVs,
	computer {monitors} or elsewhere, were prone to "burn-in";
	that is, if the same pattern (e.g., the {WordPerfect} status
	line; the {Pong} score readout; or a TV channel-number
	display) were shown at the same position on the screen for
	very long periods of time, the phosphor on the screen would
	"fatigue" and that part of the screen would seem greyed out,
	even when the CRT was off.

	Eventually CRTs were developed which were resistant to burn-in
	(and which sometimes went into {sleep} mode after a period of
	inactivity); but in the meantime, solutions were developed:
	home video game systems of the era (e.g., Atari 2600s) would,
	when not being played, change the screen every few seconds, to
	avoid burn-in; and computer screen saver programs were
	developed.

	The first screen savers were simple screen blankers - they
	just set the screen to all black, but, in the best case of
	{creeping featurism} ever recorded, these tiny (often under 1K
	long) programs grew without regard to efficiency or even basic
	usefulness.  At first, small, innocuous {display hacks}
	(generally on an almost-black screen) were added.  Later, more
	complex effects appeared, including {animations} (often with
	sound effects!) of arbitrary length and complexity.

	Along the way, avoiding repetitive patterns and burn-in was
	completely forgotten and "screen savers" such as {Pointcast}
	were developed, which make no claim to save your monitor, but
	are simply bloated {browsers} for {push media} which
	self-start after the machine has been inactive for a few
	minutes.

	(23 Nov 1997)

screen scraper

	<tool> A piece of software used to automate interaction
	between two computer systems through the terminal interface
	(designed for human use) of one of those systems.

	Typically, the screen scraper interacts with {terminal
	emulation} software to generate input to and process output
	from the "host" system through terminal screens.  Screen
	scrapers are advantageous when modifications to the host
	system are undesireable, when it is desireable to make use of
	the existing business and data integrity logic on the host,
	and when no other (peer-to-peer) interface method is
	available.

	Some products employ screen scraping combined with additional
	functionality which provides a {DBMS}-like or other
	specialised interface to the host.  The host system is often
	called a "{legacy} system" because it usually the older of the
	systems involved and based on older technology.

	(19 Apr 1995)

screen sharing

	{Audiographic Teleconferencing}

Screenwrite

	<language> A simple {query language} developed by {Honeywell}
	in the late 1970s for {Level 6} {minicomputer}s.

	(01 Dec 1994)

screw

	<jargon> (MIT) A {lose}, usually in software.  Especially used
	for user-visible misbehaviour caused by a bug or {misfeature}.
	This use has become quite widespread outside {MIT}.

	(01 Dec 1994)

screwage

	/skroo'*j/ Like {lossage} but connotes that the failure is due
	to a designed-in misfeature rather than a simple inadequacy or
	a mere bug.

	(01 Dec 1994)

scribble

	To modify a data structure in a random and unintentionally
	destructive way.  "Bletch! Somebody's disk-compactor program
	went berserk and scribbled on the i-node table."  "It was
	working fine until one of the allocation routines scribbled on
	low core."  Synonymous with {trash}; compare {mung}, which
	conveys a bit more intention, and {mangle}, which is more
	violent and final.

Scribe

	A text-formatting language by Brian Reid.

	(01 Dec 1994)

SCRIPT

	1. An early system on the {IBM 702}.

	[Listed in CACM 2(5):16 (May 1959)].

	2. A {real-time} language.

	["A Communication Abstraction Mechanism and its Verification",
	N. Francez et al, Sci Comp Prog 6(1):35-88 (1986)].

	(01 Dec 1994)

scrog

	/skrog/ [Bell Labs] To damage, trash, or corrupt a data
	structure.  "The list header got scrogged."  Also reported as
	"skrog", and ascribed to the comic strip "The Wizard of Id".
	Compare {scag}; possibly the two are related.  Equivalent to
	{scribble} or {mangle}.

SCROLL

	String and Character Recording Oriented Logogrammatic
	Language.

	["SCROLL - A Pattern Recording Language", M. Sargent, Proc
	SJCC 36 (1970)].

	(01 Dec 1994)

scrool

	/skrool/ [The pioneering Roundtable chat system in Houston
	ca. 1984; probably originated as a typo for "scroll"] The log
	of old messages, available for later perusal or to help one
	get back in synch with the conversation.  It was originally
	called the "scrool monster", because an early version of the
	roundtable software had a bug where it would dump all 8K of
	scrool on a user's terminal.

scrozzle

	/skroz'l/ Used when a {self-modifying code} segment runs
	incorrectly and corrupts the running program or vital data.

	(24 Nov 1994)

scruffies

	{neats vs. scruffies}

SCSI

	{Small Computer System Interface}

SCSI-1

	<hardware> The original {SCSI}, as opposed to
	{SCSI-2} or {SCSI-3}.

	(20 Apr 1995)

SCSI-2

	<hardware> A version of the {SCSI} command
	specification.

	SCSI-2 shares the original SCSI's {asynchronous} and
	{synchronous} modes and adds a "{Fast SCSI}" mode (<10MB/s)
	and "{Wide SCSI}" (16 bit, <20MB/s or rarely 32 bit).

	Another major enhancement was the definition of command sets
	for different device classes.  SCSI-1 was rather minimalistic
	in this respect which led to various incompatibilities
	especially for devices other than {hard-disk}s.  SCSI-2
	addresses that problem. allowing {scanner}s, {hard disk
	drive}s, {CD-ROM} drives, tapes and many other devices to be
	connected.

	Normal SCSI-2 equipment (not wide or {differential}) can be
	connected to a SCSI-1 bus and vice versa.

	(19 Apr 1995)

SCSI-3

	<hardware> An ongoing standardisation effort to
	extend the capabilities of {SCSI-2}.  SCSI-3's goals are more
	devices on a bus (up to 32); faster data transfer; greater
	distances between devices (longer cables); more device classes
	and command sets; structured documentation; and a structured
	{protocol} model.

	In SCSI-2, data transmission is parallel (8, 16 or 32 bit
	wide).  This gets increasingly difficult with higher data
	rates and longer cables because of varying signal delays on
	different wires.  Furthermore, wiring cost and drive power
	increases with wider data words and higher speed.  This has
	triggerer the move to serial interfacing in SCSI-3.  By
	embedding clock information into a serial data stream signal
	delay problems are eliminated.  Driving a single signal also
	consumes less driving power and reduces connector cost and
	size.

	To allow for backward compatibility and for added flexibility
	SCSI-3 allows the use of several different transport
	mechanisms, some serial and some parallel.  The software
	{protocol} and command set is the same for each transport.
	This leads to a layered protocol definition similar to
	definitions found in networking.

	SCSI-3 is therefore in fact the sum of a number of separate
	standards which are defined by separate groups.  These
	standards and groups are currently:

	 X3T9.2/91-13R2   SCSI-3 Generic Packetized Protocol
	 X3T9.2/92-141    SCSI-3 Queuing Model
	 X3T9.2/92-079    SCSI-3 Architecture Model
	 IEEE P1394       High Performance Serial Bus
	 X3T9.2/92-106    SCSI-3 Block Commands
	 X3T9.2/91-189    SCSI-3 Serial Bus Protocol
	 X3T9.2/92-105    SCSI-3 SCSI-3 Core Commands
			  SCSI-3 Common Command Set
	 X3T9.2/92-108    SCSI-3 Graphic Commands
	 X3T9.2/92-109    SCSI-3 Medium Changer Commands
	 X3T9.2/91-11     SCSI-3 Interlocked Protocol
	 X3T9.2/91-10     SCSI-3 Parallel Interface
	 X3T9.2/92-107    SCSI-3 Stream Commands
			  SCSI-3 Scanner Commands

	Additional Documents for the Fibre Channel are also meant to
	be included in the SCSI-3 framework, i.e.:

			  Fibre Channel SCSI Mapping
			  Fibre Channel Fabric Requirements
			  Fibre Channel Low Cost Topologies
	 X3T9.3/92-007    Fibre Channel Physical and Signalling Interface
			  Fibre Channel Single Byte Commands
			  Fibre Channel Cross Point Switch Topology
	 X3T9.2/92-103    SCSI-3 Fibre Channel Protocol (GPP & SBP)

	As all of this is an ongoing effort of considerable
	complexity, document structure and workgroups may change.  No
	final standard is issued yet.

	In the meantime a group of manufacturers have proposed an
	extension of {SCSI-2} called {Ultra-SCSI} which doubles the
	transfer speed of {Fast-SCSI} to give 20MByte/s on an 8 bit
	connection and 40MByte/s on a 16-bit connection.

	[Hermann Strass: "SCSI-Bus erfolgreich anwenden",
	Franzis-Verlag Muenchen 1993].

	(19 Apr 1995)

ScumOS

	<abuse, operating system> /skuhm'os/ or /skuhm'O-S/ An
	Unflattering hackerism for {SunOS}, the {Unix} variant once
	supported on {Sun Microsystems}'s Unix {workstation}s.

	Despite what this term might suggest, Sun was founded by
	hackers and still enjoys excellent relations with hackerdom;
	usage is more often in exasperation than outright loathing.

	See also {sun-stools}.  Compare {AIDX}, {Macintrash}, {Nominal
	Semidestructor}, {Open DeathTrap}, {HP-SUX}.

	(19 Apr 1995)

scuzzy

	The usual pronunciation of {SCSI}.

SD

	{Structured Design}

SDDI

	{Sony Digital Data Interface}

SDE

	Software Development Environment: equivalent to SEE.

SDF

	Syntax Definition Formalism.  A language for lexical and
	syntactic specification.

	["The Syntax Definition Formalism SDF - Reference Manual",
	J. Heering et al, Centre for Math & CS, Amsterdam].

	["Algebraic Specification", J.A. Bergstra et al eds, ACM Press
	1989, Chap 6.  To appear].

	(27 Oct 1994)

SDH

	{Synchronous Digital Hierarchy}

SDI

	{Selective Dissemination of Information}

SDK

	{Software Developers Kit} (or "Software Development Kit").

SDL

	Specification and Design Language.

	Defined by the {ITU-T} (recommendation Z100) to provide a tool
	for unambiguous specification and description of the behaviour
	of telecommunications systems.  The area of application also
	includes process control and real-time applications.  SDL
	provides a Graphic Representation (SDL/GR) and a textual
	Phrase Representation (SDL/PR), which are equivalent
	representations of the same semantics.  A system is specified
	as a set of interconnected {abstract machine}s which are
	extensions of the {Finite State Machine} (FSM).

	1. System Software Development Language.  System software for
	the B1700.  "System Software Development Language Reference
	Manual", 1081346, Burroughs Corp (Dec 1974).

	2. Specification and Description Language.  {ITU-T}.
	Specification language with both graphical and character-based
	syntaxes for defining interacting extended finite state
	machines.  Used to specify discrete interactive systems such
	as industrial process control, traffic control, and
	telecommunication systems.  Proc Plenary Assembly, Melbourne
	14-25 Nov 1988, Fasc X.1, CCITT.  "Telecommunications Systems
	Engineering Using SDL", R. Saracco et al, N-H 1989.  Available
	from Verilog, MD.  (See XDL).

	3. Shared Dataspace Language.  "A Shared Dataspace Language
	Supporting Large-Scale Concurrency", G. Roman et al, Proc 8th
	Intl Conf Distrib Comp Sys, IEEE 1988, pp.265-272.

	4. Structure Definition Language.  Used internally by DEC to
	define and generate the symbols used for VAX/VMS internal data
	structures in various languages.

	5. System Description Language.  language used by the Eiffel/S
	implementation of Eiffel to assemble clusters into a system.
	(see Lace).

SDL 92

	SDL[2] with object-orientation.

SDLC

	{Synchronous Data Link Control}

SDM

	{Schematic Data Model}

SDMS

	A {query language}.

SDRAM

	{Synchronous Dynamic Random Access Memory}

SDRC

	<company> The company behind {VGX}.

	{Home (http://www.sdrc.com/)}.

	[More details?]

	(06 Feb 1998)

SDS

	Schema Definition Set in PCTE.

SE

	{software engineering}

SEA

	{Self Extracting Archive}

Seagate Technology

	<company> A major manufacturer of {hard disk drive}s.

	{Home (http://www.seagate.com/)}

	{Technical information at Impediment
	(http://www.impediment.com/seagate/seagate_technical.html)}.

	{Job vacanciess (http://www.careermosaic.com/cm/seagate/)}

	Address: 920 Disc Drive, Scotts Valley, CA 95066, USA.

	Fax: +1 (408) 438 3320.

	(10 Apr 1995)

SEAL

	Semantics-directed Environment Adaptation Language.

	{(ftp://ftp.cwi.nl/pub/gipe/0092b.ps.Z)}

search-and-destroy mode

	Hackerism for a noninteractive search-and-replace facility in
	an editor, so called because an incautiously chosen match
	pattern can cause {infinite} damage.

search engine

	<World-Wide Web, tool> A remotely accessible program that lets
	you do keyword searches for information on the {Internet}.
	There are several types of search engine; the search may cover
	titles of documents, {URL}s, headers, or the {full text}.

	{A list of search engines
	(http://cuiwww.unige.ch/meta-index.html#MISC)}, Centre
	Universitaire d'Informatique at the University of Geneva

	(28 Nov 1995)

search problem

	A computational problem that requires identifying a solution
	from some, possibly infinite, solution {space} (set of
	possible solutions).  E.g. "What is the millionth {prime
	number}?".  This contrasts with a {decision problem} which
	merely asks whether a given answer is a solution or not.

SECD machine

	{Stack Environment Control Dump machine}

secondary cache

	<architecture> (Or "second level cache", "level two cache",
	"L2 cache") A larger, slower {cache} between the {primary
	cache} and main memory.  Whereas the primary cache is often on
	the same {integrated circuit} as the {central processing unit}
	(CPU), a secondary cache is usually external.

	(25 Jun 1997)

secondary damage

	When a fatal error occurs (especially a {segfault}) the
	immediate cause may be that a pointer has been trashed due to
	a previous {fandango on core}.  However, this fandango may
	have been due to an *earlier* fandango, so no amount of
	analysis will reveal (directly) how the damage occurred.  "The
	data structure was clobbered, but it was secondary damage."

	By extension, the corruption resulting from N cascaded
	fandangoes on core is "Nth-level damage".  There is at least
	one case on record in which 17 hours of {grovel}ling with
	"adb" actually dug up the underlying bug behind an instance of
	seventh-level damage!  The hacker who accomplished this
	near-superhuman feat was presented with an award by his
	fellows.

secondary key

	<database> A {candidate key} which is not selected as a
	{primary key}.

	(26 Apr 1997)

secondary storage

	<storage> Any {non-volatile} storage medium that is not
	directly accessible to the {processor}.  Memory directly
	accessible to the processor includes {main memory}, {cache}
	and the {CPU} {registers}.  Secondary storage includes {hard
	drives}, {magnetic tape}, {CD-ROM}, {DVD drives}, {floppy
	disks}, {punch cards} and {paper tape}.

	Secondary storage devices are usually accessed via some kind
	of controller.  This contains registers that can be directly
	accessed by the CPU like main memory ("{memory mapped}").
	Reading and writing these registers can cause the device to
	perform actions like reading a block of data off a disk or
	rewinding a tape.  See also {DMA}.

	Programs and data stored in secondary storage must first be
	loaded into main memory before the processor can use them.

	(05 Nov 1997)

second generation computer

	<architecture> A computer built from {transistors}, designed
	between the mid-1950s and mid-1960s.

	{Ferrite core memory} and {magnetic drums} replaced {cathode
	ray tubes} and {delay-line storage} for main {memory}.  {Index
	registers} and {floating point} arithmetic hardware became
	widespread.  Machine-independent {high level programming
	languages} such as {ALGOL}, {COBOL} and {FORTRAN} were
	introduced to simplify programming.

	{I/O processors} were introduced to supervise input-output
	operations independently of the {CPU} thus freeing the CPU
	from time-consuming housekeeping functions.  The CPU would
	send the I/O processor an initial instruction to start
	operating and the I/O processor would then continue
	independently of the CPU.  When completed, or in the event of
	an error, the I/O processor sent an {interrupt} to the CPU.

	{Batch} processing became feasible with the improvement in I/O
	and storage technology in that a batch of jobs could be
	prepared in advance, stored on magnetic tape and processed on
	the computer in one continuous operation placing the results
	on another magnetic tape.  It became commonplace for
	auxiliary, small computers to be used to process the input and
	output tapes off-line thus leaving the main computer free to
	process user programs.  Computer manufacturers began to
	provide system software such as {compilers}, {subroutine}
	libraries and batch monitors.

	With the advent of second generation computers it became
	necessary to talk about computer systems, since the number of
	memory units, processors, I/O devices, and other system
	components could vary between different installations, even
	though the same basic computer was used.

	The instruction repertoire of the {IBM 7094} (a typical second
	generation machine) had over 200 instructions including data
	transfer instructions for transferring a {word} of information
	between the CPU and memory or between two CPU registers;
	fixed-point and floating point arithmetic instructions;
	{logic} instructions (AND, OR etc.); instructions for
	modifying {index registers}; conditional and unconditional
	branching; {subroutines}; input-output operations for
	transferring data between I/O devices and main memory.

	(25 Nov 1996)

second generation language

	{assembly language}

	See also {first generation language}, {third generation
	language}.

second level cache

	{secondary cache}

Second-Order Lambda-calculus

	<language> (SOL) A {typed lambda-calculus}.

	["Abstract Types have Existential Type", J. Mitchell et al,
	12th POPL, ACM 1985, pp. 37-51].

	(29 Jul 1995)

second-system effect

	(Sometimes, more euphoniously, "second-system syndrome") When
	one is designing the successor to a relatively small, elegant,
	and successful system, there is a tendency to become grandiose
	in one's success and design an {elephantine} feature-laden
	monstrosity.  The term was first used by Fred Brooks in his
	classic "{The Mythical Man-Month}.  It described the jump from
	a set of nice, simple operating systems on the {IBM 70xx}
	series to {OS/360} on the 360 series.  A similar effect can
	also happen in an evolving system; see {Brooks's Law},
	{creeping elegance}, {creeping featurism}.  See also
	{Multics}, {OS/2}, {X}, {software bloat}.

sector interleave

	(Or sector map) The mapping from logical to physical sector
	numbers on a {magnetic disk} designed to optimise sequential
	reads and writes.  Data is usually transferred to and from the
	disk in {block}s or {sector}s where one sector lies within a
	continuous range of rotational angle of the disk.  If logical
	sectors are assigned sequentially to physical sectors
	(0,1,2,...) then by the time one sector has been read and
	processed (e.g. writen to main memory) the start of the next
	logical sector will have passed the read/write head and will
	not be accessible until the disk's rotation brings it back
	under the head.

	Staggering the physical sectors (e.g. 0,3,6,1,4,7,2,5,8) aims
	to allow just enough time deal with one sector before the next
	is accessible.  This obviously depends on the relative speed
	of the rotation of the disk, sector size, sectors per track
	and the speed of transfer of sectors to main memory.

sector interleaving

	See {sector interleave}.

sector map

	See {sector interleave}.

sector mapping

	In this scheme the memory and {cache} are divided into blocks
	of 2^m bytes (the {cache line} size).  A sector consists of
	2^n consecutive blocks.

	When a block is cached, it is read into the correct position
	in any sector of the cache, given by discarding the bottom m
	address bits and taking the next n as the block number within
	the sector.

	That whole sector is then tagged with the remaining upper
	address bits and the other blocks in the sector are marked as
	invalid.  This scheme takes advantage of locality of reference
	to consecutive blocks and needs fewer tags thus reducing the
	cost of associative access to the tags.

Secure Multipurpose Internet Mail Extensions

	<messaging, standard> (S-MIME) A specification for secure
	{electronic mail}.  S-MIME was designed to add security to
	e-mail messages in {MIME} format.  The security services
	offered are {authentication} (using {digital signatures}) and
	{privacy} (using {encryption}).

	{(http://www.rsa.com/rsa/S-MIME/)}.

	(10 May 1997)

Secure Shell

	<operating system> (ssh) A {Unix} {shell} program for logging
	into, and executing commands on, a remote computer.  ssh is
	intended to replace {rlogin} and {rsh}, and provide secure
	encrypted communications between two untrusted hosts over an
	insecure network.  {X11} connections and arbitrary {TCP/IP}
	{ports} can also be forwarded over the secure channel.

	{Home (http://www.cs.hut.fi/ssh/)}.

	(07 Jan 1997)

Secure Sockets Layer

	(SSL) A {protocol} designed by {Netscape Communications
	Corporation} to provide secure communications on the
	{Internet}.  SSL is layered beneath application {protocol}s
	such as {HTTP}, {SMTP}, {Telnet}, {FTP}, {Gopher}, and {NNTP}
	and is layered above the connection protocol {TCP/IP}.  It is
	used by the {HTTPS} access method.

	(17 Jan 1995)

Security Association

	<networking> The relationship between two or more entities
	(typically, a computer, but could be a user on a computer, or
	software component) which describes how the entities will use
	security services, such as {encryption}, to communicate.

	See {RFC 1825}.

	(09 Jul 1997)

Security Association ID

	<networking> (SAID) A 32-bit field added to {packet} headers
	for {encryption} and {authentication} in the proposed
	{Internet Protocol Version 6}.

	(09 Jul 1997)

security through obscurity

	<security> Or "security by obscurity".  A term applied by
	hackers to most {operating system} vendors' favourite way of
	coping with security holes - namely, ignoring them,
	documenting neither any known holes nor the underlying
	security {algorithm}s, trusting that nobody will find out
	about them and that people who do find out about them won't
	exploit them.  This "strategy" never works for long and
	occasionally sets the world up for debacles like the {RTM}
	worm of 1988 (see {Great Worm}), but once the brief moments of
	panic created by such events subside most vendors are all too
	willing to turn over and go back to sleep.  After all,
	actually fixing the bugs would siphon off the resources needed
	to implement the next user-interface frill on marketing's wish
	list - and besides, if they started fixing security bugs
	customers might begin to *expect* it and imagine that their
	warranties of merchantability gave them some sort of *right*
	to a system with fewer holes in it than a shotgunned Swiss
	cheese?

	Historical note: There are conflicting stories about the
	origin of this term.  It has been claimed that it was first
	used in the {Usenet} newsgroup in {news:comp.sys.apollo}
	during a campaign to get {HP}/{Apollo} to fix security
	problems in its {Unix}-{clone} {Aegis}/{DomainOS} (they didn't
	change a thing).  {ITS} fans, on the other hand, say it was
	coined years earlier in opposition to the incredibly paranoid
	{Multics} people down the hall, for whom security was
	everything.  In the ITS culture it referred to (1) the fact
	that that by the time a {tourist} figured out how to make
	trouble he'd generally got over the urge to make it, because
	he felt part of the community; and (2) (self-mockingly) the
	poor coverage of the documentation and obscurity of many
	commands.  One instance of *deliberate* security through
	obscurity is recorded; the command to allow patching the
	running ITS system ({altmode} altmode control-R) echoed as
	$$^D.  If you actually typed alt alt ^D, that set a flag that
	would prevent patching the system even if you later got it
	right.

	(15 Dec 1994)

SED

	{smoke-emitting diode}

Sed

	<tool, text> Stream editor.

	The {Unix} stream editor.  It has a powerful but cryptic
	command language and is based on {regular expression}s.

	There is a {GNU} version called {GNU Sed}.

	(03 Nov 1994)

SEE

	1. {Simultaneous Engineering Environment}.

	2. {Software Engineering Environment}.

seek

	1. <storage> To move the head of a {disk drive} radially,
	i.e., to move from one {track} to another.

	2. <storage> To wind the {tape} to a given location.

	3. <programming> To move the pointer that marks the next {byte}
	to be read from or written to a {file}.

	(15 Jul 1997)

seeking

	{seek}

seek time

	<storage> The time it takes for a {disk drive} to move its
	head(s) from one {track} to another.  The seek time depends on
	the power of the servo, the mass of the heads, the number of
	tracks traversed and the time taken to position the heads over
	the target track accurately enough to start data transfer.

	See also: {average seek time}, {minimum seek time}, {maximum
	seek time}.

	(15 Jul 1997)

SEESAW

	<language> An early system on the {IBM 701}.

	[Listed in CACM 2(5):16 (May 1959)].

	(15 Dec 1994)

see u see me

	{CU-SeeMe}

SEGA

	<company, games> manufacturer of video game hardware and
	software.

	{Usenet} newsgroup: {news:rec.games.video.sega}.

	(01 Mar 1995)

segfault

	{segmentation fault}

seggie

	/seg'ee/ British shorthand for a {Unix} {segmentation fault}.

	(15 Dec 1994)

segment

	/seg'ment/ 1. <architecture> A collection of {pages} in a
	{memory management} system.

	2. <programming> A separately relocatable section of an
	executable program.  {Unix} executables have a {text segment}
	(executable machine instructions), a {data segment}
	(initialised data) and a {bss segment} (uninitialised data).

	3. <networking> {network segment}.

	4. To experience a {segmentation fault}.  Confusingly, the stress
	is often put on the first syllable, like the noun "segment",
	rather than the second like mainstream verb "segment".  This
	is because it is actually a noun shorthand that has been
	verbed.

	(15 Dec 1994)

segmentation fault

	An error in which a running {Unix} program attempts to access
	memory not allocated to it and terminates with a segmentation
	violation error and usually a {core dump}.

	(15 Dec 1994)

segmented address space

	<architecture> The {brain damaged} addressing scheme used on
	the {Intel 8086} and later Intel {microprocessors} (and maybe
	others(?))  where all memory references are formed by adding a
	16-bit offset to a 16-bit base address held in one of four
	segment base registers.  Each instruction has a default
	segment (code (CS), data (DS), stack (SS), ? (ES)) which
	determines which segment register is used.  Special prefix
	instructions allow this default to be overridden.

	The effect is to segment memory into blocks, of 64 {kilobytes}
	in the case of the Intel processors.  Blocks may overlap
	either partially or completely, depending on the contents of
	the segment registers but normally they would be distinct to
	give access to the maximum total range of addresses.  In this
	case the scheme does provide some degree of {memory
	protection} within a single process since, for example, a data
	reference cannot affect an area of memory containing code.
	However, compilers must either generate slower code or code
	with artificial limits on the size of {data structures}.

	Opposite: {flat address space}.  See also {addressing mode}.

	(21 Dec 1996)

segv

	/seg'vee/ segmentation violation.

	{segmentation fault}

	(15 Dec 1994)

SEI

	Software Engineering Institute.

	(Carnegie Mellon University).

Seiko RC-4000

	A wristwatch with an {RS-232} interface.  A clip fitted round
	the watch and made electrical contact.  This clip had a socket
	for a stereo style jack lead the other end of which was a
	25-way {D-type} connector.  The lead allowed you to enter
	phone numbers etc. into the watch without having to play with
	tiny buttons.  It also meant if the battery on your watch ran
	out you could restore the data without having to type it all
	in again.

	It was around the era of the 8-bit home computers like the
	{Spectrum}, {BBC Microcomputer}, {Apple II}, {C64} - the
	1980s.

	(30 Jan 1995)

SEL

	1. {Self-Extensible Language}.

	2. {Subset-Equational Language}.

Selective Dissemination of Information

	<library> (SDI) (From Library Science) SDI is a current
	awareness system which alerts you to the latest publications
	in your specified field(s) of interest.

	A user registers at such a system with keywords representing
	his or her fields of interest, called a search profile.  When
	new publications matching the search profile appear, the
	system informs the user of them instantly, periodically or
	upon request.  Some systems may also be able to inform the
	user if changes in already notified publications occur.

	{Health Science Library SDI
	(http://www-hsl.mcmaster.ca/sdi.html)}.  {FIZ Karlsruhe
	Scientific Service Institution
	(http://www.fiz-karlsruhe.de/mc-sdi.html)}.

	(10 Mar 1997)

selector

	<programming> 1. In {Smalltalk} or {Objective C}, the {syntax}
	of a message which selects a particular {method} in the target
	{object}.

	2. An operation that returns the state of an object but does
	not alter that state.  Selector {functions} or {methods} often
	have names which begin with "get" and corresponding {modifier}
	methods or {procedures} whose names begin with "set".

	(12 Jan 1998)

Self

	A small, {dynamically typed} {object-oriented language}, based
	purely on {prototype}s and {delegation}.  Self was developed
	by the Self Group at {Sun Microsystems Laboratories, Inc.} and
	{Stanford University}.  It is an experimental exploratory
	programming language.

	Release 2.0 introduces full source-level debugging of
	optimised code, adaptive optimisation to shorten compile
	pauses, {lightweight thread}s within Self, support for
	dynamically linking {foreign function}s, changing programs
	within Self and the ability to run the experimental Self
	graphical browser under {OpenWindows}.  Designed for
	expressive power and malleability, Self combines a pure,
	{prototype}-based object model with uniform access to state
	and behaviour.  Unlike other languages, Self allows objects to
	inherit state and to change their patterns of inheritance
	dynamically.  Self's customising compiler can generate very
	efficient code compared to other dynamically-typed
	object-oriented languages.

	Version: 3.0 runs on {Sun-3} (no optimiser) and {Sun-4}.

	{(ftp://self.stanford.edu/)}.  Mailing list:
	self-request@self.stanford.edu.

	["Self: The Power of Simplicity", David Ungar
	<ungar@sun.eng.com> et al, SIGPLAN Notices 22(12):227-242
	(OOPSLA '87) (Dec 1987)].

	(13 Aug 1992)

Self-Extensible Language

	["SEL - A Self-Extensible Programming Language", G. Molnar,
	Computer J 14(3):238-242 (Aug 1971)].

	(15 Dec 1994)

Self Extracting Archive

	<file format> (SEA) An {archive} format used on the {Apple
	Macintosh}.  {Double-click}ing a file of this type should
	extract its contents.

	(02 May 1995)

self-reference

	See {self-reference}.

selvage

	{chad}

SEM

	The semantic specification language for {COPS}.

	["Metalanguages of the Compiler Production System COPS",
	J. Borowiec, in GI Fachgesprach "Compiler-Compiler", ed
	W. Henhapl, Tech Hochs Darmstadt 1978, pp. 122-159].

semantic gap

	The difference between the complex operations performed by
	{high-level language} constructs and the simple ones provided
	by computer {instruction set}s.  It was in an attempt to try
	to close this gap that computer architects designed
	increasingly {complex instruction set computer}s.

	(10 Oct 1994)

semantics

	<theory> The meaning of a string in some language, as opposed
	to {syntax} which describes how symbols may be combined
	independent of their meaning.

	The semantics of a programming language is a function from
	programs to answers.  A program is a {closed term} and, in
	practical languages, an answer is a member of the syntactic
	category of values.  The two main kinds are {denotational
	semantics} and {operational semantics}.

	(21 Jun 1995)

semaphore

	The classic method for restricting access to shared resources
	(e.g. storage) in a {multi-processing} environment.  They were
	invented by Dijkstra and first used in {T.H.E} {operating
	system}.

	A semaphore is a {protected variable} (or {abstract data
	type}) which can only be accessed using the following
	operations:

		P(s)
		Semaphore s;
		{
		  while (s == 0) ;	/* wait until s>0 */
		  s = s-1;
		}

		V(s)
		Semaphore s;
		{
		  s = s+1;
		}

		Init(s, v)
		Semaphore s;
		Int v;
		{
		  s = v;
		}

	P and V stand for Dutch "Proberen", to test and "Verhogen", to
	increment.  The value of a semaphore is the number of units of
	the resource which are free (if there is only one resource a
	"binary semaphore" with values 0 or 1 is used).  The P
	operation {busy-wait}s (or maybe {sleep}s) until a resource is
	available whereupon it immediately claims one.  V is the
	inverse, it simply makes a resource available again after the
	process has finished using it.  Init is only used to
	initialise the semaphore before any requests are made.  The P
	and V operations must be {indivisible}, i.e. no other process
	can access the semaphore during the their execution.

	To avoid {busy-wait}ing, a semaphore may have an associated
	{queue} of processes (usually a {FIFO}).  If a process does a
	P on a semaphore which is zero the process is added to the
	semaphore's queue.  When another process increments the
	semaphore by doing a V and there are tasks on the queue, one
	is taken off and resumed.

	(01 Feb 1995)

semi

	/se'mee/ or /se'mi:/ A spoken abbreviation for semicolon.

	"Commands to {grind} are prefixed by semi semi star" means
	that the prefix is ";;*", not 1/4 of a star.

	(31 Jan 1995)

semicolon

	;

	Common: {ITU-T}: semicolon; {semi}.  Rare: weenie; {INTERCAL}:
	hybrid, pit-thwong.

semiconductor

	<electronics> A material, typically crystaline, which allows
	{current} to flow under certain circumstances.  Common
	semiconductors are silicon, germanium, gallium arsenide.
	Semiconductors are used to make {diodes}, {transistors} and
	other basic "solid state" electronic components.

	As crystals of these materials are grown, they are "doped"
	with traces of other elements called {donors} or {acceptors}
	to make regions which are n- or p-type respectively for the
	{electron model} or p- or n-type under the {hole model}.
	Where n and p type regions adjoin, a junction is formed which
	will pass {current} in one direction (from p to n) but not the
	other, giving a {diode}.

	One {model} of semiconductor behaviour describes the doping
	elements as having either {free electrons} or {holes} dangling
	at the points in the crystal lattice where the doping elements
	replace one of the atoms of the foundation material.  When
	external electrons are applied to n-type material (which
	already has free electrons present) the repulsive force of
	like charges causes the free electrons to migrate toward the
	junction, where they are attracted to the holes in the p-type
	material.  Thus the junction conducts current.

	In contrast, when external electrons are applied to p-type
	material, the attraction of unlike charges causes the holes to
	migrate away from the junction and toward the source of
	external electrons.  The junction thus becomes "depleted" of
	its charge carriers and is non-conducting.

	(04 Oct 1995)

Semidetached Mode

	<programming> A term used by {COCOMO} to describe a project
	development somewhere between organic and embedded.  The team
	members have a mixture of experienced and inexperienced
	personnel.  The software to be developed has some
	characteristics of both organic and embedded modes.
	Semidetached software can be as large as 300K {DSI}s.

	(29 May 1996)

SENDIT

	Systems Engineering for Network Debugging, Integration and
	Test.  A two-year European Commission funded project to
	produce software tools for distributed applications running on
	networks of microcontrollers.

	(21 Jul 1994)

sendmail

	<messaging> The {BSD} {Message Transport Agent} supporting
	mail transport via {TCP/IP} using {SMTP}.  sendmail is
	normally invoked via a {Mail User Agent} such as the {mail}
	command, but the command

		sendmail -bv ADDRESS

	can be used to learn what the local mail system thinks of
	ADDRESS.  You can also talk to the sendmail {daemon} on a
	remote host FOO with the command

		telnet FOO 25

	(07 Feb 1996)

sendmail.cf

	<messaging> {sendmail}'s configuration file, which it reads
	once when starting up, usually found in the /etc directory.

	Only real {Unix Gurus} can understand, let alone modify, this
	file since it consists moslty of {header} {rewrite rules}
	written as {M4} {macros}, as well as various other one- or
	two-character commands.

	(09 Dec 1996)

Seneca

	See {Oberon-V}.

senior bit

	[IBM]  Synonym {meta bit}.

sensor

	<hardware> An electronic device used to measure a physical
	quantity such as temperature, pressure or loudness and convert
	it into an electronic signal of some kind (e.g a voltage).
	Sensors are normally components of some larger electronic
	system such as a computer control and/or measurement system.

	Analog sensors most often produce a voltage proportional to
	the measured quantity.  The signal must be converted to
	digital form with a {ADC} before the CPU can process it.

	Digital sensors most often use serial communication such as
	{RS-232} to return information directly to the controller or
	computer through a {serial port}.

	(15 Apr 1997)

sentence

	<logic> A collection of {clauses}.

	(08 Dec 1996)

SE-ODP

	Support Environment for Open Distributed Processing.  An
	{ECMA} {standard}.

SEP

	1. Someone Else's Problem.

	2. <tool> A {SASD} tool from {IDE}.

	(12 Oct 1995)

SEPIA

	Standard ECRC Prolog Integrating Applications.  Prolog with
	many extensions including attributed variables ("metaterms")
	and declarative coroutining.  "SEPIA", Micha Meier
	<micha@ecrc.de> et al, TR-LP-36 ECRC, March 1988.  Version 3.1
	available for Suns and VAX.  (See ECRC-Prolog).  E-mail:
	<sepia-request@ecrc.de>.

Seque

	"Seque: A Programming Language for Manipulating Sequences",
	R.E.  Griswold et al, Comp Langs 13(1):13-22 (1988).

Sequel

	1. Precursor to SQL.

	["System R: Relational Approach to Database Management", IBM
	Res Lab, San Jose, reprinted in Readings in Database Systems].

	2. U Leeds.  Theorem prover specification language.  Pattern
	matching notation similar to Prolog.  Compiled into Lisp.

	[Proc ICJAI 13].

	{(ftp://agora.leeds.ac.uk/scs/logic/)}

Sequenced Packet Exchange

	<networking, protocol> (SPX) A {transport layer} {protocol}
	built on top of {IPX}.  SPX is used in {Novell NetWare}
	systems for communications in {client/server} {application
	programs}, e.g. {BTRIEVE} ({ISAM} manager).

	SPX is not used for connections to the {file server} itself;
	this uses {NCP}.  It has been extended as SPX-II.  SPX/IPX
	perform equivalent functions to {TCP/IP}.

	{(http://www.novell.com/bintid/021910.tid)}.

	(05 Jun 1997)

Sequent

	<company> A computer manufacturer.

	Quarterly sales $109M, profits $7M (Aug 1994).

	[Details?  Address?]

	(26 Sep 1994)

sequential file matching

	A programming technique that matches records in one sequential
	file with records in another sequential file.  The records are
	accessed in the physical order in which they are stored.

	(02 Nov 1994)

Sequential Parlog Machine

	(SPM) The {virtual machine} (and its machine code) for the
	{Parlog} {logic programming} language.

	{(ftp://nuri.inria.fr/lang/Parlog.tar.Z)}

	["Parallel Logic Programming in PARLOG", Steve Gregory,
	Addison-Wesely, UK, 1987].

sequential processing

	Running a single task to completion on a single processor, in
	contrast to {parallel processing} or {multitasking}.

	(23 Apr 1995)

SERC

	{Science and Engineering Research Council}

SERCOS

	{serial real-time communications system}

	[What is it?]

	["More choices link motors and drives to controls", by
	L. Langnau.  Power Transmission Design, vol. 37, no. 7,
	pp. 33-36].

	(23 Jan 1996)

serial communications interface

	<hardware> (SCI) The same as a {serial port}?

	(14 Feb 1998)

Serial Interface Adaptor

	(SIA) The {Ethernet} driver chip used on a {Filtabyte}
	Ethernet card.

serial line

	Wires which connect two {serial port}s carrying serial data
	consisting of sequential bits represented by one of two
	voltages.

	A common electrical specification for the signals on a serial
	line is {RS-423}.

	{(ftp://ftp.acorn.co.uk/pub/documents/appnotes/231-245/234.ps)}

	(02 Feb 1995)

Serial Line Internet Protocol

	<communications, protocol> (SLIP) Software allowing the
	{Internet Protocol} (IP), normally used on {Ethernet}, to be
	used over a {serial line}, e.g. an {RS-232} {serial port}
	connected to a {modem}.  It is defined in {RFC} 1055.

	SLIP modifies a standard {Internet} {datagram} by appending a
	special SLIP END character to it, which allows datagrams to be
	distinguished as separate.  SLIP requires a port configuration
	of 8 data bits, no {parity}, and {EIA} or {hardware flow
	control}.  SLIP does not provide {error detection}, being
	reliant on other high-layer protocols for this.  Over a
	particularly error-prone {dial-up} link therefore, SLIP on its
	own would not be satisfactory.

	A SLIP connection needs to have its {IP address} configuration
	set each time before it is established whereas {Point-to-Point
	Protocol} (PPP) can determine it automatically once it has
	started.

	See also {SLiRP}.

	(30 Apr 1995)

Serial Line IP

	(SLIP) {Serial Line Internet Protocol}.

serial port

	<hardware, communications> (Or "com port") A connector on a
	computer to which you can attach a {serial line} connected to
	peripherals which communicate using a serial (bit-stream)
	{protocol}.  The most common type of serial port is a 25-pin
	D-type connector carrying {RS-232} signals.  Smaller
	connectors (e.g. 9-pin {D-type}) carrying a subset of RS-232
	are often used on {personal computer}s.  The serial port is
	usually connected to an {integrated circuit} called a {UART}
	which handles the conversion between serial and parallel data.

	In the days before bit-mapped displays, and today on
	{multi-user} systems, the serial port was used to connect one
	or more terminals ({teletype}s or {VDU}s), printers, {modem}s
	and other serial peripherals.  Two computers connected
	together via their serial ports, possibly via {modem}s, can
	communicate using a {protocol} such as {UUCP} or {CU} or
	{SLIP}.

	(12 Jan 1995)

serial processing

	{sequential processing}

Serial Storage Architecture

	(SSA) IBM's proposed ANSI standard for a standard high-speed
	interface to disk clusters and arrays.  SSA allows
	{full-duplex} {packet multiplexed} serial data transfers at
	rates of 20Mb/sec in each direction.

	According to John Taylor, programme manager at IBM's Storage
	Division at Havant, SSA will be used in arrays of discs
	working with high-end computers ranging from mainframes down
	to LAN servers.  Taylor said that SSA differs from the {IEEE}
	proposed {P1394} serial interface specification in its ability
	to offer simultaneous multiplexed transfers from more than one
	disk or array.  IBM also supports the P1394 standard which
	will be used primarily by desktop PCs for {multimedia}
	applications.

	SSA has received backing from a number of companies including
	connector makers Molex, ITT Cannon and AMP, disk drive makers
	Conner and Western Digital and RAID array suppliers like
	Dynatech and NCR.  IBM expects to see the first SSA products
	released at Comdex in Autumn 1994 but it will be 1995 before
	the products ship in volume.

	Under an agreement signed with {ASIC} maker and {ARM} licencee
	{VLSI Technology}, IBM will use ARM-based chips made by VLSI
	to implement the SSA interface and VLSI will make these cores
	available to third parties as one of its Functional System
	Blocks.

serve

	<networking> To be a {server}, to provide a {service}.

	E.g., "The {shttpd} serves requested documents to clients over
	a secure link."

	(11 Sep 1997)

server

	1. A program which provides some service to other ({client})
	programs.  The connection between client and server is
	normally by means of message passing, often over a network,
	and uses some {protocol} to encode the client's requests and
	the server's responses.  The server may run continuously (as a
	{daemon}), waiting for requests to arrive or it may be invoked
	by some higher level daemon which controls a number of
	specific servers ({inetd} on {Unix}).  There are many servers
	associated with the Internet, such as those for {Network File
	System}, {Network Information Service} (NIS), {Domain Name
	System} (DNS), {FTP}, {news}, {finger}, {Network Time
	Protocol}.  On Unix, a long list can be found in /etc/services
	or in the {NIS} database "services".  See {client-server}.

	2. A computer which provides some service for other computers
	connected to it via a network.  The most common example is a
	{file server} which has a local disk and services requests
	from remote clients to read and write files on that disk,
	often using {Sun}'s {Network File System} (NFS) {protocol} or
	{Novell Netware} on {IBM PC}s.

	(08 Sep 1996)

server-parsed HTML

	<file format, World-Wide Web> (SPML, SHTML) A kind of {HTML}
	file containing server-specific, non-standard commands which
	are interpreted by the {HTTP server} and replaced by standard
	HTML or text before the data is returned to the client.

	Different servers use different command syntax and support
	different sets of commands.  The most common example is a
	{server-side include} command which simply expands to the
	contents of some given file and allows bits of HTML or text to
	be shared between pages for ease of updating.  Other commands
	insert the value of {an environment variable} or the output of
	a shell command.  These allow pages to be different each time
	they are served without requiring a {CGI} script.

	Some servers distinguish SPML from HTML with a different
	{filename extension}, others use the execute bit of the file's
	permissions.

	(29 Sep 1996)

server-side include

	<World-Wide Web> (SSI) The facility provided by several {HTTP}
	{servers}, e.g. {NCSA httpd}, to replace certain {HTML} {tag}s
	in one {HTML} file with the contents of another file at the
	time when the file is sent out by the server, i.e. an {HTML}
	{macro}.

	{NCSA httpd tutorial
	(http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html)}.

	(08 Sep 1996)

service

	<networking, programming> Work performed (or offered) by a
	{server}.  This may mean simply serving simple requests for
	data to be sent or stored (as with {file servers}, {gopher} or
	{http} servers, {e-mail} servers, {finger} servers, {SQL}
	servers, etc.); or it may be more complex work, such as that
	of {irc} servers, print servers, {X Windows} servers, or
	process servers.

	E.g. "Access to the finger {service} is restricted to the
	local {subnet}, for security reasons".

	(11 Sep 1997)

Service Access Point

	<networking> (SAP) The {OSI} term for the component of a
	network address which identifies the individual application on
	a host which is sending or receiving a {packet}.

	{TCP/IP}'s equivalent term is "{port}".

	Different SAPs distinguish between different services or
	applications on a host, e.g. {electronic mail}, {FTP}, {HTTP}.

	(23 Dec 1996)

Service Advertising Protocol

	<networking> (SAP) A {Novell NetWare} {protocol}.  SAP follows
	the spirit of the {Xerox} {Clearinghouse} protocol, it permits
	file, print, and gateway servers to advertise their services
	and addresses.

	(13 Jan 1996)

service provider

	<communications> An organisation that provides a service by
	telephone, such as an 0800 (toll free) number.  The service
	provider buys the services of a telecom supplier (e.g. BT) but
	advertises the service and deals with the calls itself.
	Increasingly, service providers are now also managing their
	advanced {call-routing}.

	(27 Aug 1996)

servlet

	<World-Wide Web> {Java} code that runs as part of a {network}
	service, typically an {HTTP server} and responds to requests
	from {clients}.  For example, a {client} may need
	{information} from a {database}; a servlet can be written that
	receives the request, gets and processes the data as needed by
	the {client} and then returns the result to the {client}.

	Servlets are named after {applets} which are also written in
	{Java} but which run inside the {JVM} of a {HTML} {browser} on
	the {client}.  Servlets and applets allow the server and
	client to be extended in a modular way by dynamically loading
	code which communicates with the main program via a standard
	programming interface.

	{(http://jeeves.javasoft.com/products/java-server/servlets/index.html)}.

	(27 Jan 1998)

session

	<networking> 1. A lasting connection between a user (or user
	agent) and a {peer}, typically a {server}, usually involving
	the exchange of many packets between the user's computer and
	the server.  A session is typically implemented as a layer in
	a network {protocol} (e.g. {telnet}, {FTP}).

	In the case of protocols where there is no concept of a
	session layer (e.g. {UDP}) or where sessions at the {session
	layer} are generally very short-lived (e.g. {HTTP}), {virtual}
	sessions are implemented by having each exchange between the
	user and the remote host include some form of {cookie} which
	stores state (e.g. a unique session ID, information about the
	user's preferences or authorization level, etc.).

	See also {login}.

	2. A lasting connection using the {session layer} of a
	networking protocol.

	(03 Aug 1997)

session layer

	<networking> The third highest {layer} (layer 5) in the {OSI}
	seven layer model.  The session layer uses the {transport
	layer} to establish a {connection} between processes on
	different {hosts}.  It handles {security} and creation of the
	session.  It is used by the {presentation layer}.

	Documents: {ITU} Rec. X.225 ({ISO} 8327), ITU Rec. X.215 (ISO
	8326).

	[Examples?]

	(07 Dec 1997)

SES/workbench

	<tool, simulation> An iconic {simulation} and design tool,
	linked to some of the major {CASE} systems now available or in
	development.

	(28 Mar 1996)

SET

	Standard d'Echange et de Transfert.  A French {standard} for
	exchange of {CAD} data.

set

	A collection of objects, known as the elements of the set,
	specified in such a way that we can tell in principle whether
	or not a given object belongs to it.  E.g. the set of all prime
	numbers, the set of zeros of the cosine function.

	For each set there is a {predicate} (or property) which is
	true for (posessed by) exectly those objects which are
	elements of the set.  The predicate may be defined by the set
	or vice versa.  Order and repetition of elements within the
	set are irrelevant so, for example, {1, 2, 3} = {3, 2, 1} =
	{1, 3, 1, 2, 2}.

	Some common set of numbers are given the following names:

	N = the {natural number}s 0, 1, 2, ...

	Z = the {integer}s ..., -2, -1, 0, 1, 2, ...

	Q = the {rational number}s p/q where p, q are in Z and q /= 0.

	R = the {real number}s

	C = the {complex number}s.

	The empty set is the set with no elements.  The intersection
	of two sets X and Y is the set containing all the elements x
	such that x is in X and x is in Y.  The union of two sets is
	the set containing all the elements x such that x is in X or x
	is in Y.

	See also {set complement}.

	(24 Jan 1995)

set abstraction

	See {list comprehension}.

set associative cache

	A compromise between a {direct mapped cache} and a {fully
	associative cache} where each address is mapped to a certain
	set of cache locations.  The address space is divided into
	blocks of m bytes (the {cache line} size), discarding the
	bottom m address bits.  An "n-way set associative" cache with
	S sets has n cache locations in each set.  Block b is mapped
	to set "b mod S" and may be stored in any of the n locations
	in that set with its upper address bits as a tag.  To
	determine whether block b is in the cache, set "b mod S" is
	searched associatively for the tag.

	A direct mapped cache could be described as "one-way set
	associative", i.e. one location in each set whereas a fully
	associative cache is N-way associative (where N is the total
	number of blocks in the cache).  Performance studies have
	shown that is is generally more effective to increase number
	of entries rather than associativity and that 2- to 16-way set
	associative caches perform almost as well as fully associative
	caches at little extra cost over direct mapping.

set complement

	The complement of set A in set U is all elements of U which
	are not elements of A.

	(24 Jan 1995)

set comprehension

	See {list comprehension}.

Setext

	A markup scheme intended for documents that are both human-
	and computer-readable.

SETL

	SET Language.  A very high level language based on sets,
	designed by Jack Schwartz at the {Courant Institute} in the
	early 1970s.  It was possibly the first use of {list
	comprehension} notation.

	Data types include sets (unordered collections), {tuple}s
	(ordered collections) and maps (collections of ordered pairs).
	Expressions may include {quantifier}s ('for each' and
	'exists').  The first {Ada} translator was written in SETL.

	See also {ISETL}, {ProSet}, {SETL2}.

	["Programming With Sets - An Introduction to SETL", Jacob
	T. Schwartz et al, Springer 1986].

SETL2

	{SETL} with more conventional {Ada}-like syntax, {lexical
	scope}, full block structure, {first-class function}s and a
	package and library system.  Ported to {OS/2}, {MS-DOS} (3.1
	up), Extended {MS-DOS} (80286 and higher processors with
	extended memory), {Macintosh} (with the {MPW} environment),
	Sun 3 (SunOS 4), Sun 4 (SunOS 4), IBM RS/6000 (AIX 3.1), DEC
	RISC product line (Ultrix 4.0), DEC Vaxen (Mt. Xinu Unix or
	VMS).

	{(ftp://cs.nyu.edu/pub/languages/setl2)}.  Please e-mail Kirk
	Snyder <snyder@spunky.cs.nyu.edu> if you take a copy.

	["The SETL2 Programming Language", W. Kirk Snyder, Courant
	Inst TR 490, Jan 1990].

SETL/E

	See {ProSet}.

Set Priority Level

	(SPL) The way traditional {Unix} {kernel}s implement {mutual
	exclusion} by running code at high {interrupt priority level}s
	and thus blocking lower level interrupts.

	(23 Nov 1994)

SETS

	Set Equation Transformation System.

	Symbolic manipulation of Boolean equations.  "Efficient
	Ordering of Set Expressions for Symbolic Expansion",
	R.G. Worrell et al, J ACM 20(3):482-488 (Jul 1973).

set theory

	<mathematics> A mathematical formalisation of the theory of
	"sets" (aggregates or collections) of objects ("elements" or
	"members").  Many mathematicians use set theory as the basis
	for all other mathematics.

	Mathematicians began to realise towards the end of the 19th
	century that just doing "the obvious thing" with sets led to
	embarrassing {paradox}es, the most famous being {Russell's
	Paradox}.  As a result, they acknowledged the need for a
	suitable {axiomatisation} for talking about sets.  Numerous
	such axiomatisations exist; the most popular among ordinary
	mathematicians is {Zermelo Frnkel set theory}.

	{The beginnings of set theory
	(http://www-groups.dcs.st-and.ac.uk/~history/HistoryTopics.html)}.

	(10 May 1995)

set-top box

	<communications, networking> (STB) Any electronic device
	designed to produce output on a conventional televesion set
	(on top of which it nominally sits) and connected to some
	other communications channels such as telephone, {ISDN},
	{optical fibre} or cable.  The STB usually runs software to
	allow the user to interact with the programmes shown on the
	television in some way.

	{Online Media} are one STB manufacturer.

	(16 May 1997)

SEUS

	R. Weyrauch et al.  Language allowing functions to return
	multiple values.  Implemented but never published.  Mentioned
	in "Evolution of Lisp", G.L. Steele et al, SIGPLAN Notices
	28(3):231-270 (March 1993).

seven layer model

	{Open Systems Interconnect}

SEX

	/seks/ [Sun Users' Group & elsewhere] 1. Software EXchange.  A
	technique invented by the blue-green algae hundreds of
	millions of years ago to speed up their evolution, which had
	been terribly slow up until then.  Today, SEX parties are
	popular among hackers and others (of course, these are no
	longer limited to exchanges of genetic software).  In general,
	SEX parties are a {Good Thing}, but unprotected SEX can
	propagate a {virus}.  See also {pubic directory}.

	2. The rather Freudian mnemonic often used for Sign EXtend, a
	machine instruction found in the {PDP-11} and many other
	architectures.  The RCA 1802 chip used in the early Elf and
	SuperElf personal computers had a "SEt X register" SEX
	instruction, but this seems to have had little folkloric
	impact.

	DEC's engineers nearly got a {PDP-11} {assembler} that used
	the "SEX" mnemonic out the door at one time, but (for once)
	marketing wasn't asleep and forced a change.  That wasn't the
	last time this happened, either.  The author of "The Intel
	8086 Primer", who was one of the original designers of the
	8086, noted that there was originally a "SEX" instruction on
	that processor, too.  He says that Intel management got cold
	feet and decreed that it be changed, and thus the instruction
	was renamed "CBW" and "CWD" (depending on what was being
	extended).  The Intel 8048 (the microcontroller used in IBM PC
	keyboards) is also missing straight "SEX" but has logical-or
	and logical-and instructions "ORL" and "ANL".

	The {Motorola 6809}, used in the UK's "{Dragon 32}" {personal
	computer}, actually had an official "SEX" instruction; the
	{6502} in the {Apple II} with which it competed did not.
	British hackers thought this made perfect mythic sense; after
	all, it was commonly observed, you could (on some theoretical
	level) have sex with a dragon, but you can't have sex with an
	apple.

sexadecimal

	{hexadecimal}

sex changer

	Synonym {gender mender}.

SEXI

	String EXpression Interpreter.  Early name of SNOBOL.

Seymour Cray

	<person> The founder of {Cray Research} and designer of
	several of their {supercomputers}.

	Cray has been a charismatic yet somewhat reclusive figure.  He
	began Cray Research in Minnesota in 1972.  In 1988, Cray moved
	his {Cray-3} project to Colorado Springs.  The next year, Cray
	Research spun it off to create {Cray Computer}.  In 1989, Cray
	left Cray Research and started Cray Computer Corporation in Colorado
	Springs.

	His quest to build a faster computer using new-generation
	materials failed in 1995, and his bankruptcy cost half a
	billion dollars and more than 400 jobs.  The company was
	unable to raise $20 million needed to finish the {Cray-4} and
	filed for bankruptcy in March 1995.

	In the summer of 1996, Cray started a Colorado Springs-based
	company called {SRC Computers, Inc.}  "We think we'll build
	computers, but who knows what kind or how," Cray said at the
	time.  "We'll talk it over and see if we can come up with a
	plan."

	On 22 Sep 1996, aged 70, Cray broke his neck in a car
	accident.  Surgery for massive head injuries and swelling of
	the brain leaving him in a critical and unstable condition.

	(02 Mar 1997)

SFBI

	Shared Frame Buffer Interconnect (Intel)

SFD-ALGOL

	System Function Description-ALGOL.  Extension of ALGOL for
	synchronous systems.  Sammet 1969, p.625.

SFL

	System Function Language.  Assembly language for the ICL2900.
	"SFL Language Definition Manual", TR 6413, Intl Computers Ltd.

SFLV

	Unifies logic and functional programming.  SASL+LV with
	unification moved from actual/formal parameter matching to
	equational clauses.  "Static Analysis of Functional Programs
	with Logical Variables", G. Lindstrom in Programming Languages
	Implementation and Logic Programming, P. Deransart et al eds,
	LNCS 348, Springer 1988.

SGI

	{Silicon Graphics, Inc.}

SGML

	{Standard Generalized Markup Language}

sgmls

	<language, tool> Sgmls is an {SGML} {parser} derived from the
	{ARCSGML} parser materials which were written by Charles
	Goldfarb.  It outputs a simple, easily parsed, line oriented,
	{ASCII} representation of an SGML document's Element Structure
	Information Set (see pp 588-593 of "The SGML Handbook").  It
	is intended to be used as the front end for
	structure-controlled SGML {application program}s.

	Version 1.1 for {Unix} and {MS-DOS} by James Clark
	<jjc@jclark.com> and Charles Goldfarb.

	{(ftp://ftp.uu.net/pub/text-processing/sgml/sgmls-1.0.tar.Z)},
	{(ftp://ftp.jclark.com/sgmls/sgmls-1.1.tar.Z)}.

	E-mail: James Clark <jjc@jclark.com>.

	(22 Feb 1993)

SGML Tagger

	<tool> A tool to assist with adding {SGML} to a piece of text.
	The Tagger only lets the user insert a mark-up tag which is
	correct in that particular context.

	{(http://www1.oup.co.uk/cite/oup/E-P/Humanities/The_SGML_Tagger/)}.

	(18 Mar 1997)

SGRAM

	{Synchronous Graphics Random Access Memory}

sh

	{Bourne shell}

SHACO

	An early system on the {IBM 701}.

	[Listed in CACM 2(5):16 May 1959].

	(25 Oct 1995)

SHADOW

	A {syntax}-directed {compiler} written by Barnett and Futrelle
	in 1962.  It was the predecessor to {SNOBOL}(?)

	[Sammet 1969, p. 448, 605].

	(16 Jan 1995)

shadow ram

	A memory area in {PC-AT} compatibles used to store frequently
	accessed {ROM} code to speed up operation.

	(16 Jan 1995)

shallow binding

	A method of storing variable bindings where the current value
	of a variable can be found at at a known location rather than
	by searching an environment or association list.  When a new
	binding is made, the old value is copied into the environment.

shambolic link

	/sham-bol'ik link/ A Unix symbolic link, particularly when it
	confuses you, points to nothing at all, or results in your
	ending up in some completely unexpected part of the
	file system.

Shape_VC

	A {code management} system which offers version control
	functionality similar to systems like {RCS} or {SCCS} with
	some extensions and a more {Unix}-like command interface.

	(04 Nov 1994)

ShapeTools

	<tool, programming> A {code management} system for {Unix} from
	The {Technical University of Berlin}.

	(11 May 1995)

shar

	<tool, file format> ("Shell archive", after {ar} and {tar})
	Any of the many {Unix} programs that creates a {flatten}ed
	representation of one or more files, with the unique property
	that it can be unflattened (the original files extracted)
	merely by feeding it through a standard {Unix} {shell}.  The
	output of shar, known as a "shar file" or "sharchive", can be
	distributed to anyone running {Unix}, and no special unpacking
	software is required.

	Sharchives are intriguing in that they are typically created
	by shell scripts; the script that produces sharchives is thus
	a script which produces self-unpacking scripts, which may
	themselves contain scripts.  The disadvantage of sharchives
	are that they are an ideal venue for {Trojan horse} attacks
	and that, for recipients not running Unix, no simple
	un-sharchiving program is possible; sharchives can and do make
	use of arbitrarily-powerful shell features and other Unix
	commands.

	Different implementations of shar vary in sophistication.
	Some just {uuencode} each input file and output commands to
	{uudecode} the result, others include extensive checking to
	make sure the files have been transferred without corruption
	and that all parts of a multi-file sharchive have been
	unpacked.

	The {unshar} utility strips off mail and news headers before
	passing the remainder of its input to sh.

	(18 Oct 1996)

sharchive

	{shar}

Share and enjoy!

	1. Commonly found at the end of software release announcements
	and {README file}s, this phrase indicates allegiance to the
	hacker ethic of free information sharing (see {hacker ethic}).

	2. The motto of the Sirius Cybernetics Corporation (the
	ultimate gaggle of incompetent {suit}s) in Douglas Adams's
	"Hitch Hiker's Guide to the Galaxy".  The irony of using this
	as a cultural recognition signal appeals to {freeware}
	hackers.

shared memory

	1. Memory in a {parallel computer}, usually {RAM}, which can
	be accessed by more than one processor, usually via a shared
	{bus} or network.

	It usually takes longer for a processor to access shared
	memory than to access its own private memory because of
	contention for the processor-to-memory connections and because
	of other overheads associated with ensuring synchronised
	access.  Computers using shared memory usually have some kind
	of local {cache} on each processor to reduce the number of
	accesses to shared memory.  This requires a {cache
	consistency} {protocol} to ensure that one processor's cached
	copy of a shared memory location is invalidated when another
	processor writes to that location.

	The alternative to shared memory is {message passing} where
	all memory is private to some particular processor and
	processors communicate by sending messages down special
	links.  This is usually slower than shared memory but it
	avoids the problems of contention for memory and can be
	implemented more cheaply.

	2. Memory which can be access by more than one process in a
	{multitasking} {operating system} with memory protection.
	Some {Unix} variants, e.g. {SunOS} provide this kind of shared
	memory.

	{Unix manual pages}: shmop(2), shmctl(2), shmget(2).

	(20 Oct 1994)

Shared Time Repair of Big Electronic Systems

	<language> (STROBES) A language for computer testing.

	[Sammet 1969, p. 699].

	(06 Feb 1995)

shareware

	<software> /sheir'weir/ {Freeware} for which the author
	requests some payment, usually in the accompanying
	documentation files or in an announcement made by the software
	itself.  Such payment may buy additional support,
	documentation or functionality.

	See also {careware}, {charityware}, {crippleware},
	{guiltware}, {nagware}, {postcardware}, and {-ware}; compare
	{payware}.

	{The Conception of Shareware
	(http://www.halcyon.com/knopf/history.htm)}.

	(11 Oct 1997)

shar file

	{shar}

sharp

	<character> {hash}.

Sharp APL

	<language> (Or "Dictionary APL")

	["A Dictionary of the APL Language", K. Iverson, Pub 0402,
	Sharp Assocs, Toronto, 1985].

	{(ftp://watserv1.waterloo.edu/languages/apl/sharp.apl)}

	(02 Sep 1997)

shebang

	<operating system> (from '{sharp} and {bang}') A {magic
	cookie} marking {shell scripts}.

	Under {Unix}, if the first two bytes of an {executable} are
	'#!' the executable is treated as a shell script.  The word
	following the bang (i.e., everything up to the first
	{white-space}) is used as the interpreter.  For example, if
	the first line of an executable is

	 #!/usr/bin/perl

	the script will be treated as a shell script and /usr/bin/perl
	will be used to interpret it.  Some variants of Unix also
	allow parameters to be passed to the interpreter, for example,
	you can write

	 #!/usr/bin/perl -w

	and the script will be started as if you typed

	 /usr/bin/perl -w <filename>

	on the command line.  Also, most modern kernels ignore any
	white-space following the bang, so

	 #!/usr/bin/perl

	is equivalent to

	 #! /usr/bin/perl.

	(10 Mar 1997)

SHEEP

	Symbolic math, especially tensor analysis and General
	Relativity.  Inge Frick, Stockholm, late 70's to early 80's.
	Implemented in DEC-10 assembly language, then in several
	LISPs.  Current version for Sun-3, based on Portable Standard
	LISP.  "Sheep, a Computer Algebra System for General
	Relativity", J.E.F. Skea et al in Proc First Brazilian School
	on Comp Alg, W. Roque et al eds, Oxford U Press 1993, v2.

	{(ftp://galois.maths.gmw.ac.uk/homeftp/pub/sheep)}

shelf

	A public library of {class}es for the {Eiffel} language.

shelfware

	<jargon> /shelfweir/ {Software} which is never used and so
	ends up on the shelf.  Shelfware may be purchased on a whim by
	an individual, or in accordance with corporate policy, but not
	actually required for any particular use.  Alternatively, it
	may be software that has been developed (unlike {vaporware}),
	but is never released as a product -- a common occurance at
	{DEC}.

	(20 Jul 1997)

SHELL

	<language> An early system on the {Datatron 200} series.

	[Listed in CACM 2(5):16 (May 1959)].

	(11 May 1995)

shell

	1. <operating system> (Originally from {Multics}, widely
	propagated via {Unix}) The {command interpreter} used to pass
	commands to an {operating system}; so called because it is the
	part of the operating system that interfaces with the outside
	world.

	The commonest Unix shells are the c shell ({csh}) and the
	Bourne shell ({sh}).

	2. (Or "wrapper") Any interface program that mediates access
	to a special resource or {server} for convenience, efficiency,
	or security reasons; for this meaning, the usage is usually "a
	shell around" whatever.

	(11 May 1995)

shell out

	[Unix] To spawn an interactive subshell from within a program
	(e.g. a mailer or editor).  "Bang foo runs foo in a subshell,
	while bang alone shells out."

	(11 May 1995)

Shell Script

	A program written to be interpreted by the shell of an
	operating system, especially Unix.

SHIFT

	Scalable Heterogeneous Integrated Facility Testbed.  A
	parallel processing project at CERN.

Shift In

	<character> (SI, Control-O, {ASCII} 15) The character used on
	some ancient {teletypes} to start using an alternative
	{character set}.

	(24 Jun 1996)

shift left logical

	{logical shift}

Shift Out

	<character> (SO, Control-N, {ASCII} 14) The character which
	was used to "shift out" of an alternate character set on some
	ancient {teletype}s, reversing the effect of the {Shift In}
	(SI, ASCII 15) character.

	(24 Jun 1996)

shift right logical

	{logical shift}

shim

	A small piece of data inserted in order to achieve a desired
	memory alignment or other addressing property.  For example,
	the {PDP-11} {Unix} {linker}, in split I&D (instructions and
	data) mode, inserts a two-byte shim at location 0 in data
	space so that no data object will have an address of 0 (and be
	confused with the {C} null pointer).

	See also {loose bytes}.

	(21 Dec 1994)

shitogram

	/shit'oh-gram/ A *really* nasty piece of e-mail.

	Compare {nastygram}, {flame}.

	(21 Dec 1994)

Shockwave

	<tool> A program from {Macromedia} for viewing files created
	with Macromedia Director.  Shockwave is now freely available
	as a {plug-in} for the {Netscape Navigator} web {browser}.

	"Shocked" pages that incorporate documents created in Director
	can usually only be enjoyed by users with an {ISDN} or faster
	connection.

	[Filetypes?  More detail?  Address?]

	(03 Nov 1996)

shockwave

	<networking> The propagation of failure, shutdown, {meltdown},
	net overload, or a {virus} from one network node to another,
	resulting in a wave of inactivity across the net.

	(16 May 1997)

short card

	A half-length {IBM PC} expansion card or adaptor that will fit
	in one of the two short slots located towards the right rear
	of a standard chassis (tucked behind the floppy disk drives).
	See also {tall card}.

Short Code

	<language> (SHORTCODE) A {pseudocode} {interpreter} for
	mathematics problems, designed by {John Mauchly} in 1949 to
	execute on Eckert and Mauchly's {BINAC} and later on {UNIVAC
	I} and II.  Short Code was possibly the first attempt at a
	{high level language}.

	[Sammet 1969, p. 129].

	(01 Nov 1996)

shortcut

	<filesystem> {Microsoft Corporation}'s term for a {symbolic
	link}.  Shortcuts first appeared in 1996 in the {Windows 95}
	{operating system}.

	(22 Oct 1997)

Short Message Service

	<messaging> (SMS) A message service offered by the {GSM}
	digital {cellular telephone} system.

	Using SMS, a short alphanumeric message (160 alphanumeric
	characters) can be sent to a mobile phone to be displayed
	there, much like in an {alphanumeric pager} system.  The
	message is buffered by the GSM network until the phone becomes
	active.

	(18 Feb 1996)

shotgun debugging

	The software equivalent of {Easter egging}; the making of
	relatively undirected changes to software in the hope that a
	bug will be perturbed out of existence.  This almost never
	works, and usually introduces more bugs.

shovelware

	/shuh'v*l-weir"/ Extra software dumped onto a CD-ROM or tape
	to fill up the remaining space on the medium after the
	software distribution it's intended to carry, but not
	integrated with the distribution.

Show-And-Tell

	A visual {dataflow} language designed for use by elementary
	school children.

	["A Visual Language for Keyboardless Programming", T. Kimura
	et al, TR WUCS-86-6, CS Dept Washington U, Mar 1986].

	["Show and Tell: A Visual Language", T.D. Kimura et al in
	Visual Programming Environments: Paradigms and Systems,
	E.P. Glinert ed, IEEE Comp Sci Press, 1990, pp. 397-404].

	(31 Jan 1995)

showstopper

	A hardware or (especially) software {bug} that makes an
	implementation effectively unusable; one that absolutely has
	to be fixed before development can go on.  Opposite in
	connotation from its original theatrical use, which refers to
	something stunningly *good*.

	(31 Jan 1995)

shriek

	Exclamation mark.

	An occasional {CMU} usage, also in common use among {APL} fans
	and mathematicians, especially {category} theorists.

	See {excl}.

	(31 Jan 1995)

sht

	{server-parsed HTML}

shtml

	{server-parsed HTML}

Shub-Internet

	/shuhb in't*r-net/ (MUD, from H. P. Lovecraft's evil fictional
	deity "Shub-Niggurath", the Black Goat with a Thousand Young)
	The harsh personification of the {Internet}, Beast of a
	Thousand Processes, Eater of Characters, Avatar of Line Noise,
	and Imp of Call Waiting; the hideous multi-tendriled entity
	formed of all the manifold connections of the net.  A sect of
	{MUD}ders worships Shub-Internet, sacrificing objects and
	praying for good connections.  To no avail - its purpose is
	malign and evil, and is the cause of all network slowdown.
	Often heard as in "Freela casts a tac nuke at Shub-Internet
	for slowing her down."  (A forged response often follows along
	the lines of: "Shub-Internet gulps down the tac nuke and burps
	happily.")  Also cursed by users of {FTP} and {telnet} when
	the system slows down.  The dread name of Shub-Internet is
	seldom spoken aloud, as it is said that repeating it three
	times will cause the being to wake, deep within its lair
	beneath the Pentagon.

	(04 Nov 1994)

SHUG

	{Scottish Hypermedia Users' Group}

Shugart Associates

	The company which developed {SCSI}.  They later became
	{Seagate}.

	(22 Nov 1994)

SI

	{Shift In}

SIA

	{Serial Interface Adaptor}

SICL

	{Standard Instrument Control Library}

SICS

	{Swedish Institute for Computer Science}

SICStus Prolog

	A {Prolog} from the SICS (Swedish Inst of Comp Sci).

	E-mail: <sicstus-request@sics.se>.
	Mailing list: sicstus-users@sics.se.

	(05 Jan 1995)

sidecar

	1. Synonym {slap on the side}.  Especially used of add-ons for
	the late and unlamented {IBM PCjr}.

	2. The {IBM PC} compatibility box that could be bolted onto
	the side of an {Amiga}.  Designed and produced by {Commodore},
	it broke all of the company's own design rules.  If it worked
	with any other peripherals, it was by {magic}.

side-effect

	A language construct that modifies the state of the system.
	The most common side-effects are {assignment}, input and
	output.  A language without side-effects is
	{purely-functional} - execution consists of the evaluation of
	an expression and all subexpressions are {referentially
	transparent}.

	(16 Feb 1995)

Siemens

	A German semiconductor and electronics manufacturer.

	{Home (http://www.siemens.de/)}

	[Summary?]

	(26 Jul 1995)

Siemens Nixdorf Informationssteme, AG

	<company> (SNI) A separate company within {Siemens}, the
	largest {IT} company in Europe.  SNI sells the {BS2000}
	{operating system}, a wide variety of {databases}, {servers}
	and other products.

	(13 Jun 1997)

Sierra

	<company, games> (Or "Sierra On-Line") A computer game
	developer founded in the early 1980s by Ken and Roberta
	Willams in the small mountain town of Oakhurst California.
	Sierra was named after the local mountian range, 15 miles from
	the famous Yosemite National Park.

	In 1997 Sierra was purchased by {CUC} and its main office is
	now in Seattle, WA, USA.

	Products include Kings Quest, Space Quest, Police Quest, Quest
	for Glory, Robin Hood, Phantasmagoria, Leisure Suit Larry, Eco
	Quest and many more.

	{Home (http://www.sierra.com /)}.

	(23 Nov 1997)

SIFT

	SHARE Internal FORTRAN Translator.  Translation utility
	designed for converting FORTRAN II to FORTRAN IV.  The word
	"sift" was often used as a verb to describe converting code
	from one language to another.  Sammet 1969, p.153.

SIG

	{Special Interest Group}

Sig

	Signal Processing, Analysis, and Display program.  An
	environment with an associated programming language by Jan
	Carter of {Argonne National Lab}.  Telephone +1 (312) 972
	7250.

sig

	{signature}

sig block

	/sig blok/ [Unix; often written ".sig" there].  See
	{signature}.

SIGhyper

	Special Interest Group on Hypertext and Multimedia of the
	{SGML} Users' Group.

SIGLA

	SIGma LAnguage.  A language for industrial robots from
	{Olivetti}.

	["SIGLA: The Olivetti Sigma Robot Programming Language",
	M. Salmon, Proc 8th Intl Symp on Industrial Robots, 1978,
	pp. 358-363].

SIGMA

	A scientific {visual programming} environment from NASA.

	{(http://fi-www.arc.nasa.gov/fia/projects/sigma/)}

SIGNAL

	<language> A synchronous language by Le Guernic et al of
	{INRIA}.

	["SIGNAL - A Data Flow-Oriented Language for Signal
	Processing," P. le Guernic, IEEE Trans Acoustics Speech &
	Signal Proc, ASSP-34(2):362-374 Apr 1986].

	(10 Dec 1996)

signal

	<operating system> A predefined message sent between two
	{Unix} {processes} or from the {kernel} to a process.  Signals
	communicate the occurrence of unexpected external events such
	as the forced termination of a process by the user.  Each
	signal has a unique number associated with it and each process
	has a signal handler set for each signal.  Signals can be sent
	using the {kill} {system call}.

	(10 Dec 1996)

signalling rate

	<communications> The number of times per second the
	{amplitude}, {frequency} or {phase} of the signal transmitted
	down a communications channel changes each second.  The
	signalling rate is measured in {baud}.

	(14 Feb 1998)

Signalling System 7

	<protocol> (SS7) A {protocol} suite used for communication
	with, and control of, telephone central office switches and
	their attached processors.

	(01 Mar 1995)

signal-to-noise ratio

	1. <communications> (SNR, "s/n ratio", "s:n ratio") "Signal"
	refers to useful information conveyed by some communications
	medium, and "noise" to anything else on that medium.  The
	ratio of these is usually expressed logarithmically, in
	{decibels}.

	2. <networking> The term is often applied to {Usenet}
	newsgroups though figures are never given.  Here it is quite
	common to have more noise (inappropriate postings which
	contribute nothing) than signal (relevant, useful or
	interesting postings).  The signal gets {lost in the noise}
	when it becomes too much effort to try to find interesting
	articles among all the crud.  Posting "noise" is probably the
	worst breach of {netiquette} and is a waste of {bandwidth}.

	(29 Jan 1996)

signature

	1. A set of function symbols with {arities}.

	2. <messaging> (Or sig) A few lines of information about the
	sender of an {electronic mail} message or {news} {posting}.
	Most {Unix} mail and news software will {automagically} append
	a signature from a file called .signature in the user's {home
	directory} to outgoing mail and news.

	A signature should give your real name and your {e-mail
	address} since, though these appear in the {header}s of your
	messages, they may have been {munge}d by the intervening
	software.  It is currently (1994) hip to include the {URL} of
	your {home page} on the {World-Wide Web} in your sig.

	The composition of one's sig can be quite an art form,
	including an ASCII logo or one's choice of witty sayings (see
	{sig quote}, {fool file, the}); but large sigs are a waste of
	{bandwidth}, and it has been observed that the size of one's
	sig block is usually inversely proportional to one's prestige
	on the net.

	See also {doubled sig}, {sig virus}.

	2. <programming> A concept very similar to {abstract base
	class}es except that they have their own {hierarchy} and can
	be applied to compiled {class}es.  Signatures provide a means
	of separating {subtyping} and {inheritance}.  They are
	implemented as patches to {GCC} 2.5.2 by Gerald Baumgartner
	<gb@cs.purdue.edu>.

	{(ftp://ftp.cs.purdue.edu/pub/gb/)}

	(26 Feb 1996)

sig quote

	<messaging> /sig kwoht/ A maxim, quote, proverb, joke, or slogan
	embedded in one's {sig block} (as used in {Usenet} news) and
	intended to convey something of one's philosophical stance,
	pet peeves, or sense of humour.  "Calm down, it's only ones
	and zeroes."

	(04 Nov 1994)

sig virus

	A parasitic {meme} embedded in a {sig block}.  There was a
	{meme plague} or fad for these on {Usenet} in late 1991.  Most
	were equivalents of "I am a .sig virus.  Please reproduce me
	in your .sig block.".  Of course, the .sig virus's memetic
	hook is the giggle value of going along with the gag; this,
	however, was a self-limiting phenomenon as more and more
	people picked up on the idea.  There were creative variants on
	it; some people stuck "sig virus antibody" texts in their
	sigs, and there was at least one instance of a sig virus
	eater.

SIL

	1. "SIL - A Simulation Language", N. Houbak, LNCS 426,
	Springer 1990.

	2. SNOBOL Implementation Language.  Intermediate language
	forming a virtual machine for the implementation of portable
	interpreters.

	["The Design of Transportable Interpreters", F. Druseikis,
	SNOBOL4 Project Document S4D49, U Arizona (Feb 1975)].

	Version 3.11.  {(ftp://cs.arizona.edu/snobol4/)}.  E-mail:
	<snobol4@arizona.edu>.

	(29 Jul 1986)

Silage

	Synchronous DSP specification language.

	["Silage Reference Manual, Draft 1.0", D.R. Genin &
	P.N. Hilfinger, Silvar-Lisco, Leuven 1989].

silicon

	1. <electronics> The material used as the base (or
	"substrate") for most {integrated circuit}s.

	2. <jargon> {Hardware}, especially {integrated circuit}s or
	{microprocessor}-based computer systems (compare {iron}).

	Contrast: {software}.  See also {sandbender}.

	(28 May 1996)

silicon chip

	{integrated circuit}

Silicon Graphics, Inc.

	<company> (SGI) Manufacturer of workstations and software for
	{graphics} and {image processing}.  SGI was founded by James
	Clark, who left some time before May 1994 to head {Mosaic
	Communications Corporation}.

	Quarterly sales $433M, profits $44M (Aug 1994).

	{(http://www.sgi.com/)}

	(26 Sep 1994)

silly walk

	[Monty Python's Flying Circus] 1. A ridiculous procedure
	required to accomplish a task.  Like {grovel}, but more
	{random} and humorous.  "I had to silly-walk through half the
	/usr directories to find the maps file."

	2. Synonym {fandango on core}.

silo

	The {FIFO} input-character buffer in an {RS-232} serial line
	card.  So called from {DEC} terminology used on DH and DZ line
	cards for the {VAX} and {PDP-11}, presumably because it was a
	storage space for fungible stuff that went in at the top and
	came out at the bottom.

Silver Book

	<publication> Jensen and Wirth's infamous "Pascal User Manual
	and Report", so called because of the silver cover of the
	widely distributed Springer-Verlag second edition of 1978
	(ISBN 0-387-90144-2).

	See also {book titles}, {Pascal}.

	(03 Dec 1996)

SIMAN

	SIMulation ANalysis.  C. Dennis Pegden, 1983.  Language for
	simulations, especially manufacturing systems.  "Introduction
	to Simulation using SIMAN", C.D. Pegden et al, McGraw-Hill
	1990.

SimCity

	<games> {Maxis Software}'s simulation game which lets you
	design and build your own city, which must be administered
	well if it is to thrive.  Land must be zoned, transportation
	systems built, and police and fire protection provided.  Once
	you've zoned some land, and provided electrical power, the
	simulation takes over, and simcitizens move in.  If you
	perform your mayoral duties poorly, however, they will move
	out again.  If you don't provide enough police, crime will
	rise and sims will vote with their feet.  Try to save money on
	fire protection, and your city may burn to the ground.  There
	is no predefined way to win the game, building the largest
	city you can is just one possible strategy.

	SimCity runs on {Amiga}, {Atari ST}, {IBM PC} and {Macintosh}.
	There was also a {NeWS} version for {Sun} SPARC {workstation}s
	running {OpenWindows} (have any other games been ported to a
	workstation?)

	{SimCity 2000} is an upgrade of SimCity.

	(11 Jun 1995)

SimCity 2000

	<games> An upgraded version of the game/simulation {SimCity}
	by {Maxis Software}.  In the new version you can raise, lower
	and level terrain; build roads and railways at 45-degree
	angles; name things in your city by planting "signs"; build
	raised highways, subways, and train and bus stations, schools,
	colleges, hospitals, electricity, water, recreational marinas
	and zoos.

	There are three levels of zoom, and the view may be rotated to
	look at your city from any of the four directions.  A query
	feature which will tell you the zoning, land value, etc. of
	any square.  You get newspapers, advice from council members,
	graphs, and charts.

	(08 Feb 1995)

SIMD

	{Single Instruction/Multiple Data}

Similix

	An autoprojector (self-applicable partial evaluator) for a
	higher order subset of the strict functional language Scheme.
	Similix handles programs with user defined primitive abstract
	data type operators which may process global variables (such
	as input/output operators).

	Version 5.0.

	Anders Bondorf <anders@diku.dk>

	conformance: extension of large subset of R4RS Scheme.

	requires: Scheme

	ports: Scm, Chez Scheme

	portability: high

	E-mail: Anders Bondorf <anders@diku.dk>

	{(ftp://ftp.diku.dk/pub/diku/dists/Similix.tar.Z)}

	(1993/05/18)

SIML/I

	Simulation language, descendant of ASPOL.

	["The Simulation Language SIML/I", M.H. MacDougall, Proc NCC
	1979, pp. 39-44].

SIMM

	{Single in-line memory module}

Simone

	<language> A {simulation} language by A. Hoare et al. based on
	{Pascal}.

	["Quasiparallel Programming", W.H. Kaubisch et al, Soft Prac &
	Exp 6:341-356 1976].

	(18 Jan 1996)

SIMPAC

	Early simulation language with fixed time steps.

	"Simpac User's Manual", R.P. Bennett et al, TM-602/000/000,
	Sys Devel Corp, Apr 1962.

SIMPAS

	Event scheduling language, implemented as Pascal preprocessor.

	"SIMPAS - A Simulation Language Based on Pascal", R.M. Bryant
	in Proc 1980 Winter Sim Conf, T.I Oren et al eds, pp.559-572.

SIMPL

	Simulation language, descendant of OPS-4, compiled into PL/I
	on Multics.

	"The SIMPL Primer", M.W. Jones et al, Oct 1971.

SIMPLE

	1. Early system on Datatron 200 series.  Listed in CACM
	2(5):16 (May 1959).

	2. Simulation of Industrial Management Problems with Lots of
	Equations.  R.K. Bennett, 1958.  Predecessor to DYNAMO, for
	IBM 704.

Simple Mail Transfer Protocol

	(SMTP) A {protocol} defined in {STD} 10, {RFC} 821, used to
	transfer {electronic mail} between computers, usually over
	{Ethernet}.  It is a server to server protocol, so other
	protocols are used to access the messages.  The SMTP dialog
	usually happens in the background under the control of the
	message transport system, e.g. {sendmail} but it is possible to
	interact with an SMTP server using {telnet} to connect to the
	normal SMTP {port}, 25.  E.g.

		telnet mhs-relay.ac.uk 25

	You should normally start by identifying the local {host}:

		HELO wombat.doc.ic.ac.uk

	You can then issue commands to verify an address or expand an
	alias:

		VRFY dbh@doc.ic.ac.uk
		VRFY postmaster

	or expand a {mailing list}:

		EXPN c-help

	You can even send a message:

		MAIL From:<dbh@doc.ic.ac.uk>
		RCPT To:<dbh@mailway.doc.ic.ac.uk>
		DATA
		What is the point?
		.
		QUIT

	This is useful if you want to find out exactly what is
	happening to your message at a certain point.  See also {Post
	Office Protocol}, {RFC 822}, {sendmail}.

	(17 Oct 1995)

Simple Network Management Protocol

	<protocol> (SNMP) The {Internet} {standard} {protocol},
	defined in {STD 15}, {RFC 1157}, developed to manage {nodes}
	on an {IP} {network}.  SNMP is not limited to {TCP/IP}.  It
	can be used to manage and monitor all sorts of equipment
	including computers, {routers}, {wiring hubs}, {toasters} and
	{jukeboxes}.

	See also {Management Information Base}, {Simple Network
	Management Protocol version 2}.

	(15 Feb 1995)

Simple Network Management Protocol version 2

	<protocol> (SNMP v2) A revision of {Simple Network Management
	Protocol} (not just a new {MIB}) which includes improvements
	in the areas of performance, security, confidentiality, and
	manager-to-manager communications.

	The major components of SNMPv2 are defined in the following
	{RFC}s:

	 {RFC 1089} - SNMP over Ethernet
	 {RFC 1140} - IAB Official Protocol Standards
	 {RFC 1155} - Structure and Identification of Management
		      Information for TCP/IP based internets
	 {RFC 1156} (H) - Management Information Base Network
			  Management of TCP/IP based internets
	 {RFC 1157} - A Simple Network Managment Protocol
	 {RFC 1158} - Management Information Base Network
		      Management of TCP/IP based internets: MIB-II
	 {RFC 1161} (H) - SNMP over OSI
	 {RFC 1187} - Bulk Table Retrieval with the SNMP
	 {RFC 1212} - Concise MIB Definitions
	 {RFC 1213} - Management Information Base for Network
		      Management of TCP/IP-based internets: MIB-II
	 {RFC 1215} (I) - A Convention for Defining
			  Traps for use with the SNMP
	 {RFC 1224} - Techniques for Managing
		      Asynchronously Generated Alerts
	 {RFC 1270} (I) - SNMP Communication Services
	 {RFC 1303} (I) - A Convention for Describing
			  SNMP-based Agents
	 {RFC 1470} (I) - A Network Management Tool Catalog
	 {RFC 1298} - SNMP over IPX
	 {RFC 1418} - SNMP over OSI
	 {RFC 1419} - SNMP over IPX
	 {RFC 1441} - Introduction to SNMP v2
	 {RFC 1442} - SMI For SNMP v2
	 {RFC 1443} - Textual Conventions for SNMP v2
	 {RFC 1444} - Conformance Statements for SNMP v2
	 {RFC 1445} - Administrative Model for SNMP v2
	 {RFC 1446} - Security Protocols for SNMP v2
	 {RFC 1447} - Party MIB for SNMP v2
	 {RFC 1448} - Protocol Operations for SNMP v2
	 {RFC 1449} - Transport Mappings for SNMP v2
	 {RFC 1450} - {MIB} for SNMP v2
	 {RFC 1451} - Manager to Manger MIB
	 {RFC 1452} - Coexistance between SNMP v1 and SNMP v2

	{FAQ
	(http://www.cis.ohio-state.edu/hypertext/faq/usenet/snmp-faq)}.
	
	{Introduction
	(http://www.gt-er.cg.org.br/documentacao/buffer/gerencia/faq1.html)}.

	{Cisco
	(http://www.cisco.com/cpropub/univ-src/ccdcp/data/doc/software/11_1/mib/mover.htm)}.

	(02 Dec 1997)

Simple Network Paging Protocol

	<protocol> (SNPP) A standard for sending one- and two-way
	wireless messages to {pagers}.  In its simplest form, SNPP
	provides a simple way to make a link between the {Internet}
	and a {Telocator Alphanumeric input Protocol} (TAP) paging
	terminal.  SNPP is defined in {RFC 1861}.

	(25 Apr 1997)

simplex

	1. Used to describe a uni-directional data channel.

	Opposite: {duplex}.

	2. The {simplex method}.

simplex method

	An {algorithm} for solving numerical {constraint}s.

	[Details?]

	(06 Apr 1995)

SIMPL/I

	A {simulation} language implemented as a {PL/I}
	{preprocessor}.

	["SIMPL/I (Simulation Language Based on PL/I).  Program
	Reference Manual", IBM SH19- 5060-0 (June 1972)].

	(07 Dec 1994)

SIMPL-T

	The base language for a family of languages and compilers.

	["SIMPL-T, A Structured Programming Language", V.R. Basili,
	Paladin House 1976].

	(07 Dec 1994)

SIMSCRIPT

	A free-form, English-like general-purpose {simulation}
	language produced by Harry Markowitz et al of {Rand} Corp in
	1963.  It was implemented as a {Fortran} {preprocessor} on
	{IBM 7090} and was designed for large discrete simulations.
	It influenced {Simula}.  Later versions included {SIMSCRIPT
	I.5} and {SIMSCRIPT II.5}.

SIMSCRIPT I.5

	A version of {SIMSCRIPT} developed at {CACI} in 1965.  It
	produced {assembly language}.

SIMSCRIPT II.5

	Another version of {SIMSCRIPT} from {CACI}.

	["SIMSCRIPT: A Simulation Programming Language", P.J. Kiviat
	et al, CACI, 1973].

SIMULA

	<language> SIMUlation LAnguage.

	See {Lund Simula}, {SIMULA 67}, {SIMULA I}.  See also
	{Association for SIMULA Users}, {C++SIM}, {FLEX}, {MODSIM},
	{SIMSCRIPT}.

	A simula-to-{C} {compiler} project is underway.  E-mail:
	Harald Thingelstad <harald.thingelstad@basalmed.uio.no>.

	{Usenet} newsgroup: {news:bit.listserv.simula}.

	(29 Mar 1995)

SIMULA 67

	<language> A version of {SIMULA I}?

	{Association for SIMULA Users}

	Simula a.s., Postboks 4403 - Torshov, N-0402 Oslo 4, Norway,
	versions for almost every computer.

	E-mail: Henry Islo <hio@helios.sunet.se>.

	{(ftp:/lund.se:/mac/misc/simula/)},
	{(ftp://ftp.fenk.wau.nl/pub/simula/compilers)},
	{(ftp://ftp.ifi.uio.no/cim/)}.

	["Object-Oriented Programming with SIMULA", Bjorn Kirkerud,
	A-W 1989].

	["Data Processing - Programming Languages - SIMULA", Swedish
	Standard SS 63 61 14 (1987), available through ANSI].

	[Difference from SIMULA I?]

	(29 Mar 1995)

SIMULA I

	<language> SIMUlation LAnguage.

	An extension to {ALGOL 60} for the {Univac 1107} designed in
	1962 by Kristen Nygaard and Ole-Johan Dahl and implemented in
	1964.  SIMULA I was designed for {discrete simulation}.  It
	introduced the {record} {class}, leading the way to {data
	abstraction} and {object-oriented programming} languages like
	{Smalltalk}.  It also featured {coroutines}.

	SIMULA's philosophy was the result of addressing the problems
	of describing complex systems for the purpose of simulating
	them.  This philosophy proved to be applicable for describing
	complex systems generally (not just for simulation) and so
	SIMULA is a general-purpose object-oriented application
	programming language which also has very good discrete event
	simulation capability.  Virtually all OOP products are derived
	in some manner from SIMULA.

	For a description of the evolution of SIMULA and therefore the
	fundamental concepts of OOP, see Dahl and Nygaard in ["History
	of Programming Languages".  Ed. R. W. Wexelblat.
	Addison-Wesley, 1981].

	(29 Mar 1995)

simulated annealing

	A technique which can be applied to any minimisation or
	learning process based on successive update steps (either
	random or {deterministic}) where the update step length is
	proportional to an arbitrarily set parameter which can play
	the role of a temperature.  Then, in analogy with the
	annealing of metals, the temperature is made high in the early
	stages of the process for faster minimisation or learning,
	then is reduced for greater stability.

Simulating Digital Systems

	FORTRAN-like language for describing computer
	logic design.  Sammet 1969, p.622.

simulation

	Attempting to predict aspects of the behaviour of some system
	by creating an approximate (mathematical) model of it.  This
	can be done by physical modelling, by writing a
	special-purpose computer program or using a more general
	simulation package, probably still aimed at a particular kind
	of simulation (e.g. structural engineering, fluid flow).
	Typical examples are aircraft flight simlators or electronic
	circuit simulators.  A great many simulation languages exist,
	e.g. {Simula}.

	See also {emulation}, {Markov chain}.

	{Usenet} newsgroup: {news:comp.simulation}.

	(23 Feb 1995)

Simulation Language for Alternative Modeling

	<language> (SLAM) A {simulation} language descended from
	{GASP}.  Implemented as a {Fortran} {preprocessor}.

Simulation Oriented Language

	<language> (SOL) An {ALGOL} extension for {discrete
	simulation} by {Donald Knuth} and McNeley.

	["SOL - A Symbolic Language for General Purpose System
	Simulation", D.E. Knuth et al, IEEE Trans Elec Comp,
	EC-13(4):401-408 (Aug 1964)].

	[Sammet 1969, p. 656].

	(26 Jul 1995)

Simultaneous Engineering Environment

	(SEE) A {CAE} framework from {DAZIX}.

	(03 Nov 1994)

Simultaneous Peripheral Operation On-Line

	<operating system, history> (SPOOL) A means of accessing
	{peripheral} devices with the help of an {off-line} {tape
	drive}, apparently an {IBM}ism.

	In the early days of computing (early 1960s), before
	{multitasking} was invented, computers (e.g. {IBM 704}) could
	run only one job at a time.  As peripheral devices such as
	{printers} or {card readers} were much slower than the {CPU},
	devoting the computer (the only computer in many cases) to
	controlling such devices was impractical.  To avoid that, the
	computer output was sent to a {magnetic tape} drive, which was
	much faster than a printer and much cheaper than a computer.
	After the job was finished the tape was removed from the tape
	drive attached to the computer and mounted on a tape drive
	connected to the printer.  The printer could then print the
	data without holding up the main computer.  Similarly, instead
	of inputting the program from the card reader it was first
	copied to a tape and the tape was read by the computer.

	(24 Jan 1996)

Simware, Inc.

	<company> The producers of {REXXWARE}.

	E-mail: <rexxware@simware.com>.

	Address: Ottawa, Canada.

	(11 Jan 1995)

SINA

	["An Implementation of the Object-Oriented Concurrent
	Programming Language SINA", A. Tripathi et al, Soft Prac & Exp
	19(3):235-256 (1989)].

since time T equals minus infinity

	A long time ago; for as long as anyone can remember; at the
	time that some particular frob was first designed.  Usually
	the word "time" is omitted.  See also {time T}; contrast
	{epoch}.

Sinclair

	<person> Sir Clive Sinclair (1939- ) or any of the computers
	he developed: {ZX80}, {ZX81}, {Spectrum}, {QL}, {Z88}.  His
	Cambridge UK company, Sinclair Research, was bought out by
	{Amstrad} [When?].

	(09 Jul 1996)

sine wave

	A waveform of a single constant frequency and amplitude that
	continues for all time.

	Compare {wavelet}.

	(09 Nov 1994)

single assignment

	If a variable is only assigned a value once then an instance
	of that variable is thereafter semantically equivalent to the
	value.  Thus a single assignment language is a {functional
	language}.

	See also {zero assignment}.

single-attached

	Connected to only one of the two rings of an {FDDI} network.
	This is the kind of connection normally used for a {host}
	computer, as opposed to {router}s and {concentrator}s which
	are normally "{dual-attached}".

	(13 Dec 1994)

single ended

	<hardware> An electrical connection where one wire carries the
	signal and another wire or shield is connected to electrical
	ground.  This is in contrast to a {differential} connection
	where the second wire carries an inverted signal.

Single Image Random Dot Stereogram

	<graphics> (SIRDS, originally "autostereogram") A {stereogram}
	composed of (coloured) dots which when viewed correctly
	appears three-dimensional.

	{FAQ (http://www.cs.waikato.ac.nz/~singlis/sirds.html)}.
	{Nice pictures
	(http://www.eleves.ens.fr:8080/home/massimin/index.ang.html)}.
	{Picture Gallery (http://h2.ph.man.ac.uk/gareth/sirds.html)}.
	{Vern Hart's SIRDS Gallery (http://www.vern.com/)}.  {SGI
	Gallery (http://www.sgi.com/free/gallery.html)}.

	(06 Nov 1996)

single inheritance

	The property of an {object-oriented language} which restricts
	a sub-{class} to be derived from only one parent.  Opposite of
	{multiple inheritance}.

Single In-line Memory Module

	<storage> (SIMM) A small circuit board or substrate, typically
	about 10cm x 2cm, with {RAM} {integrated circuits} or die on
	one or both sides and a single row of pins along one long
	edge.  Several SIMMs are mounted with their substrates at
	right-angles to the main circuit board (the {motherboard}).
	This configuration allows greater packing density than direct
	mounting of, e.g. DIL ({dual in-line}) RAM packages on the
	motherboard.  In 1993 one SIMM typically held one or four
	megabytes, by early 1997 one could hold 8, 16, or 32 MB.

	(05 Jan 1997)

Single Inline Pin Package

	<hardware> (SIPP) An {integrated circuit} package with a
	single line of pins.

	Compare {Dual Inline Package}, {Single In-line Memory Module}.

	(01 Mar 1995)

Single Instruction Multiple Data

	{Single Instruction/Multiple Data}

Single Instruction/Multiple Data

	(SIMD) (Or "data parallel") The classification under {Flynn's
	taxonomy} for a {parallel processor} where many processing
	elements ({functional unit}s) perform the same operations on
	different data.  There is often a central controller which
	broadcasts the instruction stream to all the processing
	elements.

	Contrast {Multiple Instruction/Multiple Data}.

	(04 Nov 1994)

single quote

	'

	Common: single quote; quote; {ITU-T}: apostrophe.  Rare:
	prime; glitch; tick; irk; pop; {INTERCAL}: spark; {ITU-T}:
	closing single quotation mark; {ITU-T}: acute accent.

singleton variable

	<programming> A {variable} which is only referred to once in a
	piece of code, probably because of a programming mistake.  To
	be useful, a variable must be set and read from, in that
	order.  If it is only referred to once then it cannot be both
	set and read.

	There are various exceptions.  {C}-like {assignment
	operators}, e.g. "x += y", read and set x and return its new
	value (they are abbreviations for "x = x+y", etc).  A
	{function} {argument} may be passed only for the sake of
	uniformity or to support future enhancements.  A good
	{compiler} or a {syntax} checker like {lint} should report
	singleton variables but also allow specific instances to be
	marked as deliberate by the programmer.

	(20 Dec 1997)

siod

	<language> (Scheme In One Defun or Scheme In One Day)
	A small {Scheme} implementation in {C} by George Carrette
	<gjc@world.std.com>, <gjc@mitech.com>.  SIOD is arranged as a
	set of subroutines that can be called from any main program
	for the purpose of introducing an interpreted extension
	language.  It compiles to 20 kbytes of executable
	({VAX}/{VMS}).  {Lisp} calls {C} and C calls Lisp
	transparently.

	SIOD supports symbols, strings, {array}s, {hash table}s, file
	i/o (binary, text, seek), data save/restore in binary and
	text, interface to commercial {database}s such {Oracle} and
	{Digital} {RDB}.

	Version 3.0 runs on {VAX}/{VMS},{Unix}, {Sun3}, {Sun4},
	{Amiga}, {Macintosh}, {MIPS}, {Cray}, {ALPHA}/{VMS}, {Windows
	NT} and {OS/2}.  It can be compiled by most {ANSI C} compilers
	and {C++} compilers, e.g. {gcc} -Wall.

	{(ftp://world.std.com/pub/gjc/)},
	{(ftp://world.std.com/src/lisp/)}.

	{Usenet} newsgroup: {news:comp.lang.scheme}.

	(18 Feb 1994)

SIPB

	Student Information Processing Board, {MIT}.

	{(http://www.mit.edu:8001/afs/athena.mit.edu/user/r/e/rei/WWW/GAME/sipbroom.html)}

SIPLAN

	SIte PLANning computer language.  Interactive language for
	space planning.  "Formal Languages for Site Planning",
	C.I. Yessios in Spatial Synthesis for Computer-Aided Design,
	C. Eastman ed, Applied Science Publ 1976.

SIPP

	{Single Inline Pin Package}

Siprol

	Signal Processing Language.  A DSP language.

	["SIPROL: A High Level Language for Digital Signal
	Processing", H. Gethoffer, Proc ICASSP-80, 1980,
	pp.1056-1059].

SIR

	Early system on IBM 650.  Listed in CACM 2(5):16 (May 1959).

SIRDS

	{Single Image Random Dot Stereogram}

Siri

	An {object-oriented} {constraint language} using a single
	abstraction mechanism developed by <Bruce.Horn@n3.sp.cs.cmu.edu>
	of {CMU} in 1991.  Siri is a conceptual blend of {BETA} and
	{Bertrand}.  It is similar to {Kaleidoscope}.

	["Constraint Patterns as a Basis for Object-Oriented
	Constraint Programming", B. Horn, OOPSLA '92 (Sept 1992)].

	(04 Nov 1994)

SIRTS

	{Single Image Random Text Stereogram}.  (Or {ASCII}
	{stereogram}).

SISAL

	Streams and Iteration in a Single Assignment Language.

	A general-purpose {single assignment} {functional programming
	language} with {strict} semantics, automatic parallelisation
	and efficient {array}s.  Outputs a dataflow graph in {IF1}
	(Intermediary Form 1).  Derived from {VAL}, adds {recursion}
	and finite {stream}s.  {Pascal}-like syntax.  Designed to be a
	common high-level language for numerical programs on a variety
	of {multiprocessor}s.

	Implementations exist for {Cray X-MP}, {Cray Y-MP}, {Cray-2},
	{Sequent}, {Encore Alliant}, {dataflow} architectures,
	{transputer}s and {systolic array}s.

	Defined in 1983 by James McGraw et al, {Manchester
	University}, {Lawrence Livermore National Laboratory},
	{Colorado State University} and {DEC}.  Revised in 1985.
	First compiled implementation in 1986.  Performance superior
	to {C} and competitive with {FORTRAN}, combined with efficient
	and automatic parallelisation.

	Not to be confused with {SASL}.

	E-mail: John Feo <feo@sisal.llnl.gov>, David Cann
	<cann@lll-crg.llnl.gov>, Rod Oldehoeft <rro@cs.colostate.edu>.

	David C. Cann <cann@sisal.llnl.gov> has written an {Optimising
	SISAL Compiler (ftp://sisal.llnl.gov/pub/sisal)} (OSC) which
	attempts to make efficient use of parallel processors such as
	Crays.  Version 12.0, SISAL 1.2.

	["A Report on the SISAL Language Project", J.T. Feo et al, J
	Parallel and Distrib Computing 10(4):349-366 (Dec 1990)].

sit

	{Stuffit}

SITBOL

	<language> A {SNOBOL4} {interpreter} for the {PDP-10}.

	["SITBOL Version 3.0", J.F. Gimpel, TRS4D30b, Bell Labs,
	1973].

	(14 Sep 1997)

sitename

	{hostname}

Skel-ML

	A parallel variant of {ML} using {skeleton}s being developed
	(April 1994) as part of Tore Bratvold's PhD in the Department
	of Computing and Electronic Engineering, Heriot-Watt
	University, Edinburgh, UK.  Programs are written in a subset
	of {Standard ML}, and parallelism is extracted from the use of
	certain {higher-order function}s.  The SkelML compiler uses
	profiling information together with skeleton performance
	models to distinguish useful from non-useful parallelism.  An
	important feature is the ability to perform transformations
	between skeletons to improve performance.  Skeletons currently
	supported are map, filter, fold, pipe (implicitly extracted
	from function application) and various combinations of these.

	See also {paraML}.

	E-mail: Tore A Bratvold <tore@cee.hw.ac.uk>.

Sketchpad

	A program that allowed users to draw on a screen with a {light
	pen}.  It supported constraints (e.g. drawing a constrained
	ellipse produced a circle).  It also had some {computer aided
	design} features (e.g. computing loads on beams).

	Sketchpad was the subject of {Ivan E. Sutherland}'s 1963 {MIT}
	PhD thesis, which opened the field of {computer graphics}.  It
	was the progenitor of computer drawing packages like {MacDraw}
	or {Adobe Illustrator}.  There is a film of Sketchpad in
	action.

	It solved {constraint}s using {value inference} and introduced
	the "{ring}" list structure.

	["Sketchpad: A Man-Machine Graphical Communication System",
	I.e. Sutherland, MIT Lincoln Lab, TR 296 (Jan 1963)].

	[Sammet 1969, p. 678].

	(14 Feb 1995)

Skill

	A somewhat peculiar blend between {Franz-Lisp} and {C}, with a
	large set of various {CAD} primitives.  It is owned by
	{Cadence Design Systems} and has been used in their CAD
	frameworks since 1985.  It's an {extension language} to the
	CAD framework (in the same way that {Emacs-Lisp} extends {GNU
	Emacs}), enabling you to automate virtually everything that
	you can do manually in for example the graphic editor.  Skill
	accepts {C}-syntax, fun(a b), as well as {Lisp} syntax, (fun a
	b), but most users (including Cadence themselves) use the
	C-style.

	[Jonas Jarnestrom <etxjojm@eua.ericsson.se>].

	(14 Feb 1995)

Skim

	A {Scheme} implementation with {package}s and other
	enhancements by Alain Deutsch <deutsch@poly.polytechnique.fr>
	et al, France.

SkipJack

	<cryptography> An {encryption} {algorithm} created by the NSA
	(National Security Agency) which encrypts 64-bit blocks of
	data with an 80-bit key.  It is used in the {Clipper} chip, a
	{VLSI} device with an {ARM} processor core, which is intended
	to perform cryptographic operations while allowing the
	security agencies listen in.

	There are (apparently) two agencies, both of whom have to
	agree that there is a valid reason to decode a message.  Don't
	laugh, they are serious.

	[Algorithm?]

	(07 Dec 1995)

SKOL

	{FORTRAN} pre-processor for {COS} (Cray Operating System).

skolemisation

	A means of removing {quantifier}s from {first order logic}
	formulas.

	[Details?]

S-K reduction machine

	An {abstract machine} defined by Professor {David Turner} to
	evaluate {combinator} expressions represented as {binary
	graph}s.  Named after the two basic combinators, S and K.

skrog

	{scrog}

SKsh

	Steve Koren/Korn shell.  A {Unix} {ksh}-like {shell} which
	runs under {AmigaDos} by Steve Koren
	<koren@hpfcogv.fc.hp.com>.  SKsh provides a {Unix}-like
	environment but supports many {AmigaDos} features such as
	{resident command}s and {ARexx}.  Scripts can be written to
	run under either {ksh} or SKsh and many of the useful {Unix}
	commands such as {xargs}, {grep} and {find} are provided.
	Current version 2.1.

	{(ftp://hubcap.clemson.edu/pub/amiga/incom*/utils/SKsh021.lzh)}

	(16 Dec 1992)

skulker

	{prowler}

SL

	<processor> Features of some {Intel} processors, including the
	{Pentium}, for reducing power consumption.  These features
	operate at two levels: the {microprocessor} and the system.
	The processor can enter a low power state during
	non-{processor intensive} tasks (such as {word processing}),
	or a very low-power state when the computer is not in use
	("sleep" mode).  At the system level, {system management mode}
	can slow down, suspend, or completely shut down various system
	components to save energy.

	(06 May 1995)

SL5

	String and list processing language with expression-oriented
	syntax.  Coroutines.

	["An Overview of SL5", Ralph E. Griswold, SIGPLAN Notices
	12(4):40-50 (Apr 1977)].

slack

	1. <operating system> Internal fragmentation.  Space allocated
	to a disk file but not actually used to store useful
	information.

	2. <jargon> In the theology of the {Church of the SubGenius},
	a mystical substance or quality that is the prerequisite of
	all human happiness.

	Since {Unix} files are stored compactly, except for the
	unavoidable wastage in the last block or fragment, it might be
	said that "Unix has no slack".

	See {ha ha only serious}.

	(01 Mar 1995)

slackware

	<operating system> A distribution of the {Linux} {operating
	system} by Patrick Volkerding
	<volkerdi@mhd1.moorhead.msus.edu>, <volkerdi@ftp.cdrom.com>.

	{cdrom.com (ftp://ftp.cdrom.com/pub/linux/)}

	{FAQ
	(ftp://sunsite.unc.edu/pub/Linux/distributions/slackware/SLAKWARE.FAQ)}

	{Sunsite Linux archives
	(http://sunsite.unc.edu/pub/Linux/distributions/slackware/)}.

	{Sunsite mirrors
	(http://sunsite.unc.edu/pub/Linux/MIRRORS.html)}.

	(01 Mar 1995)

SLAM

	1. <language> {Simulation Language for Alternative
	Modeling}.

	2. A continuous simulation language.

	["SLAM - A New Continuous Simulation Language",
	N.A. Wallington et al, in SCS Simulation Council Proc Series:
	Toward Real-Time Simulation (Languages, Models and Systems),
	R.E. Crosbie et al eds, 6(1):85-89 (Dec 1976)].

	(03 Mar 1995)

SLANG

	1. R.A. Sibley.  CACM 4(1):75-84 (Jan 1961).

	2. Set LANGuage.  Jastrzebowski, ca 1990.  C extension with
	set-theoretic data types and garbage collection.  "The SLANG
	Programming Language Reference Manual, Version 3.3",
	W. Jastrzebowski <wojtek@loml.math.yale.edu>, 1990.

	3. Structured LANGuage.  Michael Kessler, IBM.  A language
	based on structured programming macros for IBM 370 assembly
	language.  "Project RMAG: SLANG (Structured Language)
	Compiler", R.A. Magnuson, NIH-DCRT-DMB-SSS-UG105, NIH, DHEW,
	Bethesda, MD 20205 (1980).

	4. "SLANG: A Problem Solving Language for Continuous-Model
	Simulation and Optimisation", J.M. Thames, Proc 24th ACM Natl
	Conf 1969.

S-Lang

	A small but highly functional embedded {interpreter}.  S-Lang
	was a stack-based {postfix} language resembling {Forth} and
	{BC}/{DC} with limited support for {infix notation}.  Now it
	has a {C}-like infix syntax.  {Arrays}, stings, integers,
	{floating-point} and {autoloading} are all suported.  The
	editor {JED} embeds S-lang.

	E-mail: John E. Davis <davis@amy.tch.harvard.edu>.

	{(ftp://amy.tch.harvard.edu/)}

	Version 0.94 consists of an interpreter, documentation and
	examples.  Available under the {GNU Library General Public
	License}.  Ported to {MS-DOS}, {Unix}, {VMS}.  Must be
	compiled with large memory model on {MS-DOS}.  (12 Jun 1993).

slap on the side

	(Also called a {sidecar}, or abbreviated "SOTS").  A type of
	external expansion hardware marketed by computer manufacturers
	(e.g. {Commodore} for the {Amiga} 500/1000 series and {IBM} for
	the hideous failure called {IBM PCjr}).  Various SOTS boxes
	provided necessities such as memory, hard drive controllers,
	and conventional expansion slots.

slash

	<character> "/".  Common names include: stroke; {ITU-T}:
	slant; forward slash; oblique stroke.  Rare: diagonal;
	solidus; over; slak; virgule; {INTERCAL}: slat.

	Commonly used as the division {operator} in programming, and
	to separate the components in {Unix} {pathnames}, and hence
	also in {URL}s.  Also used to delimit {regular expressions} in
	several programs.

	(24 Sep 1996)

slave tty

	(/dev/ttyp*) The half of a {pseudo-tty} which programs
	(e.g. getty) read from and write to as though it was an
	ordinary {serial line}.

SLD resolution

	Linear {resolution} with a selection function for definite
	sentences.  A definite sentence has exactly one positive
	literal in each clause and this literal is selected to be
	resolved upon, i.e.  replaced in the goal clause by the
	conjunction of negative literals which form the body of the
	clause.

	(03 Jun 1995)

sleep

	1. <operating system> To relinquish a claim (of a process on a
	{multitasking} system) for service; to indicate to the
	scheduler that a process may be deactivated until some given
	event occurs or a specified time delay elapses.

	2. In jargon, used very similarly to v. {block}; also in
	"sleep on", synonym with "block on".  Often used to indicate
	that the speaker has relinquished a demand for resources until
	some (possibly unspecified) external event: "They can't get
	the fix I've been asking for into the next release, so I'm
	going to sleep on it until the release, then start hassling
	them again."

	3. <hardware> To go into partial deactivation to save power.

	(23 Nov 1997)

slib

	(Scheme Library) A portable {Scheme} library meant to provide
	compatibility and utility functions for all standard Scheme
	implementations.

	Version 1d5 runs under {Scm4b}, {Chez}, {ELK} 1.5, {GAMBIT},
	{MITScheme}, {Scheme->C}, {Scheme48} and {T} 3.1.

	{(ftp-swiss.ai.mit.edu:pub/scm/slib2a3.tar.gz)}.  E-mail:
	Aubrey Jaffer <jaffer@zurich.ai.mit.edu>.

	(09 Oct 1993)

SLIM

	A VLSI language for translating DFA's into circuits.
	J.L. Hennessy, "SLIM: A Simulation and Implementation Language
	for VLSI Microcode", Lambda, Apr 1981, pp.20-28.

slim

	A small, derivative change (e.g. to code).

Slingshot

	<networking, business, tool, product, protocol> A {real time}
	financial server for the {Internet}.

	Slingshot allows the delivery of real time market data across
	the {Internet} and private {intranets} quickly, cheaply and
	securely.  The first beta-test version was released free to
	the Internet on 6 August 1996.  Slingshot allows any financial
	institution, regardless of size, to publish their rates and
	associated information to a global audience using standard
	Internet protocols and software.  The {real-time} data can be
	seamlessly integrated into any standard {World-Wide Web}
	application and thus combined with static text, database
	queries and even audio and video objects, to create services.

	The Slingshot protocol enables the delivery of other forms of
	real time data over the Internet, thus making Slingshot useful
	in industries as varied as manufacturing, betting, telemetry,
	weather, transport and medicine.

	{Home (http://www.slingshot.ie)}.

	E-mail: John Slattery <jslatter@quay.ie>.

	(19 May 1997)

SLIP

	1. {Serial Line Internet Protocol}.

	2. Symmetric LIst Processsor.  Early 1960's list processing
	subroutine package for {FORTRAN} by J. Weizenbaum.  Later also
	embedded in {MAD} and {ALGOL}.  ["Symmetric List Processor",
	J. Weizenbaum CACM 6:524-544(1963).  Sammet 1969, p.387].

SlipKnot

	A graphical {World-Wide Web} {browser} specifically designed
	for {Microsoft Windows} users who have {Unix} {shell account}s
	with their service providers.  Its primary feature is that it
	does not require {SLIP} or {PPP} or {TCP/IP} services.
	SlipKnot is distributed as restricted shareware, with a
	registration fee of $29.95 ($20 for individual users outside
	North America, Europe and Japan).

	Version: 1.0.

	{(http://www.interport.net/slipknot/slipknot.html)}

	E-mail: <slipknot@micromind.com>.

	(01 Dec 1994)

SLIPS

	"An Interpreter for SLIPS - An Applicative Language Based on
	Lambda-Calculus", V. Gehot et al, Comp Langs 11(1):1-14
	(1986).

SLiRP

	<networking, tool> A {SLIP emulator} by Danny Gasparovski,
	faster than {TIA}.

	Version: 0.95H 12 Sep 95.

	{Home (http://www.webcom.com/~llarrow/slirp.html)}

	(15 Sep 1995)

SLLIC

	<language> An intermediate language developed at {HP}.  An
	infinite-register version of the {Precision Architecture}
	{instruction set}?

	(28 May 1995)

slog

	{Prolog} to {Chez Scheme} {macro} translator by
	<dorai@cs.rice.edu>.  Slog relies on continuations.

	{(ftp://titan.rice.edu/public/slog.sh)}

Sloop

	"Parallel Programming in a Virtual Object Space", S. Lucco,
	SIGPLAN Notices 22(12):26-34 (OOPSLA '87) (Dec 1987).

slop

	<jargon> 1. A one-sided {fudge factor}, that is, an allowance
	for error but in only one of two directions.  For example, if
	you need a piece of wire 10 feet long and have to guess when
	you cut it, you make very sure to cut it too long, by a large
	amount if necessary, rather than too short by even a little
	bit, because you can always cut off the slop but you can't
	paste it back on again.  When discrete quantities are
	involved, slop is often introduced to avoid the possibility of
	being on the losing side of a {fencepost error}.

	2. The percentage of "extra" code generated by a compiler over
	the size of equivalent {assembly code} produced by
	{hand-hacking}; i.e. the space (or maybe time) you lose because
	you didn't do it yourself.  This number is often used as a
	measure of the quality of a compiler; slop below 5% is very
	good, and 10% is usually acceptable.  Modern compilers,
	especially on {RISC}s, may actually have *negative* slop; that
	is, they may generate better code than humans.  This is one of
	the reasons assembler programming is becoming less common.

	(28 May 1995)

slopsucker

	/slop'suhk-r/ A lowest-priority task that waits around until
	everything else has "had its fill" of machine resources.  Only
	when the machine would otherwise be idle is the task allowed
	to "suck up the slop".  Also called a "hungry puppy" or
	"bottom feeder".  One common variety of slopsucker hunts for
	large prime numbers.  Compare {background}.

slurp

	To read a large data file entirely into {core} before working
	on it.  This may be contrasted with the strategy of reading a
	small piece at a time, processing it, and then reading the
	next piece.  "This program slurps in a 1K-by-1K matrix and
	does an FFT."  See also {sponge}.

smail

	{snail-mail}

SMALGOL

	SMall ALGOL.

	A subset of {ALGOL 60}.

	["SMALGOL-61", G.A. Bachelor et al CACM 4(11):499-502 (Nov
	1961)].

	[Sammet 1969].

	(31 Jan 1995)

SMALL

	1. Functional, lazy, untyped.

	["SMALL - A Small Interactive Functional System",
	L. Augustsson, TR 28, U Goteborg and Chalmers U, 1986].

	2. A {toy language} used to illustrate {denotational
	semantics}.

	["The Denotational Description of Programming Languages",
	M.J.C. Gordon, Springer 1979].

Small-C

	A subset of {C}.  The original compiler, written in {C} by Ron
	Cain, appeared in Dr. Dobb's Journal.  James E. Hendrix
	improved and extended the original compiler and published "The
	Small-C Handbook".  Both these compilers produced {8080}
	{assembly code}.

	A Small-C compiler based on {RatC} produced {6502} {assembly
	code} for the {BBC Microcomputer}.  It was written in Small-C
	and {bootstrap}ped using {Zorland C} on an {Amstrad PC1512}
	under {MS-DOS} 3.2, then transferred onto a {BBC Micro} using
	{Kermit}.  The compiler can be used to cross-compile {6502}
	code from an {MS-DOS} host, or as a {resident} Small-C
	compiler on a BBC Micro.  It runs on {68000}, {6809}, {VAX},
	{8080}, {BBC Micro} and {Zilog Z80}.

	Posted to comp.sources.unix volume 5.

	{(ftp://apple.com/ArchiveVol1/Unix_lang)}

	["Small-C"?, Ron Cain, Dr. Dobb's Journal, May 1980, Dec
	1982?]

	["The Small-C Handbook," James Hendrix, Reston 1984, ISBN
	0-8359-7012-4].

	(05 Jan 1989)

Small Computer System Interface

	<hardware, standard> (SCSI) /skuh'zee/, /sek'si/ A
	processor-independent standard for system-level interfacing
	between a computer and intelligent devices including {hard
	disks}, {floppy disks}, {CD-ROM}, {printers}, {scanners} and
	many more.  SCSI can connect up to seven devices to a single
	controller (or "host adaptor") on the computer's bus.

	SCSI transfers eight bits in parallel (it is an eight-bit bus,
	but see {Wide SCSI}) and can operate in either {asynchronous}
	or {synchronous} modes.  The synchronous transfer rate is up
	to 5MB/s.

	SCSI connections normally use "{single ended}" drivers as
	opposed to {differential drivers}.  Single ended SCSI can
	suport up to six metres of cable.  Differential can support up
	to 25 metres of cable.

	A problem with SCSI is the large number of different
	connectors allowed.  Nowadays the trend is towards a 68-pin
	{miniature D-type} or "high density" connector (HD68) for
	{Wide SCSI} and a 50-pin version of the same connector (HD50)
	for 8-bit SCSI (Type 1-4, pin pitch 1.27 mm x 2.45 mm).
	50-pin {ribbon cable} connectors are also popular for internal
	wiring (Type 5, pin pitch 2.54 mm x 2.54 mm).  {Apple
	Computer} used a 25-pin connector on the {Macintosh} computer
	but this connector causes problems with high-speed equipment.

	SCSI was developed by {Shugart Associates}, which later became
	{Seagate}.  SCSI was originally called SASI for "Shugart
	Associates System Interface" before it became a standard.
	Original SCSI implementations were highly incompatible with
	each other.

	The original standard is now called "SCSI-1" to distinguish it
	from {SCSI-2} and {SCSI-3} which include specifications of
	{Wide SCSI} (a 16-bit bus) and {Fast SCSI} (10 MB/s transfer).

	SCSI-1 has been standardised as {ANSI} X3.131-1986 and
	{ISO}/{IEC} 9316.

	{Usenet} newsgroup: {news:comp.periphs.scsi}.

	{(news:comp.periphs.scsi)}

	["System" or "Systems"?]

	(26 Nov 1997)

small-office/home-office

	(SoHo) A term describing the market for certain computer goods.

	(11 Jan 1995)

Small Outline DIMM

	<storage> (SO-DIMM) A kind of {DIMM} with 72 pins as opposed
	to the 168 pins regular DIMMs have.  Being half the size of
	the regular DIMM, SO-DIMMs are often used in {notebook
	computers}.

	(19 Apr 1996)

Smalltalk

	<language> The pioneering {object-oriented programming} system
	developed by the Software Concepts Group, led by {Alan Kay},
	at {Xerox PARC} in 1972.  It includes a language (usually
	interpreted), a programming environment, and an extensive
	object library.

	Smalltalk took the concepts of {class} and {message} from
	{Simula-67} and made them all-pervasive.  Innovations included
	the {bitmap display}, windowing system and use of a {mouse}.

	The syntax is very simple.  The fundamental construction is to
	send a message to an {object}:

		object message

	or with extra parameters

		object message: param1 secondArg: param2 .. nthArg: paramN

	where "secondArg:" etc. are considered to be part of the
	message name.

	Two pseudo-variables are defined: "self" - the receiver of the
	current message and "super" - an object of the current class's
	{superclass}.  Smalltalk does not have {multiple inheritance}
	so each class can have at most one superclass.

	Early versions: Smalltalk-72, Smalltalk-74, Smalltalk-76
	(inheritance taken from Simula, and concurrency), and
	Smalltalk-78, {Smalltalk-80}.  Other versions: {Little
	Smalltalk}, {GNU Smalltalk}, {Smalltalk/V}.

	See also {International Smalltalk Association}, {Kamin's
	interpreters}.

	{UIUC Smalltalk archive (http://st-www.cs.uiuc.edu/)}.
	{FAQ (http://XCF.Berkeley.EDU/pub/misc/smalltalk/FAQ/)}.

	{Usenet} newsgroup: {news:comp.smalltalk}.

	["The Smalltalk-76 Programming System Design and
	Implementation", D.H. Ingalls, 5th POPL, ACM 1978, pp. 9-16].

	(14 Feb 1995)

Smalltalk-80

	["Smalltalk-80: The Language and Its Implementation" ("The
	Blue Book"), Adele Goldberg et al, A-W 1983].

	[BYTE 6(8) (Aug 1981)].

	{(ftp://st.cs.uiuc.edu/pub/ISA)},
	{(ftp://st.cs.uiuc.edu/pub/MANCHESTER)},
	{(ftp://prep.ai.mit.edu/pub/gnu)}.

	Mail server: goodies-lib@r5.cs.man.ac.uk.

Smalltalk/V

	The first widely available version of {Smalltalk}, developed
	by {Digitalk} in 1986 for {IBM PC} and {Macintosh}.

	(14 Feb 1995)

SmallVDM

	<tool>

	["SmallVDM: An Environment for Formal Specification and
	Prototyping in Smalltalk", in Object Oriented Specification
	Case Studies, K. Lano et al eds, P-H 1993].

	(20 Apr 1996)

SmallWorld

	<language> An {object-oriented} language.

	["SW 2 - An Object-based Programming Environment", M.R. Laff
	et al, IBM TJWRC, 1985].

	(20 Apr 1996)

SMART

	For {MS-DOS}?

smart

	1. <programming> Said of a program that does the {Right Thing}
	in a wide variety of complicated circumstances.  There is a
	difference between calling a program smart and calling it
	intelligent; in particular, there do not exist any intelligent
	programs (yet - see {AI-complete}).

	Compare {robust} (smart programs can be {brittle}).

	2. <hardware> Incorporating some kind of digital electronics.

	(28 Mar 1995)

smart card

	Any plastic card (like a credit card) with an embedded
	{integrated circuit} for storing information.

	Smart cards are being incorporated into soldier's dog-tags and
	used to store hospital patients' medical records.  This way
	they are always instantly accessible.

	Other uses are as a form of token in banking systems.  You
	could store electronic money on the card or less valuable
	tokens such as those given away by petrol companies which you
	collect to exchange for free gifts at a later date.  The idea
	being that one smart card is easier to carry around than a
	multitude of paper tokens.

	{news:alt.technology.smartcards}

	(06 Jan 1995)

Smartdrive

	<storage, product> A {Microsoft} {MS DOS} {disk cache} program
	to speed up disk access.

	For most users, a 1MB cache is sufficient.  Devoting more
	memory to the cache offers diminishing returns, since the
	additional cache hits become fewer (and the extra memory could
	be better used to reduce {swapping}).

	Typing SMARTDRV /S at a DOS prompt shows the cache size, a
	hit-and-miss report, and information about which drives are
	being cached.  The hit-and-miss statistics are crucial for
	gauging the effectiveness of SmartDrive settings.  A score in
	the high 80s shows that SmartDrive is well configured.  Run
	SMARTDRV /S several times during a Windows session and note
	the-hit-and-miss figures each time.  If your percentage
	usually falls below 80 percent, you should consider increasing
	the cache size.  You can edit the SMARTDRV line in your
	{AUTOEXEC.BAT} file to increase both the InitCacheSize and the
	WinCacheSize parameters.

	SmartDrive Monitor is an undocumented Windows program that
	comes with DOS 6.0 for logging and controling the cache.

	(22 Nov 1995)

SMARTdrv

	{Smartdrive}

smart terminal

	{intelligent terminal}

smash case

	{case sensitivity}

smash sum

	{coalesced sum}

smash the stack

	<jargon> In {C} programming, to corrupt the execution stack by
	writing past the end of a local array or other data structure.
	Code that smashes the stack can cause a return from the
	routine to jump to a random address, resulting in insidious
	data-dependent {bug}s.

	Variants include "trash" the stack, {scribble} the stack,
	{mangle} the stack.

	See {spam}; see also {aliasing bug}, {fandango on core},
	{memory leak}, {memory smash}, {precedence lossage}, {overrun
	screw}.

	(16 Mar 1995)

SMB

	{Server Message Block} ({protocol}, {MII}).

smbclient

	{Samba}

smblib

	{Samba}

SMCC

	{Sun Microsystems} Computer Corporation.

SMDS

	{Switched Multimegabit Data Service}

SMG

	Screen Management Guidelines.  A {VMS} package of run-time
	library routines providing windows on {DEC} {VT100} terminals.

SMI

	{Structure of Management Information}

SMIL

	Machine language for a Swedish computer.
	{(ftp://ftp.wustl.edu/mirrors/info-mac/lang/smil-emulator.hqx)}.

smiley

	{emoticon}

S-MIME

	{Secure Multipurpose Internet Mail Extensions}

SML

	1. {Standard ML}.

	2. Small Machine Language.  Barnes, ICI 1969.  Real-time
	language, an ALGOL variant, and the predecessor of RTL.  "SML
	User's Guide", J.G.P.  Barnes, ICI, TR JGPB/69/35 (1969).

SML#

	An extension of SML/NJ with polymorphic field selection and
	nondestructive field update.  "A Compilation Method for
	ML-style Polymorphic Record Calculi", A. Ohori, POPL 1992.

	{(ftp://ftp.cis.upenn.edu/pub/sml#/)}

sml2c

	A Standard ML to C compiler.  sml2c is a batch compiler and
	compiles only module-level declarations, i.e. signatures,
	structures and functors.  It provides the same pervasive
	environment for the compilation of these programs as SML/NJ.
	As a result, module-level programs that run on SML/NJ can be
	compiled by sml2c without any changes.  Based on SML/NJ
	version 0.67 and shares front end and most of its run-time
	system, but does not support SML/NJ style debugging and
	profiling.

	School of Computer Science, Carnegie Mellon University

	{(ftp://dravido.soar.cs.cmu.edu/usr/nemo/sml2c/sml2c.tar.Z)}.
	{Linux
	(ftp://ftp.dcs.glasgow.ac.uk/pub/linux/smlnj-0.82-linux.tar.Z)}.

	conformance:	superset
		+ first-class continuations,
		+ asynchronous signal handling
		+ separate compilation
		+ freeze and restart programs

	ports: IBM-RT Decstation3100 Omron-Luna-88k Sun-3 Sun-4
	386(Mach)

	portability:	easy, easier than SML/NJ

	E-mail: <david.tarditi@cs.cmu.edu> <anurag.acharya@cs.cmu.edu>
		<peter.lee@cs.cmu.edu>

	(1991/06/27)

SML/NJ

	{Standard ML of New Jersey}

SMM

	{System Management Mode}

SMNP

	Do you mean "{SNMP}"?  If not, please tell me.

smoke

	1. To {crash} or blow up, usually spectacularly. "The new
	version smoked, just like the last one."  Used for both
	hardware (where it often describes an actual physical event),
	and software (where it's merely colourful).

	2. [Automotive slang] To be conspicuously fast.  "That
	processor really smokes."  Compare {magic smoke}.

smoke and mirrors

	Marketing deceptions.  The term is mainstream in this general
	sense.  Among hackers it's strongly associated with bogus
	demos and crocked {benchmark}s (see also {MIPS},
	{machoflops}).  "They claim their new box cranks 50 MIPS for
	under $5000, but didn't specify the instruction mix - sounds
	like smoke and mirrors to me."  The phrase has been said to
	derive from carnie slang for magic acts and "freak show"
	displays that depend on "trompe l"oeil' effects, but also
	calls to mind the fierce Aztec god Tezcatlipoca (lit. "Smoking
	Mirror") for whom the hearts of huge numbers of human
	sacrificial victims were regularly cut out.  Upon hearing
	about a rigged demo or yet another round of fantasy-based
	marketing promises, hackers often feel analogously
	disheartened.

smoke-emitting diode

	<humour, electronics> (From "{light-emitting diode}") An
	incorrectly connected {diode}, probably a {light-emitting
	diode}, in the process of losing its {magic smoke} and
	becoming a {friode}.

	See also {LER}.

	(28 Apr 1996)

smoke test

	1. A rudimentary form of testing applied to electronic
	equipment following repair or reconfiguration, in which power
	is applied and the tester checks for sparks, smoke, or other
	dramatic signs of fundamental failure.  See {magic smoke}.

	2. By extension, the first run of a piece of software after
	construction or a critical change.  See and compare {reality
	check}.

	There is an interesting semi-parallel to this term among
	typographers and printers: When new typefaces are being
	punch-cut by hand, a "smoke test" (hold the letter in candle
	smoke, then press it onto paper) is used to check out new
	dies.

smoking clover

	[ITS] A {display hack} originally due to Bill Gosper.  Many
	convergent lines are drawn on a colour monitor in {AOS} mode
	(so that every pixel struck has its colour incremented).  The
	lines all have one endpoint in the middle of the screen; the
	other endpoints are spaced one pixel apart around the
	perimeter of a large square.  The colour map is then
	repeatedly rotated.  This results in a striking, rainbow-hued,
	shimmering four-leaf clover.  Gosper joked about keeping it
	hidden from the FDA (the US's Food and Drug Administration)
	lest its hallucinogenic properties cause it to be banned.

SMoLCS

	Specification metalanguage used for a formal definition of
	Ada.  "An Introduction to the SMoLCS Methodology",
	E. Astesiano, U Genova 1986.

SMOP

	/S-M-O-P/ [Simple (or Small) Matter of Programming] 1. A piece
	of code, not yet written, whose anticipated length is
	significantly greater than its complexity.  Used to refer to a
	program that could obviously be written, but is not worth the
	trouble.  Also used ironically to imply that a difficult
	problem can be easily solved because a program can be written
	to do it; the irony is that it is very clear that writing such
	a program will be a great deal of work.  "It's easy to enhance
	a FORTRAN compiler to compile COBOL as well; it's just an
	SMOP."  2. Often used ironically by the intended victim when a
	suggestion for a program is made which seems easy to the
	suggester, but is obviously (to the victim) a lot of work.

SMP

	1. {Symbol Manipulation Program}.

	2. <computer, parallel> {symmetric multiprocessing}.

	(19 Mar 1995)

SMPT

	Do you mean {SMTP}?

SMS

	1. <messaging> {Short Message Service}.

	2. <storage> {Storage Management Services}.

	(18 Feb 1996)

SMT

	{Station Management}

SMTP

	{Simple Mail Transfer Protocol}

smurf

	<jargon> /smerf/ (From the {news:soc.motss} {Usenet}
	newsgroup, after some obnoxiously gooey cartoon characters) A
	newsgroup regular with a habitual style that is irreverent,
	silly, and cute.  Like many other hackish terms for people,
	this one may be praise or insult depending on who uses it.  In
	general, being referred to as a smurf is probably not going to
	make your day unless you've previously adopted the label
	yourself in a spirit of irony.

	Compare {old fart}.

	(25 Oct 1995)

SNA

	{Systems Network Architecture}

snacc

	<tool> (Sample Neufeld {ASN.1} to {C/C++} Compiler) A compiler
	by Mike Sample <msample@cs.ubc.ca> which compiles 1990 {ASN.1}
	(including some {macros}) data structures into {C}, {C++} or
	type tables.  The generated {C/C++} includes a .h file with
	the equivalent data struct and a .c/.C file for the {BER}
	encode and decode, print and free routines.

	ITU TS X.208/ISO 8824.

	Version: 1.1 (pre 12 Jul 1993).

	snacc includes the compiler, run-time BER libraries, and
	utility programs.

	{(ftp://cs.ubc.ca/pub/local/src/snacc/snacc1.1.tar.Z)}

	snacc is compiled under {GNU} {General Public License}.  It
	requires {yacc} or {bison}, {lex} or {flex}, and {cc} (ANSI or
	non-ANSI).

	E-mail: Barry Brachman <brachman@cs.ubc.ca> or
	<snacc-bugs@cs.ubc.ca>.

	[Michael Sample and Gerald Neufeld, "Implementing Efficient
	Encoders and Decoders for Network Data Representations", IEEE
	INFOCOM '93 Proceedings, Vol 3, pp. 1143-1153, Mar 1993].

	[Michael Sample, "How Fast Can ASN.1 Encoding Rules Go?",
	M.Sc. Thesis, University of British Columbia, Apr 1993].

	(12 Jul 1993)

snaf

	{chad}

SNAFU principle

	/sna'foo prin'si-pl/ [WWII Army acronym for "Situation Normal:
	All Fucked Up"] "True communication is possible only between
	equals, because inferiors are more consistently rewarded for
	telling their superiors pleasant lies than for telling the
	truth." - a central tenet of {Discordianism}, often invoked
	by hackers to explain why authoritarian hierarchies screw up
	so reliably and systematically.  The effect of the SNAFU
	principle is a progressive disconnection of decision-makers
	from reality.  This lightly adapted version of a fable dating
	back to the early 1960s illustrates the phenomenon perfectly:

	 In the beginning was the plan,
	       and then the specification;
	 And the plan was without form,
	       and the specification was void.

	 And darkness
	       was on the faces of the implementors thereof;
	 And they spake unto their leader,
	       saying:
	 "It is a crock of shit,
	       and smells as of a sewer."

	 And the leader took pity on them,
	       and spoke to the project leader:
	 "It is a crock of excrement,
	       and none may abide the odor thereof."

	 And the project leader
	       spake unto his section head, saying:
	 "It is a container of excrement,
	       and it is very strong, such that none may abide it."

	 The section head then hurried to his department manager,
	       and informed him thus:
	 "It is a vessel of fertilizer,
	       and none may abide its strength."

	 The department manager carried these words
	      to his general manager,
	 and spoke unto him
	      saying:
	 "It containeth that which aideth the growth of plants,
	      and it is very strong."

	 And so it was that the general manager rejoiced
	      and delivered the good news unto the Vice President.
	 "It promoteth growth,
	      and it is very powerful."

	 The Vice President rushed to the President's side,
	      and joyously exclaimed:
	 "This powerful new software product
	      will promote the growth of the company!"

	 And the President looked upon the product,
	      and saw that it was very good.

	After the subsequent disaster, the {suit}s protect themselves
	by saying "I was misinformed!", and the implementors are
	demoted or fired.

snail mail

	(Or "SnailMail", "smail".  From "US Mail" via "USnail").
	Paper mail sent via the postal service as opposed to
	{electronic mail}.  One's postal address is, correspondingly,
	a "snail (mail) address".  There have even been parody USnail
	posters and stamps made.

	(31 Jan 1995)

SNAP

	1. Early (IBM 360?) interpreted text-processing language for
	beginners, close to basic English.  ["Computer Programming in
	English", M.P. Barnett, Harcourt Brace 1969].

	2. ["Some Proposals for SNAP, A Language with Formal Macro
	Facilities", R.B. Napper, Computer J 10(3):231-243 (1967)].
	[same as 1?]

	3. To replace a pointer to a pointer with a direct pointer; to
	replace an old address with the forwarding address found
	there.  If you telephone the main number for an institution
	and ask for a particular person by name, the operator may tell
	you that person's extension before connecting you, in the
	hopes that you will "snap your pointer" and dial direct next
	time.  The underlying metaphor may be that of a rubber band
	stretched through a number of intermediate points; if you
	remove all the thumbtacks in the middle, it snaps into a
	straight line from first to last.  See {chase pointers}.

	Often, the behaviour of a {trampoline} is to perform an error
	check once and then snap the pointer that invoked it so as
	henceforth to bypass the trampoline (and its one-shot error
	check).  In this context one also speaks of "snapping links".
	For example, in a {Lisp} implementation, a function interface
	trampoline might check to make sure that the caller is passing
	the correct number of arguments; if it is, and if the caller
	and the callee are both compiled, then snapping the link
	allows that particular path to use a direct procedure-call
	instruction with no further overhead.

Snappy

	{Snappy Video Snapshot}

Snappy Video Snapshot

	<hardware> (registered trademark) A {frame grabber} for the
	{IBM PC} designed and marketed by {Play, Inc.}.

	(11 Jul 1997)

snarf

	/snarf/ 1. To grab, especially to grab a large document or
	file for the purpose of using it with or without the author's
	permission.

	See also {BLT}.

	2. ({Unix}) To fetch a file or set of files across a network.

	See also {blast}.

	3. To acquire, with little concern for legal forms or
	politesse (but not quite by stealing).  "They were giving away
	samples, so I snarfed a bunch of them."

	4. Synonym for {slurp}.  "This program starts by snarfing the
	entire database into core."

	5. ({GEnie}) To spray food or {programming fluid}s due to
	laughing at the wrong moment.  This sense appears to be
	widespread among mundane teenagers - ESR.

	6. This term was mainstream in the late 1960s, meaning "to eat
	piggishly".  It may still have this connotation in context.

	7. A creature on the Thundercats, fond of eating, usually
	covertly.

	(21 Feb 1995)

snarf & barf

	/snarf'n-barf`/ Under a {WIMP} environment, the act of
	grabbing a region of text and then stuffing the contents of
	that region into another region (or the same one) to avoid
	retyping a command line.  In the late 1960s, this was a
	mainstream expression for an "eat now, regret it later" cheap
	restaurant expedition.

	(04 Nov 1994)

snarf down

	To {snarf}, with the connotation of absorbing, processing, or
	understanding.  "I'll snarf down the latest version of the
	{nethack} user's guide - it's been a while since I last
	played."

	(04 Nov 1994)

snark

	[Lewis Carroll, via the Michigan Terminal System] 1. A system
	failure.  When a user's process bombed, the operator would get
	the message "Help, Help, Snark in MTS!"

	2. More generally, any kind of unexplained or threatening
	event on a computer (especially if it might be a boojum).
	Often used to refer to an event or a log file entry that might
	indicate an attempted security violation.  See {snivitz}.

	3. UUCP name of snark.thyrsus.com, home site of the Hacker
	{Jargon File} versions 2.*.*.

sneakernet

	/snee'ker-net/ Term used (generally with ironic intent) for
	transfer of electronic information by physically carrying
	tape, disks, or some other media from one machine to another.
	"Never underestimate the bandwidth of a station wagon filled
	with magtape, or a 747 filled with CD-ROMs."  Also called
	"Tennis-Net", "Armpit-Net", "Floppy-Net", "Shoenet",
	"walknet".

snert

	A derogatory term commonly used on the {Internet} {ECHO}
	{BBS}, echonyc.com, meaning To make overtures of a sexual
	nature.  It implies terminal cluelessness.

	(01 Mar 1995)

SNI

	{Siemens Nixdorf Informationssteme, AG}

Sniff

	A {C++}/{C} programming environment providing browsing,
	cross-referencing, design visualisation, documentation and
	editing support.  Developed by UBS Switzerland and marketed by
	takeFive Salzburg.

sniff

	{poll}

sniffer

	<networking, tool> A network monitoring tool that can capture
	data {packet}s and decode them to show {protocol} data.

	(28 Mar 1995)

snivitz

	<jargon> /sniv'itz/ A hiccup in hardware or software; a small,
	transient problem of unknown origin (less serious than a
	{snark}).

	Compare {glitch}.

	(28 Mar 1995)

SNMP

	{Simple Network Management Protocol}

SNMP agent

	<networking> A software process that responds to queries using
	the {Simple Network Management Protocol} to provide status and
	statistics about a network {node}.

	(11 Nov 1995)

SNMPv2

	{Simple Network Management Protocol version 2}

SNOBOL

	{String Oriented Symbolic Language}

SNOBOL2

	A {SNOBOL} variant which existed only briefly.  It featured
	built-in functions, but not programmer-defined ones.

	["SNOBOL2", D.J. Farber, R.E. Griswold and I.P. Polonsky, TR
	Bell Labs, Apr 1964].

SNOBOL3

	{SNOBOL} with user-defined functions.  Written in 1965.  The
	SNOBOL 6.3 compiler for the {PDP-6} and {PDP-10} was written
	in SNOBOL.

	["The SNOBOL3 Programming Language", D.J. Farber et al, Bell
	Sys Tech J 45(6):895-944 (Jul 1966)].

	(04 Nov 1994)

SNOBOL4

	A quite distinct descendant of {SNOBOL}, developed by Griswold
	et al in 1967.  SNOBOL4 is {declarative} with {dynamic scope}.
	Patterns are {first-class} data objects that can be
	constructed by concatenation and alternation.  Success and
	failure are used for {flow control}.  Delayed (unevaluated)
	expressions can be used to implement {recursion}.  It has a
	table data type.  Strings generated at run-time can be treated
	as programs and executed.

	See also {vanilla}.

	{(ftp://apple.com/ArchiveVol1/Unix_lang)}

	["The SNOBOL4 Programming Language", Ralph E. Griswold et al,
	P-H 1971].

	(04 Nov 1994)

SNOOPS

	Craske, 1988.  An extension of SCOOPS with meta-objects that
	can redirect messages to other objects.  "SNOOPS: An
	Object-Oriented language Enhancement Supporting Dynamic
	Program Reeconfiguration", N. Craske, SIGPLAN Notices 26(10):
	53-62 (Oct 1991).

'Snooze

	/snooz/ [FidoNet] Fidonews, the weekly official on-line
	newsletter of FidoNet.  As the editorial policy of Fidonews is
	"anything that arrives, we print", there are often large
	articles completely unrelated to FidoNet, which in turn tend
	to elicit {flamage} in subsequent issues.

SNPP

	{Simple Network Paging Protocol}

SNR

	{signal-to-noise ratio}

S/N ratio

	{signal-to-noise ratio}

SO

	1. <character> {Shift Out}

	2. Significant Other, almost invariably written abbreviated
	and pronounced /S-O/ by hackers.  Used to refer to one's
	primary relationship, especially a live-in to whom one is not
	married.

SO 2

	An early system on {IBM 701}.

	[Listed in CACM 2(5):16 (May 1959)].

	(04 Nov 1994)

SOAP

	Symbolic Optimal Assembly Program.  The {IBM 650}'s {assembly
	language}.  "Optimal" refers to rearranging instructions on
	slowly rotating {drum memory}.

	Versions: SOAP I, SOAP II, CASE SOAP III.

	[Listed in CACM 2(5):16 (May 1959)].

	(04 Nov 1994)

SOAR

	1. State, Operator And Result.  A general problem-solving
	{production system} architecture, intended as a model of human
	intelligence.  Developed by A. Newell in the early 1980s.
	SOAR was originally implemented in {Lisp} and {OPS5} and is
	currently implemented in {Common Lisp}.  Version: Soar6.

	E-mail: <soar@cs.cmu.edu>.

	["The SOAR Papers", P.S. Rosenbloom et al eds, MIT Press
	1993].

	(04 Nov 1994)

	2. Smalltalk On A RISC.  A {RISC} {microprocessor} designed by
	David Patterson's at Berekeley.

	(04 Nov 1994)

social engineering

	Term used among {cracker}s and {samurai} for cracking
	techniques that rely on weaknesses in {wetware} rather than
	software; the aim is to trick people into revealing passwords
	or other information that compromises a target system's
	security.  Classic scams include phoning up a mark who has the
	required information and posing as a field service tech or a
	fellow employee with an urgent access problem.  See also the
	{tiger team} story in the {patch} entry.

social science number

	(IBM) A statistic that is {content-free}, or nearly so.  A
	measure derived via methods of questionable validity from data
	of a dubious and vague nature.  Predictively, having a social
	science number in hand is seldom much better than nothing, and
	can be considerably worse.  {Management} loves them.

	See also {numbers}, {math-out}, {pretty pictures}.

	(04 Nov 1994)

socket

	<networking> The {Berkeley Unix} mechansim for creating a
	virtual connection between processes.  Sockets interface
	{Unix}'s {standard I/O} with its {network} communication
	facilities.  They can be of two types, stream (bi-directional)
	or {datagram} (fixed length destination-addressed messages).
	The socket library function socket() creates a communications
	end-point or socket and returns a {file descriptor} with which
	to access that socket.  The socket has associated with it a
	socket address, consisting of a {port} number and the local
	host's network address.

	{Unix manual page}: socket(2).

	(31 Jan 1995)

Socket 7

	<hardware> A physical and electrical specification for the
	pins on {Pentium} and compatible {microprocessors}
	manufactured by {Intel}, {Cyrix}, {AMD} and others.  Any {CPU}
	chip conforming to this specification can be plugged into any
	conforming {motherboard}.

	Intel's {Pentium II} microprocessor uses "{Slot 1}" mounting,
	not Socket 7.

	[Shape?  Pin-count?]

	(13 Dec 1997)

SOCKS

	<security> A security package that allows a {host} behind a
	{firewall} to use {finger}, {FTP}, {telnet}, {Gopher}, and
	{Mosaic} to access resources outside the firewall while
	maintaining the security requirements.

	[The Security FAQ, {Usenet} newsgroups
	{news:comp.security.misc}, {news:comp.security.unix},
	{news:alt.security}].

	(31 Jan 1995)

SOCRATIC

	An early interactive learning system (not a language(?))
	developed at {Bolt, Beranek & Newman}.

	[Sammet 1969, p. 702].

	(04 Nov 1994)

SODA

	Symbolic Optimum DEUCE Assembly Program.

	The symbolic {assembler} for a {one-level storage} {virtual
	machine} for the {English ELectric} {DEUCE}.

	["SODA Manual of Operation", R. C. Brigham and C. G. Bell,
	School of Elec Eng, U New S Wales, Sydney, NSW (1958)].

	(04 Nov 1994)

SODAS

	[D.L. Parnas & J.A. Darringer.  Proc FJCC 31:449-474, AFIPS
	(Fall 1967)].

	(04 Nov 1994)

SO-DIMM

	{Small Outline DIMM}

Sod's Law

	<humour> {Murphy's Law}.

	[Or is it "Sodd"?]

	(29 Dec 1995)

SoftBench

	An {IPSE} from {Hewlett-Packard}.

soft boot

	<operating system> A {boot} which resets only part of the
	{system}.

	For example, "If you're running the {mess-dos} {emulator},
	control-alt-insert will cause a soft boot of the emulator,
	while leaving the rest of the system running".

	Contrast {hard boot}.

	(27 Nov 1995)

softcopy

	/soft'kop-ee/ (by analogy with "hardcopy") A machine-readable
	("{machinable}") form of corresponding {hardcopy}.

	(04 Nov 1994)

Softlab

	<company> A {software engineering} company strong in the UK
	and Germany.

	[Details?]

soft link

	{symbolic link}

SoftModem

	The integration of {modem} controller and {data pump}
	{algorithm}s into a single {RAM}-based {DSP} hardware
	architecture.  These integrated algorithms are stored on the
	computer's hard disk, from which they are downloaded into the
	DSP board's random access memory (RAM).  This downloading, or
	"booting" process of the PC-installed software algorithms
	occurs as part of the computer's power-up initialisation
	process in less than 100 milliseconds, making it transparent
	to the user.

	[Digicom Modem FAQ version 2.03].

software

	<programming> Computer {programs}, as opposed to the computers
	on which they run (the "{hardware}").

	Programs stored on {non-volatile storage} built from
	{integrated circuits} (e.g. {ROM} or {PROM}) are usually
	called {firmware}.

	Software can be split into two main types - {system software}
	and application software or {application programs}.  System
	software is any software required to support the production or
	execution of application programs but which is not specific to
	any particular application.  Examples of system software would
	include the {operating system}, {compilers}, editors and
	sorting programs.  Examples of application programs would
	include an accounts package or a {CAD} program.

	Software includes both {source code} written by humans and
	executable {machine code} produced by {assemblers} or
	{compilers}.  It does not usually include the data processed
	by programs unless this is in a format such as {multimedia}
	which depends on the use of computers for its presentation.
	This distinction becomes unclear in cases such as {spread
	sheets} which can contain both instructions (formulae and
	{macros}) and data.

	Some claim that {documentation} (both paper and electronic) is
	also software.  Others go further and define software to be
	programs plus documentation though this does not correspond
	with common usage.

	(22 Sep 1997)

Software AG

	<company> A German {software engineering} company.  {Natural}
	is their {database} product.

	{Home (http://www.sagus.com/)}

	Mailing-list: <sag-l@uafsysb.uark.edu>.

	E-mail: <jwisdom@uism.bu.edu>, <rjw@software-ag.de>, David
	L. Merrifield <dm06900@comp.uark.edu>.

	(14 Nov 1995)

software audit

	<legal> A regular investigation of the software installed on
	all computers in an organisation to ensure that it is
	authorised or licensed.

	Software audits minimise the risk of prosecution for {software
	theft}, minimise the risk of {viruses} through uncontrolled
	software copying, and ensure technical support is available to
	all users.

	The {Business Software Alliance} {Guide To Software Management
	(http://www.bsa.org/bsa)}.

	(19 May 1996)

Software BackPlane

	<programming, tool> A {CASE} framework from {Atherton}.

	(19 May 1996)

software bloat

	<jargon, abuse> The result of adding new features to a program
	or system to the point where the benefit of the new features
	is outweighed by the extra resources consumed ({RAM}, disk
	space or performance) and complexity of use.  Software bloat
	is an instance of Parkinson's Law: resource requirements
	expand to consume the resources available.  Causes of software
	bloat include {second-system effect} and {creeping
	featuritis}.  Commonly cited examples include Unix's "{ls}(1)"
	command, the {X Window System}, {BSD}, {Missed'em-five},
	{OS/2} and any {Microsoft} product.

	(16 Oct 1995)

Software bus

	A support environment for heterogeneous distributed
	processing, such as the ANSA Testbench.

Software Description Database

	<networking> {Archie}'s database of names and short
	descriptions of many of the software packages, documents (like
	{RFCs} and educational material), and data files that are
	available via the {Internet}.

	(12 Nov 1995)

Software Developers Kit

	<jargon, product> (SDK, or "Software Development Kit")
	Software provided by a software vendor to allow their products
	to be used with those of other software vendors.

	(01 Mar 1995)

software development life cycle

	{software life cycle}

software engineering

	<programming> (SE) A systematic approach to the analysis,
	design, implementation and maintenance of {software}.  It
	often involves the use of {CASE} tools.  There are various
	models of the {software life-cycle}, and many {methodologies}
	for the different phases.

	(03 Nov 1994)

Software Engineering Environment

	(SEE) A set of management and technical tools to support
	software development, usually integrated in a coherent
	framework; equivalent to an {IPSE}.

	(03 Nov 1994)

software handshaking

	<communications> The transmission of extra data on a channel
	in order to control the device sending data in the other
	direction on that channel.  For an {RS-232} connection, this
	means sending {Control-S} and {Control-Q} characters to stop
	and start transmission.

	Since software handshaking requires the transmission and
	processing of extra data it can be less efficient than
	{hardware handshaking}.

	(16 Oct 1996)

software interrupt

	An {interrupt} caused by a specific {machine language}
	operation code (e.g. the {Motorola 68000}'s TRAP, the {IBM
	System/390}'s SVC or the {ARM}'s SWI) rather than by a
	hardware event.

	As with a hardware interrupt, this causes the processor to
	store the current state, store identifying information about
	the particular interrupt, and pass control to a first level
	{interrupt handler}.

	A {trap} is similar except that it is caused by an unexpected
	software condition or error (e.g. divide by zero, undefined
	instruction) rather than a deliberate instruction.

	(14 Feb 1995)

software laser

	An optical laser works by bouncing photons back and forth
	between two mirrors, one totally reflective and one partially
	reflective.  If the lasing material (usually a crystal) has
	the right properties, photons scattering off the atoms in the
	crystal will excite cascades of more photons, all in lockstep.
	Eventually the beam will escape through the partially
	reflective mirror.

	One kind of {sorcerer's apprentice mode} involving {bounce
	message}s can produce closely analogous results, with a
	{cascade} of messages escaping to flood nearby systems.  By
	mid-1993 there had been at least two publicised incidents of
	this kind.

software law

	<legal> Software may, under various circumstances and in
	various countries, be restricted by patent or {copyright} or
	both.  Most commercial software is sold under some kind of
	{software license}.

	A patent normally covers the design of something with a
	function such as a machine or process.  Copyright restricts
	the right to make and distribute copies of something written
	or recorded, such as a song or a book of recipies.  Software
	has both these aspects - it embodies functional design in the
	{algorithm}s and data structures it uses and it could also be
	considered as a recording which can be copied and "performed"
	(run).

	"{Look and feel}" lawsuits attempt to monopolize well-known
	command languages; some have succeeded.  {Copyright}s on
	command languages enforce gratuitous incompatibility, close
	opportunities for competition, and stifle incremental
	improvements.

	{Software patent}s are even more dangerous; they make every
	design decision in the development of a program carry a risk
	of a lawsuit, with draconian pretrial seizure.  It is
	difficult and expensive to find out whether the techniques you
	consider using are patented; it is impossible to find out
	whether they will be patented in the future.

	The proper use of {copyright} is to prevent {software piracy}
	- unauthorised duplication of software.  This is completely
	different from copying the idea behind the program in the same
	way that photocopying a book differs from writing another book
	on the same subject.

	{Usenet} newsgroup: {news:misc.legal.computing}.

	["The Software Developer's and Marketer's Legal Companion",
	Gene K. Landy, 1993, AW, 0-201-62276-9].

	(16 Nov 1994)

software life-cycle

	<programming> The phases a software product goes through
	between when it is conceived and when it is no longer
	available for use.  The software life-cycle typically includes
	the following: {requirements analysis}, {design},
	construction, testing ({validation}), installation, operation,
	maintenance, and retirement.

	The development process tends to run iteratively through these
	phases rather than linearly; several models (spiral, waterfall
	etc.) have been proposed to describe this process.

	Other processes associated with a software product are:
	quality assurance, marketing, sales and support.

	(27 Dec 1996)

Software Method

	{Software Methodology}

Software Methodology

	<programming> The study of how to navigate through each phase
	of the software process model (determining data, control, or
	uses hierarchies, partitioning functions, and allocating
	requirements) and how to represent phase products (structure
	charts, stimulus-response threads, and {state transition
	diagram}s).

	(29 May 1996)

software metric

	A measure of software quality which indicate the complexity,
	understandability, testability, description and intricacy of
	code.

	(16 Nov 1994)

software patent

	<legal> A patent intended to prevent others from using some
	programming technique.

	There have been several infamous patents for software
	techniques which most experienced programmers would consider
	fundamental or trivial, such as the idea of using
	{exclusive-or} to plot a cursor on a {bitmap display}.  The
	spread of software patents could stifle innovation and make
	programming much harder because programmers would have to
	worry about patents when designing or choosing {algorithm}s.

	There are over ten thousand software patents in the US, and
	several thousand more are issued each year.  Each one may be
	owned by, or could be bought by, a grasping company whose
	lawyers carefully plan to attack people at their most
	vulnerable moments.  Of course, they couch the threat as a
	"reasonable offer" to save you miserable years in court.
	"Divide and conquer" is the watchword: pursue one group at a
	time, while advising the rest of us to relax because we are in
	no danger today.

	Compuserve developed the {GIF} format for graphical images
	many years ago, not knowing about {Unisys}'s 1985 patent
	covering the {LZW} data compression {algorithm} used in GIF.
	GIF was subsequently adopted widely on the {Internet}.  In
	1994 Unisys threatened to sue Compuserve, forcing them to
	impose a sublicensing agreement for GIF on their users.
	Compuserve users can accept this agreement now, or face Unisys
	later on their own.  The rest of us don't have a choice -- we
	get to face Unisys when they decide it's our turn.  So much
	trouble from just one software patent.

	Patents in the UK can't describe {algorithm}s or mathematical
	methods.

	See also {LPF}, {software law}.

	{patent search
	(http://sunsite.unc.edu/patents/intropat.html)}.

	(06 Jan 1995)

software piracy

	{software theft}

software pirate

	{software theft}

Software Practice and Experience

	<publication> (SPE) A Journal about {software}.

	{Home (http://columbus.cs.nott.ac.uk/compsci/spe/)}.

	[Publisher?  UK?]

	(12 Dec 1997)

software reliability

	See also {formal methods}, {safety-critical system}.

	{(ftp://ftp.sei.cmu.edu/pub/depend-sw)}.  Mailing list:
	depend-sw@sei.cmu.edu.

	[Summary?]

software rot

	<programming> Term used to describe the tendency of software
	that has not been used in a while to {lose}; such failure may
	be semi-humorously ascribed to {bit rot}.  More commonly,
	"software rot" strikes when a program's assumptions become out
	of date.  If the design was insufficiently {robust}, this may
	cause it to fail in mysterious ways.

	For example, owing to endemic shortsightedness in the design
	of COBOL programs, most will succumb to software rot when
	their 2-digit year counters {wrap around} at the beginning of
	the year 2000.  Actually, related lossages often afflict
	centenarians who have to deal with computer software designed
	by unimaginative clods.  One such incident became the focus of
	a minor public flap in 1990, when a gentleman born in 1889
	applied for a driver's licence renewal in Raleigh, North
	Carolina.  The new system refused to issue the card, probably
	because with 2-digit years the ages 101 and 1 cannot be
	distinguished.

	Historical note: Software rot in an even funnier sense than
	the mythical one was a real problem on early research
	computers (e.g. the {R1}; see {grind crank}).  If a program
	that depended on a peculiar instruction hadn't been run in
	quite a while, the user might discover that the {opcodes} no
	longer did the same things they once did.  ("Hey, so-and-so
	needs an instruction to do such-and-such.  We can {snarf} this
	opcode, right?  No one uses it.")

	Another classic example of this sprang from the time an {MIT}
	hacker found a simple way to double the speed of the
	unconditional jump instruction on a {PDP-6}, so he patched the
	hardware.  Unfortunately, this broke some fragile timing
	software in a music-playing program, throwing its output out
	of tune.  This was fixed by adding a defensive initialisation
	routine to compare the speed of a timing loop with the
	real-time clock; in other words, it figured out how fast the
	PDP-6 was that day, and corrected appropriately.

	Compare {bit rot}.

	(11 May 1996)

software theft

	<legal> The unauthorised duplication and/or use of computer
	{software}.  This usually means unauthorised copying, either
	by individuals for use by themselves or their friends or, less
	commonly, by companies who then sell the illegal copies to
	users.  Many kinds of {software protection} have been invented
	to try to reduce software theft but, with sufficient effort it
	is always possible to bypass or "crack" the protection, and
	{software protection} is often annoying for legitimate users.

	Software theft was estimated for 1994 to have cost $15 billion
	in worldwide lost revenues to software publishers.  It is a
	serious offence under the Copyright, Designs and Patents Act
	1988, which states that "The owner of the copyright has the
	exclusive right to copy the work.".

	It is illegal to: 1. Copy or distribute software or its
	documentation without the permission or licence of the
	copyright owner.  2. Run purchased software on two or more
	computers simultaneously unless the licence specifically
	allows it.  3. Knowingly or unknowingly allow, encourage or
	pressure employees to make or use illegal copies sources
	within the organisation.  4. Infringe laws against
	unauthorised software copying because a superior, colleague or
	friend compels or requests it.  5. Loan software in order that
	a copy be made of it.

	Both individuals and companies may be convicted of piracy
	offences.  Officers of a company are also liable to conviction
	if the offences were carried out by the company with their
	consent.  On conviction, the guilty party can face
	imprisonment for up to two years (five in USA), an unlimited
	fine or both as well as being sued for copyright infringement
	(with no limit) by the copyright owner.

	When software is upgraded it is generally the case that the
	licence accompanying the new version revokes the old version.
	This means that it is illegal to run both the old and new
	versions as only the new version is licensed.

	Some people mistakenly think that, because it is so easy to
	make illegal copies of software, that it is less wrong than,
	say, stealing it from a shop.  In fact, both actions deprive
	software producers of the income they need to continue their
	business and develop their products.

	Software theft should be reported to the {Federation Against
	Software Theft} (FAST).

	See also {Business Software Alliance}, {software audit},
	{software law}.

	(20 May 1996)

Software through Pictures

	<programming, tool> (StP) A set of {CASE} tools from {IDE}.

	(11 May 1996)

software tool

	<programming> A program that aids in the development of other
	programs.  It may assist the programmer in the design, code,
	compile, link, edit, or debug phases.

	(28 May 1996)

Software Verification Research Centre

	<body> (SVRC) A Special Research Centre of the Australian
	Research Council.  Its mission is to create improved methods
	and tools, of industrial significance, for developing
	{verified software}.  Two of the SVRC's core projects are the
	{Cogito} methodology and the {Ergo} {proof tool}.

	(14 Nov 1995)

softwarily

	/soft-weir'i-lee/ In a way pertaining to software.  "The
	system is softwarily unreliable."  The adjective "softwary" is
	*not* used.  See {hardwarily}.

softy

	(IBM) {Hardware} hackers' term for a {software} expert who is
	largely ignorant of the mysteries of hardware.

	(11 Jan 1995)

SOH

	{Start Of Header}

SOHIO

	An early system on the {IBM 705}.

	[Listed in CACM 2(5):16 (May 1959)].

	(11 Jan 1995)

SoHo

	{small-office/home-office.}

SOIF

	{Summary Object Interchange Format}

SOJ

	{Small Outline J}

SOL

	1. <language> {Simulation Oriented Language}.

	2. {Second-Order lambda-calculus}.

	3. Semantic Operating Language.  Language for manipulating
	semantic networks for building cognitive models, particularly
	for natural language understanding.  "Explorations in
	Cognition", D.A. Norman et al, W.H.  Freeman 1974.

	4. Shit Outta Luck.

Solaris

	Sun Unix-based user environment, including the Unix operating
	system and an X11-based window system.  Solaris 1.x is a
	retroactive (marketing?) name for SunOS4.1.x (x>=1), a
	BSD-like version of Unix with some SVR4 features, along with
	OpenWindows 3.0.  Solaris 2.x (which is what most poeple mean
	by "Solaris") includes SunOS5.x, which is an SVR4-derived
	Unix, along with OpenWindows 3.x and tooltalk.  [Solaris2 FAQ]

solid-state storage device

	<storage> {RAM disk}.

SOLO

	[SOL (Semantic Operating Language) + LOGO].  A variant of
	{LOGO} with primitives for dealing with {semantic network}s
	and {pattern matching} rather than lists.

	["A User-Friendly Software Environment for the Novice
	Programmer", M. Eisenstadt <marc@open.ac.uk>, CACM
	27(12):1056-1064 (1983)].

Solution Based Modelling

	(SBM) A software development process described in the book
	"Developing Object-Oriented Software for the Macintosh"
	written by Neal Goldstein and Jeff Alger, published by Addison
	Wesley in 1992.

Solve

	Parallel object-oriented language.  "Message Pattern
	Specifications: A New Technique for Handling Errors in
	Parallel Object- Oriented Systems", J.A. Purchase et al,
	SIGPLAN Notices 25(10):116-125 (OOPSLA/ECOOP '90) (Oct 1990).

SOM

	System Object Model.  An implementation of CORBA by IBM.

Somar DumpAcl

	<tool> A utilty which provides a concise report of {Windows
	NT} file system permissions, to help find holes in system
	security.

	(10 Apr 1995)

Somar Software

	<company> The distributors of {Somar DumpAcl} and other
	utilities for {Windows NT}.

	{Home (http://www.somar.com/)}

	Address: Washington, DC, USA.

	(10 Apr 1995)

some random X

	<jargon> Used to indicate a member of class X, with the
	implication that Xs are interchangeable.  "I think some random
	cracker tripped over the guest timeout last night."

	See also {J. Random}.

	(03 Mar 1995)

Sonata

	<operating system> The code name for the major {Mac OS}
	release due in mid-1999.

	{(http://devworld.apple.com/mkt/informed/appledirections/mar97/roadmap.html)}.

	(15 Oct 1997)

SONET

	{Synchronous Optical NETwork}

Sony Playstation

	{Playstation}

SORCERER

	<tool> A simple tree {parser generator} by Terence Parr
	<parrt@s1.arc.umn.edu>.

	SORCERER is suitable for translation problems lying between
	those solved by {code generator} generators and by full
	source-to-source translator generators.  SORCERER generates
	simple, flexible, top-down, tree {parser}s that, in contrast
	to code generators, may execute actions at any point during a
	tree walk.  SORCERER accepts {extended BNF} notation, allows
	{predicate}s to direct the tree walk with {semantic} and
	{syntactic} context information, and does not rely on any
	particular intermediate form, parser generator, or other
	pre-existing application.

	SORCERER is included in the {Purdue Compiler-Construction Tool
	Set}.

	Version: 1.00B

	{(ftp://marvin.ecn.purdue.edu/pub/pccts/sorcerer/)}

	E-mail: <parrt@acm.org> ("e-mail sor.tar.Z.uu" in subject).

	Mailing list: pccts-users-request@ahpcrc.umn.edu (message
	body: "subscribe pccts-users YOUR-NAME", where YOUR-NAME can
	be your name or e-mail address).

	(15 Feb 1994)

sorcerer's apprentice mode

	<networking> (From Friedrich Schiller's "Der Zauberlehrling"
	via the Disney film "Fantasia") A {bug} in a {protocol} where,
	under some circumstances, the receipt of a message causes
	multiple messages to be sent, each of which, when received,
	triggers the same bug.  Used especially of such behaviour
	caused by {bounce message} loops in {electronic mail}
	software.

	Compare {broadcast storm}, {network meltdown}, {software
	laser}, {ARMM}.

	(05 May 1995)

sort

	1. <application, algorithm> To arrange a collection of items
	in some specified order.  The items - {records} in a file or
	data structures in memory - consist of one or more {fields} or
	members.  One of these fields is designated as the "sort key"
	which means the records will be ordered according to the value
	of that field.  Sometimes a sequence of key fields is
	specified such that if all earlier keys are equal then the
	later keys will be compared.  Within each field some ordering
	is imposed, e.g. ascending or descending numerical, {lexical
	ordering}, or date.

	Sorting is the subject of a great deal of study since it is a
	common operation which can consume a lot of computer time.
	There are many well-known sorting {algorithms} with different
	time and space behaviour and programming {complexity}.

	Examples are {quicksort}, {insertion sort}, {bubble sort},
	{heap sort}, and {tree sort}.  These employ many different
	data structures to store sorted data, such as {arrays},
	{linked lists}, and {binary trees}.

	2. <tool> The {Unix} utility program for sorting lines of
	files.

	{Unix manual page}: sort(1).

	(12 Feb 1997)

sorting

	See {sort}.

SOS

	1. {Scheme Object System}.

	2. An infamously {losing} text editor.  Once, back in the
	1960s, when a text editor was needed for the {PDP-6}, a hacker
	crufted together a {quick-and-dirty} "stopgap editor" to be
	used until a better one was written.  Unfortunately, the old
	one was never really discarded when new ones (in particular,
	{TECO}) came along.  SOS is a descendant ("Son of Stopgap") of
	that editor, and many {PDP-10} users gained the dubious
	pleasure of its acquaintance.  Since then other programs
	similar in style to SOS have been written, notably the early
	font editor BILOS /bye'lohs/, the Brother-In-Law Of Stopgap
	(the alternate expansion "Bastard Issue, Loins of Stopgap" has
	been proposed).

	3. The {PDP-10} instruction to decrease a value.  Oppose
	{AOS}.

sound

	1. {audio}.

	2. <logic> An {inference system} A is sound with respect to
	another system B if A can only reach conclusions which are
	true in B.  A {type inference} system is considered sound with
	respect to a {semantics} if the type inferred for an
	expression is the same as the type inferred for the meaning of
	that expression under the semantics.

	The dual to soundness is {complete}ness.

	(01 Mar 1995)

Soundblaster

	<hardware> The best known family of {sound card}s for the {IBM
	PC}.

	[Features?  Is it spelled with or without a space?]

	(01 Mar 1995)

sound card

	A plug-in optional circuit card for an {IBM PC}.  It provides
	high-quality stereo sound output under program control.  A
	"{multimedia}" PC usually includes a sound card.  One of the
	best known is the {SoundBlaster}.

	[Other kinds?]

	(01 Mar 1995)

soundex

	<algorithm, text> An {algorithm} for encoding a word so that
	similar sounding words encode the same.  The first letter is
	copied unchanged then subsequent letters are encoded as
	follows:

		bfpv	  -> "1"
		cgjkqsxz -> "2"
		dt	  -> "3"
		l	  -> "4"
		mn	  -> "5"
		r	  -> "6"

	Other characters are ignored and repeated characters are
	encoded as though they were a single character.  Encoding
	stops when the resulting string is four characters long,
	adding trailing "0"s if it is shorter.  For example, "SMITH"
	or "SMYTHE" would both be encoded as "S530".

	(05 Jan 1995)

source

	{source code}

source code

	<language, programming> (Or "source", or rarely "source
	language") The form in which a computer program is written by
	the programmer.  Source code is written in some formal
	programming language which can be compiled automatically into
	{object code} or {machine code} or executed by an
	{interpreter}.

	(05 Jan 1995)

source language

	{source code}

source of all good bits

	A person from whom (or a place from which) useful information
	may be obtained.  If you need to know about a program, a
	{guru} might be the source of all good bits.  The title is
	often applied to a particularly competent secretary.

source route

	<messaging> An {electronic mail address} which specifies the
	route the message should take as a sequence of {hostname}s.
	It is called a source route because the route is determined at
	the source of the message rather than at each stage as is now
	more common.  The most common kind of source route is a {UUCP}
	style {bang path}, "foo!bar!baz!fred'.  The {RFC 822} syntax,
	"@foo:@bar:fred@baz", is seldom seen because most systems
	which understand RFC 822 also perform automatic routing based
	on the destination hostname.  A third, intermediate, form is
	sometimes seen: "fred%baz%bar@foo.com".

source routing

	{source route}

SP

	Simplicity and Power.

	A {Prolog}-like language.

	["Simplicity and Power - Simplifying Ideas in Computing",
	J.G. Wolff, Computer J 33(6):518-534 (Dec 1990)].

	(01 Dec 1994)

SP2

	{SP/2}

	[Which is correct?]

SP/2

	Scalable POWERparallel 2.

	A line of {RISC}-based processors from {IBM} using {symmetric
	multi-processing}.  SP/2 replaced SP/1.

	The SP2 is a classical {MPP} design, based on a {Shared
	Nothing} architecture.  The SP2 is an example of the
	{Distributed Memory Processor} (DMP) parallel model, with
	individual nodes interconnected over a {LAN}, or a
	High-Performance Switch (HPS).  SP2 systems can have from 2 to
	512 nodes.  Each node is a {RISC system/6000} running {IBM}'s
	{AIX} {operating system}.

	The SP2 supports applications in both technical and commercial
	environments.  In terms of commercial applications, the SP2 is
	typically being used in support of, {MIS}/{DSS} including
	{data mining}, {business applications} e.g. {SAP}, {Alternative
	Mainframe}/{Mainframe Offload}, {LAN Server Consolidation}.

	(07 Mar 1995)

space

	<character> The space character, {ASCII} 32.

	See {octal forty}.

space-cadet keyboard

	A now-legendary device used on {MIT} {Lisp} machines, which
	inspired several still-current jargon terms and influenced the
	design of {EMACS}.  It was equipped with no fewer than *seven*
	shift keys: four keys for {bucky bits} ("control", "meta",
	"hyper", and "super") and three like regular shift keys,
	called "shift", "top", and "front".  Many keys had three
	symbols on them: a letter and a symbol on the top, and a Greek
	letter on the front.  For example, the "L" key had an "L" and
	a two-way arrow on the top, and the Greek letter lambda on the
	front.  By pressing this key with the right hand while playing
	an appropriate "chord" with the left hand on the shift keys,
	you could get the following results:

	 L		lowercase l

	 shift-L	uppercase L

	 front-L	lowercase lambda

	 front-shift-L	uppercase lambda

	 top-L		two-way arrow

	(front and shift are ignored) And of course each of these
	might also be typed with any combination of the control, meta,
	hyper, and super keys.  On this keyboard, you could type over
	8000 different characters!  This allowed the user to type very
	complicated mathematical text, and also to have thousands of
	single-character commands at his disposal.  Many hackers were
	actually willing to memorise the command meanings of that many
	characters if it reduced typing time (this attitude obviously
	shaped the interface of {Emacs}).  Other hackers, however,
	thought that many {bucky bit}s was overkill, and objected that
	such a keyboard can require three or four hands to operate.

	See {cokebottle}, {double bucky}, {meta bit}, {quadruple
	bucky}.

	Note: early versions of this entry incorrectly identified the
	space-cadet keyboard with the "Knight keyboard".  Though both
	were designed by Tom Knight, the latter term was properly
	applied only to a keyboard used for {ITS} on the {PDP-10} and
	modelled on the Stanford keyboard (as described under {bucky
	bits}).  The true space-cadet keyboard evolved from the Knight
	keyboard.

	(05 Dec 1994)

space complexity

	<complexity> The way in which the amount of storage space
	required by an {algorithm} varies with the size of the problem
	it is solving.  Space complexity is normally expressed as an
	order of magnitude, e.g. O(N^2) means that if the size of the
	problem (N) doubles then four times as much working storage
	will be needed.

	See also {computational complexity}, {time complexity}.

	(08 May 1996)

space leak

	A data structure which grows bigger, or lives longer, than
	might be expected.  Such unexpected memory use can cause a
	program to require more {garbage collection}s or to run out of
	{heap}.  Space leaks in {functional program}s usually result
	from excessive laziness.  For example, the {Haskell} function

		sum []     = 0
		sum (x:xs) = x + sum xs

	when applied to a list will build a chain of closures for the
	additions and only when it reaches the end of the list will it
	perform the additions and free the storage.  Another example
	is the function

		mean l = sum l / length l

	The sum function forces the entire list l to be evaluated and
	built in the heap.  None of it can be garbage collected until
	the length function has consumed it.

SPACEWAR

	<games> A space-combat simulation game, inspired by
	E. E. "Doc" Smith's "Lensman" books, in which two spaceships
	duel around a central sun, shooting torpedoes at each other
	and jumping through hyperspace.  This game was first
	implemented on the PDP-1 at MIT in 1960--61.

	SPACEWAR aficionados formed the core of the early hacker
	culture at {MIT}.  Nine years later, a descendant of the game
	motivated {Ken Thompson} to build, in his spare time on a
	scavenged {PDP-7}, the {operating system} that became {Unix}.
	Less than nine years after that, SPACEWAR was commercialised
	as one of the first video games; descendants are still
	{feep}ing in video arcades everywhere.

	["SPACEWAR" or "Space Travel"?]

	(07 Nov 1994)

SPADE

	Specification Processing And Dependency Extraction.
	Specification language.  G.S. Boddy, ICL Mainframes Div,
	FLAG/UD/3DR.003

spaghetti code

	<programming> A pejorative term for code with a complex and
	tangled {control structure}, especially one using many
	{GOTOs}, {exceptions}, or other "unstructured" branching
	constructs.  The synonym "kangaroo code" has been reported,
	doubtless because such code has so many jumps in it.

	(17 Feb 1997)

spaghetti inheritance

	[encountered among users of {object-oriented} languages that
	use inheritance, such as {Smalltalk}] A convoluted
	{class}-subclass graph, often resulting from carelessly
	deriving subclasses from other classes just for the sake of
	reusing their code.  Coined in a (successful) attempt to
	discourage such practice, through guilt-by-association with
	{spaghetti code}.

spam

	1. <messaging> (From the Monty Python "Spam" song) To post
	irrelevant or inappropriate messages to one or more {Usenet}
	{newsgroups} or {mailing lists} in deliberate or accidental
	violation of {netiquette}.

	It is possible to spam a newsgroup with one well- (or ill-)
	planned message, e.g. asking "What do you think of abortion?"
	on soc.women.  This can be done by {cross-post}ing, e.g. any
	message which is crossposted to alt.rush-limbaugh and
	alt.politics.homosexuality will almost inevitably spam both
	groups.  (Compare {troll} and {flame bait}).

	Posting a message to a significant proportion of all
	newsgroups is a sure way to spam Usenet and become an object
	of almost universal hatred.  Canter and Siegel spammed the net
	with their Green card post.

	If you see an article which you think is a deliberate spam, DO
	NOT post a {follow-up} - doing so will only contribute to the
	general annoyance.  Send a polite message to the poster by
	private e-mail and CC it to "postmaster" at the same address.
	Bear in mind that the posting's origin might have been forged
	or the apparent sender's account might have been used by
	someone else without his permission.

	{Usenet} newsgroup:
	{news.admin.net-abuse(news:news.admin.net-abuse)}.

	See also {netiquette}.

	2. (A narrowing of sense 1, above) To indiscrimately send
	large amounts of unsolicited {e-mail} meant to promote a
	product or service.  Spam in this sense is sort of like the
	electronic equivalent of junk mail sent to "Occupant".

	In the 1990s, with the rise in commercial awareness of the
	net, there are actually scumbags who offer spamming as a
	"service" to companies wishing to advertise on the net.  They
	do this by mailing to collections of {e-mail} addresses,
	Usenet news, or mailing lists.  Such practises have caused
	outrage and aggressive reaction by many net users against the
	individuals concerned.

	3. (Apparently a generalization of sense 2, above) To abuse
	any network service or tool by for promotional purposes.

	"AltaVista is an {index}, not a promotional tool.  Attempts to
	fill it with promotional material lower the value of the index
	for everyone.  [...] We will disallow {URL} submissions from
	those who spam the index.  In extreme cases, we will exclude
	all their pages from the index." -- {Altavista}.

	4. <jargon, programming> To crash a program by overrunning a
	fixed-size {buffer} with excessively large input data.

	See also {buffer overflow}, {overrun screw}, {smash the stack}.

	(08 Apr 1997)

spamdex

	<World-Wide Web> (Presumably from "{spam}", "index") {word
	spamming}.

	"Spamdexing has come a long way from the halcyon days of the
	summer of 1995.  Back then, all one needed to do was add the
	word 'sex' a thousand times at the end of a Web page to
	attract attention from the likes of Lycos.  The search-engine
	operators caught on fast" -- {Andrew Leonard, Hotwired 1996
	(http://www.packet.com/packet/leonard/96/32/index3a.html)}.

	(09 Apr 1997)

spamming

	{spam}

spanning tree algorithm

	An IEEE 802.1 standard under consideration which will provide
	distributed routing over multiple LANs connected by bridges.

SPAR

	Early system on Datatron 200 series.  Listed in CACM 2(5):16
	(May 1959).

SPARC

	1. {Scalable Processor ARChitecture}.

	2. See {ANSI/SPARC Architecture}.

	[The SPARC Architecture Manual, v8, ISBN 0-13-825001-4]

SPARC International, Inc.

	An organisation established to promote the {Scalable Processor
	ARChitecture}.  Their main service is conformance testing.
	They also produce the "SPARC flash" newsletter and publish
	lists of SPARC compliant machines tested by SPARC
	International to be binary compatible with other compliant
	machines.

	{(http://www.sparc.com/)}

	(04 Jan 1995)

SPARCStation

	A family of {workstation}s from {Sun Microsystems} based on
	the {SPARC} architecture.  Models include the {SPARCStation
	1}, 1+, SLC, {SPARCStation ELC}, IPX, {SPARCStation 10} and
	{SPARCStation 20}.

	(23 Nov 1994)

SPARCstation 10

	A {SPARCStation} with a 4-way associative {data cache} and a
	five-way associative {instruction cache}.  The 10/31, 10/41
	and 10/51 also have a {secondary cache} not present on earlier
	{SPARCStation}s.

	(02 Dec 1994)

SPARCstation 20

	A workstation from {Sun Microsystems} based on the
	{HyperSPARC} processor.  The 20 is compatible with the earlier
	SPARCstation 10.  It has a {clock rate} of 100MHz and delivers a
	{SPECfp92} of 127.6.

	The SPARCstation 20 Model 71 and 712MP uses the 75MHz
	{SuperSPARC} processors that give a 35% and 14% boost to
	SPECint92 and SPECfp92 respectively compared to the 61/612MP.
	UK prices range from 15,450 - 20,500 for 71 and 21,700 -
	25,000 for the 712.  UK availability planned for April 1995.

	(02 Dec 1994)

SPARCsystem 4

	A computer built with the {MicroSPARC ii} 70MHz {CPU} as used
	in the {SPARC 5} Model 70.  The SPARCsystem 4 is basically a
	cut-down SPARC 5 with a price to match.  It is likely that
	this model will replace the Classic in time.  It has a new
	8-bit pixel accelerator instead of the SBus Turbo GX card.
	Memory expansion is limited to 160 MB.  UK Prices range from
	2,630 to cicra 5,500.  Availability is planned for
	March/April 1995.

	(07 Feb 1995)

SPARC Xterminal 1

	{Sun}'s lowest cost networked {Unix} desktop, it is
	board-upgradeable to a {SPARC 4}.  It comes with a choice of
	{frame buffer}s: 8-bit colour, {Turbo GX}, or Turbo GX plus.
	This product is expected to replace the {SPARCclassic X}.  UK
	prices range from 1,600 - 2,930, UK availability planned
	from March 1995.

	(08 Feb 1995)

SPARK

	An annotated subset of {Ada} from {PVL} Ltd.

	(23 Nov 1994)

SPARKS

	FORTRAN superset, used in Fundamentals of Data Structures, E.
	Horowitz & S. Sahni, Computer Science Press 1976.

sparse

	A sparse {matrix} (or {vector}, or {array}) is one in which
	most of the elements are zero.  If storage space is more
	important than access speed, it may be preferable to store a
	sparse matrix as a list of (index, value) pairs or use some
	kind of {hash} scheme or {associative memory}.

	(16 Jan 1995)

Spatial Technologies

	Distributors of the {ACIS} {solid modelling} engine.

	E-mail: <74104.455@compuserve.com>, <72242.1273@compuserve.com>.

	[More info?]

	(16 Jan 1995)

spawn

	<operating system> To create a {child process} in a
	{multitasking} {operating system}.  E.g. {Unix}'s {fork}
	{system call} or one of the spawn() library routines provided
	by most {MS-DOS}, {Novell NetWare} and {OS/2} {C} compilers -
	spawnl(), spawnle(), etc.

	(28 Mar 1995)

SPC

	Software Productivity Centre.  A non-profit organisation based
	in Vancouver, BC, Canada with the mandate to assist software
	developers to improve their software engineering process.

SPDL

	Standard Page Description Language

	A draft within the ODA standard.

	(28 Mar 1995)

SPE

	{Software Practice and Experience}

Speakeasy

	Simple array-oriented language with numerical integration and
	differentiation, graphical output, aimed at statistical
	analysis.

	["Speakeasy", S. Cohen, SIGPLAN Notices 9(4), (Apr 1974)].

	["Speakeasy-3 Reference Manual", S. Cohen et al. 1976].

speaker

	1. <hardware> {loudspeaker}.

	2. The person who is (assumed to be) talking.

	(01 Dec 1996)

SPEC

	Standard Performance Evaluation Corporation.

	A non-profit corporation registered in California formed to
	"establish, maintain and endorse a standardized set of
	relevant {benchmark}s that can be applied to the newest
	generation of high-performance computers" (from SPEC's
	bylaws).  The founders believe that the user community will
	benefit greatly from an objective series of
	applications-oriented tests, which can serve as common
	reference points and be considered during the evaluation
	process.

	SPEC develops suites of {benchmark}s intended to measure
	computer performance.  These are available to the public for a
	fee covering development and administration costs.

	The current (14 Nov 94) SPEC benchmark suites are: {CINT92}
	(CPU intensive integer benchmarks); {CFP92} (CPU intensive
	floating-point benchmarks); SDM (UNIX Software Development
	Workloads); SFS (System level file server (NFS) workload).

	{Results (ftp://ftp.cdf.toronto.edu/pub/spectable)}

	SPEC also publishes a quarterly report of SPEC news and
	results, The SPEC Newsletter.  Some issues are {here
	(http://performance.netlib.org/performance/html/spec.html)}.

	There is a {FAQ} about SPEC {here
	(http://performance.netlib.org/performance/html/specfaq.html)}

	(14 Nov 1994)

Spec

	A specification language.  It expresses {black box} interface
	specifications for large distributed systems with {real-time}
	constraints.  It incorporates conceptual models, {inheritance}
	and the event model.  It is a descendant of {MSG.84}.

	["An Introduction to the Specification Language Spec",
	V. Berzins et al, IEEE Software 7(2):74-84 (Mar 1990)].

SPECbase_fp92

	A variant of {SPECfp92} that reports "baseline" results, using
	stricter run rules.

	(14 Nov 1994)

SPECbase_int92

	A variant of {SPECint92} that reports "baseline" results,
	using stricter run rules.

	(14 Nov 1994)

SPECbaserate

	A variant of {SPECrate} that reports "baseline" results, using
	stricter run rules.

	See {SPECrate_base_fp92}, {SPECrate_base_int92}.

	(14 Nov 1994)

SPEC CFP92

	A {benchmark} suite from {SPEC} containing 14 programs
	performing {floating-point} computations.  12 are written in
	{Fortran} and two in {C}.  They can be used to estimate the
	performance of CPU, memory system, and compiler code
	generation.

	The individual programs are Circuit Design, Simulation (2x),
	Quantum Chemistry (3x), Electromagnetism, Geometric
	Translation, Optics, Robotics, Medical Simulation, Quantum
	Physics, Astrophysics, NASA Kernels.

	The benchmark suite can be used either for speed measurement,
	resulting in {SPEC ratio}s, or for throughput measurement,
	resulting in {SPEC rate}s

	(15 Nov 1994)

SPEC CINT92

	A {benchmark} suite from {SPEC}, which contains six benchmarks
	in {C} performing integer computations. They can be used to
	estimate the performance of CPU, memory system, and compiler
	code generation.

	The individual programs are Logic Design (2x), Interpreter,
	Data Compression, Spreadsheet.  The approximate size of the
	suite is 85500 lines of source code without comments.

	The benchmark suite can be used either for speed measurement,
	resulting in {SPEC ratio}s, or for throughput measurement,
	resulting in {SPEC rate}s

	(15 Nov 1994)

SPECfp92

	A {benchmark} result derived from the results of a set of CPU
	intensive floating-point benchmarks from {SPEC} (the
	{geometric mean} of the 14 {SPEC ratio}s of {CFP92}).
	SPECfp92 can be used to estimate a machine's single-tasking
	performance on {floating-point} code.

	{Results (ftp://ftp.nosc.mil/pub/aburto/specfp92.tbl)}

	(14 Nov 1994)

SPECIAL

	A SRI specification language.  [HDM?]

	["SPECIAL - A Specification and Assertion Language",
	L. Robinson et al, TR CSL-46, SRI, Jan 1987].

special-case

	To write unique code to handle input to or situations arising
	in a program that are somehow distinguished from normal
	processing.  This would be used for processing of mode
	switches or interrupt characters in an interactive interface
	(as opposed, say, to text entry or normal commands), or for
	processing of {hidden flag}s in the input of a batch program
	or {filter}.

Special Interest Group

	(SIG) One of several technical areas, sponsored by the
	{Association for Computing Machinery}.  Well-known SIGs
	include SIGPLAN (the Special Interest Group on Programming
	Languages), SIGARCH (the Special Interest Group for Computer
	Architecture) and SIGGRAPH (the Special Interest Group for
	Computer Graphics).

	(27 Oct 1994)

specialisation

	A reduction in generality, usually for the sake of increased
	efficiency.  If a piece of code is specialised for certain
	values of certain variables (usually function arguments), this
	is known as "{partial evaluation}".  In a language with
	{overloading} (e.g. {Haskell}), an overloaded function might be
	specialised to a non-overloaded instance at compile-time if
	the types of its arguments are known.

specific markup

	In computerised document preparation, a method of adding
	formatting commands to the text to control layout, such as new
	line, new page, centre text etc.  Compare {generic markup}.

SPECint92

	A {benchmark} result derived from the results of a set of
	integer benchmarks from {SPEC} (geometric mean of the 6 {SPEC
	ratio}s of {CINT92}) which can be used to estimate a machine's
	single-tasking performance on integer code.

	SPECint92 obsoletes SPECint89.

	{Results (ftp://ftp.nosc.mil/pub/aburto/specin92.tbl)}

	See also {SPECbase_int92}.

	(14 Nov 1994)

SPECmark

	The average of a set of {floating-point} and integer {SPEC}
	{benchmark} results.

	While the old average {SPECmark89} has been popular with the
	industry and the press, {SPEC} has intentionally *not* defined
	an average "SPECmark92" over all {CPU} {benchmark}s of the
	1992 suites ({CINT92} and {CFP92}), for the following reasons:
	With 6 integer ({CINT92}) and 14 {floating-point} ({CFP92})
	benchmarks, the average would be biased too much towards
	floating-point.  Customers' workloads are different, some
	integer-only, some floating-point intensive, some mixed.
	Current processors have developed their strengths in a more
	diverse way (some more emphasizing integer performance, some
	more floating-point performance) than in 1989.

	Some SPECmark results are available {here
	(ftp://ftp.cdf.toronto.edu/pub/spectable)}.

	See also {SPECint92}, {SPECfp92}, {SPECrate_int92},
	{SPECrate_fp92}.

	(15 Nov 1994)

SPECmark89

	An old {SPECmark} {benchmark} result derived from a set of
	{floating-point} and integer {benchmark}s.  It is the
	{geometric mean} of ten {SPEC ratio}s of the outdated 1989
	{SPEC} benchmark suite.  The use of SPECmark89 is strongly
	discouraged, having been superceded by {CINT92} and {CFP92}.

	(29 Nov 1994)

SPECOL

	["SPECOL - A Computer Enquiry Language for the
	Non-Programmer", B.T. Smith, Computer J 11:121 (1968)].

SPEC rate

	Results of the throughput measurement using {SPEC} {benchmark}
	suites {CINT92} and {CFP92}.  With the throughput measurement
	method, several copies of a given benchmark are executed.  The
	method is particularly suitable for {multiprocessor} systems.

	The results, called SPEC rate, express how many jobs of a
	particular type (characterised by the individual benchmark)
	can be executed in a given time (The SPEC reference time
	happens to be a week, the execution times are normalized with
	respect to a {VAX 11/780}).  The SPEC rates therefore
	characterise the capacity of a system for compute-intensive
	jobs of similar characteristics.

	See also {SPEC ratio}.

	(14 Nov 1994)

SPECrate_base_fp92

	A variant of {SPECrate_fp92} that reports "baseline" results,
	using stricter run rules.

	(15 Nov 1994)

SPECrate_fp92

	A {benchmark} result derived from the results of a set of
	{floating-point} benchmarks (the {geometric mean} of 14 {SPEC
	rate}s from {CFP92}) run multiple times simultaneously, which
	can be used to estimate a machine's overall {multi-tasking}
	throughput for {floating-point} code.  It is typically used on
	{multiprocessor} machines.

	SPECrate_fp92 obsoletes SPECfpThruput89.

	(14 Nov 1994)

SPECrate_int92

	The integer {SPECrate} derived from the results of a set of
	integer benchmarks (the {geometric mean} of six {SPEC rate}s
	from {CINT92}) run multiple times simultaneously, and can be
	used to estimate a machine's overall {multi-tasking}
	throughput for integer code.  It is typically used on
	{multiprocessor} machines.

	SPECrate_int92 obsoletes SPECintThruput89.

	See also {SPECbaserate}.

	(14 Nov 1994)

SPEC ratio

	Results for each individual {benchmark} of the {SPEC}
	benchmark suites, for example {CINT92} and {CFP92}, expressed
	as the ratio of the wall clock time to execute one single copy
	of the benchmark, compared to a fixed "SPEC reference time",
	which was chosen early-on as the execution time on a {VAX
	11/780}.

	See also {SPEC rate}.

	(14 Nov 1994)

Spectrum

	Was it's full name "{ZX Spectrum}

speculative evaluation

	<parallel> A technique used in {parallel processing} where
	some evaluation may be started before it is known whether it
	is needed (Eager evaluation).  This may result in some wasted
	processing and may introduce unnecessary non-terminating
	processes but it can reduce the overall run-time by making
	some needed results available earlier than they would be
	otherwise.

	Opposite: {conservative evaluation}.

	(05 May 1995)

speculative execution

	<processor> A technique allows a {superscalar} processor to
	keep its {functional unit}s as busy as possible by executing
	instructions before it is known that they will be needed.

	The {Intel P6} uses speculative execution.

	Compare {branch prediction}, {speculative evaluation}.

	(05 May 1995)

Speech Application Programming Interface

	<programming, standard> (SAPI) {Microsoft}'s standard {API}
	for speech synthesis and {speech recognition} in {Windows 95}.
	The idea is to let developers try out and use various
	low-level speech software from any number of verndors, while
	retaining the same API.

	Mike Rozak is the lead of the SAPI project at Microsoft.
	Numerous major speech vendors have announced SAPI-support
	plans.  {SRAPI}, the competing speech recognition API by
	{Lotus}/WordPerfect, is fast becoming obsolete.

	(04 Mar 1996)

speech recognition

	<application> (Or voice recognition) The identification of
	spoken words by a machine.  The spoken words are digitised
	(turned into sequence of numbers) and matched against coded
	dictionaries in order to identify the words.

	Most systems must be "trained," requiring samples of all the
	actual words that will be spoken by the user of the system.
	The sample words are digitised, stored in the computer and
	used to match against future words.  More sophisticated
	systems require voice samples, but not of every word.  The
	system uses the voice samples in conjunction with dictionaries
	of larger vocabularies to match the incoming words.  Yet other
	systems aim to be "speaker-independent", i.e. they will
	recognise words in their vocabulary from any speaker without
	training.

	Another variation is the degree with which systems can cope
	with connected speech.  People tend to run words together,
	e.g. "next week" becomes "neksweek" (the "t" is dropped).  For
	a voice recognition system to identify words in connected
	speech it must take into account the way words are modified by
	the preceding and following words.

	It has been said (in 1994) that computers will need to be
	something like 1000 times faster before large vocabulary (a
	few thousand words), speaker-independent, connected speech
	voice recognition will be feasible.

	(05 May 1995)

Speech Recognition Application Program Interface

	<programming> (SRAPI) {Novell, Inc.}'s high level {API} for
	{speech recognition} which will be rolled out with
	{WordPerfect} 7.0 and {Perfect Office} 7.0.  SRAPI is in
	competition with {SAPI} from {Microsoft}, a high level API
	which currently addresses command and control (but not yet
	dictation).

	[Byte; March 1996; page 30; "Battle of the Dictaion APIs"].

	(12 Mar 1996)

speech synthesis

	The generation of an sound waveform of human speech from a
	textual or phonetic description.  See also {speech
	recognition}.

	There are demonstrations which {say a number
	(http://www.cs.yale.edu/cgi-bin/saynumber.au)} or {say a
	phrase (http://wwwtios.cs.utwente.nl/say/form/)}.

SPEED

	Early system on LGP-30.  Listed in CACM 2(5):16 (May 1959).

Speedcoding

	John Backus, 1953.  A pseudocode interpreter for math on IBM
	701, IBM 650.  Sammet 1969, p.130.

Speedcoding 3

	Listed in CACM 2(5):16 (May 1959).

SPEEDEX

	Early system on IBM 701.  Listed in CACM 2(5):16 (May 1959).

speedometer

	A pattern of lights displayed on a linear set of LEDs (today)
	or nixie tubes (yesterday, on ancient mainframes).  The
	pattern is shifted left every N times the operating system
	goes through its {main loop}.  A swiftly moving pattern
	indicates that the system is mostly idle; the speedometer
	slows down as the system becomes overloaded.  The speedometer
	on Sun Microsystems hardware bounces back and forth like the
	eyes on one of the Cylons from the wretched "Battlestar
	Galactica" TV series.

	Historical note: One computer, the GE 600 (later Honeywell
	6000) actually had an *analog* speedometer on the front panel,
	calibrated in instructions executed per second.

spell

	{incantation}

spelling flame

	<messaging> A {Usenet} posting ostentatiously correcting a
	previous article's spelling, possibly as a way of casting
	scorn on the point the article was trying to make, instead of
	actually responding to that point (compare {dictionary
	flame}).  Of course, people who are more than usually slovenly
	spellers are prone to think *any* correction is a spelling
	flame.  It's an amusing comment on human nature that spelling
	flames themselves often contain spelling errors.

	(22 Nov 1994)

Sperry Corporation

	<company> The company which merged with the {Burroughs
	Corporation} to form {Unisys Corporation}.  Divisions included
	{Sperry Univac}, Sperry Flight Systems, and others.  Some of
	these were sold off after the merger.

	(27 Mar 1995)

Sperry Univac

	<company> One of the divisions of {Sperry Corporation} at the
	time that company merged with the {Burroughs Corporation} to
	form {Unisys Corporation}.

	[Connection with the {Univac} computer?]

	(22 Nov 1994)

SPG

	System Program Generator.  A compiler-writing language.

	["A System Program Generator", D. Morris et al, Computer J
	13(3) (1970)].

Spice Lisp

	A flavour of Lisp the sources of which (in Lisp) are available
	from CMU.

spider

	{robot}

Spiderweb

	A program for creating versions of {Knuth}'s {WEB}
	self-documenting programs ("{literate programming}").

	{(ftp://princeton.edu/)}

spiffy

	/spi'fee/ 1. Said of programs having a pretty, clever, or
	exceptionally well-designed interface. "Have you seen the
	spiffy {X} version of {empire} yet?"  This was common
	mainstream slang during the 1940s.

	2. Said sarcastically of a program that is perceived to have
	little more than a flashy interface going for it.  Which
	meaning should be drawn depends delicately on tone of voice
	and context.

spike

	To defeat a selection mechanism by introducing a (sometimes
	temporary) device that forces a specific result.  The word is
	used in several industries; telephone engineers refer to
	spiking a relay by inserting a pin to hold the relay in either
	the closed or open state, and railroaders refer to spiking a
	track switch so that it cannot be moved.  In programming
	environments it normally refers to a temporary change, usually
	for testing purposes (as opposed to a permanent change, which
	would be called {hardwired}).

Spill

	{register spilling}

spin

	Equivalent to {buzz}.  More common among {C} and {Unix}
	programmers.

spiral model

	<programming> A {software life-cycle} model which supposes
	incremental development, using the {waterfall model} for each
	step, with the aim of managing risk.  In the spiral model,
	developers define and implement features in order of
	decreasing priority.

	[Barry Boehm, "A Spiral Model of Software Development and
	Enhancement", ACM SIGSOFT Software Engineering Notes, August
	1986].

	[Barry Boehm "A Spiral Model of Software Development and
	Enhancement" IEEE Computer, vol.21, #5, May 1988, pp 61-72].

	[Better explanation?]

	(23 Nov 1997)

SPIT

	Language for IBM 650.  (See IT).

SPITBOL

	SPeedy ImplemenTation of snoBOL.  "Macro SPITBOL - A SNOBOL4
	Compiler", R.B.K. Dewar et al, Soft Prac & Exp 7:95-113, 1971.
	Current versions: SPITBOL-68000, Sparc SPITBOL from Catspaw
	Inc, (719)539-3884.

SP/k

	<language> (Subset PL/I, k=1..8) A series of {PL/I} subsets,
	simplified for student use.

	["SP/k: A System for Teaching Computer Programming", R.C. Holt
	et al, CACM 20(5):301-309, May 1977].

	(27 Dec 1997)

SPL

	1. Synchronous Programming Language.  A DSP language.
	"Introduction to the SPL Compiler", Computalker Consultants,
	1986.

	2. Space Programming Language.  Realtime language used by the
	US Air Force for aerospace software.  Aka SPL/J6.  Similar to
	JOVIAL.  "Space Programming Language Development", SAMSO TP
	70-325, System Development Corp (Sep 1970).  (See CLASP).

	3. System Programming Language.  HP, 1977.  An ALGOL-like
	language for the HP3000 computer allowing inline assembly
	code.  MPE, the OS for the HP3000 was written in SPL.
	Pub.No.30000-90024, HP.  See also {SPLash!}.

	4. Systems Programming Language.

	PRIME Computer, 80's.  A variant of PL/I used on PRIME
	computers.  PL/I subset G, less I/O plus a few extensions.
	SPL User's Reference Guide, Prime.  (See PL/P.)

	5. Systems Programming Language.

	A PL/I subset/extension for the P1000.

	D.B. Wortman, U Toronto.

	Philips Data Sys, Netherlands, 1971.

	Symbolic constants, pointer arithmetic, inline assembly code.
	Used to implement compilers, operating systems, and database.

	["Experiences With SPL", J. Klunder in Machine Oriented Higher
	Level Languages, W. van der Poel, N-H 1974, pp. 385-393].

	[Can 4 and 5 be the same?]

	6. Student Programming Language.

	A translator-interpreter for a dialect of {PL/I}.

	7. {Set Priority Level}

	(07 Feb 1995)

SPL/1

	{SPL/I}

SPLash!

	1. Software Research Northwest, 1987.  Compiler for SPL[3].

	2. Systems Programming LAnguage for Software Hackers.
	Mentioned in TeX for the Impatient, Paul W. Abrahams, A-W
	1990.

splash screen

	A {Macintosh} user's synonym for {banner}.

	(31 Jan 1995)

splat

	1. Name used in many places (DEC, IBM, and others) for the
	asterisk ("*") character (ASCII 0101010).  This may derive
	from the "squashed-bug" appearance of the asterisk on many
	early line printers.

	2. Name used by some {MIT} people for the "#" character (ASCII
	35).

	3. (Rochester Institute of Technology) The {feature key} on a
	Mac (same as {alt}).

	4. An obsolete name used by some people for the
	{Stanford}/{ITS} {extended ASCII} circle-x character.  This
	character is also called "blobby" and "frob", among other
	names; it is sometimes used by mathematicians as a notation
	for "tensor product".

	5. An obsolete name for the semi-mythical {Stanford} {extended
	ASCII} circle-plus character.

	See also {ASCII}.

	(19 Jan 1995)

SPL/I

	Signal Processing Language One.

	(Or "SPL/1") A language designed by {Intermetrics} for
	acoustic {signal processing}.  It has graphics and
	multiprocessing features.

	["SPL/I Language Reference Manual", M.S. Kosinski,
	Intermetrics Report 172-1 (July 1976)].

	(19 Jan 1995)

SPLINTER

	A {PL/I} {interpreter} with debugging features.

	[Sammet 1969, p.600].

	(19 Jan 1995)

Split-C

	Parallel extension of {C} for distributed memory
	multiprocessors.  Aims to provide efficient low-level access
	to the underlying machine.

	{CM5 (ftp://ftp.cs.berkeley.edu/ucb/CASTLE/Split-C)}.
	Mail-list: split-c@boing.cs.berkeley.edu.

splot

	<graphics, tool> A graph plotting package from {Stanford
	University} which produces {encapsulated PostScript}.

	splot is more flexible than {gnuplot} in producing histograms,
	and you can set {font} and symbol sizes individually.

	(26 Sep 1997)

SPLX

	<language> Specification Language for Parallel cross-product
	of processes and sequential modules.

	["Parallel Module Specification on SPLX", C.F. Nourani,
	SIGPLAN Notices 27(1):114-115, Jan 1992].

	(26 Sep 1997)

SPM

	{Sequential Parlog Machine}

spod

	<chat> (Great Britain) A lower form of life found on {chat}
	systems and {MUD}s.  The spod has few friends in {RL} and uses
	chat instead, finding communication easier and preferable over
	the {net}.  He has all the negative traits of the {computer
	geek} without having any interest in computers per se.
	Lacking any knowledge of, or interest in, how networks work,
	and considering his access a God-given right, he is a major
	irritant to {sysadmins}, clogging up lines in order to reach
	new {MUD}s, following passed-on instructions on how to sneak
	his way onto {Internet} ("Wow!  It's in America!") and
	complaining when he is not allowed to use busy routes.  A true
	spod will start any conversation with "Are you male or
	female?" (and follow it up with "Got any good
	numbers/IDs/passwords?") and will not talk to someone
	physically present in the same terminal room until they log
	onto the same computer that he is using and enter {chat}.

	Compare {newbie}, {tourist}, {weenie}, {twink}, {terminal
	junkie}, {dweeb}.

	(18 Jan 1998)

spoiler

	1. A remark which reveals important plot elements
	from books or movies, thus denying the reader (of the article)
	the proper suspense when reading the book or watching the
	movie.

	2. Any remark which telegraphs the solution of a problem or
	puzzle, thus denying the reader the pleasure of working out
	the correct answer (see also {interesting}).  Either sense
	readily forms compounds like "total spoiler", "quasi-spoiler"
	and even "pseudo-spoiler".

	By convention, {Usenet} news articles which are spoilers in
	either sense should contain the word "spoiler" in the Subject:
	line, or guarantee via various tricks that the answer appears
	only after several screens-full of warning, or conceal the
	sensitive information via {rot13}, or some combination of
	these techniques.

	(18 Jan 1995)

sponge

	A special case of a {Unix} {filter} that reads its entire
	input before writing any output; the canonical example is a
	sort utility.  Unlike most filters, a sponge can conveniently
	overwrite the input file with the output data stream.  If a
	file system has {file versioning} (as {ITS} did and {VMS} does
	now) the sponge/filter distinction loses its usefulness,
	because directing filter output would just write a new
	version.

	See also {slurp}.

	(18 Jan 1995)

spoo

	Variant of {spooge}, sense 1.

spoof

	See {spoofing}.

spoofing

	A technique used to reduce network overhead, especially in
	{wide area network}s (WAN).

	Some network {protocol}s send frequent packets for management
	purposes.  These can be {routing} updates or {keep-alive}
	messages.  In a {WAN} this can introduce significant overhead,
	due to the typically smaller {bandwidth} of WAN connections.

	Spoofing reduces the required bandwidth by having devices,
	such as {bridge}s or {router}s, answer for the remote devices.
	This fools (spoofs) the {LAN} device into thinking the remote
	LAN is still connected, even though it's not.  The spoofing
	saves the WAN bandwidth, because no packet is ever sent out on
	the WAN.

	LAN {protocol}s today do not yet accommodate spoofing easily.

	["Network Spoofing" by Jeffrey Fritz, BYTE, December 1994,
	pages 221 - 224].

	(13 Jan 1995)

spooge

	/spooj/ Inexplicable or arcane code, or random and probably
	incorrect output from a computer program.

	(12 Jan 1995)

SPOOL

	<operating system> Acronym for {Simultaneous Peripheral
	Operation On-Line}; but see also {spool}.

	(20 May 1996)

Spool

	<language> An {object-oriented} {logic programming} language.

	["An Experience with a Prolog Based Language", K. Fukunaga et
	al, SIGPLAN Notices 21(11):224-231 (Nov 1986) (OOPSLA '86)].

	(25 Mar 1995)

spool

	<operating system> To send files to some device or program (a
	"{spooler}" or {demon}) that puts them in a {queue} for later
	processing of some kind.  Without qualification, the spooler
	is the "print spooler" controlling output of jobs to a
	{printer}; but the term has been used in connection with other
	{peripherals} (especially {plotters} and graphics devices) and
	occasionally even for input devices.

	The term "SPOOL" has been attributed to {IBM} as an acronym
	for {Simultaneous Peripheral Operation On-Line} but it's
	widely thought to have been contrived for effect.

	[No connection with "spool of magnetic tape"?]

	(20 May 1996)

spooler

	<operating system, tool> Software or hardware to which data is
	{spool}ed and which processes that data (e.g. prints it) in the
	{background}.

	(25 Mar 1995)

spool file

	Any file to which data is {spool}ed to await the next stage of
	processing.  Especially used in circumstances where spooling
	the data copes with a mismatch between speeds in two devices
	or pieces of software.  For example, when you send mail under
	Unix, it's typically copied to a spool file to await a
	transport {demon}'s attentions.

spreadsheet

	<application, tool> (Or rarely "worksheet") A type of
	{application program} which manipulates numerical and string
	data in rows and columns of cells.  The value in a cell can be
	calculated from a formula which can involve other cells.  A
	value is recalculated automatically whenever a value on which
	it depends changes.  Different cells may be displayed with
	different formats.

	Some spreadsheet support three-dimensional matrices and cyclic
	references which lead to iterative calculation.

	An essential feature of a spreadsheet is the copy function
	(often using {drag-and-drop}).  A rectangular area may be
	copied to another which is a multiple of its size.  References
	between cells may be either absolute or relative in either
	their horizontal or vertical index.  All copies of an absolute
	reference will refer to the same row, column or cell whereas a
	relative reference refers to a cell with a given offset from
	the current cell.

	Many spreadsheets have a "What-if" feature.  The user gives
	desired end conditions and assigns several input cells to be
	automatically varied.  An area of the spreadsheet is assigned
	to show the result of various combinations of input values.

	Spreadsheets usually incorporate a {macro language}, which
	enables third-party writing of worksheet applications for
	commercial purposes.

	In the 1970s, a {screen editor} based calculation program
	called {Visi-Calc} was introduced.  It was probably the first
	commercial spreadsheet program.  Soon {Lotus Development
	Corporation} released the more sophisticated {Lotus 1-2-3}.
	Clones appeared, (for example {VP-Planner} from {Paperback
	Software} with {CGA} graphics, {Quattro} from {Borland}) but
	Lotus maintained its position with world-wide marketing and
	support - and lawyers!  For example, Borland was forced to
	abandon its Lotus-like {pop-up menu}.

	While still developing 1-2-3, Lotus introduced {Symphony},
	which had simultaneously active windows for the spreadsheet,
	graphs and a {word processor}.

	{Microsoft} produced {MultiPlan} for the {Macintosh}, which
	was followed by {Excel} for Macintosh, long before {Microsoft
	Windows} was developed.

	When {Microsoft Windows} arrived Lotus was still producing the
	{text-based} 1-2-3 and Symphony.  Meanwhile, {Microsoft}
	launched its {Excel} spreadsheet with interactive graphics,
	graphic charcters, mouse support and {cut-and-paste} to and
	from other Windows applications.  To compete with Windows
	spreadsheets, Lotus launched its {Allways} add-on for 1-2-3 -
	a post-processor that produced Windows-quality graphic
	characters on screen and printer.  The release of Lotus 1-2-3
	for Windows was late, slow and buggy.

	Today, Microsoft, Lotus, Borland and many other companies offer
	Windows-based spreadsheet programs.

	The main end-users of spreadsheets are business and science.

	Spreadsheets are an example of a non-algorithmic programming
	language.

	[Dates?]

	(28 Mar 1995)

spread spectrum communications

	<communications> (Or "spread spectrum") A technique by which a
	signal to be transmitted is modulated onto a {pseudo-random},
	noise-like, wideband {carrier signal}, producing a
	transmission with a much larger {bandwidth} than that of the
	data {modulation}.

	Reception is accomplished by {cross correlation} of the
	received wide band signal with a synchronously generated
	replica of the carrier.

	Spread-spectrum communications offers many important benefits:

	Low probability of detection, interception or determination of
	the transmitter's location.  To an observer who does not
	possess information about the carrier, the transmission is
	indistinguishable from other sources of noise.

	High immunity against interference and jamming (intentional
	interference).  The presence of (narrowband) interference
	signals only decreases the channel's {signal-to noise ratio}
	and therefore its {error rate}, which can be dealt with by
	using {error correcting codes}.  A jammer would have to use
	wideband interference signals, which would require very high
	power (again assuming that the jammer does not know the
	characteristics of the carrier).

	High immunity against adverse effects of multipath
	transmission.  In the presence of multiple paths between
	transmitter and receiver (e.g. by reflected signals), signals
	of certain frequencies can be cancelled at certain locations
	when the difference in path delays between multiple
	propagation paths cause the signals to arrive out of phase.
	This effect is particularly troublesome in narrowband mobile
	communications, where it causes "blind spots" - locations
	where no signal can be received.

	Transmitter/receiver pairs using independent random carriers
	can operate in the same frequency range with minimal
	interference.  These are called {Code Division Multiple
	Access} (CDMA) systems.  Increasing the number of T/R pairs
	again only gradually increases each channel's error rate.  In
	contrast, narrowband systems can only accomodate a fixed
	number of channels determined by available bandwidth and
	channel width (data rate).

	When the data modulation cannot be distinguished from the
	carrier modulation, and the carrier modulation is random to an
	unwanted observer, the spread spectrum system assumes
	cryptographic capabilities, with the carrier modulation taking
	on the function of a key in a {cipher} system.  The most
	important practical modes of spread spectrum coding are Direct
	Sequence (DS) and Frequency Hopping (FH).  In DS, a pseudo
	random sequence is phase-shift-keyed (PSK) onto the carrier.
	In FH, a {frequency synthesizer} is driven by a pseudo random
	sequence of numbers to generate output frequencies that "hop
	around" in the desired frequency range.

	Spread Spectrum development began during World War II, with
	the earliest studies dating from the 1920s.  Most papers
	remained classified until the 1980s.  The technique is used
	extensively in military communications today.  Commercial
	applications include {cellular telephony} and mobile
	networking.

	["Spread Spectrum Communications", Charles E. Cook et al
	(Ed.), IEEE Press, New York, 1983. ISBN 0-87942-170-3].

	(06 Feb 1996)

SPRING

	{String PRocessING language}

SPRINT

	List processing language involving stack operations.  "SPRINT
	- A Direct Approach to List Processing Languages", C.A. Kapps,
	Proc SJCC 30 (1967).  Sammet 1969, p 462.

Sprintnet

	A public {packet-switched} network using the {ITU-T} {X.25}
	{protocol}s, that provides {dial-up} access to services like
	{Delphi}, {Portal}, {GEnie} and {Compuserve}.

	(17 Oct 1994)

Sprite

	<operating system> An {operating system} from {Berkeley}
	supporting {multiprocessing} and distributed files.

	[Details?  References?]

	(17 Oct 1994)

sprite

	<graphics, file format> A small {bitmap} image, often used in
	animated games but also sometimes used as a synonym for
	{icon}.

	(29 Jun 1997)

sprocket feed

	<printer> (Or "tractor feed", "pin feed") A method some
	{printers} use to move paper by rotating wheels with pins or
	studs (tractors) that engage holes along the sides of the
	(usually fanfold) paper.  A sprocket feed printer does not
	slip unless the paper jams, but cannot feed standard typing
	paper or work with a {sheet feeder} like {friction feed}.

	Some paper for sprocket feed printers has the edge strips with
	the holes in detachable from the rest of the paper.  These
	strips are known as {chad} (and other names).

	(29 Jun 1997)

SPS

	Symbolic Programming System.  Assembly language for IBM 1620.

SPSS

	Statistical Programs for the Social Sciences.

	["SPSS X User's Guide", SPSS, Inc. 1986].

	(01 Dec 1994)

SPUR

	An early system on the {IBM 650}.

	[Listed in CACM 2(5):16 (May 1959)].

	(01 Dec 1994)

SPX

	1. <networking> {Sequenced Packet Exchange}.

	2. <application> A graphics program for the {Atari} microcomputer.

	{(ftp://src.doc.ic.ac.uk/computing/systems/atari/umich/Graphics/spx_v18.lzh)}.

	3. {Simplex}.

	(04 Mar 1997)

spx

	<filename extension> The {filename extension} for {Screen
	Peace} eXtension files.

	(14 Mar 1995)

\sqcap

	{LaTeX} inverted square U.  The symbol for {greatest lower
	bound}.

	(01 Dec 1994)

\sqcup

	{LaTeX} square U.  The symbol for {least upper bound}.

	(01 Dec 1994)

SQE

	{Signal Quality Error}

	{IEEE 802.3}, {Ethernet}.  Equivalent to {D/I/X} "{Collision
	Presence Test}".

	(14 Apr 1995)

SQL

	{Structured Query Language}

SQL2

	<database, standard, language> An extended version of the
	{SQL} {standard}.

	(20 Mar 1995)

SQL3

	<database, standard, language> A draft {standard} for another
	extension of {Structured Query Language} (SQL).  The latest
	SQL3 Working Draft addresses the requirement for {object}s and
	"object identifiers" in SQL and also specifies supporting
	features such as {encapsulation}, {subtype}s, {inheritance},
	and {polymorphism}.

	In the USA, SQL3 is being processed as both an {ANSI} Domestic
	("D") project and as an {ISO} project.  It is expected to be
	complete in 1998.

	{November 1992 paper
	(ftp://speckle.ncsl.nist.gov/isowg3/dbl/BASEdocs/sql3overview.txt)}.

	Working draft: {plain text
	(ftp://gatekeeper.dec.com/pub/standards/sql/x3h2-93-091.txt)},
	{PostScript
	(ftp://gatekeeper.dec.com/pub/standards/sql/x3h2-93-091.ps)}.

	[ISO/IEC SQL Revision.  ISO-ANSI Working Draft Database
	Language SQL (SQL3), Jim Melton - Editor, document ISO/IEC
	JTC1/SC21 N6931, {ANSI}, July 1992].

	[Current Status?]

	(20 Mar 1995)

SQL Access Group

	<body> The origanisaton which defined {Call-Level Interface},
	on which {ODBC} is based.  It is now part of {X/Open}.

	[Address, details?]

	(05 Nov 1995)

SQL/DS

	A database package from IBM including a relational DBMS.

SQL Module Language

	A language used to interface other languages ({Ada}, {C},
	{COBOL}) to {SQL}-based {DBMS}es.  It is an {ANSI} {standard}.

	Version: Ada/{SAME} by {Informix}.

	(23 Nov 1994)

SQL Server

	<database> (Note capitalised)

	1. {Sybase SQL Server}.

	Sybase SQL Server Professional for {Solaris} and {Windows NT}.

	2. {Microsoft SQL Server}.

	[What is the connection between these two?]

	(07 Dec 1997)

SQL server

	<database> (Note not capitalised) Any {database management
	system} (DBMS) that can respond to queries from {clients}
	formatted in the {SQL} language.

	Two popular examples are {Microsoft SQL Server} and {Sybase
	SQL Server}.

	(07 Dec 1997)

SQLWindows

	<programming, product> A package used to graphically develop
	{MS-Windows} {client-server} applications.  Sold by {Gupta}
	Corporation.

	{Home (http://www.wji.com/gupta/w1000030.html)}.
	{Demos FTP (ftp://wji.com/gupta/sqlw.demodisk/)}.

	(05 Jul 1995)

\sqsubseteq

	{LaTeX} name for a symbol like a capital E without the bottom
	half of its vertical line.

	In {domain theory},

		x \sqsubseteq y

	means x is no more defined that y.  This expression only has
	meaning if x and y are {comparable} elements of some
	{partially ordered set}.

	(24 Nov 1994)

Square

	<language> A {query language}, a precursor to {SQL}.

	["Specifying Queries as Relational Expressions: The SQUARE
	Data Sublanguage", R.E. Boyce et al, CACM 18(11):621-628 (Nov
	1975)].

	(02 May 1995)

square tape

	{Mainframe} magnetic tape cartridges for use with {IBM 3480}
	or compatible tape drives; or {QIC} tapes used on
	{workstation}s and {microcomputer}s.  The term comes from the
	square (actually rectangular) shape of the cartridges;
	contrast {round tape}.

Squeak

	"Squeak: A Language for Communicating with Mice", L. Cardelli
	et al, Comp Graphics 19(3):199-204 (July 1985) (See
	Newsqueak).

Squiggol

	{Bird-Meertens Formalism}

squirt the bird

	<jargon, communications> To transmit a signal up to a
	satellite.  "Crew and talent are ready, what time do we squirt
	the bird?"

	(29 Apr 1997)

SR

	<language> Synchronizing Resources.

	A language for concurrent programming.

	"Resources" encapsulate processes and variables they share.
	Each Resource can be separately compiled.  "Operations"
	provide the primary mechanism for process interaction.

	SR provides a novel integration of the mechanisms for invoking
	and servicing operations.  Consequently, it supports local and
	{remote procedure call}, {rendezvous}, {message passing},
	{dynamic process creation}, {multicast}, {semaphore}s and
	{shared memory}.

	Version 2.2 has been ported to {Sun 3}, {Sun 4}, {Decstation},
	{SGI Iris}, {HP PA}, {HP 9000/300}, {NeXT}, {Sequent
	Symmetry}, {DG AViiON}, {RS/6000}, {Multimax}, {Apollo} and
	others.

	{(ftp://cs.arizona.edu/sr/sr.tar.Z)}

	E-mail: <sr-project@cs.arizona.edu>.  Mailing list:
	info-sr-request@cs.arizona.edu.

	["An Overview of the SR Language and Implementation", G.
	Andrews, ACM TOPLAS 10:51-86 (Jan 1988)].

	["The SR Programming Language: Concurrency in Practice",
	G.R. Andrews et al, Benjamin/Cummings 1993, ISBN
	0-8053-0088-0].

	(01 Sep 1992)

SRAM

	{static random access memory}

SRAPI

	{Speech Recognition Application Program Interface}

SRC Modula-3

	Version 2.11

	compiler(->C), run-time, library, documentation

	The goal of Modula-3 is to be as simple and safe as it
		can be while meeting the needs of modern systems
		programmers.  Instead of exploring new features, we
		studied the features of the Modula family of languages
		that have proven themselves in practice and tried to
		simplify them into a harmonious language.  We found
		that most of the successful features were aimed at one
		of two main goals: greater robustness, and a simpler,
		more systematic type system.  Modula-3 retains one of
		Modula-2's most successful features, the provision for
		explicit interfaces between modules.  It adds objects
		and classes, exception handling, garbage collection,
		lightweight processes (or threads), and the isolation
		of unsafe features.

	conformance:	implements the language defined in SPwM3.

	ports: i386/AIX 68020/DomainOS Acorn/RISCiX MIPS/Ultrix
	68020/HP-UX RS/6000/AIX IBMRT/4.3 68000/NEXTSTEP i860/SVR4
	SPARC/SunOS 68020/SunOS sun386/SunOS Multimax/4.3 VAX/Ultrix

	Mailing list:	comp.lang.modula3

	E-mail: Bill Kalsow <kalsow@src.dec.com>

	From DEC/SRC, Palo Alto, CA.  "Modula-3 Report (revised)"
	Luca Cardelli et al.

	{(ftp://gatekeeper.dec.com/DEC/Modula-3/)}

	(1992/02/09)

SRDL

	Small {algebraic specification language}, allows {distfix
	operator}s.

	["A Constructive Method for Abstract Algebraic Software
	Specification", H.  Klaeren, Theor Computer Sci 30,
	pp.134-204, 1984].

SR flip-flop

	<hardware> (Or "RS flip-flop") A "set/reset" {flip-flop} in
	which activating the "S" input will switch it to one stable
	state and activating the "R" input will switch it to the other
	state.

	The outputs of a basic SR flip-flop change whenever its R or S
	inputs change appropriately.  A clocked SR flip-flop has an
	extra clock input which enables or disables the other two
	inputs.  When they are disabled the outputs remain constant.

	If we connect two clocked SR flip-flops so that the Q and /Q
	outputs of the first, "master" flip-flop drive the S and R
	inputs of the second, "slave" flip-flop, and we drive the
	slave's clock input with an inverted version of the master's
	clock, then we have an {edge-triggered} RS flip-flop.  The
	external R and S inputs of this device are latched on one edge
	(transition) of the clock (e.g. the falling edge) and the
	outputs will only change on the next opposite (rising) edge.

	If both R and S inputs are active (when enabled), a {race
	condition} occurs and the outputs will be in an indeterminate
	state.  A {JK flip-flop} avoids this possibility.

	{(http://www.play-hookey.com/digital/logic4.html)}.

	(15 May 1997)

SRI

	{SRI International}

SRI International

	One of the world's largest contract research firms.  Founded
	in 1946 in conjuction with {Stanford University} as the
	Stanford Research Institute, we later became fully independent
	and were incorporated as a non-profit organization under
	U.S. and California laws.

	SRI does advanced research and development in many areas,
	independently and for hire.  They produce and sell reports on
	the independent research.

	{Home (http://www.sri.com/)}

	Address: Palo Alto, California, USA; Cambridge, UK.

	(26 Jan 1995)

SRL

	1. Bharat Jayaraman.

	["Towards a Broader Basis for Logic Programming",
	B. Jayaraman, TR CS Dept, SUNY Buffalo, 1990].

	2. {Schema Representation language}.

	3. {Structured Robot Language}.

	C. Blume & W. Jacob, U Karlsruhe.

	(26 Jan 1995)

SRP

	A {data link layer} {protocol}.

SS7

	{Signalling System 7}

SSA

	{Serial Storage Architecture}

SSADM

	A software engineering method and toolset required by some UK
	government agencies.

SSBA

	{Suite Synthetique des Benchmarks de l'AFUU}

ssh

	<operating system> 1. {Steve's Shell}.

	2. {Secure Shell}.

	(07 Jan 1997)

SSI

	1. <electronics> {small scale integration}.

	2. <computer> A kind of {PDP-11}(?).

	[What kind?]

	3. <World-Wide Web> {server-side include}.

	(08 Sep 1996)

SSII

	{Societe de Service en Ingenierie Informatique}

SSL

	1. <language> {Synthesizer Specification Language}.

	2. <language> {Syntax/Semantic Language} (S/SL).

	3. <networking, World-Wide Web> {Secure Sockets Layer}.

	(08 Sep 1996)

S/SL

	{Syntax/Semantic Language}

SSLeay

	<networking, security, protocol> A free implementation of
	{Netscape}'s {Secure Socket Layer} {protocol}, coded from
	scratch, using only the publically available documentation of
	the various protocols, by Eric Young <eay@mincom.oz.au>.

	SSLeay supports the {DES}, {RSA}, {RC4}, and {IDEA}
	{encryption} {algorithms}.

	[Home?]

	(25 Aug 1996)

STAB

	<language> A descendent of {BCPL}.

	(25 Aug 1996)

STAB-11

	["The Translation and Interpretation of STAB-11", A.J.T. Colin
	et al, Soft Prac & Exp 5(2):123-138, Apr 1975].

	(25 Aug 1996)

STAC

	Storage Allocation and Coding Program.  Symbolic
	macro-assembler for the English Electric DEUCE.  "DEUCE STAC
	Programming Manual", DEUCE News No. 38, Report K/AA y 1 DEUCE
	Library Service, Data Processing and COntrol Systems DIvision,
	English Electric Company, Kidsgrove, June.

stack

	<programming> A data structure for storing items which are to
	be accessed in last-in first-out order.

	The operations on a stack are to create a new stack, to "push"
	a new item onto the top of a stack and to "pop" the top item
	off.  Error conditions are raised by attempts to pop an empty
	stack or to push an item onto a stack which has no room for
	further items (because of its implementation).

	Most processors include support for stacks in their
	{instruction set architecture}s.  Perhaps the most common use
	of stacks is to store subroutine arguments and return
	addresses.  This is usually supported at the {machine code}
	level either directly by "jump to subroutine" and "return from
	subroutine" instructions or by {auto-increment} and
	auto-decrement {addressing mode}s, or both.  These allow a
	contiguous area of memory to be set aside for use as a stack
	and use either a special-purpose {register} or a general
	purpose register, chosen by the user, as a {stack pointer}.

	The use of a stack allows subroutines to be {recursive} since
	each call can have its own calling context, represented by a
	stack frame or {activation record}.  There are many other
	uses.  The programming language {Forth} uses a data stack in
	place of variables when possible.

	Although a stack may be considered an {object} by users,
	implementations of the object and its access details differ.
	For example, a stack may be either ascending (top of stack is
	at highest address) or descending.  It may also be "full" (the
	stack pointer points at the top of stack) or "empty" (the
	stack pointer points just past the top of stack, where the
	next element would be pushed).  The full/empty terminology is
	used in the {Acorn Risc Machine} and possibly elsewhere.

	In a list-based or {functional language}, a stack might be
	implemented as a {linked list} where a new stack is an empty
	list, push adds a new element to the head of the list and pop
	splits the list into its head (the popped element) and tail
	(the stack in its modified form).

	At {MIT}, {pdl} used to be a more common synonym for stack,
	and this may still be true.  {Knuth} ("The Art of Computer
	Programming", second edition, vol. 1, p. 236) says:

	  Many people who realised the importance of stacks and queues
	  independently have given other names to these structures:
	  stacks have been called push-down lists, reversion storages,
	  cellars, dumps, nesting stores, piles, last-in-first-out
	  ("LIFO") lists, and even yo-yo lists!

	(10 Apr 1995)

Stack Environment Control Dump machine

	(SECD machine) The first {abstract machine} for reducing
	{lambda-calculus} expressions, invented by P. J. Landin.  The
	machine has four {register}s holding pointers to {linked
	list}s operated as push-down {stack}s which hold the
	information required for the evaluation of an expression.  The
	registers point to (1) Stack which holds the arguments of
	partially evaluated expressions and results of completely
	evaluated ones, (2) Environment where the current expression
	being evaluated is stored, (3) Control which holds the machine
	instructions that manipulate the contents of the four
	registers that represent the expression being evaluated, (4)
	Dump on which the state of the machine is temporarily saved
	during the evaluation of expressions.  See also {Lispkit}.

stack frame

	See {activation record}.

stacking order

	<graphics> The relationship between {window}s that (partially)
	obscure each other.  A {window manager} will include commands
	to alter the stacking order by bringing a chosen window to the
	front (top) or back (bottom) of the stack.

	(21 Mar 1995)

stack loader

	<hardware, storage> (Or "autoloader") A {magnetic tape} drive
	that can automatically fetch tapes from a stack and load them.

	Compare {jukebox}.

	[Sequential or random access?]

	(12 Dec 1996)

stack overflow

	<programming> An error condition which results from attempting
	to {push} more items onto a {stack} than space has been
	allocated for.  Often, this will simply overwrite the adjacent
	memory locations causing hard-to-trace {bug}s.

	Stack overflow can result, for example, from an insufficient
	number of stack frames to handle hardware {interrupt}s.

	(21 Mar 1995)

stack pointer

	<architecture, programming> (SP) A {register} or variable
	pointing to the top of a {stack}.  If the stack is a "full"
	stack the SP points to the most recently {push}ed item, else
	if it is an "empty" stack, the PS points to the first empty
	location, where the next item will be pushed.

	(21 Mar 1995)

stack puke

	Some processor architectures are said to "puke their guts onto
	the stack" to save their internal state during {exception}
	processing.  The {Motorola 68020}, for example, regurgitates
	up to 92 bytes on a {bus fault}.  On a {pipeline}d machine,
	this can take a while.

	(01 Nov 1994)

stack traceback

	<programming> (The results of) determining the sequence of
	nested procedure calls a program has made up to a certain
	point in its execution.  A traceback may also show values of
	procedure arguments and {local variable}s stored on the stack.

	(21 Mar 1995)

STAGE2

	A {macro} language.

	["The Mobile Programming System: STAGE2", W.M.  Waite, CACM
	13:415 (1970)].

	(27 Oct 1994)

staircase

	{jaggies}

staircasing

	{jaggies}

stale pointer bug

	<programming> (Or "aliasing bug") A class of subtle
	programming errors that can arise in code that does {dynamic
	allocation}, especially via {malloc} or equivalent.

	If several {pointers} address (are "aliases for") a given hunk
	of storage, it may happen that the storage is freed or
	reallocated (and thus moved) through one alias and then
	referenced through another, which may lead to subtle (and
	possibly intermittent) lossage depending on the state and the
	allocation history of the malloc {arena}.  This bug can be
	avoided by never creating aliases for allocated memory, or by
	use of a {higher-level language}, such as {Lisp}, which
	employs a {garbage collector}.

	The term "aliasing bug" is nowadays associated with {C}
	programming, it was already in use in a very similar sense in
	the {ALGOL 60} and {FORTRAN} communities in the 1960s.

	See also {smash the stack}, {fandango on core}, {memory leak},
	{memory smash}, {spam}.

	(09 May 1995)

Stallman, Richard M.

	{Richard Stallman}

stand-alone

	Capable of operating without other programs, libraries,
	computers, hardware, networks, etc.  Exactly what is absent is
	presumed to be obvious from context.

	"We only run Windows on stand-alone PCs because it's too
	dangerous to run it on networked ones."

	(11 Feb 1998)

standard

	<standard> Standards are necessary for {interworking},
	{portability}, and {reusability}.  They may be {de facto
	standards} for various communities, or officially recognised
	national or international standards.

	{Andrew S. Tanenbaum} once said, "The nice thing about
	standards is that there are so many of them to choose from", a
	reference to the fact that competing standards become a source
	of confusion, division, obsolescence, and duplication of
	effort instead of an enhancement to the usefulness of
	products.

	Some bodies concerned in one way or another with computing
	standards are {IAB} ({RFC} and {STD}), {ISO}, {ANSI}, {DoD},
	{ECMA}, {IEEE}, {IETF}, {OSF}.

	(02 Jan 1996)

Standard Commands for Programmable Instruments

	(SCPI) A standard complementing {IEEE 488}, developed by
	{Hewlett-Packard} and promoted by the {SCPI Consortium}.

	(01 Nov 1994)

standard for robot exclusion

	<World-Wide Web> A proposal to try to prevent the havoc
	wreaked by many of the early {World-Wide Web} {robots} when
	they retrieved documents too rapidly or retrieved documents
	that had side effects (such as voting).  The proposed standard
	for robot exclusion offers a solution to these problems.

	{(http://info.webcrawler.com/mak/projects/robots/norobots.html)}

	(23 Mar 1996)

Standard for the exchange of product model data

	(STEP) A draft {ISO} {standard} for the exchange of {CAD}
	data.

	See also {PDES}.

	(22 Feb 1995)

Standard Generalised Markup Language

	<spelling> {ISO} spell it "{Standard Generalized Markup
	Language}".

	(13 Dec 1996)

Standard Generalized Markup Language

	<language, text> (SGML) A generic {markup} language for
	representing documents.  SGML is an International Standard
	that describes the relationship between a document's content
	and its structure.  SGML allows document-based information to
	be shared and re-used across applications and computer
	{platforms} in an open, vendor-neutral format.  SGML is
	sometimes compared to {SQL}, in that it enables companies to
	structure information in documents in an open fashion, so that
	it can be accessed or re-used by any SGML-aware application
	across multiple platforms.

	SGML is defined in "ISO 8879:1986 Information processing --
	Text and office systems -- Standard Generalized Markup
	Language (SGML)", an {ISO} standard produced by {JTC} 1/SC 18
	and amended by "Amendment 1:1988".

	Unlike other common document file formats that represent both
	content and presentation, SGML represents a document's content
	{data} and structure (interrelationships among the data).
	Removing the presentation from content establishes a neutral
	format.  SGML documents and the information in them can easily
	be re-used by publishing and non-publishing {applications}.

	SGML identifies document elements such as titles, paragraphs,
	tables and chapters as distinct objects, allowing users to
	define the relationships between the objects for structuring
	data in documents.  The relationships between document
	elements are defined in a DTD (Document Type Descriptor).
	This is roughly analogous to a collection of {field}
	definitions in a {database}.  Once a document is converted
	into SGML and the information has been 'tagged', it becomes a
	database-like document.  It can be searched, printed or even
	programmatically manipulated by SGML-aware applications.

	Companies are moving their documents into SGML for several
	reasons:

	Reuse - separation of content from presentation facilitates
	multiple delivery formats like {CD-ROM} and {electronic
	publishing}.

	Portability - SGML is an international, platform-independent,
	standard based on {ASCII} text, so companies can safely store
	their documents in SGML without being tied to any one vendor.

	Interchange - SGML is a core data standard that enables
	SGML-aware applications to inter-operate and share data
	seamlessly.

	A central SGML document store can feed multiple processes in a
	company, so managing and updating information is greatly
	simplified.  For example, when an aeroplane is delivered to a
	customer, it comes with thousands of pages of documentation.
	Distributing these on paper is expensive, so companies are
	investigating publishing on CD-ROM.  If a maintenance person
	needs a guide for adjusting a plane's flight surfaces, a
	viewing tool automatically assembles the relevant information
	from the document {repository} as a complete document.  SGML
	can be used to define attributes to information stored in
	documents such as security levels.

	There are few clear leaders in the SGML industry which, in
	1993, was estimated to be worth US $520 million and is
	projected to grow to over US $1.46 billion by 1998.

	A wide variety tools can be used to create SGML systems.  The
	SGML industry can be separated into the following categories:

	Mainstream Authoring consists of the key {word processing}
	vendors like {Lotus}, {WordPerfect} and {Microsoft}.

	SGML Editing and Publishing includes traditional SGML
	authoring tools like {ArborText}, {Interleaf}, {FrameBuilder}
	and {SoftQuad Author}/Editor.

	SGML Conversions is one of the largest sectors in the market
	today because many companies are converting legacy data from
	mainframes, or documents created with mainstream word
	processors, into SGML.

	Electronic Delivery is widely regarded as the most compelling
	reason companies are moving to SGML.  Electronic delivery
	enables users to retrieve information online using an
	intelligent document viewer.

	Document Management may one day drive a major part of the
	overall SGML industry.

	SGML Document Repositories is one of the cornerstone
	technologies that will affect the progress of SGML as a data
	standard.

	{"ISO 8879:1986//ENTITIES Added Latin 1//EN"
	(http://www.ucc.ie/info/net/isolat1.html)} defines some
	characters.  [How are these related to {ISO 8859}-1?].

	{ISO catalogue entry (http://www.iso.ch/cate/d16387.html)}

	SGML parsers are available from
	{VU, NL (ftp://star.cs.vu.nl/Sgml)},
	{FSU (ftp://mailer.cc.fsu.edu/pub/sgml)},
	{UIO, Norway (ftp://ifi.uio.no/pub/SGML/SGMLS)}.

	See also {sgmls}.

	{Usenet} newsgroup: {news:comp.text.sgml}.

	["SGML - The User's Guide to ISO 8879", J.M. Smith et al,
	Ellis Harwood, 1988].

	[Example of some SGML?]

	(30 Sep 1997)

standard input/output

	<programming, operating system> The predefined input/output
	channels which every {Unix} process is initialised with.
	Standard input is by default from the terminal, and standard
	output and standard error are to the terminal.  Each of these
	channels (controlled via a {file descriptor} 0, 1, or 2 -
	stdin, stdout, stderr) can be redirected to a file, another
	device or a {pipe} connecting its process to another process.
	The process is normally unaware of such {I/O redirection},
	thus simplifying prototyping of combinations of commands.

	The {C} programming language library includes routines to
	perform basic operations on standard I/O.  Examples are
	"printf", allowing text to be sent to standard output, and
	"scanf", allowing the program to read from standard input.

	(07 Jun 1996)

Standard Instrument Control Library

	(SICL) A {platform}-independent {API} for software to control
	and test electronic instruments conforming to {IEEE 488}.

	(05 Jan 1995)

standard interpretation

	{standard semantics}

standard I/O

	{standard input/output}

Standard Lisp

	A subset of {Lisp 1.5} developed by A. Hearn primarily for
	implementing {REDUCE}.  It was replaced by {Portable Sandard
	LISP}.

	["Standard LISP Report", J. Marti et al, SIGPLAN Notices
	14(10):48-58 (Oct 1979)].

	(04 Nov 1994)

Standard ML

	<language> (SML) Originally an attempt by Robin Milner
	<rm@lfcs.edinburgh.ac.uk> ca. 1984 to unify the dialects of
	{ML}, SML has evolved into a robust general-purpose language.
	Later versions have been maintained by D. B. MacQueen
	<dbm@research.att.com>, Lal George <george@research.att.com>,
	AJ. H. Reppy <jhr@research.att.com> and A. W. Appel
	<appel@princeton.edu>.

	SML is {functional}, with {imperative} features.  It is
	environment based and {strict}.  It adds to ML the
	{call-by-pattern} of {Hope}, {recursive data type}s,
	{reference type}s, typed {exception}s, and {module}s.  (The
	"core" language excludes the modules).

	Standard ML is {polymorphic}ally typed and its module system
	supports flexible yet secure large-scale programming.
	{Standard ML of New Jersey} is an optimising {native-code
	compiler} for Standard ML that is written in Standard ML.  It
	runs on a wide range of architectures. The distribution also
	contains: an extensive library - The Standard ML of New Jersey
	Library, including detailed documentation; {Concurrent ML}
	(CML); {eXene} - an elegant interface to {X11} (based on
	{CML}); {SourceGroup} - a {separate compilation} and "{make}"
	facility.

	Implementations: {SML/NJ}, {POPLOG ML}, {Poly/ML}, {Edinburgh
	SML}, {ANU ML}, {Micro ML}, {lazy sml2c}.

	{sml2c} compiles to {C}.  See also {ML Kit}.

	Version 0.93 runs on {68000}, {SPARC}, {MIPS}, {HPPA},
	{RS/6000}, {Intel 386}, {Intel 486} and {Macintosh}.

	{Manual
	(http://www.dcs.napier.ac.uk/course-notes/sml/manual.html)}.

	{FTP from ATT (ftp://research.att.com/dist/ml/)}.
	{FTP from Suny SB (ftp://sbcs.sunysb.edu/)}.

	Mailing list: sml-request@cs.cmu.edu.

	["A Proposal for Standard ML", R. Milner, ACM Symp on LISP and
	Functional Prog 1984, pp. 184-197].

	(24 Dec 1995)

Standard ML of New Jersey

	(SML/NJ) An implementation of {SML} by {Andrew Appel} at
	{Princeton} <Appel@princeton.edu> and {Dave MacQueen} at
	{AT&T} <dbm@research.att.com>.  Version 0.93.

	["Standard ML of New Jersey", A. Appel et al, "Proc Third Intl
	Symp on Prog Lang Impl and Logic Programming", LNCS Springer
	1991].

	Versions for Unix, Mac.  {(ftp://cs.yale.edu/pub/ml)},
	{(ftp://research.att.com/dist/ml)}.  Mailing list:
	sml@cs.cmu.edu.

standard semantics

	The standard interpretation of a term in some language yields
	the term's standard denotational semantics, i.e. its "meaning".
	This is usually given by a semantic function which maps a term
	in the abstract syntax to a point in some domain.  The domain
	is the interpretation of the term's type.  The semantic
	function also takes an environment - a function which maps the
	free variables of the term to their meaning.  We say that a
	domain point "denotes", or "is the denotation of", a term.  A
	non-standard semantics results from some other interpretation,
	e.g. an abstract interpretation.

Stanford Research Institute

	Former name of {SRI International}.

Stanford University

	A University in the city of Palo Alto, California, noted for
	work in computing, especially artificial intelligence.  See
	{SAIL}.

	{(ftp://anna.stanford.edu/)}, {(ftp://boole.stanford.edu/)},
	{(ftp://csli.stanford.edu/)}, {(ftp://fresnel.stanford.edu/)},
	{(ftp://sumex-aim.stanford.edu/)},
	{(ftp://gregorio.stanford.edu/)},
	{(ftp://hanauma.stanford.edu/)},
	{(ftp://helens.stanford.edu/)},
	{(ftp://interviews.stanford.edu/)},
	{(ftp://labrea.stanford.edu/)}, {(ftp://sail.stanford.edu/)},
	{(ftp://self.stanford.edu/)}, {(ftp://wilbur.stanford.edu/)}.

Staple

	Saint Andrews Applicative Persistent Language.  Language
	combining functional programming with persistent storage,
	developed at St. Andrews University in Scotland.  Tony Davie,
	<ad@cs.st-andrews.ac.uk>.

STAR 0

	Early system on Datatron 200 series.  Listed in CACM 2(5):16
	(May 1959).

StarBurst

	An active DBMS from IBM Almaden Research Center.

StarLISP

	{*LISP}

StarMOD

	{*MOD}

Starset

	Portable storage/retrieval language for distributed databases.
	"Starset programming Language", M.M. Gilula et al, Nauka,
	Moscow 1991, ISBN 5-02-006831-4.

STARSYS

	{Convergent Technologies Operating System}

start bit

	<protocol> A {bit} which signals the start of transmission of
	a character on a {serial line}.  For an {RS-423} signal, the
	line is normally at logical zero which there is no data and
	the start bit is a logical one.  The zero-one transition tells
	the receiver when to start sampling the signal to extract the
	data bits.

	[Is this upside-down?]

	(02 Feb 1995)

Start Of Header

	<character> (SOH) {mnemonic} for {ASCII} 1.

	[What header?]

	(31 May 1996)

Start Of Text

	<character> (STX) {Mnemonic} for {ASCII} 2.

	(31 May 1996)

state

	<storage, architecture, jargon, theory> How something is; its
	configuration, attributes, condition, or information content.
	The state of a system is usually temporary (i.e. it changes
	with time) and volatile (i.e. it will be lost or reset to some
	initial state if the system is switched off).

	A state may be considered to be a point in some {space} of all
	possible states.  A simple example is a light, which is either
	on or off.  A complex example is the electrical activation in
	a human brain while solving a problem.

	In computing and related fields, states, as in the light
	example, are often modelled as being {discrete} (rather than
	continuous) and the transition from one state to another is
	considered to be instantaneous.  Another (related) property of
	a system is the number of possible states it may exhibit.
	This may be finite or infinite.  A common model for a system
	with a finite number of discrete state is a {finite state
	machine}.

	(13 Oct 1996)

state diagram

	{state transition diagram}

stateless

	A stateless {server} is one which treats each request as an
	independent transaction, unrelated to any previous request.
	This simplifies the server design because it does not need to
	allocate storage to deal with conversations in progress or
	worry about freeing it if a client dies in mid-transaction.  A
	disadvantage is that it may be necessary to include more
	information in each request and this extra information will
	need to be interpreted by the server each time.

	An example of a stateless server is a {World-Wide Web} server.
	These take in requests ({URL}s) which completely specify the
	required document and do not require any context or memory of
	previous requests.

	Contrast this with a traditional {FTP} server which conducts
	an interactive session with the user.  A request to the server
	for a file can assume that the user has been authenticated and
	that the current directory and transfer mode have been set.

state machine

	{finite state machine}

state transition diagram

	A diagram consisting of circles to represent states and
	directed line segments to represent transitions between the
	states.  One or more actions (outputs) may be associated with
	each transition.  The diagram represents a {finite state
	machine}.

State University of New York

	<body> (SUNY) The public university system of New York State,
	USA, with campuses throughout the state.

	(01 Mar 1995)

static link

	<compiler> (Or "access link" or "environment link") A pointer
	from an {activation record} to the activation record for the
	textually enclosing {scope}.  A static link is only required
	in a statically (lexically) scoped language.

	The number of static links to follow may be determined
	statically (at compile time).  It is simply the difference in
	{lexical nesting depth} between the declaration and the
	reference.

	See also {display}.

	(07 Mar 1995)

static RAM

	{static random access memory}

static random access memory

	<storage> (SRAM) {Random access memory} in which each bit of
	storage is a bistable {flip-flop}, commonly consisting of
	cross-coupled inverters.  It is called "static" because it
	will retain a value as long as power is supplied, unlike
	{dynamic random access memory} (DRAM) which must be regularly
	refreshed.  It is however, still {volatile}, i.e. it will lose
	its contents when the power is switched off, in contrast to
	{ROM}.  SRAM is usually faster than DRAM but since each bit
	requires several transistors (about six) you can get less bits
	of SRAM in the same area.  It usually costs more per bit than
	DRAM and so is used for the most speed-critical parts of a
	computer (e.g. {cache} memory) or other circuit.

	(22 Apr 1995)

static scope

	{lexical scope}

Station Management

	<networking> (SMT) Station Management One of the 4 key {FDDI}
	component layers.  SMT is an overlay function that handles the
	management of the FDDI ring.  It handles neighbor
	identification, fault detection and reconfiguration, insertion
	and de-insertion from the ring, and traffic statistics
	monitoring.

	(11 May 1997)

statistical time division multiplexing

	<communications> (STDM, StatMUX) A system developed to
	overcome some inefficiencies of standard {time division
	multiplexing}, where {time slices} are still allocated to
	channels, even if they have no information to transmit.

	STDM uses a variable time slot length and by allowing channels
	to vie for any free slot space.  It employs a buffer memory
	which temporarily stores the data during periods of peak
	traffic.  This scheme allows STDM to waste no high-speed line
	time with inactive channels.  STDM requires each transmission
	to carry identification information (i.e. a channel
	identifier).  To reduce the cost of this overhead, a number of
	characters for each channel are grouped together for
	transmission.

	["Data Communications, Computer Networks and Open Systems",
	Halsall & Fred, Addison Wesley, p160-161, 1995].

	["Digital, Analog, and Data Communication", Sinnema &
	McGovern, Prentice Hall, p245, 1986].

	(05 Mar 1997)

statistics

	<statistics, mathematics> The practice, study or result of the
	application of mathematical {functions} to collections of
	{data} in order to summarise or {extrapolate} that data.

	The subject of statistics can be divided into descriptive
	statistics - describing data, and analytical statistics -
	drawing conclusions from data.

	(16 Jul 1997)

StatMUX

	{statistical time division multiplexing}

STB

	{set-top box}

STD

	1. {state transition diagram}.

	2. {Internet} standard.

	A subseries of {Request For Comments} (RFC) that specify
	{Internet} {standard}s.  The official list of Internet
	standards is {STD 1}.

	See also {For Your Information}.

	(30 Nov 1994)

STD 1

	<standard> The {Internet Architecture Board} official list of
	{Internet} {standards}.

	[Postel, J., "IAB Official Protocol Standards", STD 1, RFC
	1360, Internet Architecture Board, September 1992].

	(07 Feb 1995)

STD 13

	<networking, standard> One of the {STD}s defining the {Domain
	Name System}.

	(15 Dec 1997)

STD 15

	The {STD} defining {Simple Network Management Protocol}.

	(14 Nov 1994)

STD 2

	The document listing the current {Internet} {Assigned
	Numbers}.

	[Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC
	1340, USC/Information Sciences Institute, July 1992].

STD 9

	The {STD} defining {File Transfer Protocol} (FTP).

	(07 Feb 1995)

stderr

	{standard input/output}

stdin

	{standard input/output}

stdio

	{standard input/output}

stdio.h

	<programming> {standard input/output} {header file}.

	(28 Jan 1996)

STDM

	{statistical time division multiplexing}

stdout

	{standard input/output}

STDWIN

	A windowing interface from {CWI} with windows, menus, modal
	dialogs, mouse and keyboard input, scroll bars, drawing
	primitives, etc that is portable between {platform}s.  STDWIN
	is available for {Macintosh} and the {X Window System}.

steam-powered

	Old-fashioned or underpowered; archaic.  This term does not
	have a strong negative loading and may even be used
	semi-affectionately for something that clanks and wheezes a
	lot but hangs in there doing the job.

Steelman

	DoD, June 1978.  Fifth and last of the series of DoD
	requirements that led to Ada.  "Steelman Requirements for High
	Order Programming Languages", US Dept of Defense, June 1978.
	SIGPLAN Notices 13(12) (Dec 1978).  (See Strawman, Woodenman,
	Tinman, Ironman).

stemmer

	<library, human language> A program or {algorithm} which
	determines the morphological root of a given inflected (or,
	sometimes, derived) word form -- generally a written word
	form.

	A stemmer for English, for example, should identify the
	{string} "cats" (and possibly "catlike", "catty" etc.) as
	based on the root "cat", and "stemmer", "stemming", "stemmed"
	as based on "stem".

	English stemmers are fairly {trivial} (with only occasional
	problems, such as "dries" being the third-person singular
	present form of the verb "dry", "axes" being the plural of
	"ax" as well as "axis"); but stemmers become harder to design
	as the morphology, orthography, and {character encoding} of
	the target language becomes more complex.  For example, an
	Italian stemmer is more complex than an English one (because
	of more possible verb inflections), a Russian one is more
	complex (more possible noun declensions), a Hebrew one is even
	more complex (a {hairy} writing system), and so on.

	Stemmers are common elements in {query} systems, since a user
	who runs a query on "daffodils" probably cares about documents
	that contain the word "daffodil" (without the s).

	({This dictionary} has a rudimentary stemmer which currently
	(April 1997) handles only conversion of plurals to singulars).

	(09 Apr 1997)

stemming

	{stemmer}

STENSOR

	L. Hornfeldt, Stockholm, mid-80's.  Symbolic math, especially
	General Relativity.  Implemented on top of SHEEP and MACSYMA.

STEP

	{Standard for the exchange of product model data}

Stephen Cole Kleene

	<person> /klee'-nee/ An American mathematician who lived
	1909-1994 and is well-known for inventing {regular
	expressions}.  The {Kleene star} and {Ascending Kleene Chain}
	are named after him.

	(25 Mar 1997)

Stephen Jobs

	<person> Stephen P. Jobs (born 24 February 1955).  The
	co-founder and ex-president of {Apple Computer}, leader of the
	team that produced the {Macintosh}.

	In 1979, when he was president of Apple, Steven Jobs saw a
	demonstration of {Smalltalk} at {Xerox}'s {Palo Alto Research
	Center}.  He and other Apple employees were "very impressed
	with the unique and revolutionary user-friendly design".

	The first {Macintosh} was released in January 1984.  Jobs
	described it as {insanely great}.

	Jobs was ousted from Apple in 1985 and founded {Next, Inc.}.
	In December 1996 he was re-employed by Apple when they bought
	NeXT.

	See also {lithium lick}, {Mathematica}.

	(18 Mar 1997)

Stepstone Corp

	<company> A company founded by Brad Cox, responsible for
	{Objective C}.

	Telephone: +1 (203) 426-1875.

	(04 Aug 1996)

stepwise refinement

	{top-down design}

stereogram

	A two-dimensional image which, when viewed correctly appears
	three-dimensional.  E.g. {SIRDS} or {SIRTS}.

	{(ftp://katz.anu.edu.au/pub/stereograms)}

	(03 Nov 1994)

Steve Jobs

	{Stephen Jobs}

Steve's Shell

	<operating system> (ssh) A {Unix} {shell} with many {csh}- and
	{ksh}-like features, by Steve Baker <ice@judy.indstate.edu>
	and Thomas Moore.

	Version 1.7 has been ported to {Sequent}, {Sun}, {NeXT},
	{Ultrix}, {BSDI} and is available from {comp.sources.unix}
	volume 26.

	(15 Apr 1993)

Steve Wozniak

	The co-founder of {Apple Computer} in 1983 and the inventor of
	the {Apple II} {personal computer}.

	(12 Jan 1995)

Sticks&Stones

	A {functional}, {polymorphic} {hardware description language}
	loosely based on {ML} by Lucca Cardelli.

	["An Algebraic Approach to Hardware Description and
	Verification", L. Cardelli, Thesis, Edinburgh U, 1982].

	["Sticks&Stones II: A Functional Language VLSI Layout
	Generation Tool", Andrew Butterfield <butrfeld@cs.tcd.ie>,
	Thesis, Trinity College, 1990].

sticky analysis

	A program analysis which uses information from all the call
	sites of a function or procedure.

sticky bit

	<operating system> The {bit} in the mode of a {Unix} file
	which, if set for an executable, tells the {kernel} to keep
	the code loaded in {swap space} even after it has finished
	executing on the assumption that it is likely to be used again
	soon.  This performance optimisation was included in some
	early (and recent?) versions of {Unix} to save reloading
	frequently used programs such as the {shell} or {vi} from
	disk.

	If the sticky bit is set on a directory, an unprivileged user
	may not delete or rename files of other users in that
	directory even if he has write access to the directory.

	The Unix "ls" command displays a set sticky bit as a "t" in
	the permissions of a file or directory.

	(26 Feb 1997)

stiffy

	<storage, jargon> ({University of Lowell}, Massachusetts) A
	3.5-inch {microfloppy}, so called because their jackets are
	more rigid than those of the 5.25-inch and the (obsolete)
	8-inch {floppy disk}.  Elsewhere this might be called a
	"firmy".

	(03 Nov 1994)

STIL

	STatistical Interpretive Language.

	["STIL User's Manual", C.F.  Donaghey et al, Indust Eng Dept,
	U Houston (Aug 1969)].

STING

	A parallel dialect of {Scheme} intended to serve as a
	high-level {operating system} for symbolic programming
	languages.  {First-class} {thread}s and processors and
	customisable {scheduling} policies.

	E-mail: <suresh@research.nj.dec.com>.

	["A Customizable Substrate for Concurrent Languages",
	S. Jagannathan et al, ACM SIGPLAN Notices, 1992].

	(03 Nov 1994)

STk

	A {Scheme} {interpreter} blended with Ousterhout's {Tk}
	package by Erick Gallesio <eg@unice.fr>.  STk expresses all of
	Tk as Scheme objects.  STk includes a slow {CLOS}/{Dylan}-like
	{object-oriented} extension.

	Version 1.00 almost conforms to {R4RS} and runs on {SunOS}
	4.1.x and {Ultrix}/{MIPS}.

	{(ftp://kaolin.unice.fr/pub/STk-1.00.tar.gz)}.
	{(ftp://ftp.cs.indiana.edu/pub/scheme-repository/imp/STk-2.1.tar.Z)}.

	(06 Sep 1993)

STMP

	Did you mean {SMTP}?

stochastic

	{probabilistic}

STOIC

	STring Oriented Interactive Compiler.

	Smithsonian Astrophysical Observatory.  Similar to FORTH for
	strings, includes many VAX-specific items.

stomp on

	To inadvertently overwrite something important, usually
	automatically.  "All the work I did this weekend got stomped
	on last night by the nightly server script."  Compare
	{scribble}, {mangle}, {trash}, {scrog}, {roach}.

STONE

	A Structured and Open Environment: a project supported by the
	German Ministry of Research and Technology (BMFT) to design,
	implement and distribute a SEE for research and teaching.

Stone Age

	1. In computer folklore, an ill-defined period from {ENIAC}
	(ca. 1943) to the mid-1950s; the great age of
	electromechanical {dinosaurs}.  Sometimes used for the entire
	period up to 1960--61 (see {Iron Age}); however, it is funnier
	and more descriptive to characterise the latter period in
	terms of a "Bronze Age" era of {transistor}-logic,
	pre-{ferrite core memory} machines with {drum} or {CRT} mass
	storage (as opposed to just {mercury delay lines} and/or
	relays).

	2. More generally, a pejorative for any crufty, ancient piece
	of hardware or software technology.  Note that this is used
	even by survivors from the {Stone Age}.

	(24 Jan 1995)

stone knives and bearskins

	(From the Star Trek Classic episode "The City on the Edge of
	Forever") A term traditionally used to describe (and
	deprecate) computing environments that are grotesquely
	primitive in light of what is known about good ways to design
	things.  As in "Don't get too used to the facilities here.
	Once you leave SAIL it's stone knives and bearskins as far as
	the eye can see".

	Compare {steam-powered}.

	(24 Jan 1995)

Stoneman

	The requirements, written by the {HOLWG} of the US {DoD} in
	Feb 1980, that led to APSE.

	["Requirements for Ada Programming Support Environments:
	STONEMAN", US Dept of Defense, Feb 1980].

	(24 Jan 1995)

stop bit

	In serial communications, where each bit of the message is
	transmitted in sequence, stop bits are extra "1" bits which
	follow the data and any {parity} bit.  They mark the end of a
	unit of transmission (normally a byte or character).

	For example, characters on an {RS-232} {serial line} may have
	one or two stop bits added.  Some {UART}s even allow for 1.5
	stop bits but one is probably the most commonly used.  A
	serial connection may be described as, for example, "8N1"
	which means eight data bits, no {parity} and one stop bit.

	(24 Jan 1995)

stoppage

	/sto'p*j/ Extreme {lossage} that renders something (usually
	something vital) completely unusable.  "The recent system
	stoppage was caused by a {fried} transformer."

	(24 Jan 1995)

storage

	<storage> (Or "memory") A device into which data can be
	entered, in which they can be held, and from which they can be
	retrieved at a later time.

	(24 Dec 1995)

Storage Management Services

	<storage> (SMS) Software that enables network administrators
	to route {backup} data from various devices on a network to
	another device such as a server or a {magnetic tape} backup
	unit.  This is done either to make use of a high-capacity
	storage system such as a tape {juke-box} or for disaster
	protection.

	(18 Feb 1996)

store

	[probably from "main store"] In some varieties of Commonwealth
	hackish, the preferred synonym for {core}.  Thus, "bringing a
	program into store" means not that one is returning
	shrink-wrapped software but that a program is being {swap}ped
	in.

store-and-forward

	A kind of {message passing} system where a complete message is
	received before it is passed on to the next node.  This means
	that each message is using at most one interprocessor link at
	any time but may require more storage buffers on intermediate
	nodes than the alternative, {wormhole routing}.

	(16 Feb 1995)

Story of Mel

	{The story of Mel}

StP

	{Software through Pictures}

STP4

	A statistical language.

Strand

	1. {AND-parallel} {logic programming} language.  Essentially
	flat {Parlog83} with sequential-and and sequential-or
	eliminated.

	["Strand: New Concepts on Parallel Programming", Ian Foster et
	al, P-H 1990].  {Strand88} is a commercial implementation.

	2. A query language, implemented on top of {INGRES} (an
	{RDBMS}).  ["Modelling Summary Data", R. Johnson, Proc ACM
	SIGMOD Conf 1981].

Strand88

	A commercial implementation of {Strand} from Strand Software
	Technologies Ltd., UK and Strand Software, Beaverton, OR, USA.
	E-mail: <strand88@sstl.uucp>.

Strategic Air Ground Environment

	<project> (SAGE) The computer systerm of the old US Norad air
	defence system.  SAGE was one of the first very large software
	projects, and only occasionally scrambled the US and Canadian
	Air Forces to track down a radar reflection off the Moon.

	The main contractor was {Mitre Corporation}(?), despite the
	fact that the DEW line was {Rand}'s responsibility.

	[Confirm?  More?]

	(28 Nov 1995)

Stratus

	<company> A computer manufacturer, one of the the world's
	leading providers of {fault-tolerant} systems and solutions,
	concentrating on four major vertical markets: financial
	services, telecommunications, travel and transportation, and
	gaming.  While virtually all of Stratus' core hardware and
	software products are sold into these markets, a broad range
	of specialised solutions, both at the {middleware} and
	{application} solutions levels, are developed and marketed by
	Stratus, its subsidiaries and third party partners.

	Yearly sales $609M, profits $43.5M (1996).

	{Home (http://www.stratus,com)}.

	(24 Apr 1997)

Strawman

	The first of the series of {DoD} requirements that led to
	{Ada} ({Woodenman}, {Tinman}, {Ironman}, {Steelman}).
	Strawman was produced by the {HOLWG} in Apr 1975.

	(30 Jan 1995)

STREAM

	["STREAM: A Scheme Language for Formally Describing Digital
	Circuits", C.D. Kloos in PARLE: Parallel Architectures and
	Languages Europe, LNCS 259, Springer 1987].

	(30 Jan 1995)

stream

	1. <communications> An {abstraction} referring to any flow of
	data from a source (or sender, producer) to a single sink (or
	receiver, consumer).  A stream usually flows through a channel
	of some kind, as opposed to {packet}s which may be addressed
	and routed independently, possibly to multiple recipients.
	Streams usually require some mechanism for establishing a
	channel or a "{connection}" between the sender and receiver.

	2. <programming> In the {C} language's buffered input/ouput
	library functions, a stream is associated with a file or
	device which has been opened using {fopen}.  Characters may be
	read from (written to) a stream without knowing their actual
	source (destination) and buffering is provided transparently
	by the library routines.

	3. <operating system> Confusingly, {Sun} have called their
	modular {device driver} mechanism "{STREAMS}".

	4. <operating system> In {IBM}'s {AIX} {operating system}, a
	stream is a {full-duplex} processing and data transfer path
	between a driver in {kernel space} and a process in {user
	space}.

	[IBM AIX 3.2 Communication Programming Concepts,
	SC23-2206-03].

	5. <communications> {streaming}.

	6. <programming> {lazy list}.

	(06 Nov 1996)

streaming

	<communications> Playing {sound} or {video} in {real time} as
	it is downloaded over the {Internet} as opposed to storing it
	in a local file first.  A {plug-in} to a {web browser} such as
	{Netscape Navigator} decompresses and plays the data as it is
	transferred to your computer over the {World-Wide Web}.
	Streaming audio or video avoids the delay entailed in
	downloading an entire file and then playing it with a {helper
	application}.  Streaming requires a fast connection and a
	computer powerful enough to execute the decompression
	{algorithm} in {real time}.

	(06 Nov 1996)

stream-oriented

	{connection-oriented}

STREAMS

	<operating system> A collection of {system call}s, {kernel}
	resources, and kernel utility routines that can create, use,
	and dismantle a {stream}.  A "stream head" provides the
	interface between the stream and the user processes.  Its
	principal function is to process STREAMS-related user {system
	call}s.  A "stream module" processes data that travel bewteen
	the stream head and driver.  The "stream end" provides the
	services of an external input/output device or an internal
	software driver.  The internal software driver is commonly
	called a {pseudo-device} driver.

	The STREAMS concept has been formalised in {Unix} {System V}.

	[IBM AIX 3.2 Communication Programming Concepts, SC23-2206-03].

	(30 Jan 1995)

strength reduction

	An optimisation where a function of some systematically
	changing variable is calculated more efficiently by using
	previous values of the function.  In a {procedural language}
	this would apply to an expression involving a loop variable
	and in a {declarative language} it would apply to the argument
	of a {recursive} function.  E.g.

		f x = ... (2**x) ... (f (x+1)) ...

			==>

		f x = f' x (2**x)
		      where
		      f ' x z = ... z ... (f' (x+1) 2*z) ...

	Here the expensive operation (2**x) has been replaced by the
	cheaper 2*z in the recursive function f'.  This maintains the
	invariant that z = 2**x for any call to f'.

	(31 Jan 1995)

STRESS

	STRuctual Engineering Systems Solver.

	A system for structural analysis problems in Civil
	Engineering.  STRESS was superceded by {STRUDL}.

	["STRESS: A User's Manual", S.J. Fenves et al, MIT Press
	1964].

	[Sammet 1969, p. 612].

	(31 Jan 1995)

strict

	A function f is strict in an argument if

		f bottom = bottom

	(See {bottom}).  In other words, the result depends on the
	argument so evaluation of an application of the function
	cannot terminate until evaluation of the argument has
	terminated.

	If the result is only {bottom} when the argument is bottom
	then the function is also {bottom-unique}.

	See also {strict evaluation}, {hyperstrict}.

	(25 Jan 1995)

strict evaluation

	{Call-by-value} evaluation order is sometimes called "strict
	evaluation" because, in a sequential system, it makes
	functions behave as though they were {strict}, in the sense
	that evaluation of a function application cannot terminate
	before evaluation of the argument.  Similarly, languages are
	called strict if they use {call-by-value} argument passing.

	Compare {eager evaluation}, {lazy evaluation}.

	(21 Dec 1994)

strided

	/str:'d*d/ (scientific computing) Said of a sequence of memory
	reads and writes to addresses, each of which is separated from
	the last by a constant interval called "the stride length", or
	just "the stride".  These can be a worst-case access pattern
	for {cache} schemes when the stride length is a multiple of
	the {cache line} size.

	Strided references are often generated by loops through an
	{array}, and (if the data is large enough that access-time is
	significant) it can be worthwhile to tune for better locality
	by inverting double loops or by partially unrolling the outer
	loop of a loop nest.

	(21 Dec 1994)

string

	<programming> An ordered series of {data} values, usually
	{bytes}, which often denote {printable characters}.  Recently
	(1997) there has been increased interest in larger {character
	sets} such as {Unicode} where each character is represented by
	more than eight {bits}.

	Most programming languages consider strings (e.g.,
	"124:shabooya:\n", "hello world") basically distinct from
	numeric values (e.g., 5, -10.23, 72509562934).

	(16 Mar 1997)

String Oriented Symbolic Language

	<language> (SNOBOL) A string processing language for text and
	formula manipulation written by David Farber, Ralph Griswold,
	and I. Polonsky of {Bell Labs} in 1962-3.

	SNOBOL had only simple {control structures} but provided a
	rich string-matching formalism of power comparable to {regular
	expressions} but implementated differently.  People used it
	for simple {natural language processing} analysis tasks well
	into the 1980s.  Since then, {Perl} has come into favour for
	such tasks.

	In spite of the suggestive name, SNOBOL is not related to
	{COBOL}.

	Implementations include (in no particular order): {SNOBOL2},
	{SNOBOL3}, {SNOBOL4}, {FASBOL}, {SITBOL}, {MAINBOL},
	{SPITBOL}, and {vanilla}.

	See also {EZ}, {Poplar}, {SIL}, {SEXI} and {Icon}.

	["SNOBOL, A String Manipulating Language", R. Griswold et al,
	J ACM 11(1):21, Jan 1964].

	(14 Sep 1997)

String PRocessING language

	<language> (SPRING)

	["From SPRING to SUMMER: Design, Definition and Implementation
	of Programming Languages for String Manipulation and Pattern
	Matching", Paul Klint, Math Centre, Amsterdam 1982].

	(06 Feb 1996)

string reduction

	A {reduction system} where an expression is represented as a
	string of function names, constants and parentheses.  It is
	reduced by replacing parts of the string representing subterms
	by their value.

	It is harder to represent sharing of subexpressions in string
	reduction than in {graph reduction}.

	(06 Feb 1995)

stripe

	{data striping}

stripe set

	{data striping}

striping

	{data striping}

STROBES

	{Shared Time Repair of Big Electronic Systems}

stroke

	The oblique stroke character, "/", ASCII 47.

	See {ASCII} for other synonyms.

StrongARM

	<processor> A collaborative project between {Digital Equipment
	Corporation} and {Advanced RISC Machines} Ltd. (ARM) announced
	on 06 Feb 1995 licensing the {ARM} {RISC} architecture to
	{Digital Semiconductor} for the development of
	high-performance, low power {microprocessor}s.

	The StrongARM family of 32-bit RISC products to be developed
	under the agreement is intended to complement and broaden the
	existing ARM product line for performance critical
	applications such as next-generation {personal digital
	assistant}s (PDAs) with improved user interfaces and
	communications; {interactive television} and set-top products;
	video games and {multimedia} {edutainment} systems with
	realistic imaging, motion and sound; and digital imaging,
	including low cost digital image capture and photo-quality
	scanning and printing.

	The StrongARM family will offer full software compatibility
	with the {ARM6}, {ARM7} and {ARM8} families, which will help
	accelerate market acceptance of the new products.

	The {SA-110} is the first member of the family.

	(06 Feb 1996)

strongly connected component

	(SCC) A subset, S, of the nodes of a {directed graph} such
	that any node in S is reachable from any other node in S and S
	is not a subset of any larger such set.  SCCs are {equivalence
	class}es under the {transitive closure} of the "directly
	connected to" {relation}.

	(06 Feb 1995)

Stroustrup, Bjarne

	{Bjarne Stroustrup}

struct

	A data type in {C} and {C++} corresponding to a {record} in
	{Ada} or {Pascal} or a {tuple} in {functional programming}.  A
	struct has one or more members, each of which may have
	different types.  It is used to group associated data
	together.

	(14 Feb 1995)

structural recursion

	The process of transforming an expression by expressing its
	structure as a syntax tree and applying a certain
	transformation rule to each kind of node, starting from the
	top.  Rules for non-{leaf node}s will normally return a result
	which depends on applying the rules recursively to its
	sub-nodes.  Examples include {syntax} analysis, {code
	generation}, {abstract interpretation} and {program
	transformation}.

	(11 Jan 1995)

structured analysis

	One of a number of requirements analysis methods used in
	software engineering.

structured design

	<programming> (SD) One of a number of systematic {top-down
	design} techniques used in {software engineering}, usually
	after {structured analysis}.

	(28 Apr 1995)

structured language

	<programming> A programming language where the program may be
	broken down into blocks or {procedure}s which can be written
	without detailed knowledge of the inner workings of other
	blocks, thus allowing a {top-down design} approach.

	See also {abstract data type}, {module}.

	(28 Apr 1995)

structured programming

	<programming> Any software development technique that includes
	{structured design} and results in the development of a
	{structured program}.

	(06 Apr 1995)

Structured Query Language

	<language, database, standard> /see'qu*l/ (SQL) A language
	which provides a user interface to {relational database
	management system}s, developed by {IBM} in the 1970s for use
	in {System R}.  SQL is the {de facto standard}, as well as
	being an {ISO} and {ANSI} {standard}.  It is often embedded in
	other programming languages.

	The first SQL standard, in 1986, provided basic language
	constructs for defining and manipulating {table}s of data; a
	revision in 1989 added language extensions for {referential
	integrity} and {generalised integrity constraint}s.  Another
	revision in 1992 provided facilities for {schema} manipulation
	and {data administration}, as well as substantial enhancements
	for data definition and data manipulation.

	Development is currently underway to enhance SQL into a
	computationally complete language for the definition and
	management of {persistent}, complex objects.  This includes:
	generalisation and specialisation hierarchies, {multiple
	inheritance}, user defined data types, {trigger}s and
	{assertion}s, support for {knowledge based system}s,
	{recursive query expression}s, and additional data
	administration tools.  It also includes the specification of
	{abstract data type}s (ADTs), object identifiers, {method}s,
	{inheritance}, {polymorphism}, {encapsulation}, and all of the
	other facilities normally associated with object data
	management.

	The emerging {SQL3} standard is expected to be complete in
	1998.

	{SQL Standards (http://www.jcc.com/sql_stnd.html)}

	{An SQL parser
	(ftp://ftp.uu.net/published/oreilly/nutshell/lexyacc/)} is
	described in "Lex & Yacc", by Levine, Mason & Brown published
	by O'Reilly.

	{The 1995 SQL Reunion: People, Projects, and Politics
	(http://www.research.digital.com/SRC/personal/Paul_McJones/System_R/SQL_Reunion_95/index.html)}.

	["A Guide to the SQL Standard," C.J. Date, A-W 1987].

	(11 Mar 1996)

Structure of Management Information

	(SMI) The rules used to define the objects that can be
	accessed via a {network management protocol}.  This {protocol}
	is defined in {STD} 16, {RFC} 1155.

	See also {Management Information Base}.

	(14 Nov 1994)

strudel

	<character> Common (spoken) name for the commercial at sign,
	"@", {ASCII} 64.

	(13 Mar 1995)

STRUDL

	STRUctured Design Language.

	Dynamic and {finite-element analysis}, steel and concrete
	structures.  Subsystem of {ICES}.  ["ICES STRUDL-II
	Engineering User's Manual", R68-91, CE Dept MIT (Nov 1968)
	Sammet 1969, p.613].

STSC APL

	Implementation of APL by Scientific {Time-Sharing} Corporation

stub

	1. <programming> A dummy procedure used when linking a program
	with a {run-time library}.  The stub routine need not contain
	any code and is only present to prevent "undefined label"
	errors at link time.

	2. <programming, networking> A local procedure in a {remote
	procedure call}.  The {client} calls the stub to perform some
	task and need not necessarily be aware that RPC is involved.
	The stub transmits parameters over the network to the {server}
	and returns the results to the caller.

	(09 Nov 1995)

stub network

	A {network} which only carries {packet}s to and from local
	{host}s.  Even if it has paths to more than one other network,
	it does not carry traffic for other networks.  See also
	{backbone}, {transit network}.

stubroutine

	/stuhb'roo-teen/ [contraction of "stub subroutine"] Tiny,
	often vacuous placeholder for a {subroutine} that is to be
	written or fleshed out later.

STUDENT

	D.G. Bobrow 1964.  Early query system.  Sammet 1969, p.664.

Student PL/I

	<language> A translator-{interpreter} for a {PL/I} subset
	derived from {SPL}.

	["Student PL/I Compiler", R.A. Vowels, RMIT, Melbourne, 1971].

	(19 Jan 1996)

studly

	Impressive; powerful.  Said of code and designs which exhibit
	both complexity and a virtuoso flair.  Has connotations
	similar to {hairy} but is more positive in tone.  Often in the
	emphatic "most studly" or as noun-form "studliness".  "Smail
	3.0's configuration parser is most studly."

studlycaps

	<jargon> /stuhd'lee-kaps/ A hackish form of silliness similar
	to {BiCapitalisation} for trademarks, but applied randomly and
	to arbitrary text rather than to trademarks.  ThE oRigiN and
	SigNificaNce of thIs pRacTicE iS oBscuRe.

	(01 Mar 1995)

Stuffit

	<tool, file format> (filename extension: .sit) A file
	archiving and {compression} utility for the {Macintosh},
	developed by {Aladdin Systems, Inc.}  Stuffit can compress
	multiple files into a single, file, like {PKZIP} on the {IBM
	PC}.  Stuffit archives can be extracted with Stuffit Expander.

	(03 Nov 1996)

Stupids

	Term used by {samurai} for the {suit}s who employ them.
	Succinctly expresses an attitude at least as common, though
	usually better disguised, among other subcultures of hackers.
	There may be intended reference here to an SF story originally
	published in 1952 but much anthologised since, Mark Clifton's
	"Star, Bright".  In it, a super-genius child classifies humans
	into a very few "Brights" like herself, a huge majority of
	"Stupids", and a minority of "Tweens", the merely ordinary
	geniuses.

stupid-sort

	Synonym {bogo-sort}.

Sturgeon's Law

	"Ninety percent of everything is crap".  Derived from a quote
	by science fiction author Theodore Sturgeon, who once said,
	"Sure, 90% of science fiction is crud.  That's because 90% of
	everything is crud."  Oddly, when Sturgeon's Law is cited, the
	final word is almost invariably changed to "crap".  Compare
	{Ninety-Ninety Rule}.  Though this maxim originated in SF
	fandom, most hackers recognise it and are all too aware of its
	truth.

STX

	{Start Of Text}

su

	<operating system, tool, security> (substitute user) The
	{Unix} command which allows you to become another user after
	entering their {password}.  su is most often used without
	arguments in which case it defaults to user {root}.  Some
	versions of Unix only allows this command to be used by
	members of the {wheel} group.

	{Unix manual page}: su(1).

	(08 Sep 1996)

SUB

	{Substitute}

subband encoding

	An audio {compression} technique where the sound is split into
	frequency bands and then parts of the signal which the ear
	cannot detect are removed, e.g. a quiet sound masked by a loud
	one.  The remaining signal is encoded using variable bit-rates
	with more bits per sample being used in the mid frequency
	range.

	Subband encoding is used in {MPEG-1}.

	(02 Nov 1994)

subclass

	<programming> In {object-oriented} programming, a {class} that
	is derived from a {superclass} by {inheritance}.  The subclass
	contains all the features of the superclass, but may have new
	features added or redefine existing features.

	(07 Mar 1996)

subject index

	<library> An information resource that contains references to
	other resources, categorised by subject, usually in a
	{hierarchy}.

	{Yahoo} is the most popular {Internet} subject index.  Like
	most {other subject indices
	(http://www.yahoo.com/Computers_and_Internet/Internet/World_Wide_Web/Searching_the_Web/Web_Directories/)},
	Yahoo is arranged {ontologically}.

	Subject indices are not to be confused with {search engines},
	which are based not on subject, but instead on {relevance},
	although (1) this difference is often (possibly rightly)
	hidden from the unsophisticated user, and (2) future
	integration of {knowledge representation} into relevance
	ranking {algorithms} will make this a hazy distinction.

	(09 Apr 1997)

sublanguage

	One of the languages associated with a {DBMS}, for example a
	{data-definition language} or {query language}.

subnet

	A portion of a {network}, which may be a physically
	independent network segment, which shares a {network address}
	with other portions of the network and is distinguished by a
	subnet number.  A subnet is to a network what a network is to
	an {internet}.

subnet address

	The {subnet} portion of an {IP address}.  In a subnetted
	{network}, the {host} portion of an IP address is split into a
	subnet portion and a host portion using an {address mask} (the
	subnet mask).

subnet mask

	{address mask}

subnet number

	{subnet address}

subroutine

	<programming> (Or "procedure") A sequence of {instructions}
	for performing a particular task.  Most programming languages,
	including most {machine languages}, allow the programmer to
	define subroutines.  This allows the subroutine code to be
	called from multiple places, even from within itself (in which
	case it is called {recursive}).  The programming language
	implementation takes care of returning control to (just after)
	the calling location, usually with the support of call and
	return instructions at {machine language} level.

	Most languages also allow {arguments} to be passed to the
	subroutine, and one, or occasionally more, {return values} to
	be passed back.

	A {function} is often very similar to a subroutine, the main
	difference being that it is called chiefly for its return
	value, rather than for any {side effects}.

	(01 Oct 1996)

subscribe

	<messaging> To request to receive messages posted to a
	{mailing list} or {newsgroup}.  In contrast to the mundane use
	of the word this is often free of charge.

	(27 Mar 1997)

subscribing

	{subscribe}

\subseteq

	Like a U on its right side with a line under it.  For sets x
	and y, x \subseteq y if all elements of x are also elements of
	y.

	(03 Feb 1995)

Subset-Equational Language

	(SEL) A {declarative} language for set processing by Bharat
	Jayaraman with subset and equational program clauses; {pattern
	matching} over sets (it supports efficient iteration over
	sets); annotations to say which functions distribute over
	union in which arguments (for point-wise/incremental
	computation over sets); defining {transitive closure}s through
	circular constraints (implemented by mixed
	top-down/{memoisation} and bottom-up strategy);
	{meta-programming} and simple {higher-order} programming;
	modest user-interface including tracing.

	The SEL {compiler}, written in {Quintus Prolog}, generates
	{WAM}-like code, extended to deal with set-matching,
	{memoisation}, and the novel control structure of the
	language.  The {run-time system} is written in {C}.

	{(ftp://ftp.cs.buffalo.edu/users/bharat/SEL2)}

	E-mail: Bharat Jayaraman <bharat@cs.buffalo.edu>.

	["Towards a Broader Basis for Logic Programming",
	B. Jayaraman, TR CS Dept, SUNY Buffalo, 1990].

	["Set Abstraction in Functional and Logic Programming",
	F.S.K. Silbermann <fs@cs.tulane.edu> et al, ACM Proc 1989].

	(15 Dec 1994)

Substitute

	<character> (SUB) {ASCII} character 26.

	[Why?]

	(28 Jun 1996)

substrate

	<hardware> The body or base layer of an {integrated circuit},
	onto which other layers are deposited to form the circuit.
	The substrate is usually Silicon, though Sapphire is used for
	certain applications, particularly military, where radiation
	resistance is important.  The substrate is originally part of
	the {wafer} from which the {die} is cut.  It is used as the
	electrical {ground} for the circuit.

	(07 Apr 1996)

subtype

	<programming> If S is a subtype of T then an expression of
	{type} S may be used anywhere that one of type T can and an
	{implicit type conversion} will be applied to convert it to
	type T.

	In {object oriented programming}, this means that {objects} of
	type S must accept every {message} that one of type T would.

	(28 Jul 1997)

subtyping

	{subtype}

SuccessoR

	A language for {distributed computing} derived from {SR}.

	["SuccessoR: Refinements to SR", R.A. Olsson et al, TR 84-3, U
	Arizona 1984].

	(15 Dec 1994)

sucking mud

	(Or "pumping mud") (Applied Data Research) Crashed or
	{wedged}.  Usually said of a machine that provides some
	service to a network, such as a {file server}.  This Dallas
	regionalism derives from the East Texas oilfield lament, "Shut
	'er down, Ma, she's a-suckin' mud".  Often used as a query.
	"We are going to reconfigure the network, are you ready to
	suck mud?"

	(15 Dec 1994)

Sue

	The system language used to write an {operating system} for
	the {IBM 360}.  It is a cross between {Pascal} and {XPL}.  It
	allows type checked {separate compilation} of internal
	procedures using a program library.

	["The System Language for Project Sue", B.L. Clark e al,
	SIGPLAN Notices 6(9):79-88 (Oct 1971)].

	(01 Dec 1994)

sufficiently small

	{suitably small}

SUGAR

	A simple {lazy functional language} designed at {Westfield
	College}, University of London, UK and used in Principles of
	Functional Programming, Hugh Glaser et al, P-H 1984.

	(01 Dec 1994)

suicideware

	<jargon> A program which entirely stops functioning after a
	predefined date.  Used to ensure that {beta versions} don't
	remain in circulation indefinitely or in {demo versions} to
	ensure that they can only be used to try out the program.

	(26 May 1997)

SUIF

	Stanford University Intermediate Format.

	A register-oriented intermediate language.

	(01 Dec 1994)

suit

	1. Ugly and uncomfortable "business clothing" often worn by
	non-hackers.  Invariably worn with a "tie", a strangulation
	device that partially cuts off the blood supply to the brain.
	It is thought that this explains much about the behaviour of
	suit-wearers.

	2. A person who habitually wears suits, as distinct from a
	techie or hacker.

	See {loser}, {burble}, {management}, {Stupids}, {SNAFU
	principle}, and {brain-damaged}.

	English, by the way, is relatively kind; our Moscow
	correspondent informs us that the corresponding idiom in
	Russian hacker jargon is "sovok", lit. a tool for grabbing
	garbage.

	(01 Dec 1994)

suitably small

	<jargon, mathematics> (From mathematical jargon) An expression
	used ironically to characterise unquantifiable behaviour that
	differs from expected or required behaviour.  For example,
	suppose a newly created program came up with a correct
	full-screen display, and one publicly exclaimed: "It works!"
	Then, if the program dumped {core} on the first mouse click,
	one might add: "Well, for suitably small values of `works'."

	Compare the characterisation of pi under {for values of}.

	(21 Sep 1997)

Suite Synthetique des Benchmarks de l'AFUU

	<benchmark> (SSBA, AFUU Synthetic Benchmark Suite) A {public
	domain} {benchmark} suite produced by the {AFUU}.

	Version: 2.3 (14 Jul 1995).

	(11 Jun 1996)

sum

	1. <theory> In {domain theory}, the sum A + B of two {domain}s
	contains all elements of both domains, modified to indicate
	which part of the union they come from, plus a new {bottom}
	element.  There are two constructor functions associated with
	the sum:

		inA : A -> A+B       inB : B -> A+B
		inA(a) = (0,a)	     inB(b) = (1,b)

	and a disassembly operation:

		case d of {isA(x) -> E1; isB(x) -> E2}

	This can be generalised to arbitrary numbers of domains.

	See also {smash sum}, {disjoint union}.

	2. <tool> A {Unix} utility to calculate a 16-bit {checksum} of
	the data in a file.  It also displays the size of the file,
	either in {kilobyte}s or in 512-byte blocks.  The checksum may
	differ on machines with 16-bit and 32-bit ints.

	{Unix manual page}: sum(1).

	(16 Mar 1995)

Summary Object Interchange Format

	<World-Wide Web, protocol> (SOIF) The attribute-value pair
	record format which {Harvest Brokers} use to exchange
	{Harvest} content summaries.

	SOIF provides a means of bracketing collections of summary
	objects, allowing {Harvest Brokers} to retrieve SOIF content
	summaries for many objects in a single, efficient compressed
	stream.  Harvest Brokers provide support for querying SOIF
	data using structured attribute-value queries and many other
	types of queries.

	{(http://www.ust.hk/Harvest/brokers/soifhelp.html)}

	(16 Sep 1996)

SUMMER

	String manipulation and pattern matching language by Klint &
	Sint at {CWI} in the late 1970s.  It was recently used as the
	input and implementation language for the {Dataflow Compiler
	Project} at {CWI}.

	["An Overview of the SUMMER Programming Language", Paul Klint,
	7th POPL, ACM 1980, pp. 47-55].

SUMMER SESSION

	An early system on {MIT}'s {Whirlwind}.

	[Listed in CACM 2(5):16 (May 1959)].

	(19 Jan 1995)

sum of products type

	{algebraic data type}

Sun

	{Sun Microsystems}

sun lounge

	<jargon> (Great Britain) The room where all the {Sun}
	{workstation}s live.  The humour in this term comes from the
	fact that it's also in mainstream use to describe a solarium,
	and all those Sun workstations clustered together give off an
	amazing amount of heat.

	(19 Jan 1995)

Sun Microsystems, Inc.

	<company> One of the first, and now biggest, US computer
	manufacturers.  They also manufacture in Europe.  The Sun 2
	and 3 series of {workstation}s and {server}s were based on the
	{Motorola} {680x0} family of {microprocessor}s and the Sun 4
	series on the {SPARC}.  Sun also produce their own version of
	{Unix}, originally called {SunOS} and now {Solaris}.  Their
	{Network File System} has become the {de facto standard} for
	sharing files between Unix systems.

	Quarterly sales $1403M, profits $78M (Aug 1994).

	{Home (http://www.sun.com/)}.  {Sun World Online
	(http://www.sun.com/sunworldonline/)}.

	Address: 2550 Garcia Ave., Mt. View, CA 94043 -1100 USA.

	(14 Oct 1995)

SunOS

	{Sun}'s version of {Unix} for {Sun} {workstation}s.  It is a
	combination of {BSD Unix} and {System V}.  It has been
	replaced by {Solaris}.

	(19 Jan 1995)

sunspots

	1. Notional cause of an odd error.  "Why did the program
	suddenly turn the screen blue?"  "Sunspots, I guess."

	2. Also the cause of {bit rot} - from the myth that sunspots
	will increase {cosmic rays}, which can flip single bits in
	memory.  See also {phase of the moon}.

sun-stools

	Unflattering hackerism for {SunTools}, a pre-{X} windowing
	environment notorious in its day for size, slowness, and
	misfeatures.  {X}, however, is larger and slower; see
	{second-system effect}.

SunView

	A windowing system from {Sun Microsystems}, superseded by
	{NeWS}.

SUNY

	{State University of New York}

SUPER

	The successor to {LOGLISP}, based on {LNF}.

	["New Generation Knowledge Processing: Final Report on the
	SUPER System", J Alan Robinson et al, CASE Center TR 8707,
	Syracuse U, 1987].

	(24 Nov 1994)

superclass

	{base class}

supercombinators

	{Combinators} with coarser granularity than those proposed by
	{David Turner}.  A {functional program} is translated to a set
	of functions without {free variable}s.  The members of the set
	are selected to be optimal for that program.  Supercombinators
	were proposed by John Hughes at {University of Edinburgh}.

supercompilation

	A function program transformation technique invented by
	Turchin.  A program is evaluated symbolically in order to
	observe the possible history of computation states called
	configurations.  Based on this Turchin's REFAL compiler would
	try to construct a better program.

supercomputer

	<computer> A broad term for one of the fastest computers
	currently available.  Such computers are typically used for
	{number crunching} including scientific {simulations},
	(animated) {graphics}, analysis of geological data (e.g. in
	petrochemical prospecting), structural analysis, computational
	fluid dynamics, physics, chemistry, electronic design, nuclear
	energy research and meteorology.  Perhaps the best known
	supercomputer manufacturer is {Cray Research}.

	A less serious definition, reported from about 1990 at The
	{University Of New South Wales} states that a supercomputer is
	any computer that can outperform {IBM}'s current fastest, thus
	making it impossible for IBM to ever produce a supercomputer.

	(13 Dec 1996)

superhighway

	{information superhighway}

SuperJanet

	An initiative started in 1989, under the Computer Board, with
	the aim of developing of a national {broadband} network to
	support UK higher education and research.  The preparatory
	work culminated in 1992 with the award of a contract worth 18M
	pounds to British Telecom to provide networking services over
	a four year period that extends to March 1997.

	The BT contract will provide a national network with two
	components: a high speed, configurable bandwidth network
	serving up to 16 sites, initially using {PDH} to be replaced
	with {SDH}, and a high speed switched data service ({SMDS})
	serving 50 or more sites.  The primary role of the PDH/SDH
	component will be to support the development and deployment of
	an {ATM} network.  These components will be complemented by
	several high performance {Metropolitan Area Network}s each
	serving several closely located sites.  The aim is to provide,
	within the first year of the project, a pervasive network
	capable of supporting a large and diverse user community.

	The network has two parts, an {IP} data network and an ATM
	network, both operating at 34Mbit/s.  Early in August 1993 the
	pilot IP network was transferred to full service and was
	configured to provide a trunk network for JIPS, the {JANET IP
	Service}.

	In November 1993 work was well advanced on the next phase
	which aims to extend SuperJANET to a large number of sites.
	The pilot four site ATM network will be extended to serve
	twelve sites and will expand the scope of the video network.
	The principal vehicle used for the expansion of the data
	network will be the {SMDS} service provided by {BT}.  Most of
	the work associated with the development of this phase is
	expected to be completed by the end of March 1994.

	[Joint Network Team, Network News 40, ISSN 0954 - 0636].

	{(ftp://osiris.jnt.ac.uk/pub/newsfiles/documents/netwnews/news40+/news40.para)}

	[Current status?]

	(15 Dec 1994)

SUPERMAC

	A general-purpose {macro} language, embeddable in existing
	languages as a run-time library.

	["SUPERMAC - A Macro Facility That can be Added to Existing
	Compilers", P.J. Brown, Soft Prac & Exp 10(6):431-434].

	(15 Dec 1994)

Super Pascal

	A {Pascal} variant used in ["Data Structures and Algorithms",
	A.  Aho, Hopcroft & Ullman, A-W 1983].  It adds non-numeric
	labels, a return statement and expressions as names of types.

	(15 Dec 1994)

superpipelined

	1. Traditional {pipelined} architectures have a single
	pipeline stage for each of: instruction fetch, instruction
	decode, memory read, {ALU} operation and memory write.  A
	superpipelined {processor} has a {pipeline} where each of
	these logical steps may be subdivided into multiple {pipeline}
	stages.

	2. Marketese for {pipelined}.

superprogrammer

	A prolific programmer; one who can code exceedingly well and
	quickly.  Not all hackers are superprogrammers, but many are.
	Productivity can vary from one programmer to another by three
	orders of magnitude.  For example, one programmer might be
	able to write an average of three lines of working code in one
	day, while another, with the proper tools, might be able to
	write 3,000.  This range is astonishing; it is matched in very
	few other areas of human endeavour.

	The term "superprogrammer" is more commonly used within such
	places as IBM than in the hacker community.  It tends to
	stress naive measures of productivity and to underweight
	creativity, ingenuity, and getting the job *done* - and to
	sidestep the question of whether the 3,000 lines of code do
	more or less useful work than three lines that do the {Right
	Thing}.  Hackers tend to prefer the terms {hacker} and
	{wizard}.

superscalar

	<architecture> A superscalar architecture is a {uniprocessor}
	that can execute two or more {scalar} operations in parallel.
	Some definitions include {superpipelined} and {VLIW}
	architectures; others do not.  Superscalar architectures
	(apart from superpipelined architectures) require multiple
	{functional unit}s, which may or may not be identical to each
	other.  In some superscalar processors the order of
	instruction execution is determined statically (purely at
	compile-time), in others it is determined dynamically (partly
	at run-time).

super source quench

	A special packet designed to shut up an {Internet} host.  The
	{Internet Protocol} (IP) has a control message called Source
	Quench that asks a host to transmit more slowly on a
	particular connection to avoid congestion.  It also has a
	Redirect control message intended to instruct a host to send
	certain packets to a different local router.  A "super source
	quench" is actually a redirect control packet, forged to look
	like it came from a local router, that instructs a host to
	send all packets to its own local loopback address.  This will
	effectively tie many Internet hosts up in knots.  Compare
	{godzillagram}, {breath-of-life packet}.

SuperTalk

	Silicon Beach Software.  A superset of HyperTalk used in
	SuperCard.

superuser

	[Unix] Synonym {root}, {avatar}.  This usage has spread to
	non-Unix environments; the superuser is any account with all
	{wheel} bits on.  A more specific term than {wheel}.

Super VGA

	{Super Video Graphics Array}

Super Video Graphics Adapter

	{Super Video Graphics Array}

Super Video Graphics Adaptor

	{Super Video Graphics Array}

Super Video Graphics Array

	<hardware> (SVGA) A {video display} {standard} created by
	{VESA} for {IBM PC} compatible personal computers.  The
	resolution is 800 x 600 4-bit {pixel}s.  Each pixel can
	therefore be one of 16 colours.

	See {Video Graphics Array}.

	[Is there a palette?  Standard document?  Adapter, Adaptor, or
	Array?]

	(12 Jan 1995)

supervisor mode

	(Or "{supervisor state}") An execution mode on some processors
	which enables execution of all instructions, including
	{privileged instruction}s.  It may also give access to
	different a {address space}, to {memory management} hardware
	and to other peripherals.  This is the mode in which the
	{operating system} usually runs.

	Opposite: {user mode}.

	(15 Feb 1995)

Supervisory Control and Data Acquisition

	<application> (SCADA) Systems are used in industry to monitor
	and control plant status and provide logging facilities.
	SCADA systems are highly configurable, and usually interface
	to the plant via {PLC}s.

	(11 Feb 1997)

support

	After-sale handholding; something many software vendors
	promise but few deliver.  To hackers, most support people are
	useless - because by the time a hacker calls support he or she
	will usually know the software and the relevant manuals better
	than the support people (sadly, this is *not* a joke or
	exaggeration).  A hacker's idea of "support" is a tte--tte
	or exchange of {electronic mail} with the software's designer.

	(15 Feb 1995)

supremum

	{least upper bound}

Sure

	["Towards a Broader Basis for Logic Programming", Bharat
	Jayaraman, TR CS Dept, SUNY Buffalo, 1990].

	(05 Jan 1995)

surfing

	("Internet surfing") Used by analogy to describe the ease with
	which an expert user can use the waves of information flowing
	around the {Internet} to get where he wants.  The term became
	popular in the early 1990s as access to the {Internet} became
	more widespread and tools such as {World-Wide Web} {browser}s
	made its use simpler and more pleasant.

	(05 Jan 1995)

SURGE

	Sorter, Updater, Report Generator, Etc.  IBM 704, 1959.
	Sammet 1969, p.8.

surjection

	<mathematics> A function f : A -> B is surjective or onto or a
	surjection if f A = B.  I.e. f can return any value in B.
	This means that its {image} is its {codomain}.

	Only surjections have {right inverses}, f' : B -> A where
	f (f' x) = x since if f were not a surjection there would be
	elements of B for which f' was not defined.

	See also {bijection}, {injection}.

	(27 May 1995)

surjective

	{surjection}

surrogate key

	<database> A {key} which depends wholely on other key(s).  A
	surrogate key is usually identified for implementation
	convenience, where none of the candidate keys are attractive.
	An example: If the three-letter initials of a group of people
	are known to be unique but only their full names are recorded,
	a three letter acronym for their names (e.g. John Doe Smith;
	JDB) would be a surrogate key.

	(26 Apr 1997)

suspension

	In {lazy evaluation}, a suspension (or in Henderson's
	terminology, a "recipe") is a {closure} with a flag indicating
	whether the expression has been evaluated or not.  When the
	expression is evaluated the first time, this flag is set.
	Subsequent requests for the value of the expression will not
	attempt to re-evaluate it.

	(06 Feb 1995)

Suzie COBOL

	/soo'zee koh'bol/ 1. ({IBM}, probably from Frank Zappa's "Suzy
	Creamcheese") A coder straight out of training school who
	knows everything except the value of {comment}s in plain
	English.  Also (fashionable among personkind wishing to avoid
	accusations of sexism) "Sammy Cobol" or (in some non-IBM
	circles) "Cobol Charlie".

	2. (proposed) Meta-name for any {code grinder}, analogous to
	{J. Random Hacker}.

	(06 Feb 1995)

SVC

	{Supervisor Call}

SVGA

	<hardware> {Super Video Graphics Array} (not
	"Adapter").

	(16 Nov 1995)

SVGA monitor

	<hardware, graphics> A {monitor} capable of displaying the
	output of an {SVGA} card.

	(25 Feb 1997)

SVID

	{System V Interface Definition}

SVR4

	{AT&T}/{USL} {Unix} {System V} Release 4.

	(28 Mar 1995)

SVRC

	<body> {Software Verification Research Centre}.

	(14 Nov 1995)

swab

	/swob/ The {PDP-11} swap byte instruction mnemonic, as
	immortalised in the {dd} option "conv=swab".

	1. To solve the {NUXI problem} by swapping bytes in a file.

	2.  The program in V7 Unix used to perform this action, or
	anything functionally equivalent to it.

	See also {big-endian}, {little-endian}, {middle-endian},
	{bytesexual}.

swap

	<operating system> To move a program from fast-access memory
	to a slow-access memory ("swap out"), or vice versa ("swap
	in").  The term often refers specifically to the use of a
	{hard disk} (or a {swap file}) as {virtual memory} or "swap
	space".

	When a program is to be executed, possibly as determined by a
	{scheduler}, it is swapped into {core} for processing; when it
	can no longer continue executing for some reason, or the
	scheduler decides its {time slice} has expired, it is swapped
	out again.

	This contrasts with "paging" systems in which only parts of a
	program's memory is transfered.

	(22 Nov 1996)

swap file

	<operating system> A file used by a {program} or, more often,
	an {operating system} as {swap space}.  A swap file is usually
	allocated as a long contiguous section of a {hard disk} to
	reduce access time.  The disk space used for a swap file can
	not be used for other things.  Under {Microsoft Windows}, swap
	files are recommended not to exceed three times the available
	{RAM} and are usually 150 percent of the RAM size.

	(15 Nov 1996)

swapped in

	{swap}

swapped out

	{swap}

swapping

	{swap}

swap space

	<operating system> An area of disk (e.g. a {swap file}) used
	to store the state of a process that has been {swap}ped out.
	Under a {virtual memory} system, it is the amount of swap
	space rather than the amount of {physical memory} which
	determines the maximum size of a single process and the
	maximum total size of all active processes.

	(03 Nov 1994)

SweetLambda

	Sugared {lambda-calculus}(?).

SWI-Prolog

	A {Prolog} by Jan Wielemaker <jan@swi.psy.uva.nl> like a
	superset of {Edinburgh Prolog}.  Version 1.7.2.  Distributed
	under {GNU} {General Public License}.  Runs on {Sun4}, {Sun3},
	{Linux}, {DEC} {MIPS} (incomplete), {RS/6000}, {PS2}/{AIX},
	{Atari ST}, {Gould PN}, {NeXT}, {VAX}, {HP-UX} (problems),
	{MS-DOS} and {OS/2}.

	{(ftp://swi.psy.uva.nl/pub/SWI-Prolog)}.  {OS/2
	(ftp://mpii02999.ag2.mpi-sb.mpg.de/pub/toolw/SWI/)}.  Mailing
	list: prolog-request@swi.psy.uva.nl.  E-mail: Andreas Toenne
	<atoenne@mpi-sb.mpg.de> (OS/2).

	(23 Jul 1993)

switch

	<software>

	1. {switch statement}.

	2. {option}.

	2. <networking> {packet switch}.

	(10 Dec 1996)

Switched Multimegabit Data Service

	<networking> (SMDS) An emerging high-speed {datagram}-based
	public data {network} service developed by {Bellcore} and
	expected to be widely used by telephone companies as the basis
	for their data networks.

	See also {Metropolitan Area Network}.

	(31 Jan 1997)

switch statement

	<programming> (Or case statement, multi-way branch) A
	construct found in most {high-level languages} for selecting
	one of several possible blocks of code or branch destinations
	depending on the value of an expression.  An example in {C} is

		switch (foo(x, y))
		{
		case 1:  printf("Hello\n");	/* fall through */
		case 2:  printf("Goodbye\n"); break;
		case 3:  printf("Fish\n"); break;
		default: fprintf(stderr, "Odd foo value\n"); exit(1);
		}

	The break statements cause execution to continue after the
	whole switch statemetnt.  The lack of a break statement after
	the first case means that execution will {fall through} into
	the second case.  Since this is a common programming error you
	should add a comment if it is intentional.

	If none of the explicit cases matches the expression value
	then the (optional) default case is taken.

	A similar construct in some {functional languages} returns the
	value of one of several expressions selected according to the
	value of the first expression.  A distant relation to the
	modern switch statement is {FORTRAN}'s {computed goto}.

	(30 Jan 1997)

swizzle

	To convert external names, array indices, or references within
	a data structure into address pointers when the data structure
	is brought into main memory from external storage (also called
	"pointer swizzling"); this may be done for speed in chasing
	references or to simplify code (e.g. by turning lots of name
	lookups into pointer dereferences).  The converse operation is
	sometimes termed "unswizzling".

	See also {snap}.

swung dash

	<character> A {character} similar to {tilde} but appearing
	in the same vertical position as a {dash}, i.e. half way up
	rather than at the top like tilde.  {ACSII} does not include a
	swung dash so tilde is used instead.

	It is commonly used for "approximates" or "is approximately
	equal to".

	(28 Jun 1997)

Sybase Corporation

	A {relational DBMS} vendor.

	Quarterly sales $158M, profits $16M (Aug 1994).

	[Addresses?]

	(26 Sep 1994)

SYDEL

	A system language, fully typed, with inline {assembly code},
	by Jan Garwick, ca 1974.

SYGMA

	A symbolic generator and macro assembler by A.P. Ershov et al
	of Novosibirsk.  For the {BESM-6}, {M-220} and {Minsk-22}.

	["SYGMA, A Symbolic Generator and Macroassembler", A.P. Ershov
	et al, in Symbol Manipulation Languages and Techniques,
	D.G. Bobrow ed, N-H 1968, pp.226- 246].

Sylvan

	[Distributed language?]

Symantec

	<company> Software manufacturer of utility and development
	applications for {Windows} and {Macintosh} platforms.
	Products include ACT!, Norton Utilities, Norton AntiVirus,
	Symantec AntiVirus for Macintosh, Symantec Cafe.

	{Home (http://www.symantec.com/)}.

	(10 Mar 1997)

SYMBAL

	SYMbolic ALgebra.  A {symbolic mathematics} language with
	{ALGOL}-like syntax by Max Engeli, late 60's.  Implemented for
	{CDC6600}.

	["User's Manual for the Formula Manipulation Language SYMBAL",
	M. Engeli, TRM-8.00, Comp Ctr UT Austin, June 1968].

SymbMath

	Small symbolic math package for {MS-DOS}.  Has the ability to
	learn new facts.  Version 2.1.1

	{(ftp://ftp.simtel.com/math/utk/software/msdos/calculus/symbmath/)}

SYMBOLANG

	Lapidus & Goldstein, 1965.  Symbol manipulating FORTRAN
	subroutine package for IBM 7094, later CDC6600.

	["Some Experiments in Algebraic Manipulation", CACM 8:501-508
	1965].

	(16 Mar 1995)

Symbolic Assembler Program

	<language> (SAP) The {assembly language} for the {IBM 704},
	defined in the late 1950s.

	(12 Dec 1994)

SYMBOLIC ASSEMBLY

	<language> An early system on the {IBM 705}.

	[Listed in CACM 2(5):16, May 1959].

	(15 Jan 1996)

symbolic inference

	The derivation of new facts from known facts and {inference
	rule}s.  This is one of the fundamental operations of
	{artificial intelligence} and {logic programming} languages
	like {Prolog}.

	Inference is a basic part of human reasoning.  For example
	given that all men are mortal and that Socrates is a man, it
	is a trivial step to infer that Socrates is mortal.  We might
	express these symbolically:

		man(X) => mortal(X).
		man(socrates).

	("if X is a man then X is mortal" and "Socrates is a man").
	Here, "man", "mortal" and "socrates" are just arbitrary
	symbols which the computer manipulates without reference to or
	knowledge of their external meaning.  A {forward chaining}
	system (a {production system}) could use these to infer the
	new fact

		mortal(socrates).

	simply by matching the left-hand-side of the implication
	against the fact and substituting socrates for the variable X.

	(28 Oct 1994)

symbolic link

	<filesystem> (Or "symlink", soft link (by contrast with "{hard
	link}"), "{shortcut}", "{alias}") A special type of {Unix}
	file which refers to another file by its {pathname}.  A
	symbolic link is created with the "ln" (link) command:

		ln -s <old name> <new name>

	Where <old name> is the target of the link (a pathname) and
	<new name> is the pathname of the link itself.

	Most operations ({open}, {read}, {write}) on the symbolic link
	automatically {dereference} it and operate on its target (<old
	name>).  Some operations (e.g. removing) work on the link
	itself (<new name>).

	In contrast with {hard links}, there are no restrictions on
	where a symbolic link can point, it can refer to a file on
	another file system, to itself or to a file which does not
	even exist (e.g. when the target of the symlink is removed).
	Such problems will only be detected when the link is accessed.

	(22 Oct 1997)

symbolic logic

	<logic> The discipline that treats formal {logic} by means of
	a formalised artificial language or symbolic calculus, whose
	purpose is to avoid the ambiguities and logical inadequacies
	of {natural language}.

	(24 Dec 1995)

Symbolic Mathematical Laboratory

	<tool, mathematics> An on-line system under {CTSS} for
	{symbolic mathematics}.  It used a {display screen} and a
	{light pen}.

	[Sammet 1969, p.514].

	(16 Apr 1995)

symbolic mathematics

	<mathematics, application> (Or "symbolic math") The use of
	computers to manipulate mathematical equations and expressions
	in symbolic form, as opposed to manipulating the numerical
	quantities represented by those symbols.  Such a system might
	be used for symbolic integration or differentiation,
	substitution of one expression into another, simplification of
	an expression, change of subject etc.

	One of the best known symbolic mathematics software packages
	is {Mathematica}.  Others include {ALAM}, {ALGY}, {AMP},
	{Ashmedai}, {AXIOM*}, {CAMAL}, {CAYLEY}, {CCalc}, {CLAM},
	{CoCoA}(?), {ESP}, {FLAP}, {FORM}, {FORMAL}, {Formula ALGOL},
	{GAP}, {JACAL}, {LiE}, {Macaulay}, {MACSYMA}, {Magic Paper},
	{MAO}, {Maple}, {Mathcad}, {MATHLAB}, {MuMath}, {Nother},
	{ORTHOCARTAN}, {Pari}, {REDUCE}, {SAC-1}, {SAC2}, {SAINT},
	{Schoonschip}, {Scratchpad I}, {SHEEP}, {STENSOR}, {SYMBAL},
	{SymbMath}, {Symbolic Mathematical Laboratory}, {TRIGMAN},
	{UBASIC}.

	{Usenet} newsgropup: {news:sci.math.symbolic}.

	(12 Apr 1995)

Symbolics, Inc.

	<company> The company which produced the {Lisp Machine}.

	{The Symbolics Museum
	(http://www.brightware.com/~rwk/symbolics/)}.

	[Summary?]

	(16 Apr 1995)

Symbol Manipulation Program

	(SMP) {Steven Wolfram}'s earlier symbol manipulation program,
	before he turned to {Mathematica}.

	["SMP Handbook", C. Cole, S. Wolfram et al, Caltech 1981].

	(29 Jan 1995)

symlink

	{symbolic link}

symmetric

	<mathematics> 1. A {relation} R is symmetric if, for all x and
	y,

		x R y  =>  y R x

	If it is also {antisymmetric} (x R y & y R x => x == y) then
	x R y => x == y, i.e. no two different elements are related.

	2. In {linear algebra}, a member of the {tensor product} of a
	{vector space} with itself one or more times, is symmetric if
	it is a {fixed point} of all of the {linear isomorphisms} of
	the tensor product generated by {permutations} of the ordering
	of the copies of the vector space as factors.  It is said to
	be antisymmetric precisely if the action of any of these
	linear maps, on the given tensor, is equivalent to
	multiplication by the sign of the permutation in question.

	(22 Sep 1996)

symmetric key cryptography

	A {cryptography} system where both parties have the same
	encryption key, as in {secret key cryptography}.

	Opposite: {public-key cryptography}.

	{Computer and Network Security Reference Index
	(http://www.tansu.com.au/Info/security.html)}.

	(06 Dec 1994)

Symmetric LISP

	A parallel {Lisp} in which environments are {first-class}
	objects.  It is implemented in {Common LISP}.

	["Parallelism, Persistence and Meta-Cleanliness in the
	Symmetric Lisp Processor", D. Gelernter et al, SIGPLAN Notices
	22(7):274-282 (July 1987)].

	["A Programming Language Supporting First-Class Parallel
	Environments", S. Jagannathan, MIT-LCS/TR 434, 1989].

	E-mail: Suresh Jagannathan <suresh@research.nj.nec.com>.

	(16 Mar 1995)

symmetric multiprocessing

	<parallel> (SMP) Two or more similar {processor}s connected
	via a high-{bandwidth} link and managed by one {operating
	system}, where each processor has equal access to I/O devices.
	This is in contrast to the "{compute server}" kind of
	{parallel processor} where a {front-end processor} handles all
	I/O to disks, terminals and {local area network} etc.

	The processors are treated more or less equally, with
	{application program}s able to run on any or perhaps all
	processors in the system, interchangeably, at the operating
	system's discretion.  Simple MP usually involves assigning
	each processor to a fixed task (such as managing the file
	system), reserving the single main CPU for general tasks.

	{OS/2} currently supports so-called HMP (Hybrid
	Multiprocessing), which provides some elements of symmetric
	multiprocessing, using add-on IBM software called MP/2.  OS/2
	SMP was planned for release in late 1993.

	(19 Mar 1995)

symmetric multiprocessor

	<computer, parallel> The kind of {parallel processor} which
	performs {symmetric multiprocessing}.

	(19 Mar 1995)

Symphony

	<tool, product> {Lotus Development}'s successor to their
	{Lotus 1-2-3} spreadsheet.  Unlike 1-2-3, Symphony allowed a
	limited form of {multitasking}.  The user could switch
	manually between it and {MS-DOS} and separate graph and
	spreadsheet windows could be opened simultaneously and would
	be updated automatically when cells were changed.  In
	addition, a small word processor could be opened in a third
	window.  These all could be printed out on the same report.
	Symphony could read and write Lotus 1-2-3 files and had
	interactive graphical output and a word processor, thus making
	it effectively a report generator.  Unlike 1-2-3, Symphony was
	not a great commercial success.

	(28 Mar 1995)

SYMPL

	<language> SYsteMs Programming Language.

	{CDC}'s derivative of {Jovial}.  SYMPL is a non-{re-entrant}
	{block structured} language with extensive {bit manipulation}
	facilities, which is linkable with {FORTRAN}.  Major parts of
	CDC systems during the 1970s were written in SYMPL.

	(14 Feb 1995)

SYN

	1. <character> {Synchronous idle}.

	2. <language> A syntactic specification language for {COPS}.

	["Metalanguages of the Compiler Production System COPS",
	J. Borowiec, in GI Fachgesprach "Compiler-Compiler", ed
	W. Henhapl, Tech Hochs Darmstadt 1978, pp. 122-159].

	3. [TCP/IP SYN request?]

	(17 Apr 1996)

sync

	/sink/ (Or "synch") 1. To synchronise, to bring into
	synchronisation.

	2. <file system> To force ("{flush}") all pending buffered
	disk writes to the disk.

	3. More generally, to force a number of competing processes or
	agents to a state that would be "safe" if the system were to
	crash, i.e. to {checkpoint} in the {database} sense.

	(11 Nov 1994)

synchronous

	<operating system, communications> 1. Two or more processes
	that depend upon the occurrences of specific events such as
	common timing signals.

	2. Occurring at the same time or at the same rate or with a
	regular or predictable time relationship or sequence.

	Opposite: {asynchronous}.

	(11 Apr 1996)

Synchronous Data Link Control

	<communications> (SDLC) An {IBM} {protocol}.

	A discipline conforming to subsets of the {ADCCP} of {ANSI}
	and the {HDLC} of the {International Organization for
	Standardization}.  SDLC manages synchronous, code-transparent,
	bit-serial communication which can be {duplex} or
	{half-duplex}; switched or non-switched; {point-to-point},
	{multipoint}, or loop.

	Compare {Binary Synchronous Communication}.

	(22 Mar 1995)

Synchronous Digital Hierarchy

	<communications, standard> (SDH) An international digital
	telecommunications network hierarchy which standardises
	transmission around the bit rate of 51.84 megabits per second,
	which is also called STS-1.  Multiples of this bit rate
	comprise higher bit rate streams.  Thus STS-3 is 3 times
	STS-1, STS-12 is 12 times STS-1, and so on.  STS-3 is the
	lowest bit rate expected to carry {ATM} traffic, and is also
	referred to as STM-1 (Synchronous Transport Module-Level 1).

	The SDH specifies how payload data is framed and transported
	synchronously across {optical fibre} transmission links without
	requiring all the links and nodes to have the same
	synchronized clock for data transmission and recovery
	(i.e. both the clock frequency and phase are allowed to have
	variations, or be {plesiochronous}).

	SDH offers several advantages over the current {multiplexing}
	technology, which is known as {Plesiochronous Digital
	Hierarchy}.  Where PDH lacks built-in facilities for automatic
	management and routing, and locks users into proprietary
	methods, SDH can improve network reliability and performance,
	offers much greater flexibility and lower operating and
	maintenance costs, and provides for a faster provision of new
	services.

	Under SDH, incoming traffic is synchronized and enhanced with
	{network management} bits before being multiplexed into the
	STM-1 fixed rate {frame}.

	The fundamental clock frequency around which the SDH or
	{SONET} framing is done is 8 KHz or 125 microseconds.

	SONET ({Synchronous Optical Network}) is the American version
	of SDH.

	(02 Mar 1995)

Synchronous DRAM

	{Synchronous Dynamic Random Access Memory}

Synchronous Dynamic Random Access Memory

	<storage> (SDRAM, Synchronous DRAM) A form of {DRAM} which
	adds a separate {clock} signal to the control signals.  SDRAM
	chips can contain more complex {state machines}, allowing them
	to support "burst" access modes that clock out a series of
	successive {bits} (similar to the {nibble mode DRAM}).

	(05 Oct 1996)

Synchronous Graphics RAM

	{Synchronous Graphics Random Access Memory}

Synchronous Graphics Random Access Memory

	<storage> (SGRAM, Synchronous Graphics RAM) A type of
	{Synchronous DRAM} optimised for use in {graphics} hardware.
	Extra features can include {burst operation}, {block write}
	and {write per bit}.  SGRAMs are designed to provide the very
	high {throughput} needed for graphics-intensive operations
	such as 3d {rendering} and {full-motion video}.

	(28 Nov 1996)

Synchronous idle

	<character> (SYN) The {mnemonic} for {ASCII} character 22.

	[Why?]

	(28 Jun 1996)

synchronous key encryption

	<algorithm, cryptography> Data {encryption} using two
	interlocking keys where enything encoded using one key may be
	decoded using the other key.  This means if someone makes one
	of the two keys publicly available (as in {public-key
	encryption}) and keeps the other private, then anyone may send
	them a message or data that only they can decode, giving
	privacy, and furthermore, the sender may also encrypt that
	same message additionally with their own private key, making
	it impossible to read without decoding first with *their*
	_public_ key by the receiver, this gives authenticity.

	It is a very powerful system.  One cannot determine one key
	from the other, nor can they crack the encryption by computing
	all combinations, because, depending on the size of the keys
	(sometimes as large as 1024 bytes, though having grown from
	smaller versions in popular implementations of the software
	which does this), the amount of computing power required to
	crack the code is unavailable, even supercomputers would take
	more than a hundred years to crack it.

	{PGP} is a publicly availble software implementation written
	by Phil Zimmermann.

	(10 Oct 1994)

Synchronous Optical NETwork

	<networking> (SONET) A {broadband} networking {standard} based
	on point-to-point {optical fibre} networks.  SONET will
	provide a high-bandwidth "pipe" to support {ATM}-based
	services.

	The SONET standard will establish a digital {hierarchical
	network} with a consistent worldwide transport scheme.  SONET
	has been designed to take advantage of fibre, in contrast to
	the {plain old telephone system} which was designed for copper
	wires.

	SONET carries {circuit-switched} data in {frames} at speeds in
	multiples of 51.84 megabits per second (Mbps) up to 48 * 51.84
	Mbps = 2.488 {gigabits} per second.  Since SONET uses multiple
	channels to transmit data, each SONET {frame} can be
	considered to be a two-dimensional table of bytes that is 9
	rows high and 90 columns deep.  For every {OC-n} level, SONET
	can transmit n number of frames at a given time.  Groups of
	frames are called {superframes}.

	SONET is the American version of {SDH}.

	[Wulf Losee; Corporate Computing 8.92; STACKS; LAN Magazine
	10.93].

	(30 Nov 1994)

syncronous

	<spelling> Misspelling of "{synchronous}".

	(13 Dec 1996)

synflood

	<networking> To {flood} another machine with bogus {TCP/IP}
	{SYN} requests.

	(07 Apr 1997)

synonym ring

	<library> A list of words with related meanings used to
	broaden the scope of a word search.  As well as returning
	documents which contain a sought-for word a search using a
	synonym ring might also return documents which contain words
	in the same synonym ring as a sought-for word.  Synonym rings
	are produced manually and are usually specific to a certain
	field, e.g. legal knowhow.

	(09 Apr 1997)

syntactic salt

	The opposite of {syntactic sugar}, a feature designed to make
	it harder to write bad code.  Specifically, syntactic salt is
	a hoop the programmer must jump through just to prove that he
	knows what's going on, rather than to express a program
	action.  Some programmers consider required type declarations
	to be syntactic salt.  A requirement to write "end if", "end
	while", "end do", etc. to terminate the last block controlled
	by a control construct (as opposed to just "end") would
	definitely be syntactic salt.  Syntactic salt is like the real
	thing in that it tends to raise hackers' blood pressures in an
	unhealthy way.  Compare {candygrammar}.

syntactic sugar

	Term coined by Peter Landin for additions to the syntax of a
	language which do not affect its expressiveness but make it
	"sweeter" for humans to use.  Syntactic sugar gives the
	programmer an alternative way of coding that is more succinct
	or more like some familiar notation.  It does not affect the
	expressiveness of the formalism (compare {chrome}).

	Syntactic sugar can be easily translated ("desugared") to
	produce a program in some simpler "core" syntax.  E.g. C's
	"a[i]" notation is syntactic sugar for "*(a + i)".  In a
	(curried) functional language, all operators are really
	functions and the use of {infix notation} "x+y" is syntactic
	sugar for function application "(+) x y".

	Alan Perlis once quipped, "Syntactic sugar causes cancer of
	the semicolon."

	The variants "syntactic saccharin" and "syntactic syrup" are
	also recorded.  These denote something even more gratuitous,
	in that they serve no purpose at all.  Compare {candygrammar},
	{syntactic salt}.

syntax

	The structure of strings in some language.  A language's
	syntax is described by a {grammar}.  For example, the syntax
	of a binary number could be expressed as

		binary_number = bit [ binary_number ]

		bit = "0" | "1"

	meaning that a binary number is a bit optionally followed by a
	binary number and a bit is a literal zero or one digit.

	The meaning of the language is given by its {semantics}.

	See also {abstract syntax}, {concrete syntax}.

	(31 Oct 1994)

Syntax-Case

	<language> A {macro} system for {Scheme} by R. Kent Dybvig
	<dyb@cs.indiana.edu>.  It is superior to the low-level system
	described in the Revised^4 Report ({R4RS}).  Pattern variables
	are ordinary identifiers with essentially the same status as
	lexical variable names and {macro} {keywords}.  The {syntax}
	is modified to recognise and handle references to pattern
	variables.  Version 2.1 works with {Chez Scheme} and the
	{Macintosh} port runs under {MacGambit} 2.0

	{(ftp://iuvax.cs.indiana.edu/pub/scheme/syntax-case.tar.Z)}.
	{Macintosh (ftp://maya.dei.unipd.it/pub/mac/gambit/)}.

	["Syntactic Abstraction in Scheme",
	Robert Hieb, R. Kent Dybvig and Carl Bruggeman
	IUCS TR #355, 6/92 (revised 7/3/92)].

	["Writing Hygienic Macros in Scheme with Syntax-Case", R. Kent
	Dybvig, IUCS TR #356, 6/92 (revised 7/3/92)].

	(06 Jul 1992)

syntax directed translation

	A technique where the structure of a language processor (e.g. a
	compiler) is based on the structure of the language's
	{abstract syntax}.  There might be one procedure in the
	translator corresponding to each category in the abstract
	syntax.  That procedure is responsible for processing
	constructs of that category.  Each procedure would call others
	corresponding to the construct's subconstituents and then
	combine their results to give the overall result for that
	construct.

Syntax/Semantic Language

	(S/SL) A specification language for {recursive descent
	parser}s by Rick C. Holt and Jim Cordy
	<cordy@qucis.queensu.ca>.  Rayan Zachariassen
	<rayan@cs.toronto.edu> produced the {C} implementation.

	Unlike most other languages, practicially the LEAST expensive
	thing you can do in S/SL is recurse.  A small language that
	defines input, output, and error token names (& values),
	semantic operations (which are really escapes to a programming
	language but allow good abstraction in the pseudo-code) and a
	pseudo-code program that defines a {grammar} by the {token}
	stream the program accepts.  {Alternation}, {control flow} and
	1-symbol {lookahead} constructs are part of the language.

	An S/SL implementation compiles this S/SL pseudo-code into a
	table ({byte-codes}) that is interpreted by the S/SL
	table-walker ({interpreter}).  The pseudo-code language
	probably has an {LR1 grammar} and the semantic mechanisms
	probably turn it into an {LRn grammar} relatively easily.  It
	is more powerful and cleaner than yacc but slower.

	{(ftp://ftp.cs.toronto.edu/pub/ssl.tar.Z)}

	["Specification of S/SL: Syntax/Semantic Language", Cordy,
	J.R. and Holt, R.C., Computer Systems Research Institute,
	University of Toronto, 1980].

	["An Introduction to S/SL: Syntax/Semantic Language" by
	R.C. Holt, J.R.  Cordy, and D.B. Wortman, in ACM Transactions
	on Programming Languages and Systems (TOPLAS), Vol 4, No.  2,
	April 1982, Pages 149-178].

	(25 Sep 1989)

synthesis

	<programming, specification> The process of deriving
	(efficient) programs from (clear) specifications.

	See also {program transformation}.

	(23 Aug 1996)

Synthesizer Specification Language

	(SSL) A specification language based on {term algebra} and
	{attribute grammar}s.  SSL is used by the {Synthesizer
	Generator}, a generator for {language-based editor}s such as
	the {Cornell Program Synthesizer}.

	["Generating Language Based Environments", T. Reps, MIT Press
	1984].

	(16 Dec 1994)

SyQuest Technology, Inc.

	<company, hardware> An early entrant into the removable {hard
	disk} market for {personal computers}.  For may years SyQuest
	held the market, particularly as a method of transferring
	large {desktop publisher} documents to printers.  SyQuest aim
	their products to give personal computer users "endless" hard
	drive space for data-intensive applications like {desktop
	publishing}, {Internet} information management, pre-press,
	{multimedia}, {audio}, {video}, {digital photography}, fast
	{backup}, data exchange, {archiving}, confidential data
	security and easy portability for the road.

	At the top of their current (Mar 1997) range are two drives,
	The {SyJet} 1.5 {GB} a 3.5 inch, double platter removable
	drive and the {EZFlyer} 230 {MB} also on 3.5 inch media.  A
	cartridge holding over 4.7GB is promised before the end of
	1997.

	In recent years they have not fared as well in the market,
	whilst {Iomega} has cornered the {Small Office/Home Office}
	(SOHO) market.  Over the period 1995 to 1997 sales declined
	resulting in a series of losses.  In the first quarter of 1997
	these losses had been reduced to $6.8 million with net
	revenues increasing to $48.3 million.  This compares to a net
	loss of $33.8 million, or $2.98 per share, on net revenues of
	$78.7 million for the same period the year before.  It would
	appear that substantial restructuring has occurred over the
	past few years.

	{Home (http://www.syquest.com/)}.

	(27 Mar 1997)

sysadmin

	{system administrator}

sysape

	/sys'ayp/ A rather derogatory term for a computer operator; a
	play on {sysop} common at sites that use the banana hierarchy
	of problem complexity (see {one-banana problem}).

Sysdeco Mimer AB

	<company> Part of the international software group Sysdeco
	Group AS.  They developed the {MIMER} {RDBMS}.

	{Home (http://www.mimer.se/)}

	Address: Uppsala, Sweden.

	(11 Nov 1995)

sys-frog

	/sis'frog/ (the {PLATO} system) A playful variant of
	"{sysprog}".

	(04 Nov 1994)

SYSLISP

	System language used in the implementation of Portable
	Standard Lisp.  Mentioned in "The Evolution of Lisp",
	G.L. Steele et al, SIGPLAN Notices 28(3):231-270 (Mar 1993).

sysop

	/sis'op/ (especially in the {BBS} world) The operator (and
	usually the owner) of a bulletin-board system.  A common
	neophyte mistake on {FidoNet} is to address a message to
	"sysop" in an international {echo}, thus sending it to
	hundreds of sysops around the world.

Sysplex

	<operating system> An {IBM} term for communicating {MVS}
	systems.  See also "{Parallel Sysplex}".

	(23 Nov 1996)

sysprog

	{Systems programmer}

system

	1. The {supervisor} program or {operating system} on a
	computer.

	2. The entire computer system, including input/output devices,
	the {supervisor} program or {operating system} and possibly
	other {software}.

	3. Any large program.

	4. Any method or {algorithm}.

System/360

	<operating system> An {operating system} announced by {IBM} on
	07 April 1964.

	[Hardware or OS? Features?  Platforms?  Relatonship to
	{DOS/360}?]

	(22 Sep 1997)

System 5

	{System V}

System 7.5

	<operating system> A version of {Mac OS}, the latest release as
	of Oct 1996 was 7.5.5.  Superseded by Mac OS 7.6 around March
	1997.

	{Mac OS home (http://www.macos.apple.com/)}.

	[Dates?  Features?]

	(23 Mar 1997)

system administrator

	<job> (Or "admin", "sysadmin", "site admin") The systems
	person in charge of a computer.

	Compare {postmaster}, {sysop}, {system manager}.

	(21 Mar 1995)

system analysis

	{systems analysis}

system analyst

	<job> Someone who does {systems analysis}.

	(06 Apr 1995)

system call

	<operating system, programming> The mechanism used by an
	{application program} to request service from the {operating
	system}.  System calls often use a special {machine code}
	instruction which causes the processor to change mode (e.g. to
	"supervisor mode" or "{protected mode}").  This allows the OS
	to perform restricted actions such as accessing hardware
	devices or the {memory management unit}.

	(01 Mar 1995)

System F

	A {type system} by J-Y. Girard.  Also known as Lambda-2 or the
	{polymorphic lambda-calculus}.

	["Proofs and Types", J-Y. Girard, Cambridge U Press 1989].

	(23 Nov 1994)

system management

	Activity aiming to minimise the use of excessive, redundant
	resources to address the overlapping requirements of
	performance balancing, network management, reducing outages,
	system maintenance costs, diagnosis and repair, and migration
	to new hardware and software system versions.

	(10 Nov 1995)

System Management Mode

	(SMM) A reduced power consumption state provided by some
	{Intel} {microprocessor}s.  When a CPU enters SMM it saves its
	current state in a special area of {static RAM} called SMRAM
	(System Management {RAM}) and then runs a program, also stored
	in in SMRAM, the SMM handler.

	SMM is implemented in all {Intel} "SL" suffixed CPUs.  In June
	1993, Intel announced it was discontinuing its SL range and
	instead making all its current processors SL enhanced.

	See also {Auto Idle}.

	(09 Nov 1994)

system manager

	A person who does {system management}.

	(10 Nov 1995)

system mangler

	<humour> A humorous synonym for "{system manager}", possibly
	from the fact that one major {IBM} {operating system} had a
	{root} account called SYSMANGR.  The term refers specifically
	to a systems programmer in charge of administration, software
	maintenance, and updates at some site.  Unlike {admin}, this
	term emphasises the technical end of the skills involved.

	(10 Nov 1995)

System Product Interpreter

	{Restructured EXtended eXecutor}

System R

	<database> A {database} system built as a research project at
	{IBM San Jose Research} (now {IBM Almaden Research Center}) in
	the 1970s.  System R introduced the {SQL} language and also
	demonstrated that a {relational system database} could provide
	good transaction processing performance.

	{Home
	(http://www.research.digital.com/SRC/personal/Paul_McJones/System_R/)}.

	(11 Mar 1996)

Systems Administrators Guild

	(SAGE) A special technical group of the {USENIX} Association.

	{(http://sage.xerox.com/sage/)}

	(07 Dec 1994)

systems analysis

	<job> Study of the design, specification, feasibility, cost,
	and implementation of a computer system for business.  What a
	systems analyst does.

	(25 Apr 1997)

Systems Analysis Definition

	<programming> (SAD) The analysis of the role of a proposed
	system and the identification of the requirements that it
	should meet.  SAD is the starting point for system design.
	The term is most commonly used in the context of commercial
	programming, where software developers are often classed as
	either {systems analysts} or programmers.  The systems
	analysts are responsible for identifying requirements
	(i.e. systems analysis) and producing a design.  The
	programmers are then responsible for implementing it.

	(07 Mar 1996)

systems analyst

	{systems analysis}

Systems Application Architecture

	<programming> (SAA) {IBM}'s family of standard interfaces
	which enable {software} to be written independently of
	{hardware} and {operating system}.

	(25 Apr 1997)

systems jock

	See {jock}.

Systems Network Architecture

	(SNA) {IBM}'s proprietary high level networking {protocol}
	{standard}.  Used by IBM and IBM-compatible {mainframe}s.

	(23 Nov 1994)

system software

	<operating system> Any {software} required to support the
	production or execution of {application programs} but which is
	not specific to any particular application.

	System software typically includes an {operating system} to
	control the execution of other programs; user environment
	software such as a {command line interpreter}, {window
	system}, {desktop}; development tools for building other
	programs such as {assemblers}, {compilers}, {linkers},
	{libraries}, {interpreters}, {cross-reference generators},
	{version control}, {make}; {debugging}, {profiling} and
	monitoring tools; utility programs, e.g. for sorting,
	printing, and editting.

	Different people would classify some or all of the above
	system software as part of the operating system while others
	might say the operating system was just the {kernel}.

	(22 Sep 1997)

System V

	1. The other major versions of the {Unix} {operating system}
	apart from {BSD}.  Developed by {AT&T}.  Later versions of
	Unix such as {SunOS} combined the best features of {System V}
	and {BSD} Unix.

	(31 Oct 1994)

	[Differences?]

	2. A supplier of {Unix} {open system}s for {Intel x86}
	processors.  They supply products from {SCO} and {Solaris} and
	offer general support for {Unix}, {TCP/IP}, and {Internet}.
	They serve and create third-party {WWW} pages and provide
	on-line support for commercial and non-commercial applications.

	{(http://www.systemv.com/)}

	See also {System V Interface Definition}.

	(12 Dec 1994)

System V Interface Definition

	(SVID) A standard allowing source code portability between
	different {platform}s running Unix System V.

	(28 Mar 1995)

systolic array

	(By analogy with the flow of blood?) An arrangement of
	processors in an array (often rectangular) where data flows
	synchronously across the array between neighbours, usually
	with different data flowing in different directions.  Each
	processor at each step takes in data from one or more
	neighbours (e.g. North and West), processes it and, in the next
	step, outputs results in the opposite direction (South and
	East).

	An example of a systolic {algorithm} might be matrix
	multiplication.  One matrix is fed in a row at a time from the
	top of the array and is passed down the array, the other
	matrix is fed in a column at a time from the left hand side of
	the array and passes from left to right.  Dummy values are
	then passed in until each processor has seen one whole row and
	one whole column.  At this point, the result of the
	multiplication is stored in the array and can now be output a
	row or a column at a time, flowing down or accross the array.

	See also {Ruby}, {SISAL}.

	[Who invented them?  Kung?]

	(23 Nov 1994)

SysVile

	/sis-vi:l'/  See {Missed'em-five}.

T

	1. True.  A {Lisp} compiler by Johnathan A. Rees in 1982 at
	{Yale University}.  T has {static scope} and is a
	near-superset of {Scheme}.  {Unix} source is available.  T is
	written in itself and compiles to efficient native code.  Used
	as the basis for the Yale {Haskell} system.  Maintained by
	David Kranz <kranz@masala.lcs.mit.edu>.  Current version is
	3.1.

	{(ftp://ftp.ai.mit.edu/pub/systems/t3.1)}

	A {multiprocessing} version of T is available
	{(ftp://masala.lcs.mit.edu/pub/mult)}.

	Runs on {Decstation}, {SPARC}, {Sun-3}, {Vax} under {Unix},
	{Encore}, {HP}, {Apollo}, {Macintosh} under {A/UX}.

	E-mail: <t3-bugs@cs.yale.edu> (bugs).
	E-mail: <t-project@cs.yale.edu>.

	(26 Nov 1991)

	["The T Manual", Johnathan A. Rees <jar@zurich.ai.mit.edu> et
	al, Yale U, 1984].

	2. A {functional language}.

	["T: A Simple Reduction Language Based on Combinatory Term
	Rewriting", Ida et al, Proc of Prog Future Generation
	Computers, 1988].

	3. (lower case) The {Lisp} {atom} used to represent "true",
	among other things.  "false" is represented using the same
	atom as an empty list, {nil}.  This {overloading} of the basic
	constants of the language helps to make Lisp {write-only
	code}.

	4. In transaction-processing circles, an abbreviation for
	"transaction".

	5. (Purdue) An alternative spelling of "{tee}".

T1

	<communications> An {AT&T} term for a {digital carrier}
	facility used to transmit a {DS1} formatted digital signal at
	1.544 megabits per second.

	T1 transmission uses a bipolar {Return To Zero} {alternate
	mark inversion} line coding scheme to keep the DC carrier
	component from saturating the line.

	Although some consider T1 signaling obsolete, much equipment
	operates at the "T1 rate" and such signals are either
	combined for transmission via faster circuits, or
	demultiplexed into 54 kilobit per second circuits for
	distribution to individual subscribers.

	T1 signals can be transported on {unshielded twisted pair}
	telephone lines.  The transmitted signal consists of pips of a
	few hundred nanoseconds width, each inverted with respect to
	the one preceding.  At the sending end the signal is 1 volt,
	and as received, greater than 0.01 volts.  This requires
	repeaters about every 6000 feet.

	The information is contained in the timing of the signals, not
	the polarity.  When a long sequence of bits in the transmitted
	information would cause no pip to be sent, "{bit stuffing}" is
	used so the receiving apparatus will not lose track of the
	sending clock.

	A T1 circuit requires two twisted pair lines, one for each
	direction.  Some newer equipment uses the two lines at half
	the T1 rate and in {full duplex} mode; the sent and recieved
	signals are separated at each end by components collectively
	called a "hybrid".  Although this technique requires more
	sophisticated equipment and lowers the line length, an
	advantage is that half the sent and half the recieved
	information is mixed on any one line, making low-tech wiretaps
	less a threat.

	See also {Integrated Services Digital Network}.

	(23 Nov 1994)

T1 line

	{T1}

T1 rate

	{T1}

T3

	<communications> A {digital carrier} facility used to transmit
	a {DS3} formatted digital signal at 44.736 megabits per
	second.

	See also {Integrated Services Digital Network}.

	(23 Nov 1994)

T3 line

	<communications> {T3}

TA

	{Integrated Services Digital Network} {Terminal Adaptor}.

TAA

	{Track Average Amplitude}

TAB

	{HT}

table

	<database> A collection of {records} in a {relational database}.

	(04 Jun 1997)

TABLET

	A {query language}.

	["Human Factor Comparison of a Procedural and a Non-procedural
	Query Language", C. Welty et al, ACM Trans Database Sys
	6(4):626-649 (Dec 1981)].

	(23 Nov 1994)

TABLOG

	<language> A programming language based on {first order
	predicate logic} with equality that combines {relational
	programming} and {functional programming}.  It has functional
	notation and {unification} as its binding mechanism.  TABLOG
	supports a more general subset of standard {first order logic}
	than {Prolog}.  It employs the Manna-Waldinger
	'{deductive-tableau}' proof system as an {interpreter} instead
	of {resolution}.

	(19 Jun 1997)

TABSOL

	<language> A language extension for {GECOM} written in the
	form of {truth tables} which was compiled into code for the
	tests and actions described.  TABSOL was developed by
	T.F. Kavanaugh, and was in use around 1964-5.

	(15 Sep 1996)

	[Proc FJCC 18:117-136, AFIPS (Fall 1960)].

	(16 Sep 1996)

Tabulating Machine Company

	<company> The company founded in 1896 by {Herman Hollerith} to
	exploit his invention of the {punched card}.  It became part
	of {IBM} in 1924.

	(02 Jan 1996)

TAC

	1. Translator Assembler-Compiler.  For {Philco 2000}.

	2. {Terminal Access Controller}.

TACL

	Tandem Advanced Command Language.  Tandem, about 1987.  The
	shell language used in Tandem computers.

TACPOL

	PL/I-like language used by US Army for command and control.

tag

	<World-Wide Web> A formatting command included an {HTML} (or
	other) document.

	(17 Mar 1996)

Tagged Image File Format

	<file format, graphics> (TIFF) A {file format} used for
	still-image {bitmaps}, stored in tagged fields.  {Application
	programs} can use the tags to accept or ignore fields,
	depending on their capabilities.

	While TIFF was designed to be extensible, it lacked a core of
	useful functionality, so that most useful functions (e.g.
	{lossless} 24-bit colour) requires nonstandard, often
	redundant, extensions.  The incompatibility of extensions has
	led some to expand "TIFF" as "Thousands of Incompatible File
	Formats".

	Compare {GIF}, {PNG}, {JPEG}.

	(11 Oct 1997)

tagged queueing

	<hardware> A method allowing a device or {controller} to
	process commands received from a {device driver} out of order.
	It requires that the device driver attaches a tag to each
	command which the controller or device can later use to
	identify the response to the command.

	Tagged queueing can speed up processing considerably if a
	controller serves devices of very different speeds, such as an
	{SCSI} controller serving a mix of {CD-ROMs} and high-speed
	{disks}.  In such cases if a request to fetch data from the
	CD-ROM is shortly followed by a request to read from the disk,
	the controller doesn't have to wait for the CD-ROM to fetch
	the data, it can instead instruct the disk to fetch the data
	and return the value to the device driver, while the CD-ROM is
	probably still {seeking}.

	(04 Jul 1997)

tail circuit

	<communications> A circuit which connects the {serial lines}
	of two {modems} together.

	[Why do that?]

	(16 Oct 1996)

tail recursion

	<programming> When the last thing a function (or procedure)
	does is to call itself, it is called tail recursive.  A
	function may make several recursive calls but a call is only
	tail-recursive if the caller returns immediately after it.
	E.g.

		f n = if n < 2 then 1 else f (f (n-2) + 1)

	Here the both calls to fib are {recursive} but only the outer
	one is tail recursive.

	See {tail recursion optimisation}, and, if you aren't sick of
	them already, {recursion}, {tail recursion}.

	(22 Feb 1996)

tail recursion modulo cons

	<programming, compiler> A generalisation of {tail recursion}
	introduced by D.H.D. Warren.  It applies when the last thing a
	function does is to apply a constructor functions (e.g. cons)
	to an application of a non-primitive function.  This is
	transformed into a tail call to the function which is also
	passed a pointer to where its result should be written.  E.g.

		f []     = []
		f (x:xs) = 1 : f xs

	is transformed into (pseudo {C}/{Haskell}):

		f [] = []
		f l  = f' l allocate_cons

		f' []     p = { *p = nil;
				return *p
			      }
		f' (x:xs) p = { cell = allocate_cons;
			        *p = cell;
				cell.head = 1;
				return f' xs &cell.tail
			      }

	where allocate_cons returns the address of a new cons cell, *p
	is the location pointed to by p and &c is the address of c.

	[D.H.D. Warren, DAI Research Report 141, University of
	Edinburgh 1980].

	(06 Mar 1995)

tail recursion optimisation

	(TRO) When the last thing a function or procedure does is to
	call itself, it is not necessary to retain the calling
	environment.  This is important when a procedure calls itself
	{recursive}ly many times for, without tail recursion
	optimisation, the environments of earlier invocations would
	fill up the memory only to be discarded when (if) the last
	call terminated.

	Tail recursion optimisation is a special case of {last call
	optimisation} but it allows the further optimisation that some
	arguments may be passed in situ, possibly in {register}s.  It
	allows recursive functions to be compiled into {iterative}
	loops.  See also {conversion to iteration}, {tail recursion
	modulo cons}.

tail-strict

	A tail-strict function evaluates every cons cell in its (list)
	argument.  It will therefore fail to terminate if its argument
	is an infinite list or if any tail of its argument fails to
	terminate.  The archetypal tail-strict function is length.
	See also Head-strict, Hyper-strict.

TAL

	Tandem Application Language.  A cross between {C} and
	{Pascal}.  Primary system programming language on {Tandem}
	computers.  Tandem has no assembler and until recently did not
	have C or Pascal.  Derived from SPL[3]?

TALE

	Typed Applicative Language Experiment.  M. van Leeuwen.  Lazy,
	purely applicative, polymorphic.  Based on typed second order
	lambda-calculus.  "Functional Programming and the Language
	TALE", H.P. Barendregt et al, in Current Trends in
	Concurrency, LNCS 224, Springer 1986, pp.122-207.

Taligent

	A company founded jointly by Apple and IBM in March 1992.  HP
	announced in January, 1994 that it would buy a 15% stake in
	Taligent.  They are working on an "object-oriented operating
	system", due to be finished sometime in 1995.  However,
	various independent pieces of Taligent will likely appear to
	be used with other operating systems, e.g. IBM's WorkplaceOS.
	Pink is an older name for Taligent, dating back to work that
	Apple did before the formation of Taligent.

talk

	<talk, tool, networking, messaging> A {Unix} program and
	{protocol} supporting conversation between two or more users
	who may be logged into the same computer or different
	computers on a network.  Variants include {ntalk}, {ytalk},
	and {ports} or {emulators} of these programs for other
	{platforms}.

	{Unix} has the {talk} program and {protocol} and its variants
	{xtalk} and {ytalk} for the {X Window System}; {VMS} has
	{phone}; {Windows for Workgroups} has {chat}.  {ITS} also has
	a talk system.  These split the screen into separate areas for
	each user.

	{Unix}'s {write} command can also be used, though it does not
	attempt to separate input and output on the screen.

	Users of such systems are said to be in {talk mode} which has
	many conventional abbreviations and idioms.  Most of these
	survived into {chat} jargon, but many fell out of common use
	with the migration of {user} prattle from talk-like systems to
	{chat} systems in the early 1990s.  These disused
	talk-specific forms include:

	"BYE?" - are you ready to close the conversation?  This is the
	standard way to end a talk-mode conversation; the other person
	types "BYE" to confirm, or else continues the conversation.

	"JAM"/"MIN" - just a minute

	"O" - "over" (I have stopped talking).  Also "/" as in x/y - x
	over y, or two newlines (the latter being the most common).

	"OO" - "over and out" - end of conversation.

	"\" - Greek {lambda}.

	"R U THERE?" - are you there?

	"SEC" - wait a second.

	"/\/\/" - laughter.  But on a {MUD}, this usually means
	"earthquake fault".

	See also {talk bomb}.

	(25 Jan 1998)

talk bomb

	{flash}

talker system

	{talk}

talk mode

	<chat> Using a {talk} system.  E.g., "{B1FF} had me in talk
	mode for hours last night.  I had to bring his box down just
	to get him to shut up."

	The (1980s?) term now is as dated as talk itself which has
	been largely replaced by {chat}.

	(19 Jan 1998)

TALL

	<language> TAC List Language.

	["TALL - A List Processor for the Philco 2000", J. Feldman,
	CACM 5(9):484-485 (Sep 1962)].

	(01 Mar 1995)

tall card

	<hardware> An expansion card for the {IBM PC AT}.  These can
	be larger than {IBM PC} or {IBM PC XT} cards because the AT
	case is bigger.

	When IBM introduced the PS/2 model 30 (its last gasp at
	supporting the {ISA}) they made the case lower and many
	industry-standard tall cards wouldn't fit.  This was felt to
	be a reincarnation of the {connector conspiracy}, done with
	less style.

	See also {short card}.

	(01 Mar 1995)

Tandem Computers

	<company> A US computer manufacturer.

	Quarterly sales $544M, profits $49M (Aug 1994).

	(26 Sep 1994)

Tandy

	<company> A US company, the parent company of {Radio Shack},
	makers of the {TRS-80} and other early {personal computer}s.

	(28 Feb 1995)

Tanenbaum, Andrew

	{Andrew Tanenbaum}

tanked

	1. <jargon> Same as {down}, used primarily by {Unix} hackers.

	See also {hosed}.

	2. Popularised as a synonym for "drunk" by Steve Dallas in the
	late lamented "Bloom County" comic strip.

	(28 Feb 1995)

TANSTAAFL

	/tan'stah-fl/ (From Robert Heinlein's classic "The
	Moon is a Harsh Mistress") "There Ain't No Such Thing As A
	Free Lunch".

	Often invoked when someone is balking at the prospect of using
	an unpleasantly {heavyweight} technique, or at the poor
	quality of some piece of {free software}, or at the
	{signal-to-noise ratio} of unmoderated {Usenet} newsgroups.
	"What? Don't tell me I have to implement a {database} back end
	to get my address book program to work!"  "Well, TANSTAAFL you
	know."  This phrase owes some of its popularity to the high
	concentration of science-fiction fans and political
	libertarians in hackerdom.

	(28 Feb 1995)

TAO

	Lisp dialect with concurrency, object-orientation and logic.
	"Concurrent Programming in TAO - Practice and Experience",
	I. Takeuchi in Parallel Lisp: Languages and Systems, T. Ito et
	al eds, LNCS 441, Springer 1989, pp.271-299.

TAOS

	{Technology for Autonomous Operation Survivability}

TAP

	{Telocator Alphanumeric Protocol}

tape

	1. {magnetic tape}.

	2. {paper tape}.

	(25 May 1996)

tape drive

	{magnetic tape drive}

tape head

	<hardware> The electromagnetic component in a {magnetic tape
	drive} which reads and writes magnetic tape as it passes over
	it.  Tape heads need to be cleaned periodically to remove the
	oxide particles which accumulate on them and can lead to
	errors.

	(12 Mar 1997)

TAPI

	{Telephony Application Programming Interface}

tar and feather

	(A sick contrivance from the {Unix} {tar} command and the Ku
	Klux Klan torture method) To create a transportable archive
	from a group of files by first sticking them together with
	{tar} (the Tape ARchiver) and then {compress}ing the result.
	The latter action is dubbed "feathering" (purely for contrived
	effect) by analogy to what you do with an aeroplane propeller
	to decrease wind resistance, or with an oar to reduce water
	resistance; smaller files, after all, slip through comm links
	more easily.

	(26 May 1997)

targa

	<graphics, file format> A graphics data format for {bitmap}
	{images}.  It uses 24 bits per {pixel} and is a common output
	format for {ray tracing} programs.

	(05 Jan 1995)

Targa Graphics Adaptor

	<graphics, file format> (TGA) The Truevision Targa Graphics
	Adaptor file format.

	The TGA format is a common {bitmap} file format for storage of
	24-bit images.  It supports {colourmaps}, {alpha channels},
	{compression} and comments.

	{Filename extension}: .tga.

	More information is available from
	{Truevision (http://www.truevision.com/)} and
	{The Graphics File Format Page
	(http://www.dcs.ed.ac.uk/~mxr/gfx/)}.

	[What does it have to do with graphics adaptors?]

	(07 Aug 1997)

Target-Machine Description Language

	(TMDL) The machine-description language used in the
	Graham-Glanville {code generator}.

	["Table-Driven Code Generation", S.L. Graham, IEEE Computer
	13(8):25-34 (Aug 1980)].

	(21 Feb 1995)

TARTAN

	A simple language proposed to meet the {Ironman} requirements.

	["TARTAN - Language Design for the Ironman Requirements:
	Reference Manual", Mary Shaw et al, SIGPLAN Notices
	13(9):36-58 (Sep 1978)].

	(05 Jan 1995)

task scheduling

	The assignment of starting and ending times to a set of tasks,
	subject to certain {constraint}s.  Constraints are typically
	either time constraints (the payload must be installed before
	the payload bay doors are closed) or resource constraints
	(this task requires a small crane and a crane operator).

	In the case where the tasks are programs to run concurrently
	on a computer, this is also known as {process scheduling}.

TASM

	Turbo Assembler.  {MS-DOS} assembler from Borland.

TASS

	Template ASSembly language.  Intermediate language produced by
	the Manchester SISAL compiler.

taste

	1. (primarily MIT) The quality of a program that tends to be
	inversely proportional to the number of features, hacks, and
	{kluge}s it contains.  Taste refers to sound judgment on the
	part of the creator.  See also {elegant}, {flavour}.

	2. Alternative spelling of "{tayste}".

TAWK

	Tiny AWK.

Taxis

	["A Language Facility for Designing Database-Intensive
	Applications", J. Mylopoulos et al, ACM Trans Database Sys
	5(2):185-207 (June 1980)].

tayste

	/tayst/ (or "taste", "{crumb}", {quarter}) Two bits.  Compare
	{byte}, {dynner}, {playte}, {nibble}, {quad}.

taz

	{tgz}

TBF

	{Mean Time Between Failures}

TBIL

	{Tiny Basic Interpreter Language}

TBK

	{Tool Builder Kit}

Tbl

	1. A language by M.E. Lesk for formatting tables, implemented
	as a {preprocessor} to {nroff}.

	(01 Nov 1994)

	2. Table Building Language.  A simple language by Robert
	Freiburghouse of {MIT} which combines user-defined actions
	into an {abstract machine}.  It can be used to build
	table-driven predictive {parser}s and {code generator}s in the
	{MULTICS} {Fortran} compiler and several {PL/I} compilers,
	including {VAX}-11 PL/I.

	["Engineering A Compiler: VAX-11 Code Generation and
	Optimisation", P. Anklam et al, Digital Press 1977].

	(01 Nov 1994)

T-carrier systems

	<communications> A restored polar signal, wideband data loop
	digital transmission facility for use with 303-type data
	stations, for serial signals synchronized to clock rates of
	19.2, 40.8, 50.0, 230.4 or 460.8 kilobits per second.  In its
	originally intended use, the 1.544 megabit per second {T1}
	line bit stream carried 24 pulse-code modulated, time-division
	multiplexed speech signals each encoded in 64 kilobit per
	second streams, leaving 8 kilobits per second of framing
	information which facilitates the synchronization and
	demultiplexing at the receiver.

	Asynchronous signals can be transmitted via a standard which
	encodes each change of level into three bits; two which
	indicate the time (within the current synchronous frame) at
	which the transition occurred, and the third which indicates
	the direction of the transition.  Although wasteful of line
	bandwidth, such use is usually only over small distances.

	T1 lines are made free of direct current signal components by
	in effect capacitor coupling the signal at the transmitter and
	restoring that lost component with a "slicer" at the receiver,
	leading to the description "restored polar".

	Contrast {DS1}.

	[Telecommunications Transmission Engineering, Vol. 2,
	Facilities, AT&T, 1977].

	(21 Mar 1996)

TCB

	1. (IBM) Trouble Came Back.  An intermittent or
	difficult-to-reproduce problem that has failed to respond to
	neglect or {shotgun debugging}.  Compare {heisenbug}.

	2. ({Orange Book}) Trusted Computing Base.

TC/IX

	The LynxOS kernel ported to the MIPS R3000 RISC processor by
	CDC.

TCL

	{Tool Command Language}

tcl-debug

	A debugger for {Tcl} by Don Libes <libes@cme.nist.gov> that
	can be easily embedded in other applications.  It is included
	with many other Tcl libraries.

	{(ftp://ftp.cme.nist.gov/pub/expect/tcl-debug.tar.Z)}

	(31 Oct 1994)

Tcl-DP

	Tcl-DP extends {Tcl}'s "send" by removing the restriction that
	you can only send to other clients of the same X11 server.
	Version 3.0 library by Larry Rowe.

	{(ftp://toe.cs.berkeley.edu/pub/multimedia/Tcl-DP)}

tclx

	{Tcl} extended with statements to provide high-level access
	{Unix} system primitives.  Version 7.2a by Mark Diekhans
	<markd@NeoSoft.com> and Karl ?.

	{(ftp://ftp.neosoft.com/pub/tcl/beta/tclX7.1a-B5.tar.Z)}

	E-mail: <tcl-project@NeoSoft.com>.

	(19 Nov 1993)

TCM

	{Trellis Code Modulation}

Tcode

	Intermediate language used by the Spineless Tagless G-machine
	(an abstract machine based on graph reduction) designed as a
	target for compilation of non-strict functional languages.
	"The Spineless tagless G- machine", S. Peyton Jones et al,
	Fourth Intl Conf Func Prog Langs and Comp Arch pp.184-201, ACM
	Sept 1989.

TCOL

	CMU.  Tree-based intermediate representation produced by the
	PQCC compiler generator.  "An Overview of the Production
	Quality Compiler- Compiler Projects", B.W. Leverett et al,
	IEEE Computer 13(8): 38-49 (Aug 1980).  (See LG).

TCOL.Ada

	CMU, 1980.  An intermediate representation for Ada, was merged
	with AIDA to form Diana.  "TCOL.Ada: Revised Report on an
	Intermediate Representation for the DOD Standard Programming
	Language", J.M. Newcomer et al, CMU-CS-79-128 (June 1979).

TCP

	{Transmission Control Protocol}

TCPIP

	Normally written "{TCP/IP}".

TCP/IP

	<protocol> {Transmission Control Protocol} over
	{Internet Protocol}.

	The {de facto} {standard} {Ethernet} {protocol}s incorporated
	into {4.2BSD} {Unix}.  TCP/IP was developed by {DARPA} for
	{internetworking}, encompassing both {network layer} and
	{transport layer} protocols.  While {TCP} and {IP} specify two
	protocols at specific {layer}s, TCP/IP is often used to refer
	to the entire {DoD} {protocol} suite based upon these,
	including {telnet}, {FTP}, {UDP} and {RDP}.

	See also {ICMP}, {SMTP}, {SNMP}.

	(17 Mar 1995)

tcsh

	A {Unix} {shell} by Christos Zoulas <christos@ee.cornell.edu>,
	based on {csh}.  tcsh adds {WYSIWYG} command line editing,
	command name {completion}, input {history} and various other
	features.

	Version 6.04 runs under many versions of {Unix} and under
	{OpenVMS}.

	{(ftp://ftp.spc.edu/)}

	(09 Jul 1993)

Tcsim

	Time (Complex) Simulator.  Complex arithmetic version of
	{Tsim}.

	E-mail: ZOLA Technologies <ZOLA@Applelink.Apple.com>.

	(18 Jan 1996)

TDD

	{Telecommunications Device for the Deaf}

TDF

	Intermediate language, a close relative of ANDF.  A TDF
	program is an ASCII stream describing an abstract syntax tree.
	"TDF Specification", Defence Research Agency/Electronics
	Division, Great Malvern, England, +44 684 895314.  E-mail: Nic
	Peeling <peeling@hermes.mod.uk>

TDFL

	Dataflow language.  "TDFL: A Task-Level Dataflow Language", P.
	Suhler et al, J Parallel Dist Comp 9(2):103-115 (Jun 1990).

TDI

	{Transport Driver Interface}

TDM

	{Technical Data Management}

TDMA

	{time division multiple access}

TDR

	{time domain reflectometer}

Teamwork

	A {SASD} tool from {CADRE Technologies} which supports the
	{Shlaer/Mellor Object-Oriented method}.  It is the recommended
	replacement for the defunct {DECdesign}.

	(05 Sep 1994)

Technical/Office Protocol

	(TOP) An {applications layer} {network} {application} and
	{protocol stack} for {office automation} developed by {Boeing}
	following the {OSI model}.  This {protocol} is very similar to
	{MAP} except at the lowest levels, where it uses {Ethernet}
	({IEEE} {802.3}) rather than {Token Bus} ({IEEE} {802.4}).

Technion

	<body> Israel Institute of Technology.

	{Home (http://www.technion.ac.il/)}

	{(ftp://ftp.technion.ac.il/)}.

	Address: Haifa, Israel.

	(09 May 1995)

Technology of Object-Oriented Languages and Systems

	<event> (TOOLS) One of the oldest {object-oriented}
	conferences, with 18 published proceedings volumes.  TOOLS is
	organised by {Interactive Software Engineering}.

	(29 Dec 1995)

TechRef

	/tek'ref/ [{MS-DOS}] The original "IBM PC Technical Reference
	Manual", including the {BIOS} listing and complete schematics
	for the PC.  The only PC documentation in the issue package
	that's considered serious by real hackers.

TECO

	/tee'koh/ obsolete [originally an acronym for "[paper] Tape
	Editor and COrrector"; later, "Text Editor and COrrector"] A
	text editor developed at MIT and modified by just about
	everybody.  With all the dialects included, TECO may have been
	the most prolific editor in use before {Emacs}, to which it
	was directly ancestral.  The first {Emacs} editor was written
	in TECO.

	It was noted for its powerful programming-language-like
	features and its unspeakably hairy syntax.  TECO programs are
	said to resemble {line noise}.  It is literally the case that
	every string of characters is a valid TECO program (though
	probably not a useful one); one common game used to be
	mentally working out what the TECO commands corresponding to
	human names did.

	As an example of TECO's obscurity, here is a TECO program that
	takes a list of names such as:

		Loser, J. Random
		Quux, The Great
		Dick, Moby

	sorts them alphabetically according to surname, and then puts
	the surname last, removing the comma, to produce the
	following:

		Moby Dick
		J. Random Loser
		The Great Quux

	The program is

		[1 J^P$L$$
		J <.-Z; .,(S,$ -D .)FX1 @F^B $K :L I $ G1 L>$$

	(where ^B means "Control-B" (ASCII 0000010) and $ is actually
	an {alt} or escape (ASCII 0011011) character).

	In fact, this very program was used to produce the second,
	sorted list from the first list.  The first hack at it had a
	{bug}: GLS (the author) had accidentally omitted the "@" in
	front of "F^B", which as anyone can see is clearly the {Wrong
	Thing}.  It worked fine the second time.  There is no space to
	describe all the features of TECO, but it may be of interest
	that "^P" means "sort" and "J<.-Z; ... L>" is an idiomatic
	series of commands for "do once for every line".

	In mid-1991, TECO is pretty much one with the dust of history,
	having been replaced in the affections of hackerdom by
	{EMACS}.  Descendants of an early (and somewhat lobotomised)
	version adopted by DEC can still be found lurking on VMS and a
	couple of crufty {PDP-11} {operating system}s, however, and
	ports of the more advanced MIT versions remain the focus of
	some antiquarian interest.  See also {retrocomputing},
	{write-only language}.

	{(ftp://usc.edu/)} for {VAX}/{VMS}, {Unix}, {MS-DOS},
	{Macintosh}, {Amiga}.

tee

	<tool, operating system> A {Unix} command which copies its
	{standard input} to its {standard output} (like {cat}) but
	also to a file given as its argument.  tee is thus useful in
	{pipeline}s of {Unix} commands (see {plumbing}) where it
	allows you to create a duplicate copy of the data stream.
	E.g.

		egrep Unix Dictionary | tee /dev/tty | wc -l

	searches for lines containing the string "Unix" in the file
	"Dictionary", prints them to the terminal (/dev/tty) and
	counts them.

	{Unix manual page}: tee(1).

	(22 Jan 1996)

TEI

	1. <communications> {Terminal Endpoint Identifier}.

	2. <text, project> {Text Encoding Initiative}.

	(11 Mar 1997)

TELCOMP

	<language> A variant of {JOSS}.

	[Sammet 1969, p.217].

	(07 Apr 1997)

Telecommunication Display Device

	{Telecommunications Device for the Deaf}

Telecommunications Device for the Deaf

	<communications> (TDD) A terminal device used widely by deaf
	people for text communication over telephone lines.

	The acronym TDD is sometimes expanded as "Telecommunication
	Display Device" but is generally considered to be derived from
	"Telecommunications Device for the Deaf", although there is
	some disagreement on this.  The deaf themselves do not usually
	use the term "TDD", but prefer simply "{TTY}" -- possibly the
	original term.  The ambiguity between this and the other
	meanings of "{TTY}" is generally not problematic.

	The standard most used by TDDs is reportedly a survivor of
	{Baudot code} implemented {asynchronous}ly at 45.5 or 50
	{baud}, 1 {start bit}, 5 data bits, and 1.5 {stop bits}.  This
	is generally incompatible with standard {modems}.

	[Standards docs?  {i18n} issues?]

	A typical TDD is a device about the size of a small {laptop
	computer} (resembling, in fact, a circa 1983 Radio Shack
	{Model 100} computer) with a {QWERTY keyboard}, and small
	screen (often one line high, often made of an array of
	{LED}s).  There is often a small printer for making
	transcripts of terminal sessions.

	Because of the {Stone Age} vintage of this technology (the
	idiosyncracy of which drives up the expense of individual
	units), it is thought that TDD standards should transition to
	use of standard modem line settings (e.g., ASCII 2400-8-N-1).
	An obstacle to this is the millions of Baudot-only terminals
	in use (an example of {lock-in} with a high {cruft} factor).

	Another scenario sees the use of TDDs being replaced by the
	use of {personal computers} and {talk} protocols, presumably
	over the {Internet}.

	(15 Jan 1998)

Telecommunications Industry Association

	<body, standard> ("TIA") An association that sets {standards}
	for communications cabling.

	Cables that {TIA} set standards for include: {EIA}/TIA-568A
	and EIA/TIA-568B category three, four and five cable.

	[Details?  Address?]

	(18 Jul 1997)

telecommuting

	The practice of working at home and communicating with your
	fellow workers through the phone, typically with a computer
	and modem.  Telecommuting saves the employee getting to and
	from work and saves the employer from supplying support
	services such as heating and cleaning, but it can also deprive
	the worker of social contact and support.

	(05 Jan 1995)

teledildonics

	<application, virtual reality> /tel"*-dil-do"-niks/ Sex in a
	computer simulated {virtual reality}, especially
	computer-mediated sexual interaction between the VR presences
	of two humans.  This practice is not yet possible except in
	the rather limited form of erotic conversation on {MUD}s and
	the like.  The term, however, is widely recognised in the VR
	community as a {ha ha only serious} projection of things to
	come.  "When we can sustain a multi-sensory surround good
	enough for teledildonics, *then* we'll know we're getting
	somewhere."

	(06 Feb 1995)

telematics

	The combination of telecommunications and computing.  Data
	communications between systems and devices.

	(07 Feb 1995)

TelEnet

	The old name for {Sprintnet}.  TELENET used to provide a
	service called {PC Pursuit}.

	Not to be confused with {telnet} the program and {protocol}.

	(17 Oct 1994)

TELEPAC

	<networking> The Swiss {PTT} {X.25} network.

	(09 Nov 1995)

Telephone Application Program Interface

	<programming, communications> (TAPI) Officially it's
	{Telephony Application Programming Interface}.

	(27 Nov 1995)

telephony

	<communications> Communication, often two-way, of spoken
	information, by means of electrical signals carried by wires
	or radio waves.  The term was used to indicate transmission of
	the voice, as distinguished from telegraphy (done in {Morse
	code} and usually called "{continuous wave}" or CW
	transmission), radio teletypewriter (RTTY) transmission (also
	called FSK for "{Frequency Shift Keying}", the modulation
	scheme used by such machines), and later, facimile.

	(14 Mar 1995)

Telephony Application Programming Interface

	<programming, communications> (TAPI, or "Telephone Application
	Program Interface") A {Windows 95} {Application Program
	Interface} enabling hardware independent access to telephone
	based communication.  TAPI covers a rather wide area of
	services from initialising the equipment (e.g. a {modem}) and
	placing a call to {voice mail} or control of a remote
	computer.

	[Telephone or Telephony?]

	(05 Dec 1995)

Telerat

	<abuse, hardware> /tel'*-rat/ Unflattering hackerism for
	"{Teleray}", a line of extremely losing {terminals}.

	(19 Jan 1995)

Telescript

	A communications-oriented programming language using "active
	software agents", released by {General Magic} in 1994.  What
	{PostScript} did for cross-{platform}, device-independent
	documents, Telescript aims to do for cross-{platform},
	network-independent messaging.  Telescript protects
	programmers from many of the complexities of network
	{protocol}s.

	(16 Jan 1995)

Teletype

	<hardware, product> ({tty}) A trademark for a hard-copy
	{terminal} produced by {Teletype Corporation}.

	(23 Nov 1995)

Teletype Corporation

	<company> The company which made {Teletype} {terminals}.

	Address: Skokie, Illinois, USA.

	(23 Nov 1995)

TeleUSE

	An {interface builder} for {Motif}.

television

	<hardware> A dedicated {push media} device for receiving
	{streaming video} and {audio}, either by terrestrial radio
	broadcast, satellite or cable.

	(23 Nov 1997)

TELNET

	/tel'net/ 1. The {Internet} {standard} {protocol} for remote
	login.  Runs on top of {TCP/IP}.  Defined in {STD} 8, {RFC}
	854 and extended with options by many other RFCs.  {Unix}
	{BSD} networking software includes a program, telnet, which
	uses the protocol and acts as a {terminal emulator} for the
	remote login session.  Sometimes abbreviated to TN.  {TOPS-10}
	had a similar program called {IMPCOM}.

	2. The US nationwide network into which one dials to access
	{CompuServe}.  It was created by John Goltz, one of the
	founders and system {guru} of {CompuServe}.  He later worked
	for {Tymshare}, one of CompuServe's big competitors.

Telocator Alphanumeric Protocol

	<communications, protocol> (TAP, or "IXO", "PET") A {protocol}
	for submitting requests to a {pager} service.  IXO/TAP is an
	{ASCII}-based, {half-duplex} {protocol} that allows the
	submission of a numeric or alphanumeric message.

	{Examples, protocol description, clarifications
	(ftp://mirror.lcs.mit.edu/telecom-archives/technical)}.

	See also {RFC 1568}.

	(07 Apr 1996)

Telon

	By {Panasophic}.

	[What is it?]

	(07 Apr 1996)

TELOS

	1. The {LeLisp} Version 16 Object System.  Also used in
	{EuLisp}.  The {object-oriented} {core} of {EuLisp}.
	Incorporates ideas from {CLOS}, {ObjVLisp} and {OakLisp}.
	Total merging of {type}s with {class}es and message-passing
	with normal function {application}.

	2. A {Pascal}-based {AI} language.

	["Design Rationale for TELOS, a Pascal-based AI Language",
	Travis et al, SIGPLAN Notices 12(8) (Aug 1977)].

TELSIM

	Busch, ca 1966.  Digital simulation.

	[Sammet 1969, p. 627].

template code

	{Pseudocode} generated by an automated {CASE} system and
	requiring further hand-coding before compilation.

TEMPLOG

	Extension of {Prolog} to handle a clausal subset of
	first-order {temporal logic} with discrete time.  Proposed by
	M. Abadi and Z. Manna of {Stanford University}.

	["Temporal Logic in Programming", M. Abadi et al, INtl Symp
	Logic Prog pp.4-16 (1987)].

TEMPO

	A programming language with simple {syntax} and {semantics}
	designed for teaching semantic and pragmatic aspects of
	programming languages.

	["TEMPO: A Unified Treatment of Binding Time and Parameter
	Passing Concepts in Programming Languages", N.D. Jones et al,
	LNCS 66, Springer 1978].

Tempo

	<operating system> The original code name for {Mac OS} version
	8.

	(15 Oct 1997)

temporal database

	<database> A {database} that can store and retrieve temporal
	data, that is, data which depends on time in some way.

	[More details?  Examples?]

	(25 May 1996)

temporal logic

	<logic> An extension of {predicate calculus} which includes
	notation for arguing about *when* statements are true.  Time
	is discrete and extends indefinitely into the future.  Three
	{prefix} operators, represented by a circle, square and diamond
	mean "is true at the next time instant", "is true from now on"
	and "is eventually true".  x U y means x is true until y is
	true.  x P y means x precedes y.

	There are two types of formula: "state formulae" about things
	true at one point in time, and "path formulae" about things
	true for a sequence of steps.  An example of a path formula is
	"x U y", and example of a state formula is "next x" or a
	simple atomic formula such at "waiting".

	"true until" in this context means that a state formula holds
	at every point in time up to a point when another formula
	holds.  "x U y" is the "strong until" and implies that there
	is a time when y is true.  "x W y" is the "weak until" in
	which it is not necessary that y holds eventually.

	There are two types of temporal logic used: branching time and
	linear time.  The basic propositional temporal logic cannot
	differentiate between the two, though.  Linear time considers
	only one possible future, in branching time you have several
	alternative futures.  In branching temporal logic you have the
	extra operators "A" (for "all futures") and "E" (for "some
	future").  For example, "A(work U go_home)" means "I will work
	until I go home" and "E(work U go_home)" means "I may work
	until I go home".

	(21 Jan 1997)

Tempura

	Language based on temporal logic.  "Executing Temporal Logic
	Programs", B. Moszkowski, Camb U Press 1986.

Ten15

	A universal intermediate language, predecessor to TDF.
	Polymorphic?  "Ten15: An Overview", P. Core et al, Royal
	Signals Radar Establishment TR 3977 (Sept 1986).

ten-finger interface

	The interface between two networks that cannot be directly
	connected for security reasons; refers to the practice of
	placing two terminals side by side and having an operator read
	from one and type into the other.

tense

	Of programs, very clever and efficient.  A tense piece of code
	often got that way because it was highly {bum}med, but
	sometimes it was just based on a great idea.  A comment in a
	clever routine by Mike Kazar, once a grad-student hacker at
	CMU: "This routine is so tense it will bring tears to your
	eyes."  A tense programmer is one who produces tense code.

tensor product

	<mathematics> A function of two {vector spaces}, U and V,
	which returns the space of {linear maps} from V's {dual} to U.

	Tensor product has natural symmetry in interchange of U and V
	and it produces an {associative} "multiplication" on vector
	spaces.

	Wrinting * for tensor product, we can map UxV to U*V via:
	(u,v) maps to that linear map which takes any w in V's dual to
	u times w's action on v.  We call this linear map u*v.  One
	can then show that

		u * v + u * x = u * (v+x)
		u * v + t * v = (u+t) * v
	and
		hu * v = h(u * v) = u * hv

	ie, the mapping respects {linearity}: whence any {bilinear
	map} from UxV (to wherever) may be factorised via this
	mapping.  This gives us the degree of natural symmetry in
	swapping U and V.  By rolling it up to multilinear maps from
	products of several vector spaces, we can get to the natural
	associative "multiplication" on vector spaces.

	When all the vector spaces are the same, permutation of the
	factors doesn't change the space and so constitutes an
	automorphism.  These permutation-induced iso-auto-morphisms
	form a {group} which is a {model} of the group of
	permutations.

	(27 Sep 1996)

tenured graduate student

	<job> One who has been in graduate school for 10 years (the
	usual maximum is 5 or 6): a "ten-yeared" student (get it?).
	Actually, this term may be used of any grad student beginning
	in his seventh year.  Students don't really get tenure, of
	course, the way professors do, but a tenth-year graduate
	student has probably been around the university longer than
	any untenured professor.

	(27 Sep 1996)

tera-

	{prefix}

terabyte

	<unit> 2^40 = 1,099,511,627,776 {bytes} = 1024 {gigabytes} or
	roughly 10^12 bytes.

	(Note the spelling - one 'r').  See {prefix}.

	(29 Sep 1995)

teraflop

	<unit> 10^12 {flops}.

	Intel beat Hitachi to the record of 1.06 teraflops, on 04 Dec
	1996, unofficially in Beverton, Oregon, using 7264 {Pentium
	Pro} chips.

	(21 Jul 1997)

teraflop club

	<body> /te'r*-flop kluhb/ (From {tera-} and {flops}) A
	mythical association of people who consume outrageous amounts
	of computer time in order to produce a few simple pictures of
	glass balls with intricate ray-tracing techniques.  {Caltech}
	professor James Kajiya is said to have been the founder.

	(21 Jul 1997)

TERM

	A program by Michael O'Reilly <michael@iinet.com.au> for
	people running {Unix} who have {Internet} access via a
	{dial-up} connection, and who don't have access to {SLIP}, or
	{PPP}, or simply prefer a more lightweight {protocol}.  TERM
	does end-to-end error-correction, {compression} and
	{mulplexing} across serial links.  This means you can {upload}
	and {download} files as the same time you're reading your
	news, and can run {X} {client}s on the other side of your
	{modem} link, all without needing {SLIP} or {PPP}.  The
	current version is 1.15.

	{(ftp://tartarus.uwa.edu.au/pub/oreillym/term/term115.tar.gz)}

TERMAC

	An interactive matrix language.

	["Users Guide to TERMAC", J.S. Miller et al, MIT Dec 1968].

	(04 Nov 1994)

terminak

	/ter'mi-nak`/ [Caltech, ca. 1979] Any malfunctioning computer
	terminal.  A common failure mode of Lear-Siegler ADM 3a
	terminals caused the "L" key to produce the "K" code instead;
	complaints about this tended to look like "Terminak #3 has a
	bad keyboard.  Pkease fix."  See {AIDX}, {Nominal
	Semidestructor}, {Open DeathTrap}, {ScumOS}, {sun-stools},
	{Telerat}, {HP-SUX}.

	(14 Apr 1995)

terminal

	1. <hardware> An electronic or electromechanical device for
	entering data into a computer or a communications system and
	displaying data received.  Early terminals were called
	{teletype}s, later ones {VDU}s.  Typically a terminal
	communicates with the computer via a {serial line}.

	2. <electronics> The end of a {line} where signals are either
	transmitted or received, or a point along the length of a line
	where the signals are made available to apparatus.

	3. <electronics> Apparatus to send and/or receive signals on a
	{line}.

	(02 Oct 1995)

Terminal Access Controller

	<hardware, networking> (TAC) A device which connects
	{terminals} to the {Internet}, usually using dial-up {modem}
	connections and the {TACACS} {protocol}.

	(27 Nov 1997)

terminal adapter

	{Terminal Adaptor}

Terminal Adaptor

	(TA) Equipment used to adapt {Integrated Services Digital
	Network} (ISDN) {Basic Rate Interface} (BRI) channels to
	existing terminal equipment standards such as {RS-232} and
	{V.35}.  A Terminal Adaptor is typically packaged like a
	{modem}, either as a {stand-alone} unit or as an interface
	card that plugs into a computer or other communications
	equipment (such as a {router} or {PBX}).  A Terminal Adaptor
	does not interoperate with a {modem}; it replaces it.

	[ISDN {FAQ}].

	(03 Oct 1994)

terminal brain death

	The extreme form of {terminal illness}.  What someone who has
	obviously been hacking continuously for far too long is said
	to be suffering from.

terminal emulation

	What a {terminal emulator} does.

terminal emulator

	A program that allows a computer to act like a (particular
	brand of) terminal, e.g. a {vt-100}.  The computer thus appears
	as a terminal to the {host} computer and accepts the same
	{escape sequence}s for functions such as cursor positioning
	and clearing the screen.

	{xterm} is a terminal emulator for the {X Window System}.

	(16 Feb 1995)

terminal illness

	{raster burn}

terminal junkie

	(UK) A {wannabee} or early {larval stage} hacker who spends
	most of his or her time wandering the directory tree and
	writing {noddy} programs just to get a fix of computer time.
	Variants include "terminal jockey", "console junkie", and
	{console jockey}.  The term "console jockey" seems to imply
	more expertise than the other three (possibly because of the
	exalted status of the {console} relative to an ordinary
	terminal).

	See also {twink}, {read-only user}.

	(16 Feb 1995)

Terminal Oriented Social Science

	<project> (TOSS) The Cambridge Project {Project MAC} was an
	ARPA-funded political science computing project.  They worked
	on topics like survey analysis and simulation, led by Ithiel
	de Sola Pool, J.C.R. Licklider and Douwe B. Yntema.  Yntema
	had done a system on the {MIT} Lincoln Labs {TX-2} called the
	{Lincoln Reckoner}, and in the summer of 1969 led a Cambridge
	Project team in the construction of an experiment called TOSS.
	TOSS was like {Logo}, with {matrix} operators.  A major
	feature was multiple levels of {undo}, back to the level of
	the {login} session.  This feature was cheap on the Lincoln
	Reckoner, but absurdly expensive on {Multics}.

	(29 Jan 1997)

terminal server

	A device which connects many {terminal}s ({serial line}s) to a
	{local area network} through one network connection.  A
	terminal server can also connect many network users to its
	asynchronous ports for {dial-out} capabilities and printer
	access.

	(16 Feb 1995)

Terminate and Stay Resident

	(TSR) A type of {DOS} utility which, once loaded, stays in
	memory and can be reactivated by pressing a certain
	combination of keys.

termination analysis

	A program analysis which attempts to determine whether
	evaluation of a given expression will definitely terminate.

	Evaluation of a constant is bound to terminate, as is
	evaluation of a non-{recursive} function applied to arguments
	which are either not evaluated or which can themselves be
	proved to terminate.  A recursive function can be shown to
	terminate if it can be shown that the arguments of the
	recursive calls are bound to reach some value at which the
	recursion will cease.

	Termination analysis can never guarantee to give the correct
	answer because this would be equivalent to solving the
	{halting problem} so the answer it gives is either "definitely
	terminates" or "don't know".

	(20 Oct 1994)

terminator

	<electronics> A resistor connected to a signal wire in a {bus}
	or {network} for the purpose of impedance matching to prevent
	reflections.

	For example, a 50 ohm resistor connected across the end of an
	{Ethernet} cable.  {SCSI} chains and some {LocalTalk} wiring
	schemes also require terminators.

	(17 May 1995)

term rewriting system

	(TRS) A collection of {rewrite rule}s used to transform terms
	(expressions, strings in some formal language) into equivalent
	terms.  See {reduction}.

	(04 Nov 1994)

terpri

	/ter'pree/ TERminate PRInt line.  [{LISP 1.5} and later,
	{MacLISP}] To output a {newline}.  Still used in {Common
	LISP}.  On some early {operating system}s and hardware, no
	characters would be printed until a complete line was formed,
	so this operation terminated the line and emitted the output.

	(24 Jun 1996)

terrabyte

	<spelling> Misspelling of "{terabyte}".

	(23 Jan 1997)

Terse

	Language for decryption of hardware logic.

	["Hardware Logic Simulation by Compilation", C. Hansen, 25th
	ACM/IEEE Design Automation Conf, 1988].

test

	1. The process of exercising a product to identify differences
	between expected and actual behaviour.  Typically testing is
	bottom-up: unit test, integration test and finally system
	test.  Ideally testing should be done by real users bashing on
	a prototype long enough to get thoroughly acquainted with it,
	with careful monitoring and followup of the results.

	{Test coverage} attempts to assess how complete a test has
	been.

	2. The second stage in a {generate and test} search
	{algorithm}.

test coverage

	A measure of how thoroughly a test suite exercises a program.
	This will typically involve collecting information about which
	parts of a program are actually executed when running the test
	suite in order to identify branches of conditional statements
	which have not been taken etc.  The standard {Unix} tool for
	this is {tcov} which annotates {C} or {Fortran} source with
	the results of a test coverage analysis.  {GCT} is a {GNU}
	equivalent.

testing

	{test}

TET

	Test Environment Toolkit project coordinated by {X/Open}.

TeX

	<publication> /tekh/ An extremely powerful {macro}-based text
	formatter written by {Donald Knuth}, very popular in academia,
	especially in the computer-science community (it is good
	enough to have displaced {Unix} {troff}, the other favoured
	formatter, even at many {Unix} installations).

	TeX fans insist on the correct (guttural) pronunciation, and
	the correct spelling (all caps, squished together, with the E
	depressed below the baseline; the mixed-case "TeX" is
	considered an acceptable {kluge} on {ASCII}-only devices).
	Fans like to proliferate names from the word "TeX" - such as
	TeXnician (TeX user), TeXhacker (TeX programmer), TeXmaster
	(competent TeX programmer), TeXhax, and TeXnique.

	Knuth began TeX because he had become annoyed at the declining
	quality of the typesetting in volumes I--III of his monumental
	"Art of Computer Programming" (see {Knuth}, also {bible}).  In
	a manifestation of the typical hackish urge to solve the
	problem at hand once and for all, he began to design his own
	typesetting language.  He thought he would finish it on his
	sabbatical in 1978; he was wrong by only about 8 years.  The
	language was finally frozen around 1985, but volume IV of "The
	Art of Computer Programming" has yet to appear as of mid-1997.
	(However, the third edition of volumes I and II have come
	out).  The impact and influence of TeX's design has been such
	that nobody minds this very much.  Many grand hackish projects
	have started as a bit of {toolsmith}ing on the way to
	something else; Knuth's diversion was simply on a grander
	scale than most.

	TeX has also been a noteworthy example of free, shared, but
	high-quality software.  Knuth offers monetary awards to people
	who find and report a bug in it: for each bug the award is
	doubled.  (This has not made Knuth poor, however, as there
	have been very few bugs and in any case a cheque proving that
	the owner found a bug in TeX is rarely cashed).  Though
	well-written, TeX is so large (and so full of cutting edge
	technique) that it is said to have unearthed at least one bug
	in every {Pascal} system it has been compiled with.

	Several document processing systems are based on TeX, notably
	{LaTeX} Lamport TeX - incorporates document styles for books,
	letters, slides, etc., {jadeTeX} uses TeX as a backend for
	printing from {James' DSSSL Engine}, and {Texinfo}, the {GNU}
	document processing system.  Numerous extensions to TeX exist,
	among them {BibTeX} for bibliographies (distributed with
	LaTeX), {PDFTeX} modifies TeX to produce {PDF} and {Omega}
	extends TeX to use the {Unicode} character set.

	See also {Comprehensive TeX Archive Network}.

	{(ftp://labrea.stanford.edu/tex/)}

	E-mail: <tug@tug.org> (TeX User's group, Oregon, USA).

	(20 Nov 1997)

TeX-78

	<language, text> The original version of {TeX}.

	(20 Nov 1997)

TeX-82

	<language, text> The version of {TeX} described in The
	TeXbook, Donald Knuth, A-W 1984.

	(20 Nov 1997)

Texas Instruments

	<company> (TI) A US electronics company.

	A TI engineer, {Jack Kilby} invented the {integrated circuit}
	in 1958.  Three TI employees left the company in 1982 to start
	{Compaq}.

	The {COOL} and {OATH} {C++} {class} libraries were developed
	at TI, as were {PDL2} and the {ASC} computer, {PC-Scheme} and
	{Texas Instruments Pascal}.

	{(ftp://ti.com/)}

	(26 Sep 1994)

Texinfo

	A {GNU} documentation system that uses a single source file to
	produce both on-line information and printed output.  You can
	read the on-line information, known as an "{Info} file", with
	an Info documentation-reading program.  By convention, Texinfo
	source file names end with a ".texi" or ".texinfo" extension.

	You can write and format Texinfo files into Info files within
	{GNU Emacs}, and read them using the Emacs Info reader.  If
	you do not have Emacs, you can format Texinfo files into Info
	files using "{makeinfo}" and read them using "info".  {TeX} is
	used to typeset Texinfo files for printing.

	Texinfo is available from your nearest {GNU archive site}.
	Current version: 3.1 (23 Mar 1993).

	(05 Oct 1994)

text

	1. Executable code, especially a "pure code" portion shared
	between multiple instances of a program running in a
	{multitasking} {operating system}.

	Compare {English}.

	2. Textual material in the mainstream sense; data in ordinary
	{ASCII} or {EBCDIC} representation (see {flat ASCII}).  "Those
	are text files; you can review them using the editor."

	These two contradictory senses confuse hackers too.

	(16 Mar 1995)

text-based

	<jargon> Working under a non-window-based {operating system}
	(e.g. {MS-DOS}) as opposed to a {graphical user interface}
	(e.g. {Microsoft Windows}).

	An MS-DOS text-based program uses a screen with a fixed array
	of 80x25 or 80x40 characters.  Examples are {WordPerfect}
	before version 5.1 and {Microsoft Word}.

	(16 Mar 1995)

text editor

	<tool, text> A utility program for creating and modifying
	{text files}.  This differs from a {word processor} in that
	the word processors often embed special control codes or
	{escape sequences} in the file to control formatting.

	(15 Nov 1996)

Text Encoding Initiative

	<text, project, standard> (TEI) A project working to establish
	a standard for interchanging {electronic text} for scholarly
	research.  The TEI has adopted {SGML} and implemented the TEI
	standard as an SGML {Document Type Definition}.

	{Home (http://etext.virginia.edu/TEI.html)}.

	{TEI Encoding Guidelines (http://www.uic.edu/orgs/tei/)}.

	See also {Corpus Processing}, {Computational Linguistics},
	{Natural Language Processing}

	(11 Mar 1997)

text file

	<file format> A {file} containing no "invisible" {control
	characters}, only {printable} letters, numbers and symbols,
	usually from the {ASCII} {character set}.

	A text file can be produced with a {text editor} and can
	usually be imported into any {word processor} though it will
	probably appear unformatted.

	Compare {binary file}, {flat file}, {rich text file}.

	(15 Nov 1996)

text segment

	{code segment}

Text To Speech

	<application> (TTS) Automatic conversion of text streams to
	voice.

	[Details?]

	(11 May 1997)

texture

	<graphics> A measure of the variation of the intensity of a
	surface, quantifying properties such as smoothness, coarseness
	and regularity.  It's often used as a {region descriptor} in
	{image analysis} and {computer vision}.

	The three principal approaches used to describe texture are
	statistical, structural and spectral.  Statistical techniques
	characterise texture by the statistical properties of the grey
	levels of the points comprising a surface.  Typically, these
	properties are computed from the grey level {histogram} or
	grey level {cooccurrence matrix} of the surface.

	Structural techniques characterise texture as being composed
	of simple primitives called "texels" (texture elements), that
	are regularly arranged on a surface according to some rules.
	These rules are formally defined by {grammar}s of various
	types.

	Spectral techiques are based on properties of the Fourier
	spectrum and describe global periodicity of the grey levels of
	a surface by identifying high energy peaks in the spectrum.

	(11 May 1995)

TFDL

	<language> ["TFDL : A Task-level Dataflow Language",
	P.A. Suhler et al, J Parallel and Distrib Comput 9:103-115
	(1990)].

	(11 May 1995)

TFTP

	{Trivial File Transfer Protocol}

TGA

	{Targa Graphics Adaptor}

T-gen

	A general-purpose {object-oriented} tool for the automatic
	generation of string-to-{object} translators.  It was written
	in {Smalltalk} by Justin Graver <graver@comm.mot.com> and runs
	in the Smalltalk programming environment.  T-gen supports the
	generation of both {top-down parser}s ({LL parser}s) and
	{bottom-up parser}s ({LR parser}s), which will automatically
	generate {derivation tree}s, {abstract syntax tree}s or
	arbitrary {Smalltalk} {object}s.  The simple specification
	{syntax} and {graphical user interface} are intended to
	enhance the learning, comprehension and usefulness of T-gen.

	Current version: 2.1.  Runs on {Smalltalk-80}, {ParcPlace
	Objectworks}/{Smalltalk 4.0} or 4.1.

	{(ftp://st.cs.uiuc.edu/pub/st80_r41/T-gen2.1/)}

	(18 Oct 1992)

TGS-II

	Translator Generator System.  Contained {TRANDIR}.

	[Sammet 1969, p. 640].

TGS Systems

	<company> Suppliers of {Prograph}.

	Telephone: +1 (902) 429 5642.

	(31 Mar 1995)

tgz

	<filename extension, compression> (Or less often "taz", Tar
	GNU zip) A {filename extension} for a file or directory which
	has been archived with {tar} and then compressed with {gzip}.
	The full form ".tar.gz" is also common.

	(03 Nov 1996)

thanks in advance

	(TIA) [{Usenet}] Conventional net.politeness ending a posted
	request for information or assistance.  Sometimes written
	"advTHANKSance" or "aTdHvAaNnKcSe".  See {net.-},
	{netiquette}.

That's not a bug, that's a feature!

	The {canonical} first parry in a debate about a purported
	{bug}.  The complainant, if unconvinced, is likely to retort
	that the bug is then at best a {misfeature}.

	See also {feature}.

	(02 Feb 1995)

The Cuckoo's Egg

	A great book (and subsequent BBC TV series) telling the true
	story of Clifford Stoll, an astronomy professor at {UCB}'s
	{Lawrence Berkeley Lab}.  A 75-cent accounting error alerted
	him to the presence of an unauthorised user (a {cracker}) on
	his system.  The cracker, code named "Hunter", was breaking
	into US computer systems and stealing sensitive military and
	security information.  Hunter was part of a spy ring paid in
	cash and cocaine, and reporting to the KGB.

	["The Cuckoo's Egg", Clifford Stoll, London: Bodley Head,
	1990, ISBN 0-370-31433-6, ISBN 0-671-72688-9].

	[FTP?]

	(15 Nov 1994)

The Force

	A {data parallel} language by Harry Jordan
	<harry@boulder.colorado.edu> which extends {Fortran} for
	{shared memory} {multiprocessor}s.  It features parallel
	"case" statements and {critical section}s.

	["The Force", H. Jordan, in "The Characteristics of Parallel
	Algorithms", L. Jamieson et al eds, MIT Press 1987,
	pp. 395-436].

	(14 Dec 1994)

The Internet Account

	An {Internet} provider in Sydney, Australia who provides
	{SLIP}, {PPP} and {CLI} accounts for the same rates.
	<riscman@geko.com.au> handles {Acorn} software.

	{Home (http://www.geko.com.au/)}

	{(ftp://ftp.geko.com.au/pub/)}

	E-mail: <accounts@geko.com.au>.

	Telephone: +61 (2) 968 4333.  Fax: +61 (2) 968 4334.

	Address: PO BOX 473, Crows Nest, NSE 2065, Australia.

	(02 Feb 1995)

The MathWorks, Inc.

	<company> The company marketing {MATLAB}.

	{(http://www.mathworks.com/)}

	E-mail: <info@mathworks.com>.

	Address: 24 Prime Park Way, Natick, Massachusetts 01760.
	Telephone: +1 (508) 647-7000.  Fax: +1 (508) 647-7101.

	(01 Jul 1997)

The Mythical Man-Month

	<publication> Fred Brooks's excellent 1975 book on {software
	engineering}.

	See also {Brooks's Law}.

	["The Mythical Man-Month: Essays on Software Engineering",
	Fred Brooks, Addison-Wesley, 1975, ISBN 0-201-00650-2].

	(20 Jun 1996)

The Network

	{network, the}

THEO

	A {frame language}.

	["Theo: A Framework for Self-Improving Systems", Mitchell et
	al, in Architectures for Intelligence, K. VanLehn ed, Erlbaum,
	1989].

	(14 Dec 1994)

theology

	1. Ironically or humorously used to refer to {religious
	issues}.

	2. Technical fine points of an abstruse nature, especially
	those where the resolution is of theoretical interest but is
	relatively {marginal} with respect to actual use of a design
	or system.  Used especially around software issues with a
	heavy AI or language-design component, such as the smart-data
	vs.  smart-programs dispute in AI.

theory

	The consensus, idea, plan, story, or set of rules that is
	currently being used to inform a behaviour.  This usage is a
	generalisation and (deliberate) abuse of the technical
	meaning.  "What's the theory on fixing this TECO loss?"
	"What's the theory on dinner tonight?"  ("Chinatown, I
	guess.")  "What's the current theory on letting lusers on
	during the day?"  "The theory behind this change is to fix the
	following well-known screw...."

	(14 Dec 1994)

theory change

	<artificial intelligence> The study of methods used to
	incorporate new information into a {knowledge base} when the
	new information may conflict with existing information.

	{Belief revision} is one area of theory change.

	[Others?]

	(20 Mar 1995)

Theseus

	A language based on {Euclid}, never implemented.

	["Theseus - A Programming Language for Relational Databases",
	J.E. Shopiro, ACM Trans Database Sys 4(4):493-517 (Mar 1979)].

	(14 Dec 1994)

The story of Mel, a Real Programmer

	<programming, person> An article devoted to the macho side of
	programming made the bald and unvarnished statement, "Real
	Programmers write in Fortran".  Maybe they do now, in this
	decadent era of Lite beer, hand calculators and
	"user-friendly" software but back in the Good Old Days, when
	the term "software" sounded funny and Real Computers were made
	out of {drums} and {vacuum tubes}, Real Programmers wrote in
	{machine code} - not {Fortran}, not {RATFOR}, not even
	{assembly language} - {Machine Code}.  Raw, unadorned,
	inscrutable {hexadecimal} numbers, directly.

	Lest a whole new generation of programmers grow up in
	ignorance of this glorious past, I feel duty-bound to
	describe, as best I can through the generation gap, how a Real
	Programmer wrote code.  I'll call him Mel, because that was
	his name.

	I first met Mel when I went to work for {Royal McBee Computer
	Corporation}, a now-defunct subsidiary of the typewriter company.
	The firm manufactured the {LGP-30}, a small, cheap (by the
	standards of the day) {drum}-memory computer, and had just
	started to manufacture the RPC-4000, a much-improved, bigger,
	better, faster -- drum-memory computer.  Cores cost too much,
	and weren't here to stay, anyway.  (That's why you haven't
	heard of the company, or the computer.)

	I had been hired to write a {Fortran} compiler for this new
	marvel and Mel was my guide to its wonders.  Mel didn't
	approve of compilers.

	"If a program can't rewrite its own code," he asked, "what
	good is it?"

	Mel had written, in {hexadecimal}, the most popular computer
	program the company owned.  It ran on the {LGP-30} and played
	blackjack with potential customers at computer shows.  Its
	effect was always dramatic.  The LGP-30 booth was packed at
	every show, and the IBM salesmen stood around talking to each
	other.  Whether or not this actually sold computers was a
	question we never discussed.

	Mel's job was to re-write the blackjack program for the
	{RPC-4000}.  (Port?  What does that mean?)  The new computer
	had a one-plus-one addressing scheme, in which each machine
	instruction, in addition to the operation code and the address
	of the needed operand, had a second address that indicated
	where, on the revolving drum, the next instruction was
	located.  In modern parlance, every single instruction was
	followed by a {GO TO}!  Put *that* in {Pascal}'s pipe and
	smoke it.

	Mel loved the RPC-4000 because he could optimize his code:
	that is, locate instructions on the drum so that just as one
	finished its job, the next would be just arriving at the "read
	head" and available for immediate execution.  There was a
	program to do that job, an "optimizing assembler", but Mel
	refused to use it.

	"You never know where its going to put things", he explained,
	"so you'd have to use separate constants".

	It was a long time before I understood that remark.  Since Mel
	knew the numerical value of every operation code, and assigned
	his own drum addresses, every instruction he wrote could also
	be considered a numerical constant.  He could pick up an
	earlier "add" instruction, say, and multiply by it, if it had
	the right numeric value.  His code was not easy for someone
	else to modify.

	I compared Mel's hand-optimised programs with the same code
	massaged by the optimizing assembler program, and Mel's always
	ran faster.  That was because the "top-down" method of program
	design hadn't been invented yet, and Mel wouldn't have used it
	anyway.  He wrote the innermost parts of his program loops
	first, so they would get first choice of the optimum address
	locations on the drum.  The optimizing assembler wasn't smart
	enough to do it that way.

	Mel never wrote time-delay loops, either, even when the balky
	Flexowriter required a delay between output characters to work
	right.  He just located instructions on the drum so each
	successive one was just *past* the read head when it was
	needed; the drum had to execute another complete revolution to
	find the next instruction.  He coined an unforgettable term
	for this procedure.  Although "optimum" is an absolute term,
	like "unique", it became common verbal practice to make it
	relative: "not quite optimum" or "less optimum" or "not very
	optimum".  Mel called the maximum time-delay locations the
	"most pessimum".

	After he finished the blackjack program and got it to run,
	("Even the initialiser is optimised", he said proudly) he got
	a Change Request from the sales department.  The program used
	an elegant (optimised) random number generator to shuffle the
	"cards" and deal from the "deck", and some of the salesmen
	felt it was too fair, since sometimes the customers lost.
	They wanted Mel to modify the program so, at the setting of a
	sense switch on the console, they could change the odds and
	let the customer win.

	Mel balked.  He felt this was patently dishonest, which it
	was, and that it impinged on his personal integrity as a
	programmer, which it did, so he refused to do it.  The Head
	Salesman talked to Mel, as did the Big Boss and, at the boss's
	urging, a few Fellow Programmers.  Mel finally gave in and
	wrote the code, but he got the test backwards, and, when the
	sense switch was turned on, the program would cheat, winning
	every time.  Mel was delighted with this, claiming his
	subconscious was uncontrollably ethical, and adamantly refused
	to fix it.

	After Mel had left the company for greener pa$ture$, the Big
	Boss asked me to look at the code and see if I could find the
	test and reverse it.  Somewhat reluctantly, I agreed to look.
	Tracking Mel's code was a real adventure.

	I have often felt that programming is an art form, whose real
	value can only be appreciated by another versed in the same
	arcane art; there are lovely gems and brilliant coups hidden
	from human view and admiration, sometimes forever, by the very
	nature of the process.  You can learn a lot about an
	individual just by reading through his code, even in
	hexadecimal.  Mel was, I think, an unsung genius.

	Perhaps my greatest shock came when I found an innocent loop
	that had no test in it.  No test. *None*.  Common sense said
	it had to be a closed loop, where the program would circle,
	forever, endlessly.  Program control passed right through it,
	however, and safely out the other side.  It took me two weeks
	to figure it out.

	The RPC-4000 computer had a really modern facility called an
	index register.  It allowed the programmer to write a program
	loop that used an indexed instruction inside; each time
	through, the number in the index register was added to the
	address of that instruction, so it would refer to the next
	datum in a series.  He had only to increment the index
	register each time through.  Mel never used it.

	Instead, he would pull the instruction into a machine
	register, add one to its address, and store it back.  He would
	then execute the modified instruction right from the register.
	The loop was written so this additional execution time was
	taken into account -- just as this instruction finished, the
	next one was right under the drum's read head, ready to go.
	But the loop had no test in it.

	The vital clue came when I noticed the index register bit, the
	bit that lay between the address and the operation code in the
	instruction word, was turned on-- yet Mel never used the index
	register, leaving it zero all the time.  When the light went
	on it nearly blinded me.

	He had located the data he was working on near the top of
	memory -- the largest locations the instructions could address
	-- so, after the last datum was handled, incrementing the
	instruction address would make it overflow.  The carry would
	add one to the operation code, changing it to the next one in
	the instruction set: a jump instruction.  Sure enough, the
	next program instruction was in address location zero, and the
	program went happily on its way.

	I haven't kept in touch with Mel, so I don't know if he ever
	gave in to the flood of change that has washed over
	programming techniques since those long-gone days.  I like to
	think he didn't.  In any event, I was impressed enough that I
	quit looking for the offending test, telling the Big Boss I
	couldn't find it.  He didn't seem surprised.

	When I left the company, the blackjack program would still
	cheat if you turned on the right sense switch, and I think
	that's how it should be.  I didn't feel comfortable hacking up
	the code of a Real Programmer."

	[Posted to USENET by its author, Ed Nather <utastro!nather>,
	on 21 May 1983].

	[When did it happen?  Did Mel use hexadecimal or octal?]

	(29 Aug 1997)

The World Of Cryton

	(TWOC) A {BBS} for the {Acorn} {Archimedes}.

	Telephone: +44 (1749) 670 030 (24hrs, most speeds).

	(08 Nov 1994)

the X that can be Y is not the true X

	Yet another instance of hackerdom's peculiar attraction to
	mystical references - a common humorous way of making
	exclusive statements about a class of things.  The template is
	from the "Tao te Ching": "The Tao which can be spoken of is
	not the true Tao."  The implication is often that the X is a
	mystery accessible only to the enlightened.  See the
	{trampoline} entry for an example, and compare {has the X
	nature}.

thin client

	<networking> A simple {client} program or device which relies
	on most of the function of the system being located in the
	{server}.

	{gopher} clients, for example, are very thin; they are
	{stateless} and are not required to know how to interpret and
	display objects much more complex than menus and plain text.
	Gopher servers, on the other hand, may know how to perform
	searches across {databases}, provide gopher {gateways} to
	other services, and so on.

	By the mid-1990s, it was thought that the model of
	decentralised computing, where each user has his own
	full-featured and independent {microcomputer}, had won over a
	centralised model where multiple users use thin clients (e.g.,
	{dumb terminals}) to do work on a shared {minicomputer} or
	{mainframe} server.  Networked {personal computers} typically
	operate as "fat clients", often providing everything except
	some file storage and printing locally.

	By 1996, reintroduction of thin clients is being proposed,
	especially for {LAN}-type environments (see the {cycle of
	reincarnation}).  The main expected benefit of this is ease of
	maintenance: with fat clients, especially those suffering from
	the poor networking support of {Microsoft} {operating
	systems}, installing a new application for everyone is likely
	to mean having to physically go to every user's workstation to
	install the application, or having to modify client-side
	configuration options; whereas with thin clients the
	maintenance tasks are centralised on the server and so need
	only be done once.

	Also, by virtue of their simplicity, thin clients generally
	have fewer hardware demands, and are less open to being
	screwed up by ambitious {lusers}.

	(08 Dec 1996)

ThingLab

	A {simulation} system written in {Smalltalk-80}.  It solves
	{constraint}s using {value inference}.

	Version: ThingLab II.

	["The Programming Language Aspects of ThingLab, A
	Constraint-Oriented Simulation Laboratory", A. Borning, ACM
	TOPLAS 3(4):353-387 (Oct 1981)].

Think C

	An extension of {ANSI C} for the {Macintosh} by {Symantec
	Corporation}.  It supports {object-oriented} programming
	techniques similar to {C++}.

Thinking Machines Corporation

	The company which introduced the {Connection Machine} parallel
	computer ca 1984.  Four of the world's ten most powerful
	supercomputers are Connection Machines.  Thinking Machines is
	the leader in scalable computing, with software and
	applications running on parallel systems ranging from 16 to
	1024 processors.  In developing the Connection Machine system,
	Thinking Machines also did pioneering work in parallel
	software.

	By 1996, Thinking Machines will become a software-based
	solutions provider.  The 1993 technical applications market
	for massively parallel systems was approximately $310 million,
	of which Thinking Machines Corporation held a 29 percent
	share.  The parallel computing market is expected to grow to
	$2 billion by 1996, in which, according to analysts, software
	will play a significant role.

	Thinking Machines Corporation has 200 employees and offices
	worldwide.

	Address: 245 First Street, Cambridge, MA 02142-1264, USA.
	Telephone: +1 (617) 234 1000.  Fax: +1 (617) 234 4444.

	{(http://www.think.com/)}

	(01 Dec 1994)

thinko

	<jargon> /thing'koh/ (Or "braino", by analogy with "{typo}") A
	momentary, correctable {glitch} in mental processing,
	especially one involving recall of information learned by
	rote; a bubble in the stream of consciousness.

	See also {brain fart}.  Compare {mouso}.

	(20 Apr 1996)

thinnet

	{cheapernet}

third generation computer

	<architecture> A computer built with small-scale integration
	{integrated circuits}, designed after the mid-1960s.

	Third generation computers use {semiconductor} memories in
	addition to, and later instead of, {ferrite core memory}.  The
	two main types of semiconductor memory are {Read Only Memory}
	(ROM) and read-and-write memories called {Random Access
	Memory} (RAM).

	A technique called {microprogramming} became widespread and
	simplified the design of the {CPU}s and increased their
	flexibility.  This also made possible the development of
	{operating systems} as {software} rather than as hard-wiring.

	A variety of techniques for improving processing efficiency
	were invented, such as {pipelining}, (parallel operation of
	{functional units} processing a single instruction), and
	{multiprocessing} (concurrent execution of multiple programs).

	As the execution of a program requires that program to be in
	memory, the concurrent running of several programs requires
	that all programs be in memory simultaneously.  Thus the
	development of techniques for concurrent processing was
	matched by the development of {memory management} techniques
	such as {dynamic memory allocation}, {virtual memory}, and
	{paging}, as well as {compilers} producing {relocatable code}.

	The {LILLIAC IV} is an example of a third generation computer.

	The CTSS ({Compatible Time-Sharing System}) was developed at
	{MIT} in the early 1960s and had a considerable influence on
	the design of subsequent timesharing operating systems.

	An interesting contrasting development in this generation was
	the start of mass production of small low-cost
	"{minicomputers}".

third generation language

	<language> (3GL, "{high level language}") A language designed
	to be easier for a human to understand, including things like
	named variables.  A fragment might be

		let c = c + 2 * d

	Fortran, ALGOL and COBOL are early examples of this sort of
	language.  Most "modern" languages ({BASIC}, {C}, {C++}) are
	third generation.  Most 3GLs support {structured programming}.

	See also {second generation language}, {fourth generation
	language}.

	(30 May 1996)

This can't happen

	{can't happen}

this dictionary

	{Free On-line Dictionary of Computing}

This time, for sure!

	<exclamation> Ritual affirmation frequently uttered during
	protracted {debugging} sessions involving numerous small
	obstacles (e.g. attempts to bring up a {UUCP} connection).  For
	the proper effect, this must be uttered in a fruity imitation
	of Bullwinkle J. Moose.

	Also heard: "Hey, Rocky!  Watch me pull a rabbit out of my
	hat!"  The {canonical} response is, of course, "But that trick
	*never* works!"

	See {hacker humour}.

	(27 Sep 1995)

thn

	{thumbnail}

Thomas

	A language compatible with the language {Dylan}(TM) described
	in the book "Dylan(TM) an object-oriented dynamic language" by
	{Apple Computer} Eastern Research and Technology, April 1992.
	Thomas is NOT {Dylan}(TM).

	The first public release of a translator to {Scheme} by Matt
	Birkholz <Birkholz@crl.dec.com>, Jim Miller
	<JMiller@crl.dec.com> and Ron Weiss <RWeiss@crl.dec.com>,
	written at {Digital Equipment Corporation}'s {Cambridge
	Research Laboratory} runs on {MIT}'s {CScheme}, DEC's
	{Scheme->C}, Marc Feeley's {Gambi}, {Macintosh}, {PC}, {Vax},
	{MIPS}, {Alpha}, {680x0}.  It does not perform well.

	{(ftp://gatekeeper.pa.dec.com/pub/DEC/Thomas)}

	(11 Sep 1992)

thrash

	To move wildly or violently, without accomplishing anything
	useful.  {Paging} or {swapping} systems that are overloaded
	waste most of their time moving data into and out of {core}
	(rather than performing useful computation) and are therefore
	said to thrash.  Thrashing can also occur in a {cache} due to
	{cache conflict} or in a {multiprocessor} (see {ping-pong}).

	Someone who keeps changing his mind (especially about what to
	work on next) is said to be thrashing.  A person frantically
	trying to execute too many tasks at once (and not spending
	enough time on any single task) may also be described as
	thrashing.

	Compare {multitask}.

thrashing

	{thrash}

thread

	1. See {multithreading}.

	2. See {threaded code}.

	3. {topic thread}.

threaded

	{thread}

threaded code

	<programming> A kind of {object code} written in a
	{instruction set} where each {op-code} is the address of some
	(lower level) code to perform the required operation.  Many
	{Forth} implementations use threaded code.

	[Other examples?  Better explanation?]

	(16 Sep 1996)

threading

	{thread}

Thread Language Zero

	<language> (TL0) The {instruction set} of the TAM ({Threaded
	Abstract Machine}), used to implement {Id}.

	["Fine-grain Parallelism with Minimal Hardware Support", David
	Culler et al, SIGPLAN Notices 26(4):164-175, ASPLOS-IV Proc,
	Apr 1991].

	(13 Mar 1995)

thread-safe

	<programming> A description of code which is either
	{re-entrant} or protected from multiple simultaneous execution
	by some form of {mutual exclusion}.

	(30 Jan 1997)

three-finger salute

	{Vulcan nerve pinch}

three-letter acronym

	(TLA) The canonical self-describing abbreviation for the name
	of a species with which computing terminology is infested.
	Examples include {MCA}, {FTP}, {SNA}, {CPU}, {MMU}, {DMU},
	{FPU}, {TLA}.  For a complete list of the TLAs in this
	dictionary, see {TLAs}.

	Sometimes used by extension for any confusing acronym.  People
	who like this looser usage argue that not all TLAs have three
	letters, just as not all four-letter words have four letters.
	One also hears of "ETLA" (Extended Three-Letter Acronym) being
	used to describe four-letter acronyms.  The term "SFLA"
	(Stupid Four-Letter Acronym) has also been reported.

	See also {YABA}.

	The self-effacing phrase "TDM TLA" (Too Damn Many...) is often
	used to bemoan the plethora of TLAs in use.  In 1989, a random
	of the journalistic persuasion asked hacker Paul Boutin "What
	do you think will be the biggest problem in computing in the
	90s?"  Paul's straight-faced response: "There are only 17,000
	three-letter acronyms." (To be exact, there are 26^3 =
	17,576.)

	(14 Dec 1994)

three tier

	<architecture> A {client-server} architecture in which the
	{user interface}, functional process logic ("business rules")
	and data storage and access are developed and maintained as
	independent {modules}, most often on separate {platforms}.

	Apart from the usual advantages of modular software with well
	defined interfaces, the three tier architecture is intended to
	allow any of the three tiers to be upgraded or replaced
	independently as requirements or technology change.  For
	example, an upgrade of desktop operating system from Windows
	to Unix would only affect the user interface code.

	Typically, the user interface runs on a desktop {PC} or
	{workstation} and uses a standard {graphical user interface},
	functional process logic may consist of one or more separate
	modules running on a {workstation} or application {server},
	and an {RDBMS} on a database server or {mainframe} contains
	the data storage logic.  The middle tier may be regarded as
	multi-tiered itself.

	(04 Oct 1997)

throughput

	1. The rate at which a processor can work expressed in
	instructions per second or jobs per hour or some other unit of
	performance.

	2. The amount of data a communications channel can carry,
	usually in bytes per second.

	The other important characteristic of a channel is its
	{latency}.

	(16 Jan 1995)

thud

	1. Yet another {metasyntactic variable} (see {foo}).  It is
	reported that at {CMU} from the mid-1970s the canonical series
	of these was "foo", "bar", "thud", "blat".

	2. Rare term for the hash character, "#" (ASCII 35).  See
	{ASCII} for other synonyms.

Thumb

	<processor> An extension to the {Advanced RISC Machine}
	architecture, announced on 06 March 1995 by {Advanced RISC
	Machines} Ltd.  By identifying the critical subset of the ARM
	{instruction set} and encoding it into 16 bits, ARM has
	succeeded in reducing typical program size by 30-40% from
	ARM's already excellent code density.  Since this Thumb
	instruction set uses less memory for program storage, cost is
	further reduced.

	All Thumb-aware {processor core}s combine the capability to
	execute both the 32-bit ARM and the 16-bit Thumb instruction
	sets.  Careful design of the Thumb instructions allow them to
	be decompressed into full ARM instructions transparently
	during normal instruction decoding without any performance
	penalty.  This differs from other 32-bit processors, like the
	{Intel 486SX}, with a 16-bit data bus, which require two
	16-bit memory accesses to execute every 32-bit instruction and
	so halve performance.

	The patented Thumb decompressor has been carefully designed
	with only a small amount of circuitry additional to the
	existing instruction decoder, so chip size and thus cost do
	not significantly increase.  Designers can easily interleave
	fast ARM instructions (for performance critical parts of a
	program) with compact Thumb code to save memory.

	(14 Mar 1995)

thumb

	<jargon> The slider or "bubble" on a window system
	{scrollbar}.  So called because moving it allows you to browse
	through the contents of a text window in a way analogous to
	thumbing through a book.

	(14 Mar 1995)

thumbnail

	<file format, graphics> (From "thumbnail sketch") A file
	format used by {Graphics Workshop} for {Microsoft Windows}.
	{Filename extension}: ".thn".

	[What's in the files?]

	(28 May 1996)

thunk

	<programming> /thuhnk/ 1. "A piece of coding which provides an
	address", according to P. Z. Ingerman, who invented thunks in
	1961 as a way of binding {actual parameters} to their formal
	definitions in {ALGOL 60} {procedure} calls.  If a procedure
	is called with an expression in the place of a {formal
	parameter}, the compiler generates a thunk which computes the
	expression and leaves the address of the result in some
	standard location.

	2. The term was later generalised to mean an expression,
	frozen together with its {environment} (variable values), for
	later evaluation if and when needed (similar to a
	"{closure}").  The process of unfreezing these thunks is
	called "forcing".

	3. A {stubroutine}, in an {overlay} programming environment,
	that loads and jumps to the correct overlay.

	Compare {trampoline}.

	There are a couple of onomatopoeic myths circulating about the
	origin of this term.  The most common is that it is the sound
	made by data hitting the {stack}; another holds that the sound
	is that of the data hitting an {accumulator}.  Yet another
	suggests that it is the sound of the expression being unfrozen
	at argument-evaluation time.  In fact, according to the
	inventors, it was coined after they realised (in the wee hours
	after hours of discussion) that the type of an argument in
	{ALGOL 60} could be figured out in advance with a little
	{compile-time} thought, simplifying the evaluation machinery.
	In other words, it had "already been thought of"; thus it was
	christened a "thunk", which is "the past tense of "think" at
	two in the morning".

	4. {Universal Thunks}.

	(11 Oct 1997)

TIA

	1. Thanks in advance.

	2. The {Internet Adapter}.

tick

	1. A {jiffy} (sense 1).  2. In simulations, the discrete unit
	of time that passes between iterations of the simulation
	mechanism.  In AI applications, this amount of time is often
	left unspecified, since the only constraint of interest is the
	ordering of events.  This sort of AI simulation is often
	pejoratively referred to as "tick-tick-tick" simulation,
	especially when the issue of simultaneity of events with long,
	independent chains of causes is {handwave}d.  3. In the FORTH
	language, a single quote character.

TickIT

	A software industry quality assessment scheme.

Tickle

	<text, tool> A {text editor}, file translator and {TCL}
	{interpreter} for the {Macintosh}.

	Version 5.0v1.  The text editor breaks the 32K limit (like
	{MPW}).

	The file translation utilities support {drag and drop}
	handling via tcl scripts of {BinHex}, {MacBinary}, {Apple
	Computer} Single/Double, {StuffIt} (with engine), {Unix}
	{compress}, {Unix} {tar} and {UUencode} files as well as text
	translation.

	Tickle implements tcl 7.0 with {tclX} extensions and
	{Macintosh} equivalents of {Unix}'s {ls}, {pwd}, {cd}
	commands.  It provides Macintosh access to {Resource Manager},
	{Communications Toolbox}, {OSA} Components (and
	{AppleScript}), {Editions} (publish and subscribe) and {Apple
	Events} (including AEBuild and AEPrint).  {OSA Script} support
	allows programming of any OSA scripting component within
	Tickle interpreter windows.  It provides the OSAtcl and OSAJ
	{J}/{APL} extensions and creates "Ticklets" which are small
	{application program}s that carry only the tcl script and use
	code in the OSAtcl component to drive an application that
	allows {drag and drop} with tcl scripts.  Tickle is scriptable
	and recordable.

	{(ftp://ftp.msen.com/pub/vendor/ice/tickle/Tickle5.0v1.hqx)}

	E-mail: <time@ice.com>.

	(12 Oct 1994)

tickle a bug

	To cause a normally hidden bug to manifest itself through some
	known series of inputs or operations.  "You can tickle the bug
	in the Paradise VGA card's highlight handling by trying to set
	bright yellow reverse video."

tick-list features

	({Acorn Computers}) Features in software or hardware that
	customers insist on but never use (calculators in desktop TSRs
	and that sort of thing).  The American equivalent would be
	"checklist features", but this jargon sense of the phrase has
	not been reported.

	(06 Jan 1995)

TIFF

	{Tagged Image File Format}

tiger team

	(US military jargon) 1. Originally, a team whose purpose is to
	penetrate security, and thus test security measures.  These
	people are paid professionals who do hacker-type tricks,
	e.g. leave cardboard signs saying "bomb" in critical defence
	installations, hand-lettered notes saying "Your codebooks have
	been stolen" (they usually haven't been) inside safes, etc.
	After a successful penetration, some high-ranking security
	type shows up the next morning for a "security review" and
	finds the sign, note, etc. and all hell breaks loose.  Serious
	successes of tiger teams sometimes lead to early retirement
	for base commanders and security officers (see the {patch}
	entry for an example).

	2. Recently, and more generally, any official inspection team
	or special {firefighting} group called in to look at a
	problem.

	A subset of tiger teams are professional {cracker}s, testing
	the security of military computer installations by attempting
	remote attacks via networks or supposedly "secure"
	communication channels.  Some of their escapades, if
	declassified, would probably rank among the greatest hacks of
	all times.  The term has been adopted in commercial
	computer-security circles in this more specific sense.

tilde

	<character> "~" {ASCII} character 126.

	Common names are: {ITU-T}: tilde; squiggle; {twiddle}; not.
	Rare: approx; wiggle; {swung dash}; enyay; {INTERCAL}: sqiggle
	(sic).

	Used as {C}'s prefix {bitwise negation} {operator}; and in
	{Unix} {csh}, {GNU Emacs}, and elsewhere, to stand for the
	current user's {home directory}, or, when prefixed to a {login
	name}, for the given user's home directory.

	The "swung dash" or "approximation" sign is not quite the same
	as {tilde} in typeset material but the ASCII tilde serves for
	both (compare {angle brackets}).

	[Has anyone else heard this called "tidal" (as in wave)?]

	(18 Oct 1996)

TILE Forth

	Version 2.1

	interpreter

	Mikael Patel <mip@sectra.se>

	FTP tile-forth-2.1.tar.Z from a {GNU archive site}.

	Forth interpreter in C; many Forth libraries

	conformance:	Forth83

	restriction:	shareware/GPL

	ports:		Unix

	(13 Nov 1991)

time bomb

	A subspecies of {logic bomb} that is triggered by reaching
	some preset time, either once or periodically.  There are
	numerous legends about time bombs set up by programmers in
	their employers' machines, to go off if the programmer is
	fired or laid off and is not present to perform the
	appropriate suppressing action periodically.

	Interestingly, the only such incident for which we have been
	pointed to documentary evidence took place in the Soviet Union
	in 1986!  A disgruntled programmer at the Volga Automobile
	Plant (where the Fiat clones called Ladas were manufactured)
	planted a time bomb which, a week after he'd left on vacation,
	stopped the entire main assembly line for a day.  The case
	attracted lots of attention in the Soviet Union because it was
	the first cracking case to make it to court there.  The
	perpetrator got 3 years in jail.

time complexity

	<complexity> The way in which the number of steps required by
	an {algorithm} varies with the size of the problem it is
	solving.  Time complexity is normally expressed as an order of
	magnitude, e.g. O(N^2) means that if the size of the problem
	(N) doubles then the algorithm will take four times as many
	steps to complete.

	See also {computational complexity}, {space complexity}.

	(08 May 1996)

time division multiple access

	{time division multiplexing}

time division multiplexing

	<communications> (TDM) A type of {multiplexing} where two or
	more channels of information are transmitted over the same
	link by allocating a different time interval ("slot" or
	"slice") for the transmission of each channel.  I.e. the
	channels take turns to use the link.  Some kind of periodic
	synchronising signal or distinguishing identifier is usually
	required so that the receiver can tell which channel is which.

	TDM becomes inefficient when traffic is intermittent because
	the time slot is still allocated even when the channel has no
	data to transmit.  {Statistical time division multiplexing}
	was developed to overcome this problem.

	(06 Mar 1997)

Time Domain Reflectometer

	<hardware, networking> (TDR) An electronic device for
	detecting and locating short- or open-circuits in an
	{Ethernet} cable.  TDRs can also measure how the {characteristic
	impedance} of a line varies along its length.

	(28 Dec 1995)

timeout

	A period of time after which an error condition is raised if
	some event has not occured.  A common example is sending a
	message.  If the receiver does not acknowledge the message
	within some preset timeout period, a transmission error is
	assumed to have occured.

	(09 Nov 1995)

time-sharing

	(Or "timesharing") An {operating system} feature allowing
	several users to run several tasks concurrently on one
	processor, or in parallel on many processors, usually
	providing each user with his own terminal for input and
	output.  {time-sharing} is {multitasking} for multiple users.

Time Sharing Option

	(TSO) System software from {IBM} that provides {time-sharing}
	on an IBM {mainframe} running in an {MVS} environment.

time sink

	(By analogy with "heat sink" or "current sink") A project that
	consumes unbounded amounts of time.

	(07 Feb 1995)

time slice

	<operating system> The period of time for which a process is
	allowed to run uninterrupted in a {pre-emptive multitasking}
	{operating system}.

	The {scheduler} is run once every time slice to choose the
	next process to run.  If the time slice is too short then the
	scheduler will consume too much processing time but if it is
	too long then processes may not be able to respond to extenal
	events quickly enough.

	(07 Feb 1995)

times-or-divided-by

	(By analogy with "plus-or-minus") A term occasionally used
	when describing the uncertainty associated with a scheduling
	estimate, for either humorous or brutally honest effect.  For
	a software project, the scheduling uncertainty factor is
	usually at least 2.

	(07 Feb 1995)

time T

	/ti:m T/ An unspecified but usually well-understood time,
	often used in conjunction with a later time T+1.  "We'll meet
	on campus at time T or at Louie's at time T+1" means, in the
	context of going out for dinner: "We can meet on campus and go
	to Louie's, or we can meet at Louie's itself a bit later."
	(Louie's was a Chinese restaurant in Palo Alto that was a
	favourite with hackers.)  Had the number 30 been used instead
	of the number 1, it would have implied that the travel time
	from campus to Louie's is 30 minutes; whatever time T is (and
	that hasn't been decided on yet), you can meet half an hour
	later at Louie's than you could on campus and end up eating at
	the same time.

	See also {since time T equals minus infinity}.

	(12 Dec 1994)

Time to Live

	(TTL) A field in the {Internet Protocol} header which
	indicates how many more {hop}s this packet should be allowed
	to make before being discarded or returned.

	(12 Dec 1994)

time zone

	One of approximately 24 longitudinal divisions of the globe,
	nominally 15 degrees wide, in which clocks show the same time.
	Some zones follow the boundaries of states or territories,
	others differ from neighbouring zones by more or less than one
	hour.

	Computers can be programmed to take into account the time zone
	each user is working in, which is not necessarily the same as
	the zone the computer is in.

	See also {TZ}.

	(20 Jul 1997)

Tinman

	The third of the series of DoD requirements that led to {Ada}.
	Written by HOLWG, DoD, Jan 1976.

	See {Strawman}, {Woodenman}, {Ironman}, {Steelman}.

	(01 Jan 1976)

tinman+

	Macro language for Apple II?  Published in DDJ?

TINT

	Interpreted version of {JOVIAL}.

	[Sammet 1969, p. 528].

Tiny

	1. A language which provides {concurrency} through
	{message-passing} to named message {queues}.

	2. A tool written by Michael Wolfe <mwolfe@cse.ogi.edu> at
	{Oregon Graduate Institute of Science & Technology} for
	examining {array} data dependence {algorithm}s and {program
	transformation}s for scientific computations.

	{Extended Tiny} was used to implement the {Omega test}.
	Michael Wolfe has also made extensions to his version of tiny.

	(12 Dec 1994)

Tiny BASIC

	<language> A dialect of {BASIC} developed by Dr. Wang [Wong?]
	in the late 1970s.  Tiny BASIC was 2K bytes in size and was
	loaded from {paper tape}.  It ran on almost any {Intel 8080}
	or {Zilog Z80} {microprocessor} for which the user could
	provide the necessary I/O driver software.

	Tiny BASIC was distributed as [the first ever?] {freeware}.
	The program listing contained the following phrases "All
	Wrongs reserved" and "{CopyLeft}", he obviously wasn't
	interested in money.

	See also {Tiny Basic Interpreter Language}.

	[More info?]

	(12 Sep 1997)

Tiny Basic Interpreter Language

	<language> (TBIL) The inner {interpreter} of Tom Pittman's set
	of {Tiny Basics} in Dr Dobb's Journal.

	(12 Sep 1997)

Tiny Clos

	A core part of {Common Lisp Object System} (CLOS) ported to
	{Scheme} and rebuilt using a MOP ({Metaobject Protocol}).
	This should be interesting to those who want to use MOPs
	without using a full {Common Lisp} or {Dylan}.

	The first release works with {MIT Scheme} 11.74.

	{(ftp://parcftp.xerox.com/pub/mops/)}.  E-mail: Gregor
	Kiczales <gregor@parc.xerox.com>.  Mailing list: mops
	(administered by <gregor@parc.xerox.com>).

	(14 Dec 1992)

TIP

	1. {Texas Instruments Pascal}.

	2. A {Unix} program for interactive communication via {serial
	line}s.

	{Unix manual page}: tip(1).

TIPL

	1.  Teach IPL.  An interpretive {IPL} teaching system.

	[Sammet 1969, p. 393].

	2.  A dialect of {IGL}.

tip of the ice-cube

	[IBM] The visible part of something small and insignificant.
	Used as an ironic comment in situations where "tip of the
	iceberg" might be appropriate if the subject were at all
	important.

tired iron

	[IBM] Hardware that is perfectly functional but far enough
	behind the state of the art to have been superseded by new
	products, presumably with sufficient improvement in
	bang-per-buck that the old stuff is starting to look a bit
	like a {dinosaur}.

tits on a keyboard

	Small bumps on certain keycaps to help touch-typists find the
	home keys (ASDF and JKL;) without looking.  They are usually
	on the "F" and "J" of a {QWERTY} and the "5" of a numeric
	keypad.  The {Macintosh}, perverse as usual, has them on the
	"D" and "K" keys.

Tk

	<programming, graphics> A {GUI} library, generally used with
	{TCL} by John Ousterhout <ouster@sprite.Berkeley.edu>, but
	also available from within {C} or {Perl}.  Tk is available for
	{X Window System}, {Microsoft Windows} and {Macintosh}.  Tk
	looks very similar to {Motif}.

	Version 3.5.

	{(ftp://ftp.cs.berkeley.edu/ucb/tcl/)}

	(09 Nov 1995)

T. Kohonen

	A researcher at the {University of Helsinki} who has been
	studying {neural network}s for many years with the idea of
	modelling as closely as possible the behaviour of biological
	systems.  His name is commonly associated with a particular
	kind of neural network in which there are only two kinds of
	{neuron}s (see McCulloch-Pitts), input and others.  All the
	input neurons are connected to all others and the others are
	connected only to their other nearest neighbors.  The training
	{algorithm} is a relatively simple one based on the geometric
	layout of the neurons, and makes use of {simulated annealing}.

	(19 Oct 1994)

TK!Solver

	Software Arts 1983.  Numerical constraint-oriented language.
	"The TK!Solver Book", M. Konopasek et al, McGraw-Hill 1984.

TL0

	{Thread Language Zero}

TL1

	Transaction Language 1.

	A subset of {ITU-T}'s {MML} from {Bellcore}, with simpler
	syntax.  TL1 is similar to {USL}.  It is used in
	communications between telephone operating systems and remote
	network test equipment.

	[OTGR, TR-TSY-000439, section 12, Bellcore].

	(14 Dec 1994)

TLA

	{Three-Letter Acronym}

TLAs

	At the last count, {this dictionary} gave expansions for 761
	{three-letter acronym}s, a mere 4.3%, of the 26^3 = 17576
	possible.  Here's the {grep} command used:

		egrep '^[A-Z][A-Z][A-Z]$' Dictionary | sort -u

	Here they are:

	{AAP}, {ABC}, {ABI}, {ABP}, {ACA}, {ACE}, {ACK}, {ACL}, {ACM},
	{ACP}, {ADL}, {ADM}, {ADS}, {ADT}, {AED}, {AEP}, {AES}, {AFJ},
	{AFK}, {AFS}, {AGL}, {AIA}, {AID}, {AIX}, {AKC}, {AKL}, {ALC},
	{ALF}, {ALM}, {ALP}, {AMD}, {AML}, {AMP}, {AMS}, {ANL}, {ANU},
	{AOS}, {APA}, {APC}, {API}, {APL}, {APT}, {AQL}, {ARC}, {ARL},
	{ARM}, {ARP}, {ARQ}, {ART}, {ASA}, {ASE}, {ASF}, {ASL}, {ASM},
	{ASN}, {ASP}, {ATA}, {ATK}, {ATM}, {ATS}, {AUI}, {AUP}, {AVS},
	{BAD}, {BAL}, {BAP}, {BBC}, {BBL}, {BBN}, {BBS}, {BCD}, {BCL},
	{BCS}, {BDL}, {BEA}, {BER}, {BFI}, {BGP}, {BIP}, {BLT}, {BMF},
	{BNF}, {BOF}, {BOS}, {BPS}, {BQS}, {BRB}, {BRI}, {BRS}, {BSD},
	{BSI}, {BSL}, {BSS}, {BTW}, {BWQ}, {CAD}, {CAE}, {CAF}, {CAL},
	{CAP}, {CAT}, {CBN}, {CBV}, {CCL}, {CCP}, {CCR}, {CCS}, {CDA},
	{CDC}, {CDE}, {CDF}, {CDL}, {CDM}, {CDS}, {CEN}, {CFD}, {CFP},
	{CGI}, {CGM}, {CHI}, {CID}, {CIF}, {CIL}, {CIM}, {CIS}, {CIX},
	{CLM}, {CLP}, {CLR}, {CLU}, {CLX}, {CMA}, {CMC}, {CML}, {CMS},
	{CMU}, {CMZ}, {CNC}, {CNI}, {COM}, {COS}, {CPI}, {CPL}, {CPS},
	{CPU}, {CRC}, {CRL}, {CRT}, {CSL}, {CSM}, {CSO}, {CSP}, {CSU},
	{CTC}, {CTI}, {CTL}, {CTY}, {CUA}, {CUL}, {CVS}, {CWI}, {DAA},
	{DAG}, {DAS}, {DAU}, {DBA}, {DBC}, {DBH}, {DCA}, {DCE}, {DCG},
	{DCL}, {DCT}, {DDE}, {DDL}, {DDM}, {DDN}, {DDT}, {DEA}, {DEC},
	{DED}, {DEK}, {DES}, {DEX}, {DFA}, {DFC}, {DFD}, {DGL}, {DIN},
	{DIP}, {DLG}, {DLL}, {DLM}, {DLP}, {DME}, {DML}, {DNF}, {DNS},
	{DOE}, {DOF}, {DOL}, {DOS}, {DPB}, {DPL}, {DPS}, {DSA}, {DSE},
	{DSL}, {DSM}, {DSP}, {DSS}, {DSU}, {DTD}, {DTE}, {DTP}, {DTS},
	{DUA}, {DVI}, {DXF}, {EAG}, {ECL}, {ECP}, {EDA}, {EDI}, {EDL},
	{EDU}, {EER}, {EFF}, {EFL}, {EGP}, {ELF}, {ELI}, {ELP}, {EMA},
	{EML}, {EMX}, {ENQ}, {EOF}, {EOL}, {EOU}, {EPL}, {EPS}, {ERA},
	{ERC}, {ERD}, {ESA}, {ESF}, {ESI}, {ESL}, {ESP}, {ETC}, {ETM},
	{EXE}, {FAC}, {FAD}, {FAP}, {FAQ}, {FCP}, {FDT}, {FEA}, {FEL},
	{FFP}, {FFT}, {FGL}, {FIX}, {FMQ}, {FMV}, {FNC}, {FOD}, {FPA},
	{FPU}, {FQL}, {FRL}, {FSF}, {FSL}, {FSM}, {FSP}, {FTP}, {FUD},
	{FYA}, {FYI}, {GAN}, {GAP}, {GAT}, {GCC}, {GCL}, {GCR}, {GCT},
	{GDB}, {GEA}, {GEI}, {GFR}, {GHC}, {GIF}, {GIN}, {GIP}, {GKS},
	{GLB}, {GLS}, {GLU}, {GMD}, {GNU}, {GOL}, {GOM}, {GPL}, {GPM},
	{GPV}, {GPX}, {GRG}, {GSL}, {GSM}, {GUI}, {GVL}, {GWM}, {HCF},
	{HCI}, {HCS}, {HDF}, {HDL}, {HDM}, {HEP}, {HLL}, {HOL}, {HPF},
	{HPL}, {HQX}, {HSV}, {IAB}, {IAD}, {IAL}, {IAM}, {IAW}, {IBM},
	{ICE}, {ICI}, {IDE}, {IDL}, {IEC}, {IEF}, {IEN}, {IFP}, {IFX},
	{IGC}, {IGL}, {IGP}, {IHS}, {IIS}, {IIT}, {IMP}, {IMR}, {IMS},
	{IPA}, {IPC}, {IPE}, {IPL}, {IPS}, {IPX}, {IQL}, {IRC}, {IRL},
	{IRQ}, {ISA}, {ISE}, {ISF}, {ISL}, {ISO}, {ISP}, {ISV}, {ITS},
	{ITU}, {IVY}, {JAZ}, {JCL}, {JPL}, {JRL}, {JRN}, {JSA}, {JTC},
	{JTS}, {KAP}, {KBS}, {KCL}, {KEE}, {KFX}, {KIS}, {KMS}, {KRC},
	{KRL}, {KRS}, {KSL}, {LAN}, {LAP}, {LAU}, {LAX}, {LBE}, {LBL},
	{LCC}, {LCF}, {LCL}, {LCS}, {LDB}, {LDL}, {LDP}, {LDT}, {LEP},
	{LER}, {LGN}, {LIS}, {LLC}, {LML}, {LNF}, {LOC}, {LOL}, {LOM},
	{LOP}, {LPC}, {LPG}, {LPI}, {LPL}, {LPS}, {LPT}, {LSE}, {LSL},
	{LTR}, {MAC}, {MAD}, {MAL}, {MAN}, {MAO}, {MAP}, {MAS}, {MBS},
	{MCA}, {MCC}, {MCI}, {MCL}, {MCP}, {MCS}, {MDL}, {MFE}, {MHS},
	{MIB}, {MIG}, {MIS}, {MIT}, {MIX}, {MJS}, {MLL}, {MML}, {MNP},
	{MPG}, {MPL}, {MPV}, {MRS}, {MTS}, {MTU}, {MUD}, {MVC}, {MVS},
	{NAG}, {NAK}, {NAS}, {NBS}, {NCD}, {NCS}, {NDL}, {NFA}, {NFS},
	{NFT}, {NGL}, {NIC}, {NIH}, {NII}, {NIL}, {NIS}, {NLS}, {NMI},
	{NOC}, {NPL}, {NQS}, {NSE}, {NSF}, {NSS}, {NTP}, {OBE}, {OBJ},
	{OCL}, {OCR}, {OCS}, {ODA}, {ODC}, {ODI}, {ODP}, {ODT}, {OEM},
	{OIC}, {OIL}, {OLC}, {OLE}, {OMA}, {OMF}, {OMG}, {OMT}, {ONC},
	{OOA}, {OOD}, {OOF}, {OOP}, {OPS}, {ORB}, {OSA}, {OSE}, {OSF},
	{OSI}, {OTI}, {OTT}, {OWL}, {PAD}, {PAL}, {PAT}, {PAW}, {PBD},
	{PBM}, {PBX}, {PCA}, {PCF}, {PCI}, {PCL}, {PCN}, {PCS}, {PDA},
	{PDF}, {PDL}, {PDP}, {PDS}, {PDU}, {PEM}, {PER}, {PEX}, {PFE},
	{PFL}, {PGP}, {PIC}, {PIE}, {PIL}, {PIP}, {PIT}, {PMC}, {PML},
	{POC}, {POE}, {POM}, {PPL}, {PPM}, {PPN}, {PPP}, {PRA}, {PRI},
	{PRL}, {PSA}, {PSD}, {PSI}, {PSL}, {PSN}, {PTI}, {PTT}, {PUB},
	{PVM}, {QAM}, {QBE}, {QNX}, {QPE}, {RAD}, {RAL}, {RAM}, {RCC},
	{RCL}, {RCS}, {RDL}, {RDS}, {REC}, {RFC}, {RFE}, {RFT}, {RGB},
	{RIP}, {RLF}, {RLL}, {RMS}, {RNF}, {RPC}, {RPG}, {RPI}, {RPL},
	{RPT}, {RRS}, {RSA}, {RSI}, {RSL}, {RSN}, {RTF}, {RTI}, {RTL},
	{RTM}, {RTT}, {SAA}, {SAC}, {SAL}, {SAP}, {SAS}, {SBM}, {SCC},
	{SCI}, {SCL}, {SCO}, {SDE}, {SDF}, {SDH}, {SDL}, {SDM}, {SDS},
	{SEA}, {SED}, {SEE}, {SEI}, {SEL}, {SEM}, {SEP}, {SET}, {SEX},
	{SFL}, {SGI}, {SIA}, {SIG}, {SIL}, {SIR}, {SMG}, {SMI}, {SML},
	{SMM}, {SMP}, {SNA}, {SOL}, {SOM}, {SOS}, {SPC}, {SPG}, {SPL},
	{SPM}, {SPS}, {SPX}, {SQL}, {SRI}, {SRL}, {SRP}, {SSA}, {SSL},
	{STB}, {STD}, {SYN}, {TAC}, {TAL}, {TAO}, {TBK}, {TCB}, {TCL},
	{TCM}, {TCP}, {TDF}, {TDR}, {TEI}, {TET}, {TIA}, {TIP}, {TLA},
	{TLB}, {TMG}, {TNX}, {TOK}, {TOP}, {TPL}, {TPS}, {TPU}, {TRO},
	{TRS}, {TSO}, {TSP}, {TSR}, {TTL}, {TXL}, {UAN}, {UAW}, {UBD},
	{UCB}, {UDP}, {UFO}, {UIL}, {UIS}, {ULP}, {UNI}, {URC}, {URI},
	{URL}, {URN}, {USE}, {USL}, {USR}, {UTC}, {UTP}, {VAL}, {VAR},
	{VAX}, {VDL}, {VDM}, {VEE}, {VEL}, {VGA}, {VHE}, {VIF}, {VLB},
	{VME}, {VML}, {VMS}, {VPL}, {VSF}, {VSP}, {VSX}, {VTS}, {VUE},
	{WAM}, {WAN}, {WCL}, {WEB}, {WFL}, {WRT}, {WSL}, {WTF}, {WTH},
	{WWW}, {XDL}, {XDR}, {XIE}, {XNF}, {XNS}, {XON}, {XPC}, {XPG},
	{XPL}, {XRN}, {XSB}, {XSI}, {XTI}, {XUI}, {XVT}, {XXX}, {YSM},
	{ZAP}, {ZIF}, {ZIL}, {ZOG}, {ZUG}

	(14 Dec 1994)

TLB

	{Translation Look-aside Buffer}

TL/I

	An intermediate language for {Turing Machine}s.

	["Examples of Formal Semantics", D. Knuth in Symp on Semantics
	of Algorithmic Languages, E. Engeler ed, LNM 188, Springer
	1971, pp. 212-235].

	(02 Dec 1994)

T Lisp

	See {T}.

TM

	1. {Turing Machine}.

	2. A formal {database specification language}.

(TM)

	Trademark.

	{ASCII} rendition of the trademark-superscript symbol appended
	to phrases that the author feels should be recorded for
	posterity.

	It is sometimes used ironically as a form of protest against
	the recent spate of {software patents} and {algorithm} patents
	and "{look and feel}" lawsuits.

	See also {UN*X}.

	(02 Dec 1994)

TMDL

	{Target-Machine Description Language}

TMG

	TransMoGrifier.

	An early language for writing {recursive descent} compilers.
	It was {macro}ed from the {IBM 1604} to the {IBM 709} to the
	{IBM 7094} to the {GE635}, where it was used by McIlroy and
	Morris to write the {EPL} compiler for {Multics}.

	["TMG - A Syntax-Directed Compiler", R.M. McClure, Proc ACM
	20th Natl Conf (1965)].

	[Sammet 1969, p.636].

	(02 Dec 1994)

TMRC

	/tmerk'/ The Tech Model Railroad Club at {MIT}, one of the
	wellsprings of {hacker} culture.  The 1959 "Dictionary of the
	TMRC Language" compiled by Peter Samson included several terms
	that became basics of the hackish vocabulary (see especially
	{foo}, {mung}, and {frob}).

	By 1962, TMRC's legendary layout was already a marvel of
	complexity (and has grown in the thirty years since; all the
	features described here are still present).  The control
	system alone featured about 1200 relays.  There were {scram
	switch}es located at numerous places around the room that
	could be thwacked if something undesirable was about to occur,
	such as a train going full-bore at an obstruction.  Another
	feature of the system was a digital clock on the dispatch
	board, which was itself something of a wonder in those bygone
	days before cheap LEDS and seven-segment displays.  When
	someone hit a scram switch the clock stopped and the display
	was replaced with the word "FOO"; at TMRC the scram switches
	are therefore called "foo switches".

	Steven Levy, in his book "Hackers", gives a stimulating
	account of those early years.  TMRC's Power and Signals group
	included most of the early {PDP-1} hackers and the people who
	later bacame the core of the {MIT} {AI Lab} staff.  Thirty
	years later that connection is still very much alive, and this
	dictionary accordingly includes a number of entries from a
	recent revision of the TMRC dictionary (via the Hacker Jargon
	File).

TMRCie

	/tmerk'ee/, (MIT) A denizen of {TMRC}.

TMS 9900

	One of the first true 16-bit {microprocessor}s, released by
	{Texas Instruments} in June 1976 (the first are probably
	{National Semiconductor} {IMP-16} or {AMD-2901} {bit slice
	processor}s in 16-bit configuration).  It was designed as a
	single chip version of the {TI 990} {minicomputer} series,
	much like the {Intersil 6100} was a single chip {PDP-8}, and
	the {Fairchild 9440} and {Data General mN601} were both one
	chip versions of {Data General}'s {Nova}.  Unlike the IMS
	6100, however, the TMS 9900 had a mature, well thought out
	design.

	It had a 15-bit {address space} and two internal 16 bit
	{register}s.  One unique feature was that all user {register}s
	were actually kept in memory - this included {stack pointer}s
	and the {program counter}.  A single workspace {register}
	pointed to the 16 {register set} in {RAM}, so when a
	subroutine was entered or an {interrupt} was processed, only
	the single workspace register had to be changed - unlike some
	{CPU}s which required dozens or more register saves before
	acknowledging a {context switch}.

	This was feasible at the time because {RAM} was often faster
	than the {CPU}s.  A few modern designs, such as the {INMOS}
	{transputer}, use this same design using {cache}s or {rotating
	buffer}s, for the same reason of faster {context switch}es.
	Other chips of the time, such as the {650x} series had a
	similar philosophy, using {index register}s, but the TMS 9900
	went the farthest in this direction.

	That wasn't the only positive feature of the chip.  It had
	good {interrupt} handling features and very good instruction
	set.  Serial I/O was available through address lines.  In
	typical comparisons with the {Intel 8086}, the TMS9900 had
	smaller and faster programs.  The only disadvantage was the
	small {address space} and need for fast {RAM}.

	Despite very poor support from Texas Instruments, the TMS 9900
	had the potential at one point to surpass the {Intel 8086} in
	popularity.

	(30 Nov 1994)

tn3270

	A program, similar to {telnet}, used to connect to remote
	{IBM} {mainframe} {host}s, many of which do not understand
	telnet.  The program emulates a {3270}-type terminal.

	For many tn3270 versions, the "clear screen" function is
	activated by typing Control-Z.  When logged on to an IBM host
	and "HOLDING" or "MORE..."  appears at the lower right corner
	of the screen, the "clear screen" function must be entered to
	display the next screen.  tn3270 emulations usually include
	{function key} definitions.

	(03 Nov 1994)

TNC

	<hardware> A threaded version of a {BNC}.

	(21 Dec 1996)

TNSTAAFL

	{TANSTAAFL}

TNX

	<chat> Thanks.  Also "TNX 1.0E6" or "{TNXE6}" - thanks a
	million.

	(19 May 1996)

TNXE6

	Thanks a million.  "E" is used in many programming languages
	to separate the mantissa and exponent of a {floating-point}
	constant so a number ending in "E6" means "times ten to the
	power six", i.e. times a million.

to a first approximation

	1. When one is doing certain numerical computations, an
	approximate solution may be computed by any of several
	heuristic methods, then refined to a final value.  By using
	the starting point of a first approximation of the answer, one
	can write an algorithm that converges more quickly to the
	correct result.

	2. In jargon, a preface to any comment that indicates that the
	comment is only approximately true.  The remark "To a first
	approximation, I feel good" might indicate that deeper
	questioning would reveal that not all is perfect (e.g. a
	nagging cough still remains after an illness).

toast

	<jargon> 1. Any completely inoperable system or component,
	especially one that has just crashed and burned: "Uh, oh ... I
	think the serial board is toast."

	2. To cause a system to crash accidentally, especially in a
	manner that requires manual rebooting.  "Rick just toasted the
	{firewall machine} again."

	Compare {fried}.

	(01 May 1995)

toaster

	<jargon> 1. The archetypal really stupid {application} for an
	{embedded} {microprocessor} controller; often used in comments
	that imply that a scheme is inappropriate technology (but see
	{elevator controller}).  "{DWIM} for an assembler?  That'd be
	as silly as running {Unix} on your toaster!"

	2. A very, very dumb computer. "You could run this program on
	any dumb toaster."

	See {bitty box}, {Get a real computer!}, {toy}, {beige
	toaster}.

	3. A {Macintosh}, especially the {Classic Mac}.  Some hold
	that this is implied by sense 2.

	4. A peripheral device.  "I bought my box without toasters,
	but since then I've added two boards and a second disk drive".

	This is not usually to be taken literally but, to show off the
	expansion capabilities of the {Risc PC}, {Acorn Computers
	Ltd.} built a seven-slice machine (which they called "the
	rocket-ship") and installed every imaginable peripheral.  In a
	spare drive bay of the top slice they installed a toaster.
	This machine was exhibited at various shows where it attracted
	attention by occasionally ejecting a pizza.

	(18 Jul 1997)

toasternet

	<networking> 1. A low cost, low tech, publicly accessible
	local community {network}.  This is probably an extension of
	the term "{toaster}" used to mean a small, cheap, slow
	computer.

	{community networks
	(gopher://gopher.well.sf.ca.us/00/Community/communets/about.nets)}.

	2. The title of some informal notes on {Internet address}ing,
	("Toasternet Part I and II"), circulated on the {IETF}
	{mailing list} during November 1991 and March 1992.

	Subsequent work was published in June 1993 in {RFC 1475} and
	{RFC 1476} and the "{CATNIP}" {Internet-Draft} by Robert
	L. Ullmann

	(01 May 1995)

to a zeroth approximation

	<jargon> (From "to a first approximation") A *really* sloppy
	approximation; a wild guess.

	Compare {social science number}.

	(12 Dec 1994)

toeprint

	<jargon> A {footprint} of especially small size.

	(12 Dec 1994)

toggle

	To change a {bit} from whatever state it is in to the other
	state; to change from 1 to 0 or from 0 to 1.  This comes from
	"toggle switches", such as standard light switches, though the
	word "toggle" actually refers to the mechanism that keeps the
	switch in the position to which it is flipped rather than to
	the fact that the switch has two positions.  There are four
	things you can do to a bit: set it (force it to be 1), clear
	(or zero) it, leave it alone, or toggle it.

	(12 Dec 1994)

TOK

	Referred to in Ursula K. LeGuin's "Always Coming Home."  Seems
	to be similar to the original {BASIC}.

	(12 Dec 1994)

token

	1. A basic, grammatically indivisible unit of a language such
	as a {keyword}, operator or identifier.

	2. An abstact concept passed between cooperating agents to
	ensure synchronised access to a shared resource.  Such a token
	is never duplicated or destroyed (unless the resource is) and
	whoever has the token has exclusive access to the resource it
	controls.  See for example {token ring}.  If several
	programmers are working on a program, one programmer will
	"have the token" at any time, meaning that only he can change
	the program whereas others can only read it.  If someone else
	wants to modify it he must first obtain the token.

token bus

	<networking> (IEEE 802.4) A networking protocol which mediates
	access to a {bus} topology network as though it were a {token
	ring}.  This eliminates the {collisions} found in {carrier
	sense collision detect} protocols.  {Nodes} can be configured
	to pass the token in any order, not necessarily related to
	their physical ordering on the bus.  The token is sent from
	one node to its successor in the logical ring by broadcast on
	the bus and is ignored by the other nodes.

	(13 Dec 1996)

token ring

	A computer {local area network} arbitration scheme in which
	conflicts in the transmission of messages are avoided by the
	granting of "tokens" which give permission to send.  A station
	keeps the token while transmitting a message, if it has a
	message to transmit, and then passes it on to the next
	station.

	Often, "Token Ring" is used to refer to the {IEEE 802.5} token
	ring {standard}, which is the most common type of token ring.

	{Usenet} newsgroup: {news:comp.dcom.lans.token-ring}.

Tom Knight

	<person> A noted {hacker} at {MIT}.

	{(http://www.ai.mit.edu/people/tk/tk.html)}

	(12 Dec 1996)

tool

	1. <tool> A program used primarily to create, manipulate,
	modify, or analyse other programs, such as a compiler or an
	editor or a cross-referencing program.  Opposite: {app},
	{operating system}.

	2. A {Unix} {application program} with a simple, "transparent"
	(typically text-stream) interface designed specifically to be
	used in programmed combination with other tools (see {filter},
	{plumbing}).

	3. <jargon> ({MIT}: general to students there) To work; to
	study (connotes tedium).  The {TMRC} Dictionary defined this
	as "to set one's brain to the grindstone".  See {hack}.

	4. <jargon, person> ({MIT}) A student who studies too much and
	hacks too little.  MIT's student humour magazine rejoices in
	the name "Tool and Die".

	(12 Dec 1996)

tool bar

	<operating system> A common {graphical user interface}
	component, consisting of a permanently visible row of button
	{icons} which, when clicked with the {mouse}, cause the
	program to perform some action such as printing the current
	document or changing the {mode} of operation.

	The tool bar buttons often duplicate functions accessible via
	{menus} but are easier to use since they are permanently
	visible.  A typical use would be in a {paint} program where
	the tool bar allows the users to select one of the various
	painting "tools" - brush, pencil, bucket etc.

	(22 Nov 1997)

toolbook

	<tool> A {Microsoft Windows} utility to make easy-to-use
	applications with a {graphical user interface}.  E.g. a guided
	tour of some software.

	(14 Mar 1995)

Toolbuilder

	{Tool Builder Kit}

Tool Builder Kit

	<tool> (TBK) A product from {IPSYS} which allows users to
	develop {CASE} tools appropriate to any {software engineering}
	{methodology}.

	(08 May 1996)

Tool Command Language

	<language> /tik*l/ (TCL) A string processing language for
	issuing commands to interactive programs, by John Ousterhout
	<ouster@cs.berkeley.edu> of {UCB}.  Each {application program}
	can extend tcl with its own set of commands.

	TCL is like a text-oriented {Lisp}, but lets you write
	algebraic expressions for simplicity and to avoid scaring
	people away.  It was not designed to be a serious programming
	language.  It was designed to be a "scripting language".  It
	lacks (numerically indexed) arrays and {structures} and
	numerical operations are slow.  Tcl is only sufficient for
	small programs.  It has a peculiar but simple {syntax}.  It
	may be used as an embedded {interpreter} in {application
	programs}.  It has {exceptions} and {packages} (called
	libraries) but only a single {name-space}.  It has
	provide/require but no {dynamic loading}.  It is {8 bit
	clean}.  It has only three variable types: strings, lists and
	{associative arrays}.

	Current version: 7.3.

	{comp.lang.tcl FAQ
	(ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/tcl-faq)}.

	See also {Cygnus Tcl Tools}, {tclx}, {tcl-debug}, {tk}.

	{(ftp://ftp.cs.berkeley.edu/ucb/tcl/)}.  {MS-DOS
	(ftp://cajal.uoregon.edu/)}.  {Macintosh
	(ftp://bric-a-brac.apple.com/pub/ticl)}.  {Macintosh
	(ftp://harbor.ecn.purdue.edu/pub/tcl/distrib/)}.  {Kanji
	(ftp://srawgw.sra.co.jp/pub/lang/tcl/jp/tk3.2jp-patch.Z)}.

	{Usenet} newsgroup: {news:comp.lang.tcl}.

	["Tcl: An Embeddable Command Language", J. Ousterhout, Proc
	1990 Winter USENIX Conf].

	(08 May 1996)

TOOLS

	<event> {Technology of Object-Oriented Languages and
	Systems}.

	(29 Dec 1995)

toolsmith

	The software equivalent of a tool-and-die specialist; one who
	specialises in making the {tool}s with which other programmers
	create applications.  Many hackers consider this more fun than
	applications per se; to understand why, see {uninteresting}.
	Jon Bentley, in the "Bumper-Sticker Computer Science" chapter
	of his book "More Programming Pearls", quotes Dick Sites from
	DEC as saying "I'd rather write programs to write programs
	than write programs".

TOP

	{Technical/Office Protocol}

top-down design

	<programming> (Or "stepwise refinement").  The software design
	technique which aims to describe functionality at a very high
	level, then partition it repeatedly into more detailed levels
	one level at a time until the detail is sufficient to allow
	coding.  This approach to software design probably originated
	at {IBM}, and grew out of {structured programming} practices.

	(04 Aug 1996)

Top-Down Model

	<programming> A method for estimating the overall cost and
	effort of the proposed software project from global properties
	of the project.  The total cost and schedule is partitioned
	into components for planning purposes.

	(29 May 1996)

topic drift

	<messaging> Term used on GEnie, {Usenet} and other electronic
	fora to describe the tendency of a {thread} to drift away from
	the original subject of discussion (and thus, from the Subject
	header of the originating message), or the results of that
	tendency.

	Often used in gentle reminders that the discussion has strayed
	off any useful track.  "I think we started with a question
	about Niven's last book, but we've ended up discussing the
	sexual habits of the common marmoset.  Now *that's* topic
	drift!"

	(29 May 1996)

topic group

	Synonym {forum}.

topic thread

	[{Usenet}, GEnie, CompuServe] A more or less continuous chain
	of postings on a single topic.  To "follow a thread" is to
	read a series of {Usenet} postings sharing a common subject or
	(more correctly) which are connected by Reference headers.
	The better newsreaders can present news in thread order
	automatically.

top-level domain

	<networking> The last and most significant component of an
	{Internet} {fully qualified domain name}, the part after the
	last ".".  For example, {host} wombat.doc.ic.ac.uk is in
	top-level domain "uk" (for United Kingdom).

	Every other country has its own top-level domain, including
	".us" for the U.S.A.  Within the .us domain, there are
	subdomains for the fifty states, each generally with a name
	identical to the state's postal abbreviation.  These are
	rarely used however.  Within the .uk domain, there is a .ac.uk
	subdomain for academic sites and a .co.uk domain for
	commercial ones.  Other top-level domains may be divided up in
	similar ways.

	In the US and some other countries, the following top-level
	domains are used much more widely than the country code:

		.com - commercial bodies
		.edu - educational institutions
		.gov - U. S. government
		.mil - U. S. armed services
		.net - network operators
		.org - other organisations

	Since the rapid commercialisation of the Internet in the 1990s
	the ".com" domain has become particularly heavily populated
	with every company trying to register its company name as a
	subdomain of .com, e.g. "netscape.com" so as to make it easy
	for customers to guess or remember the {URL} of the comany's
	{home page}.

	United Nations entities use the domain names of the countries
	where they are located.  The UN headquarters facility in New
	York City, for example, is un.org.

	Several new top-level domains are about to be added (Oct
	1997):
		.nom   - individual people
		.rec   - recreational organisations
		.firm  - businesses such as law, accounting, engineering
		.store - commercial retail companies
		.ent   - entertainment facilities and organisations

	(08 Oct 1997)

topology

	1. The study of interconnections.

	2. A {network} topology shows the {host}s and the links
	between them.  A {network layer} must stay abreast of the
	current network topology to be able to {route} {packet}s to
	their final destination.

TOPS-10

	/tops-ten/ DEC's proprietary OS for the fabled {PDP-10}
	machines, long a favourite of hackers but now effectively
	extinct.  A fountain of hacker folklore.  See also {ITS},
	{TOPS-20}, {TWENEX}, {VMS}, {operating system}.  TOPS-10 was
	sometimes called BOTS-10 (from "bottoms-ten") as a comment on
	the inappropriateness of describing it as the top of anything.

TOPS-20

	{TWENEX}

Tornado

	<programming> The {software development environment}
	previously distributed with {VxWorks}.

	(29 Nov 1996)

Toronto Euclid

	<language> The standard dialect of {Euclid}, as compared to
	{Ottawa Euclid}.

	(29 Nov 1996)

TOS

	<operating system> /toss/ The {operating system} of the
	{Atari} ST range of computers.  This range included the 512ST,
	1040ST and the F, FM and E variations (e.g.1040STE).  Later,
	32-bit machines (TT, Falcon030 and MegaSTE) were developed
	using a new version of TOS, called {MultiTOS} which was based
	on {MinT}.

	TOS went through several revisions starting initially as a
	derivative of {CP/M}, but developing into a remarkably
	complete and flexible operating system.  Features include: a
	{flat memory model}, {MS-DOS}-compatible disk format and
	support for {MIDI} and {SCSI} (in later versions).  TOS was
	designed to run Atari's version of the {GEM} {GUI}.

	There is some argument as to what TOS stands for, the main
	candidates being "Tramiel Operating System" (named after
	Atari's head at the time) or simply "The Operating System".

	(10 Jan 1997)

TOSS

	{Terminal Oriented Social Science}

total function

	<mathematics> A {function} which is defined for all arguments
	of the appropriate type.  The opposite is a {partial
	function}.

	(10 Jan 1997)

totally ordered

	<mathematics> Having a {total ordering}.

	(10 Jan 1997)

totally ordered set

	<mathematics> A {set} with a {total ordering}.

total ordering

	<mathematics> A {relation} R on a set A which is a {partial
	ordering}; i.e. it is reflexive (xRx), transitive (xRyRz =>
	xRz) and antisymmetric (xRyRx => x=y) and for any two elements
	x and y in A, either x R y or y R x.

	See also {equivalence relation}, {well-ordered}.

	(16 Feb 1995)

toto

	<programming> /toh-toh'/ The default scratch file name among
	French-speaking programmers - in other words, a francophone
	{foo}.  The phonetic mutations "titi", "tata", and "tutu"
	canonically follow "toto", analogously to {bar}, {baz} and
	{quux} in English.

	(18 Apr 1995)

touchpad

	<hardware> (Or "trackpad") A stationary {pointing device} used
	mainly on {laptop computers}.  Touchpads provide a small, flat
	surface that you slide your finger over using the same
	movements as you would a {mouse}.  They were originally
	developed to provide a more natural and intuitive connection
	for the computer user than the mouse.

	Touchpads use a principle called coupling {capacitance}, and
	requires a {conductive} pointer such as a finger.  They
	contain a two-layer grid of {electrodes} which are connected
	to an {integrated circuit} (IC) mounted under the pad.  The
	upper layer contains vertical electrode strips while the lower
	layer is composed of horizontal electrode strips.  Capacitance
	from each of the horizontal electrodes to each of the vertical
	electrodes is measured by the IC.  A finger near the
	intersection of two electrodes modifies the capacitance
	between them, since a finger has very different {dielectric}
	properties than air.  The position of the finger is precisely
	determined based on these changes at various locations.

	{Touchpad Technical Overview
	(http://www.glidepoint.com/techovr.htm)}.

	{Touchpad New Uses (http://www.synaptics.com)}.

	(02 Sep 1997)

touch screen

	<hardware> An input device that allows user to interact with
	computer by touching the display screen.

	Often this uses beams of infrared light that are projected
	across the screen surface.  Interrupting the beams generates
	an electronic signal identifying the location of the screen.
	Software interprets the signal and performs the required
	operation.

	(13 Apr 1995)

tourist

	<jargon> A guest on the system, especially one who generally
	logs in over a network from a remote location for {comm mode},
	{electronic mail}, {games} and other trivial purposes.  A
	tourist is one step below a {luser}.

	Hackers often spell this {turist}, perhaps by some sort of
	tenuous analogy with {luser} (this also expresses the {ITS}
	culture's penchant for six-letterisms).

	Compare {twink}, {read-only user}.

	(10 Mar 1995)

touristic

	<jargon> Having the quality of a {tourist}.

	(10 Mar 1995)

tourist information

	Information in an on-line display that is not immediately
	useful, but contributes to a viewer's gestalt of what's going
	on with the software or hardware behind it.  Whether a given
	piece of info falls in this category depends partly on what
	the user is looking for at any given time.  The "bytes free"
	information at the bottom of an {MS-DOS} "dir" display is
	tourist information; so (most of the time) is the TIME
	information in a {Unix} "ps(1)" display.

Tower Technology Corporation

	A company, established in 1992 by the merger of two {OOT}
	companies, with the intention of supplying high performance
	{Eiffel} compilation systems.  Tower provides development
	tools, reusable {class} libraries, and services supporting
	large scale system development.

	{(http://www.cm.cf.ac.uk/Tower/)}

	E-mail: <tower@twr.com> (orders and inquiries), <outlook@twr.com>
	(The Eiffel Outlook Journal).

	Telephone: +1 (512) 452 9455 (8:30 to 5:30 CST business days).
	Fax: +1 (512) 452 1721.  Sales +1 (800) 285-5124 (Free, USA
	and Canada only).

	Address: Tower Technology, 1501 W. Koenig Lane, Austin, TX
	78756, USA.

	(12 Dec 1994)

toy

	A computer system; always used with qualifiers.

	1. "nice toy": One that supports the speaker's hacking style
	adequately.

	2. "just a toy": A machine that yields insufficient
	{computron}s for the speaker's preferred uses.  This is not
	condemnatory, as is {bitty box}; toys can at least be fun.  It
	is also strongly conditioned by one's expectations; Cray XMP
	users sometimes consider the Cray-1 a "toy", and certainly all
	RISC boxes and mainframes are toys by their standards.  See
	also {Get a real computer!}.

Toy/Ada

	A {compiler} for a subset of {Ada}, written in {SML/NJ} by
	Amit Bhatiani <bhatiaa@polly.cs.rose-hulman.edu>.

	{(ftp://master.cs.rose-hulman.edu/pub/)}

	(08 Apr 1992)

toy language

	<language> A language useful for instructional purposes or as
	a proof-of-concept for some aspect of computer-science theory,
	but inadequate for general-purpose programming.  {Bad Thing}s
	can result when a toy language is promoted as a general
	purpose solution for programming (see {bondage-and-discipline
	language}); the classic example is {Pascal}.  Several
	moderately well-known formalisms for conceptual tasks such as
	programming {Turing Machine}s also qualify as toy languages in
	a less negative sense.

	See also {MFTL}.

	(09 May 1995)

toy problem

	[AI] A deliberately oversimplified case of a challenging
	problem used to investigate, prototype, or test algorithms for
	a real problem.  Sometimes used pejoratively.  See also
	{gedanken}, {toy program}.

toy program

	<programming> 1. A trivial program that can be readily
	comprehended.

	2. A program for which the effort of initial coding dominates
	the costs through its {life cycle}.

	See also {noddy}.

	(19 May 1996)

TPF

	{Transaction Processing Facility}

TP/IX

	<networking, protocol> An {Internet} {protocol}, described in
	{RFC 1475}, which changes {TCP} and {UDP} headers to give a
	64-bit {IP address}, a 32-bit {port} number, and a 64 bit
	sequence number.

	(03 Apr 1995)

TPL

	1. Table Producing Language.  "The Bureau of Labor Statistics
	Table Producing Language (TPL)", R.C. Mendelssohn, Proc ACM
	Annual Conf (1974).

	2. Fleming Nielson.  A concurrent {functional language}.

	3. Terminal Programming Language.  Texas Inst, late 70's.
	Used on the TI-990/1 Small Business Computer and the TI-771
	Intelligent Terminal.

TPO

	{twisted pair only}

TPS

	Tree Pruning System.  "An Adaptive Tree Pruning System: A
	Language for Programming Heuristic Tree Searches",
	E.W. Kozdrowicki, Proc ACM 23rd Natl Conf 1968.

tptc

	A {Turbo Pascal} to {Turbo C} translator.  Comes with full
	source.

	{(ftp://wuarchive.wustl.edu/mirrors/msdos/turbopas/tptc17*.zip)}

TPU

	Text Processing Utility.  DEC.  Language for creation of
	text-processing interfaces, used to implement DEC's Extensible
	VAX Editor (EVE).

TRAC

	Text Reckoning And Compiling.

	An interactive macro generator language for string
	manipulation by Calvin N. Mooers and Peter Deutsch
	<Deutsch@SMLI.Eng.Sun.Com>.  It derived ideas from {Macro
	SAP}.  There are versions for {PDP-1}, {PDP-8}, {PDP-10} and
	{PDP-11}.

	See also {MINT}, {SAM76}.

	E-mail: Preston Briggs <preston@rice.edu>.

	["TRAC: A Procedure- Describing Language for the Reactive
	Typewriter", Calvin N. Mooers, CACM 9(3):215-219 (Mar 1966).
	Rockford Research Inst, 1972].

	[Sammet 1969, pp.448-454].

	["Macro Processors", A.J. Cole, Cambridge U Press].

	(21 Dec 1994)

traceroute

	A (typically Unix) {TCP/IP} utility which allows the user to
	determine the {route} {packet}s are taking to a particular
	{host}.  Traceroute works by increasing the "{time to live}"
	value of packets and seeing how far they get, until they reach
	the given destination; thus, a lengthening trail of hosts
	passed through is built up.

trace scheduling

	<processor> A method of controlling and coordinating the
	operation of multiple hardware elements of a {Very Long
	Instruction Word} processor.  It was developed by Josh Fisher
	at the now-defunct {Multiflow Computer} Corporation

	[Details?]

	(01 Mar 1995)

track

	<storage> The part of a {disk} which passes under one
	read/write head while the head is stationary.  The number of
	tracks on a disk surface therefore corresponds to the number
	of different radial positions of the head(s).  The collection
	of all tracks on all surfaces at a given radial position is
	known a {cylinder} and each track is divided into {sectors}.

	(15 Jul 1997)

track ball

	{tracker ball}

tracker ball

	<hardware> A {pointing device} consisting of a ball housed in
	a socket containing sensors to detect rotation of the ball
	about two axes - like an upside-down {mouse}.  The user rolls
	the ball with his thumb or the palm of his hand to move a
	cursor.  Tracker balls are common on {CAD} {workstations} for
	ease of use and on modern {portable computers}, where there
	may be no desk space on which to use a {mouse}.  Some clip
	onto the side of the keyboard and have integral buttons which
	have the same function as mouse buttons.

	(04 Aug 1996)

tracking

	<text> The spacing between {characters} in a line of {text}.
	This is defined when a {font} is designed but can often be
	altered in order to change the appearance of the text or for
	special effects.

	Tracking should not be confused with {kerning} which deals
	with the spacing between certain pairs of characters.

	See also {leading}.

	(07 Jun 1996)

trackpad

	{touchpad}

tractor feed

	{sprocket feed}

TrafoLa

	<language> A {functional programming} language designed in the
	{PROSPECTRA} {ESPRIT} project to support declarative
	specification of {program transformations}.  It provides
	higher-order {pattern matching} on expression trees with
	{backtracking}.

	[Heckmann88].

	(07 Jun 1996)

Trafola-H

	A specification language for program transformations.
	Functional, statically typed, polymorphic, with extended
	constructs for pattern-matching.  "Trafola-H Reference
	Manual", R. Heckmann et al, U Saarlandes, Saarbrucken 1991.

trampoline

	An incredibly {hairy} technique, found in some {HLL} and
	program-overlay implementations (e.g. on the Macintosh), that
	involves on-the-fly generation of small executable (and,
	likely as not, self-modifying) code objects to do indirection
	between code sections.  These pieces of {live data} are called
	"trampolines".  Trampolines are notoriously difficult to
	understand in action; in fact, it is said by those who use
	this term that the trampoline that doesn't bend your brain is
	not the true trampoline.  See also {snap}.

TRANDIR

	TRANslation DIRector.  A language for syntax-directed
	compiling.  Sammet 1969, p.640.

TRANQUIL

	1966.  ALGOL-like language with sets and other extensions, for
	the Illiac IV.  "TRANQUIL: A Language for an Array Processing
	Computer", N.E. Abel et al, Proc SJCC 34 (1969).

TRANS

	TRAffic Network Simulation Language.  "A Model for Traffic
	Simulation and a Simulation Language for the General
	Transportation Problem", Proc FJCC 37 (1970).

transaction

	A unit of interaction with a {DBMS} or similar system.  It
	must be treated in a coherent and reliable way independent of
	other transactions.  See {atomic}.

Transaction Processing Facility

	<operating system> (TPF) A {real-time} {mainframe} {operating
	system} released by {IBM} around 1976.  TPF is particularly
	suited to organisations dealing in very high I/O message
	switching and large global networks.  Current users include
	British Airways (reservations), VISA International
	(authorisations), Holiday Inn, and Quantas.

	TPF was traditionally a {370/Assembler} environment although
	the latest, release 4.1, contains {C}.  Formerly known as ACP
	(Airline Control Program), it was renamed "TPF" to suggests
	its greater scope.

	It is common for TPF sites to use IBM's {MVS} and {VM}
	operating systems for {off-line} processing.

	(27 Aug 1996)

transceiver

	Transmitter-receiver.  The physical device that connects a
	{host} interface (e.g. an {Ethernet} controller) to a {local
	area network}.  Ethernet transceivers contain electronics that
	apply signals to the cable and sense other host's signals and
	collisions.  See also {CSMA/CD}.

TRANSCODE

	Early system on Ferut computer.  Listed in CACM 2(5):16 (May
	1959).

transducer

	1. A device for converting sound, temperature, pressure, light
	or other signals to or from an electronic signal.

	2. {Finite State Machine}.

	This term is used particularly in language theory where
	automata are often considered as {abstract machine}s capable
	of recognising the language defined by a {regular expression}.

	[M. Crochemore "tranducters and repetitions",
	Theoritical. Comp. Sc. 46 (1986)].

	(15 Feb 1995)

transfinite induction

	<mathematics> {Induction} over some (typically large)
	{ordinal}.

	(30 Mar 1995)

transformation

	See {program transformation}.

transistor

	<electronics> A three terminal {semiconductor} amplifying
	device, the fundamental component of most active electronic
	circuits, including digital electronics.  The transistor was
	invented on 23 Dec 1947 at {Bell Labs}.

	There are two kinds, the {bipolar transistor} (also called the
	junction transistor), and the {field effect transistor} (FET).

	Transistors and other components are interconnected to make
	complex {integrated circuit}s such as {logic gate}s,
	{microprocessor}s and memory.

	(05 Oct 1995)

Transistor-Transistor Logic

	(TTL) A common semiconductor technology for building discrete
	digital logic integrated circuits.  It originated from {Texas
	Instruments} in 1965.

	There have been several series of TTL logic:

	 7400:	10 ns propagation time, 10 mW/gate power consumption,
		obsolete;

	 74L00:	Low power: higher resistances, less dissipation
		(1 mW), longer propagation time (30 ns);

	 74H00: High power: lower resistances, more dissipation: less
		sensitivity for noise;

	 74S00: Schottky-clamped: faster switching (3 ns, 19 mW) by
		using Schottky diodes to prevent the transistors from
		saturation;

	 74LS00: Low power, Schottky-clamped (10 ns, 2 mW);

	 74AS00: Advanced Schottky: faster switching, less
		 dissipation, (1.5 ns, 10 mW);

	 74ALS00: Advanced Low power Schottky (4 ns, 1.3 mW).

	For each 74xxx family there is a corresponding 54xxx family.
	The 74 series are specified for operation at 0 - 70 C whereas
	the 54 (military) series can operate at -55 - 125 C

	See also {CMOS}, {ECL}.

TRANSIT

	Subsystem of ICES.  Sammet 1969, p.616.

transitive

	A relation R is transitive if x R y  &  y R z  =>  x R z.
	Equivalence relations, pre-, partial and total orders are all
	transitive.

transitive closure

	The transitive closure R* of a relation R is defined by

		x R y => x R* y
		x R y  and  y R* z => x R* z

	I.e. elements are related by R* if they are related by R
	directly or through some sequence of intermediate related
	elements.

	E.g. in graph theory, if R is the relation on nodes "has an
	edge leading to" then the transitive closure of R is the
	relation "has a path of zero or more edges to".  See also
	Reflexive transitive closure.

transit network

	A {network} which passes traffic between other networks in
	addition to carrying traffic for its own {host}s.  It must
	have paths to at least two other networks.

	See also {backbone}, {stub}.

	(30 Jan 1995)

Translation Look-aside Buffer

	A table used in a {virtual memory} system, which lists the
	{physical address} {page} number associated with each {virtual
	address} {page} number.  A TLB is used in conjunction with a
	{cache} whose tags are based on virtual addresses.  The
	virtual address is presented simultaneously to the TLB and to
	the cache so that cache access and virtual to physical address
	translation can proceed in parallel (the translation is done
	"on the side").  If the requested address is not cached then
	the physical address is used to locate the data in main
	memory.  The alternative would be to place the translation
	table between the cache and main memory so that it will only
	be activated once there was a cache miss.

	(30 Jan 1995)

Transmission Control Protocol

	(TCP) The most common {transport layer} {protocol} used on
	{Ethernet} and the {Internet}.  It was developed by {DARPA}.

	TCP is built on top of {Internet Protocol} (IP) and is nearly
	always seen in the combination {TCP/IP} (TCP over IP).  It
	adds {reliable communication}, {flow-control}, {multiplexing}
	and {connection-oriented} communication.  It provides
	{full-duplex}, process-to-process connections.

	Defined in {STD} 7, {RFC} 793.  It is {connection-oriented}
	and {stream-oriented}, as opposed to {User Datagram Protocol}.

transparent

	1. <jargon> Not visible, hidden; said of a system which
	functions in a manner not evident to the user.  For example,
	the {Domain Name System} transparently resolves a {fully
	qualified domain name} into an {Internet address} without the
	user being aware of it.

	Compare this to what {Donald Norman
	(http://www.atg.apple.com/Norman/)} calls "invisibility",
	which he illustrates from the user's point of view:

	"You use computers when you use many modern automobiles,
	microwave ovens, games, CD players and calculators.  You don't
	notice the computer because you think of yourself as doing the
	task, not as using the computer."  ["The Design of Everyday
	Things", New York, Doubleday, 1989, p. 185].

	2. <theory> Fully defined, known, predictable; said of a
	sub-system in which matters generally subject to volition or
	stochastic state change have been chosen, measured, or
	determined by the environment.  Thus for transparent systems,
	output is a known function of the inputs, and users can both
	predict the behaviour and depend upon it.

	(04 Jun 1996)

Transport Driver Interface

	<networking> (TDI) Developed by {SUN}, {IBM}, and {Microsoft}
	(and others?), the TDI is a {software} {interface} between the
	{protocols} and {application programing interface} layers of
	the {Windows NT network model}.

	(05 Nov 1997)

transport layer

	<networking> (Or "host-host layer" The middle layer in the
	{OSI} seven layer model.  The transport layer determines how
	to use the {network layer} to provide a virtual error-free,
	point to point connection so that host A can send messages to
	host B and they will arrive un-corrupted and in the correct
	order.  It establishes and dissolves connections between
	hosts.  It is used by the {session layer}.

	An example transport layer {protocol} is {Transmission Control
	Protocol} (TCP).

	{OSI} documents: {ITU} Rec. X.214 (ISO 8072), ITU Rec. X.224
	(ISO 8073).

	(07 Dec 1997)

transputer

	(Note lower case) A family of {microprocessor}s from {Inmos}
	with interprocessor links, programmable in {occam}.

	[More details?]

	(18 Nov 1994)

TRANS-USE

	Early system on IBM 1103 or 1103A.  Listed in CACM 2(5):16
	(May 1959).

trap

	1. A program interrupt, usually an interrupt caused by some
	exceptional situation in the user program.  In most cases, the
	OS performs some action, then returns control to the program.

	2. To cause a trap.  "These instructions trap to the monitor."
	Also used transitively to indicate the cause of the trap.
	"The monitor traps all input/output instructions."

	This term is associated with assembler programming
	("interrupt" or "exception" is more common among {HLL}
	programmers) and appears to be fading into history among
	programmers as the role of assembler continues to shrink.
	However, it is still important to computer architects and
	systems hackers (see {system}, sense 1), who use it to
	distinguish {deterministic}ally repeatable exceptions from
	timing-dependent ones (such as I/O interrupts).

trap door

	Or "trapdoor" 1. {back door}.

	2. {trap-door function}

trap-door function

	A function which is is easy to compute but whose inverse is
	very difficult to compute.  Such functions are {Good Thing}s
	with important applications in {cryptography}, specifically in
	{public-key cryptography}.

trash

	To destroy, e.g. the contents of a data structure.  The most
	common of the family of near-synonyms including {mung},
	{mangle}, and {scribble}.

	(03 Nov 1994)

Trash-80

	Derogatory name for {Tandy}'s {TRS-80}.

	(03 Nov 1994)

traveling salesman problem

	<spelling> US spelling of {travelling salesman problem}.

	(13 Dec 1996)

travelling salesman problem

	<algorithm, complexity> (TSP or "shortest path", US:
	"traveling") Given a set of towns and the distances between
	them, determine the shortest path starting from a given town,
	passing through all the other towns and returning to the first
	town.

	This is a famous problem with a variety of solutions of
	varying complexity and efficiency.  The simplest solution (the
	{brute force} approach) generates all possible routes and
	takes the shortest.  This becomes impractical as the number of
	towns, N, increases since the number of possible routes is
	!(N-1).  A more intelligent {algorithm} (similar to {iterative
	deepening}) considers the shortest path to each town which can
	be reached in one hop, then two hops, and so on until all
	towns have been visited.  At each stage the algorithm
	maintains a "frontier" of reachable towns along with the
	shortest route to each.  It then expands this frontier by one
	hop each time.

	{Pablo Moscato's TSP bibliography
	(http://www.ing.unlp.edu.ar/cetad/mos/TSPBIB_home.html)}.
	{Fractals and the TSP
	(http://www.ing.unlp.edu.ar/cetad/mos/FRACTAL_TSP_home.html)}.

	(15 Jul 1997)

trawl

	To sift through large volumes of data (e.g. {Usenet} postings,
	FTP archives, or the {Jargon File}) looking for something of
	interest.

tree

	<mathematics> A {connected graph} containing no
	cycles. i.e. there is only one route between any pair of
	nodes.  A tree with n nodes has n-1 edges.

	(10 May 1996)

tree-killer

	[Sun]  1. A printer.

	2. A person who wastes paper.  This epithet should be
	interpreted in a broad sense; "wasting paper" includes the
	production of {spiffy} but {content-free} documents.  Thus,
	most {suit}s are tree-killers.  The negative loading of this
	term may reflect the epithet "tree-killer" applied by
	Treebeard the Ent to the Orcs in J.R.R. Tolkien's "Lord of the
	Rings" (see also {elvish}, {elder days}).

TREET

	E.C. Haines, 1964.  An experimental variant of LISP1.5,
	implemented on the STRETCH computer.  Basic structure was a
	trinary tree.

	["The TREET {Time-Sharing} System", H.A. Bayard et al, Proc
	2nd Symp Symb and Alg Manip, ACM (Mar 1971)].

	[Sammet 1969, pp.457-461].

TREETRAN

	A {FORTRAN IV} subroutine package for tree manipulation.

treeware

	/tree'weir/ Printouts, books, and other information media made
	from pulped dead trees.  Compare {tree-killer}, see
	{documentation}.

Trellis

	1. An {object-oriented} language from the University of
	Karlsruhe(?) with {static type-checking} and {encapsulation}.

	2. An {object-oriented} application development system from
	{DEC}, based on the {Trellis} language.  (Formerly named Owl).

	E-mail: Jerry Smith <smith@pipe.enet.dec.com>

	["Persistent and Shared Objects in trellis/owl", P. O'Brien et
	al, Proc 1986 IEEE Workshop on Object-Oriented Database
	Systems, IEEE, NY 1986].

Trellis Code Modulation

	(TCM) A modulation technique with hardware {error detection
	and correction}.

	[Details?]

	(22 Feb 1995)

Trident

	<company> A {video card} manufacturer.

	[More info?]

	(16 Jul 1997)

trigger

	<database> An action causing the automatic invocation of a
	procedure, for instance to preserve {referential integrity}.
	A triggers goes into effect when a user attempts to modify
	data with an insert, delete, or update command.  A trigger can
	instruct the system to take any number of actions when a
	specified change is attempted.  By preventing incorrect,
	unauthorized, or inconsistent changes to data, triggers help
	maintain the integrity of the database.

	[Sybase SQL Server Release 10.0 Transact-SQL User's Guide].

	(22 Feb 1995)

TRIGMAN

	A system for {symbolic mathematics}, especially celestial
	mechanics.

	(14 Dec 1994)

trillion

	<mathematics> In Britain, France, and Germany, 10^18 or a
	million cubed.

	In the USA and Canada, 10^12.

	[Elsewhere?]

	(03 Oct 1996)

Trilogy

	A strongly typed Logic programming language with numerical
	constraint-solving over the natural numbers, developed by Paul
	Voda <voda@mff.uniba.cs> of {UBC} in 1988.  Trilogy is
	syntactically a blend of {Prolog}, {Lisp} and {Pascal}.  It
	contains three types of {clause}s: {predicate}s
	({backtracking} but no assignable variables), procedures
	(if-then-else but no backtracking; assignable variables), and
	subroutines (like procedures, but with input and system calls;
	callable only from top level or from other subroutines).

	["The Constraint Language Trilogy: Semantics and
	Computations", P. Voda <voda@wimsey.cs.ubc.ca>, Complete Logic
	Systems, 741 Blueridge Ave, North Vancouver BC, V7R 2J5].

	[Papers by Voda].

	[BYTE review].

triple DES

	<cryptography> A {product cipher} which, like {DES}, operates
	on 64-bit data blocks.  There are several forms, each of which
	uses the DES cipher 3 times.  Some forms use two 56-bit keys,
	some use three.  The DES "modes of operation" may also be used
	with triple-DES.

	(11 May 1995)

tri state

	<hardware> A feature of some {digital} electronic devices
	which allows a connector (pin) to either act as a normal
	output, driving a signal onto a line, or to be "tri stated" -
	set to a high-impedance ("high Z") condition.  This allows
	other outputs to drive signals onto the line.  Often the same
	connector also functions as an input when its output circuitry
	is tri stated.

	Tri-state outputs are typically used for the connection of
	several digital circuits to a shared {bus} onto which any one
	of them may output data for the others to input.

	(26 Jul 1996)

trit

	<unit> /trit/ (By analogy with "{bit}") One base-3 digit; the
	amount of information conveyed by a selection among one of
	three equally likely outcomes.  Trits arise, for example, in
	the context of a {flag} that should actually be able to assume
	*three* values - such as yes, no, or unknown.  Trits are
	sometimes jokingly called "3-state bits".  A trit may be
	semi-seriously referred to as "a bit and a half", although it
	is linearly equivalent to 1.5849625 bits (that is, log2(3)
	bits).

	(11 May 1995)

Triton

	<processor> {Intel}'s {Pentium} {core} logic {chip set}.  In
	addition to the traditional features, this chip set supports:
	{EDO DRAM} to increase the {bandwidth} of the {DRAM}
	interface; "{pipelined} {burst SRAM}" for a cheaper, faster
	{second level cache}; "{bus master} {IDE}" control logic to
	reduce processor load; a plug and play port for easy
	implementation of functions such as audio.

	The Triton I chipset (official name 82430FX) consists of 4
	chips: one 82437FX TSC (Triton Sysetm Controller), two 82438FX
	TDP (Triton Data Path), and one 82371FB PIIX (PCI IDE
	Xcellerator).  It supports {PB Cache}, {EDO DRAM}, and a
	maximum {PCI} and memory burst data transfer rate of 100
	{megabytes} per second.

	There are also {Moble Triton} (82430MX), {Triton II}
	(82430HX), and the {Triton VX} (82430VX) chip sets.

	{Introduction
	(http://www.asus.com.tw/Products/TB/triton-intro.html)}.

	(03 Apr 1996)

Triton II

	<processor> (Official name 82430HX) A version of {Intel}'s
	{Triton} processor chip set with all the features of the
	Triton I plus support for {ECC}, {parity RAM}, two-way {SMP},
	{USB}, and {Concurrent PCI} to improve speed.

	It consists of one 82439HX TXC and one 82371SB PIIX3.

	(03 Apr 1996)

Triton VX

	<processor> (Official name 82430VX) A version of {Intel}'s
	{Triton} processor chip set with all the features of the
	Triton I plus support for {SDRAM}, {USB}, and a {UMA} option.

	Triton VX consists of one 82437VX TVC, two 82438VX TVP, and
	one 82371SB PIIX3.

	(03 Apr 1996)

Trivial File Transfer Protocol

	<networking> (TFTP) A simple file transfer protocol used for
	{down-load}ing {boot code} to {diskless workstations}.

	TFTP is defined in {RFC 1350}.

	[Details?  Other uses?  Relationship to {FTP}?]

	(30 Aug 1997)

TRO

	{tail recursion optimisation}

troff

	<text, tool> /T'rof/ or /trof/ The grey eminence of {Unix}
	text processing; a formatting and phototypesetting program,
	written originally in {PDP-11} {assembly code} and then in
	barely-structured early {C} by the late Joseph Ossanna,
	modelled after the earlier {ROFF} which was in turn modelled
	after {Multics}' {RUNOFF} by Jerome Saltzer (*that* name came
	from the expression "to run off a copy").  A companion
	program, {nroff}, formats output for terminals and line
	printers.

	In 1979, Brian Kernighan modified troff so that it could drive
	phototypesetters other than the Graphic Systems CAT.  His
	paper describing that work ("A Typesetter-independent troff",
	AT&T CSTR #97) explains troff's durability.  After discussing
	the program's "obvious deficiencies - a rebarbative input
	syntax, mysterious and undocumented properties in some areas,
	and a voracious appetite for computer resources" and noting
	the ugliness and extreme hairiness of the code and internals,
	Kernighan concludes:

	None of these remarks should be taken as denigrating
	Ossanna's accomplishment with TROFF.  It has proven a
	remarkably robust tool, taking unbelievable abuse from a
	variety of preprocessors and being forced into uses that
	were never conceived of in the original design, all with
	considerable grace under fire.

	The success of {TeX} and desktop publishing systems have
	reduced troff's relative importance, but this tribute
	perfectly captures the strengths that secured troff a place in
	hacker folklore; indeed, it could be taken more generally as
	an indication of those qualities of good programs that, in the
	long run, hackers most admire.

	{groff} is {GNU}'s implementation of {roff} in {C++}.

	(21 Mar 1995)

troglodyte

	<jargon> (Commodore) 1. A hacker who never leaves his cubicle.
	The term "Gnoll" (from Dungeons & Dragons) is also reported.

	2. A curmudgeon attached to an obsolescent computing
	environment.  The combination "ITS troglodyte" was flung
	around some during the {Usenet} and {e-mail} wringle-wrangle
	attending the 2.x.x revision of the {Jargon File}; at least
	one of the people it was intended to describe adopted it with
	pride.

	(11 Jan 1995)

troglodyte mode

	<jargon> (Rice University) Programming with the lights turned
	off, sunglasses on, and the terminal inverted (black on white)
	because you've been up for so many days straight that your
	eyes hurt (see {raster burn}).  Loud music blaring from a
	stereo stacked in the corner is optional but recommended.

	See {larval stage}, {hack mode}.

	(21 Mar 1995)

Trojan horse

	<application, security> (Coined by
	{MIT}-hacker-turned-NSA-spook Dan Edwards) A malicious,
	security-breaking program that is disguised as something
	benign, such as a directory lister, archiver, game, or (in one
	notorious 1990 case on the Mac) a program to find and destroy
	{virus}es!  A Trojan horse is similar to a {back door}.

	See also {RFC 1135}, {worm}, {phage}, {mockingbird}.

	(21 Mar 1995)

TROLL

	An {array} language for {continuous simulation}, econometric
	modeling or statistical analysis.

	["TROLL Reference Manual", D0062, Info Proc Services, MIT
	(1973-76)].

troll

	An {electronic mail} message, {Usenet} posting or other
	(electronic) communication which is intentionally incorrect,
	but not overtly controversial (compare {flame bait}), or the
	act of sending such a message.  Trolling aims to elicit an
	emotional reaction from those with a hair-trigger on the reply
	key.  A really subtle troll makes some people lose their
	minds.

	(17 Oct 1994)

TRON

	<project> A project headed by Dr. Ken Sakamura of the
	{University of Tokyo} and supported by most of the major
	Japanese computer makers and {NTT}.

	(15 Mar 1995)

tron

	<jargon> ({NRL}, {CMU}, probably from the film "Tron") To
	become inaccessible except via {electronic mail} or {talk}
	especially when one is normally available via telephone or in
	person.

	Compare {spod}.

	(03 Nov 1994)

TRS

	{term rewriting system}

TRS-80

	<computer> A series of {personal computers} sold by {Tandy
	Radio Shack}.  The '80' refers to the use of {Zilog Z-80}
	processor (NOT {Intel 80x8x}).

	There were 7.5 computers in the TRS-80 line: Models I, II,
	III, 4, 100, 102, 200.  The Model 4P was a portable version of
	the Model 4 with no tape drive -- only 2 1/2-height single
	sided disk drives.

	Later models that Radio Shack produced were not TRS-80
	machines -- they were based on the {Intel 80x8x} architecture.
	These included Tandy 1000, Tandy 2000, Tandy 3000, and others.
	The 1000 had a proprietary Color card.  The 2000 was a
	powerful machine for its time, but was based on the {Intel
	80186}, so when {IBM} didn't build a computer based on this
	chip, it failed.  It was used to design a boat for the
	America's Cup.

	The TRS-80 {GUI}, DeskMate, was proprietary, but no more than
	{Windoze} at the time.

	Many joke about "{TRaSh-80}" machines but several models were
	in fact classics of their time.

	(18 Feb 1996)

True BASIC

	<language> A compiled {BASIC}, by John Kemeny and Thomas
	E. Kurtz, requiring no {line numbers}.

	(24 Mar 1996)

true colour

	<graphics> A system where the red, green, and blue components
	of a colour are stored in {display memory}, as opposed to
	storing {logical colours} and using a {colour palette} to
	convert them to red, green, blue components.

	The advantage of true colour over a palette is that it does
	not restrict the range of colours which can be displayed on
	screen simultaneously.  For example, if eight bits are used to
	store each component of each {pixel} then a total of 2^24
	(about 17 million) different colours can be displayed at once
	which would require a (very expensive) palette with 3 * 2^24
	bytes (about 50 megabytes) of memory.

	The disadvantage of true colour is that image transformations
	which would normally be done by changing the palette must be
	done to every pixel of the image which can be much slower.

	(24 Mar 1996)

true hacker

	<person> (By analogy with "trufan" from SF fandom) One who
	exemplifies the primary values of hacker culture, especially
	competence and helpfulness to other hackers.  A high
	compliment.  "He spent 6 hours helping me bring up UUCP and
	netnews on my FOOBAR 4000 last week - manifestly the act of a
	true-hacker".

	Compare {demigod}, opposite: {munchkin}.

	(07 Jan 1996)

TrueType

	<text, standard> An {outline font} {standard} first developed
	by {Apple Computer}, and later embraced by {Microsoft}, as a
	competitor to {Adobe}'s {PostScript} which is still more
	popular.

	(16 Mar 1995)

Trumpet

	A {news reader} for {Microsoft Windows}, using the {WinSock}
	library.  There is also an {MS-DOS} version.  Trumpet is
	{shareware} from Australia.

	{(ftp://ftp.utas.edu.au/pc/trumpet)}

	{(ftp://ftp.demon.co.uk/pub/ibmpc/winsock/stacks/trumpwsk/)}

	{news:alt.winsock.trumpet}.

	[Author?]

	(12 Jan 1995)

TRUSIX

	TRUSted Unix operating system.

truth table

	<Boolean algebra> A table listing all possible combinations of
	inputs and the corresponding output of a {Boolean} function
	such as {AND}, {OR}, {NOT}, {IMPLIES}, {XOR}, {NAND}, {NOR}.

	(14 Mar 1995)

TS

	Typed Smalltalk.

	A {Smalltalk} by Ralph Johnson <johnson@speedy.cs.uiuc.edu> of
	the {University of Illinois}.

	["TS: An Optimising Compiler for Smalltalk", R.E. Johnson et
	al, SIGPLAN Notices 23(11) (Nov 1988)].

	(12 Jan 1995)

TSAP

	<networking> Something to do with the {transport layer} of the
	{OSI} seven layer model.

	[What?]

	(07 Dec 1997)

TSEE

	Technical and Engineering Environment: part of the RTEE
	toolset.

Tsim

	Time Simulator.  Stack-based simulation language.  ZOLA
	Technologies, <ZOLA@Applelink.Apple.com>.

TSL-1

	Task Sequencing Language.  Language for specifying sequences
	of tasking events in Ada programs.

	["Task Sequencing Language for Specifying Distributed Ada
	Systems", D.C. Luckham et al in PARLE: Parallel Architectures
	and Langs Europe, LNCS 259, Springer 1987, pp.444-463].

TSO

	{Time Sharing Option}

TSP

	{travelling salesman problem}

TSR

	{Terminate and Stay Resident}

TTFN

	<chat> ta-ta for now (goodbye for now).

	[Is this used outside UK?]

	(18 Jan 1998)

TTL

	1. {transistor-transistor logic}.

	2. {Time to Live}.

TTS

	{Text To Speech}

tty

	<hardware> /tit'ee/ ({ITS} pronunciation, but some {Unix}
	people say it this way as well; this pronunciation is not
	considered to have sexual undertones) /T T Y/ 1. A {teletype}
	{terminal}, characterised by a noisy mechanical printer, a
	very limited character set, and poor print quality.  Usage:
	antiquated (like the TTYs themselves).

	See also {bit-paired keyboard}.

	2. (Especially {Unix}) Any terminal at all; sometimes used to
	refer to the particular terminal controlling a given job (it
	is also the name of a Unix command which outputs the name of
	the current controlling terminal).

	3. ({Unix}) Any {serial port}, whether or not the device
	connected to it is a terminal; so called because under Unix
	such devices have names of the form tty*.  Ambiguity between
	senses 2 and 3 is common but seldom bothersome.

	4. A {TDD}.

	(23 Nov 1995)

TTYL

	<chat> talk to you later.

	(18 Jan 1998)

TUB

	{Technische Universita't Berlin}.  (Berlin technical
	university).

TUBA

	<networking, protocol> An {Internet} {protocol}, described in
	{RFC 1347}, {RFC 1526} and {RFC 1561}, and based on the {OSI}
	{Connectionless Network Protocol} (CNLP).

	TUBA is one of the proposals for {Internet Protocol Version
	6}.

	(03 Apr 1995)

tube

	1. <hardware> A {CRT} terminal.  Never used in the mainstream
	sense of TV; real hackers don't watch TV, except for Loony
	Toons, Rocky & Bullwinkle, Trek Classic, the Simpsons, and the
	occasional cheesy old swashbuckler movie.

	2. <electronics> {electron tube}.

	3. <jargon> (IBM) To send a copy of something to someone
	else's terminal.  "Tube me that note."

	(05 Feb 1996)

tube time

	Time spent at a terminal or console.  More inclusive than
	hacking time; commonly used in discussions of what parts of
	one's environment one uses most heavily.  "I find I'm spending
	too much of my tube time reading mail since I started this
	revision."

Tuckals

	An old statistical package still in use on some {VM}
	computers.

	(28 Nov 1995)

Tui

	Functional.  "Tui Language Manual", B. Boutel, TR CSD-8-021,
	Victoria U of Wellington, 1988.

Tuki

	An intermediate code for functional languages.  "Another
	Implementation Technique for Applicative Languages", H. Glaser
	et al, ESOP86, LNCS 213, Springer 1986.

tunafish

	<humour, operating system> In hackish lore, refers to the
	mutated punchline of an age-old joke to be found at the bottom
	of the manual pages of "tunefs(8)" in the original {4.2BSD}
	distribution.  The joke was removed in later releases once
	commercial sites started using 4.2.  Tunefs relates to the
	"tuning" of {file-system} parameters for optimum performance,
	and at the bottom of a few pages of wizardly inscriptions was
	a "BUGS" section consisting of the line "You can tune a file
	system, but you can't tunafish".  Variants of this can be seen
	in other BSD versions, though it has been excised from some
	versions by humourless management {droid}s.  The [nt]roff
	source for SunOS 4.1.1 contains a comment apparently designed
	to prevent this: "Take this out and a Unix Demon will dog your
	steps from now until the "time_t's wrap around."

	(12 Jan 1997)

tune

	[automotive or musical usage] To optimise a program or system
	for a particular environment, especially by adjusting
	numerical parameters designed as {hook}s for tuning, e.g. by
	changing "#define" lines in C.  One may "tune for time"
	(fastest execution), "tune for space" (least memory use), or
	"tune for configuration" (most efficient use of hardware).
	See {bum}, {hot spot}, {hand-hacking}.

tunnelling

	<networking> (US: "tunneling") Encapsulation of {protocol} A
	within protocol B, such that A treats B as though it were a
	{data link layer}.  Tunnelling is used to get data between
	{administrative domains} which use a protocol that is not
	supported by the {internet} connecting those domains.

	(26 Mar 1997)

TUPLE

	Toyohashi University Parallel Lisp Environment.  A parallel
	Lisp based on KCL.

	["Memory Management and Garbage Collection of an Extended
	Common Lisp System for Massively Parallel SIMD Architecture",
	Taiichi Yuasa, in Memory Management, IWMM92, Springer 1992,
	490-507].

	(08 Nov 1994)

tuple

	In {functional language}s, a data object containing two or
	more components.  Also known as a product type or pair,
	triple, quad, etc.  Tuples of different sizes have different
	types, in contrast to lists where the type is independent of
	the length.  The components of a tuple may be of different
	types whereas all elements of a list have the same type.
	Examples of tuples in {Haskell} notation are (1,2),
	("Tuple",True), (w,(x,y),z).  The degenerate tuple with zero
	components, written (), is known as the unit type since it has
	only one possible value which is also written ().

	The implementation of tuples in a language may be either
	"{lifted}" or not.  If tuples are lifted then (bottom,bottom)
	/= bottom and the evaluation of a tuple may fail to terminate.
	E.g. in Haskell:

		f (x,y) = 1    -->    f bottom = bottom
				      f (bottom,bottom) = 1

	With lifted tuples, a tuple pattern is refutable.  Thus in
	Haskell, {pattern matching} on tuples is the same as pattern
	matching on types with multiple constructors ({algebraic data
	type}s) - the expression being matched is evaluated as far as
	the top level constructor, even though, in the case of tuples,
	there is only one possible constructor for a given type.

	If tuples are unlifted then (bottom, bottom) = bottom and
	evaluation of a tuple will never fail to terminate though any
	of the components may.  E.g. in {Miranda}:

		f (x,y) = 1    -->    f bottom = 1
				      f (bottom,bottom) = 1

	Thus in Miranda, any object whose type is compatible with a
	tuple pattern is assumed to match at the top level without
	evaluation - it is an {irrefutable} pattern.  This also
	applies to user defined data types with only one constructor.
	In Haskell, patterns can be made irrefutable by adding a "~"
	as in

		f ~(x,y) = 1.

	If tuple constructor functions were {strict} in all their
	arguments then (bottom,x) = (x,bottom) = bottom for any x so
	matching a refutable pattern would fail to terminate if any
	component was bottom.

Tuple Space Smalltalk

	["Using Tuple Space Communication in Distributed
	Object-Oriented Languages", S. Matsuoka et al, SIGPLAN Notices
	23(11):276-284 (Nov 1988)].

	(08 Nov 1994)

tupling

	A {program transformation} where several results are returned
	from a single traversal of a data structure.  E.g.

		mean l = sum l / length l

			==>

		mean l = s/n
			 where
			 (s,n) = sumLen l

		sumLen []     = (0,0)
		sumLen (x:xs) = (s+x, n+1)
				where
				(s,n) = sumLen xs

	In {procedural} languages this technique is known as
	{horizontal loop combination} because it uses one loop to
	calculate several results.

	Another form of tupling transformation is used to avoid
	repeated evaluation where a function generates several
	identical calls to itself.  By analysing the pattern of
	recursion (see {descent function}) it is possible to arrange
	for these identical calls to share results.  E.g.

		fib 0 = 1
		fib 1 = 1
		fib n = fib (n-1) + fib (n-2)

			==>

		fib n = v where (_,v) = fibt n
		fibt 0 = (1,1)
		fibt n = (u+v,u) where (u,v) = fibt (n-1)

	(12 Jan 1995)

Turbo C

	<language> {Borland}'s {C} {compiler} for {IBM PC}s.

	Turbo C, version 1.0, was introduced by Borland in 1987.  It
	offered the first integrated edit-compile-run development
	environment for {C} on {IBM PC}s.  It ran in 384KB of memory.
	It allowed inline assembly, supported all memory models, and
	offered optimisations for speed, size, {constant folding}, and
	{jump elimination}.

	Version 1.5 shipped on five 360 KB diskettes of uncompressed
	files, and came with sample C programs, including a stripped
	down spreadsheet called mcalc.

	Turbo C 2.0 has a debugger, a fast assembler, and an extensive
	graphics library.

	Turbo C has been largely supplanted by {Turbo C++}, introduced
	circa September, 1990 for both {MS-DOS} and {Microsoft
	Windows}.

	["Compiling the facts on C", Richard Hale Shaw, PC Magazine,
	September 13, 1988, pages 115-183].

	(31 Oct 1996)

turbo nerd

	{computer geek}

Turbo Pascal

	<language, product> {Borland International}'s {Pascal}.
	Perhaps the first integrated development environment for
	{MS-DOS}.

	Versions 1.0-3.0: standard Pascal with a few extensions
	Versions 4.0 (1987) and 5.0: {separate compilation}.  Version
	5.5: {object-oriented}.  Version 6.0: {Turbo Vision} OOP
	library.

	{Home (http://www.borland.com/Product/ProdInfo.html)}

	{tptc} translates Turbo Pascal to {Turbo C}.

	(01 May 1995)

Turbo Prolog

	A {strongly typed} Prolog-like {logic programming} language.
	1986.  It has user-defined domains.  Programs are arranged in
	sections: DOMAINS, CLAUSES, PREDICATES, DATABASE and GOAL.  It
	is currently known as {PDC Prolog} and is distributed by
	{Prolog Development Center}, Atlanta +1 404 873 1366.  E-mail:
	<pdc@mcimail.com>.

Turing

	1. {Alan Turing}.

	2. R.C. Holt <holt@csri.toronto.edu> & J.R. Cordy
	<cordy@qucis.queensu.ca>, U Toronto, 1982.  Descendant of
	Concurrent Euclid, an airtight super-Pascal.  Used mainly for
	teaching programming at both high school and university level.

	Available from Holt Software Assocs, Toronto.

	Versions for Sun, {MS-DOS}, Mac, etc.

	E-mail: <distrib@turing.toronto.edu>.

	["Turing Language Report", R.C. Holt & J.R. Cordy, Report
	CSRI-153, CSRI, U Toronto, Dec 1983].

	["The Turing Programming Language", R.C. Holt & J.R. Cordy,
	CACM 31(12) (Dec 1988)].

Turing Machine

	<computability> A hypothetical machine defined in 1935-6 by
	{Alan Turing} and used for {computability theory} proofs.  It
	consists of an infinitely long "tape" with symbols (chosen
	from some {finite set}) written at regular intervals.  A
	pointer marks the current position and the machine is in one
	of a finite set of "internal states".  At each step the
	machine reads the symbol at the current position on the tape.
	For each combination of current state and symbol read, a
	program specifies the new state and either a symbol to write
	to the tape or a direction to move the pointer (left or right)
	or to halt.

	In an alternative scheme, the machine writes a symbol to the
	tape *and* moves at each step.  This can be encoded as a write
	state followed by a move state for the write-or-move machine.
	If the write-and-move machine is also given a distance to move
	then it can emulate an write-or-move program by using states
	with a distance of zero.  A further variation is whether
	halting is an action like writing or moving or whether it is a
	special state.

	[What was Turing's original definition?]

	Without loss of generality, the symbol set can be limited to
	just "0" and "1" and the machine can be restricted to start on
	the leftmost 1 of the leftmost string of 1s with strings of 1s
	being separated by a single 0.  The tape may be infinite in
	one direction only, with the understanding that the machine
	will halt if it tries to move off the other end.

	All computer {instruction set}s, {high level language}s and
	computer architectures, including {parallel processor}s, can
	be shown to be equivalent to a Turing Machine and thus
	equivalent to each other in the sense that any problem that
	one can solve, any other can solve given sufficient time and
	memory.

	Turing generalised the idea of the Turing Machine to a
	"Universal Turing Machine" which was programmed to read
	instructions, as well as data, off the tape, thus giving rise
	to the idea of a general-purpose programmable computing
	device.  This idea still exists in modern computer design with
	low level {microcode} which directs the reading and decoding
	of higher level {machine code} instructions.

	A {busy beaver} is one kind of Turing Machine program.

	Dr. Hava Siegelmann of {Technion} reported in Science of 28
	Apr 1995 that she has found a mathematically rigorous class of
	machines, based on ideas from {chaos} theory and {neural
	network}s, that are more powerful than Turing Machines.  Sir
	Roger Penrose of {Oxford University} has argued that the brain
	can compute things that a Turing Machine cannot, which would
	mean that it would be impossible to create {artificial
	intelligence}.  Dr. Siegelmann's work suggests that this is
	true only for conventional computers and may not cover {neural
	network}s.

	See also {Turing tar-pit}, {finite state machine}.

	(10 May 1995)

Turingol

	<language> A {high-level language} for programming {Turing
	Machine}s by {Donald Knuth}.  It was the subject of the first
	construction of a nontrivial {attribute grammar}.

	["Semantics of Context-Free Languages", D. Knuth, Math Sys Thy
	2:127-145 (1975)].

	(08 Oct 1995)

Turing Plus

	Systems programming language, a concurrent descendant of
	Turing.

	["The Turing Plus Report", R.C. Holt & J.R. Cordy, CSRI, U
	Toronto, Feb 1987].

	Available from Holt Software Assocs, Toronto
	<distrib@hsa.on.ca>.

Turing tar-pit

	A place where anything is possible but nothing of interest is
	practical.  {Alan M. Turing} helped lay the foundations of
	computer science by showing that all machines and languages
	capable of expressing a certain very primitive set of
	operations are logically equivalent in the kinds of
	computations they can carry out, and in principle have
	capabilities that differ only in speed from those of the most
	powerful and elegantly designed computers.  However, no
	machine or language exactly matching Turing's primitive set
	has ever been built (other than possibly as a classroom
	exercise), because it would be horribly slow and far too
	painful to use.

	A "Turing tar-pit" is any computer language or other tool that
	shares this property.  That is, it's theoretically universal
	but in practice, the harder you struggle to get any real work
	done, the deeper its inadequacies suck you in.  Compare
	{bondage-and-discipline language}.

	[From tar pit: a geological occurence where subterranean tar
	leaks to the surface, creating a large puddle (or pit) of tar.
	Animals passing by would wander or fall in and get stuck,
	being unable to extricate themselves from the tar.  La Brea,
	California, has a museum built around the fossilized remains
	of dinosaurs found in such a tar pit.]

Turing test

	<artificial intelligence> A criterion proposed by {Alan
	Turing} in 1950 for deciding whether a computer is
	intelligent.  Turing called it "the Imitation Game" and
	offered it as a replacement for the question, "Can machines
	think?"

	A human holds a written conversation on any topic with an
	unseen correspondent (nowadays it might be by {electronic
	mail} or {chat}).  If the human believes he is talking to
	another human when he is really talking to a computer then the
	computer has passed the Turing test and is deemed to be
	intelligent.

	Turing predicted that within 50 years (by the year 2000)
	technological progress would produce computing machines with a
	capacity of 10**9 bits, and that with such machinery, a
	computer program would be able to fool the average questioner
	for 5 minutes about 70% of the time.

	The {Loebner Prize} is a competition to find a computer
	program which can pass an unrestricted Turing test.

	{Julia (http://fuzine.mt.cs.cmu.edu/mlm/julia.html)} is a
	program that attempts to pass the Turing test.

	See also {AI-complete}.

	(04 Jan 1995)

turist

	/too'rist/ Variant spelling of {tourist}.  Possibly influenced
	by {luser} and "{Turing}".

TURN

	<messaging, protocol> An {SMTP} command with which a {client}
	asks the {server} to open an SMTP connection to the client,
	thus reversing their roles.

	Superceded by {ETRN}.

	(21 Nov 1997)

turn-key

	<jargon, application> A term which describes a system
	(hardware and software) which can be used for a specific
	application without requiring further programming or software
	installation.  The user can just "turn the key" (switch it on)
	and use it.

	(06 Feb 1995)

TUTOR

	A Scripting language on {PLATO} systems from {CDC}.

	["The TUTOR Language", Bruce Sherwood, Control Data, 1977].

TUXEDO

	<database, networking> A {Database Transaction Monitor}
	("{Middleware}") offered by {Novell, Inc.}

	{Home (http://tuxedo.novell.com/tree.htm)}

	(22 Feb 1996)

TV

	{television}

TWAIN

	Technology Without An Important Name (or maybe "Interesting").

	An {open} {standard} industry interface that directly acquires
	image data from external sources such as {scanner}s without
	forcing you to leave the software application.  Used under
	{Microsoft} {Windows} 3 and on the {Macintosh}.

	[More detail?  On-line spec?  Other OSes?  Correct expansion?]

	(18 May 1995)

tweak

	1. To change slightly, usually in reference to a value.  Also
	used synonymously with {twiddle}.  If a program is almost
	correct, rather than figure out the precise problem you might
	just keep tweaking it until it works.  See {frobnicate} and
	{fudge factor}; also see {shotgun debugging}.

	2. To {tune} or {bum} a program; preferred usage in the UK.

tweening

	<graphics> An {interpolation} technique where an {animation}
	program generates extra frames between the key frames that the
	user has created.  This gives smoother animation without the
	user having to draw every frame.

	A scene is described by a mathematical model - a set of two-
	or three-dimensional objects whose positions in are given by
	sets of coordinates.  Tweening uses mathematical formulae to
	generate these coordinates at a sequence of discrete times.
	The simplest system would move each point at a constant rate
	in a straight line between its initial and final positions,
	though other kinds of path are possible.  The coordinates at
	each time step are used to generate (or "render") a
	two-dimensional image of the scene which forms one "frame" of
	the animation.

	Tweening is similar to {morphing} except that morphing is
	usually performed by interpolating between corresponding
	points marked by the user on two images, rather than between
	two configurations of a model.

	(04 Apr 1995)

tweeter

	{woofer}

TWENEX

	<operating system> /twe'neks/ The TOPS-20 {operating system}
	by {DEC} - the second proprietary OS for the {PDP-10} -
	preferred by most PDP-10 hackers over TOPS-10 (that is, by
	those who were not {ITS} or {WAITS} partisans).  TOPS-20 began
	in 1969 as {Bolt, Beranek & Newman}'s {TENEX} operating system
	using special paging hardware.  By the early 1970s, almost all
	of the systems on the {ARPANET} ran TENEX.  DEC purchased the
	rights to TENEX from BBN and began work to make it their own.
	The first in-house code name for the operating system was
	VIROS (VIRtual memory Operating System); when customers
	started asking questions, the name was changed to SNARK so DEC
	could truthfully deny that there was any project called VIROS.
	When the name SNARK became known, the name was briefly
	reversed to become KRANS; this was quickly abandoned when
	someone objected that "krans" meant "funeral wreath" in
	Swedish (though some Swedish speakers have since said it means
	simply "wreath"; this part of the story may be apocryphal).

	Ultimately DEC picked TOPS-20 as the name of the operating
	system, and it was as TOPS-20 that it was marketed.  The
	hacker community, mindful of its origins, quickly dubbed it
	TWENEX (a contraction of "twenty TENEX"), even though by this
	point very little of the original TENEX code remained
	(analogously to the differences between AT&T V6 Unix and BSD).
	DEC people cringed when they heard "TWENEX", but the term
	caught on nevertheless (the written abbreviation "20x" was
	also used).  TWENEX was successful and very popular; in fact,
	there was a period in the early 1980s when it commanded as
	fervent a culture of partisans as Unix or ITS - but DEC's
	decision to scrap all the internal rivals to the VAX
	architecture and its relatively stodgy VMS OS killed the
	DEC-20 and put a sad end to TWENEX's brief day in the sun.
	DEC attempted to convince TOPS-20 users to convert to {VMS},
	but instead, by the late 1980s, most of the TOPS-20 hackers
	had migrated to Unix.

	(01 Apr 1995)

Twentel

	A {functional language}.

	["The TWENTEL System (Version 1).", H. Kroeze, CS Dept TR, U
	Twente, 1986].

twiddle

	1. The tilde character ("~", ASCII 126).  Also called
	"squiggle", "sqiggle" (sic - pronounced /skig'l/), and
	"twaddle", but twiddle is the most common term.

	2. A small and insignificant change to a program.  Usually
	fixes one bug and generates several new ones (see also
	{shotgun debugging}).

	3. To change something in a small way.  Bits, for example, are
	often twiddled.  Twiddling a switch or knob implies much less
	sense of purpose than toggling or {tweak}ing it; see
	{frobnicate}.  {Bit twiddling} connotes aimlessness, and at
	best doesn't specify what you're doing to the bit; to
	"{toggle} a bit" has a more specific meaning.

	(31 Jan 1995)

TWIG

	Tree-Walking Instruction Generator.

	A {code generator} language.  {ML-Twig} is an {SML/NJ}
	variant.

	["Twig Language Manual", S.W.K. Tijang, CS TR 120, Bell Labs,
	1986].

	(31 Jan 1995)

twilight zone

	[IRC]  Notionally, the area of cyberspace where {IRC}
	operators live.  An {op} is said to have a "connection to the
	twilight zone".

twink

	/twink/ [UCSC] Equivalent to {read-only user}.  Also reported
	on the {Usenet} group soc.motss; may derive from gay slang for
	a cute young thing with nothing upstairs (compare mainstream
	"chick").

twinning

	<storage> Keeping a {mirror} of a {magnetic tape}.

	(18 Jul 1997)

twip

	<unit, graphics> (TWentIeth of a Point) 1/1440th of an inch,
	1/20 of a printer's {point}.  There are thus 1440 twips to an
	inch or about 567 twips to a centimeter.

	This unit of measurement seems only to have seen use in
	{Microsoft} formats and products- notably {Rich Text Format},
	{Visual BASIC}, and {Visual C++}.

	(26 July 1996)

	(18 Jul 1997)

twirling baton

	<graphics> The overstrike sequence -/|\-/|\- which produces an
	animated twirling baton.  If you output it with a single
	backspace between characters, the baton spins in place.  If
	you output the sequence BS SP between characters, the baton
	spins from left to right.  If you output BS SP BS BS between
	characters, the batton spins from right to left.

	The twirling baton was a popular component of animated
	signature files on the pioneering {PLATO} educational
	{time-sharing} system.  The "{archie}" {Internet} service is
	perhaps the best-known baton program today; it uses the
	twirling baton as an idler indicating that the program is
	working on a query.

	(23 Feb 1995)

twisted pair

	<hardware> A type of cable in which pairs of conductors are
	twisted together to randomise possible {cross-talk} from
	nearby wiring.  Inadequate twisting is detectable using modern
	cable testing instruments.

	(23 Feb 1995)

twisted pair only

	<networking> (TPO) A network connection to an {Ethernet}
	{PCMCIA} card using {twisted pair} cable.

	[Other options?]

	(12 May 1997)

twm

	Tab Window Manager.

	A {window manager} for the {X Window System}.  Twm provides
	{titlebar}s, shaped windows, several forms of icon management,
	user-defined macro functions, {click-to-type} and
	pointer-driven {keyboard focus}, and user-specified key and
	pointer button bindings.  It can be extensively configured by
	a startup file.

	Twm was written by Tom LaStrange, {Solbourne Computer}; Jim
	Fulton, MIT {X Consortium}; Steve Pitschke, {Stardent
	Computer}; Keith Packard, MIT X Consortium; Dave Sternlicht,
	MIT X Consortium; Dave Payne, {Apple Computer}.

	An extended version, {vtwm}, provides a {virtual desktop}.

	[Why "Tab"?]

	(14 Feb 1995)

.twmrc

	<operating system> (Tab Window Manager run commands) The
	configuration file for {twm}.

	See also {rc}.

	(09 Apr 1996)

two-binary, one-quaternary

	(2B1Q) {basic rate interface} {Integrated Services Digital
	Network} encoding.

	[What does it mean?]

	(25 Jan 1995)

twonkie

	/twon'kee/ The software equivalent of a Twinkie (a variety of
	sugar-loaded junk food, or (in gay slang) the male equivalent
	of "chick"); a useless "feature" added to look sexy and
	placate a {marketroid}.

	Compare {Saturday-night special}.

	The term may also be related to "The Twonky", title menace of
	a classic SF short story by Lewis Padgett (Henry Kuttner and
	C. L. Moore), first published in the September 1942
	"Astounding Science Fiction" and subsequently much
	anthologised.

	(20 Oct 1994)

twos complement

	A system used in some computers to represent negative numbers
	in {binary}.  Each {bit} of the number is inverted (zeros are
	replaced with ones and vice versa), as for {ones complement},
	but then one (000...0001) is added (ignoring overflow).  This
	avoids the two representations for zero found in ones
	complement by using all ones to represent -1.

		...
		000...00011 = +3
		000...00010 = +2
		000...00001 = +1
		000...00000 =  0
		111...11111 = -1
		111...11110 = -2
		111...11101 = -3
		...

	This representation simplifies the logic required for addition
	and subtraction, at the expense of a little extra complexity
	for negation.

	(31 Oct 1994)

two-to-the-N

	An amount much larger than {N} but smaller than {infinity}.
	"I have 2-to-the-N things to do before I can go out for lunch"
	means you probably won't show up.

	Numbers of the form two-to-the-N are very important in
	computing because they represent the value of bit N of a
	binary number (counting from 0) and the number of things you
	can count with an N bit number.

	(06 Dec 1994)

two-valued logic

	<logic> (Commonly known as "{Boolean algebra}") A mathematical
	system concerning the two {truth values}, TRUE and FALSE and
	the functions {AND}, {OR} and {NOT}.  Two-valued logic is one
	of the cornerstones of {logic} and is also fundamental in the
	design of digital electronics and programming languages.

	The term "Boolean" is used here with its common meaning -
	two-valued, though strictly {Boolean algebra} is more general
	than this.

	Boolean functions are ususally represented by {truth tables}
	where "0" represents "false" and "1" represents "true".  E.g.:

		A | B | A AND B
		--+---+--------
		0 | 0 |    0
		0 | 1 |    0
		1 | 0 |    0
		1 | 1 |    1

	This can be given more compactly using "x" to mean "don't
	care" (either true or false):

		A | B | A AND B
		--+---+--------
		0 | x |    0
		x | 0 |    0
		1 | 1 |    1

	Similarly:

		A | NOT A	A | B | A OR B
		--+------	--+---+--------
		0 |  1		0 | 0 |   0
		1 |  0		x | 1 |   1
				1 | x |   1

	Other functions such as {XOR}, {NAND}, {NOR} or functions or
	more than two inputs can be constructed using combinations of
	AND, OR and NOT.  AND and OR can be constructed from each
	other using {DeMorgan's Theorem}:

		A OR B   =  NOT ((NOT A) AND (NOT B))
		A AND B	 =  NOT ((NOT A) OR (NOT B))

	In fact any Boolean function can be constructed using just NOR
	or just NAND using the identities:

		NOT A  =  A NOR A
		A OR B  =  NOT (A NOR B)

	and {DeMorgan's Theorem}.

	(05 Jan 1995)

TX-0

	The first transistorised computer, the direct ancestor of the
	{PDP-1} built at {MIT}'s Lincoln Lab in 1957.

	(06 Dec 1994)

TXL

	Tree Transformation Language.

	A hybrid {functional language} and {rule-based language} by
	Jim R. Cordy <cordy@qucis.queensu.ca> et al of {Queen's
	University}, Canada in 1988.  TXL is suitable for performing
	source to source transformations and for rapidly prototyping
	new languages and language processors.  It uses {structural
	transformation}.

	It has also been used to prototype specification languages,
	command languages, and more traditional {program
	transformation} tasks such as {constant folding}, {type
	inference}, source optimisation and {reverse engineering}.
	TXL takes as input an arbitrary {context-free grammar} in
	extended {BNF}-like notation, and a set of show-by-example
	transformation rules to be applied to inputs parsed using the
	{grammar}.

	Version 7.4.  Source in {ANSI C}.

	{(ftp://ftp.qucis.queensu.ca/pub/txl/)}

	["TXL: A Rapid Prototyping System for Programming Language
	Dialects", J.R. Cordy et al, Comp Langs 16(1) (Jan 1991)].

	["Specification and Automatic Prototype Implementation of
	Polymorphic Objects in Turing Using the TXL Dialect
	Processor", J.R. Cordy & E.M. Promislow, Proc IEEE Intl Conf
	on Comp Lang ICCL'90 (Mar 1990)].

	(04 Aug 1993)

TYMCOM-X

	<operating system> {Tymshare}'s {operating system} which ran
	for many years on Tymshare's {PDP-10}s.  It was a descendent
	of {TOPS-10} but had many of the important features of
	{TOPS-20} such as real {paging} and controllable/spawnable
	processes.  TYMCOM-X, one of the best kept secrets in the
	PDP-10 folklore, was written by Bill Weiher, Vance Socci
	<vsocci@best.com>, Allen Ginzburg, Karen Kolling, Art
	Atkinson, Gary Morgenthaler (founder of the company that
	produced {IDRIS}), Todd Corenson and Murray Bowles.  Some
	copies still run today.  Most {TYMNET} development was done
	under TYMCOM-X and Tymshare sold a TYMCOM-X system to {TRW} to
	use in their credit reporting network, which was based on a
	purchased copy of TYMNET circa 1979.

	[E-mail from Vance Socci 20 May 1994].

	(09 Nov 1995)

TYMNET

	A United States-wide commercial computer network created by
	{Tymshare, Inc.} and used for remote login and file transfer.
	In its original implementation, it was made up of a number of
	fairly simple circuit-oriented nodes, whose circuits were
	created by one central network supervisor writing into the
	appropriate nodes' "permuter tables".  The supervisors also
	performed login validations as well as circuit management.
	Circuits were character oriented and the network was oriented
	towards interactive character-by-character {full duplex}
	communications circuits.

	There was a clever scheme to switch the echoing function
	between the local node and the host based on whether or not a
	special character had been typed by the user.  Data transfers
	were also possible via "auxiliary circuits".

	The network had more than one supervisor running, but only one
	was active, the others being put to sleep with "sleeping pill"
	messages.  If the active supervisor went down, all the others
	would wake up and battle for control of the network.  After
	the battle, the supervisor with the highest pre-set priority
	would dominate, and the network would then again be controlled
	by only one supervisor.  (During the takeover battle, the net
	consisted of subsets of itself across which new circuits could
	not be built).  Existing circuits were not affected by
	supervisor switches.

	{Tymshare, Inc.} originally wrote and implemented TYMNET on
	SDS/XDS-940 computers to provide nationwide access for their
	{time-sharing} customers.  When Tymshare started using
	{Interdata 8/32} {minicomputer}s as nodes they started
	developing TYMNET on {PDP-10}.  Tymshare sold the TYMNET
	network software to {TRW}, who created their own private
	network (which was not called TYMNET).  In about 1979, TYMNET
	Inc. was spun off from Tymshare, Inc. to continue
	administration and development of the network.

	TYMNET was the largest commercial network in the United States
	in its heyday, with nodes in every major US city and a few
	overseas as well.  Tymshare acquired a French subsidiary,
	{SLIGOS}, and had TYMNET nodes in Paris, France.

	TYMNET has outlived its parent company Tymshare and is now
	owned by {MCI}.  They still (May 1994) run three {DEC KL-10}s
	under {TYMCOM-X}, although they are going to be decommissioned
	soon.

	The original creators of TYMNET include: Ann Hardy, Norm
	Hardy, Bill Frantz, LaRoy Tymes (who always insisted that his
	name was NOT the source of the name TYMNET!) and Joe Rinde,
	who wrote the original supervisor program.

type

	<theory, programming> A set of values from which a variable or
	constant may take its value.

	If s and t are types, then so is s -> t.  Terms of type s -> t
	are {function}s from s to t; that is, give them a term of type
	s, and they will return a term of type t.

	Types supported by most programming languages include
	{integer}s (usually limited to some range so they will fit in
	one {word} of storage), {Boolean}s, {real number}s, and
	characters.

	(25 Mar 1995)

type assignment

	A mapping of the {free variable}s of some expression E to
	types.  This is used in {type inference} to deduce the type of
	E and its subexpressions.

type class

	A set of types for which certain operations or {method}s are
	defined.  E.g. the class Number might have methods for addition
	and subtraction.  {Class}es are a feature of {object oriented
	language}s and of the {functional programming} language
	{Haskell}.  See also {inheritance}.

typed lambda-calculus

	<theory> (TLC) A variety of {lambda-calculus} in which every
	term is labelled with a {type}.

	A {function application) (A B) is only synctactically valid if
	A has type s --> t, where the type of B is s (or an {instance}
	or s in a {polymorphic} language) and t is any type.

	If the types allowed for terms are restricted, e.g. to
	{Hindley-Milner type}s then no term may be applied to itself,
	thus avoiding one kind of non-terminating evaluation.

	Most {functional programming} languages, e.g. {Haskell}, {ML},
	are closely based on variants of the typed lambda-calculus.

	(25 Mar 1995)

TypedProlog

	<language> A {strongly typed} {logic programming} language.

	(25 Mar 1995)

typeface

	<text> The style or design of a {font}.  Other independent
	parameters are size, boldness (thickness of lines), and
	obliqueness (a sheer transformation applied to the characters,
	not to be confused with a specifically designed italic font).

	(02 Aug 1996)

type inference

	<programming> An {algorithm} for ascribing types to
	expressions in some language, based on the types of the
	constants of the language and a set of type inference rules
	such as

		f :: A -> B,  x :: A
		---------------------  (App)
		      f x :: B

	This rule, called "App" for application, says that if
	expression f has type A -> B and expression x has type A then
	we can deduce that expression (f x) has type B.  The
	expressions above the line are the premises and below, the
	conclusion.  An alternative notation often used is:

		G |- x : A

	where "|-" is the turnstile symbol ({LaTeX} \vdash) and G is a
	type assignment for the free variables of expression x.  The
	above can be read "under assumptions G, expression x has type
	A".  (As in Haskell, we use a double "::" for type
	declarations and a single ":" for the {infix} list constructor,
	cons).

	Given an expression

		plus (head l) 1

	we can label each subexpression with a type, using type
	variables X, Y, etc. for unknown types:

		(plus :: Int -> Int -> Int)
			(((head :: [a] -> a) (l :: Y)) :: X)
			(1 :: Int)

	We then use {unification} on {type variable}s to match the
	{partial application} of plus to its first argument against
	the App rule, yielding a type (Int -> Int) and a substitution
	X = Int.  Re-using App for the application to the second
	argument gives an overall type Int and no further
	substitutions.  Similarly, matching App against the
	application (head l) we get Y = [X].  We already know X = Int
	so therefore Y = [Int].

	This process is used both to infer types for expressions and
	to check that any types given by the user are consistent.

	See also {generic type variable}, {principal type}.

	(03 Feb 1995)

type scheme

	A typing of an expression which may include {type variable}s.
	E.g.

		\ x . x :: a -> a

	where a is a {generic type variable} which may be instantiated
	to any type.

	(31 Oct 1994)

typo

	{typographical error}

typographical error

	(typo) An error while inputting text via keyboard, made
	despite the fact that the user knows exactly what to type in.
	This usually results from the operator's inexperience at
	keyboarding, rushing, not paying attention, or carelessness.

	Compare: {mouso}, {thinko}.

	(20 Apr 1996)

TYPOL

	A specialised {logic programming} language.

	["TYPOL: A Formalism to Implement Natural Semantics",
	T. Despeyroux, RR 94, INRIA, 1988].

	(31 Oct 1994)

TZ

	<operating system> The {Unix} {environment variable}
	containing the current {time zone} identifier, e.g. "GMT",
	"EST".

	In early versions of Unix this variable simply contained the
	standard identifier for the zone, an offset in hours from GMT
	and an identifier to use during daylight saving time
	(e.g. "GMT0BST").  In later systems it stores the name of a
	file containing the details of a particular zone such as the
	dates when DST is in force.

	{Unix manual page}: ctime(3V).

	(20 Jul 1997)

UAN

	User Action Notation.  A notation from {VPI} for
	representation of activity in a {graphical user interface}.

	[H. Hartson et al, ACM Trans on Info Sys, July 1990].

	(31 Oct 1994)

UART

	{Universal Asynchronous Receiver/Transmitter}

UAW

	<spelling> Misspelling of "{IAW}".

UBASIC

	Yuji Kida <kida@rkmath.rikkyo.ac.jp>.

	An extension of {BASIC} for {symbolic mathematics} and {number
	theory}.

	UBASIC supports {bignum}s, fractions, complex numbers,
	polynomials and integer factorisation.  It runs under {MS-DOS}
	and is written in {assembly language}.  Current version: 8.

	{(ftp://ftp.simtel.com/math/utk/software/msdos/number.theory/ubasic/)}

	[Review, W.D. Neumann, Notices of AMS 36 (May/June 1989)]

	["A math-oriented high-precision BASIC", Notices of the A.M.S,
	38 (Mar 1991)].

	(06 Jul 1992)

UBD

	User Brain Damage.  An abbreviation used to close a trouble
	report obviously due to utter cluelessness on the user's part.
	Compare {pilot error}; opposite: {PBD}; see also {brain-damaged}.

ubiquitous computing

	Computers everywhere.  Making many computers available
	throughout the physical environment, while making them
	effectively invisible to the user.  Ubiquitous computing is
	held by some to be the Third Wave of computing.  The First
	Wave was many people per computer, the Second Wave was one
	person per computer.  The Third Wave will be many computers
	per person.  Three key technical issues are: power
	consumption, user interface, and wireless connectivity.

	The idea of ubiquitous computing as invisible computation was
	first articulated by Mark Weiser in 1988 at the Computer
	Science Lab at {Xerox PARC}.

	{(http://www.ubiq.com/hypertext/weiser/weiser.html)}

	(23 Dec 1994)

uC++

	Micro-C++.  A extension of {C++}, by Peter A Ruhr
	<pabuhr@plg.uwaterloo.ca> of the {University of Waterloo},
	with {light-weight concurrency} {coroutine}s and {mutual
	exclusion}.

	Version 3.7 for {Unix} uses {GCC} 2.3.3 and requires {dmake}
	3.0+ and the setitimer and sigcontext library calls.  It
	runs on {Sequent}, {Sun-4}, {Sun-3}, {Ultrix}, {SGI},
	{RS/6000}, {HP-PA}.

	{(ftp://plg.uwaterloo.ca/pub/uSystem/u++-3.7.tar.Z)}

	[Software--Practice and Experience, 22(2):137-172, February
	1992].

	(10 Jun 1993)

UCB

	{University of California at Berkeley}

U-Code

	Universal Pascal Code.  Intermediate language, a
	generalisation of P-code for easier optimisation.  Developed
	originally for the Los Alamos Cray-1 and the Lawrence
	Livermore S-1.  A refined version currently used by MIPS
	compilers is descended from one at Stanford U.  "Machine
	Independent Pascal Code Optimisation", D.R. Perkins et al,
	SIGPLAN Notices 14(8): 201-201 (1979).  "A Transporter's Guide
	to the Stanford U-Code Compiler System", P. Nye et al, TR CSL
	Stanford U, June 1983.  (See HPcode).

UCS

	{Universal Character Set}

UCSD Pascal

	{Pascal-P}

udb

	{Universal Debugger}

UDP

	{User Datagram Protocol}

uemacs

	{MicroEMACS}.  ("u" looks a bit like the Greek letter micro).

UFO

	<language> (United Functions and Objects) A hybrid
	{functional} and {object-oriented} language designed by John
	Seargant at {Manchester University} for general-purpose
	parallel computation.

	To a first approximation, UFO is a strict, higher-order
	functional language with an object-oriented type system, and
	strong support for numeric computation in the form of
	SISAL-style arrays and loops.  Parallelism is implicit, and
	applies at various different levels of granularity, thereby
	facilitating implementations on a wide range of parallel
	architectures.

	It is planned to run it on a 64 processor {KSR} machine.

	(22 Aug 1996)

UGLIAC

	AN early system on the {Datatron 200} series.

	[Listed in CACM 2(5):16 (May 1959)].

UHELP

	A {linear programming} system.

	["UHELP User's Manual", D. Singh, Indus Eng Dept, U Houston
	(Oct 1969)].

UI

	{Unix International}

uid

	{user identifier}

UIDL

	{Unique ID Listing}

UIL

	{User Interface Language}

UIMS

	User Interface Management System: a system supporting the
	development and execution of user interfaces, usually on top
	of windowing systems.

UIMX

	An interface builder for Motif from Visual Edge.

UIS

	A VMS graphics programming interface package for VAXstations.

UKUUG

	United Kingdom Unix Users Group.

	{(http://web.dcs.bbk.ac.uk/ukuug/home.html)}

ULCC

	{University of London Computing Centre}

Ulm's Modula-2 System

	<language> A {Modula-2} {compiler}, library and tools by
	Andreas Borchert <borchert@mathematik.uni-ulm.de>.  The
	compiler is derived from the {ETHZ} compiler for the {Lilith}
	system.  Version 2.2.1 conforms to {PIM3}.  It requires {gas}
	version 1.36 (to be found in the same directory).  Commercial
	use requires a licence.  It runs on {Sun3}, {Nixdorf}
	{Targon}/31, {Concurrent} 3200 Series.

	{(ftp://titania.mathematik.uni-ulm.de/pub/soft/modula/ulm/sun3/modula-2.2.1.tar.Z)}

	(02 Mar 1992)

ULP

	<language> A small structured language for use on
	{microprocessor}s.

	["User's Guide to the ULP Language for the PDP-11", CS TR 536,
	U Maryland (May 1977)].

	(19 Apr 1995)

Ultra64

	<hardware, games> A {Nintendo} games machine, unveiled in May
	1995.

	[Details?]

	(10 May 1995)

Ultra-ATA

	{Ultra DMA}

Ultra DMA

	<storage> /ul'tr* D M A/ (Or "Ultra-ATA", "ATA-4",
	"Ultra-DMA/33") An advancement to the {ATA} specifications
	which gives nearly twice the maximum transfer speed of the
	ATA-3 standard.

	ATA-4 Extensions Ultra DMA/33 Synchronous DMA Mode maximum
	burst transfer rates:

		Mode 	Cycle Time 	Transfer Rate
			ns		MB/s
		0 	235 		16
		1 	160 		24
		2 	120 		33

	This is achieved by improving timing windows in the {protocol}
	on the ATA {bus}; reducing propagation delays by {pipelining}
	data transfers and transferring data in {synchronous}
	(strobed) mode.

	(01 Dec 1997)

Ultra-SCSI

	<hardware> An extension of {SCSI-2} proposed by a group of
	manufacturers which doubles the transfer speed of {Fast-SCSI}
	to give 20MByte/s on an 8-bit connection and 40MByte/s on a
	16-bit connection.

	(19 Apr 1995)

Ultrix

	<operating system> A version of {Unix} based on the {Berkeley}
	version, designed and implemented by {DEC} to run on their
	{VAX} and {DECstation} processors.

	(26 Oct 1994)

UMB

	1. {Upper Memory Block}.

	2. A university(?).

	(10 Jan 1996)

UMB Scheme

	A {Scheme} system including an editor and debugger by William
	Campbell <bill@cs.umb.edu>.  Conforms to the {R4RS}.

	{(ftp://nexus.yorku.ca/pub/scheme/)}

	(28 Oct 1994)

UMDL

	{University of Michigan Digital Library Project}

UML

	{Unified Modeling Language}

uML

	{Micro ML}

UMTS

	{Universal Mobile Telecommunications System}

unary

	1. Having one argument, e.g. the unary minus operator which
	negates its argument.

	2. Base one.  A number base with only one digit, namely zero,
	and which can therefore only be used to express the number
	zero.  Attempting to add one to zero results in an infinite
	sequence of carries.  Numbers in unary notation can be
	represented particularly efficiently however since each digit
	requires no storage.

UNC

	<networking> {Uniform Naming Convention}.

	(09 Nov 1995)

UNCL

	{Universal Naming Code Locater}

UNCOL

	UNiversal Computer Oriented Language.  A universal
	intermediate language, discussed but never implemented.

	["A First Version of UNCOL", T.B. Steel, Proc JCC 19:371-378
	(Winter 1961)].

	[Sammet 1969, p.708].

uncurrying

	Transforming a curried function of the form f x y z = ... to
	one of the form f (x,y,z) = ... , i.e. all arguments are passed
	as one tuple.

undefined external reference

	[Unix] A message from {Unix}'s linker, {ld}.  Used in speech
	to flag loose ends or dangling references in an argument or
	discussion.

underflow

	<programming> (or "floating point underflow", "floating
	underflow", after "{overflow}") A condition that can occur
	when the result of a {floating-point} operation would be
	smaller in magnitude (closer to zero, either positive or
	negative) than the smallest quantity representable.  Underflow
	is actually (negative) {overflow} of the {exponent} of the
	{floating point} quantity.  For example, an eight-bit {twos
	complement} exponent can represent multipliers of 10^-128 to
	10^127.  A result less than 10^-128 would cause underflow.

	Depending on the {processor}, the programming language and the
	{run-time system}, underflow may set a status bit, raise an
	{exception} or generate a {hardware} {interrupt} or some
	combination of these effects.  Alternatively, it may just be
	ignored and zero substituted for the unrepresentable value,
	though this might lead to a later {divide by zero} error which
	cannot be so easily ignored.

	(25 Aug 1997)

Undernet

	<networking> An {Internet Relay Chat} network dating from the
	1990s, when it broke away from the main (still larger) IRC
	network, {EFNet}.

	{Home (http://www.undernet.org/)}

	{The History of the Undernet
	(http://www2.undernet.org:8080/~cs93jtl/unet_history.txt)}.

	(09 Nov 1995)

underscore

	<character> _, {ASCII} 95.

	Common names: {ITU-T}: underline; underscore; underbar; under.
	Rare: score; backarrow; skid; {INTERCAL}: flatworm.

	See also {left arrow}.

	(06 Mar 1995)

under the hood

	[hot-rodder talk] 1. The underlying implementation of a
	product (hardware, software, or idea).  Implies that the
	implementation is not intuitively obvious from the appearance,
	but the speaker is about to enable the listener to {grok} it.
	"Let's now look under the hood to see how ...."

	2. Can also imply that the implementation is much simpler than
	the appearance would indicate: "Under the hood, we are just
	fork/execing the shell."

	3. Inside a chassis, as in "Under the hood, this baby has a
	40MHz 68030!"

undocumented feature

	See {feature}.

U-NET Limited

	A {dial-up} {Internet} access provider based in Warrington,
	UK.  Speeds 4800 - 28.8kbps.  The currently support {Microsoft
	Windows} and {RISC OS} users.  For 12 pounds to join and 12
	pounds per month or 100 pounds per year you get a full {SLIP}
	account with a pernament {IP address} and {POP3} {electronic
	mail} account.  Membership includes a disk with {Mosaic},
	{Eudora}, {Trumpet2}, Newsreader, {FTP} and {Telnet} and full
	{Internet} access.  Users can choose their own {username} and
	{hostname}.  Allows some extra services such as more than one
	POP3 account per access account.  Username is significant so
	that a company can have accounts with the same hostname
	(i.e. their company name) but the mail going to diffent
	machines.  Mail in users POP3 account is accessible from
	anywhere not just via the dial-up connection.  On your next
	business trip you can still check your {e-mail} (provided you
	can get onto the Internet).

	{(http://www.u-net.com/)}

	E-mail: <hi@u-net.com>.

	(18 Nov 1994)

unfold

	{inline}

unfold/fold

	A {program transformation} where a {recursive} call to a
	function is {unfold}ed to an instance of the function's body
	and then later an instance of the function's body is replaced
	by a call.  E.g.

		sumdouble l = sum (double l)

		double l = case l of
		           []   -> []
			   x:xs -> 2*x + double xs

		==> (unfold double)

		sumdouble l = sum (case l of
			           []   -> []
				   x:xs -> 2*x : double xs)

		==> (distribute over case)

		sumdouble l = case l of
			      []   -> sum []
			      x:xs -> sum (2*x : double xs)

	 	==> (unfold sum)

		sumdouble l = case l of
			      []   -> 0
			      x:xs -> 2*x + sum (double xs)

	 	==> (fold sumdouble)

		sumdouble l = case l of
			      []   -> 0
			      x:xs -> 2*x + sumdouble xs

	(03 Nov 1994)

UNI

	{Ente Nazionale Italiano di Unificazione}

Unicode

	1. <character> A 16-bit {character set} standard, designed and
	maintained by the non-profit consortium Unicode Inc.

	Originally Unicode was designed to be universal, unique, and
	uniform, i.e., the code was to cover all major modern written
	languages (universal), each character was to have exactly one
	encoding (unique), and each character was to be represented by
	a fixed width in bits (uniform).

	Parallel to the development of Unicode an {ISO}/{IEC}
	standard was being worked on that put a large emphasis on
	being compatible with existing character codes such as {ASCII}
	or {ISO Latin 1}.  To avoid having two competing 16-bit
	standards, in 1992 the two teams compromised to define a
	common character code standard, known both as Unicode and
	{BMP}.

	Since the merger the character codes are the same but the two
	standards are not identical.  The ISO/IEC standard covers only
	coding while Unicode includes additional specifications that
	help implementation.

	Unicode is not a {glyph encoding}.  The same character can be
	displayed as a variety of {glyphs}, depending not only on the
	{font} and style, but also on the adjacent characters.  A
	sequence of characters can be displayed as a single glyph or a
	character can be displayed as a sequence of glyphs.  Which
	will be the case, is often font dependent.

	See also Jrgen Bettels and F. Avery Bishop's paper {Unicode:
	A universal character code
	(http://www.digital.com/info/DTJB02/DTJB02SC.TXT)}.

	2. <language> Pre-{FORTRAN} on the {IBM 1103}, similar to
	{MATH-MATIC}.

	[Sammet 1969, p.137].

	(15 Nov 1997)

unicos

	A {Unix} variant for {Cray} computers.

	[More details?]

	(06 Dec 1994)

Uniface

	1. <database, programming, product> a {4GL} {development
	environment} marketed by {Compuware}.  Uniface is database
	independent, with interfaces to more than 30 {database
	management} and {file retrieval system}s.  It is currently
	supported on {Macintosh}, {MS-DOS}, {Windows} (including
	{Windows 95}), {Unix}, and {VMS}.

	{Compuware Uniface web page
	(http://www.compuware.com/products/uniface/uniface.htm)}.

	{Usenet} newsgroup: {news:comp.soft-sys.app-builder.uniface}.

	Mailing list: UNIFACE-L at listserv@ctc.ctc.edu (development
	and support of software using Uniface).

	2. <text> Synonym of {bitmap font}.

	(18 Oct 1995)

unification

	<programming> The generalisation of {pattern matching} that is
	the {logic programming} equivalent of {instantiation} in
	{logic}.  When two {term}s are to be unified, they are
	compared.  If they are both constants then the result of
	unification is success if they are equal else failure.  If one
	is a variable then it is bound to the other, which may be any
	term (which satisfies an "{occurs check}"), and the
	unification succeeds.  If both terms are structures then each
	pair of sub-terms is unified {recursive}ly and the unification
	succeeds if all the sub-terms unify.

	The result of unification is either failure or success with a
	set of variable bindings, known as a "{unifier}".  There may
	be many such unifiers for any pair of terms but there will be
	at most one "{most general unifier}", other unifiers simply
	add extra bindings for sub-terms which are variables in the
	original terms.

	(14 Dec 1995)

Unified Modeling Language

	<language> (UML) A non-proprietary, third generation {modeling
	language}.  The Unified Modeling Language is an open method
	used to specify, visualise, construct and document the
	artifacts of an {object-oriented} software-intensive system
	under development.  The UML represents a compilation of "best
	engineering practices" which have proven successful in
	modeling large, complex systems.

	UML succeeds the concepts of {Booch}, {OMT} and {OOSE} by
	fusing them into a single, common and widely usable modeling
	language.  UML aims to be a standard modeling language which
	can model {concurrent} and distributed systems.

	UML is not an {industry standard}, but is taking shape under
	the auspices of the {Object Management Group} (OMG).  OMG has
	called for information on object-oriented methodologies, that
	might create a rigorous software modeling language.  Many
	industry leaders have responded in earnest to help create the
	standard.

	See also: {STP}, {IDE}.

	{UML guide (http://www.awl.com/cp/uml/uml.html)}.  {UML
	discussion (http://www.rational.com/HyperMail/otug)}.

	(08 Aug 1997)

unifier

	The unifier of a set of expressions is a set of substitutions
	of terms for variables such that the expressions are all
	equal.

	See also {most general unifier}, {unification}.

	(06 Dec 1994)

UNIFORM

	An intermediate language developed for reverse engineering
	both {COBOL} and {FORTRAN}.

	["The REDO Compendium", H. van Zuylen ed, Wiley 1993].

	(06 Dec 1994)

Uniform Naming Convention

	<networking> (UNC) Used in {IBM PC} networking to completely
	specify a directory on a {file server}.

	The basic format is:

		\\servername\sharename

	where "servername" is the {hostname} of a network file server,
	and "sharename" is the name of a networked or shared
	directory.  Note this is not the same as the conventional
	{MS-DOS} "C:\windows" directory name.  E.g.

		\\server1\dave

	might be set up to point to

		C:\users\homedirs\dave

	on a server called "server1".

	It is possible to execute a program using this convention
	without having to specifically link a drive, by running:

	\\server\share\directory\program.exe

	The {undocumented} DOS command, TRUENAME can be used to find
	out the UNC name of a file or directory on a network drive.

	(14 Nov 1995)

Uniform Resource Citation

	<World-Wide Web> (URC) A set of attribute/value pairs
	describing an object.  Some of the values may be {URI}s of
	various kinds.  Others may include, for example, athorship,
	publisher, datatype, date, copyright status and shoe size.  A
	URC is not normally considered as a string, but a set of
	fields and values with some defined free formatting.

	(24 Mar 1995)

Uniform Resource Locater

	{Uniform Resource Locator}

Uniform Resource Locator

	<World-Wide Web> (URL) (Previously "Universal").  A draft
	standard for specifying an object on the {Internet}, such as a
	file or a {newsgroup}.  URLs are used extensively on the
	{World-Wide Web}.  They are used in {HTML} documents to
	specify the target of a {hyperlink}.

	Here are some example URLs:

	 ftp://wuarchive.wustl.edu/mirrors/msdos/graphics/gifkit.zip
	 ftp://spy:secret@ftp.acme.com/pub/topsecret/weapon.tgz
	 http://www.w3.org/default.html
	 http://www.acme.co.uk:8080/images/map.gif
	 news:alt.hypertext
	 telnet://dra.com
	 mailto:dbh@doc.ic.ac.uk
	 http://wombat.doc.ic.ac.uk/?Uniform+Resource+Locator
	 http://www.w3.org/default.html#Introduction

	The part before the first colon specifies the access scheme or
	protocol.  The part after the colon is interpreted according
	to the access scheme.  In general, two slashes after the colon
	introduce a {hostname} (host:port is also valid, or for {FTP}
	user:passwd@host or user@host).  Schemes include: {ftp},
	{http} (World-Wide Web), {gopher} or {WAIS}.  The "file"
	scheme should only be used to refer to a file on the same host
	but is often used incorrectly as a synonym for ftp.  Other
	less commonly used schemes include {news}, {telnet} or mailto
	({e-mail}).  The port number can generally be omitted from the
	URL and will default to port 80.

	For an HTTP or FTP URL the next part is a {pathname} which is
	usually related to the pathname of a file on the server.  The
	file can contain any type of data but only certain types are
	interpreted dircetly by most {browsers}.  These include {HTML}
	and images in {gif} or {jpeg} format.  The file's type is
	given by a {MIME} type in the HTTP headers returned by the
	server, e.g. "text/html", "image/gif", and is usually also
	indicated by its {filename extension}.  A file whose type is
	not recognised directly by the browser may be passed to an
	external "viewer" {application}, e.g. a sound player.

	The last (optional) part of the URL may be a query string
	preceded by "?" or a "fragment identifier" preceded by "#".
	The later indicates a particular position within the specified
	document.

	Only alphanumerics, reserved characters (:/?#"<>%+) used for
	their reserved purposes and "$", "-", "_", ".", "&", "+" are
	safe and may be transmitted unencoded.  Other characters are
	encoded as a "%" followed by two {hexadecimal} digits.  Space
	may also be encoded as "+".  Standard {SGML} "&<name>;"
	character entity encodings (e.g. "&eacute;") are also accepted
	when URLs are embedded in HTML.  The terminating semicolon may
	be omitted if &<name> is followed by a non-letter character.

	{The authoritative URL specification
	(http://www.w3.org/hypertext/WWW/Addressing/Addressing.html)}
	from W3C.

	(10 Feb 1997)

Uniform Resource Name

	<World-Wide Web> (URN) 1. Any {URI} which is not a {URL}.

	2. A particular scheme which is currently (1991-4) under
	development by the {IETF}, which should provide for the
	resolution using {Internet} {protocol}s of names which have a
	greater persistence than that currently associated with
	Internet {host} names or organizations (as used in {URL}s).
	Uniform Resource Names will be URI schemes that improve on
	URLs in reliability over time, including authenticity,
	replication, and high availability.

	When defined, a URN in sense 1 will be an example of a URN in
	sense 2.

	{(http://www.w3.org/pub/WWW/Addressing/Addressing.html)}

	(27 Oct 1995)

Uniform Resource Number

	Former name for {Uniform Resource Name}.

Unify

	<database, product> A {relational database} produced by {Unify
	Corporation}.

	(15 Mar 1995)

unify

	<algorithm> To perform {unification}.

	(15 Mar 1995)

Unify Corporation

	<company> Developers of the {Unify} {relational database}.  At
	one time, before {Sybase}, they were a competitor of {Oracle},
	et al.

	{Home (http://www.unify.com/)}

	{(ftp://ftp.unify.com/)}.

	(15 Mar 1995)

uninstaller

	<operating system> A {utility} program to remove another
	{application program} from a computer's disks.

	Most commonly found on {IBM PCs}, as applications tend to
	leave files in various places on the {hard disc}, so special
	software is required to tidy up after them.

	Ken Spreitzer <ken@maximized.com> claims to have written the
	original PC program called "UnInstaller", first licensed to
	{MicroHelp} and now (Feb 1998) sold by {CyberMedia}.

	Compare with {installer}.

	(09 Feb 1998)

uninteresting

	<jargon> 1. Said of a problem that, although {nontrivial}, can
	be solved simply by throwing sufficient resources at it.

	2. Also said of problems for which a solution would neither
	advance the state of the art nor be fun to design and code.

	Hackers regard uninteresting problems as intolerable wastes of
	time, to be solved (if at all) by lesser mortals.  *Real*
	hackers (see {toolsmith}) generalise uninteresting problems
	enough to make them interesting and solve them - thus
	solving the original problem as a special case (and, it must
	be admitted, occasionally turning a molehill into a mountain,
	or a mountain into a tectonic plate).

	See {WOMBAT}, {SMOP}.  Compare {toy problem}.  Oppose
	{interesting}.

	(10 Mar 1995)

Uninterruptible Power Supply

	<hardware> A (battery powered) power supply that is guaranteed
	to provide working {voltage} to a computer regardless of
	interruptions in the incoming electrical power.  Different
	rating UPSs will provide power for different lengths of time.

	Modern UPSs connect to the computers {serial port} and provide
	information such as battery time remaining, allowing the
	computer to shut down {gracefully} before complete loss of
	power.

	(11 Dec 1996)

Unipalm Group plc

	<company> A company floated in March 1994.

	{Home (http://www.unipalm.co.uk/index.html)}.

	(11 Dec 1996)

Unipress Software, Inc.

	<company> A developer and distributor of {Unix} software.
	They produce PC-UNIX connectivity software, development tools
	and applications and provide technical support and
	maintenance, porting services, training and consulting.

	{Home (http://www.unipress.com/)}.

	(11 Dec 1996)

uniprocessor

	<processor> (From "uni" - one) A computer with a single
	{central processing unit}, in contrast to a {parallel
	processor}.  Most {personal computers} are currently (March
	1997) uniprocessors.  Some more expensive computers, typically
	{servers}, have multiple processors to provide increased
	{throughput}.

	See also {symmetric multiprocessor} and {massively parallel
	processor}.

	(23 Mar 1997)

UNIQUE

	<language> A {portable} {job control language}.

	["The UNIQUE Command Language - Portable Job Control",
	I.A. Newman, Proc DATAFAIR 73, 1973, pp. 353-357].

	(22 Nov 1994)

Unique ID Listing

	<messaging> (UIDL) A system used by {POP3} {electronic mail}
	{servers} to uniquely identify a mail message.  Normally, a
	message is identified by its position in the list of messages
	but this will change when an earlier message is deleted.  The
	UIDL is a fixed string of characters which is unique to the
	message.  The UIDL of a message never changes and will never
	be reused, even when the message has been deleted from the
	user's {mailbox}.

	{RFC 1725 (http://ds0.internic.net/rfc/rfc1725.txt)}.

	(16 Apr 1997)

unique key

	<database> A {key} which identifies only one body of
	information out of several.

	(26 Apr 1997)

UNISAP

	An early system on {UNIVAC} I or II.

	[Listed in CACM 2(5):16 (May 1959)].

	(22 Nov 1994)

Unisys Corporation

	<company> The company formed in 1984-5 when {Burroughs
	Corporation} merged with {Sperry Corporation}.  This was when
	the phrase "{dinosaurs mating}" was coined.

	Unisys is one of the largest providers of information
	services, technology, and software in the world.  They employ
	about 49,000 people and do business in some 100 countries.  In
	1994 about 80 percent of revenue was derived from commercial
	information systems and services, with the remainder coming
	from electronic systems and services for the defense market.
	The defense business was sold to {Loral} in early 1995.
	Slightly more than half of Unisys's revenue is from business
	in the United States.

	They specialise in providing business-critical solutions,
	based on open information networks, for organisations that
	operate in transaction-intensive environments.  These
	organisations include financial services companies, airlines,
	telecommunications companies, government agencies, and other
	commercial enterprises.

	In August 1994, quarterly sales were $1799M and profits $50M.

	{Home (http://www.unisys.com/)}

	(21 Mar 1995)

United Technologies Research Cente

	(UTRC) {http://utrcwww.utc.com/}.

	(29 Nov 1994)

Unit Separator

	<character> (US) {ASCII} character 31.

	(29 Jun 1996)

UNITY

	A high-level parallel language.

	A translator into {MPL} is available by
	{(ftp://sanfrancisco.ira.uka.de/pub/maspar/maspar_unity.tar.Z)}.

	See also {MasPar Unity}.

	["Parallel Program Design", K.M. Chandry and Misra, A-W 1988].

	(29 Nov 1994)

Univac

	<processor, company> A brand of computer.

	There is a historical placard in the United States Census
	Bureau that has the following, "The Bureau of the Census
	dedicated the world's first electronic general purpose data
	processing computer, UNIVAC I, on June 14, 1951.
	Eckert-Mauchly Computer Corporation".

	The {Eckert-Mauchly Computer Corporation} designed and built
	Univac.  Over the years, rights to the Univac name changed
	hands several times.  Circa 1987, {Sperry Univac} merged with
	the {Burroughs Corporation} to form {Unisys Corporation}.

	(22 Nov 1994)

Universal algebra

	<logic> The {model theory} of {first-order} {equational
	logic}.

	(25 Feb 1997)

Universal Asynchronous Receiver/Transmitter

	<communications, hardware> (UART) An {integrated circuit} used
	for serial communications, containing a transmitter
	(parallel-to-serial converter) and a receiver
	(serial-to-parallel converter), each clocked separately.

	The parallel side of a UART is usually connected to the {bus}
	of a computer.  When the computer writes a byte to the UART's
	transmit data register (TDR), the UART will start to transmit
	it on the serial line.  The UART's status register contains a
	{flag} bit which the computer can read to see if the UART is
	ready to transmit another byte.  Another status register bit
	says whether the UART has received a byte from the {serial
	line}, in which case the computer should read it from the
	receive data register (RDR).  If another byte is received
	before the previous one is read, the UART will signal an
	"overrun" error via another status bit.

	The UART may be set up to {interrupt} the computer when data
	is received or when ready to transmit more data.

	The UART's serial connections usually go via separate {line
	driver} and {line receiver} {integrated circuit}s which
	provide the power and voltages required to drive the serial
	line and give some protection against noise on the line.

	Data on the {serial line} is formatted by the {UART} according
	to the setting of the UART's control register.  This may also
	determine the transmit and recieve baud rates if the UART
	contains its own clock circuits or "{baud} rate generators".
	If incorrectly formated data is received the UART may signal a
	"{framing error}" or "{parity} error.

	Often the clock will run at 16 times the baud rate (bits per
	second) to allow the receiver to do {centre sampling} - i.e. to
	read each bit in the middle of its allotted time period.  This
	makes the UART more tolerant to variations in the {clock rate}
	("jitter") of the incoming data.

	An example of a late 1980s UART was the {Intel 8450}.  In the
	1990s, newer UARTs were developed with on-chip {buffer} space
	for data.  This allowed higher transmission speed without data
	loss and without requiring such frequent attention from the
	computer.  For example, the {Intel} {16550} has a 16 byte
	{FIFO}.

	See also {bit bang}.

	[Is this the same as an {ACIA}?]

	(12 Jan 1995)

Universal Character Set

	<character, standard> (UCS, ISO/IEC 10646) A 1993 {ISO} and
	{IEC} standard {character set}, also known as "Universal
	Multiple-Octet Coded Character Set".

	UCS comes in two flavours: a 16-bit variant called UCS-2 and a
	32-bit variant called UCS-4, which is composed of 16-bit UCS-2
	"planes".  So far only one 16-bit plane has been defined,
	which is known as the {Basic Multilingual Plane}.

	The implementation of UCS is still in in its infancy, though
	some moves, such as the {Java} language defining a character
	to be 16 bits, are tale-telling.

	(04 Jul 1997)

Universal Debugger

	<tool, parallel> (udb) {KSR}'s interactive {source level
	debugger} for serial and parallel programs written in {KSR},
	{Fortran}, {KSR C} and {KSR1} {assembly language}.

	Udb is a source level debugger for testing and debugging
	serial and parallel programs; it is compatible with {GDB} and
	{dbx}.  The user can direct udb either by typing commands or
	graphically through an {X}-based window interface; the latter
	provides simultaneous display of source code, I/O and
	instructions.  For parallel programs, operations can be
	carried out per-{thread}.

	{Home
	(http://www.tc.cornell.edu/Parallel.Tools/tools/udb.html)}.

	(07 May 1995)

universal quantifier

	See {quantifier}.

Universal Resource Identifier

	<www> (URI, originally "UDI" in some {WWW} documents) The
	generic set of all names and addresses which are short strings
	which refer to objects (typically on the {Internet}).  The
	most common kinds of URI are {URL}s and {relative URLs}.

	URIs are defined in {RFC 1630}.

	{W3 specification
	(http://www.w3.org/hypertext/WWW/Addressing/URL/URI_Overview.html)}.

	(16 Jul 1997)

Universal Resource Locator

	{Uniform Resource Locator}

Universal Serial Bus

	<hardware, standard> (USB) A {standard} promoted by {Intel}
	for communication between an {IBM PC} and external
	{peripherals} over an inexpensive cable using {biserial}
	transmission.

	USB works at 12 Mbps with specific cost consideration for low
	cost peripherals.  It supports up to 127 devices and both
	{isochronous} and {asynchronous} data transfers.  Cables can
	be up to 5 metres long and it includes built-in power
	distribution for low power devices.  It supports daisy
	chaining through a tiered star multidrop topology.

	Before March 1996 Intel started to integrate the necessary
	logic into PC {chip sets} and encourage other manufacturers to
	do likewise, so widespread availability and support can be
	expected starting the second half of 1997.

	Because its relatively low speed USB is intended to replace
	existing {serial ports}, {parallel ports}, {keyboard} and
	{monitor} connectors and be used with {keyboards}, {mice},
	{monitors}, {printers}, and possibly some low-speed {scanners}
	and removable {hard drives}.  For faster devices existing
	{IDE}, {SCSI}, or emerging {FC-AL} or {FireWire} interfaces
	can be used.

	{Home (http://www.teleport.com/~usb/)}

	(15 Mar 1997)

Universal Thunk

	<programming, operating system> A software mechanism allowing
	a {Windows 3.1} {application} to call a {32-bit} {dynamically
	linked library} (DLL) under {Win32s}.

	The {Windows 3.1} {application} which wants to call an entry
	in a 32-bit DLL instead calls a corresponding entry in a
	{16-bit} DLL.  The programmer must also include {code} to
	detect whether the {32-bit} DLL is loaded.  A {32-bit} {EXE}
	loads the {32-bit} DLL.

	See also {Generic Thunk}, {Flat Thunk}.

	["Calling a Win32 DLL from a Windows 3.1 Application", Win32
	SDK Knowledge Base, Article ID Q97785].

	[Better explanation?]

	(11 Oct 1997)

Universal Time Coordinated

	(UTC) Greenwich Mean Time (GMT).

University of Arizona

	<body, education> The University was founded in 1885 as a Land
	Grant institution with a three-fold mission of teaching,
	research and public service.  Today, the University is one of
	the top 20 research universities in the nation, with a student
	enrollment of more than 35,000, a faculty and staff of 12,500,
	and a 345-acre campus.

	{Home (http://www.arizona.edu/)}.

	Address: Tucson, Arizona, USA.

University of California at Berkeley

	<body, education> (UCB)

	See also {Berzerkley}, {BSD}.

	{Home (http://www.berkeley.edu/)}

	Note to British and Commonwealth readers: that's /berk'lee/,
	not /bark'lee/ as in British Received Pronunciation.

	(29 Nov 1994)

University of Durham

	<body, education> A busy research and teaching community in
	the historic cathedral city of Durham, UK (population 61000).
	Its work covers key branches of science and technology and
	traditional areas of scholarship.  Durham graduates are in
	great demand among employers and the University helps to
	attract investment into the region.  It provides training,
	short courses, and expertise for industry.  Through its
	cultural events, conferences, tourist business and as a major
	employer, the University contributes in a wide social and
	economic sense to the community.

	Founded in 1832, the University developed in Durham and
	Newcastle until 1963 when the independent University of
	Newcastle upon Tyne came into being.  Durham is a collegiate
	body, with 14 Colleges or Societies which are a social and
	domestic focus for students.  In 1992, the Universities of
	Durham and Teesside launched University College,
	Stockton-on-Tees, which has 190 students in the first year.

	{Home (http://www.dur.ac.uk/)}

	(17 Mar 1995)

University of East London

	<body, education> (UEL) A UK University with six academic
	Faculties: Design and The Built Environment, East London
	Business School, Institute Of Health and Rehabilitation,
	Faculty Of Science, Social Sciences and Technology.

	{Home (http://www.uel.ac.uk/)}

	(29 Nov 1994)

University of Edinburgh

	<body, education> A university in the centre of Scotland's
	capital.  The University of Edinburgh has been promoting and
	setting standards in education for over 400 years.  Granted
	its Royal Charter in 1582 by James VI, the son of Mary Queen
	of Scots, the University was founded the following year by the
	Town Council of Edinburgh, making it the first
	post-Reformation university in Scotland, and the first civic
	university to be established in the British Isles.

	Known in its early years as King James College, or the Tounis
	(Town's) College, the University soon established itself
	internationally, and by the 18th century Edinburgh was a
	leading centre of the European Enlightenment and one of the
	continent's principal universities.  The University's close
	relationship with the city in which it is based, coupled with
	a forward-looking, international perspective, has kept
	Edinburgh at the forefront of new research and teaching
	developments whilst enabling it to retain a uniquely Scottish
	character.

	Edinburgh's academics are at the forefront of developments in
	the study and application of languages, medicine,
	micro-electronics, biotechnology, computer-based disciplines
	and many other subjects.  Edinburgh's standing as a world
	centre for research is further enhanced by the presence on and
	around University precincts of many independently-funded, but
	closely linked, national research institutes

	{Home (http://www.ed.ac.uk/)}

	Address:  Old College, South Bridge, Edinburgh, Scotland EH8
	9YL, UK.

	Telephone: +44 (131) 650 1000.

	See also {ABSET}, {ABSYS}, {Alice}, {ASL+}, {Baroque},
	{C++Linda}, {Cogent Prolog}, {COWSEL}, {Echidna}, {Edinburgh
	Prolog}, {Edinburgh SML}, {EdML}, {ELLIS}, {ELSIE},
	{ESLPDPRO}, {Extended ML}, {Hope}, {IMP}, {LCF}, {Lisp-Linda},
	{Marseille Prolog}, {metalanguage}, {MIKE}, {ML}, {ML Kit},
	{ML-Linda}, {Multipop-68}, {Nuprl}, {Oblog}, {paraML},
	{Pascal-Linda}, {POP-1}, {POP-2}, {POPLER}, {Prolog},
	{Prolog-2}, {Prolog-Linda}, {Scheme-Linda}, {Skel-ML},
	{Standard ML}, {Sticks&Stones}, {supercombinators},
	{SWI-Prolog}, {tail recursion modulo cons}, {WPOP}.

	(29 Dec 1995)

University of Hawaii

	<body, education> A University spread over 10 campuses on 4
	islands throughout the state.

	{Home (http://www.hawaii.edu/uhinfo.html)}

	See also {Aloha}, {Aloha Net}.

	(10 Dec 1995)

University of Iceland

	<body, education> The Home of {Fjolnir}.

	Hskli slands.

	{Home (http://www.rhi.hi.is/)}

	(17 Mar 1995)

University of London Computing Centre

	<body, education> (ULCC) One of the UK's national high
	performance computing centres.  It provides networking
	services and large-scale computing facilities which are used
	by researchers from all over the UK.

	ULCC was founded in 1968 to provide a service for education
	and research.  It has been at the forefront of advanced
	research computing since its foundation, initially providing
	large-scale {CDC}-based facilities, then from 1982 to 1991 a
	national {Cray} {vector} supercomputing service.  Its high
	performance computing facilities are now centred on a 6
	processor, 4 Gbyte {Convex C3860} {supercomputer} (Neptune)
	with a Convex C3200 front-end (Pluto).

	ULCC is the main site for national and international network
	connections in the UK.  They run the {Network Operations and
	Service Centre} for the {JANET Internet Protocol Service}
	(JIPS), the largest of the {JANET} {NOC}s and various
	international links and relays on behalf of {UKERNA}.

	ULCC's pilot {National Data Repository} service provides a
	network-accessible digital archive and filestore, based on a
	robotic tape system with 6 Terabytes of storage.  Although the
	data is stored on tape, you can access it very quickly, as if
	it were on-line.  It is made available to you via high-speed
	links to the {JANET} and {SuperJANET} networks.

	{Home (http://www.ulcc.ac.uk/)}

	(29 Nov 1994)

University of Michigan

	<body, education> A large cosmopolitan university in the
	Midwest USA.  Over 50000 students are enrolled at the
	University of Michigan's three campuses.  The students come
	from 50 states and over 100 foreign countries.  70% of the
	University's students graduated in the top 10% of their high
	school class.  90% rank in the top 20% of their high school
	class.  60% of the students receive financial aid.

	The main Ann Arbor Campus lies in the Huron River valley, 40
	miles west of Detroit.  The campus boasts 2700 acres with 200
	buildings, six million volumes in 23 libraries, nine museums,
	seven hospitals, hundreds of laboratories and institutes, and
	over 18000 {microcomputer}s.

	{Home (http://www.umich.edu/)}

	(23 Feb 1995)

University of Michigan Digital Library Project

	<project> (UMDL) The {University of Michigan}'s part of the
	{Digital Library Initiative}.

University of Minnesota

	<body, education> The home of {Gopher}.

	{Home (http://www.umn.edu/)}

	Address: Minneapolis, Minnesota, USA.

	(30 Jan 1995)

University of Nijmegen

	<body, education> Katholieke University of Nijmegen (KUN),
	Nijmegen, the Netherlands.

	KUN's {Computing Science Institute (http://www.cs.kun.nl/csi)}
	is known for the {Clean}, {Comma}, {Communicating Functional
	Processes}, and {GLASS} projects.

	{Home (http://www.kun.nl/)}

	(07 Nov 1995)

University of Pennsylvania

	<body, education> The home of {ENIAC} and {Machiavelli}.

	{Home (http://www.upenn.edu/)}

	Address: Philadelphia, PA, USA.

	[More info?]

	(21 Feb 1995)

University of Tasmania

	<body, education>

	{Home (ftp://ftp.utas.edu.au/)}

	(25 Jan 1995)

University of Twente

	<body, education>

	A university in the east of The Netherlands (Holland) for
	technical and social sciences.  It was founded in 1961, making
	it one of the youngest universities in Holland.  It has 7000
	students studying Applied Educational Science; Applied
	Mathematics; Applied Physics; Chemical Technology; Computer
	Science; Electrical Engineering; Mechanical Engineering;
	Philosophy of science, Technology and Society; Educational
	Technology.

	{Home (http://www.nic.utwente.nl/uthomuk.htm)}

	(16 Apr 1995)

Unix

	<operating system> /yoo'niks/ (Or "UNIX", in the authors'
	words, "A weak pun on Multics") Plural "Unices".  An
	interactive {time-sharing} {operating system} invented in 1969
	by {Ken Thompson} after {Bell Labs} left the {Multics}
	project, originally so he could play games on his scavenged
	{PDP-7}.  {Dennis Ritchie}, the inventor of {C}, is considered
	a co-author of the system.

	The turning point in Unix's history came when it was
	reimplemented almost entirely in C during 1972 - 1974, making
	it the first source-portable OS.  Unix subsequently underwent
	mutations and expansions at the hands of many different
	people, resulting in a uniquely flexible and
	developer-friendly environment.

	By 1991, Unix had become the most widely used multi-user
	general-purpose operating system in the world.  Many people
	consider this the most important victory yet of hackerdom over
	industry opposition (but see {Unix weenie} and {Unix
	conspiracy} for an opposing point of view).  Unix is now
	offered by many manufacturers and is the subject of an
	international standardisation effort with the Unix trademark
	being owned by {X/Open}.  Unix or Unix-like operating systems
	include {OSF}, {Version 7}, {BSD}, {USG Unix}, {Xenix},
	{Ultrix}, {Linux}, and {GNU}.

	"Unix" or "UNIX"?  Both seem roughly equally popular, perhaps
	with a historical bias towards the latter.  "UNIX" is a
	trademark, however, since it is a name and not an acronym,
	"Unix" has been adopted in this dictionary except where a
	larger name includes it in upper case.  Since the OS is
	{case-sensitive} and exists in many different versions, it is
	fitting that its name should reflect this.

	More: {The UNIX Reference Desk
	(http://www.eecs.nwu.edu/unix.html)}.

	(20 Feb 1997)

Unix box

	{box}

Unix brain damage

	Something that has to be done to break a network program
	(typically a mailer) on a non-{Unix} system so that it will
	interoperate with Unix systems.  The hack may qualify as "Unix
	brain damage" if the program conforms to published {standard}s
	and the {Unix} program in question does not.  Unix brain
	damage happens because it is much easier for other (minority)
	systems to change their ways to match non-conforming behaviour
	than it is to change all the hundreds of thousands of Unix
	systems out there.

	An example of Unix brain damage is a {kluge} in a mail server
	to recognise bare line feed (the Unix newline) as an
	equivalent form to the Internet standard newline, which is a
	carriage return followed by a line feed.  Such things can make
	even a hardened {jock} weep.

Unix conspiracy

	[ITS] According to a conspiracy theory long popular among
	{ITS} and {TOPS-20} fans, Unix's growth is the result of a
	plot, hatched during the 1970s at Bell Labs, whose intent was
	to hobble AT&T's competitors by making them dependent upon a
	system whose future evolution was to be under AT&T's control.
	This would be accomplished by disseminating an operating
	system that is apparently inexpensive and easily portable, but
	also relatively unreliable and insecure (so as to require
	continuing upgrades from AT&T).  This theory was lent a
	substantial impetus in 1984 by the paper referenced in the
	{back door} entry.

	In this view, Unix was designed to be one of the first
	computer viruses (see {virus}) - but a virus spread to
	computers indirectly by people and market forces, rather than
	directly through disks and networks.  Adherents of this "Unix
	virus" theory like to cite the fact that the well-known
	quotation "Unix is snake oil" was uttered by DEC president
	Kenneth Olsen shortly before DEC began actively promoting its
	own family of Unix workstations.  (Olsen now claims to have
	been misquoted.)

Unix International

	<body> (UI) A consortium including {Sun}, {AT&T} and others
	formed to promote an open environment based on {Unix} {System
	V}, including the {Open Look} windowing system.

Unixism

	<operating system, jargon> A piece of code or a coding
	technique that depends on the protected {multitasking}
	environment with relatively low process-spawn overhead that
	exists on {virtual-memory} {Unix} systems.

	Common {Unixism}s include: gratuitous use of "{fork}"; the
	assumption that certain undocumented but well-known features
	of Unix libraries such as "{stdio}" are supported elsewhere;
	reliance on obscure side-effects of {system calls} (use of
	"sleep" with a 0 argument to tell the scheduler that you're
	willing to give up your time-slice, for example); the
	assumption that freshly allocated memory is zeroed; and the
	assumption that {fragmentation} problems won't arise from
	never freeing memory.

	Compare {vaxocentrism}.  See also {New Jersey}.

	(27 Feb 1995)

Unix man page

	{Unix manual page}

Unix manual page

	<operating system} (man page) A part of {Unix}'s extensive
	on-line documentation.  To read a manual page, type

		man [section] <page>

	at a shell prompt, e.g. "man ftp" (the section number can
	usually be omited.  Pages are traditionally referred to using
	the notation "page(section)", e.g. ftp(1).

	Under {SunOS} (which is fairly typical), Section 1 covers
	commands, 2 {system calls}, 3 C library routines, 4 devices
	and networks, 5 file formats, 6 games and {demos}, 7
	miscellaneous, 8 system administration.  Each section has an
	introduction which can be obtained with, e.g., "man 2 intro".

	Manual pages are stored as {nroff} source files.  Formatted
	versions are also usually cached.

	{Unix manual page}: man(1).

	{WWW man gateway (http://wombat.doc.ic.ac.uk/man.cgi)}.

	(26 Jan 1997)

Unix System V

	{System V}

Unix to Unix Copy

	<networking, messaging> (uucp) A {Unix} utility program and
	{protocol} that allows one Unix system to send files to
	another via a {serial line} which may be a cable going
	directly from one machine's {serial port} to another's or may
	involve a {modem} at each end of a telephone line.

	Software is also available to allow uucp to work over
	{Ethernet} though there are better alternatives in this case,
	e.g. {FTP} or {rcp} for file transfer, {SMTP} for {electronic
	mail} or {NNTP} for {news}.

	The term is now also used to describe the large international
	network which uses UUCP to pass {Usenet} {news} and
	{electronic mail}, also known as "UUCPNET".

	{Unix manual page}: uucp(1).

	See also {cu}, {uuencode}.

	(12 Jan 1997)

UnixWare

	<operating system> {Novell}'s implementation of {Unix} {System
	5} heavily based on Release 4.2 but with enhancements and new
	bundled products.

	In 1993 Novell acquired {Unix Systems Laboratories} from
	{AT&T} along with the UNIX trademark.  UnixWare was the result
	of Novell's efforts to make Unix interoperable with {Novell
	NetWare}.  However, UnixWare never became very popular and in
	later in 1993 Novell decided to give the Unix trademark to
	{X/Open}.

	(20 Feb 1997)

Unix weenie

	<jargon> ({ITS}) 1. A derogatory play on "{Unix wizard}",
	common among hackers who use {Unix} by necessity but would
	prefer alternatives.  The implication is that although the
	person in question may consider mastery of Unix arcana to be a
	wizardly skill, the only real skill involved is the ability to
	tolerate (and the bad taste to wallow in) the incoherence and
	needless complexity that is alleged to infest many Unix
	programs.  "This shell script tries to parse its arguments in
	69 bletcherous ways.  It must have been written by a real Unix
	weenie."

	2. A derogatory term for anyone who engages in uncritical
	praise of {Unix}.  Often appearing in the context "stupid Unix
	weenie".

	See {Weenix}, {Unix conspiracy}, {weenie}.

	(27 Feb 1995)

Unix wizard

	<job> Someone with a deep understanding of {Unix}.

	See {wizard}.

	(11 May 1995)

unnormalised

	Before {normalisation}.

unnormalized

	Before {normalisation}.

unproto

	A translator from {ANSI C} to {K&R C} by Wietse Venema
	<wietse@wzv.win.tue.nl>.

	{(ftp://ftp.win.tue.nl/pub/Unix/unproto4.shar.Z)}

unshar

	A {Unix} utility that removes {e-mail} and {news} {header}
	lines from its input, and feeds the remainder (which is
	presumed to be a {shar file}) to /bin/sh to unpack it.  unshar
	is designed for unpacking archives directly from the news or
	mail systems simply by {piping} a message into it.

unshielded twisted pair

	(UTP) Normal telephone wire (in the USA).  It may be used for
	computer to computer communications, e.g. using a version of
	{Ethernet} or {localtalk}.  It is much cheaper than standard
	"full-spec" Ethernet cable.

	(15 Feb 1995)

unswizzle

	The opposite of {swizzle}.

	(15 Feb 1995)

unwind-protect

	({MIT}) A {Lisp} operator which evaluates an expression and
	then, even if that expression causes a {non-local exit},
	evaluates zero or more other expressions.  This can be used to
	ensure that essential "clean-up" operations are performed even
	in the presence of errors.

	(03 Nov 1994)

unwind the stack

	During the execution of a {procedural} language, one is said
	to "unwind the stack" from a called {procedure} up to a caller
	when one discards the {stack frame} and any number of frames
	above it, {pop}ping back up to the level of the given caller.
	In {C} this is done with "{longjmp}"/"{setjmp}", in {Lisp}
	with "{throw}/{catch}".  See also {smash the stack}.

UN*X

	Used to refer to the {Unix} {operating system} (a trademark of
	{AT&T}) in writing, but avoiding the need for the ugly (TM)
	typography.  Also used to refer to any or all varieties of
	Unixoid operating systems.  Ironically, lawyers now say that
	the requirement for the TM-postfix has no legal force, but the
	asterisk usage is entrenched anyhow.

	It has been suggested that there may be a psychological
	connection to practice in certain religions (especially
	Judaism) in which the name of the deity is never written out
	in full, e.g. "YHWH" or "G--d" is used.

	See also {glob}.

unzip

	1. <tool, compression> To extract files from an archive
	created with {PKWare}'s {PKZIP} archiver.

	2. <tool, compression> A program to list, test, or extract
	files from a {ZIP} archive, commonly found on {MS-DOS}
	systems.  zip, creates ZIP archives; both programs are
	compatible with archives created by {PKWARE}'s {PKZIP} and
	{PKUNZIP} for {MS-DOS}.

	(06 Mar 1995)

up

	<jargon> Working, in order.  E.g. "The down escalator is up."

	Opposite: {down}.

	(06 Mar 1995)

uparrow

	<character> The graphic which the 1963 version of {ASCII} had
	in place of the {caret} character, {ASCII} 94.

	(06 Mar 1995)

\uparrow

	<character> An upward pointing arrow in {LaTeX}.

	See {closure}.

	(16 Mar 1995)

UPenn

	{University of Pennsylvania}

upgrade

	1. A new or better version of some {hardware} or {software}.

	Often used in {marketroid}-speak to mean "{bug fix}".

	2. The act of developing or installing a new version.

	(14 Mar 1995)

upload

	/uhp'lohd/ To transfer programs or data over a digital
	communications link from a smaller or peripheral "client"
	system to a larger or central "host" one.

	Opposite: {download}.

	(27 Oct 1994)

UPMAIL Tricia Prolog

	{(ftp://ftp.csd.uu.se/pub/Tricia/README)}

	E-mail: <tricia-request@csd.uu.se>.

	[Description?]

	(27 Oct 1994)

upper bound

	An upper bound of two elements x and y under some {relation}
	<= is an element z such that x <= z and y <= z.

	("<=" is written in {LaTeX} as {\sqsubseteq}).

	See also {least upper bound}.

	(15 Feb 1995)

upper memory block

	<storage> (UMB) Up to 64 {kilobytes} of the {expanded memory
	page frame} above the first 64 kilobytes.  The UMB can be used
	to store {TSR} programs or {device drivers} thereby freeing
	parts of the precious {conventional memory}.  The UMB is
	provided by special memory manager programs; many {EMM}s can
	provide UMB as well.

	(10 Jan 1996)

Upper Side-Band modulation

	<communications> (USB) A kind of {modulation} applied to a
	sinusoidal {carrier}.

	[Details?]

	(16 Jul 1997)

UPS

	1. {uninterruptible power supply}.

	2. A source level {C} debugger that runs under {X11} or
	{SunView} by Mark Russell <mtr@ukc.ac.uk>.  Ups includes a {C}
	{interpreter} which allows you to add fragments of code simply
	by editing them into the source window.  Version 2.1.

	Ported to {Sun}, {DECstation}, {VAX} {Ultrix}, {HLH}
	{Clipper}.

	{(ftp://export.lcs.mit.edu/contrib/)}.  Mailing list:
	ups-users-request@ukc.ac.uk.

	Unofficial enhancements by Rod Armstrong <rod@sj.ate.slb.com>
	{(ftp://sj.ate.slb.com/misc/Unix/ups/contrib/rob)}.

	(20 May 1991)

upthread

	Earlier in the discussion (see {thread}), i.e. "above".  See
	also {followup}.

upward closure

	See {closure}.

Uranus

	Hideyuki Nakashima <nakashim@el.go.jp>, 1993.  A logic-based
	knowledge representation language.  An extension of Prolog
	written in Common Lisp, with Lisp-like syntax.  Extends Prolog
	with a multiple world mechanism, plus term descriptions to
	provide functional programming.

	{(ftp://etlport.etl.go.jp/pub/uranus/ftp)}

urban legend

	<publication> A story, which may have started with a grain of
	truth, that has been embroidered and retold until it has
	passed into the realm of myth.  It is an interesting
	phenomenon that these stories get spread so far, so fast and
	so often.  Urban legends never die, they just end up on the
	{Internet}!  Some legends that periodically make their rounds
	include "The Infamous Modem Tax", "Craig Shergold/Brain
	Tumor/Get Well Cards", and "The $250 Cookie Recipe".

	(08 May 1996)

URC

	{Uniform Resource Citation} (previously Universal).

urchin

	See {munchkin}.

URI

	{Universal Resource Identifier}

URL

	{Uniform Resource Locator}

URL forwarding

	{URL redirection}

URL redirection

	<World-Wide Web> (Or "URL forwarding")

	When a {web server} tells the {client} {browser} to obtain a
	certain requested page from a different location.  This is
	controlled by {directives} in the server's configuration files
	or a "Location: header output by a {CGI} script.

	The web server stores all its documents in a {directory tree}
	rooted at some configured directory, known as its "document
	root".  Normally the {URI} part of the {URL} (the part after
	the {hostname}) is used as a {relative path} from the document
	root to the desired file or directory.  A redirect directive
	allows the server administrator to specify exceptions to this
	general mapping from URL to file name by telling the browser
	"try this URL instead".  The new URL may be on the same server
	or a different one and may itself be subject to redirection.

	The user is normally unaware of this process except that it
	may introduce extra delay while the browser sends the new
	request and the browser will usually display the new URL
	rather than the one the user originally requested.

	(15 Jul 1997)

URN

	{Uniform Resource Name} (previously Uniform/Universal Resource
	Number).

URouLette

	(After {URL} and roulette, the gambling game) A {World-Wide
	Web} service which selects other web pages at random.

	{(http://kuhttp.cc.ukans.edu/cwis/organizations/kucia/uroulette/uroulette.html)}

	(24 Nov 1994)

US

	{Unit Separator}

USAModSim

	<language> United States Army {ModSim} compiler.

	Version 1.0 runs on {SPARC}/{SunOS}, {Silicon Graphics},
	{MS-DOS}.

	{(ftp://max.cecer.army.mil/ftp/isle)}

	E-mail: Charles Herring <herring@lincoln.cecer.army.mil>.

	(29 Dec 1993)

usa.net

	{Internet Express}

USB

	1. <architecture> {Universal Serial Bus}.

	2. <communications> {Upper Side-Band modulation}.

	(16 Jul 1997)

USE

	An early system on the {IBM 1103} or 1103A.

	[Listed in CACM 2(5):16 (May 1959)].

	(11 Nov 1994)

Usenet

	/yoos'net/ or /yooz'net/ (Or "Usenet news", from "Users'
	Network") A distributed {bulletin board} system supported
	mainly by {Unix} machines and the people who post and read
	articles thereon.  Originally implemented in 1979 - 1980 by
	Steve Bellovin, Jim Ellis, Tom Truscott, and Steve Daniel at
	Duke University, it has swiftly grown to become international
	in scope and is now probably the largest decentralised
	information utility in existence.

	Usenet encompasses government agencies, universities, high
	schools, businesses of all sizes and home computers of all
	descriptions.  As of early 1993, it hosts well over 1200
	{newsgroup}s ("groups" for short) and an average of 40
	megabytes (the equivalent of several thousand paper pages) of
	new technical articles, news, discussion, chatter, and
	{flamage} every day.  To join in you need a {news reader}.
	Several {web browsers} include news readers and {URL}s
	beginning "news:" refer to Usenet newsgroups.

	Not all {Internet} {hosts} subscribe to Usenet and not all
	Usenet hosts are on the Internet but there is a large overlap.

	{Network News Transfer Protocol} is a {protocol} used to
	transfer news articles between a news {server} and a {news
	reader}.  The {uucp} {protocol} is sometimes used to transfer
	articles between servers, though this is probably less common
	now that most {backbone} sites are on the {Internet}.

	{Stanford University} runs a service to send news articles by
	{electronic mail}.  See {here
	(http://woodstock.stanford.edu:2000/)} or send electronic mail
	to <netnews@db.stanford.edu> with "help" in the message body.

	{(http://www.openmarket.com/info/internet-index/current-sources.html)}

	{Notes on news
	(http://www.ifi.uio.no/~larsi/notes/notes.html)} by Lars Magne
	Ingebrigtsen <larsi@ifi.uio.no>.

	[Gene Spafford <spaf@cs.purdue.edu>, "What is Usenet?",
	regular posting to {news:news.announce.newusers}].

	(14 Jul 1997)

Usenet news

	{Usenet}

Usenetter

	<networking> A (regular) user of {Usenet}.

	(08 Sep 1996)

USENIX

	<body> Since 1975, the USENIX Association has provided a forum
	for the communication of the results of innovation and
	research in {Unix} and modern {open system}s.  It is well
	known for its technical conferences, tutorial programs, and
	the wide variety of publications it has sponsored over the
	years.

	USENIX is the original not-for-profit membership organisation
	for individuals and institutions interested in {Unix} and
	{Unix}-like systems, by extension, {X}, {object-oriented}
	technology, and other advanced tools and technologies, and the
	broad interconnected and interoperable computing environment.

	USENIX's activities include an annual technical conference;
	frequent specific-topic conferences and symposia; a highly
	regarded tutorial program covering a wide range of topics,
	introductory through advanced; numerous publications,
	including a book series, in cooperation with The {MIT Press},
	on advanced computing systems, proceedings from USENIX
	symposia and conferences, the quarterly journal "Computing
	Systems", and the biweekly newsletter; "login: ";
	participation in various {ANSI}, {IEEE} and {ISO} {standard}s
	efforts; sponsorship of local and special technical groups
	relevant to Unix.  The chartering of SAGE, the {System
	Administrators Guild} as a Special Technical Group within
	USENIX is the most recent.

	{(http://usenix.org)}

	{Usenet} newsgroup: {news:comp.org.usenix}.

	(07 Dec 1994)

user

	1. <person> Someone doing "real work" with the computer, using
	it as a means rather than an end.  Someone who pays to use a
	computer.  A programmer who will believe anything you tell
	him.  One who asks silly questions without thinking for two
	seconds or looking in the documentation.  Someone who uses a
	program, however skillfully, without getting into the
	internals of the program.  One who reports {bug}s instead of
	just fixing them.  See also {luser}, {real user}.

	Users are looked down on by {hackers} to some extent because
	they don't understand the full ramifications of the system in
	all its glory.  The term is relative: a skilled hacker may be
	a user with respect to some program he himself does not hack.
	A LISP hacker might be one who maintains LISP or one who uses
	LISP (but with the skill of a hacker).  A LISP user is one who
	uses LISP, whether skillfully or not.  Thus there is some
	overlap between the two terms; the subtle distinctions must be
	resolved by context.

	2. <jargon> Any person, organisation, process, device,
	program, {protocol}, or system which uses a service provided
	by others.

	The term "{client}" (as in "{client-server}" systems) is
	rather more specific, usually implying two processes
	communicating via some protocol.

	(28 Apr 1996)

user base

	<jargon> The number of users of some product or standard.

	This term typically arises in discussions of {backward
	compatibility} or {lock-in}.

	(15 Jan 1998)

User Datagram Protocol

	<protocol> (UDP) {Internet} {standard} {network layer},
	{transport layer} and {session layer} {protocols} which
	provide simple but {unreliable} {datagram} services.  UDP is
	defined in {STD 6}, {RFC 768}.  It adds a {checksum} and
	additional process-to-process addressing information [to
	what?].  UDP is a {connectionless protocol} which, like {TCP},
	is layered on top of {IP}.

	UDP neither guarantees delivery nor does it require a
	connection.  As a result it is lightweight and efficient, but
	all error processing and retransmission must be taken care of
	by the {application program}.

	{Unix manual page}: udp(4).

	[Postel, Jon, User Datagram Protocol, RFC 768, Network
	Information Center, SRI International, Menlo Park, Calif.,
	August 1980].

	(11 Feb 1998)

user-friendly

	Programmer-hostile.  Generally used by hackers in a critical
	tone, to describe systems that hold the user's hand so
	obsessively that they make it painful for the more experienced
	and knowledgeable to get any work done.  See {menuitis},
	{drool-proof paper}, {Macintrash}, {user-obsequious}.

user id

	{user identifier}

user identifier

	<operating system> 1. (Or "uid", "user id") A number or name
	which is unique to a particular user of a computer or group of
	computers which share user information.  The {operating
	system} uses the uid to represent the user in its data
	structures, e.g. the owner of a file or process, the person
	attempting to access a system resource etc.

	A user database, e.g. {Unix}'s /etc/passwd file or {NIS}, maps
	the uid to other information about that user such as their
	{username}, {password}, {home directory} and real name.

	2. {username}.

	(01 Mar 1997)

user interface

	The aspects of a computer system or program which can be seen
	(or heard or otherwise perceived) by the human user, and the
	commands and mechanisms the user uses to control its operation
	and input data.

	A {graphical user interface} emphasises the use of pictures
	for output and a pointing device such as a {mouse} for input
	and control whereas a {command line interface} requires the
	user to type textual commands and input at a keyboard and
	produces a single stream of text as output.

	See also {user interface copyright}.

	(20 Feb 1995)

user interface copyright

	There have been several attempts, mostly by big US software
	companies, to enforce patents and {copyright} on user
	interfaces.  Such legal action aims to restrict the use of
	certain command languages or {graphical user interface}s to
	products from one software supplier.  This is undesirable
	because it either forces users to buy software from the
	company whose interface they have learned or to learn more
	than one interface.  An analogy is often drawn with the user
	interface of a car - the arrangement of pedals and steering
	wheel etc.  If each car manufacturer was forced to use a
	different interface this would be very bad for car users.

	Following a non-jury trial, which began in early January 1987,
	a federal judge ruled on 28 June 1990 that keyboard commands
	and on-screen images produced by {Lotus Development
	Corporation}'s popular {1-2-3} {spreadsheet} are protected by
	{copyright}.  {Paperback Software International} and
	subcontractor Stephenson Software Ltd. who lost the case,
	argued that the copyright applies only to the inner workings
	of the software.  US District Judge Robert Keeton wrote that
	"The user interface of 1-2-3 is its most unique element and is
	the aspect that has made 1-2-3 so popular.  That defendants
	went to such trouble to copy that element is a testament to
	its substantiality".  Defence attorneys had argued that the
	Lotus commands represented "instructions for a machine rather
	than the expression of an idea".

	Soon after this decision, on 2 July 2 1990, Lotus sued
	{Borland International} and the {Santa Cruz Operation} for
	producing {spreadsheet}s (Quattro, Quattro Pro and SCO
	Professional) whose interfaces could be configured to look
	like 1-2-3's.

	(16 Nov 1994)

User Interface Language

	<language, graphics> (UIL) A language for specifying {widget}
	hierarchies etc. in {OSF}/Motif and {DECwindows}.

	(01 Mar 1997)

username

	<operating system, security> (Or "logon") A unique name for
	each user of computer services which can be accessed by
	several persons.

	Users need to identify themselves for accounting, {security},
	logging, and {resource management}.  Usually a person must
	also enter a {password} in order to access a service.  Once
	the user has logged on the {operating system} will often use a
	(short) {user identifier}, e.g. an integer, to refer to them
	rather than their user name.

	Usernames can usually be any short string of alphanumeric
	characters.  Common choices are first name, initials, or some
	combination of first name, last name, initials and an
	arbitrary number.  Usernames are often assigned by {system
	administrators} according to some local policy, or they may be
	chosen by the users themselves.

	Usernames are often also used as {mailbox} names in
	{electronic mail} addresses.

	(16 Mar 1997)

user-obsequious

	Emphatic form of {user-friendly}.  Connotes a system so
	verbose, inflexible, and determinedly simple-minded that it is
	nearly unusable.  "Design a system any fool can use and only a
	fool will want to use it."  See {WIMP}, {Macintrash}.

Use the Source Luke

	<humour, programming> (UTSL) (A pun on Obi-Wan Kenobi's "Use
	the Force, Luke!" in "Star Wars") A more polite version of
	{RTFS}.  This is a common way of suggesting that someone would
	be better off reading the source code that supports whatever
	feature is causing confusion, rather than making yet another
	futile pass through the manuals, or broadcasting questions on
	{Usenet} that haven't attracted {wizard}s to answer them.

	Once upon a time in {Elder Days}, everyone running {Unix} had
	source.  After 1978, {AT&T}'s policy tightened up, so this
	objurgation was in theory appropriately directed only at
	associates of some outfit with a Unix {source licence}.  In
	practice, bootlegs of Unix source code (made precisely for
	reference purposes) were so ubiquitous that one could utter it
	at almost anyone on {the network} without concern.

	Nowadays, free Unix clones are becoming common enough that
	almost anyone can read source legally.  The most widely
	distributed is probably {Linux}.  {FreeBSD}, {NetBSD},
	{386BSD}, {jolix} also have their followers.  Cheap commercial
	Unix implementations with source such as {BSD/OS} from {BSDI}
	are accelerating this trend.

	(02 Jan 1996)

USG Unix

	{operating system} /U-S-G yoo'niks/ Refers to AT&T {Unix}
	commercial versions after {Version 7}, especially System III
	and System V releases 1, 2, and 3.  So called because during
	most of the lifespan of those versions AT&T's support crew was
	called the "Unix Support Group".

	Compare {BSD}.

	(20 Feb 1997)

usim

	A {Motorola} {6809} simulator.  Version 0.11 by Ray P. Bellis
	<rpb@psy.ox.ac.uk>.

	{(ftp://ftp.cns.ox.ac.uk/pub/mc6809/)}

	(14 Feb 1993)

USL

	1. Query language, close to natural English.

	2. User System Language.  Bellcore, "Operations Technology
	Generic Requirements: User System Interface", TR-825.

	3. Unix System Laboratories: the software subsidiary of
	{AT&T}, responsible for {Unix} {System V} and related
	software.

USR

	{U.S. Robotics, Inc.}

usr

	User.  The "/usr" directory hierarchy on {Unix} systems.  Once
	upon a time, in the early days of Unix, this area actually
	held users' home directories and files.  Since these tend to
	expand much faster than system files, /usr would be mounted on
	the biggest disk on the system.  The root directory, "/" in
	contrast, contains only what is needed to {boot} the {kernel},
	after which /usr and other disks could be mounted as part of
	the multi-user start-up process.

	/usr has been used as the "everything else" area, with many
	"system" files such as compiler libraries (/usr/include,
	/usr/lib), utilty programs (/usr/bin, /usr/ucb), games
	(/usr/games), local additions (/usr/local), manuals
	(/usr/man), temporary files and queues for various {daemon}s
	(/usr/spool).  These optional extras have grown in size as
	Unix has evolved and disks have dropped in price.  Under later
	versions of {SunOS}, the user files have fled /usr altogether
	for a new "/home" {partition} and temporary files have moved
	to "/var".  This allows /usr to be mounted read-only with some
	gain in security and performance since access times are not
	updated for files on read-only file systems.

US Robotics

	{U.S. Robotics, Inc.}

U.S. Robotics, Inc.

	<company> A US {modem} manufacturer.

	{Home (http://www.usr.com/)}

	{(ftp://ftp.usr.com/)}

	Finger: usr.com.

	E-mail: <support@usr.com>, <salesinfo@usr.com> (USA and Canada),
	<eurosupport@usr.com>, <eurosales@usr.com> (Europe),
	<intlsales@usr.com> (other).

	(14 Mar 1995)

USSA

	Object-oriented state language by B. Burshteyn, Pyramid, 1992.

	{Documentation (ftp://primost.cs.wisc.edu/pub/ussa.ps.Z)}

UTC

	{Universal Time Coordinated}

UTF-8

	<character> An {ASCII}-compatible multibyte {Unicode} and
	{UCS} encoding, used by {Java} and {Plan 9}.

	The {Unicode character} set occupies a 16-bit code space.  The
	most obvious Unicode encoding (known as UCS-2) consists of a
	sequence of 16-bit words.  Such strings can contain bytes like
	'\0' or '/' which have a special meaning in filenames and
	other {C} library function parameters.  In addition, the
	majority of {Unix} tools expects ASCII files and can't read
	16-bit words as characters without major modifications.  For
	these reasons, UCS-2 is not a suitable external encoding of
	Unicode in filenames, text files, environment variables, etc.

	The {ISO 10646} {Universal Character Set} (UCS), a superset of
	Unicode, occupies a 31-bit code space and the obvious UCS-4
	encoding for it (a sequence of 32-bit words) has the same
	problems.

	The UTF-8 encoding of Unicode and UCS avoids the problems of
	fixed-length Unicode encodings because an ASCII file encoded
	in UTF is exactly same as the original ASCII file and all
	non-ASCII characters are guaranteed to have the most
	significant bit set (bit 0x80).  This means that normal tools
	for text searching etc. work as expected.

	["File System Safe UCS Transformation Format (FSS_UTF)",
	X/Open Preliminary Specification, X/Open Company Ltd.,
	Document Number: P316.  This information also appears in
	ISO/IEC 10646, Annex P].

	{Plan 9 UTF manual entry
	(ftp://ftp.uu.net/doc/obi/Bell.Labs/plan9pm/09utf.ps.Z)}

	[What does it stand for?]

	(13 Dec 1997)

utility-coder

	<language> A language for data manipulation and report
	generation.

	["User's Manual for utility-coder", Cambridge Computer
	Association, Jul 1977].

	(09 Dec 1997)

UTOPIST

	E. Tyugu, Acad Sci Estonia, Tallinn, early 1980's.
	Specification language for attribute grammars.

	["Synthesis of a Semantic Processor from an Attribute
	Grammar", Prog and Comp Soft, 9(1):29-39 (Jan 1983)].

UTP

	{unshielded twisted pair}

UTRC

	{United Technologies Research Cente}

UTSL

	<humour> {Use the Source Luke}

	(02 Jan 1996)

uucp

	{Unix to Unix Copy}

UUCPNET

	The international {store-and-forward} network consisting of
	all the world's connected {Unix} machines (and others running
	some clone of the {UUCP} software).  Any machine reachable
	only via a {bang path} is on UUCPNET.  See {network address}.

uudecode

	A Unix program to convert the ASCII output of uuencode back to
	binary.  See uuencode for details.

uuencode

	Unix program for encoding binary data as ASCII.  Uuencode was
	originally used with uucp to transfer binary files over serial
	lines which did not preserve the top bit of characters but is
	now used for sending binary files by e-mail and posting to
	{Usenet} newsgroups etc.  The program uudecode reverses the
	effect of uuencode, recreating the original binary file
	exactly.

	Uuencoded data starts with a line of the form

		begin <mode> <file>

	where <mode> is the files read/write/execute permissions as
	three {octal} digits and <file> is the name to be used when
	recreating the binary data.

	Uuencode repeatedly takes in a group of three bytes, adding
	trailing zeros if there are less than three bytes left.
	These 24 bits are split into four groups of six which are
	treated as numbers between 0 and 63.  Decimal 32 is added to
	each number and they are ouput as ASCII characters which will
	lie in the range 32 (space) to 32+63 = 95 (underscore).  Each
	group of sixty ouptut characters (corresponding to 45 input
	bytes) is output as a separate line preceded by an 'M' (ASCII
	code 77 = 32+45).  At the end of the input, if there are N
	output characters left after the last group of sixty and N>0
	then they will be preceded by the character whose code is
	32+N.  Finally, a line containing just a single space is
	output, followed by one containing just "end".

	Sometimes each data line has an extra dummy character added to
	avoid problems which mailers that strip trailing spaces.
	These characters are ignored by uudecode.

	Despite using this limited range of characters, there are
	still some problems encountered when uuencoded data passes
	through certain old computers.  The worst offenders are
	computers using non-ASCII character sets such as EBCDIC.

UUNET PIPEX

	<company> An {Internet provider}, part of the Unipalm Group.
	PIPEX launched their Internet service in March 1992, and by
	November 1993 provided Internet service to 150 customer sites
	in the UK.  Each site is either a complete commercial company
	or a branch of one, or a public-sector organisation.  They
	provide a commercial {internetworking} service, with 24-hour
	support, and a resilient backbone with multiple international
	links.  PIPEX provides for individual users through their
	"PIPEX Dial" service, and has a number of re-sellers connected
	to its backbone, including {CityScape}, {Direct Connection}
	and the {IBM PC User Group}, who also offer such services.

	{Home (http://www.pipex.net)}.

	E-mail: <support@pipex.net>.

	Address (Head office): Cambridge ?

	Address: King St. London EC2V(?)

	(13 Oct 1996)

UUPC

	{UUCP} for {MS-DOS}, {Microsoft Windows}, and {OS/2}.

	E-mail: <server@netmail.com> with subject SEND INDEX.

V

	Upper case V, {ASCII} character 86, known in {INTERCAL} as
	book.

	1. A testbed for distributed system research.

	2. Wide-spectrum language used in the knowledge-based
	environment {CHI}.  "Research on Knowledge-Based Software
	Environments at Kestrel Inst", D.R.  Smith et al, IEEE Trans
	Soft Eng SE-11(11):1278-1295 (1985).

V.21

	<protocol> An {ITU-T} {modem} {protocol} for 300 bits per
	second two-wire {full duplex} communications using {Frequency
	Shift Keying} {modulation}.

	All modern modems support both V.21 and the close variant,
	Bell 103.

	(22 Jul 1996)

V.22

	An {ITU-T} {modem} {protocol} which allowed data rates of 1200
	bits per second.  {V.22bis} doubled this.

V.22bis

	{V.22} twice.  An {ITU-T} {modem} {protocol} which allowed a
	data rate of 2400 bits per second, twice that of {V.22}.

V.23

	An old {ITU-T} {modem} {protocol} which allowed {half-duplex}
	(unidirectional) data transmission at 1200 bits per second.
	This was the main standard used for {British Telecom}'s
	{Prestel} service.

V.24

	<standard> The {ITU-T} {standard} defining interchange
	circuits between {DTE} and {DCE}.  V.24 is the {ITU-T}
	equivalent of {EIA} standard {RS-232C}.

	V.24 recommends 12 {modem} {carrier} frequencies that will not
	interfere with {Dual Tone Multi-Frequency} or other telephone
	control tones.  These are:

	  GROUP A   =    920 Hz, 1000 Hz, 1080 Hz, 1160 Hz
	  GROUP B   =    1320 Hz, 1400 Hz, 1480 Hz, 1560 Hz
	  Group C   =    1720 Hz, 1800 Hz, 1880 Hz, 1960 Hz

	(02 Mar 1995)

V.25

	A standard allowing an {auto-answer} {modem} to determine the
	correct modulation standard to use.

V.32

	The {ITU-T} standard {protocol} for {modem}s transmitting at
	4800 or 9600 bits per second.  {V.32bis} extended this to
	14400 bps.

	V32 and V.32bis acheive bidirectional data transmission not by
	having different sets of tones at each end but by subtracting
	what is sent from what is received.

	(15 Dec 1994)

V.32bis

	V.32 twice.  An extension of the {ITU-T} {V.32} {modem}
	{protocol} allowing speeds of 7200, 12000 and 14400 bits per
	second.  The {modem} should select the appropriate speed
	according to the current line conditions.

	See also {V.32ter}.

	(15 Dec 1994)

V.32ter

	An extension of the {ITU-T} {V.32bis} {modem} {protocol}.
	While waiting for {V.34}, many {modem} manufacturers decided
	to extend V.32bis to 19.2 kbps.  This was known as V.32ter
	which some {marketroid}s rechristened V.32 terbo which is not
	only misspelled but misses the fact that V.32ter means the
	third revision of V.32.

	(15 Dec 1994)

V.34

	<protocol> An {ITU-T} {standard} {modem} serial line
	{protocol} using {symbol rate}s of 2400, 2743, 2800, 3000,
	>3200 and 3429 and up to 28800 bits per second.

	The official V.34 draft recommendation was titled:

	   Modem operating at data signalling rates of up to 28 800
	   bit/s for use on the general switched telephone network and
	   on leased point-to-point 2-wire telephone-type circuits.

	During the lengthy process of approval by {ITU-T}, many
	manufacturers released 28.8 kbps modems described as {V.FAST}.
	The V.34 recommendation was ratified by {ITU-T} on 20
	September 1994.  {Rockwell} and {US Robotics} both have seats
	on the ITU-T, and have both released {chip set}/{BIOS}
	combinations that they feel will meet V.34.  V.34 modems will
	also support {V.FC} if the manufacturer currently supports
	V.FC (e.g. {Rockwell}).  Some (all?) V.34 modems will also
	support {line probing}.

	{(gopher://info.itu.ch/00/.1/itudoc/public/gophertree/.1/.gs/.press-re/.1994/.23897/.11778.txt)}

	(20 Sep 1994)

V.35

	<communications, standard> The {ITU-T} {standard} for data
	transmission at 48 kilobits per second over 60 - 108 KHz group
	band circuits.  It contains the 34-pin {V.34} connector
	specifications normally implemented on a modular {RJ-45}
	connector.

	(02 Mar 1995)

V.42

	An {ITU-T} standard {protocol} for {error correction} between
	{modem}s which includes {MNP} up to level 4.

V.42bis

	An extension of the {ITU-T} {V.42} standard {modem} {protocol}
	to included {compression}.

	[Details?  On-line spec?]

vacuum tube

	<electronics> {electron tube}.

	(05 Feb 1996)

vadding

	<games> /vad'ing/ (From VAD, a permutation of ADV,
	i.e. {ADVENT}, used to avoid a particular {admin}'s continual
	search-and-destroy sweeps for the game) A leisure-time
	activity of certain hackers involving the covert exploration
	of the "secret" parts of large buildings - basements, roofs,
	freight elevators, maintenance crawlways, steam tunnels, and
	the like.  A few go so far as to learn locksmithing in order
	to synthesise vadding keys.  The verb is "to vad" (compare
	{phreaking}; see also {hack}, sense 9).  This term dates from
	the late 1970s, before which such activity was simply called
	"hacking"; the older usage is still prevalent at {MIT}.

	Vadding (pronounced /vay'ding/) was also popular {CMU}, at
	least as early as 1986.  People who did it every night were
	called the "vaders," possibly after "elevator," which was one
	of the things they played with, or "invader," or "Darth
	Vader".  This game was usually played along with
	no-holds-barred hide-and-seek.  CMU grad students were the
	known to pry open the inner doors of elevators between floors
	to see the graffiti on the inside of the outer doors.

	The most extreme and dangerous form of vadding is "elevator
	rodeo", also known as "elevator surfing", a sport played by
	wrasslin' down a thousand-pound elevator car with a 3-foot
	piece of string, and then exploiting this mastery in various
	stimulating ways (such as elevator hopping, shaft exploration,
	rat-racing, and the ever-popular drop experiments).  Kids,
	don't try this at home!

	See also {hobbit}.

	(07 Jan 1996)

VAL

	1. Value-oriented Algorithmic Language.  J.B. Dennis, MIT
	1979.  Single assignment language, designed for MIT dataflow
	machine.  Based on CLU, has iteration and error handling,
	lacking in recursion and I/O.  "A Value- Oriented Algorithmic
	Language", W.B. Ackermann et al, MIT LCS TR-218, June 1979.
	"The VAL Language: Description and Analysis", J.R. McGraw,
	TOPLAS 4(1):44-82 (Jan 1982).

	2. Variable Assembly Language.  Unimation.  Language for
	industrial robots.  Version: VAL II - "VAL II: A New Robot
	Control System for Automatic Manufacturing", B.E. Shimano et
	al, Proc IEEE Intl Conf on Robotics 1984, pp.278-292.

	3. VHDL Annotation Language.  Stanford.
	{(ftp://wilbur.stanford.edu/pub/valbin-sun3-4.0-0.1.3.tar.Z)}.
	Source in Ada available from Larry M. Augustin
	<lma@sierra.stanford.edu>.

Valencia Simple Tasker

	<operating system> (VSTa) A research {microkernel} and
	{operating system}.

	{(ftp://ftp.cisco.com/vandys/vsta)}

	[Details?]

	(27 Mar 1995)

valency

	See {degree}.

Valid

	A {dataflow} language.

	["A List-Processing-Oriented Data Flow Machine Architecture",
	Makoto Amamiya et al, AFIPS NCC, June 1982, pp. 143-151].

	(14 Feb 1995)

validation

	The stage in the {software life-cycle} at the end of the
	development process where software is evaluated to ensure that
	it complies with the requirements.

	(14 Feb 1995)

value added reseller

	<company> (VAR, or "value added retailer") A company which
	sells something (e.g. computers) made by another company (an
	{OEM}) with extra components added (e.g. specialist software).

	(14 Feb 1995)

value added retailer

	(VAR) {value added reseller}.

valve

	<electronics> UK term for a {vacuum tube}.

	(10 Jan 1996)

vanilla

	1. (Default flavour of ice cream in the US) Ordinary
	{flavour}, standard.  When used of food, very often does not
	mean that the food is flavoured with vanilla extract!  For
	example, "vanilla wonton soup" means ordinary wonton soup, as
	opposed to hot-and-sour wonton soup.  Applied to hardware and
	software, as in "Vanilla {Version 7} {Unix} can't run on a
	vanilla {PDP 11}/34."  Also used to orthogonalise chip
	nomenclature; for instance, a 74V00 means what TI calls a
	7400, as distinct from a 74LS00, etc.  This word differs from
	{canonical} in that the latter means "default", whereas
	vanilla simply means "ordinary".  For example, when hackers go
	to a chinese restaurant, hot-and-sour wonton soup is the
	{canonical} wonton soup to get (because that is what most of
	them usually order) even though it isn't the vanilla wonton
	soup.

	(04 Nov 1994)

	2. {Snobol4} by {Catspaw, Inc.} for {MS-DOS}.

	{(ftp://cs.arizona.edu/snobol4/vanilla.arc)}

	(05 Feb 1992)

vanity domain

	<networking> A {domain} you register for the sole purpose of
	having your own domain so you can have an easily remembered
	{URL} and {e-mail} address.  The domain is usually served
	(often {vhost}ed) off someone else's machines.

	This is as opposed to a domain you register because you have
	machines of your own which are already on the Internet and
	which you want to make addressable via something other than
	{dot address}es.

	Whereas vanity domains were almost unheard-of in 1980s, since
	the invention and popularization of the {Web} in the mid-1990s
	and the desire for {URL}s which consist only of memorable
	domain names (e.g., "http://www.pbs.org") for everything from
	movies to car wax, vanity domains have come to be the rule
	instead of the exception.

	(11 Sep 1997)

vannevar

	/van'*-var/ A bogus technological prediction or a foredoomed
	engineering concept, especially one that fails by implicitly
	assuming that technologies develop linearly, incrementally,
	and in isolation from one another when in fact the learning
	curve tends to be highly nonlinear, revolutions are common,
	and competition is the rule.  The prototype was Vannevar
	Bush's prediction of "electronic brains" the size of the
	Empire State Building with a Niagara-Falls-equivalent cooling
	system for their tubes and relays, a prediction made at a time
	when the semiconductor effect had already been demonstrated.
	Other famous vannevars have included {magnetic-bubble memory},
	{LISP machine}s, {videotex}, and a paper from the late 1970s
	that computed a purported ultimate limit on areal density for
	{integrated circuit}s that was in fact less than the routine
	densities of 5 years later.

vaporware

	<jargon> /vay'pr-weir/ Products announced far in advance of
	any release (which may or may not actually take place).  The
	term came from {Atari} users and was later used by {Infoworld}
	to {Microsoft}'s continuous lying about {Microsoft Windows}.

	See also {brochureware}.

	(30 Sep 1996)

VAR

	1. {Value Added Reseller} (or retailer).

	2. /veir/ or /var/ Short for "variable".  Compare {arg},
	{param}.

Variational Graphics eXtended

	<software> (VGX) {Software} developed by {SDRC} for use in 3D
	{CAD} {solid modelling}.

	(06 Feb 1998)

VAX

	/vaks/ 1. Virtual Address eXtension.  The most successful
	{minicomputer} design in industry history, possibly excepting
	its immediate ancestor, the {PDP-11}.  Between its release in
	1978 and its eclipse by {killer micro}s after about 1986, the
	VAX was probably the hacker's favourite machine of them all,
	especially after the 1982 release of {4.2BSD} {Unix}.
	Especially noted for its large, assembler-programmer-friendly
	{instruction set} - an asset that became a liability after the
	{RISC} revolution.

	2. A major brand of vacuum cleaner in Britain.  Cited here
	because its alleged sales pitch, "Nothing sucks like a VAX!"
	became a sort of battle-cry of RISC partisans.  It is even
	sometimes claimed that DEC actually entered a licencing
	deal with the vacuum-Vax people that allowed them to market
	VAX computers in the U.K. in return for not challenging the
	vacuum cleaner trademark in the US

	It is sometimes claimed that this slogan was *not* actually
	used by the Vax vacuum-cleaner people, but was actually that
	of a rival brand called Electrolux (as in "Nothing sucks
	like...").  It has been reliably confirmed that Electrolux (a
	Swedish company) actually did use this slogan in the late
	1960s; it has apparently become a classic example (used in
	textbooks) of the perils of not knowing the local idiom.

	It appears, however, that the Vax people thought the slogan a
	sufficiently good idea to copy it.  Several British hackers
	report that their promotions used it in 1986--1987, and we
	have one report from a New Zealander that the infamous slogan
	surfaced there in TV ads for the product as recently as 1992!

	(20 Feb 1995)

VAX DOCUMENT

	A document preparation system from {DEC}.

VAXectomy

	/vak-sek't*-mee/ (By analogy with "vasectomy") Removal of a
	{VAX}.  {DEC}'s {Microvax}en, especially, are much slower than
	newer {RISC}-based {workstation}s such as the {SPARC}.  Thus,
	if one knows one has a replacement coming, VAX removal can be
	cause for celebration.

	(20 Feb 1995)

VAXen

	/vak'sn/ (From "oxen", perhaps influenced by "vixen") The
	plural canonically used among hackers for the {DEC} {VAX}
	computers.  "Our installation has four PDP-10s and twenty
	vaxen."

	See {boxen}.

	(20 Feb 1995)

vaxherd

	/vaks'herd/ ["oxherd"] An operator who tends one or more
	{VAXen}.

vaxism

	/vak'sizm/ A piece of code that exhibits {vaxocentrism} in
	critical areas.  Compare {PC-ism}, {Unixism}.

VAX MIPS

	<benchmark> (Or VAX Unit of Performance, VUP) The processing
	power normally attributed to a {Digital Equipment Corporation}
	{VAX} 11/780.  Future VAX systems were rated according to this
	scale (e.g. VAX 8350's being 2.7 VUPs per CPU).  A {MicroVAX}
	II is normally associated with 0.9 VUPs and at a later time
	the MicroVUP was coined to rate VAX {workstations}.  The use
	of the VUP by Digital Equipment Corporation has been replaced
	with more standard benchmarks ({SPECint} and {SPECfp}) in the
	{DEC Alpha} processor systems.

	(22 Aug 1996)

vaxocentrism

	/vak"soh-sen"trizm/ [analogy with "ethnocentrism"] A notional
	disease said to afflict C programmers who persist in coding
	according to certain assumptions that are valid (especially
	under Unix) on {VAXen} but false elsewhere. Among these are:

	1. The assumption that dereferencing a null pointer is safe
	because it is all bits 0, and location 0 is readable and 0.
	Problem: this may instead cause an illegal-address trap on
	non-VAXen, and even on VAXen under OSes other than BSD Unix.
	Usually this is an implicit assumption of sloppy code
	(forgetting to check the pointer before using it), rather than
	deliberate exploitation of a misfeature.

	2. The assumption that characters are signed.

	3. The assumption that a pointer to any one type can freely be
	cast into a pointer to any other type.  A stronger form of
	this is the assumption that all pointers are the same size and
	format, which means you don't have to worry about getting the
	casts or types correct in calls.  Problem: this fails on
	word-oriented machines or others with multiple pointer
	formats.

	4. The assumption that the parameters of a routine are stored
	in memory, on a stack, contiguously, and in strictly ascending
	or descending order.  Problem: this fails on many RISC
	architectures.

	5. The assumption that pointer and integer types are the same
	size, and that pointers can be stuffed into integer variables
	(and vice-versa) and drawn back out without being truncated or
	mangled.  Problem: this fails on segmented architectures or
	word-oriented machines with funny pointer formats.

	6. The assumption that a data type of any size may begin at
	any byte address in memory (for example, that you can freely
	construct and dereference a pointer to a word- or
	greater-sized object at an odd char address).  Problem: this
	fails on many (especially RISC) architectures better optimised
	for {HLL} execution speed, and can cause an illegal address
	fault or bus error.

	7. The (related) assumption that there is no padding at the
	end of types and that in an array you can thus step right from
	the last byte of a previous component to the first byte of the
	next one.  This is not only machine- but compiler-dependent.

	8. The assumption that memory address space is globally flat
	and that the array reference "foo[-1]" is necessarily valid.
	Problem: this fails at 0, or other places on segment-addressed
	machines like Intel chips (yes, segmentation is universally
	considered a {brain-damaged} way to design machines (see
	{moby}), but that is a separate issue).

	9. The assumption that objects can be arbitrarily large with
	no special considerations.  Problem: this fails on segmented
	architectures and under non-virtual-addressing environments.

	10. The assumption that the stack can be as large as memory.
	Problem: this fails on segmented architectures or almost
	anything else without virtual addressing and a paged stack.

	11. The assumption that bits and addressable units within an
	object are ordered in the same way and that this order is a
	constant of nature.  Problem: this fails on {big-endian}
	machines.

	12. The assumption that it is meaningful to compare pointers
	to different objects not located within the same array, or to
	objects of different types.  Problem: the former fails on
	segmented architectures, the latter on word-oriented machines
	or others with multiple pointer formats.

	13. The assumption that an "int" is 32 bits, or (nearly
	equivalently) the assumption that "sizeof(int) ==
	sizeof(long)".  Problem: this fails on {PDP-11}s, {Intel
	80286}-based systems and even on {Intel 80386} and {Motorola
	68000} systems under some compilers.

	14. The assumption that "argv[]" is writable.  Problem: this
	fails in many embedded-systems C environments and even under a
	few flavours of Unix.

	Note that a programmer can validly be accused of vaxocentrism
	even if he or she has never seen a VAX.  Some of these
	assumptions (especially 2--5) were valid on the {PDP-11}, the
	original {C} machine, and became endemic years before the VAX.
	The terms "vaxocentricity" and "all-the-world"s-a-VAX
	syndrome' have been used synonymously.

VAXset

	A set of software development tools from DEC, including a
	language-sensitive editor, compilers etc.

VAXstation

	A family of {workstation}s from {DEC} based on their {VAX}
	computer architecture.

	(03 Feb 1995)

VAX/VMS

	{VMS}

vbell

	{visible bell}

VBX

	<filename extension> The {filename extension} for {Visual
	Basic} Extension.

	(03 Feb 1995)

VCC filtering

	<electronics> /V C C fil't*-ring/ A technique for reducing the
	amount of {Radio Frequency Interference} spread via power
	supply connections.  {VCC} is a common name for the
	non-{ground} power supply line in circuits based on {bipolar
	transistors}.

	When part of a circuit generates lots of radio-frequency
	noise, that portion of the {power plane} can be isolated from
	the rest of the circuit and power delivered to it via a {low
	pass filter}, usually a {PI filter}, as shown in the diagram
	below.

	      source   ________inductor_________   load
			  |                |
		      capacitor        capacitor
			  |                |
		       ground           ground

	This helps to shield the rest of the circuit from the noise
	generated by the load.

	(26 Jan 1998)

VCL

	{Visual Component Library}

VCODE

	1. The {intermediate language} used in the compilation of
	{NESL}.

	["Implementation of a Portable Nested Data-Parallel Language",
	Guy Blelloch et al, in Fourth ACM SIGPLAN Symposium on Princ
	and Practice of Parallel Programming, ACM, 1993].

	2. The {intermediate language} used in the compilation of
	{C+@}.

	(12 Jan 1995)

VCPI

	{Virtual Control Program Interface}

VCR

	{Video Cassette Recorder}

vdiff

	/vee'dif/ Visual diff.  The operation of finding differences
	between two files by {eyeball search}.  The term "optical
	diff" has also been reported, and is sometimes more
	specifically used for the act of superimposing two nearly
	identical printouts on one another and holding them up to a
	light to spot differences.  Though this method is poor for
	detecting omissions in the "rear" file, it can also be used
	with printouts of graphics, a claim few if any diff programs
	can make.  See {diff}.

VDL

	{Vienna Definition Language}

VDM

	1. Vienna Definition Method

	2. {Virtual Device Metafile}.

VDM++

	{Object-oriented extension} of {VDM-SL}.  ["Object-Oriented
	Specification in VDM++", in Object Oriented Specification Case
	Studies, K. Lano et al eds, P-H 1993].

VDM-SL

	Vienna Development Method Specification Language.  (Also known
	as Meta-IV.)  Model-oriented specification language, upon
	which the {Vienna Development Method} is based.  {ISO} draft
	Apr 1993.  Version: BSI/VDM.

	{(ftp://gateway.dec.com/pub/vdmsl_standard)}.  E-mail:
	<derek@mcs.le.ac.uk>.

	["The Vienna Development Method: The Meta-Language",
	D. Bjorner et al eds, LNCS 61, Springer 1978].

	["The VDM-SL Reference Guide", J. Dawes, Pitman 1991].
	["Systematic Software Development Using VDM", C.B. Jones, P-H
	1989].

VDSL

	{Very-high-bit Digital Subscriber Loop}

VDT

	{video display terminal}

VDU

	{Visual Display Unit}

vector

	1. <mathematics> A member of a {vector space}.

	2. <graphics> A line or movement defined by its end points, or
	by the current position and one other point.  See {vector
	graphics}.

	3. <operating system> A memory location containing the address
	of some code, often some kind of {exception} handler or other
	{operating system} service.  By changing the vector to point
	to a different piece of code it is possible to modify the
	behaviour of the operating system.

	Compare {hook}.

	4. <programming> A one-dimensional {array}.

	(30 Sep 1996)

Vector C

	<language> A variant of {C} from {CMU}(?), similar to {ACTUS}.

	(30 Sep 1996)

vector font

	{outline font}

vector graphics

	<graphics> (Sometimes called "object-oriented" graphics,
	though it's nothing to do with object-oriented programming).
	A drawing program which deals with separate shapes such as
	lines, polygons and text and groups of such objects as opposed
	to a painting program which stores only {bitmap}s.  The
	advantage is that it is possible to change any element of the
	picture at any time since each part is stored as an
	independent object whereas once something in a bitmap has been
	overwritten it cannot in general be retrieved.

	(30 Sep 1996)

vector processor

	{array processor}

vector space

	<mathematics> An {additive group} on which some ({scalar})
	{field} has an {associative} multiplicative action which
	distributes over the addition of the vector space and respects
	the addition of the (scalar) field: for vectors u, v and
	scalars h, k; h(u+v) = hu + hv; (h+k)u = hu + ku; (hk)u =
	h(ku).

	[Simple example?]

	(30 Sep 1996)

VECTRAN

	<language> {FORTRAN} with {array} extensions.

	["The VECTRAN Language: An Experimental Language for
	Vector/Matrix Array Processing", Report G320- 3334, IBM, Aug
	1975].

	(19 Jan 1996)

VEE

	{HP VEE}

veeblefeetzer

	{veeblefetzer}

veeblefester

	<jargon, abuse> /vee'b*l-fes"tr/ (From "Born Loser" comix via
	{Commodore}; probably originally from "Mad" Magazine's
	"Veeblefeetzer" parodies ca. 1960) Any obnoxious person
	engaged in the (alleged) professions of marketing or
	management.

	Antonym of {hacker}.  Compare {suit}, {marketroid}.  See also
	{veeblefetzer}.

	[veeblefeetzer or veeblefetzer?]

	(31 Mar 1996)

veeblefetzer

	<jargon> /vee'b*l-fetz'*/ (Or "veeblefeetzer"?) A purposely
	nonsensical sounding word applied to any sort of obscure or
	complicated object, e.g. a piece of computer code, model
	railroad equipment, auto parts, etc.

	The more immediate origin of the word is "Mad" Magazine.  In
	the late 1950s and early 1960s it used the word along the same
	lines, especially in its send-ups of big business.  "North
	American Veeblefetzer" was the subject of satires of an annual
	reports, an in-house newsletter, and more.  A Veeblefetzer, in
	their case, was a robot-like device that did something or
	other.

	The more distant source was probably a 19th century yiddish
	word, possibly with limited usage.  In German, "Fetzer" is any
	contraption, while "Veeble" is a likely corruption of "Webel"
	-- meaning weaving.  Textile mills of this period were crammed
	with very complicated, wildly active and very loud pieces of
	machinery.

	See also {veeblefester}.

	[veeblefeetzer or veeblefetzer?]

	(31 Mar 1996)

VEL

	See {LISP70}.

Vendor Independent Messaging

	<networking> (VIM) An {electronic mail} {API} promoted by an
	industry group headed by {Lotus Development}.  VIM is a
	competitor to {Microsoft}'s {MAPI}.

	[Features?]

	(28 Mar 1995)

ventilator card

	Synonym {lace card}.

Venus flytrap

	[after the insect-eating plant] See {firewall machine}.

verbage

	<spelling, jargon> /ver'b*j/ A deliberate misspelling and
	mispronunciation of {verbiage} that assimilates it to the word
	"garbage".  Compare {content-free}.  More pejorative than
	"verbiage".

	(13 Dec 1996)

verbiage

	When the context involves a software or hardware system, this
	refers to {documentation}.  This term borrows the connotations
	of mainstream "verbiage" to suggest that the documentation is
	of marginal utility and that the motives behind its production
	have little to do with the ostensible subject.

Verdi

	(named after the Italian composer Giuseppe Verdi (1813-1901))
	Provable systems language.  Descendant of Ottawa Euclid.

verification

	The process of determining whether or not the products of a
	given phase in the life-cycle fulfil a set of established
	requirements.

Verilog

	<language> A {Hardware Description Language} for electronic
	design and gate level {simulation} by {Cadence Design
	Systems}.

	E-mail: <kmd@cadence.com>.

	{xnf2ver} is an {XNF} to Verilog translator.

	["The Verilog Hardware Description Language", Donald E. Thomas
	& Philip Moorby, {Kluwer} 1991].

	(10 Mar 1995)

Verilog SA

	A French {real-time} software engineering company.

Veronica

	Very Easy Rodent-Oriented Net-wide Index to Computerized
	Archives.  Veronica offers a keyword search of most {gopher}
	menu titles in the entire gopher web.  As {archie} is to {FTP}
	archives, Veronica is to {Gopherspace}.  A Veronica search
	produces a menu of Gopher items, each of which is a direct
	pointer to a Gopher data source.  Because Veronica is accessed
	through a Gopher Client, it is easy to use, and gives access
	to all types of data supported by the Gopher {protocol}.

	To try Veronica, select it from the "Other Gophers" menu on
	Minnesota's gopher server, or point your gopher at:

	 Name=veronica (search menu items in most of GopherSpace)
	 Type=1
	 Port=70
	 Path=1/veronica
	 Host=gopher.scs.unr.edu

	{(gopher://gopher.scs.unr.edu/1/veronica)}

Versa Module Europa

	<hardware> (VME) A flexible open-ended bus system which makes
	use of the {Eurocard} standard.

	VME was introduced in 1981 by {Motorola}, {Philips},
	{Thompson}, and {Mostek}.  It was intended to be a flexible
	environment supporting a variety of computing intensive tasks,
	and has become a rather popular protocol in the computer
	industry.  It is defined by the {IEEE} standard 1014-1987.

	(10 Mar 1997)

version

	<programming> One of a sequence of copies of a program, each
	incorporating new modifications.  Each version is usually
	identified by a number, commonly of the form X.Y where X is
	the major version number and Y is the release number.
	Typically an increment in X (with Y reset to zero) signifies a
	substantial increase in the function of the program or a
	partial or total re-implementation, whereas Y increases each
	time the progam is changed in any way and re-released.

	Version numbers are useful so that the user can know if the
	program has changed ({bug}s have been fixed or new functions
	added) since he obtained his copy and the programmer can tell
	if a bug report relates to the current version.  It is thus
	always important to state the version when reporting bugs.
	Statements about compatibility between different software
	components should always say which versions they apply to.

	See {change management}.

	(07 Dec 1997)

Version 7

	<operating system> (V7) The unsupported release of {Unix}
	ancestral to all current commercial versions.  {Brian
	Kernighan} announced the release of V7 in summer 1979, at the
	{Unix User's} Group meeting in Toronto.

	Before the release of the {POSIX}/{SVID} {standard}s, V7's
	features were often treated as a {Unix} portability baseline.
	Some old-timers impatient with commercialisation and {kernel
	bloat} still maintain that V7 was the Last True Unix.

	See {BSD}, {USG Unix}, {System V}.

	(22 May 1996)

vertical application

	An {application program} supporting one specific business
	process or type, e.g. payroll.

	Compare {horizontal application}.

	(12 Dec 1994)

vertical bar

	"|"

	Common: bar; or; or-bar; v-bar; pipe; vertical bar.  Rare:
	{ITU-T}: vertical line; gozinta; thru; pipesinta (last three
	from Unix); {INTERCAL}: spike.

	(23 Apr 1995)

vertical encoding

	<processor> An {instruction set} where a field (a bit or group
	of bits) of the instruction word is decoded (either by
	{hard-wired} {logic} or {microcode}) to generate signals to
	control the {functional unit}s, as opposed to {horizontal
	encoding} where the instruction word bits are used as the
	control signals directly.

	With vertical encoding, which combinations of signals and
	operations are possible is dictated by the decoding logic; the
	instruction field can only select one of these preprogrammed
	combinations.  This has the advantage that many control
	signals can be generated based on only a few instruction word
	bits and only valid combinations of control signals can be
	generated, e.g. only one source driving a {bus} at once.  An
	{instruction set} may use a mixture of horizontal and vertical
	encoding within each instruction.

	(23 Apr 1995)

vertical loop combination

	See {fusion}.

vertical microcode

	<processor> {Microcode} using {vertical encoding}.

	(23 Apr 1995)

vertical refresh rate

	<hardware> Synonym for {refresh rate}.

	(09 Feb 1996)

vertical scan rate

	<hardware> Synonym for {refresh rate}.

	(09 Feb 1996)

Very Large Scale Integration

	(VLSI) A term describing semiconductor {integrated circuit}s
	composed of hundreds of thousands of {logic elements} or
	memory cells.

	(11 Jan 1995)

Very Long Instruction Word

	(VLIW) Used to describe an {assembly language} {instruction
	set} implemented using {horizontal microcode}.  A horizontally
	encoded instruction word which encodes four or more operations
	might be considered "very long".

	VLIW architectures are sometimes classified as a type of
	static {superscalar} architecture.  They are static in the
	sense that which units operate in parallel is determined by
	the instruction rather than by dynamic scheduling at run-time.

	Producing code for VLIW machines is difficult; {trace
	scheduling} is a helpful compiler technique.

	The most famous VLIW machine was built by (the late)
	{Multiflow Computer, Inc.}

	(11 Nov 1994)

Very Small Aperture Terminal

	<communications> (VSAT) A kind of {ground station} used to
	contact a communications satellite such as INMARSAT.

	(28 Mar 1995)

VESA

	{Video Electronics Standards Association}

VESA Local Bus

	<hardware, standard> (VL, VLB) A {local bus} defined by the
	{Video Electronics Standards Association}, mostly used in
	{personal computer}s based on the {Intel 486}.  See also
	{PCI}.

	(31 Mar 1995)

V.FAST

	{V.34}

VFAT

	<operating system> A standard developed by {Microsoft} to
	enable long file names on standard {FAT} {partitions}.  VFAT
	suffers from all the drawbacks of FAT and adds more problems
	but moving to it is very easy.

	(23 Dec 1996)

V.FC

	A serial line {protocol} supported by some {modem}s.  Uses
	{symbol rate}s of 2400, 2800, 3000, >3200 and 3429 and up to
	28800 {baud}.

	{V.34} modems will also support V.FC if the manufacturer
	currently supports V.FC.

	The first V.FC modems were shipped in November 1993 and there
	have been many thousands sold.  There will probably be in
	excess of a million V.FC modems installed by the end of 1994.

	V.FC was intended to take some of the techniques being
	proposed for V.34 and put them into a real modem that people
	could use.  This also gave a lot of people the opportunity to
	try out 28.8 kilobit per second operation for the first time.
	There was never any intention from {Hayes} or {Rockwell} (who
	worked together for two years on V.FC) that V.FC would be
	compatible with V.34 - even if they had wanted it, others
	would have made sure it didn't happen!  In fact, they made the
	start-up deliberately different from V.34 so that it would be
	easy to distinguish between the two and easier to make
	dual-mode V.FC/V.34 modems.

	V.FC is quite different from V.34.  Most of the
	signal-processing {algorithm}s, whilst based on the same
	theory, are implemented in different ways.  V.34 has some
	extra things like a {secondary channel} and a special mode for
	28.8 kilobit per second fax.

	The Rockwell V.FC implementation uses a single-chip
	mask-programmed {DSP} for all the signal processing functions.
	You can also buy a modem controller chip from Rockwell to go
	with it which implements AT commands, error-control and
	{compression}.  Hayes made their own controller using the
	{Motorola} {68302} processor.  When it comes to an upgrade
	from V.FC to V.34 you have to have a new, masked DSP chip and
	new controller {firmware} to implement all the V.34-specific
	features.  This means that Rockwell-DSP based modems must be
	returned to the manufacturer for upgrade.  Upgraded modems
	will talk to either V.FC or V.34 modems.

VGA

	<hardware> {Video Graphics Array} (not "Adapter").

	(16 Nov 1995)

VGQF

	A query language.

vgrep

	<jargon> /vee'grep/ (Or "optical grep") Visual {grep}.
	Finding patterns in a file by eye rather than digitally.

	Compare {vdiff}.

	(06 Feb 1998)

VGX

	{Variational Graphics eXtended}

VHDL

	Very High Speed Integrated Circuit (VHSIC) Hardware
	Description Language.  A large high-level {VLSI} design
	language with Ada-like syntax.  The DoD standard for hardware
	description, now standardised as IEEE 1076.

	["VHSIC Hardware Description Language", M.R. Shahdad et al,
	IEEE Computer 18(2):94-103 (Feb 1985)].

VHE

	{Virtual Home Environment}

VHLL

	Very-{High-Level Language}.

	A {bondage-and-discipline language} that the speaker happens
	to like; {Prolog} and Backus's {FP} are often called VHLLs.

	(07 Dec 1994)

vhost

	{virtual host}

VHS

	1. {Very High Speed}.

	2. {storage} Video Home System.

	JVC's video cassette format.

	3. {Virtual Host Storage}.

vi

	<tool> /V-I/, /vi:/, *never* /siks/ Visual Interface.

	A {screen editor} crufted together by {Bill Joy} for an early
	{BSD} release.  vi became the de facto standard {Unix} editor
	and a nearly undisputed hacker favourite outside of {MIT}
	until the rise of {EMACS} after about 1984.  It tends to
	frustrate new users no end, as it will neither take commands
	while expecting input text nor vice versa, and the default
	setup provides no indication of which mode the editor is in
	(one correspondent accordingly reports that he has often heard
	the editor's name pronounced /vi:l/).  Nevertheless it is
	still widely used (about half the respondents in a 1991
	{Usenet} poll preferred it), and even some EMACS fans resort
	to it as a mail editor and for small editing jobs (mainly
	because it starts up faster than the bulkier versions of
	EMACS).

	See {holy wars}.

	(03 Oct 1995)

Vic20

	<computer> A home computer made by {Commodore} with a {6502}
	{CPU}, similar in style to the {Commodore 64} and {Commodore
	C16}.  The Vic20 0was released before the C64, and after the
	{Commodore PET}(?).  The Vic20 was intended to be more of a
	low-end home computer than the PET.

	The Vic20 had connectors for game cartridges and a {tape
	drive} (compatible with a C64).

	The Vic20 came with five {kilobytes} of {RAM}, but 1.5 KB were
	used by the system for various things, like the video display
	(which had an unusual 22x20 char/line screen layout), and
	other dynamic aspects of the {operating system} (such as it
	was).  The RAM was expandable to 32k with an optional plug-in
	cartridge that used the second rear card interface (not the
	Game/Cartridge Port).

	The name "VIC" came from the Video Interface Chip that was
	also used in the other, later, Commodore 8-bit computers.

	[Confirm details?  "Vic20" or "VIC-20"?]

	(14 Sep 1997)

video adapter

	{graphics adaptor}

video card

	{graphics adaptor}

video compression

	{Compression} of sequences of images.  Video compression
	{algorithm}s use the fact that there are usually only small
	changes from one "frame" to the next so they only need to
	encode the starting frame and a sequence of differences
	between frames.  This is known as "inter-frame coding" or "3D
	coding".

	{MPEG} is a committee producing {standard}s in this area and
	also the name of their standard {algorithm}.  {H.261} is
	another standard.

	See also {Integrated Information Technology}, {3DO},
	{full-motion video}, {Online Media}.

video conference

	An instance of {video conferencing}.

video conferencing

	<communications> A discussion between two or more groups of
	people who are in different places but can see and hear each
	other using electronic communications.  Pictures and sound are
	carried by the telecommunication network and such conferences
	can take place across the world.

	To overcome the {bandwidth} and {latency} limitations of
	current networks (especially the {POTS}), some form of {video
	compression} is often used.

	(01 May 1995)

video dial tone

	<communications> A means by which telephone companies can
	deliver "television" programs on a {common carrier} basis and,
	by law, provide equal access to all.

	[What does this mean?]

	(01 Dec 1996)

video display terminal

	{visual display unit}

Video Electronics Standards Association

	<body, standard> (VESA) An industry {standard}s organisation
	created in 1989 or 1990 mostly(?) concerned with {IBM}
	compatible {personal computer}s.  The first standard it
	created was the 800 x 600 pixel {Super VGA} (SVGA) display and
	its software interface.  It also defined the {VESA Local Bus}
	(VLB).

	See also {PCI}.

	{Home (http://www.vesa.org/)}

	(16 Nov 1995)

Video Graphics Adapter

	{Video Graphics Array}

Video Graphics Adaptor

	{Video Graphics Array}

Video Graphics Array

	<hardware> (VGA) A {display standard} for {IBM PC}s, with 640
	x 480 {pixel}s in 16 colours and a 4:3 {aspect ratio}.  There
	is also a text mode with 720 x 400 pixels.

	IBM technical references define the *product name* of their
	original VGA display board as "Video Graphics Array", in
	contrast to the preceding boards, the "{Color Graphics
	Adapter}" (CGA) and "{Enhanced Graphics Adapter}" (EGA).

	See also {Super Video Graphics Adapter}.

	(12 Jan 1995)

video memory

	<storage> The memory in a computer's {graphics adaptor}, used
	to store the image displayed on a {bitmap display}.  Often
	this is built using {VRAM} chips.  There is normally a simple
	correspondence between groups of {bits} in video memory and
	the dots or "{pixels}" on the screen, such that writing to a
	given group of bits will alter the appearance of a single dot.
	If each pixel corresponds to eight bits then it can have any
	of 256 colours (or shades of grey on a monochrome display).

	The video display electronics is responsible for reading the
	data from video memory and converting it into the necessary
	signals to drive the display.  Often this includes a {colour
	palette} which converts pixel values into {RGB} triplets.

	(01 Nov 1996)

Video on Demand

	<communications> (VoD) A planned system using {video
	compression} to supply programs to viewers when requested, via
	{ISDN} or cable.

	(02 Nov 1994)

video RAM

	{video random access memory}

video random access memory

	<hardware> (VRAM) Fast memory designed for storing the image
	to be displayed on a computer's {monitor}.  VRAM may be built
	from special memory {integrated circuits} designed to be
	accessed sequentially.

	VRAM must be fast enough to supply data to the display
	electronics at the speed at which the screen is scanned.  Thus
	for example, for a {resolution} of 1280x1024 eight bit
	{pixels} at a {refresh rate} of 70 Hz, the {video memory}
	would need to supply 1280x1024x70 = 90 Mbyte/s or one byte
	every 11 ns.  The VRAM may be {dual ported} in order to allow
	the display electronics and the {CPU} to access it at the same
	time.

	In an {IBM PC} the VRAM is located on the display interface
	card and 0.5 - 2 MB is typical.

	(14 Mar 1995)

video terminal

	{visual display unit}

videotex

	An obsolete electronic service offering people the privilege
	of paying to read the weather on their television screens
	instead of having somebody read it to them for free while they
	brush their teeth.  The idea bombed everywhere it wasn't
	government-subsidised, because by the time videotex was
	practical the installed base of personal computers could hook
	up to {time-sharing} services and do the things for which
	videotex might have been worthwhile better and cheaper.
	Videotex planners badly overestimated both the appeal of
	getting information from a computer and the cost of local
	intelligence at the user's end.  Like the {gorilla arm}
	effect, this has been a cautionary tale to hackers ever since.
	See also {vannevar}.

Vienna Definition Language

	(VDL) IBM Vienna Labs.  A language for formal, algebraic
	definition via operational semantics.  Used to specify the
	semantics of PL/I.  See also {VDM}.

	["The Vienna Definition Language", P. Wegner, ACM Comp Surveys
	4(1):5-63 (Mar 1972)].

Vienna Definition Method

	(VDM) A program development method based on formal
	specification using the {Meta-IV} language.

Vienna Fortran

	A {data-parallel} extension of {Fortran 77} for distributed
	memory multiprocessors by Hans Zima
	<zima@sophie.par.univie.ac.at>, Vienna University.

	["Programming In Vienna Fortran", B. Chapman et al, Scientific
	Programming 1(1):31-50 (Aug 1992)].

viewer

	<tool> A program to allow a file to be read (or played) but
	not changed.  Viewers are often freely distributable, even
	when the editor application is not.  This allows you to create
	files with the editor and make the viewer available to other
	users to view your files, e.g. on a {web site}.  Examples
	include the Word and Adobe Acrobat viewers.

	(29 Aug 1997)

ViewPoints

	<programming> A framework for distributed and {concurrent}
	software engineering which provides an alternative approach to
	traditional centralised software development environments.

	Decentralised process models are used to drive consistency
	checking and conflict resolution.  The process models use
	pattern matching on local development histories to determine
	the particular state of the development process, and employ
	rules to trigger situation-dependent assistance to the user.
	Communication between such process models facilitates the
	decentralised management of explicitly defined consistency
	constraints.

	[Ulf Leonhardt]

	(27 Mar 1995)

Views

	A Smalltalk extension for computer algebra.  "An Object
	Oriented Approach to Algebra System Design", K. Abdali et al,
	in Symp Symb Alg Manip, ACM 1986, pp.24-30.

VIF

	VHDL Interface Format.  Intermediate language used by the
	Vantage VHDL compiler.  "A VHDL Compiler Based on Attribute
	Grammar Methodology", R. Farrow et al, SIGPLAN NOtices
	24(7):120-130 (Jul 1989).

VIM

	1. <messaging> {Vendor Independent Messaging}.

	2. <text, tool> {vi} Improved (previously vi iMitation), An
	improved version of vi, available for many {platforms}.  VIM
	allows multiscreen editing, more flexible insert/command
	{mode} handling, better {C} indentation and much more.

	{FAQ (http://www.grafnetix.com/~laurent/vim/faq.html)}.

	(04 Oct 1997)

vines

	<networking, product> A family of {local area network}ing
	products from {Banyan}.

	(01 Mar 1995)

Vine Technology

	<company> A company which provides professional consulting
	services in the areas of networking, real-time systems,
	graphic arts, and {World-Wide Web} server advertisement space.

	{Home (http://www.vine.com/)}

	E-mail: <webmaster@vine.com>.

	(03 Mar 1995)

Viola

	An experimental {hypercard}-like interpreted {hypertext}
	system by Pei Y. Wei of {Berkeley}.

	(30 Nov 1994)

virgin

	Unused; pristine; in a known initial state.  "Let's bring up a
	virgin system and see if it crashes again."  (Especially
	useful after contracting a {virus} through {SEX}.)  Also, by
	extension, buffers and the like within a program that have not
	yet been used.

	(30 Nov 1994)

virgule

	<character> Rare, and ambiguous: {slash} or {comma}.

	"Virgule" (or rather, Latin "virgula", meaning "little rod"
	or, vividly enough, "little penis") was the name of a
	punctuation character shaped like a small {slash} and used in
	the Latin writing system much like a modern {comma} -- hence
	the ambiguity of this term in modern English.

	Compare French "virgule" and Italian "virgola", meaning
	"comma" (not "slash"); Italian "doppia virgola" and
	"virgoletta", both meaning "{double quote}".

	(08 Apr 1997)

Viron

	["Five Paradigm Shifts in Programming Language Design and
	Their Realisation in Viron, a Dataflow Programming
	Environment", V. Pratt, 10th POPL, ACM 1983, pp. 1-9].

	(30 Nov 1994)

virtual

	(Via the technical term {virtual memory}, probably from the
	term "virtual image" in optics) 1. Common alternative to
	{logical}; often used to refer to the artificial objects (like
	addressable {virtual memory} larger than physical memory)
	created by a computer system to help the system control access
	to shared resources.

	2. Simulated; performing the functions of something that isn't
	really there.  An imaginative child's doll may be a virtual
	playmate.

	Opposite of {real} or physical.

	(30 Nov 1994)

virtual 86 mode

	<processor, programming> (Or "virtual mode" or "virtual 8086
	mode") An operating mode provided by the {Intel 80386} and
	later processors to allow {real mode} programs to run under
	{operating system}s which use {protected mode}.  In this
	sub-mode of protected mode, an operating environment is
	created which mimics the address calculation in real mode.

	In virtual 86 mode the segment {MMU} is practically turned off
	and the {segment register}s exhibit the same behaviour as in
	real mode.  The {page}d MMU, however, still operates.  This
	means that the one megabyte {address space} of real mode can
	be remapped in four kilobyte {page}s to anywhere in the 32 bit
	{physical address} space.  Each page can be protected
	separately from read or write accesses.

	Virtual mode is handled on a per-task-basis, so each
	{exception} (from protection violations or {interrupt}s)
	switches the processor back into protected mode.  It is
	therefore possible to have multiple tasks in virtual mode
	which run {concurrent}ly under the control of an operating
	system which runs in protected mode.

	Most operating system services in {MS-DOS} systems are called
	by {software interrupt}s, which are a kind of exception.  If
	an MS-DOS application runs in virtual mode under the control
	of a protected mode operating system, each call to MS-DOS
	causes a switch to protected mode.  The operating system
	emulates the MS-DOS service and switches back to the
	application in virtual mode.  From the viewpoint of the
	application nothing differs from real mode.

	{Microsoft Windows}, {Windows NT}, and {OS/2} use this feature
	to implement "DOS-boxes" in which both MS-DOS and real mode
	{application program}s can run.

virtual address

	1. A memory location accessed by an {application program} in a
	system with {virtual memory} such that intervening hardware
	and/or software maps the virtual address to real ({physical})
	memory.  During the course of execution of an application, the
	same virtual address may be mapped to many different {physical
	address}es as data and programs are {paged out} and {paged in}
	to other locations.

	2. ({IBM}'s {VM} {operating system}), {Virtual Device
	Location}.

virtual cache

	A {cache} which uses {virtual address}, i.e. it is between the
	processor and the {memory management unit}.  A virtual cache
	cannot recognise external access to physical address, e.g. from
	{DMA}.  The whole cache must be flushed when swapping between
	tasks which share same virtual {address space}.

	(30 Nov 1994)

virtual circuit

	A {connection-oriented} {network} service which is implemented
	on top of a network which may be either connection-oriented or
	{connectionless} ({packet switching}).

Virtual Control Program Interface

	(VCPI) An alternative, and incompatible method for doing the
	same thing as {DOS Protected Mode Interface} (DPMI).

	(12 Jan 1995)

Virtual Device Driver

	<operating system> (VxD) A {device driver} under {Windows
	3.x}/{Windows 95} running as part of the {kernel} and thus
	having access to the memory of the kernel and all running
	processes as well as raw access to the hardware.  VxD's
	usually have the {filename extension} .386 under Windows 3.x
	and .vxd under Windows 95.  VxD's written for Windows 3.x can
	be used under Windows 95 but not vice versa.

	(27 Feb 1997)

Virtual Device Location

	(Or "Virtual Address") The address of a device (e.g. disk,
	printer, terminal) belonging to a "guest" {operating system}.
	Such an address is mapped to a physical device.  VM may remap
	several virtual disks to different parts of a single physical
	disk.

	(22 Feb 1995)

virtual disk

	{RAM disk}

Virtual Home Environment

	(VHE) A tool for using {NFS} on {HP UX}.

	(07 Dec 1994)

virtual host

	<networking> Most computers on the {Internet} have a single
	{Internet address}; however, often via special {kernel}
	patches, a given computer can be made to respond to several
	{IP} addresses and provide different {services} (typically
	different {Web} services) on each.  Each of these different IP
	addresess (which generally each have their own {hostname}) act
	as if they were distinct hosts on distinct machines, even
	though they are actually all one host.  Hence, they are
	{virtual} hosts.  A common use is when an {Internet Service
	Provider} "hosts" {World-Wide Web} or other services for
	several of their customers on one computer but giving the
	appearence that they are separate servers.

	(11 Sep 1997)

Virtual LAN

	<networking> Software defined groups of {host} on a {local
	area network} (LAN) that communicate as if they were on the
	same wire, even though they are physically on different {LAN
	segment}s throughout a site.  To define a virtual LAN, the
	{network administrator} uses a virtual LAN management utility
	to establish membersip rules that determine which hostss are
	in a specific virtual LAN.  Many models may exist but two seem
	to dominate:

	(1) Vitual Segment (or Port-Group) Virtual LAN.  These are
	switched at the {data link layer} ({OSI} layer 2).  Virtual
	segments turn an arbitrary number of physical segments into a
	single virtual segment that funtions as a self-contained
	traffic domain.

	(2) Virtual Subnet Virtual LAN: These are switched at the
	{Network Layer} ({OSI} layer 3).  Subnet-oriented virtual LANs
	are based on {subnet address}es used by {IP}, {IPX}, and other
	{network layer} {protocol}s to normally identify physical
	networks.  Administrators assign one subnet address to a
	number of switch {port}s (which may be on different switches
	and over a backbone).  Once identified as a virtual subnet,
	the selected LANs function as a {bridge group} - traffic is
	bridged at Layer 2 within the virtual subnet and routed at
	Layer 3 between virtual subnets.

	["The many faces of virtual LANs", Steven King, Network
	World, 1994/5?].

	(03 Apr 1995)

Virtual Loadable Module

	<networking> (VLM) {Novell}'s term for software modules that
	can be dynamically loaded to extend the functionality of the
	"VLM" {NetWare Requester} for {MS-DOS} that became standard
	beginning with {Novell NetWare} 4.

	(11 Jan 1995)

virtual machine

	1. An {abstract machine} for which an {interpreter} exists.
	Virtual machines are often used in the implementation of
	portable executors for {high-level language}s.  The HLL is
	compiled into code for the virtual machine (an {intermediate
	language}) which is then executed by an {interpreter} written
	in {assembly language} or some other portable language like
	{C}.

	Examples are {Core War}, {Java VM}, {OCODE}, {OS/2}, {POPLOG},
	{Portable Scheme Interpreter}, {Portable Standard Lisp},
	{Parallel Virtual Machine}, {Sequential Parlog Machine},
	{SNOBOL Implementation Language}, {SODA}.

	2. A software emulation of a physical computing environment.

	The term gave rise to the name of {IBM}'s {VM} {operating
	system} whose task is to provide one or more simultaneous
	execution environments in which operating systems or other
	programs may execute as though they were running "on the bare
	iron", that is, without an eveloping Control Program.  A major
	use of VM is the running of both outdated and current versions
	of the same operating system on a single {CPU} complex for the
	purpose of system migration, thereby obviating the need for a
	second processor.

	(03 Aug 1997)

Virtual Machine Environment

	(VME) {ICL}'s {mainframe} {operating system}.

	(28 Jun 1995)

Virtual Machine System Product

	(VM, VM/SP) A program produced by {IBM}.  Over the last two
	decades, this system has been ported to several large IBM
	{mainframe}s and has been known as VM/SP, VM/XA and currently
	as VM/ESA.  It consists of two major components: the Control
	Program (CP) which provides "guest support" for {operating
	system}s that run on IBM mainframe compatible processors by
	providing a seamless {emulation} of privileged functions in a
	problem program environment; and the Conversational Monitor
	System (see {VM/CMS}), a pseudo-{operating system} environment
	that relies on numerous {API}s into CP to provide very
	efficient single-user processing.

	["History of VM"(?), Melinda Varian, Princeton University].

	(31 Jan 1995)

virtual memory

	<architecture, storage> The {address space} available to a
	process running in a system with a {memory management unit}
	(MMU).

	The virtual {address space} is divided into {pages}.  Each
	{physical address} output by the {CPU} is split into a
	({virtual}) {page} number (the most significant bits) and an
	offset within the page (the N least significant bits).  Each
	page thus contains 2^N {bytes} (or whatever the unit of
	addressing is).

	The offset is left unchanged and the virtual page number which
	is mapped by the {memory management unit} (MMU) to a
	{physical} page number.  This is recombined with the offset to
	give a {physical address} - a location in {physical memory}
	({RAM}).

	Virtual memory is usually much larger than physical memory.
	{Paging} allows the excess to be stored on {hard disk} and
	copied to RAM as required.  This makes it possible to run
	programs for which the total code plus data size is greater
	than the amount of RAM available.  This is known as "{demand
	paged} virtual memory".  A page is copied from disk to RAM
	when an attempt is made to access it and it is not already
	present.  This paging is performed automatically by
	collaboration between the {CPU}, the {MMU} and the {operating
	system} {kernel}, and the program is unaware of it.

	The performance of a program will depend dramatically on how
	its memory access pattern interacts with the paging scheme.
	If accesses exhibit a lot of {locality of reference},
	i.e. each access tends to be close to previous accesses, the
	performance will be better than if accesses are randomly
	distributed over the program's {address space} thus requiring
	more paging.

	In a {multitasking} system, physical memory may contain pages
	belonging to several programs.  Without {demand paging}, an OS
	would need to allocate physical memory for the whole of every
	active program and its data.  Such a system might still use an
	{MMU} so that each program could be located at the same
	{virtual address} and not require run-time relocation.  Thus
	virtual addressing does not necessarily imply the existence of
	virtual memory.  Similarly, a {multitasking} system might load
	the whole program and its data into physical memory when it is
	to be executed and copy it all out to disk when its
	{timeslice} expired.  Such "swapping" does not imply virtual
	memory and is less efficient than paging.

	Some {application programs} implement virtual memory wholly in
	software, by translating every virtual memory access into a
	file access, but efficient virtual memory requires hardware
	and operating system support.

	(27 Aug 1997)

Virtual Memory System

	<operating system> (VMS) {DEC}'s proprietary {operating
	system} originally produced for its {VAX} {minicomputer}.

	VMS was renamed "OpenVMS" around version 5.5.  The first
	version of VMS on {DEC Alpha} was known as OpenVMS for AXP
	V1.0, and the correct way to refer to the operating system now
	is OpenVMS for VAX or OpenVMS for Alpha.  The renaming also
	signified the fact that the {X/Open} consortium had certified
	OpenVMS as having a high support for {POSIX} standards.

	VMS is one of the most secure operating systems on the market
	(making it popular in financial institutions).  It currently
	has the best {clustering} capability (both number and
	distance) and is very scalable with {binaries} portable from
	small desktop {workstations} up to huge {mainframes}.

	Many {Unix} fans generously concede that VMS would probably be
	the hacker's favourite commercial OS if Unix didn't exist;
	though true, this makes VMS fans furious.

	{FAQ
	(http://www.cis.ohio-state.edu/hypertext/faq/bngusenet/comp/os/vms/top.html)}.

	{Usenet} newsgroup: {news:comp.os.vms}.

	[When was VMS first produced?  How does its performance
	compare with other OSes?]

	(30 Oct 1997)

virtual path

	<networking> The location of a file or directory on a
	particular {server}, as seen by a remote {client} accessing it
	via {World-Wide Web} (or similar distributed document
	service).

	A virtual path provides access to files outside the default
	directory and subdirectories.  It appears in the form
	".../~name/..." where "~name" is replaced with actual path
	configured by the administrator.  An {access control list} can
	be associated with a virtual path.

	(13 Apr 1995)

virtual point of presence

	(virtual PoP) A point, via which users can connect to an
	{Internet access provider}, which is not operated by the
	provider.  The user is charged by the telephone company for
	the call to the virtual point of presence which relays his
	call via some third party circuit to the Internet provider's
	central location.  This is in contrast to a physical {point of
	presence} (PoP) which is operated by the Internet provider
	themselves.  The advantage of a virtual PoP is that the
	provider can keep all their {modem}s in one location, thus
	improving availability and maintenance, but users do not have
	to pay long-distance call charges to that point.

	(13 Dec 1994)

virtual PoP

	{virtual point of presence}

Virtual Private Network

	<networking, security> (VPN) The use of {encryption} in the
	lower {protocol layers} to provide a secure connection through
	an otherwise insecure network, typically the {Internet}.  VPNs
	are generally cheaper than real private networks using private
	lines but rely on having the same encryption system at both
	ends.  The encryption may be performed by {firewall} software
	or possibly by {routers}.

	[Which layers?]

	(03 Dec 1997)

virtual reality

	(VR)

	1. <application> Computer simulations that use 3D graphics and
	devices such as the {data glove} to allow the user to interact
	with the simulation.

	2. <games> A form of network interaction incorporating aspects
	of role-playing games, interactive theater, improvisational
	comedy, and "true confessions" magazines.  In a virtual
	reality forum (such as {Usenet}'s {news:alt.callahans}
	newsgroup or the {MUD} experiments on {Internet} and
	elsewhere), interaction between the participants is written
	like a shared novel complete with scenery, "foreground
	characters" that may be personae utterly unlike the people who
	write them, and common "background characters" manipulable by
	all parties.  The one iron law is that you may not write
	irreversible changes to a character without the consent of the
	person who "owns" it, otherwise, anything goes.

	See {bamf}, {cyberspace}.

	(30 Jan 1995)

Virtual Reality Modeling Language

	<virtual reality, language> (VRML) A draft specification for
	the design and implementation of a {platform}-independent
	language for {virtual reality} scene description.

	VRML 1.0 was released on 26 May 1995.

	{Home (http://www.vrml.org/)}

	{Wired (http://vrml.wired.com/)}

	{Hypermail Archive (http://vrml.wired.com/arch/)}

	Mailing list: <majordomo@wired.com> (message body: "subscribe
	www-vrml your-email-address").

	(20 Jul 1995)

Virtual Sequential Access Method

	(VSAM) An {IBM} disk file storage scheme used in {OS360}.
	VSAM uses {inverted index}es and clever data organisation to
	improve access time and reduce the need for reorganisation of
	certain types of randomly accessed disk files.

	Search {algorithm}s that rely on the records of a database
	being sorted are significantly more efficient than reading the
	records sequentially until the required record is located.
	Therefore, each time a new record is inserted in the correct
	sort order, the records following it must be shifted to
	accommodate the new record.  In order to avoid this "shuffle"
	for each new record, empty space between records may be
	allocated.  However, once a large number of new records have
	been added, the empty space will fill up, requiring that the
	records be reorganised to create additional space.

	Rather than "shuffle" and reorganize large records in a large
	dataset, one can create an {inverted index} of record
	locations and sort that rather than the actual records.  But
	eventually the empty space provided in the index for new keys
	fills up, requiring a reorganisation.  VSAM applies
	statistical algorithms in an attempt to optimise this process.

	(08 Feb 1995)

virtual shredder

	The jargon equivalent of the {bit bucket} at shops using
	{IBM}'s {VM/CMS} {operating system}.  VM/CMS officially
	supports a whole bestiary of virtual card readers, virtual
	printers, and other phantom devices; these are used to supply
	some of the same capabilities {Unix} gets from {pipe}s and
	{I/O redirection}.

	(30 Jan 1995)

Virtual Software Factory

	<programming, tool> (VSF) A product from {Systematica} which
	allows users to develop {CASE} tools appropriate to any
	software engineering methodology.

	(09 Jun 1997)

Virtual Storage Extended

	<operating system> (VSE, formerly DOS/VSE) is a
	{multitasking}, {IBM 370}-architected {operating system}
	similar to {Multiple Virtual Storage} (MVS).

	VSE run jobs in {partitions} rather than {address spaces}, and
	uses {POWER} for input/output rather than {JES}, but is
	largely similar to MVS.  Subsequent VSE/{ESA} releases gave
	VSE the {XA-370} channel architecture, 31-bit virtual and real
	storage support, and data spaces.  VSE is the {IBM} operating
	system on one-third of installed {IBM 4381}s and a significant
	proportion of {IBM 9370}s as well.  It offers {transaction
	processing} and {batch processing} capabilities well beyond
	{Virtual Machine}'s current capabilities, and has a close
	affinity with MVS.

	(09 Jun 1997)

Virtual Telecommunications Access Method

	(VTAM) A data communications access method compatible with
	{IBM}'s {Systems Network Architecture}.

	[More detail?]

	(30 Jan 1995)

virus

	(By analogy with biological viruses, via SF) A {cracker}
	program that searches out other programs and "infects" them by
	embedding a copy of itself in them, so that they become
	{Trojan horse}s.  When these programs are executed, the
	embedded virus is executed too, thus propagating the
	"infection".  This normally happens invisibly to the user.

	Unlike a {worm}, a virus cannot infect other computers without
	assistance.  It is propagated by vectors such as humans
	trading programs with their friends (see {SEX}).  The virus
	may do nothing but propagate itself and then allow the program
	to run normally.  Usually, however, after propagating silently
	for a while, it starts doing things like writing "cute"
	messages on the terminal or playing strange tricks with the
	display (some viruses include {display hack}s).  Many nasty
	viruses, written by particularly antisocial {cracker}s, do
	irreversible damage, like deleting all the user's files.

	In the 1990s, viruses have become a serious problem,
	especially among {IBM PC} and {Macintosh} users (the lack of
	security on these machines enables viruses to spread easily,
	even infecting the operating system).  The production of
	special {anti-virus software} has become an industry, and a
	number of exaggerated media reports have caused outbreaks of
	near hysteria among users; many {luser}s tend to blame
	*everything* that doesn't work as they had expected on virus
	attacks.  Accordingly, this sense of "virus" has passed into
	popular usage (where it is often incorrectly used to denote a
	{worm} or even a {Trojan horse}).

	See {boot virus}, {phage}.  Compare {back door}.  See also
	{Unix conspiracy}.

	(31 Jan 1995)

visible bell

	<communications> (Or "visual bell") A program option (whether
	in a terminal program, {termcap} setting, or as a
	{stand-alone} program) which outputs the {bell} {character
	code} as a visual signal (e.g., a flashing status bar or menu
	bar).

	Generally intended for deaf or hearing-disabled users who
	couldn't hear the normal auditory beep; also widely used by
	users who simply don't want their machines {feep}ing at them
	or disturbing other users.

	[Implementations?]

	(07 Apr 1997)

visionary

	1. One who hacks vision, in the sense of an Artificial
	Intelligence researcher working on the problem of getting
	computers to "see" things using TV cameras.  (There isn't any
	problem in sending information from a TV camera to a computer.
	The problem is, how can the computer be programmed to make use
	of the camera information?  See {SMOP}, {AI-complete}.)

	2. [IBM] One who reads the outside literature.  At IBM,
	apparently, such a penchant is viewed with awe and wonder.

Visual BASIC

	<language> A popular {event-driven} {visual programming}
	system for {Microsoft Windows}, in which fragments of {BASIC}
	code are invoked when the user performs certain operations on
	graphical objects on-screen.  Widely used for in-house
	{application program} development by users and for
	prototyping.

	{Strollo Software (http://www.op.net/~jstrollo/vblinks.html)}.

	[Features?  History?  Vendor?]

	(21 Dec 1996)

visual bell

	{visible bell}

Visual C++

	A {C} and {C++} programming environment sold by {Microsoft}
	Corporation.

	{Usenet} newsgroup: {news:comp.lang.c++}.

	[Differences?  Features?]

	(21 Dec 1994)

Visual Component Library

	<programming> (VCL) A library for {Borland} {Delphi} {rapid
	application developement} software.

	[More details?]

	(23 Aug 1996)

Visual dBASE

	<language> A {Rapid Application Development} suite with a
	compiler and {intranet} tools to enable developers to publish
	data on the {World-Wide Web}.

	{(http://www.borland.com/VdBASE/)}.

	(05 Nov 1996)

Visual Display Unit

	<hardware> (VDU, or "video terminal", "video display
	terminal", VDT, "display terminal") A device incorporating a
	{cathode ray tube} (CRT) display, a keyboard and a {serial
	port}.  A VDU usually also includes its own display
	electronics which store the received data and convert it into
	electrical waveforms to drive the CRT.

	VDUs fall into two categories: {dumb terminals} and
	{intelligent terminals} (sometimes called "programmable
	terminals").

	Early VDUs could only display characters in a single preset
	{font}, and these were confined to being layed out in a
	rectangular grid, reproducing the functionality of the
	paper-based {teletypes} they were designed to replace.

	Later models added graphics facilities but were still driven
	via serial communications, typically with several VDUs
	attached to a single multi-user computer.  This contrasts with
	the much faster single {bitmap displays} integrated into most
	modern single-user {personal computers} and {workstations}.

	(27 Nov 1997)

visualisation

	The act of making a visible presentation of numerical data,
	particularly a graphical one.  This might include anything
	from a simple X-Y graph of one dependent variable against one
	independent variable to a {virtual reality} which allows you
	to fly around the data.

	{Gnuplot} is the {Free Software Founddation}'s utility for
	producing various kinds of graphs.

	{Usenet} newsgroup: {news:comp.graphics}.

	The {Computer Graphics Resource Listing} contains pointers to
	several visualisation tools.

	{FAQ
	(ftp://src.doc.ic.ac.uk/usenet/news-info/comp.graphics/)}.

	{Electronic Visualization Laboratory, University of Illinois
	at Chicago (http://www.ncsa.uiuc.edu/EVL/docs/Welcome.html)}.

	(23 Feb 1995)

visualization

	{visualisation}

visual language

	{visual programming language}

visual programming

	1. Writing programs in a language which manipulates visual
	information or supports visual interaction.

	2. Writing programs in a {visual programming language}.

	3. Writing programs in a {visual programming environment}.

visual programming environment

	Software which allows the use of visual expressions (such as
	graphics, drawings, animation or {icon}s) in the process of
	programming.  These visual expressions may be used as
	graphical interfaces for textual programming languages.  They
	may be used to form the syntax of new visual programming
	languages leading to new paradigms such as {programming by
	demonstration} or they may be used in graphical presentations
	of the behaviour or structure of a program.

	(23 Feb 1995)

visual programming language

	<language> (VPL) Any programming language that allows the user
	to specify a program in a two-(or more)-dimensionsional way.
	Conventional textual languages are not considered
	two-dimensional since the {compiler} or {interpreter}
	processes them as one-dimensional streams of characters.  A
	VPL allows programming with visual expressions - spatial
	arrangements of textual and graphical symbols.

	VPLs may be further classified, according to the type and
	extent of visual expression used, into {icon}-based languages,
	{form}-based languages and {diagram language}s.  {Visual
	programming environment}s provide graphical or iconic elements
	which can be manipulated by the user in an interactive way
	according to some specific spatial grammar for program
	construction.

	A visually transformed language is a non-visual language with
	a superimposed visual representation.  Naturally visual
	languages have an inherent visual expression for which there
	is no obvious textual equivalent.

	{Visual Basic}, {Visual C++} and the entire {Microsoft} Visual
	family are not, despite their names, visual programming
	languages.  They are textual languages which use a graphical
	{GUI builder} to make programming interfaces easier.  The user
	interface portion of the programming environment is visual,
	the languages are not.  Because of the confusion caused by the
	multiple meanings of the term "{visual programming}", Fred
	Lakin has proposed the term "executable graphics" as an
	alternative to VPL.

	Some examples of visual programming languages are {Prograph},
	{Pict}, {Tinkertoy}, {Fabrik}, {CODE 2.0} and {Hyperpascal}.

	{(http://www.cogs.susx.ac.uk/users/ianr/vpl.html)}.
	{(http://cuiwww.unige.ch/eao/www/readme.html)}.

	{Usenet} newsgroup: {news:comp.lang.visual} (NOT for {Visual
	Basic} or {Visual C++}).

	(10 Feb 1995)

VITAL

	A {semantics} language using {FSL}, developed by Mondshein in
	1967.

	[Sammet 1969, p. 641].

	(23 Feb 1995)

VIVID

	A numerical {constraint}-oriented language.

	["VIVID: The Kernel of a Knowledge Representation Environment
	Based on the Constraints Paradigm of Computation", J. Maleki,
	Proc 20th Annual Hawaii Intl Conf on System Sciences (Jan
	1987) pp.591-597].

	(23 Feb 1995)

viz

	A {visual language} for specification and programming.

	["viz: A Visual Language Based on Functions", C.M. Holt, 1990
	IEEE Workshop on Visual Langs, Oct 1990, pp.221-226].

	(23 Feb 1995)

VLB

	{VESA local bus}

VLDB

	{Very Large DataBase}

	[How large?]

	(21 Dec 1996)

Vlisp

	Patrick Greussay <pg@litp.ibp.fr> ca 1973.

	A {Lisp} dialect with a fast {interpreter} and a portable
	{virtual machine}.  Introduced the "{chronology}", a dynamic
	environment for implementing interrupts.  Led to {Le_Lisp}.
	See also {ObjVlisp}.

	["Contribution a la Definition Interpretive et a
	l'Implementation des Lambda-Langages", P. Greussay, These
	d'Etat, U Paris VI, Nov 1977].

VLIW

	{Very Long Instruction Word}

VLM

	<networking> {Virtual Loadable Module}.

	(11 Nov 1995)

VLSI

	<hardware> {Very Large Scale Integration}.

VM

	{Virtual Machine System Product}

VM/CMS

	Virtual Machine/Conversational Monitor System.

	An {IBM} pseudo-{operating system} running on 43xx and 30xx
	series computers.  VM/CMS is designed to support large numbers
	of interactive users.  It relies on numerous {API}s into the
	Control Program (CP) to provide very efficient single-user
	processing

	(30 Jan 1995)

VME

	1. <hardware> {Versa Module Europa}.

	See {VMEbus}.

	2. <operating system> {Virtual Machine Environment}.

VMEbus

	A widely accepted backplane interconnection bus system
	developed by a consortium of companies led by {Motorola}, now
	standardised as {IEEE} 1014.

	(01 Jun 1995)

VME Microsystems International Corporation

	<company> (VMIC)

	Address: Huntsville, AL, USA.

	Telephone: +1 800 322 3616.

	(01 Jun 1995)

VML

	VODAK Model Language.  Language for an extensible
	{object-oriented database}.

	["Object-Oriented Modeling for Hypermedia Systems Using the
	Object-Oriented VODAK Model Language (VML)" Wolfgang Klas et
	al, in Object-Oriented Database Management Systems, NATO ASI
	Series, Springer 1993].

	E-mail: <aberer@darmstadt.gmd.de>.

VMS

	{Virtual Memory System}

VoD

	{video on demand}

voice mail

	<messaging, business> Any system for sending, storing and
	retrieving {audio} messages, like a telephone answering
	machine.

	A voice mailbox is typically associated with a telephone
	number or extension.  When the number is called and the line
	is busy or not answered, the caller hears a message left by
	the owner and is given instructions for leaving a message or
	other available options, such as paging the individual or
	being transferred to an operator.  The owner of a mailbox can
	change the outgoing message or listen to incoming messages
	after entering a {PIN}.  Members of a voice mail system can
	generally forward or {broadcast} messages to other members'
	boxes.

	The experience of two people trying to reach other by
	telephone but always reaching each other's voice mail is
	referred to as "(tele)phone tag".

	(03 Nov 1996)

voice-net

	Hackish way of referring to the {plain old telephone system},
	comparing it to a digital {network}.  {Usenet} {sig block}s
	sometimes include the sender's telephone number next to a
	"Voice:" or "Voice-Net:" header; variants of this are
	"Voicenet" and "V-Net".

	Compare {paper-net}, {snail-mail}.

	(16 Feb 1995)

voice recognition

	See {speech recognition}.

volatile

	1. <programming> {volatile variable}.

	2. <storage> See {non-volatile storage}.

	(05 Jun 1997)

volatile memory

	{non-volatile storage}

volatile storage

	{non-volatile storage}

volatile variable

	<programming> A variable in a computer program which can be
	modified by processes other than the program.  For example, a
	variable that stores the value of a timer chip (either because
	it is located at the address of the hardware device or because
	it is updated on {interrupt}s) needs to be volatile to be
	useful.

	A {static} variable, on the other hand, maintains its value
	until the program changes it or it is no longer needed.  In
	addition, volatile variables can be held in the {stack}
	whereas static variables are usually stored in a program's
	{data segment}.

	(17 May 1995)

voltage

	<electronics> (Or "potential difference", "electro-motive
	force" (EMF)) A quantity measured as a signed difference
	between two points in an electrical circuit which, when
	divided by the {resistance} in {Ohms} between those points,
	gives the current flowing between those points in {Amperes},
	according to {Ohm's Law}.  Voltage is expressed as a signed
	number of Volts (V).  The voltage gradient in Volts per metre
	is proportional to the force on a charge.

	Voltages are often given relative to "earth" or "ground" which
	is taken to be at zero Volts.  A circuit's earth may or may
	not be electrically connected to the actual earth.

	The voltage between two points is also given by the charge
	present between those points in {Coulombs} divided by the
	{capacitance} in {Farads}.  The capacitance in turn depends on
	the {dielectric constant} of the insulators present.

	Yet another law gives the voltage across a piece of circuit as
	its {inductance} in {Henries} multiplied by the rate of change
	of current flow through it in Amperes per second.

	A simple analogy likens voltage to the pressure of water in a
	pipe.  Current is likened to the amount of water (charge)
	flowing per unit time.

	(04 Dec 1995)

Volume Table Of Contents

	<storage> (VTOC) /V-tock/ A special {file} on a {disk}, which
	contains a list of all the ordinary files on the disk and
	their {addresses}.  Also called a {directory}.

	The term is used mostly with large {mainframe} {disk drives}.
	Storage administrators will often refer to the VTOC to obtain
	information on the number of files stored on a disk.

	(15 Apr 1997)

von Neumann integer

	<mathematics> A {finite} {von Neumann ordinal}.

	The von Neumann integer N is a {finite} set with N elements
	which are the von Neumann integers 0 to N-1.  Thus

		0 = {}		= {}
		1 = {0}		= {{}}
		2 = {0, 1}	= {{}, {{}}}
		3 = {0, 1, 2}	= {{}, {{}}, {{}, {{}}}}
		...

	The set of von Neumann integers is {infinite}, even though
	each of its elements is finite.

	(30 Mar 1995)

von Neumann ordinal

	<mathematics> An implementation of {ordinal}s in {set theory}
	(e.g. {Zermelo Frnkel set theory} or {ZFC}).  The von Neumann
	ordinal alpha is the {well-ordered set} containing just the
	ordinals "shorter" than alpha.

	"Reasonable" set theories (like ZF) include Mostowski's
	Collapsing Theorem: any {well-ordered set} is {isomorphic} to
	a von Neumann ordinal.  In really screwy theories (e.g. NFU --
	New Foundations with Urelemente) this theorem is false.

	The finite von Neumann ordinals are the {von Neumann
	integer}s.

	(30 Mar 1995)

voodoo programming

	<jargon> (From George Bush's "voodoo economics") The use by
	guess or cookbook of an obscure or {hairy} system, feature, or
	algorithm that one does not truly understand.  The implication
	is that the technique may not work, and if it doesn't, one
	will never know why.  Almost synonymous with {black magic},
	except that black magic typically isn't documented and
	*nobody* understands it.

	Compare {magic}, {deep magic}, {heavy wizardry}, {rain dance},
	{cargo cult programming}, {wave a dead chicken}.

	(10 Mar 1995)

Voronoi diagram

	<mathematics, graphics> (After G. Voronoi) For a {set} S of
	points in the {Euclidean plane}, the {partition} Vor(S) of the
	plane into the {voronoi polygons} associated with the
	{members} of S.  Vor(S) is the dual of the {Delaunay
	triangulation} of S.

Voronoi polygon

	<mathematics, graphics> For a member s of a {set} S of points
	in the {Euclidean plane}, the {locus} of points in the plane
	that are closer to s than to any other member of S.

	(03 Aug 1997)

Voters Telecommunications Watch

	<body> (VTW) A non-profit organization based in New York,
	founded by Shabbir J. Safdar to protect the rights of
	{Internet} users.  The VTW has actively opposed regulation of
	{encryption} and restrictions on Internet free speech.  VTW
	created the animated "Free Speech" fireworks icon that has
	been displayed on many web pages since June 12, 1996, the day
	that a three-judge panel in Philadelphia ruled the {CDA}
	unconstitutional.

	{Home (http://www.vtw.org)}.

	(03 Nov 1996)

voxel

	<jargon> (By analogy with "{pixel}") Volume element.

	The smallest distinguishable box-shaped part of a
	three-dimensional space.  A particular voxel will be
	identified by the x, y and z coordinates of one of its eight
	corners, or perhaps its centre.  The term is used in three
	dimensional modelling.

	(10 Mar 1995)

VPL

	1. {visual programming} language.

	["VPL: An Active, Declarative Visual Programming System,
	D. Lau-Kee et al, 1991 IEEE Workshop on Vis Langs, Oct 1991,
	pp. 40-46].

	2. A {dataflow} language for interactive image processing.

VPN

	{Virtual Private Network}

VP-Planner

	<tool, product> A {spreadsheet} from {Paperback Software}.  It
	has a graph menu within the the spreadsheet program (with
	{CGA} graphics).  The graphs are updated every time the graph
	screen is activated.

	(28 Mar 1995)

VR

	{virtual reality}

VRAM

	{video random access memory}

VRML

	{Virtual Reality Modeling Language}

VRTX

	Virtual Real-Time Executive.

	A {real-time} {operating system} from {ReadySystems} for the
	{Motorola 68000} family of {microprocessor}s.

	{MPV} is a {multi-processing} extension.

	(08 Nov 1994)

VSAM

	{Virtual Sequential Access Method}

VSAT

	<communications> {Very Small Aperture Terminal}.

VSCM

	A highly portable implementation of {Scheme}, written in {ANSI
	C} and {Scheme}.  VSCM features exception and interrupt
	handling, executable portable memory images, {coroutine}s and
	{continuation}s with multiple arguments.

	Portability is achieved by exclusive use of legal ANSI C
	features -- as opposed to a plethora of #ifdef's to adjust to
	various system peculiarities.  (Of course, in real life ANSI C
	doesn't guarantee portability per se, because there are too
	many systems with broken compilers or broken libraries.)

	Version II Nov9 by Matthias Blume <blume@cs.princeton.edu>
	includes {run-time support} and a {bytecode compiler}.  It
	conforms to R4RS and IEEE P1178 and runs on {Unix} and
	{Macintosh}.  It is actively developed.

	{Canada (ftp://nexus.yorku.ca/pub/scheme/imp/vscmII*.tar.Z)},
	{Germany
	(ftp://faui80.informatik.uni-erlangen.de/pub/scheme/yorku/imp/)},
	{UK
	(ftp://unix.hensa.ac.uk/pub/uunet/languages/lisp/scheme/repository/imp/)}.

	{Usenet} newsgroup: {news:comp.lang.scheme}.

	(09 Nov 1993)

VSE

	{Virtual Storage Extended}

VSF

	{Virtual Software Factory}

VSP

	Very Simple Prolog+.

VSTa

	<operating system> {Valencia Simple Tasker}.

VSX

	Verification Suite for {X/open}.

VT

	<character> Vertical Tab, the {mnemonic} for {ASCII} 11.

	(24 Jun 1996)

vt100

	<hardware> {DEC}'s definitive {CRT} {video terminal} of the
	early/mid 1980s.  Its {control codes} and {escape sequences}
	still form the basis of the {xterm} set and of the {ANSI} or
	{IBM PC} standards.  VT100 compatibility is still provided by
	most {terminal emulators}.

	[On-line documentation?]

	(28 Mar 1995)

vt220

	<hardware> A {DEC} {video terminal}, the successor to the
	{VT100} series.

	[On-line documentation?]

	(28 Mar 1995)

VTAM

	{Virtual Telecommunications Access Method}

VTOC

	{Volume Table Of Contents}

VTS

	A suite of test programs for Motif from {OSF}.

VTW

	{Voters Telecommunications Watch}

VUE

	Visual User Environment: a desktop manager for Unix from
	Hewlett-Packard.

VUIT

	Visual User Interface Tool: a WYSIWYG editor from DEC for
	building human interfaces to applications using {OSF}/Motif.
	It provides an interactive interface to UIL and the Motif
	toolkit.

VULCAN

	1. Wayne Ratliff ca. 1980.  CP/M port of JPLDIS which evolved
	into dBASE II.

	2. The dBASE-like interpreter and compiler sold by RSPI with
	their Emerald Bay product.  [same as 1?]

	3. Early string manipulation language.  "VULCAN - A String
	Handling Language with Dynamic Storage Control", E.P. Storm et
	al, Proc FJCC 37, AFIPS (Fall 1970).

	4. Kahn et al, Xerox PARC.  Concurrent object orientation and
	logic programming.  An object-oriented preprocessor for FCP.
	"Vulcan: Logical Concurrent Objects", K. Kahn et al in
	Research Directions in Object- Oriented Programming,
	A.B. Shriver et al eds, MIT Press 1987.

Vulcan death grip

	<jargon> A variant of {Vulcan nerve pinch} derived from a Star
	Trek {classic} epsisode where a non-existant "Vulcan death
	grip" was used to fool Romulans that Spock had killed Kirk.

	(27 Oct 1996)

Vulcan nerve pinch

	<jargon> (Or "three-finger salute", Vulcan death grip; from
	the old "Star Trek" TV series via {Commodore} {Amiga}
	{hackers}) The keyboard combination that forces a {soft boot}
	or jump to {ROM monitor} (on machines that support such a
	feature).

	On an Amiga this is done with Ctrl/Right Amiga/Left Amiga; on
	{IBM PC}s and many {microcomputers} it is Ctrl/Alt/Del; on
	{Suns}, L1-A; on some {Macintoshes}, it is <Cmd>-<Power
	switch>!

	Compare {quadruple bucky}.

	(27 Oct 1996)

vulture capitalist

	<abuse> A pejorative hackerism for "venture capitalist",
	deriving from the common practice of pushing contracts that
	deprive inventors of control over their own innovations and
	most of the money they ought to have made from them.

	(14 Apr 1995)

VUP

	{VAX MIPS}

VxD

	{Virtual Device Driver}

VXI

	{VMEbus Extension for Instrumentation}

VxWorks

	<operating system> A {real-time} {multitasking} {operating
	system} from {Wind River Systems}.  Originally it used the
	{VRTX} {kernel} but this has been replaced by Wind River's own
	"Wind kernel 2.4".

	Before version 5.3 VxWorks included a {software development
	environment} but this is now called "Tornado".

	Current version (28 Nov 1996) 5.3.

	(29 Nov 1996)

W3

	A {World-Wide Web} {browser} for {Emacs} by William M. Perry
	<wmperry@indiana.edu>.

	(16 Dec 1994)

W3C

	{World Wide Web Consortium}

W3 Consortium

	{World Wide Web Consortium}

WA-12

	Workflow Analysis in 12 different organisations.  A project
	from the Department of Computer Science from the {University
	of Twente}, Enschede, The Netherlands.  The final report of
	this project is available to the public (ISBN 90-365-0683-2).

wabbit

	/wab'it/ [almost certainly from Elmer Fudd's immortal line
	"You wascawwy wabbit!"]  1. A legendary early hack reported on
	a System/360 at RPI and elsewhere around 1978; this may have
	descended (if only by inspiration) from hack called RABBITS
	reported from 1969 on a Burroughs 55000 at the University of
	Washington Computer Center.  The program would make two copies
	of itself every time it was run, eventually crashing the
	system.

	2. By extension, any hack that includes infinite
	self-replication but is not a {virus} or {worm}.  See {fork
	bomb} and {rabbit job}, see also {cookie monster}.

Wabi

	{Windows Application Binary Interface}

WabiServer

	<operating system, tool> An addition to {Wabi} which allows
	the {Microsoft Windows} application to run on a {server},
	e.g. a powerful {Intel}-based computer, with users accessing
	it from their desktop which can be a cheap computer such as an
	{X terminal}.

	(08 Jan 1997)

wacco

	A {BNF}-based LL(?) {parser generator}.

	Posted to comp.sources.misc.

Wafe

	<programming> (From Widget Athena front end) A package by
	Gustaf Neumann <Gustaf.Neumann@uni-essen.de> implementing a
	symbolic interface to the {Athena} {widgets} and
	{OSF}/{Motif}.  A typical Wafe {application} consists of two
	parts: a front-end (Wafe) and an application program which
	runs as a separate process.  The distribution contains sample
	application programs in {Perl}, {GAWK}, {Prolog}, {TCL}, {C},
	and {Ada} talking to the same Wafe binary.

	The current Wafe version is 1.0.15. It supports Athena as
	distributed with {X} releases 4-6 and Motif versions 1.1, 1.2,
	and 2.0 but new distribution are only tested against {X}
	releases 5 and 6, and Motif versions 1.2.4 and 2.0.

	{HOME (http://www.wu-wien.ac.at/wafe)},
	{(ftp://ftp.wu-wien.ac.at/pub/src/X11/wafe/)}.

	Mailing list: listserv@wu-wien.ac.at ("subscribe Wafe <Your
	Name>").

	(09 Jul 1996)

WAFL

	WArwick Functional Language.  Warwick U, England.  LISP-like.

WAIS

	{Wide Area Information Servers}

WAITS

	/wayts/ The mutant cousin of {TOPS-10} used on a handful of
	systems at {SAIL} up to 1990.  There was never an "official"
	expansion of WAITS (the name itself having been arrived at by
	a rather sideways process), but it was frequently glossed as
	"West-coast Alternative to ITS".  Though WAITS was less
	visible than ITS, there was frequent exchange of people and
	ideas between the two communities, and innovations pioneered
	at WAITS exerted enormous indirect influence.  The early
	screen modes of {EMACS}, for example, were directly inspired
	by WAITS's "E" editor - one of a family of editors that were
	the first to do "real-time editing", in which the editing
	commands were invisible and where one typed text at the point
	of insertion/overwriting.  The modern style of multi-region
	windowing is said to have originated there, and WAITS alumni
	at XEROX PARC and elsewhere played major roles in the
	developments that led to the XEROX Star, the Macintosh, and
	the Sun workstations.  {Bucky bits} were also invented there
	--- thus, the ALT key on every IBM PC is a WAITS legacy.  One
	notable WAITS feature seldom duplicated elsewhere was a
	news-wire interface that allowed WAITS hackers to read, store,
	and filter AP and UPI dispatches from their terminals; the
	system also featured a still-unusual level of support for what
	is now called "multimedia" computing, allowing analog audio
	and video signals to be switched to programming terminals.

wait state

	<architecture> A delay of one or more {clock} cycles added to
	a processor's instruction execution time to allow it to
	communicate with slow external devices.  The number and
	duration of wait states may be pre-configured or they may be
	controlled dynamically via certain control lines.

	(16 Oct 1996)

waldo

	/wol'doh/ [Robert A. Heinlein's story "Waldo"] 1. A mechanical
	agent, such as a gripper arm, controlled by a human limb.
	When these were developed for the nuclear industry in the
	mid-1940s they were named after the invention described by
	Heinlein in the story, which he wrote in 1942.  Now known by
	the more generic term "telefactoring", this technology is of
	intense interest to NASA for tasks like space station
	maintenance.

	2. At Harvard (particularly by Tom Cheatham and students),
	this is used instead of {foobar} as a metasyntactic variable
	and general nonsense word.  See {foo}, {bar}, {foobar},
	{quux}.

walk

	,Traversal of a data structure, especially an array or
	linked-list data structure in {core}.  See also {codewalker},
	{silly walk}, {clobber}.

walking drives

	An occasional failure mode of magnetic-disk drives back in the
	days when they were huge, clunky {washing machines}.  Those
	old {dinosaur} parts carried terrific angular momentum; the
	combination of a misaligned spindle or worn bearings and
	stick-slip interactions with the floor could cause them to
	"walk" across a room, lurching alternate corners forward a
	couple of millimeters at a time.  There is a legend about a
	drive that walked over to the only door to the computer room
	and jammed it shut; the staff had to cut a hole in the wall in
	order to get at it!  Walking could also be induced by certain
	patterns of drive access (a fast seek across the whole width
	of the disk, followed by a slow seek in the other direction).
	Some bands of old-time hackers figured out how to induce
	disk-accessing patterns that would do this to particular drive
	models and held disk-drive races.

walk off the end of

	To run past the end of an {array}, {list} or medium after
	stepping through it - a good way to land in trouble.  Often
	the result of an {off-by-one error}.  Compare {clobber},
	{roach}, {smash the stack}.

wall

	{Unix}'s "write all" command which sends a message to everyone
	currently logged in.

wall follower

	A person or algorithm that compensates for lack of
	sophistication or native stupidity by efficiently following
	some simple procedure shown to have been effective in the
	past.  Used of an algorithm, this is not necessarily
	pejorative; it recalls "Harvey Wallbanger", the winning robot
	in an early AI contest (named, of course, after the cocktail).
	Harvey successfully solved mazes by keeping a "finger" on one
	wall and running till it came out the other end.  This was
	inelegant, but it was mathematically guaranteed to work on
	simply-connected mazes - and, in fact, Harvey outperformed
	more sophisticated robots that tried to "learn" each maze by
	building an internal representation of it.  Used of humans,
	the term *is* pejorative and implies an uncreative,
	bureaucratic, by-the-book mentality.  See also {code grinder},
	{droid}.

wallpaper

	1. A file containing a listing (e.g. assembly listing) or a
	transcript, especially a file containing a transcript of all
	or part of a login session.  (The idea was that the paper for
	such listings was essentially good only for wallpaper, as
	evidenced at {Stanford}, where it was used to cover windows).

	The term is now rare, especially since other systems have
	developed other terms for it (e.g. PHOTO on {TWENEX}).
	However, the {Unix} world doesn't have an equivalent term, so
	perhaps wallpaper will take hold there.  The term probably
	originated on {ITS}, where the commands to begin and end
	transcript files were ":WALBEG" and ":WALEND", with default
	file "WALL PAPER" (the space was a path delimiter).

	2. The background pattern used on graphical workstations under
	the {Microsoft Windows} {graphical user interface} to
	{MS-DOS}.

	(22 Dec 1994)

wall time

	(Or "wall clock time") 1. "Real world" time (what the clock on
	the wall shows), as opposed to the {system clock}'s idea of
	time.

	2. The real running time of a program, as opposed to the
	number of {tick}s required to execute it (on a {time-sharing}
	system these always differ, as no one program gets all the
	ticks, and on multiprocessor systems with good thread support
	one may get more processor time than real time).

WAM

	Intermediate language for compiled Prolog, used by the Warren
	Abstract Machine.  "An Abstract Prolog Instruction Set",
	D.H.D. Warren, TR 309, SRI 1983.

WAN

	{Wide Area Network}

Wang Laboratories

	Computer manufacturer, known for their {office automation}
	products.

	Quarterly sales $208M, profits $3M (Aug 1994).

	(26 Sep 1994)

wango

	/wang'goh/ Random bit-level {grovel}ling going on in a system
	during some unspecified operation.  Often used in combination
	with {mumble}.  For example: "You start with the ".o" file,
	run it through this postprocessor that does mumble-wango - and
	it comes out a snazzy object-oriented executable."

wank

	/wangk/ [Columbia University: probably by mutation from
	Commonwealth slang "wank", to masturbate] Used much as {hack}
	is elsewhere, as a noun denoting a clever technique or person
	or the result of such cleverness.  May describe (negatively)
	the act of hacking for hacking's sake ("Quit wanking, let's go
	get supper!") or (more positively) a {wizard}.  "wanky"
	describes something particularly clever (a person, program, or
	algorithm).  Conversations can also get wanky when there are
	too many wanks involved.  This excess wankiness is signalled
	by an overload of the "wankometer" (compare {bogometer}).
	When the wankometer overloads, the conversation's subject must
	be changed, or all non-wanks will leave.  Compare
	"neep-neeping" (under {neep-neep}).  Usage: US only.  In
	Britain and the Commonwealth this word is *extremely* rude and
	is best avoided unless one intends to give offense.

wannabee

	/won'*-bee/ (Or, more plausibly, spelled "wannabe") [Madonna
	fans who dress, talk, and act like their idol; probably
	originally from biker slang] A would-be {hacker}.  The
	connotations of this term differ sharply depending on the age
	and exposure of the subject.  Used of a person who is in or
	might be entering {larval stage}, it is semi-approving; such
	wannabees can be annoying but most hackers remember that they,
	too, were once such creatures.  When used of any professional
	programmer, CS academic, writer, or {suit}, it is derogatory,
	implying that said person is trying to cuddle up to the hacker
	mystique but doesn't, fundamentally, have a prayer of
	understanding what it is all about.  Overuse of hacker terms
	is often an indication of the {wannabee} nature.  Compare
	{newbie}.

	Historical note: The wannabee phenomenon has a slightly
	different flavour now (1993) than it did ten or fifteen years
	ago.  When the people who are now hackerdom's tribal elders
	were in {larval stage}, the process of becoming a hacker was
	largely unconscious and unaffected by models known in popular
	culture - communities formed spontaneously around people who,
	*as individuals*, felt irresistibly drawn to do hackerly
	things, and what wannabees experienced was a fairly pure,
	skill-focussed desire to become similarly wizardly.  Those
	days of innocence are gone forever; society's adaptation to
	the advent of the microcomputer after 1980 included the
	elevation of the hacker as a new kind of folk hero, and the
	result is that some people semi-consciously set out to *be
	hackers* and borrow hackish prestige by fitting the popular
	image of hackers.  Fortunately, to do this really well, one
	has to actually become a wizard.  Nevertheless, old-time
	hackers tend to share a poorly articulated disquiet about the
	change; among other things, it gives them mixed feelings about
	the effects of public compendia of lore like this one.

wardialer

	<security> (Almost certainly a shortened version of "WarGames
	dialer", from {WarGames
	(http://us.imdb.com/M/title-exact/WarGames%20%281983%29)}, a
	1983 film featuring such a program)

	1. {carrier scanner}

	2. A program which attempts to break a {password} of known
	length by iterating thru all possible combinations of
	characters that could make up that password.

	This approach is not feasable for cracking most passwords
	these days.  However, as late as the mid-1980s, some
	long-distance companies required only very short numeric
	access codes (e.g. five digits) to verify the identity of
	their customers.  Wardialers were created which would, running
	unattended, call up long-distance providers' local connect
	numbers and iteratively try possible access codes.  Codes
	which worked were logged for later illicit use.

	These wardialers had a high success rate because of the small
	range of possibilities to iterate through, e.g. 10000 for a
	five digit access code, compared to hundreds of trillions of
	combinations for an eight-character alphanumeric code.

	Long-distance providers soon required longer passwords and
	took advantage of technology for rapidly tracing the phone
	numbers that wardialers were being run from, such that running
	wardialers became pointless and dangerous.

	(16 Mar 1997)

-ware

	["software"] Commonly used to form terms for classes of
	software.  For examples, see {careware}, {crippleware},
	{crudware}, {freeware}, {fritterware}, {guiltware},
	{liveware}, {meatware}, {payware}, {psychedelicware},
	{shareware}, {shelfware}, {vaporware}, {wetware}.

warez

	/weirz/ A term used by {software pirate}s use to describe a
	cracked game or application that is made available to the
	{Internet}, usually via {FTP} or {telnet}, often the pirate
	will make use of a site with lax security.

	Software piracy is illegal and should be reported to the
	{Federation Against Software Theft} (FAST).

	(29 Nov 1994)

warlording

	The act of excoriating a bloated, ugly or derivative {sig
	block}.  Common grounds for warlording include the presence of
	a signature rendered in a {BUAF}, over-used or cliched {sig
	quote}s, ugly {ASCII art}, or simply excessive size.  The
	original "Warlord" was a {BIFF}-like {newbie} c. 1991 who
	featured in his sig a particularly large and obnoxious ASCII
	graphic resembling the sword of Conan the Barbarian in the
	1981 John Milius movie; the group name alt.fan.warlord was
	sarcasm, and the characteristic mode of warlording is
	devastatingly sarcastic praise.

	{Usenet} newsgroup: {news:alt.fan.warlord}.

	(29 Nov 1994)

warm boot

	<operating system> A {boot} from {power on}, where the {CPU}
	and {peripheral}s are already powered up.

	A warm boot might be performed after a {software} {crash} or
	a {hardware} {reset}.

	Contrast {warm boot}.  See also {reboot}.

	(27 Nov 1995)

Warm Silence Software

	A small company run by(?) Robin Watts, producing {software}
	for the {Acorn} {Archimedes}.

	{(http://www.comlab.ox.ac.uk/oucl/users/robin.watts/)}

	(01 Nov 1994)

Warp

	{OS/2}

wart

	A small, {crock}y {feature} that sticks out of an otherwise
	{clean} design.  Something conspicuous for localised ugliness,
	especially a special-case exception to a general rule.  For
	example, in some versions of "csh(1)", single quotes
	literalise every character inside them except "!".  In ANSI C,
	the "?" syntax used for obtaining ASCII characters in a
	foreign environment is a wart.  See also {miswart}.

washing machine

	<storage> An old-style 14-inch {hard disk} in a floor-standing
	cabinet.  So called because of the size of the cabinet and the
	"top-loading" access to the media packs - and, of course, they
	were always set on "spin cycle".  The thick channel cables
	connecting these were called "{bit hoses}".  The
	washing-machine idiom transcends language barriers; it is even
	used in Russian hacker jargon.

	See also {walking drives}.

	(15 Feb 1995)

Wasserman

	A.I. Wasserman (Tony), president of {IDE}.

	(15 Feb 1995)

WATBOL

	WATerloo COBOL.

	A {COBOL} for {IBM} {MVS}.

	(15 Feb 1995)

Watcom C/C++

	<language, product> A compiler and development tools for
	multi-{platform}, 16 and 32-bit applications.  Watcom C/C++
	10.0 has an integrated development environment (IDE) and
	development tools.  It includes the {SOMobjects Toolkit} to
	enable access to {IBM}'s {System Object Model} (SOM) and
	{Distributed System Object Model} (DSOM).  It supports 16 bit
	{MS DOS}, {Microsoft Windows} 3.x, {OS/2} 1.x, and 32 bit
	platforms including extended DOS, OS/2 2.x, {Windows NT},
	{Win32s}, 32-bit Windows 3.x, {Novell NLM} and {AutoCAD}
	{ADS}/{ADI}.

	(18 Apr 1995)

Watcom International

	<company> A provider of application development tools and {IBM
	PC}-based {SQL} {database} {server}s.

	Founded in 1974, Watcom initially focused on scientific and
	engineering markets establishing itself as a supplier of
	programming and information tools worldwide, serving customers
	in 60 countries with highly regarded products such as
	{WATFOR}-77 for {mainframe}s, {minicomputer}s and {PC}s.

	Since the introduction of {Watcom C} in 1988, the company has
	emerged as an industry leader in optimising compilers for 16
	and 32-bit {Intel-based} {IBM PC}s.

	Moving into the {client/server} market in 1992, Watcom
	introduced {Watcom SQL}, including {SQL} {database} {servers}
	for multi-user networks and single-user {stand-alone}
	applications.  The product has since been incorporated into
	{Powersoft}'s {PowerBuilder} development environment and the
	{Powersoft Enterprise Series}.  In June, 1993, Watcom launched
	{VX*REXX}, an integrated visual development environment for
	{OS/2}.

	In February 1994, Watcom became a wholly-owned subsidiary of
	{Powersoft Corporation} which merged with {Sybase Corporation}
	on 13 February 1995.  Today the company addresses a broad
	range of application developers, including corporate {MIS}
	professionals, system integrators, {VAR}s and independent
	software vendors.

	Watcom has strategic relationships with {IBM}, {Lotus},
	{Microsoft}, {Intel} and {Novell}.  Based on its academic
	roots, Watcom maintains a research relationship with the
	nearby {University of Waterloo}.

	Watcom's products include the {Watcom SQL} {database}s,
	{Watcom C/C++}, and {Watcom VX*REXX} 2.1.

	Ian McPhee is President and Chief Executive Officer, David
	Boswell is Vice President of Sales and Marketing, Craig Dynes
	is Vice President of Finance and David Yach is Vice President
	of Development.

	Headquarters: Waterloo, Ontario, Canada.

	(18 Apr 1995)

Watcom SQL

	<database, product> A family of {database}s from {Watcom
	International}, based on scalable technology and a {SQL}
	{database engine}.  Version 4.0 adds {stored procedure}s and
	{trigger}s.  It is designed for environments ranging from
	large departmental networks with a diverse range of PC client
	systems, to peer-to-peer {workgroups}, to {stand-alone} PCs.
	It is available in stand-alone versions for {Microsoft
	Windows}, {Windows NT}, {OS/2} and {MS DOS}; and {multi-user}
	network server versions for {Microsoft Windows}, {Windows NT},
	{OS/2}, {NetWare NLM} and {MS DOS}.

	(18 Apr 1995)

Watcom VX*REXX

	<programming, tool> A visual development environment for
	creating {OS/2} applications with {graphical user interface}s.
	It includes a project management facility, visual designer and
	an interactive {source level debugger}.  Version 2.1
	introduced the VX*REXX Client/Server Edition for
	{client/server} {GUI} application development on {OS/2} by
	incorporating {database} {object}s.  Using {IBM}'s {DRDA}
	support on OS/2, users can access {DB2} for {MVS}, DB2/400 for
	{AS/400}, and DB2/VSE and VM (SQL/DS) for {VM} and {VSE}.
	Also supported are {Watcom SQL} and {ODBC}-enabled databases.
	Since the VX*REXX visual development environment is based on
	IBM's {object-oriented} {SOM} technology, VX*REXX applications
	are open and extensible through the addition of new SOM
	objects.

	(18 Apr 1995)

Waterfall Model

	<programming> A {software life-cycle} or {product life-cycle}
	model, described by W. W. Royce in 1970, in which development
	is supposed to proceed linearly through the phases of
	{requirements analysis}, design, implementation, testing
	(validation), integration and maintenance.  The Waterfall
	Model is considered old-fashioned or simplistic by proponents
	of {object-oriented design} which often uses the {spiral
	model} instead.

	Earlier phases are sometimes called "upstream" and later ones
	"downstream".

	Compare: {iterative model}.

	[W. W. Royce, "Managing the Development of Large Software
	Systems", Proceedings of IEEE WESCON, August 1970].

	(23 Nov 1997)

water MIPS

	<jargon> Large, water-cooled computers of either today's
	{ECL}-{supercomputer} flavour or yesterday's traditional
	{mainframe} type.

	See {MIPS}

	(25 Mar 1995)

WATFIV

	WATerloo Fortran IV.  U Waterloo, Canada.  Student-friendly
	variant of FORTRAN IV.

WATFOR

	WATerloo FORtran.  U Waterloo, Canada.  Student-friendly
	variant of {FORTRAN}.  "WATFOR - The University of Waterloo
	FORTRAN IV Compiler", P.W. Shantz et al, CACM 10(1):41-44 (Jan
	1967).

WAV

	<multimedia, file format, file name extension> A {sound}
	format developed by {Microsoft} and used extensively in
	{Microsoft Windows}.  Conversion tools are available to allow
	most other {operating systems} to play wav files.

	Wav files are also used as the sound source in {wavetable}
	synthesis, e.g. in E-mu's {SoundFont}.  In addition, wav files
	are also supported by some {MIDI} sequencers as add-on audio.
	That is, pre-recorded wav files are played back by control
	commands written in the sequence script.

	{Specification (http://www.qzx.com/pc-gpe/wav.txt)}.

	(11 Oct 1997)

WAVE

	<language> A {robotics} language.

	["WAVE: A Model-Based Language for Manipulator Control",
	R.P. Paul, Ind Robot 4(1):10-17, 1979].

	(08 Sep 1996)

wave a dead chicken

	<jargon> To perform a ritual in the direction of crashed
	software or hardware that one believes to be futile but is
	nevertheless necessary so that others are satisfied that an
	appropriate degree of effort has been expended.  "I'll wave a
	dead chicken over the source code, but I really think we've
	run into an OS bug".

	Compare {voodoo programming}, {rain dance}.

	(08 Sep 1996)

wavelet

	<mathematics> A waveform that is bounded in both frequency and
	duration.  Wavelet tranforms provide an alternative to more
	traditional {Fourier transform}s used for analysing waveforms,
	e.g. sound.

	The {Fourier transform} converts a signal into a continuous
	series of {sine wave}s, each of which is of constant frequency
	and amplitude and of infinite duration.  In contrast, most
	real-world signals (such as music or images) have a finite
	duration and abrupt changes in frequency.

	Wavelet transforms convert a signal into a series of wavelets.
	In theory, signals processed by the wavelet transform can be
	stored more efficiently than ones processed by Fourier
	transform.  Wavelets can also be constructed with rough edges,
	to better approximate real-world signals.

	For example, the United States Federal Bureau of Investigation
	found that Fourier transforms proved inefficient for
	approximating the whorls of fingerprints but a wavelet
	transform resulted in crisper reconstructed images.

	{SBG Austria (http://www.mat.sbg.ac.at/~uhl/wav.html)}

	["Ten Lectures on Wavelets", Ingrid Daubechies].

	(09 Nov 1994)

wavetable

	<hardware> A type of {sound generator} often built in a {sound
	card}.  A wavetable contains digitised samples of real
	instrument sounds or effect (FX) sounds.  A wavetable chip
	often also contains a drum kit sound to faciliate rhythm
	accompaniment.

	A recorded wavetable sound may be edited and enhanced by
	various effects (reverb, chorus) and layered with other
	waveforms before writing it to {ROM} or {RAM}.  The latter
	type serves as user sound memory.

	A wavetable generator is typically controlled by {MIDI} input.
	When a MIDI note-on signal is detected, the output part of a
	wavetable generator generates a sound with definitive pitch,
	typically a musical note.

	Wavetable sounds are used in games and music.  The more
	realistic wavetable sounds have all but replaced the earlier
	synthetic FM (frequency modulation) sound generation in sound
	cards but to ensure compatibility with older games etc., an FM
	part is usually included.

	The best known wavetable sound generators includes the {E-mu
	8000} chip, used in {Creative Labs}' {Sound Blaster} AWE-32
	card family and in E-mu keyboards.  Other wavetable cards are
	Gravis Ultra-Sound (GUS), ESS Cards, Opti, Zoltrix and many
	Roland cards.

	{E-Mu (http://www.emu.com /)}.
	{AWE-32(http://www.edu.isy.liu.se/~d93jesno/awe32.html)}.
	{Creative Labs (http://www.creaf.com/)}.

	(04 Nov 1997)

wavetable synthesis

	{wavetable}

WaZOO

	<protocol> Warp-zillion Opus-to-Opus.  {Fidonet}'s
	{session layer} {protocol}.  Although it mentions {Opus} (a
	specific {BBS} from the 1980s), WaZOO is the session protocol
	used for the Fidonet network.  Because WaZOO is much more
	efficient than other mechanisms (e.g., {FTP}), it is sometimes
	used for automated or batch communications in other parts of
	the {Internet}.

	{(ftp://ftp.psg.com/pub/fidonet/stds/fts-0006.txt)}

	(16 Nov 1995)

WCL

	A {Common Lisp} implementation in a shared library by Wade
	Hennessey <wade@leland.Stanford.edu>.  WCL is not a complete
	Common Lisp, but it does have the full development environment
	including {dynamic file loading} and debugging. A modified
	version of {GDB} provides mixed-language debugging.

	Version 2.14 includes a shared library, run-time support and
	source debugger.  It requires {GNU} {GCC} 2.1 (not 2.2.2) and
	runs on {SPARC} under {SunOS}.

	{(ftp://sunrise.stanford.edu/pub/wcl/)}.  Mailing list:
	<wcl-request@sunrise.stanford.edu>.  E-mail:
	<wcl@sunrise.stanford.edu>.

	[Proceedings of the 1992 Lisp and Functional Programming
	Conference].

	(28 Oct 1992)

WD

	{Western Digital}

WDASM

	<tool> An {interactive} {Intel 486} {disassembler} for
	{Windows 3.1} by Eric Grass <S876795@umslvma.umsl.edu>.  WDASM
	supports multiple disassembly formats.

	{(ftp://ftp.simtel.com/cica/win3/util/wdasm15.zip)}

	(01 Jun 1993)

WE

	A {hypertext} {authoring} system developed at the {University
	of North Carolina}.

	(07 Nov 1994)

Weak Head Normal Form

	(WHNF) A {lambda expression} is in weak head normal form
	(WHNF) if it is a {head normal form} (HNF) or any {lambda
	abstraction}.  I.e. the top level is not a {redex}.

	The term was coined by {Simon Peyton Jones} to make explicit
	the difference between {head normal form} (HNF) and what
	{graph reduction} systems produce in practice.  A lambda
	abstraction with a reducible body, e.g.

		\ x . ((\ y . y+x) 2)

	is in WHNF but not HNF.  To reduce this expression to HNF
	would require reduction of the lambda body:

		(\ y . y+x) 2  -->  2+x

	Reduction to WHNF avoids the {name capture} problem with its
	need for {alpha conversion} of an inner lambda abstraction and
	so is preferred in practical {graph reduction} systems.

	The same principle is often used in {strict} languages such as
	{Scheme} to provide {call-by-name} evaluation by wrapping an
	expression in a lambda abstraction with no arguments:

		D = delay E = \ () . E

	The value of the expression is obtained by applying it to the
	empty argument list:

		force D = apply D ()
			= apply (\ () . E) ()
			= E

	(31 Oct 1994)

weasel

	<jargon, abuse> (Cambridge) A naive user, one who deliberately
	or accidentally does things that are stupid or ill-advised.
	Roughly synonymous with {loser}.

	(21 Mar 1995)

WEB

	<language> {Donald Knuth}'s self-documenting {literate
	programming}, with {algorithm}s and {documentation} intermixed
	in one file.  They can be separated using {Weave} and
	{Tangle}.  Versions exist for {Pascal} and {C}.  {Spiderweb}
	can be used to create versions for other languages.
	{FunnelWeb} is a production-quality literate-programming tool.

	{(ftp://princeton.edu/)}, {(ftp://labrea.stanford.edu/)}.

	["Literate Programming", D.E. Knuth, Computer J 27(2):97-111,
	May 1984].

	(10 May 1996)

Web

	<World-Wide Web> "The Web" is the {World-Wide Web}.  "A web"
	is part of it on some specific {web site}.

	(10 May 1996)

web2c

	<tool> A utility by Karl Berry <karl@claude.cs.umb.edu> to
	translate {WEB} to {C}.  Current version: 5-851d.

	{FTP UCI (ftp://ics.uci.edu/TeX/web2c.tar.Z)}.  {FTP Gernamy
	(ftp://ftp.th-darmstadt.de/pub/tex/src/web2c/web2c.tar.Z)}.

	(10 May 1996)

web browser

	<World-Wide Web> A {browser} for the {World-Wide Web}.

	(23 Mar 1996)

webcasting

	<multimedia, World-Wide Web> (From "World-Wide Web" and
	"broadcast") {Multicasting} on the {Internet}.  Webcasting
	implies {real-time} transmission of encoded {video} under the
	control of the {server} to multiple recipients who all receive
	the same content at the same time.  This is in contrast to
	normal web browsing which is controlled from the {browser} by
	individual users and may take arbitrarily long to deliver a
	complete document.

	{Pointcast (http://www.pointcast.com)} is the most popular
	service to date which uses webcasting, however, {Microsoft}
	and {Netscape} have products planned.

	[Is this correct?  Better explanation?]

	(06 Sep 1997)

WebCrawler

	<World-Wide Web> A free {World-Wide Web} {search engine}
	developed by Brian Pinkerton at the {University of Washington}
	and now moved to {America Online, Inc}.  WebCrawler collects
	{URL}s by searching the {Internet} and allows users to perform
	keyword searches through a World-Wide Web {browser}.

	{Home (http://webcrawler.com/)}

	(28 Nov 1995)

webhead

	A compulsive or frequent user of, or contributor to, the
	{World-Wide Web}.

	(21 Jul 1994)

weblint

	<hypertext, tool> (After {lint}) A {syntax} checker and style
	checker for {HTML}.  Weblint is a {Perl} script which does for
	HTML pages what the traditional {lint} picks does for {C}
	programs.

	Version: 1.020 (07 Dec 1997).

	{Home (http://www.cre.canon.co.uk/~neilb/weblint/)}.

	(07 Dec 1997)

webmaster

	<World-Wide Web> (Or possibly "webmistress" if female) A
	person responsible for the development and maintenance of the
	{World-Wide Web} {server} and some or all of the {web pages}
	at a {web site}.

	The webmaster's {e-mail address} usually appears on the {home
	page} of the site he administrates.  Failing that, you could
	try sending e-mail to {postmaster} or {root} at that {host}.

	(09 Apr 1996)

webmistress

	{webmaster}

WebObjects

	<operating system> {NeXT}'s {framework} that provides an
	interface between a {web server} and an application server
	process.  It enables developers to easily create dynamic
	web-based applications.

	WebObjects acts as an adaptor between the web server and a
	process which needs to maintain state over multiple {HTTP}
	request-response transactions (which are intrinsically
	stateless).  It exists in two forms - as a {CGI} program and
	as an {Objective C} library.  It also includes a simple
	scripting language for developing web applications.  Special
	WebObjects tags can be included in {HTML} pages and these are
	processed at the server to produce dynamic but standard HTML
	to deliver to the client.

	[URL?]

	(15 Oct 1997)

web page

	<World-Wide Web> A block of data available on the {World-Wide
	Web}, identified by a {URL}.  Each web page is usually stored
	on the {server} as a file written in {HTML}, possibly
	referring to {images} which appear as part of the page when it
	is displayed by a {browser}.  It is also possible for the
	server to generate pages dynamically in response to a request,
	e.g. using a {CGI} script.

	A web page will typically refer to other web pages and
	{Internet} resources by including {hypertext} links.

	A {web site} often has a {home page} (usually just the
	hostname, e.g. http://wombat.doc.ic.ac.uk/).  It may also have
	individual home pages for each user with an account at the
	site.

	(05 Feb 1997)

Web Request Broker

	<World-Wide Web> (WRB) Part of {Oracle Corporation}'s
	{WebServer} suite of programs.  It is a high-performance,
	{multi-threaded} {HTTP} server which allows {clients}'
	requests to be directly translated into {Oracle 7} {database}
	scripts, and automatically translates the results of the query
	back into {HTML} for delivery to the client {browser}.

	{Oracle WebServer
	(http://www.oracle.com/products/websystem/webserver/html/ws2_info.html)}.

	(14 Mar 1997)

web server

	{HTTP server}

web site

	<World-Wide Web> (Less commonly "website") Any computer on the
	{Internet} running a {World-Wide Web} {server} process.  A
	particular web site is identified by the {hostname} part of a
	{URL}.  Multiple hostnames may actually map to the same
	computer in which case they are known as "{virtual servers}".

	(05 Feb 1997)

web smith

	<World-Wide Web> A person who creates {web pages}.  Not
	necessarily the same as a {webmaster}.

	(05 Feb 1997)

Webster

	1. {Webster's Dictionary}.

	2. A {World-Wide Web} {browser} for the {Acorn} {Archimedes}.
	The {HTML} files may reside locally or be retrieved using a
	"fetcher".  An {HTTP} fetcher for use with {KA9Q} is supplied.

	Version: 0.05.

	{HENSA Gopher
	(gopher://micros.hensa.ac.uk:70/11/micros/arch/riscos/c/c164)}.
	{Demon FTP
	(ftp://ftp.demon.co.uk/pub/archimedes/developers/)}.

	(21 Feb 1995)

Webster's Dictionary

	{Hypertext interface
	(http://c.gp.cs.cmu.edu:5103/prog/webster)}.

	(10 Apr 1996)

wedged

	1. To be stuck, incapable of proceeding without help.  This is
	different from having crashed.  If the system has crashed, it
	has become totally non-functioning.  If the system is wedged,
	it is trying to do something but cannot make progress; it may
	be capable of doing a few things, but not be fully
	operational.  For example, a process may become wedged if it
	{deadlock}s with another (but not all instances of wedging are
	deadlocks).  See also {gronk}, {locked up}, {hosed}.  2. Often
	refers to humans suffering misconceptions.  "He's totally
	wedged - he's convinced that he can levitate through
	meditation."  3. [Unix] Specifically used to describe the
	state of a TTY left in a losing state by abort of a
	screen-oriented program or one that has messed with the line
	discipline in some obscure way.

	There is some dispute over the origin of this term.  It is
	usually thought to derive from a common description of
	recto-cranial inversion; however, it may actually have
	originated with older "hot-press" printing technology in which
	physical type elements were locked into type frames with
	wedges driven in by mallets.  Once this had been done, no
	changes in the typesetting for that page could be made.

wedgie

	(Fairchild) A bug.  Probably related to {wedged}.

wedgitude

	/wedj'i-t[y]ood/ The quality or state of being {wedged}.

Weeble

	/wee'b*l/ An egg-shaped plastic toy person with a weight in
	the bottom so that, if tipped over, they would right
	themselves and stand up again.  They were popular in the UK
	during the 1970s and were famous for the slogan "Weebles
	wobble but they don't fall down", unlike some computers
	(pretty tenuous link with computing).

	(29 Nov 1994)

weeds

	1. Refers to development projects or {algorithm}s that have no
	possible relevance or practical application.  Comes from "off
	in the weeds".  Used in phrases like "lexical analysis for
	{microcode} is serious weeds."

	2. At {CDC}/{ETA} before its demise, the phrase "go off in the
	weeds" was equivalent to {IBM}'s {branch to Fishkill} and
	mainstream hackerdom's {jump off into never-never land}.

weenie

	1. [on BBSes] Any of a species of {luser} resembling a less
	amusing version of {BIFF} that infests many {BBS}es.  The
	typical weenie is a teenage boy with poor social skills
	travelling under a grandiose {handle} derived from fantasy or
	heavy-metal rock lyrics.  Among {sysop}s, "the weenie problem"
	refers to the marginally literate and profanity-laden
	{flamage} weenies tend to spew all over a newly-discovered
	BBS.

	Compare {spod}, {computer geek}, {terminal junkie}.

	2. Among hackers, when used with a qualifier (for example, as
	in {Unix weenie}, {VMS} weenie, {IBM} weenie) this can be
	either an insult or a term of praise, depending on context,
	tone of voice, and whether or not it is applied by a person
	who considers him or herself to be the same sort of weenie.
	It implies that the weenie has put a major investment of time,
	effort and concentration into the area indicated; whether this
	is good or bad depends on the hearer's judgment of how the
	speaker feels about that area.  See also {bigot}.

	3. The {semicolon} character, ";" ({ASCII} 59).

	(18 Jan 1995)

Weenix

	/wee'niks/ An {ITS} fan's derogatory term for {Unix}, derived
	from {Unix weenie}.  According to one noted ex-{ITS}er, it is
	"the operating system preferred by Unix Weenies: typified by
	poor modularity, poor reliability, hard file deletion, no file
	version numbers, case sensitivity everywhere, and users who
	believe that these are all advantages".  Some {ITS} fans
	behave as though they believe Unix stole a future that
	rightfully belonged to them.

	(18 Jan 1995)

well-behaved

	1. [primarily {MS-DOS}] Said of software conforming to system
	interface guidelines and standards.  Well-behaved software
	uses the {operating system} to do chores such as keyboard
	input, allocating memory and drawing graphics.  Oppose
	{ill-behaved}.

	2. Software that does its job quietly and without
	counterintuitive effects.  Especially said of software having
	an interface spec sufficiently simple and well-defined that it
	can be used as a {tool} by other software.  See {cat}.

well-connected

	Said of a computer installation, asserts that it has reliable
	{electronic mail} links with the network and/or that it relays
	a large fraction of available {Usenet} newsgroups.
	"Well-known" can be almost synonymous, but also implies that
	the site's name is familiar to many (due perhaps to an archive
	service or active {Usenet} users).

well-ordered set

	<mathematics> A set with a {total ordering} and no infinite
	descending {chain}s.  A total ordering "<=" satisfies x <= x;
	x <= y <= z => x <= z; x <= y <= x => x=y; and for all x, y, x
	<= y or y <= x.  In addition, if a set W is well-ordered then
	all non-empty subsets A of W have a least element, i.e. there
	exists x in A such that for all y in A, x <= y.

	{Ordinal}s are {isomorphism class}es of {well-ordered set}s,
	just as {integer}s are {isomorphism class}es of finite sets.

	(19 Apr 1995)

Western Digital Corporation

	<company> A company founded in 1970 as a specialized
	semiconductor manufacturer, which today manufactures and sells
	{microcomputer} products including small form factor {hard
	disk drive}s for {personal computer}s, {integrated circuit}s
	and circuit boards for graphics, storage, communications,
	{battery management}, and logic functions.

	{Home (http://www.wdc.com/)}

	(12 Apr 1995)

Westmount

	<company> A Netherlands software engineering vendor of {RTEE}
	and other products.

	(19 Aug 1996)

wetware

	<jargon> /wet'weir/ (Probably from the novels of Rudy Rucker,
	or maybe Stanislav Lem) The human nervous system, as opposed
	to electronic computer {hardware} or {software}.  "Wetware has
	7 plus or minus 2 temporary {register}s."  Also, human beings
	(programmers, operators, administrators) attached to a
	computer system, as opposed to the system's hardware or
	software.

	See {liveware}, {meatware}.

	[True origin?  Dates?]

	(19 Aug 1996)

WFL

	Work Flow Language.  Burroughs, ca 1973.  A job control
	language for the B6700/B7700 under MCP.  WFL was a compiled
	block-structured language similar to ALGOL 60, with
	subroutines and nested begin-end's.

	["Work Flow Management User's Guide", Burroughs Manual
	5000714, 1973].

	["Burroughs B6700/B7700 Work Flow Language", R.M. Cowan in
	"Command Languages", C. Unger ed, N-H 1975].

	(18 Jan 1996)

WG

	{Working Group}

whack

	According to arch-hacker James Gosling, to "...modify a
	program with no idea whatsoever how it works." (See
	{whacker}.)  It is actually possible to do this in nontrivial
	circumstances if the change is small and well-defined and you
	are very good at {glark}ing things from context.  As a trivial
	example, it is relatively easy to change all "stderr" writes
	to "stdout" writes in a piece of C filter code which remains
	otherwise mysterious.

whacker

	[University of Maryland: from {hacker}] 1. A person, similar
	to a {hacker}, who enjoys exploring the details of
	programmable systems and how to stretch their capabilities.
	Whereas a hacker tends to produce great hacks, a whacker only
	ends up whacking the system or program in question.  Whackers
	are often quite egotistical and eager to claim {wizard}
	status, regardless of the views of their peers.  2. A person
	who is good at programming quickly, though rather poorly and
	ineptly.

whales

	See {like kicking dead whales down the beach}.

whalesong

	The peculiar clicking and whooshing sounds made by a {PEP}
	{modem} such as the {Telebit} {Trailblazer} as it tries to
	synchronise with another PEP modem for their special
	high-speed mode.  This sound isn't anything like the normal
	two-tone handshake between conventional modems and is
	instantly recognizable to anyone who has heard it more than
	once.  It sounds, in fact, very much like whale songs.  This
	noise is also called "the moose call" or "moose tones".

whatis

	<tool> 1. A {Unix} command which searches for a given string
	in the headings of all {man} pages.

	2. A command which searches the {archie} {Software Description
	Database} for a given string, with case being ignored.

	(12 Nov 1995)

What's a spline?

	[XEROX PARC] This phrase expands to: "You have just used a
	term that I've heard for a year and a half, and I feel I
	should know, but don't.  My curiosity has finally overcome my
	guilt."  The PARC lexicon adds "Moral: don't hesitate to ask
	questions, even if they seem obvious."

wheel

	[slang "big wheel" for a powerful person] A person who has an
	active {wheel bit}.  "We need to find a wheel to unwedge the
	hung tape drives."  (See {wedged}).

wheel bit

	A privilege bit that allows the possessor to perform some
	restricted operation on a {time-sharing} system, such as read
	or write any file on the system regardless of protections,
	change or look at any address in the running monitor, crash or
	reload the system, and kill or create jobs and user accounts.
	The term was invented on the TENEX operating system, and
	carried over to TOPS-20, XEROX-IFS, and others.  The state of
	being in a privileged logon is sometimes called "wheel mode".
	This term entered the Unix culture from TWENEX in the
	mid-1980s and has been gaining popularity there (especially at
	university sites).  See also {root}.

wheel wars

	[Stanford University] A period in {larval stage} during which
	student hackers hassle each other by attempting to log each
	other out of the system, delete each other's files, and
	otherwise wreak havoc, usually at the expense of the lesser
	users.

Whetstone

	<benchmark> The first major {synthetic benchmark} program,
	intended to be representative for numerical ({floating-point}
	intensive) programming.  It is based on statistics gathered by
	Brian Wichmann at the {National Physical Laboratory} in
	England, using an {Algol 60} {compiler} which translated Algol
	into instructions for the imaginary Whetstone machine.  The
	compilation system was named after the small town of Whetstone
	outside the City of Leicester, England, where it was designed.

	The later {dhrystone} benchmark was a pun on Whetstone.

	Source code: {C
	(ftp://netlib.att.com/netlib/benchmark/whetstonec.Z)}, {single
	precision Fortran
	(ftp://netlib.att.com:/netlib/benchmark/whetstones.Z)},
	{double precision Fortran
	(ftp://netlib.att.com:/netlib/benchmark/whetstoned.Z)}.

	["A Synthetic Benchmark", H.J. Curnow and B.A. Wichmann, The
	Computer Journal, 19,1 (1976), pp. 43-49].

	(14 Nov 1994)

Which Stands For Nothing

	<language> (WSFN) A beginner's language with emphasis on
	graphics produced by {Atari} in 1983 for {Atari} home
	computers.  There is also {Advanced WSFN}.

	(12 Jun 1996)

while

	<programming> The {loop} construct found in nearly all
	{imperative} programming languages which executes one or more
	instructions (the "loop body") repeatedly so long as some
	condition evaluates to true.  In contrast to a {repeat} loop,
	the loop body will not be executed at all if the condition is
	false on entry to the while.

	For example, in {C}, a while loop is written

		while (<expr>) <statement>;

	where <expr> is any expression and <statement> is any
	statement, including a compound statement within braces
	 "{..}".

	(14 Mar 1995)

White Book

	1. <language, publication> {K&R}.

	2. <language, publication, file format> The fourth book in
	{Adobe}'s {PostScript} series, describing the
	previously-secret format of {Type 1} {fonts}.  The other three
	official guides are known as the {Blue Book}, the {Green
	Book}, and the {Red Book}.

	["Adobe Type 1 Font Format, version 1.1", Addison-Wesley, 1990
	(ISBN 0-201-57044-0)].

	3. <hardware, standard> {White book CD-ROM}.

	(03 Dec 1996)

White book CD-ROM

	<hardware, standard> A more open {CD-ROM} {standard} than
	{Green Book CD-ROM}.  All films mastered on CD-ROM after March
	1994 use White Book.  Like Green Book, it is {ISO 9660}
	compliant, uses mode 2 form 2 addressing and can only be
	played on a {CD-ROM} drive which is {XA} (Extended
	Architecture) compatible.  White book CDs are labelled "Video
	CD".

	(02 Nov 1994)

white box testing

	<programming> (Or "clear", "glass", "open") Software testing
	approaches that examine the program structure and derive test
	data from the program logic.

	Structural testing is sometimes referred to as clear-box
	testing since white boxes are considered opaque and do not
	really permit visibility into the code.

	(10 May 1996)

White pages

	A directory service for locating individuals by name (by
	analogy with the telephone directory).  The {Internet}
	supports several {database}s that contain basic information
	about users, such as {electronic mail} addresses, telephone
	numbers and postal addresses.  These databases can be searched
	to get information about particular individuals.  See
	{Knowbot}, {Netfind}, {whois}, {X.500}, {finger}.

white paper

	<publication> A short treatise whose purpose is to educate
	industry customers.  See, e.g., {Architecture Neutral
	Distribution Format}.

	(24 Oct 1997)

whitespace

	<character> (From the colour it produces on white paper) Any
	contiguous sequence of {spaces}, {tabs}, {carriage return}s,
	and/or {line feed}s.  Whitespace might also possibly include
	{form feed} characters.  The term is common on {Unix}.

	See also {non-printing character}.

	(04 Sep 1996)

white trash

	<abuse, hardware> A pejorative term for {Intel}-based
	{microcomputers}, used by {NeXT} users at UK law firm
	Linklaters & Paines to contrast these machines with their
	black NeXT boxes.

	(04 Sep 1996)

WHNF

	{weak head normal form}

whois

	An {Internet} directory service for looking up names of people
	on a remote server.  Many servers respond to {TCP} queries on
	{port} 43, in a manner roughly analogous to the {DDN} {NIC}
	whois service described in {RFC} 954.  Other sites provide
	this directory service via the {finger} {protocol} or accept
	queries by {electronic mail} for directory information.  On
	{Unix} the client command is

		whois -h server_name person_name

	You can also type "telnet server_name 43" and then type the
	person's name on a separate line.  For a list of whois
	servers, FTP/Gopher: sipb.mit.edu.  Or

		whois -h sipb.mit.edu whois-servers

	As the above command demonstrates, whois can find information
	about things other than users, e.g. domains, networks and
	hosts.

	See also {finger}, {X.500}, {white pages}.

WIBNI

	({Bell Labs}) Wouldn't It Be Nice If.

	What most requirements documents and specifications consist
	entirely of.

	Compare {IWBNI}.

	(24 Nov 1994)

Wide Area Information Servers

	<networking> (WAIS) A distributed information retrieval
	system.  WAIS is supported by {Apple Computer}, {Thinking
	Machines} and Dow Jones.  {Client}s are able to retrieve
	documents using keywords.  The search returns a list of
	documents, ranked according to the frequency of occurrence of
	the keyword(s) used in the search.  The client can retrieve
	text or {multimedia} documents stored on the {server}.  WAIS
	offers simple {natural language} input, indexed searching for
	fast retrieval, and a "relevance feedback" mechanism which
	allows the results of initial searches to influence future
	searches.  It uses the {ANSI Z39.50} service.  {Public domain}
	implementations are available.

	Other information retrieval systems include {archie},
	{Gopher}, {Prospero}, and {World-Wide Web}.

	{Usenet} newsgroup: {news:comp.infosystems.wais}.

	{Telnet (telnet://sunsite.unc.edu)}

	(13 Mar 1995)

Wide Area Network

	(WAN) A {network}, usually constructed with {serial line}s,
	extending over distances greater than one kilometre.

	Compare {local area network}, {metropolitan area network}.

	(24 Nov 1994)

Wideband ATM

	<networking> An enhanced form of {ATM} networking that
	transfers digital data over {local area networks}, orignally at 0.96
	{Gbps}, now (Aug 1996) at 1.0 Gbps.

	(23 Aug 1996)

Wide SCSI

	<hardware, standard> A variant on the {SCSI-2} interface.  It
	uses a 16-bit bus - double the width of the original {SCSI}-1
	- and therefore cannot be connected to a SCSI-1 bus.  It
	supports transfer rates up to 20 MB/s, like {Fast SCSI}.

	There is also a SCSI-2 definition of Wide-SCSI with a 32 bit
	data bus.  This allows up to 40 megabytes per second but is
	very rarely used because it requires a large number of wires
	(118 wires on two connectors).  Thus Wide SCSI usually means
	16 bit-wide SCSI.

	(21 Apr 1995)

widget

	1. A meta-thing.  Used to stand for a real object in didactic
	examples (especially database tutorials).  Legend has it that
	the original widgets were holders for buggy whips.  "But
	suppose the parts list for a widget has 52 entries..."

	2. [possibly evoking "window gadget"] In graphical user
	interfaces, a combination of a graphic symbol and some program
	code to perform a specific function.  E.g. a scroll-bar or
	button.  Windowing systems usually provide widget libraries
	containing commonly used widgets drawn in a certain style and
	with consistent behaviour.

wiggles

	[scientific computation] In solving partial differential
	equations by finite difference and similar methods, wiggles
	are sawtooth (up-down-up-down) oscillations at the shortest
	wavelength representable on the grid.  If an algorithm is
	unstable, this is often the most unstable waveform, so it
	grows to dominate the solution.  Alternatively, stable (though
	inaccurate) wiggles can be generated near a discontinuity by a
	Gibbs phenomenon.

Wild_LIFE

	Logic, Inheritance, Functions and Equations

	parts: interpreter, manual, tests, libraries, examples

	Paradise Project, DEC Paris Research Laboratory.

	{(ftp://gatekeeper.dec.com/pub/plan/Life.tar.Z)} - Wild_LIFE
	interpreter from Paradise project at DEC's Paris Research Lab

	LIFE is an experimental programming language with a powerful
	facility for structured type inheritance.  It reconciles
	styles from functional programming, logic programming, and
	object-oriented programming.  LIFE implements a constraint
	logic programming language with equality (unification) and
	entailment (matching) constraints over order-sorted feature
	terms.  The Wild_LIFE interpreter has a comfortable user
	interface with incremental query extension ability.  It
	contains an extensive set of built-in operations as well as an
	X Windows interface.

	A semantic superset of LOGIN and LeFun.  Syntax is similar to
	prolog.

	bugs:		<life-bugs@prl.dec.com>

	ports:		MIPS-Ultrix

	Mailing list:	life-request@prl.dec.com

	E-mail: Peter Van Roy <vanroy@prl.dec.com>

	(14 Dec 1992)

wild card

	<operating system, programming, text> (From card games in
	which certain cards, often the joker, can act as any other
	card) A special character or character sequence which matches
	any character in a string comparison, like ellipsis ("...") in
	ordinary written text.

	In {Unix} filenames '?' matches any single character and '*'
	matches any zero or more characters.  In {regular
	expressions}, '.' matches any one character and "[...]"
	matches any one of the enclosed characters.

	See also {Backus-Naur Form}.

	(16 Jul 1997)

William Gibson

	<person> Author of {cyberpunk} novels such as Neuromancer
	(1984), Count Zero (1986), Mona Lisa Overdrive, and Virtual
	Light (1993).

	Neuromancer, a novel about a computer {hacker}/criminal
	"cowboy" of the future helping to free an {artificial
	intelligence} from its programmed bounds, won the Hugo and
	Nebula science fiction awards and is credited as the seminal
	cyberpunk novel.  Gibson does not have a technical background
	and supposedly purchased his first computer in 1992.

	(11 Jun 1996)

William Hamilton

	<person> A mathematician who posed {Hamilton's problem}.

	{Biography
	(http://gregory.dcs.st-and.ac.uk/~history/ShortBiogs/H.html#Hamilton)}.

	[Summary?]

	(02 Nov 1995)

William Joy

	<person> (Bill Joy) Author of the {C shell} and {vi}, he was
	also one of the people at the {University of California at
	Berkeley} responsible for the {Berkeley System Distribution}
	of {Unix}.  He also wrote a book on {Unix}.

	He was a co-founder of {Sun Microsystems, Inc.}, where he is
	still (1997) Vice-President of Research.  Among his many
	projects for Sun have been helping to design the {Network File
	System} and the {SPARC} architechture.

	{Biography (http://www.sun.com/sunergy/Bios/joy_bio.html)}.

	{Bill's Ferrari one April Fool's Day
	(http://www.sun.com/events/april1/1987.html)}.

	See also {dinosaur}.

	[Book ref?  E-mail?]

	(12 Mar 1997)

WIMP

	<operating system> Windows, Icons, Menus and Pointers
	(or maybe Windows, Icons, Mouse, {Pull-down menu}s).

	The style of {graphical user interface} invented at {Xerox
	PARC}, popularised by the {Apple Macintosh} and now available
	in other varieties such as the {X Window System},
	{OSF}/{Motif}, {NeWS} and {RISC OS}.

	See {menuitis}, {user-obsequious}, {window system}.

	(02 May 1995)

WIMP environment

	{WIMP}

win

	<jargon> (Said of people, computers, {algorithms}, programs)
	(To be) a success at a given task.

	E.g. "{WYSIWYG} is a clear win for small documents".

	"winnitude" is the quality posessed by something which wins.
	"winning" is often (ab)used as an adjective.

	Synonyms: {cuspy}, {elegant}.  Antonym: {lose}.  Compare
	{lossy}, {lossless}.

	(08 Sep 1996)

Win32

	<programming> An {application programming interface} that is
	common to all {Microsoft}'s 32-bit Windows {operating
	systems}.  These currently include: {Windows 95}, {Windows
	98}, {Windows NT} and {Windows CE}.

	[Relationship with {Win32s}?]

	(20 Dec 1997)

Win32s

	<operating system> A free extension for {Microsoft Windows},
	released by {Microsoft}.  Win32s is a software layer on top of
	Windows which allows {32-bit applications} (e.g. {Mosaic}) to
	run on Windows.  Both stand-alone Windows and {Windows for
	Workgroups} run as 16 bit, and both can use Win32s to run
	32-bit applications.

	(08 Jul 1996)

Win 95

	{Windows 95}

winchester

	<hardware> An informal generic term for {floating-head}
	{magnetic disk} drives in which the read-write head planes
	over the disk surface on an air cushion.

	The name arose because the original 1973 engineering prototype
	for what later became the {IBM 3340} featured two 30-megabyte
	volumes; 30--30 became "Winchester" when somebody noticed the
	similarity to the common term for a famous Winchester rifle
	(in the latter, the first 30 referred to caliber and the
	second to the grain weight of the charge).

	(06 Dec 1994)

windowing system

	{window system}

window manager

	<operating system> A part of a {window system} which arranges
	windows on a screen.  It is responsible for moving and
	resizing windows, and other such functions common to all
	applications.

	Examples from the {X Window System} are {twm}, {gwm}, {olwm}.

	(06 Dec 1994)

Window RAM

	{Window Random Access Memory}

Window Random Access Memory

	<hardware, storage> (WRAM, Window RAM) A kind of {RAM} which
	is faster than {VRAM}.

	WRAM is used in the Matrox MGA Millennium {video display card}
	and almost certainly elsewhere.

	[More details?]

	(05 Jun 1996)

Windows

	<operating system> See {Microsoft Windows}, {Windows NT}.

	(23 Nov 1997)

Windows 1

	<operating system> The first incarnation of {Microsoft
	Windows}, released in 1985.  It took a total of 55
	programmer-years to develop, and only allowed tiled windows.

	(08 Jul 1996)

Windows 2

	<operating system> The second version of {Microsoft Windows},
	released in 1987.  Windows 2 had considerably more features
	than {Windows 1}, such as overlapping windows and {icons}.
	When {Windows/386} was released, Windows 2 was renamed
	Windows/286.

Windows/286

	{Windows 2}

Windows 3.0

	<operating system> A complete rework of {Microsoft Windows}
	with many new facilities such as the ability to address memory
	beyond 640k.  It was released in 1990, and vigorous
	development of applications by third parties helped Microsoft
	sell over 10 million copies.

	(08 Jul 1996)

Windows 3.1

	<operating system> A version of {Microsoft Windows} with many
	improvements over {Windows 3.0}, including {True Type Fonts},
	{Object Linking and Embedding} (OLE) and {Mouse Trails} for
	use with {LCD} Devices.  It also saw the loss of {Real Mode},
	which meant it would no longer run on {Intel 8086} processors
	(did anyone ever do this anyway?).

	Sometimes described as "stand-alone Windows", in contrast to
	{Windows for Workgroups 3.1}.  {Windows 3.11} is a free
	bug-fix update.  3.1's successors are {Windows 95} and
	{Windows NT}.

	(08 Jul 1996)

Windows 3.11

	<operating system> A free upgrade to {Windows 3.1}, which
	contained mainly minor bug fixes.

	(08 Jul 1996)

Windows/386

	<operating system> A version of {Microsoft Windows} released
	in late 1987.  Windows/386 was basically the same as its
	predecessor, Windows/286 (as {Windows 2} was renamed), but
	with the capability to run multiple {MS-DOS} applications
	simultaneously in {extended memory}.

	(08 Jul 1996)

Windows 4GL

	<tool, database> (INGRES/Windows 4GL) A graphical tool running
	on top of a {workstation}'s native {windowing system}, to help
	developers to build user interfaces to {INGRES} applications.

	(09 Jul 1996)

Windows 95

	<operating system> (Win95) {Microsoft}'s successor to their
	{Windows 3.11} {operating system} for {IBM PC}s.  It was known
	as "Chicago" during development.  Its release was originally
	scheduled for late 1994 but eventually happened on 24 Aug
	1995.

	In contrast to earlier versions, Windows 95 is a complete
	operating system rather than a {graphical user interface}
	running on top of {MS-DOS}.

	It provides {32-bit application} support, {pre-emptive
	multitasking}, threading and built-in networking ({TCP/IP},
	{IPX}, {SLIP}, {PPP}, and {Windows Sockets}).  It includes
	{MS-DOS} 7.0, but takes over completely after booting.  The
	{graphical user interface}, while similar to previous Windows
	versions, is significantly improved.

	Windows 95 has also been described as "32-bit extensions and a
	graphical shell for a 16-bit patch to an 8-bit operating
	system originally coded for a 4-bit microprocessor, written by
	a 2-bit company that can't stand 1-bit of competition".

	(06 Feb 1998)

Windows Application Binary Interface

	<operating system, tool> (WABI) A software package from {Sun
	Microsystems} to allow certain {Microsoft Windows}
	applications under the {X Window System}.  Wabi 2.2 runs under
	{Solaris} on {SPARC}, {Intel}, and {PowerPC}.  Wabi works by
	providing translated versions of the three core Windows
	libraries, {user.dll}, {kernel.dll}, and {gdi.dll} which
	redirect Windows calls to Solaris equivalents.  For code other
	than core library calls Wabi either executes the instructions
	directly on the hardware, if it is Intel, or emulates them,
	either one instruction at a time or by translating a block of
	instructions and caching the result (e.g. for a loop).

	{WabiServer} allows the Windows application and X display to
	be on different computers.

	{Overview (http://www.sun.com/solaris/products/wabi/)}.

	(08 Jan 1997)

Windows CE

	<operating system> /C E/ A version of the {Microsoft Windows}
	{operating system} that is being used in a variety of
	{embedded} products, from {handheld} PCs to specialised
	industrial {controllers} and consumer electronic devices.
	Programming for Windows CE is similar to programming for other
	{Win32} {platforms}.

	Windows CE was developed to be a customisable operating system
	for embedded {applications}.  Its {kernel} borrows much from
	other Microsoft {32-bit} operating systems, while eliminating
	(or replacing) those operating system features that are not
	needed for typical Windows CE-based applications.  For
	example, as on {Windows NT}, all applications running on
	Windows CE run in a fully {preemptive multitasking}
	environment, in fully {protected memory} spaces.

	The {Win32} (API) for Windows CE is smaller than the Win32 API
	for the other 32-bit Windows operating systems.  It includes
	approximately half the interface methods of the Windows NT
	version of the API.  But the Win32 API for Windows CE also
	includes features found in no other Microsoft operating
	system.  The notification API, for example, makes it possible
	to handle user or application notification events (such as
	timer events) at the operating-system level, rather than in a
	running application.  The {touch screen} API and the built-in
	support for the Windows CE {database} are not found in other
	Windows operating systems.  The touch screen API makes it easy
	to manage screen calibration and user interactions for
	{touch-sensitive displays}, while the database API provides
	access to a data storage facility.

	{(http://channels.microsoft.com/windowsce/developer/default.htm)}.

	{(http://channels.microsoft.com/windowsce/developer/technical/default.htm)}.

	(20 Dec 1997)

Windows for Workgroups 3.1

	<operating system> A version of {Windows 3.1} which works with
	a network.  Although stand-alone 3.1 can be networked, the
	installation and configuration is much improved with Windows
	for Workgroups 3.1.

	[Details?]

	(08 Jul 1996)

Windows for Workgroups 3.11

	<operating system> A significant upgrade to {Windows for
	Workgroups 3.1} adding 32-bit file access, fax capability and
	higher performance.

	(08 Jul 1996)

window shopping

	<jargon> A term used among users of {WIMP} environments like
	the {X Window System} or the {Macintosh} at the US Geological
	Survey for extended experimentation with new window colours,
	{fonts}, and {icon} shapes.  This activity can take up hours
	of what might otherwise have been productive working time.  "I
	spent the afternoon window shopping until I found the coolest
	shade of green for my active window borders --- now they
	perfectly match my medium slate blue background."  Serious
	window shoppers will spend their days with bitmap editors,
	creating new and different icons and background patterns for
	all to see.  Also: "window dressing", the act of applying new
	fonts, colours, etc.

	See {fritterware}, compare {macdink}.

	(08 Jul 1996)

Windows Internet Naming Service

	<networking> (WINS) Software which resolves {NetBIOS} names to
	{IP addresses}.

	[Details?]

	(14 Feb 1998)

Windows NT

	<operating system> (Windows New Technology, NT).
	{Microsoft}'s 32-bit {operating system} developed from what
	was originally intended to be {OS/2} 3.0 before {Microsoft}
	and {IBM} ceased joint development of OS/2.  NT was designed
	for high end {workstations} (Windows NT 3.1), servers (Windows
	NT 3.1 Advanced Server) and corporate networks.

	The first release, {Windows NT 3.1}, price UKP 395, was in
	September 1993, after having been in {beta-test} for as long
	as anyone could remember.

	Unlike {Windows 3.1}, which was a graphical environment that
	ran on top of {MS-DOS}, Windows NT is a complete operating
	system.  To the user it looks like Windows 3.1, but it has
	true {multi-threading}, built in networking, security, and
	{memory protection}.

	It is based on a {microkernel}, with 32-bit addressing for up
	to 4Gb of {RAM}, virtualised hardware access to fully protect
	applications, installable file systems, such as {FAT}, {HPFS}
	and {NTFS}, built-in networking, {multi-processor} support,
	and {C2 security}.

	NT is also designed to be hardware independent.  Once the
	machine specific part - the {Hardware Abstraction Layer} (HAL)
	- has been ported to a particular machine, the rest of the
	operating system should theorertically compile without
	alteration.  A version of NT for {DEC}'s {Alpha} machines was
	planned (September 1993).

	NT needs a fast {386} or equivalent, at least 12MB of {RAM}
	(preferably 16MB) and at least 75MB of free disk space.

	Version 4.0 was released around mid 1997.

	{Usenet} newsgroups: {news:comp.os.ms-windows.nt.setup},
	{news:comp.os.ms-windows.nt.misc}.

	(23 Nov 1997)

Windows NT 3.1

	<operating system> {Microsoft}'s first version of "Windows New
	Technology" (WNT), although there is an {urban legend} that
	says the person responsible for {VMS} on the {DEC VAX} was
	also responsible for Windows NT, and if you move one letter on
	alphabetically from VMS, you get WNT.

	(08 Jul 1996)

Windows NT 3.5

	<operating system> A much improved version of {Microsoft}'s
	{Windows NT 3.1}.  NT is now (July 1996) supplied as "Windows
	NT 3.5 Workstation" and "Windows NT 3.5 Server".  It has
	better {OLE} support, higher performance and requires less
	memory.

	(08 Jul 1996)

Windows NT 4

	<operating system> A version of {Microsoft}'s {Windows NT}
	{operating system}, originally code named "Cairo".  It was
	supposed to ship in the first half of 1995.  Details are
	scarce, but it is intended to provide an {object-oriented}
	version of Windows.

	(09 Jul 1996)

Windows NT Network Model

	<networking> The network model used by {Windows NT}.  The
	model has the following layers:

	 User Applications (e.g. Excel)
	 {API}s
	 File System Drivers
	 {TDI}
	 Protocols
	 {NDIS} v4
	 NDIS Wrapper
	 NDIS Card Driver
	 {Network Adapter Card}

	Compare {OSI} seven layer model.

	(05 Nov 1997)

Windows sockets

	<networking, standard> (Winsock) A specification for
	{Microsoft Windows} network software, describing how
	applications can access network services, especially {TCP/IP}.
	Winsock is intended to provide a single {API} to which
	application developers should program and to which multiple
	network software vendors should conform.  For any particular
	version of {Microsoft Windows}, it defines a binary interface
	({ABI}) such that an application written to the Windows
	Sockets API can work with a conformant {protocol}
	implementation from any network software vendor.

	Winsock was conceived at Fall Interop '91 during a {Birds of a
	Feather} session.

	Windows Sockets is supported by {Microsoft Windows}, {Windows
	for Workgroups}, {Win32s}, {Windows 95} and {Windows NT}.  It
	will support protocols other than {TCP/IP}.  Under {Windows
	NT}, {Microsoft} will provide Windows Sockets support over
	{TCP/IP} and {IPX}/{SPX}.  {DEC} will be implementing
	{DECNet}.  {Windows NT} will include mechanisms for multiple
	{protocol} support in Windows Sockets, both 32-bit and 16 bit.

	Mark Towfiq said, "The next rev. of Winsock will not be until
	towards the end of 1993.  We need 1.1 of the {API} to become
	firmly settled and implemented first."

	{Windows Sockets API
	(ftp://sunsite.unc.edu/pub/micro/pc-stuff/ms-windows/winsock)}
	or {(ftp://microdyne.com/pub/winsock)} or send a message
	"help" to either <ftpmail@SunSite.UNC.Edu> or
	<ftpmail@DECWRL.DEC.Com>.

	{Windows Sockets specification (ftp://rhino.microsoft.com)}

	Currently NetManage (NEWT), Distinct, FTP and Frontier are
	shipping Winsock {TCP/IP} stacks, as is {Microsoft} (Windows
	NT and {TCP/IP} for WFW), Beame & Whiteside Software (v1.1
	compliant), and Sun PC-NFS.  Windows 95 has "dial-up
	networking" which supports Winsock and TCP/IP.

	winsock.dll is available from some {TCP/IP} stack vendors.
	{Novell} has one in beta for their {Lan Workplace} for {DOS}.

	Peter Tattam <peter@psychnet.psychol.utas.edu.au> is
	alpha-testing a shareware Windows Sockets compliant {TCP/IP}
	stack {(ftp://ftp.utas.edu.au/pc/trumpet/winsock/winsock.zip)}
	and {(ftp://ftp.utas.edu.au/pc/trumpet/winsock/winpkt.com)}.

	{The Consummate Winsock App List
	(http://wwwvms.utexas.edu/~Neuroses/cwsapps.html)}.

	[Adapted from: Aboba, Bernard D., comp.protocols.tcp-ip.ibmpc
	Frequently Asked Questions, 1993 {Usenet}: {news:news.answers},
	{(ftp://netcom1.netcom.com/pub/mailcom/IBMTCP/)}].

	[Current status?]

	(20 Jun 1996)

window system

	Software which allows a {workstation}'s screen to be divided
	into rectangular areas which act like a separate input/output
	devices under the control of different {application} programs.
	This gives the user the ability to see the output of several
	processes at once and to choose which one will receive input
	by selecting its window, usually by pointing at it with a
	{mouse}.

	Examples are the {X Window System}, and proprietary systems on
	the {Macintosh} and {NeXT}, {NeWS} on {Suns} and {RISC OS} on
	the {Archimedes}.  See also {WIMP}.

Windoze

	{Microsloth Windows}

Wind River Systems

	<company> A company founded in 1981, now a world leader in
	{embedded systems}, providing {real-time operating systems}
	and development tools.  Wind River's development tools enable
	customers to standardise designs across projects and quickly
	develop feature-rich products.

	Wind River Systems employs over 180 people worldwide.  Service
	and support is provided through its U.S. headquarters and
	overseas operations in the U.K., France, Germany, Scandinavia
	and Japan.

	{Home (http://www.wrs.com/)}.

	Address: Alameda, California, USA.

	(12 Oct 1995)

winged comments

	<programming> {Comments} set on the same line as code, as
	opposed to {boxed comments}.

	In {C}, for example:

		d = sqrt(x*x + y*y);  /* distance from origin */

	Generally these refer only to the action(s) taken on that
	line.

	(21 Jul 1997)

winkey

	<chat> winkey face.

	See {emoticon}.

	(08 Sep 1996)

winning

	{win}

winnitude

	{win}

WINS

	{Windows Internet Naming Service}

Winsock

	{Windows sockets}

WinSoft Products Ltd

	<company> The company which produces {EMBLA Pro}.

	{Home (http://www.ftech.co.uk/~winsoft)}

	E-mail: WinSoft Products Ltd <info@winsoft.ftech.co.uk>

	(11 Mar 1996)

WINZIP

	<tool> A {Microsoft Windows} {graphical user interface} {front
	end} for the {PKZIP} {compression} utility.

	WINZIP can be obtained as {shareware}, on evaluation, or as a
	new licenced copy.  It is much easier to use then PKZIP for
	DOS, and includes a helpful, help file.

	[Where from?]

	(01 Dec 1995)

wired

	See {hardwired}.

wirehead

	<jargon> /wi:r'hed/ (Probably from SF slang for an electrical
	brain-stimulation addict) 1. A hardware hacker, especially one
	who concentrates on communications hardware.

	2. An expert in {local-area network}s.  A wirehead can be a
	network software wizard too, but will always have the ability
	to deal with network hardware, down to the smallest component.
	Wireheads are known for their ability to lash up an {Ethernet}
	{terminator} from spare resistors, for example.

	(28 Feb 1995)

wireless

	<networking> A term describing a computer {network} where
	there is no physical connection (either copper cable or {fibre
	optics}) between sender and receiver, but instead they are
	connected by radio.

	Applications for wireless networks include multi-party
	{teleconferencing}, distributed work sessions, {personal
	digital assistant}s, and electronic newspapers.  They include
	the transmission of voice, video, {image}s, and data, each
	traffic type with possibly differing {bandwidth} and
	quality-of-service requirements.  The wireless network
	components of a complete source-destination path requires
	consideration of mobility, {hand-off}, and varying
	transmission and {bandwidth} conditions.  The wired/wireless
	network combination provides a severe bandwidth mismatch, as
	well as vastly different error conditions.  The processing
	capability of fixed vs. mobile terminals may be expected to
	differ significantly.  This then leads to such issues to be
	addressed in this environment as {admission control},
	{capacity assignment} and {hand-off} control in the wireless
	domain, flow and error control over the complete end-to-end
	path, dynamic bandwidth control to accommodate bandwidth
	mismatch and/or varying processing capability.

	{Usenet} newsgroup {news:comp.std.wireless}.

	(27 Feb 1995)

wirewater

	<jargon> {programming fluid}.  This melds the mainstream slang
	adjective "wired" (stimulated, up, hyperactive) with
	"firewater"; however, it refers to caffeinacious rather than
	alcoholic beverages.

	(27 Feb 1995)

wish list

	A list of desired features or bug fixes that probably won't
	get done for a long time, usually because the person
	responsible for the code is too busy or can't think of a clean
	way to do it.  "OK, I'll add automatic filename completion to
	the wish list for the new interface."  Compare {tick-list
	features}.

Wisp

	["An Experiment with a Self-Compiling Compiler for a Simple
	List-Processing Language", M.V. Wilkes, Ann Rev Automatic
	Programming 4:1-48.  (1964)].

within delta of

	See {delta}.

within epsilon of

	See {epsilon}.

wizard

	1. A person who knows how a complex piece of software or
	hardware works (that is, who {grok}s it); especially someone
	who can find and fix bugs quickly in an emergency.  Someone is
	a {hacker} if he or she has general hacking ability, but is a
	wizard with respect to something only if he or she has
	specific detailed knowledge of that thing.  A good hacker
	could become a wizard for something given the time to study
	it.

	2. A person who is permitted to do things forbidden to
	ordinary people; one who has {wheel} privileges on a system.

	3. A Unix expert, especially a Unix systems programmer.  This
	usage is well enough established that "Unix Wizard" is a
	recognised job title at some corporations and to most
	headhunters.

	See {guru}, {lord high fixer}.  See also {deep magic}, {heavy
	wizardry}, {incantation}, {magic}, {mutter}, {rain dance},
	{voodoo programming}, {wave a dead chicken}.

Wizard Book

	<publication> {Hal Abelson}, {Gerald Sussman} and Julie
	Sussman's "Structure and Interpretation of Computer Programs"
	(MIT Press, 1984; ISBN 0-262-01077-1), an excellent computer
	science text used in introductory courses at MIT.  So called
	because of the wizard on the jacket.  One of the {bibles} of
	the LISP/Scheme world.  Also, less commonly, known as the
	{Purple Book}.

	(10 Jan 1995)

wizardly

	Pertaining to wizards.  A wizardly {feature} is one that only
	a wizard could understand or use properly.

wizard mode

	<games> [{rogue}] A special access mode of a program or
	system, usually password protected, that permits some users
	godlike privileges.  Generally not used for {operating
	system}s themselves ("root mode" or "wheel mode" would be used
	instead).  This term is often used with respect to games that
	have editable state.

WizDOM

	Software for distributed {Unix} {system management} from
	{TIVOLI Systems} of Austin, Texas, USA.

	(10 Feb 1995)

WK1

	<filename extension> The {filename extension} used by early
	versions of {Lotus 1-2-3} including release 2.01 (1987).  All
	files created by the user are given this extension.

	(28 Nov 1995)

WMF

	<filename extension> The {filename extension} for a {Windows
	Metafile}.

	({Microsoft}).

	(25 Apr 1995)

Wolfram Research, Inc.

	<company> The company founded by Stephen Wolfram in August
	1987 to develop {Mathematica} which was released in June 1988
	for the {Macintosh} and is now available on over 20
	{platform}s.  The company has offices in the United Kingdom
	and Tokyo, Japan.

	{Home (http://www.wri.com/)}

	E-mail: <info@wri.com>.

	(10 Feb 1995)

woman

	<tool> A replacement for the {Unix} {man} {documentation}
	browsing command.  Version 1.157 of woman runs under/on
	{386BSD}, {OSF}, {Apollo} {Domain/OS}, {BSD}, {HP-UX}, {IBM}
	{RS-6000}, {Irix}, {Linux}, {Solaris}, {Sony} {NEWS}, {SunOS},
	{Ultrix}, {Unicos}.

	Posted to comp.sources.reviewed Volume 3, Issue 50 on 05 Jul
	1993 by Arne Henrik Juul <arnej@pvv.unit.no>, archive-name
	woman-1.157.

	{FTP USC, USA
	(ftp://usc.edu/archive/usenet/sources/comp.sources.reviewed/volume3/woman-1.157/)}.
	{FTP Imperial, UK
	(ftp://src.doc.ic.ac.uk/usenet/comp.sources.reviewed/volume3/woman-1.157/)}.

	(21 Mar 1995)

WOMBAT

	1. Waste Of Money, Brains, And Time.

	Problems which are both profoundly {uninteresting} in
	themselves and unlikely to benefit anyone interesting even if
	solved.  Often used in fanciful constructions such as
	"wrestling with a wombat".

	See also {crawling horror}, {SMOP}.

	(10 Mar 1995)

wombat

	1. <programming> A {metasyntactic variable} in {Commonwealth
	Hackish}.

	2. <computer> {wombat.doc.ic.ac.uk}.

	(10 Mar 1995)

wombat.doc.ic.ac.uk

	<computer> (Named after the Australian marsupial, vombatus
	ursinus).  The Internet host from which {this dictionary} is
	available.  Internet address 146.169.22.42.  Currently a
	{SPARCstation} ELC in room 558A, Huxley, Computing Department,
	{Imperial College}, London.

	(07 May 1995)

womb box

	1. [TMRC] Storage space for equipment.

	2. [proposed] A variety of hard-shell equipment case with
	heavy interior padding and/or shaped carrier cutouts in a
	foam-rubber matrix; mundanely called a "flight case".  Used
	for delicate test equipment, electronics, and musical
	instruments.

Woodenman

	HOLWG, DoD, 1975.  Second of the series of DoD requirements
	that led to Ada.  "Woodenman Set of Criteria and Needed
	Characteristics for a Common DoD High Order Programming
	Language", David A. Fisher, Inst for Def Anal Working Paper,
	Aug 1975.  (See Strawman, Tinman, Ironman, Steelman).

woofer

	<jargon> (University of Waterloo) Some varieties of wide paper
	for printers have a perforation 8.5 inches from the left
	margin that allows the 3.5 inch excess on the right-hand side
	to be torn off when the print format is 80 columns or less
	wide.  If done with sufficient aplomb this makes a sound like
	the "woof" of a dog.  If the large part is the "woofer" then
	the small part must obviously be the "tweeter", following the
	names for the large and small cones in a hi-fi loudspeaker.

	These terms have been in use at Waterloo since 1972, but are
	unknown elsewhere.

	Compare {chad}.

	(21 Mar 1997)

WOOL

	Window Object Oriented Language.  A small {Common Lisp}-like
	extension language.  It claims to be the fastest interpreted
	language in {C} with {run-time type}s.  Colas Nahaboo
	<colas@sophia.inria.fr>.  Version 1 is used as the kernel
	language of the {GWM} window manager.  Version 2 has an object
	system.

	{(ftp://export.lcs.mit.edu/contrib/gwm)}

Worcester Polytechnic Institute

	(WPI) A well-regarded, small engineering college.

	Address: Worcester, MA, USA.

	(01 Mar 1995)

Word

	{Microsoft Word}

word

	<storage> A fundamental unit of storage in a computer.  The
	size of a word in a particular computer architecture is one of
	its chief distinguishing characteristics.

	The size of a word is usually the same as the width of the
	computer's {data bus} so it is possible to read or write a
	word in a single operation.  An instruction is usually one or
	more words long and a word can be used to hold a whole number
	of characters.  These days, this nearly always means a whole
	number of {bytes} (eight bits), most often 32 or 64 bits.  In
	the past when six bit {character sets} were used, a word might
	be a multiple of six bits, e.g. 24 bits (four characters) in
	the {ICL 1900} series.

	(11 Nov 1994)

Word for Windows

	<text, tool, product> The version of {Microsoft Word} which
	runs under {Microsoft Windows}.

	Version 6.0.

	(14 Apr 1995)

WordPerfect

	1. <text, tool, product> A {word processor} for a wide range
	of computers.  The first version was sold in 1980 for {Data
	General} machines, and by the end of 1993 versions were on
	sale for {MS-DOS}, {Microsoft Windows} and {Macintosh}
	computers.  WordPerfect 6.0 for {Unix} was scheduled for
	introduction in May 1994.

	Versions: WordPerfect 6.1 for Windows, WordPerfect 3.1 for
	Macintosh/Power Macintosh, WordPerfect 6.0 for UNIX,
	WordPerfect 6.0 for DOS, WordPerfect 7.0 for {Windows 95}.

	[Distinguishing features?]

	{Home (http://www.corel.com/products/wordperfect/)}.

	2. {WordPerfect Corporation}.

	(05 Jul 1995)

WordPerfect Corporation

	<company> The original developers of the {WordPerfect} {word
	processor} and a variety of other {applications} for {personal
	computers}.  WordPerfect was founded in Provo, Utah, USA in
	1979 by Alan Ashton and Bruce Bastion as "Satellite Software
	International".  The company name was changed to Wordperfect
	Corporation in 1986.  The company was bought by {Novell, Inc.}
	in 1994, who then sold it to {Corel Corporation} in 1996.

	(12 Mar 1997)

word processing

	{word processor}

word processor

	<text, tool> A program used to create and print (chiefly
	textual) documents that might otherwise be prepared on a
	typewriter.  The key advantage of word processor is its
	ability to make changes easily, such as correcting spelling,
	changing margins, or adding, deleting, and relocating entire
	blocks of text.  Once created, the document can be printed
	quickly and accurately and saved for later modifications.

	Today most popular word processors, such as {Microsoft Word},
	offer a much greater range of facilities than the first such
	programs.

	Compare {text editor}.

	(14 Apr 1995)

word size

	<processor> The number of bits that a {CPU} can process at one
	time.  Processors with many different word sizes have existed
	though powers of two (8, 16, 32, 64) have predominated for
	many years.  A processor's word size is often equal to the
	width of its external data bus though sometimes the bus is
	made narrower than the CPU (often half as many bits) to
	economise on packaging and circuit board costs.

	(23 Apr 1995)

word spamming

	<World-Wide Web> Repeating a word many times in a {web page},
	in a (usually futile) attempt to increase its {relevance}
	ranking in a {search engine}'s index (to "{spam}" the index).

	"Repeating a word over and over in a Web page (known as word
	spamming) has no effect on the [page's] ranking [in the
	index]."  -- {Altavista FAQ
	(http://www.altavista.digital.com/cgi-bin/query?pg=tmpl&v=faq.html)}.

	(09 Apr 1997)

WordTech

	<company> Manufacturers of {Quicksilver}.

	Address: Orinda, CA, USA.

	(11 May 1995)

word wrap

	<text> A feature of {word processors} and most {text editors}
	where a word which would extend past the right hand margin is
	moved to the following line.  This is more sophisticated than
	character wrap which only moves to the next line for the first
	character past the right margin and thus will break some words
	in the middle.  The program may actually insert a new line in
	the text at the point where it is wrapped or it may only
	display it as though it contained a new line at that point.

	(24 Jul 1996)

workaround

	<jargon> A temporary {kluge} used to bypass, mask or otherwise
	avoid a {bug} or {misfeature} in some system.  Theoretically,
	workarounds are always replaced by {fix}es; in practice,
	customers often find themselves living with workarounds for
	long periods of time.

Work Breakdown Structure

	<project> A way of grouping a project's tasks and subtasks.
	The tasks are numbered to indicate their relationship to each
	other.  Some industries use established work breakdown
	structure systems for billing and reporting purposes.

	(29 May 1996)

workflow

	1. <operating system> The {scheduling} of independent jobs on
	a computer.

	See also {time-sharing}, {WFL}.

	2. <job> The set of relationships between all the activities
	in a project, from start to finish.  Activities are related by
	different types of trigger relation.  Activities may be
	triggered by external events or by other activities.

	3. The movement of documents around an organisation for
	purposes including sign-off, evaluation, performing activities
	in a process and co-writing.

	[Stef Joosten et.al. "An empirical study about the practice of
	workflow management", {WA-12} report, 1994].

	(27 Mar 1995)

workgroup

	See {CSCW}.

working as designed

	<jargon> (IBM) Conforming to a wrong or inappropriate
	specification; useful, but misdesigned.  Frequently used as a
	sardonic comment on a program's utility or as a bogus reason
	for not accepting a criticism or suggestion.  At {IBM}, this
	sense is used in official documents!

	See {BAD}.

	(04 Apr 1995)

worksheet

	{spreadsheet}

workstation

	<computer> A general-purpose computer designed to be used by
	one person at a time and which offers higher performance than
	normally found in a {personal computer}, especially with
	respect to graphics, processing power and the ability to carry
	out several tasks at the same time.

	(04 May 1995)

World-Wide Wait

	<humour> A pejorative expansion of {WWW} reflecting on the
	slowness of some network connections and sites.

	(30 Mar 1997)

World-Wide Web

	<World-Wide Web, networking, hypertext> (WWW, W3, The Web) An
	{Internet} {client-server} {hypertext} distributed information
	retrieval system which originated from the {CERN} High-Energy
	Physics laboratories in Geneva, Switzerland.

	An extensive user community has developed on the Web since its
	public introduction in 1991.  In the early 1990s, the
	developers at CERN spread word of the Web's capabilities to
	scientific audiences worldwide.  By September 1993, the share
	of Web traffic traversing the {NSFNET} {Internet} {backbone}
	reached 75 {gigabytes} per month or one percent.  By July 1994
	it was one {terabyte} per month.

	On the WWW everything (documents, menus, indices) is
	represented to the user as a {hypertext} object in {HTML}
	format.  {Hypertext} {links} refer to other documents by their
	{URL}s.  These can refer to local or remote resources
	accessible via {FTP}, {Gopher}, {Telnet} or {news}, as well as
	those available via the {http} protocol used to transfer
	{hypertext} documents.

	The client program (known as a {browser}), e.g. {NCSA}
	{Mosaic}, {Netscape} {Navigator}, runs on the user's computer
	and provides two basic navigation operations: to follow a
	{link} or to send a query to a server.  A variety of client
	and server software is freely available.

	Most clients and servers also support "forms" which allow the
	user to enter arbitrary text as well as selecting options from
	customisable menus and on/off switches.

	Following the widespread availability of web browsers and
	servers, many companies from about 1995 realised they could
	use the same software and protocols on their own private
	internal {TCP/IP} networks giving rise to the term
	"{intranet}".

	If you don't have a WWW {browser}, but you are on the
	{Internet}, you can access the Web using the command:

		telnet www.w3.org

	(Internet address 128.141.201.74) but it's much better if you
	install a browser on your own computer.

	The {World Wide Web Consortium} is the main standards body for
	the web.

	{An article by John December
	(http://sunsite.unc.edu/cmc/mag/1994/oct/webip.html)}.

	{A good place to start exploring
	(http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/StartingPoints/NetworkStartingPoints.html)}.

	{WWW servers, clients and tools
	(http://www.w3.org/hypertext/WWW/Status.html)}.

	Mailing list: <www-talk@www.w3.org>.

	{Usenet} newsgroups: {news:comp.infosystems.www.misc},
	{news:comp.infosystems.www.providers},
	{news:comp.infosystems.www.users},
	{news:comp.infosystems.announce}.

	The best way to access {this dictionary} is via the Web since
	you will get the latest version and be able to follow
	cross-references easily.  If you are reading a plain text
	version of this dictionary then you will see lots of curly
	brackets and strings like

		{(http://hostname/here/there/page.html)}

	These are transformed into hypertext links when you access it
	via the Web.

	See also {Java}, {webhead}.

	(28 Oct 1996)

World-Wide Web browser

	<World-Wide Web> A {browser} for the {World-Wide Web}.

	(22 Nov 1996)

World Wide Web Consortium

	<World-Wide Web, body> (W3C) The main standards body for the
	{World-Wide Web}.  W3C works with the global community to
	establish international {standards} for {client} and {server}
	{protocols} that enable on-line commerce and communications on
	the {Internet}.  It also produces reference software.

	W3C was created by the {Massachusetts Institute of Technology}
	(MIT) on 25 October 1994.  {Netscape Communications
	Corporation} was a founding member.  The Consortium is run by
	{MIT LCS} and {INRIA}, in collaboration with {CERN} where the
	web originated.  W3C is funded by industrial members but its
	products are freely available to all.  The director is Tim
	Berners-Lee who invented the {World-Wide Web} at the Center
	for European Particle Research (CERN).

	{Home (http://www.w3.org/)}.

	(03 Nov 1996)

World-Wide Web Worm

	<World-Wide Web> (WWWW) One of the first automatic indexing
	tools for the {World-Wide Web}, being developed in September
	1994 by Oliver McBryan <mcbryan@cs.colorado.edu> at the
	{University of Colorado}.  The worm created a database of
	300000 {multimedia} objects which can be obtained or searched
	for keywords via the WWW.

	{Home (http://www.cs.colorado.edu/home/mcbryan/WWWW.html)}

	(19 May 1996)

WORM

	{Write-Once Read-Many}

worm

	<networking, security> (From "Tapeworm" in John Brunner's
	novel "The Shockwave Rider", via {XEROX PARC}) A program that
	propagates itself over a network, reproducing itself as it
	goes.  Compare {virus}.  Nowadays the term has negative
	connotations, as it is assumed that only {crackers} write
	worms.

	Perhaps the best-known example was the {Great Worm}.

	Compare {Trojan horse}.

	(17 Sep 1996)

wormhole

	{back door}

wormhole routing

	A property of a {message passing} system in which each part of
	a message is transmitted independently along the same route
	and one part can be forwarded to the next node before the
	following part has been received.  The independent parts are
	normally small, e.g. one 32-bit word.  This reduces the
	{latency} and the storage requirements on each node when
	compared with {store and forward} routing where a node must
	receive the whole message before it can start to forward it to
	the next node.  It is slightly more complex than store and
	forward because each node must keep track of the messages
	which are currently flowing through it.

wound around the axle

	In an {infinite loop}.  Often used by older computer types.

	(06 Dec 1994)

WPI

	{Worcester Polytechnic Institute}

WPL+

	Word-oriented language internal to PRODOS Applewriter 2.1.
	Available on GEnie.

WPOP

	WonderPop.  Robert Rae <rhr@aiai.ed.ac.uk>, Edinburgh 1976.
	An implementation of POP for the PDP-10 that used cages for
	different data types.  Introduced processes, properties, and
	some typed identifiers.

wps

	<unit> (Obsolete) Words per second (mostly used for {Telex}
	and {TWX} transmission).

	(07 Jan 1997)

WRAM

	{Window Random Access Memory}

wrap around

	(Or "wraparound", "wrap") The action of a counter that starts
	again at zero or at "minus infinity" (see {infinity}) after
	its maximum value has been reached, and continues
	incrementing, either because it is programmed to do so or
	because of an overflow (as when a car's odometer starts again
	at 0).

wrats nest

	<hardware, jargon> (From "wrap" and "rats nest") A
	{wire-wrapping} defect where all of the wire piles up around
	the bottom of the post instead of wrapping smoothly around it.
	It looks like a little bird nest.

	(18 Mar 1997)

wrb

	{Web Request Broker}

write

	<chat> {Unix}'s simple {talk} command and {protocol}.  write
	has been largely superceded by {talk} and then {irc}.

	An enhancement, {RWP}, has been proposed.

	(08 Sep 1996)

WRITEACOURSE

	CAI language, for IBM 360.  "WRITEACOURSE: An Educational
	Programming Language", E. Hunt et al, Proc FJCC 33(2) (1968).

write-back

	<architecture> A {cache} architecture in which data is only
	written to main memory when it is forced out of the cache.

	Opposite of {write-through}.  See also {no-write allocation}.

	(12 Jun 1996)

write buffer

	{buffered write-through}

Write-Once Read-Many

	<storage> (WORM) Any type of storage medium to which data can
	be written to only a single time, but can be read from any
	number of times.  Typically this is an {optical disk} whose
	surface is permanently etched using a laser in order to record
	information.  WORM media have a significantly longer shelf
	life than magnetic media and thus are used when data must be
	preserved for a long time.

	(01 Apr 1996)

write-only code

	[a play on "read-only memory"] Code so arcane, complex, or
	ill-structured that it cannot be modified or even comprehended
	by anyone but its author, and possibly not even by him/her.  A
	{Bad Thing}.

write-only language

	A language with syntax (or semantics) sufficiently dense and
	bizarre that any routine of significant size is automatically
	{write-only code}.  A sobriquet applied occasionally to C and
	often to APL, though {INTERCAL} and {TECO} certainly deserve
	it more.

write-only memory

	The obvious antonym to "read-only memory".

	Out of frustration with the long and seemingly useless chain
	of approvals required of component specifications, during
	which no actual checking seemed to occur, an engineer at
	Signetics once created a specification for a write-only memory
	and included it with a bunch of other specifications to be
	approved.  This inclusion came to the attention of Signetics
	{management} only when regular customers started calling and
	asking for pricing information.  Signetics published a
	corrected edition of the data book and requested the return of
	the "erroneous" ones.  Later, around 1974, Signetics bought a
	double-page spread in "Electronics" magazine's April issue and
	used the spec as an April Fools' Day joke.  Instead of the
	more conventional characteristic curves, the 25120 "fully
	encoded, 9046 x N, Random Access, write-only-memory" data
	sheet included diagrams of "bit capacity vs. Temp.", "Iff
	vs. Vff", "Number of pins remaining vs. number of socket
	insertions", and "AQL vs. selling price".  The 25120 required
	a 6.3 VAC VFF supply, a +10V VCC, and VDD of 0V, +/- 2%.

write-through

	<architecture> (Or "write-thru") A {cache} architecture in
	which data is written to main memory at the same time as it is
	cached.

	Opposite of {write-back}.  See also {buffered write-through},
	{posted write-through}, {no-write allocation}.

	(12 Jun 1996)

write-thru

	{write-through}

Wrong Thing

	<jargon> A design, action, or decision that is clearly
	incorrect or inappropriate.  Often capitalised; always
	emphasised in speech as if capitalised.  The opposite of the
	{Right Thing}; more generally, anything that is not the Right
	Thing.  In cases where "the good is the enemy of the best",
	the merely good - although good - is nevertheless the Wrong
	Thing. "In C, the default is for module-level declarations to
	be visible everywhere, rather than just within the module.
	This is clearly the Wrong Thing."

WRT

	with regard to, with respect to.

WSFN

	{Which Stands For Nothing}

WSL

	Waterloo Systems Language.  A {C}-like systems programming
	language.

	["Waterloo Systems Language: Tutorial and Language Reference",
	F.D.  Boswell, WATFAC Publications Ltd., Waterloo, Canada.
	ISBN 0-919884-00-8].

WTF

	who/what/why the fuck?  The universal interrogative particle.
	Also {WTH}.

WTH

	who/what/why the hell?  Also {WTF}.

wugga wugga

	/wuh'g* wuh'g*/ Imaginary sound that a computer program makes
	as it labours with a tedious or difficult task.  Compare
	{cruncha cruncha cruncha}, {grind}.

wumpus

	<games> /wuhm'p*s/ The central monster (and, in many versions,
	the name) of a famous family of very early computer games
	called "Hunt The Wumpus", dating back at least to 1972
	(several years before {ADVENT}) on the {Dartmouth Time-Sharing
	System}.  The wumpus lived somewhere in a cave with the
	topology of an dodecahedron's edge/vertex graph (later
	versions supported other topologies, including an icosahedron
	and M"obius strip). The player started somewhere at random in
	the cave with five "crooked arrows"; these could be shot
	through up to three connected rooms, and would kill the wumpus
	on a hit (later versions introduced the wounded wumpus, which
	got very angry).  Unfortunately for players, the movement
	necessary to map the maze was made hazardous not merely by the
	wumpus (which would eat you if you stepped on him) but also by
	bottomless pits and colonies of super bats that would pick you
	up and drop you at a random location (later versions added
	"anaerobic termites" that ate arrows, bat migrations, and
	earthquakes that randomly changed pit locations).

	This game appears to have been the first to use a non-random
	graph-structured map (as opposed to a rectangular grid like
	the even older Star Trek games).  In this respect, as in the
	dungeon-like setting and its terse, amusing messages, it
	prefigured {ADVENT} and {Zork} and was directly ancestral to
	both (Zork acknowledged this heritage by including a super-bat
	colony).  Today, a port is distributed with SunOS and as
	{freeware} for the {Macintosh}.  A {C} emulation of the
	original {Basic} game is in circulation as freeware on the
	net.

WWW

	{World-Wide Web}

WWW browser

	<hypertext, World-Wide Web> A {browser} for use on the
	{World-Wide Web}.

	(28 Oct 1996)

WWWW

	{World-Wide Web Worm}

WYSIAYG

	/wiz'ee-ayg/ Describes a user interface under which "What
	You See Is *All* You Get"; an unhappy variant of {WYSIWYG}.
	Visual, "point-and-shoot"-style interfaces tend to have easy
	initial learning curves, but also to lack depth; they often
	frustrate advanced users who would be better served by a
	command-style interface.  When this happens, the frustrated
	user has a WYSIAYG problem.  This term is most often used of
	editors, {word processor}s, and document formatting programs.
	WYSIWYG "desktop publishing" programs, for example, are a
	clear win for creating small documents with lots of fonts and
	graphics in them, especially things like newsletters and
	presentation slides.  When typesetting book-length
	manuscripts, on the other hand, scale changes the nature of
	the task; one quickly runs into WYSIAYG limitations, and the
	increased power and flexibility of a command-driven formatter
	like {TeX} or Unix's {troff} becomes not just desirable but a
	necessity.  Compare {YAFIYGI}.

WYSIWYG

	/wiz'ee-wig/ Describes a user interface under which "What You
	See Is What You Get", as opposed to one that uses more-or-less
	obscure commands that do not result in immediate visual
	feedback.  True WYSIWYG in environments supporting multiple
	fonts or graphics is a a rarely-attained ideal; there are
	variants of this term to express real-world manifestations
	including WYSIAWYG (What You See Is *Almost* What You Get) and
	WYSIMOLWYG (What You See Is More or Less What You Get).  All
	these can be mildly derogatory, as they are often used to
	refer to dumbed-down {user-friendly} interfaces targeted at
	non-programmers; a hacker has no fear of obscure commands
	(compare {WYSIAYG}).  On the other hand, {EMACS} was one of
	the very first WYSIWYG editors, replacing (actually, at first
	overlaying) the extremely obscure, command-based {TECO}.  See
	also {WIMP}.  [Oddly enough, WYSIWYG has already made it into
	the OED, in lower case yet. - ESR]

X

	1. <convention> Used in various speech and writing contexts
	(also in lowercase) in roughly its algebraic sense of "unknown
	within a set defined by context" (compare {N}).  Thus, the
	abbreviation {680x0} stands for 68000, 68010, 68020, 68030 or
	68040, and {80x86} stands for {Intel 80186}, {Intel 80286},
	{Intel 80386} or {Intel 80486}.  A {Unix} hacker might write
	these as 680[0-4]0 and 80[1-4]86 or 680?0 and 80?86
	respectively; see {glob}.

	2. <graphics> An alternative name for the {X Window System}.

	(10 May 1995)

X-1

	<language> An early system on the {UNIVAC I} or II.

	[Listed in CACM 2(5):16 (May 1959)].

	(10 May 1995)

X11R4

	Version 11 release 4 of the X protocol.  See {X Window
	System}.

X11R5

	Version 11 release 5 of the X protocol.  Released in June
	1994.  See {X Window System}.

X11R6

	<operating system> Version 11 release 6 of the {X Window
	System}.

	[Release date?]

	(20 Jan 1995)

X.21

	<communications, standard> A digital signaling interface
	recommended by {ITU-T} which includes specifications for
	{DTE}/{DCE} physical interface elements, alignment of {call
	control} characters and error checking, elements of the call
	control phase for {circuit switched} services, data transfer
	up to 64 {kbps}, and {test loops}.

	(04 Jan 1996)

X.214

	{transport layer}

X.215

	{session layer}

X.216

	{presentation layer}

X.217

	{Association Control Service Element}

X.219

	{Remote Operations Service Element}

X.224

	{transport layer}

X.225

	{session layer}

X.226

	{presentation layer}

X.227

	{Association Control Service Element}

X.229

	{Remote Operations Service Element}

X.25

	<protocol, standard> An {ITU-T} {standard} {protocol} suite
	for the {DTE}-{DCE} interface in a {packet-switched} network,
	approved by {ISO}.  X.25 defines standard {physical layer},
	{data link layer} and {network layers} (layers 1 through 3).
	It was developed to describe how data passes into and out of
	public data communications networks.  X.25 networks are in use
	throughout the world.

	Document: {ISO} 8208.

	Several other {ITU-T} recommendations are relevant to {packet
	switching}: {X.3}, {X.28}, {X.29}, {X.75}.

	(10 Aug 1996)

X.28

	The {ITU-T} standard specifying how to control a {PAD} from
	{character-mode} {DTE}, approved by {ISO}.

	(31 Jan 1995)

X.29

	The {ITU-T} {standard}, approved by {ISO}, specifying
	procedures for the exchange of control information and user
	data between a {PAD} and a remote {packet-mode} {DTE}.
	{Character-mode} {DTE}s are often referred to as X.29
	terminals.

	(31 Jan 1995)

X.3

	The {ITU-T} {standard}, approved by {ISO}, which specifies the
	basic functions and user-selectable capabilities of a {PAD}.

	(31 Jan 1995)

X3J16

	The {C++} {standard} technical committee.

X3T10

	<body> The {ATA} standards body.

	(16 Oct 1996)

X.400

	The set of {ITU-T} communications standards covering
	{electronic mail} services provided by data networks.  It is
	widely used in Europe and Canada.  X.400 addresses tend to be
	very long compared to {RFC 822} ones.

X.500

	The set of {ITU-T} {standard}s covering electronic directory
	services such as {white pages}, {Knowbot}, {whois}.

	(06 Dec 1994)

X.75

	The {ITU-T} {standard} specifying the {protocol}s for
	communication between two {PSDN}s.

	(31 Jan 1995)

XA

	{Extended Architecture}

	A specification for drives which can play {CD-ROM}s in {Green
	book CD-ROM} format.

	(06 Dec 1994)

Xaw

	The {Athena} {Widget} Set.  A set of widgets distributed with
	the {X Window System}.

	(02 Nov 1994)

Xbase

	Generic term for the {dBASE} family of {database} languages.
	Coined in response to threatened litigation over use of the
	copyrighted trademark "dBASE."

xbeeb

	A {BBC Microcomputer} {emulator} for {Unix} and {X11} by James
	Fidell <jfid@mfltd.co.uk>.  Posted to {alt.sources}.

	{(ftp://ftp.pipex.net/incoming/xbeeb)}

	(18 Aug 1994)

xbm

	<filename extension> X bit map.  The {filename extension} for
	files containing {bitmap}s for use in the {X Window System}.

	These are actually {include file}s which can be #include'd
	into {C} program source to define images as initialised data.

	(14 Mar 1995)

XC

	A {declarative} extension of {C++}.

	["XC - A Language for Embedded Rule Based Systems", E. Nuutila
	et al, SIGPLAN Notices 22(9):23-32 (Sep 1987)].

X client

	An application process in the {X Window System}.  It gains
	access to windowing services via the Xlib library.  These are
	translated by the system into {X protocol} messages to an {X
	server}.

X Consortium

	A vendor consortium supporting development, evolution and
	maintenance of the {X Window System}.  The X Consortium is an
	independent, not-for-profit company.  It was formed in 1993 as
	the successor to the {MIT} X Consortium, a research group of
	the MIT {Laboratory for Computer Science}.

	{(ftp://ftp.x.org)}.  {(http://www.x.org/)}.

	[Members?]

Xcoral

	A multiwindow mouse-based text editor, for the {X Window
	System} with a built-in browser to navigate through {C}
	functions and {C++} {class}es hierarchies.  Xcoral provides
	variables width {font}s, menus, {scrollbar}s, {button}s,
	search, regions, kill-buffers and 3D look.  Commands are
	accessible from menus or standard key bindings.  Xcoral is a
	direct {Xlib} {client} and runs on colour or monochrome X
	displays.

	{Version 1.72 (ftp://ftp.inria.fr/X/contrib/clients/xcoral*)}

	(14 Mar 1993)

xdbx

	An {X Window System} front end for {dbx} by Po Cheung
	<cheung@sw.mcc.com>.  Version 2.1.

	Posted to comp.sources.x volumes 11, 12, 13, 14, 16.

	(22 Feb 1992)

X-Designer

	<programming, tool> A {user interface builder} for {Motif}
	from {Imperial Software Technology}.

	{Home (http://www.ist.co.uk/xd/)}

	(26 Oct 1995)

X.desktop

	A desktop manager for {Unix} from {IXI}.

XDL

	<language> An {object-oriented} extension to {ITU-T}'s {SDL}.

	["XDL: An Object-Oriented Extension to SDL", S.J. Ochuodho et
	al].

	(12 Oct 1995)

XDR

	{eXternal Data Representation}

XENIX

	{Unix} implementations from {SCO}.

XEROX Corporation

	xerox.com.  See also {XEROX PARC}, {XEROX Network Services}.

XEROX Network Services

	(XNS) A proprietary network architecture developed by {Xerox
	corporation}.  Implementations exist for both {4.3BSD} derived
	systems, as well as the {Xerox Star} computers.

	[Or is it "Service" (singular) or "Xerox Network System"?]

XEROX PARC

	/zee'roks park'/ {Xerox Corporation}'s Palo Alto Research
	Center.

	For more than a decade, from the early 1970s into the
	mid-1980s, PARC yielded an astonishing volume of
	ground-breaking hardware and software innovations.  The modern
	mice, windows, and icons ({WIMP}) style of software interface
	was invented there.  So was the {laser printer} and the
	{local-area network}; {Smalltalk}; and PARC's series of D
	machines anticipated the powerful {personal computer}s of the
	1980s by a decade.  Sadly, the prophets at PARC were without
	honour in their own company, so much so that it became a
	standard joke to describe PARC as a place that specialised in
	developing brilliant ideas for everyone else.

	The stunning shortsightedness and obtusity of XEROX's
	top-level {suit}s has been well described in the reference
	below.

	["Fumbling The Future: How XEROX Invented, Then Ignored, the
	First Personal Computer" by Douglas K. Smith and Robert
	C. Alexander (William Morrow & Co., 1988, ISBN
	0-688-09511-9)].

	(26 Jan 1995)

XFree86

	{Home (www.xfree86.org)}.

	[Summary?]

	(12 Jun 1997)

Xfun

	A {polymorphic} {functional language} which is a cross between
	{SML} and {Russell}, developed by S. Dalmas
	<dalmas@sophia.inria.fr> of {INRIA} in 1991, and intended for
	{computer algebra}.

	["A Polymorphic Functional language Applied to Symbolic
	Computation", S. Dalmas, Proc Intl Symp Symb Alg Comp,
	Berkeley 1992].

	(03 Feb 1995)

XGA

	{Extended Graphics Arrary}

Xi

	A {VLSI} design language.

	["The Circuit Design Language Xi", S.I. Feldman, unpublished
	memo, Bell Labs, 1982].

	[Mentioned in Computational Aspects of VLSI, J.D. Ullman, CS
	Press 1984].

	(03 Feb 1995)

XIE

	{X Image Extension}

X Image Extension

	(XIE) Extensions to the {X protocol} to handle {image}s.

	(03 Feb 1995)

Xlib

	X library: program interface to the {X Window System}.

xlisp

	<language> eXperimental LISP.  An experimental programming
	language combining a subset of {Common Lisp} with an
	{object-oriented} extension capability (Class and Object
	types).  It was implemented by David Micheal Betz
	<dbetz@apple.com> to allow experimentation with
	object-oriented programming on small computers.  Portable
	source in {C}.

	Version 2.1 of the interpreter, by Tom Almy
	<toma@sail.labs.tek.com> is closer to Common Lisp.

	{(ftp://wasp.eng.ufl.edu/)}, {(ftp://cs.orst.edu/)},
	{(ftp://glia.biostr.washington.edu)}.

	E-mail: Tom Almy <toma@sail.labs.tek.com>.

	{Microsoft Windows} version,
	{(ftp://ftp.cica.indiana.edu/util/wxlslib.zip)}.

	{Macintosh} {(ftp://netcom.com/pub/bskendig/)}.

	Also ported to {Unix}, {Amiga}, {Atari}, {MS-DOS}.

	{Usenet} newsgroup: {news:comp.lang.lisp.x}.

	(26 May 1992)

xls

	<filename extension> {Excel} {spreadsheet}.

	(17 Oct 1995)

XML

	{Extensible Markup Language}

XMM

	<storage> {Extended Memory Manager}.

	(10 Jan 1996)

XMODEM

	The "Christensen" file transfer {protocol}, probably the most
	widely available protocol used for file transfer over {serial
	line}s (e.g. between {modem}s).  XMODEM uses 128-byte {packet}s
	with error detection, allowing the receiver to request
	retransmission of a corrupted packet.  XModem is fairly slow
	but reliable.

	Several variations have been proposed with increasing packet
	sizes (e.g. {XMODEM-1K}) and different error detection ({CRC}
	instead of {checksum}) to take advantage of faster {modem}s.
	Sending and receiving programs can negotiate to establish the
	best protocol they both support.

	Standard XMODEM specifies a one-second timeout during the
	reception of characters in the data block portion of a packet.

	Chuck Forsberg improved upon XMODEM by developing {YMODEM} and
	{ZMODEM}.

	[Chuck Forsberg, "XMODEM/YMODEM Protocol Reference"].

	(02 Feb 1995)

XMODEM-1K

	A version of {XMODEM} using 1 kilobyte {packet}s.

xmosaic

	{Mosaic} for the {X Window System}.

XMS

	<storage> {Extended Memory Specification}.

	(10 Jan 1996)

XNF

	A {Hardware description language}?

	[More details?]

xnf2ver

	An {XNF} to {Verilog} translator by Martin J. Colley
	<martin@essex.ac.uk>.

	This program was written by a postgraduate student as part of
	his M.Sc course.  It was designed to form part a larger system
	operating with the Cadence Edge 2.1 framework.  This should be
	born in mind when considering the construction and/or
	operation of the program.

	{(ftp://punisher.caltech.edu/pub/dank/xnf2ver.tar.Z)}

XNS

	{Xerox Network Services} or Xerox Network System.

	[Which?]

XOFF

	{control-S}

XON

	{control-Q}

Xopen

	{X/Open}

X/Open

	An international consortium of vendors whose purpose is to
	define the X/Open {Common Applications Environment} to provide
	applications portability.  They also procuced the {X/open
	Portability Guide} (XPG).

	(01 Dec 1994)

X/open Portability Guide

	(XPG) A document which defines the interfaces of the {X/Open}
	{Common Applications Environment}.

	Version: XPG3.

	(01 Dec 1994)

X/Open System Interface

	<standard> (XSI) Part of the {X/Open} {Common Applications
	Environment}.

	(03 Nov 1994)

xor

	/X'or/, /kzor/ Exclusive or.  "A xor B" means "A or B, but not
	both".  The {truth table} is

		A | B | A xor B
		--+---+--------
		F | F |    F
		F | T |    T
		T | F |    T
		T | T |    F

	(01 Dec 1994)

XPC

	eXplicitly Parallel C.

	A dialect of {Parallel C} which is efficiently compilable to
	both {SIMD} and {MIMD} architectures.  Only research
	implementations exist.

	["Toward Semantic Self-Consistency in Explicitly Parallel
	Languages," M.J. Phillip & H.G. Dietz, Proc 4th Intl Conf on
	Supercomputing, Santa Clara, CA, May 1989, v.1, pp.398-407].

	(01 Dec 1994)

XperCASE

	A structure diagram editor for developing, re-engineering,
	maintaining and documenting programs, developed by {Siemens}
	AG, Austria.  It runs under {Microsoft Windows}.

	{(ftp://src.doc.ic.ac.uk/computing/systems/ibmpc/simtel/windows3/xperspx1.zip)}

	E-Mail: <100141.2120@compuserve.com>.

	(01 Dec 1994)

XPG

	{X/open Portability Guide}

XPG3

	Version 3 of the {X/open Portability Guide}.

XPL

	A small dialect of {PL/I} used for compiler writing from
	Stanford, 1967-69.  XPL has
	one-dimensional {array}s.  I/O is achieved with character
	pseudo-variable INPUT and OUTPUT, e.g.

		OUTPUT = 'This is a line';

	It has inline {machine code}.  "Programmers are given all the
	rope they ask for.  Novices tend to hang themselves fairly
	frequently."  XPL has been implemented on {IBM 360}, {Univac
	1100}, {ICL System 4}, {CDC6000} and {Cyber} series, {XDS
	Sigma-5} and {Sigma-7} and {DEC} {PDP-10}.

	An optimising XPL compiler (version 1) by Robin Vowels
	<robin_vowels@rmit.edu.au> is a standard implementation of XPL
	and is based on McKeeman, Horning, and Wortman's improved
	{XCOM} (which employs hashed symbol table generation).  It
	includes the extra built-in function COREHALFWORD.

	The following areas have been optimised: procedures calls when
	the argument and corresponding parameter are of the same type,
	and when the argument is a constant; constant subscripts; use
	of CORELHALFWORD and COREWORD; string constants of length one;
	iterative DO statements by transferring code to the end of the
	loop.

	String constants of length one do not require a descriptor,
	hence more descriptors are available for string variables.
	Comparison operations are treated as commutative, and an
	improved Commute algorithm is used.  Halfword instructions are
	generated for BIT(16) variables.

	These areas have been improved or re-written: calls on OUTPUT,
	catenation, integer-to-string conversion, multiply, divide,
	and MOD.  An emitter for SS-type instructions has been added.
	The compiler achieves an 11% reduction in object code
	compiling itself, an 11% increase in compilation rate, a 55%
	increase in compilation speed when the $E toggle is set.
	Special treatment for catenating a string to an integer
	substantially decreases consumption of the free string area,
	and decreases string moves.  The latter improvement is most
	noticeable on small core machines.

	Core requirements: less than the improved XCOM on which it is
	based (approx. 98000 bytes).  Symbol table size is 468.
	Ported to {IBM} {System 370}.  The compiler is written in XPL.
	The code generators are machine-specific.

	["A Compiler Generator," W.M. McKeeman et al, P-H 1970].

	[JCC, AFIPS 1968].

	(07 Aug 1993)

xpm

	<file format> X11 Pixmap.

	A {pixmap} image {file format} for the {X Window System}.

	(28 Apr 1995)

XPOP

	<language> An extensible {macro assembly} language with
	user-redefinable {grammar}, for use with {FAP}.

	["XPOP: A Meta-language Without Metaphysics", M.I. Halpern,
	Proc FJCC 25:57-68, AFIPS (Fall 1964)].

	(28 Apr 1995)

X protocol

	<networking, protocol> A {standard} {protocol} used by
	{client}s (applications) and {server}s in the {X Window
	System} for exchanging requests for window operations.

	(28 Apr 1995)

xref

	/X'ref/ 1. cross-reference.

	2. A cross-reference generator tool by Jim Leinweber.

	(1985?)

XRemote

	A {serial line} protocol for the {X Window System}.

XRN

	A newsreader program for {Usenet} news running under the {X
	Window System}.

XSB

	XSB extends the standard functionality of Prolog (being a
	descendant of PSB- and SB-Prolog) to include implementations
	of OLDT (tabling) and HiLog terms.  OLDT resolution is
	extremely useful for recursive query computation, allowing
	programs to terminate correctly in many cases where Prolog
	does not.  HiLog supports a type of higher-order programming
	in which predicate symbols can be variable or structured. This
	allows unification to be performed on the predicate symbols
	themselves in addition to the arguments of the predicates.  Of
	course, Tabling and HiLog can be used together.

	Version 1.2

	ports: Sun, Solaris, NeXT, Linux, 386 BSD, IRIX, HP-UX

	portability:	Generally to 32-bit machines.

	interpreter, preprocessor(HiLog), documentation

	XSB research group / SUNY at Stony Brook

	{(ftp://sbcs.sunysb.edu/pub/XSB/XSB.tar.Z)}

	(130.245.1.15) E-mail: <xsb-contact@cs.sunysb.edu>.

	(1993/07/28)

XScheme

	<language> {Scheme} in {C} with {object-oriented} extensions
	by David Betz.

	Version 0.28 runs on {IBM PC}, {Macintosh}, {Atari} and
	{Amiga}.

	{(ftp://labrea.stanford.edu/comp.sources.amiga/volume90)}.
	{(ftp://nexus.yorku.ca/pub/scheme/)}.

	{Usenet} newsgroup: {news:comp.lang.lisp.x}.

	(02 Feb 1992)

x-scm

	An accessory for the {scm} {Scheme} {interpreter}, by Larry
	Campbell <campbell@redsox.bsw.com> that provides an
	environment for building {Motif} and {OpenLook} {application
	program}s.  There is some support as well for raw {Xlib}
	applications, but not enough yet to be useful.

	Posted to {alt.sources}.

	(10 Aug 1992)

X server

	A process which controls a {bitmap display} device in an {X
	Window System}.  It performs operations on request from
	{client} applications.

	(03 Nov 1994)

XSI

	{X/Open System Interface}

XT

	{IBM PC XT}

Xt

	The {intrinsics} of the {X Window System} Toolkit.

	[What does that mean?]

XT bus architecture

	<hardware, architecture> (After the {IBM PC XT}) An eight-bit
	{ISA} bus architecture used by {Intel 8086} and {Intel 8088}
	systems in the {IBM PC} and {IBM PC XT} in the 1980s.  It
	predates the 16-bit ISA architecture used on the {Intel 80286}
	based machines.

	The XT bus has four {DMA} channels, of which three are brought
	out to the {expansion slots}.  Of these three, two are
	normally allocated to machine functions:

	 DMA channel  Expansion	 Standard function
	 0	      No	 {dynamic RAM} refresh
	 1	      Yes	 add-on cards
	 2	      Yes	 {floppy disk} controller
	 3	      Yes	 {hard disc} controller

	(15 Sep 1997)

xterm

	<operating system> A {terminal emulator} program for the {X
	Window System}.  A user can have many different invocations of
	xterm running at once on the same display, each of which
	provides independent input and output for the process running
	in it (normally a {shell}).

	(23 Aug 1996)

X terminal

	<hardware> An {intelligent terminal} which operates as an {X
	server} directly connected to {Ethernet}.

	Not to be confused with the program {xterm} which is an {X
	client}.

	(23 Aug 1996)

XTI

	{X/open Transport Interface}

XTP

	{Home (http://www.ca.sandia.gov/xtp/)}

	[What is it?]

XTRAN

	{FORTRAN}-like, interactive language.

XUI

	X User Interface: program interface to the {X Window System}
	supported by {DEC}.

Xv++

	A library of classes from Interface Engineering, Stevenage,
	providing a C++ Application Programmer's Interface to the
	XView toolkit.

XVGA

	{eXtended Video Graphics Array}

XView

	A toolkit from Sun, derived from SunView, providing an Open
	Look user interface for X applications.

XVT

	eXtensible Virtual Toolkit: a product allowing applications to
	be developed independent of GUI.

X-Windows

	<spelling> A common misnomer for the {X Window System}.

	(10 Jun 1997)

X Window System

	<operating system, graphics> A specification for
	device-independent windowing operations on {bitmap display}
	devices, developed initially by {MIT}'s Project {Athena} and
	now a {de facto standard} supported by the {X Consortium}.  X
	was named after an earlier window system called "W".  It is a
	window system called "X", not a system called "X Windows".

	X uses a {client-server} protocol, the {X protocol}.  The
	server is the computer or {X terminal} with the screen,
	keyboard, mouse and server program and the clients are
	{application programs}.  Clients may run on the same computer
	as the server or on a different computer, communicating over
	{Ethernet} via {TCP/IP} protocols.  This is confusing because
	{X clients} often run on what people usually think of as their
	server (e.g. a file server) but in X, it is the screen and
	keyboard etc. which is being "served out" to the applications.

	X is used on many {Unix} systems.  It has also been described
	as over-sized, over-featured, over-engineered and incredibly
	over-complicated.  X11R6 (version 11, release 6) was released
	in May 1994.

	See also {Andrew project}, {PEX}.  {Usenet} newsgroups:
	{news:comp.windows.x}, {news:comp.x},
	{news:comp.windows.x.apps}, {news:comp.windows.x.intrinsics},
	{news:comp.windows.x.announce}, {news:comp.sources.x},
	{news:comp.windows.x.motif}, {news:comp.windows.x.pex}.

	(19 Oct 1995)

XWIP

	X Window Interface for Prolog.  A package for {Prolog}s
	following the {Quintus} {foreign function} interface
	(e.g. {SICStus Prolog}).  XWIP provides a (low-level)
	{Xlib}-style interface to {X}.  The current version was
	developed and tested on SICStus 0.7 and {MIT} {X11} R5 under
	{SunOS} 4.1.1.  It should be adaptable to many other {Unix}
	configurations.  Version 0.6.

	{(ftp://export.lcs.mit.edu/contrib/xwip-0.6.tar.Z)}.  E-mail:
	<xwip@cs.ucla.edu>.

	(25 Feb 1993)

xxgdb

	An {X11} front end for {gdb} by Pierre Willard
	<pierre@la.tce.com>.  Version 1.06.

	Posted to comp.sources.x volumes 11, 12, 13, 14, & 16.

	(22 Feb 1992)

XXX

	/X-X-X/ A marker that attention is needed.  Commonly used in
	program comments to indicate areas that are {kluge}d or need
	to be.  Some hackers liken "XXX" to the notional heavy-porn
	movie rating.  Compare {FIXME}.

Xy-pic

	<graphics, publication> A package for {typesetting} graphs and
	diagrams using {TeX}.  It is structured as several modules,
	each defining a custom notation for a particular kind of
	graphical object or structure.  Example objects are arrows,
	curves, and frames.  These can be organised in matrix,
	{directed graph}, path, polygon, knot, and 2-cell structure.

	Xy-pic works with {LaTeX}, {AMS-LaTeX}, {AMS-TeX}, and {plain
	TeX}, and has been used to typeset complicated diagrams from
	many application areas including {category theory}, {automata}
	theory, {algebra}, {neural networks} and {database} theory.

	{Home (http://www.ens-lyon.fr/~krisrose/Xy-pic.html)}.

	(20 Nov 1997)

xyzzy

	<games> The {canonical} "magic word" from the {ADVENT}
	adventure game, in which the idea is to explore an underground
	cave with many rooms and to collect the treasures you find
	there.  If you type "xyzzy" at the appropriate time, you can
	move instantly between two otherwise distant points.  If,
	therefore, you encounter some bit of {magic}, you might remark
	on this quite succinctly by saying simply "Xyzzy!"
	"Ordinarily you can't look at someone else's screen if he has
	protected it, but if you type quadruple-bucky-clear the system
	will let you do it anyway."  "Xyzzy!"  Xyzzy has actually been
	implemented as an undocumented no-op command on several OSes;
	in Data General's AOS/VS, for example, it would typically
	respond "Nothing happens", just as {ADVENT} did if the magic
	was invoked at the wrong spot or before a player had performed
	the action that enabled the word.  In more recent 32 bit
	versions, by the way, AOS/VS responds "Twice as much happens".
	See also {plugh}.

Y

	1. General purpose language syntactically like {RATFOR},
	semantically like {C}.  Lacks structures and pointers.  Used
	as a source language for Jack W. Davidson and Christopher
	W. Fraser's peephole optimiser which inspired {GCC} {RTL} and
	other optimisation ideas.

	{(ftp://ftp.cs.princeton.edu/pub/y+po.tar.Z)}.  It is a copy
	of the original distribution from the {University of Arizona}
	during the early 80's, totally unsupported.

	["The Y Programming Language", D.R. Hanson, SIGPLAN Notices
	16(2):59-68 (Feb 1981)].

	[Jack W. Davidson and Christopher W. Fraser, "The Design and
	Application of a Retargetable Peephole Optimiser", TOPLAS,
	Apr.  1980].

	[Jack W. Davidson, "Simplifying Code Through Peephole
	Optimisation" Technical Report TR81-19, The University of
	Arizona, Tucson, AZ, 1981].

	[Jack W. Davidson and Christopher W. Fraser, "Register
	Allocation and Exhaustive Peephole Optimisation"
	Software-Practice and Experience, Sep. 1984].

	2. See {fixed point combinator}.

Y2K

	{Year 2000}

YA-

	{Yet Another}

Yaa

	Yet Another Assembler - Macro assembler for GCOS 8 and Mark
	III on Bull DPS-8 machines.  Available from Bull as part of U
	Waterloo Tools package (maintained by <pjf@thinkage.on.ca>).

YABA

	/ya'b*/ [Cambridge] Yet Another Bloody Acronym.  Whenever some
	program is being named, someone invariably suggests that it be
	given a name that is acronymic.  The response from those with
	a trace of originality is to remark ironically that the
	proposed name would then be "YABA-compatible".  Also used in
	response to questions like "What is {WYSIWYG}?"  See also
	{YA-}, {TLA}.

yacc

	{Yet Another Compiler Compiler}

YADE

	{Yet Another DSSSL Engine}

YAFIYGI

	<abuse> /yaf'ee-y*-gee/ You asked for it, you got it.

	The command-oriented {ed}/{vi}/{nroff}/{TeX} style of {word
	processing} or other user interfaces which are not {WYSIWYG}.
	What you actually asked for is often not immediately apparent.

	This precise sense of "You asked for it, you got it" seems to
	have first appeared in Ed Post's classic parody "{Real
	Programmers} don't use Pascal"; the acronym is a more recent
	(as of 1993) invention.

	(13 Mar 1995)

Yahoo

	<World-Wide Web> Yet Another Hierarchical
	Officious/Obstreperous/Odiferous/Organized Oracle.

	(Or a member of a race of brutes in Swift's Gulliver's Travels
	who have the form and all the vices of man, or an uncouth or
	rowdy person).

	Probably the biggest hierarchical index of the {World-Wide
	Web}.  Originally at {Stanford University}, Yahoo moved to its
	own site in April 1995.  It allows you to move up and down the
	heirarchy, to search it and to suggest additions.  It also
	features "What's New", "What's Popular", "What's Cool" and a
	random link.

	{Home (http://www.yahoo.com/)}

	(05 Apr 1995)

Yale Haskell

	<language> A fully integrated {Haskell} programming
	environment.  It provides tightly coupled interactive editing,
	{incremental compilation} and dynamic execution of Haskell
	programs.  Two major modes of compilation, correspond to
	{Lisp}'s traditional "interpreted" and "compiled" modes.
	Compiled and interpreted modules may be freely mixed in any
	combination.

	Yale Haskell is run using either a command-line interface or
	as an {inferior process} running under the {Emacs} editor.
	Using the Emacs interface, simple two-keystroke commands
	evaluate expressions, run dialogues, compile {module}s, turn
	specific compiler diagnostics on and off and enable and
	disable various {optimiser}s.  Commands may be queued up
	arbitrarily, thus allowing, for example, a compilation to be
	running in the background as the editing of a source file
	continues in Emacs in the foreground.

	A "scratch pad" may be automatically created for any module.
	Such a pad is a logical extension of the module, in which
	additional function and value definitions may be added, but
	whose evaluation does not result in recompilation of the
	module.

	A tutorial on Haskell is also provided in the Emacs
	environment.  A {Macintosh} version of Yale Haskell includes
	its own integrated programming environment, complete with an
	Emacs-like editor and {pull-down menu}s.

	Yale Haskell is a complete implementation of the Haskell
	language, but also contains a number of extensions, including:

	(1) Instead of stream based I/O, a {monadic I/O} system is
	used.  Although similar to what will be part of the new
	{Haskell 1.3} report, the I/O system will change yet again
	when 1.3 becomes official.

	(2) Haskell programs can call both {Lisp} and {C} functions
	using a flexible foreign function interface.

	(3) Yale Haskell includes a {dynamic typing} system.  Dynamic
	typing has been used to implement {derived instance}s in a
	user extensible manner.

	(4) A number of small Haskell 1.3 changes have been added,
	including {polymorphic recursion} and the use of @_@ in an
	expression to denote {bottom}.  Although the 1.3 report is not
	yet complete, these changes will almost certainly be part of
	the new report.

	(5) A complete Haskell level {X Window System} interface,
	based on {CLX}.

	(6) A number of {annotation}s are available for controlling
	the optimiser, including those for specifying both function
	and data constructor {strict}ness properties, "{inlining}"
	functions, and specialising {over-loaded} functions.  Many
	standard {prelude} functions have been specialised for better
	performance using these annotations.

	(7) {Separate compilation} (including {mutually recursive}
	{module}s) is supported using a notion of a UNIT file, which
	is a kind of localised {makefile} that tells the compiler
	about compiler options and logical dependencies amongst
	program files.

	(8) Yale Haskell supports both standard and "{literate}"
	Haskell syntax.

	Performance of Yale Haskell's compiled code has been improved
	considerably over previous releases.  Although still not as
	good as the Glasgow ({GHC}) and Chalmers ({HBC}) compilers,
	the flexibility afforded by the features described earlier
	makes Yale Haskell a good choice for large systems
	development.  For some idea of performance, Hartel's latest
	"Nuc" benchmark runs at about the same speed under both Yale
	Haskell and hbc.  (Our experiments suggest, however, that Yale
	Haskell's compiled code is on average about 3 times slower
	than hbc.)

	Binaries are provided for {Sun}/{SPARC} and {Macintosh}, but
	it is possible to build the system on virtually any system
	that runs one of a number of {Common Lisp} implementations:
	{CMU Common Lisp}, {Lucid Common Lisp}, {Allegro Common Lisp}
	or {Harlequin LispWorks}.  {akcl}, {gcl} and {CLisp} do not
	have adaquate performance for our compiler.  The current
	version is 2.1.

	{Yale (ftp://nebula.cs.yale.edu/pub/haskell/yale)}
	(128.36.13.1).  {UK
	(ftp://ftp.dcs.glasgow.ac.uk/pub/haskell/yale/)}.  {Sweden
	(ftp://ftp.cs.chalmers.se/pub/haskell/yale/)}.  E-mail:
	<haskell-request@cs.yale.edu>,
	<haskell-request@dcs.glasgow.ac.uk>.

	(14 Jul 1993)

Yamaha

	<company> A Japanese company best known for consumer
	electronics and motorbikes.  They make music synthesizers,
	{CD-Rom Writers} and HiFi sound equipment.

	{Home (http://www.yamaha.com/)}.

	(29 Apr 1997)

YAPS

	Yet Another Production System?  {College Park Software}.  A
	commercial {production system} rule language, simpler than
	{OPS5}.  YAPS allows {knowledge base}s to be attached to
	instances of {CLOS} {object}s.

	E-mail: Liz Allen <liz@grian.cps.altadena.cs.us>.

YASOS

	Yet Another Scheme Object System.
	E-mail: Ken Dickey <kend@newton.apple.com>

YAUN

	/yawn/ Yet Another Unix Nerd.

	Reported from the San Diego Computer Society (predominantly a
	{microcomputer} users' group) as a good-natured punning insult
	aimed at {Unix} zealots.

	(11 Nov 1994)

Yay

	{Yet Another Yacc}

Year 2000

	<programming> (Y2K) A common name for all the difficulties the
	turn of the century may bring to computer users.

	Back in the seventies and eighties the turn of the century
	looked so remote and memory/disk was so expensive that most
	programs stored only the last two digits of the years.  Those
	of them which will still be in use will produce surprising
	results after 2000: they may believe that 1 January 2000 is
	before 21 December 1999 (00<99), they may calculate the day of
	week wrong, etc.  Some programs even used the year 99 as a
	special marker; there are rumours that some car insurance
	policies were cancelled as driving licence expiration year of
	99 was used to mark a deleted records.

	Just how serious the `century meltdown' will be is difficult
	to estimate.  Although few programs written decades ago are in
	use in their original form, blocks of code might have migrated
	to newer software so tracking down all of them is next to
	impossible.  The only reasonably sure test is to set the
	computer's clock forward to 23:59 31 Dec 1999 and see what
	happens.

	(25 Nov 1996)

Yellow

	A language from {SRI} proposed to meet the {Ironman}
	requirements which led to {Ada}.

	["On the YELLOW Language Submitted to the DoD", E.W. Dijkstra,
	SIGPLAN Notices 13(10):22-26, Oct 1978].

	(09 Nov 1994)

Yellow Book

	1. <publication> {Yellow Book, Jargon}.

	2. {Yellow Book CD-ROM}.

	(03 Dec 1996)

Yellow Book CD-ROM

	A {CD-ROM} format which is {ISO 9660} compliant and uses mode
	1 addressing.  Discs of this type can be played on most drives
	and would be appropriate for most {multimedia} {application}s
	which have been developed for {personal computer}s.

	(02 Nov 1994)

Yellow Book, Jargon

	<publication> The print version of the {Jargon File}, titled
	"The New Hacker's Dictionary".  It includes essentially all
	the material the File, plus a Foreword by {Guy L. Steele, Jr.}
	and a Preface by Eric S. Raymond.  Most importantly, the book
	version is nicely typeset and includes almost all of the
	infamous Crunchly cartoons by the Great Quux, each attached to
	an appropriate entry.  The first, second, and third editions
	correspond to versions 2.9.6, 3.0.0, and 4.0.0 of the File,
	respectively.

	["The New Hacker's Dictionary", 3rd edition, MIT Press, 1996
	(ISBN 0-262-68092-0)].

	(03 Dec 1996)

Yellow Box

	<operating system> {Apple Computer, Inc.}'s new development
	{platform} for building {desktop}, {server}, and {web}
	applications.  Yellow Box is a rich {object-oriented}
	environment that is tightly integrated with {Java} and allows
	you to deploy applications across five platforms: {Rhapsody},
	{Rhapsody for Intel}, {Windows 95}, {Windows NT}, and {Mac OS}.
	All Yellow Box-based products are an evolution of {OpenStep} -
	an operating system-independent, object-oriented application
	platform from {NeXT}.

	Integrating the cross-platform robustness of OpenStep with
	Apple's market-leading digital media and graphics technologies
	will differentiate the Yellow Box from other development
	platforms.

	"Yellow Box for Windows" is the {run-time} software
	(implemented as {dynamically linked libraries}) that allows
	{Yellow Box} applications to run under {Windows 95} and
	{Windows NT}.  Applications that use it will feature a full
	native Windows user interface.

	{(http://wais.sensei.com.au/macarc/appdir/1996/0077.html)}

	(15 Oct 1997)

Yellow Pages

	{Network Information Service}

yellow wire

	(IBM) Repair wires used when connectors (especially ribbon
	connectors) got broken due to some schlemiel pinching them, or
	to reconnect cut traces after the field engineer mistakenly
	cut one.  Compare {blue wire}, {purple wire}, {red wire}.

Yerk

	<language> (After Yerkes Observatory) An {object-oriented}
	language based on a {Forth} {Kernel} with some major
	modifications.  It was originally known as {Neon}, developed
	and sold as a product by {Kriya Systems} from 1985 to 1989.
	Several people at The {University of Chicago} have maintained
	Yerk since its demise as a product.  Because of possible
	trademark conflict they named it Yerk, which is not an acronym
	for anything, but rather stands for Yerkes Observatory, part
	of the Department of Astronomy and Astrophysics at U of C.

	Version 3.62.

	{(ftp://oddjob.uchicago.edu/pub/Yerk/)}

	E-mail: Bob Lowenstein <rfl@oddjob.uchicago.edu>.

	(23 Nov 1994)

Yet Another

	<jargon> (YA-, after {Unix}'s {yacc} - Yet Another
	Compiler-Compiler) A humorous allusion often used in titles to
	acknowledge that the topic is not original, though the content
	is.  As in "Yet Another AI Group" or "Yet Another {Simulated
	Annealing} {Algorithm}".  If used of others' work, it
	describes something of which there are already far too many.

	In hackish acronyms the "YA" prefix almost invariably expands
	to {Yet Another}, e.g. {YABA}, {YAUN}.

	(26 Nov 1996)

Yet Another Compiler Compiler

	<tool, language> (yacc) The {LALR} {parser generator} found on
	most {Unix} systems.  Also, the language used to describe the
	{syntax} of another language to yacc (the program).

	Implementations: {ayacc}, {YAY}, {perln-byacc},

	SASL-Yacc - "Yacc in {SASL} - An Exercise in Functional
	Programming", Simon Peyton-Jones, Software Prac & Exp
	15:807-820 (1985).  Mentions also a BCPL implementation.

	Yacc++ - 1990.  An {object-oriented} rewrite of yacc, supports
	{regular expression}s, produces an {LR1 grammar} parser.

	["YACC Meets C++", S.C. Johnson, USENIX Spring '88 Conf].

	Chris Clark, Compiler Resources Inc,
	<bz%compres.UUCP@primerd.cv.com> (508) 435-5016.

	MLYACC - Implementation and output in {SML/NJ}.
	{(ftp:research.att.com/dist/ml/75.tools.tar.Z)}.

	A version, by David Poole <dpoole@hydrogen.oscs.montana.edu>,
	has been retargeted to {Turbo Pascal}.
	{(ftp://iecc.com/pub/file/lyprg.zip)}.

	See also {Bison}, {yet another}, {Yet Another Yacc}.

	{Unix manual page}: yacc(1).

	["YACC - Yet Another Compiler Compiler", S.C. Johnson, CS TR
	32, Bell Labs (Jul 1975)].

	[Was there ever an "ACC" - "Another Compiler Compiler"?  If
	so, what was the first compiler compiler called?]

	(21 Jan 1997)

Yet Another Yacc

	<tool> (Yay) An extension of {Yacc} with {LALR2} parsing.

	Yay is available from {Bull} as part of the {University of
	Waterloo Tools} package maintained by <pjf@thinkage.on.ca>.

	(09 Nov 1994)

YLISP

	A variant of {Xlisp} from {Hewlett-Packard} for the HP-95LX
	{palmtop}.

	{(ftp://hpcsos.col.hp.com/mirrors/.scsi5/hp95lx/languages)}

	(23 Nov 1994)

YMMV

	{Your mileage may vary}

YMODEM

	A file transfer {protocol} used between {modem}s.  YMODEM was
	developed by Chuck Forsberg as the successor to {XMODEM} and
	was itself succeeded by {ZMODEM}.  XMODEM used 128-byte
	{packet}s, YMODEM can also use 1 kilobyte packets.  Whereas
	YMODEM is a batch protocol, {YMODEM-G} is a non-stop version.

	File sizes are included in the YMODEM header when sending both
	binary and text files.  Thus files transferred via YMODEM
	should preserve their exact length.  File modification times
	may also be present in the YMODEM header.

	YModem can {fall back} to smaller packets when necessary but
	there is no backward compatibility with XModem's error
	detection.

	[Chuck Forsberg, "XMODEM/YMODEM Protocol Reference"].

	(02 Feb 1995)

YMODEM-G

	A non-stop "streaming" version of {YMODEM} designed for
	"error-free" connections with proper flow control; the
	transmitting program sends packets to the receiver as fast as
	it can without waiting for acknowledgements.  Any errors cause
	the entire file transfer to abort.

yocto-

	{prefix}

yotta-

	{prefix}

yottabyte

	<unit> 2^80 = 1,208,925,819,614,629,174,706,176 {bytes} = 1024
	{zettabytes}.

	See {prefix}.

	(02 May 1997)

You are not expected to understand this

	[Unix] The canonical comment describing something {magic} or
	too complicated to bother explaining properly.  From an
	infamous comment in the context-switching code of the V6
	{Unix} {kernel}.

You know you've been hacking too long when...

	The set-up line for a genre of one-liners told by hackers
	about themselves.  These include the following:

	* Not only do you check your e-mail more often than your paper
	mail, but you remember your {network address} faster than your
	postal one.

	* Your SO kisses you on the neck and the first thing you think
	is "Uh, oh, {priority interrupt}".

	* You go to balance your chequebook and discover that you're
	doing it in {octal}.

	* Your computers have a higher street value than your car.

	* In your universe, "round numbers" are powers of 2, not 10.

	* You have woken up recalling a dream in some programming
	language.

	* You realise you have never seen half of your best friends.

	[An early version of this entry said "All but one of these
	have been reliably reported as hacker traits (some of them
	quite often).  Even hackers may have trouble spotting the
	ringer."  The ringer was balancing one's chequebook in octal,
	which I made up out of whole cloth.  Although more respondents
	picked that one out as fiction than any of the others, I also
	received multiple independent reports of its actually
	happening, most famously to {Grace Hopper} while she was
	working with BINAC in 1949. - ESR]

	(07 Apr 1995)

Yourdon

	1. <programming> The {Yourdon methodology}.

	2. <person> {Edward Yourdon}.

	3. <company> {Yourdon, Inc.}.

	(07 Apr 1995)

Yourdon/Constantine

	<programming> (Or "Constantine/Yourdon") A {structured design}
	{methodology} involving {structure chart}s, developed by Larry
	Constantine.

	(07 Apr 1995)

Yourdon/Demarco

	<programming> (Or "DeMarco/Yourdon") A {structured analysis}
	{methodology} involving {data flow diagram}s, etc. developed
	by {Edward Yourdon} and Tom DeMarco.

	(07 Apr 1995)

Yourdon, Inc.

	<company> The company founded in 1974 by {Edward Yourdon} to
	provide educational, publishing, and consulting services in
	state-of-the-art software engineering technology.  Over the
	next 12 years, the company grew to a staff of over 150 people,
	with offices throughout North America and Europe.  As CEO of
	the company, Yourdon oversaw an operation that trained over
	250,000 people around the world; the company was sold in 1986
	and eventually became part of {CGI}, the French software
	company that is now part of {IBM}.  The publishing division,
	Yourdon Press (now part of Prentice Hall), has produced over
	150 technical computer books on a wide range of software
	engineering topics; many of these "classics" are used as
	standard university computer science textbooks.

	(16 Apr 1995)

Yourdon methodology

	<programming> The {software engineering} {methodology}
	developed by {Edward Yourdon} and colleagues in the 1970s and
	1980s.  "Yourdon methodology" is a generic term for all of the
	following methodologies: {Yourdon/Demarco},
	{Yourdon/Constantine}, {Coad/Yourdon}.

	(07 Apr 1995)

Your mileage may vary

	(Standard disclaimer attached to EPA mileage ratings by
	American car manufacturers) A ritual warning often found in
	Unix {freeware} distributions and elsewhere.  Translates
	roughly as "Hey, I tried to write this portably, but who
	*knows* what'll happen on your system?"

	(10 Nov 1994)

Yow!

	<exclamation> /yow/ (From "Zippy the Pinhead" comics) A
	favoured hacker expression of humorous surprise or emphasis.
	"Yow!  Check out what happens when you twiddle the foo option
	on this display hack!"

	Compare {gurfle}.

	(07 Mar 1995)

yoyo mode

	<jargon> The state in which a computer is said to be when it
	rapidly alternates several times between being up and being
	down.  Interestingly (and perhaps not by coincidence), many
	hardware vendors give out free yoyos at {Usenix} exhibits.

	{Sun Microsystems} gave out logoised yoyos at SIGPLAN '88.
	Tourists staying at one of Atlanta's most respectable hotels
	were subsequently treated to the sight of 200 of the country's
	top computer scientists testing yo-yo {algorithm}s in the
	lobby.

	[Is it "yoyo" or "yo-yo"?]

	(07 Mar 1995)

YP

	Yellow Pages.  The original name for {Sun}'s
	{Network Information Service}.

	(07 Mar 1995)

YSM

	{Yourdon Structured Method}

YTalk

	Version: V3.0 Patch Level 1.

	<networking, tool> A multi-user chat program by Britt Yenne
	<yenne@austin.eds.com>.  YTalk works almost exactly like the
	standard {Unix} {talk} program and even communicates with the
	same talk {daemon}(s), but YTalk supports multiple
	connections.

	Multiple usernames may be given as command-line arguments, in
	the form "name#tty@host" where the optional "#tty" specifies a
	particular tty.

	YTalk is able to communicate with both existing versions of
	{Unix} talk daemons.  Once connected, typing {escape} gives
	access to a menu of commands to add or delete users, trace
	to a file, or set options.  If run under the {X Window
	System}, YTalk will use separate X windows for each user in
	the conversaton, otherwise it will split the terminal screen
	between them.

	E-mail: <ytalk@austin.eds.com>.

	[FTP?]

	(04 Apr 1995)

Yu-Shiang Whole Fish

	/yoo-shyang hohl fish/ An obsolete name for the Greek
	character gamma ({extended SAIL ASCII} code 9) which with a
	loop in its tail looks like a little fish swimming down the
	page.  The term is actually the name of a Chinese dish in
	which a fish is cooked whole (not {parse}d) and covered with
	Yu-Shiang (or Yu-Hsiang) sauce.  Used primarily by people on
	the {MIT} {LISP Machine}, which could display this character
	on the screen.  Tends to elicit incredulity from people who
	hear about it second-hand.

	(31 Jan 1995)

Z

	/zed/ <language> 1. A {specification language} developed by
	the {Programming Research Group} at Oxford University around
	1980.  Z is used for describing and modelling computing
	systems.  It is based on {axiomatic set theory} and {first
	order predicate logic}.  Z is written using many non-{ASCII}
	symbols.  It was used in the {IBM} {CICS} project.

	See also {Z++}.

	["Understanding Z", J.M. Spivey, Cambridge U Press 1988].

	2. <language, simulation> A {stack}-based, complex arithmetic
	{simulation} language from {ZOLA Technologies}.

	(11 Aug 1995)

Z++

	<language> An {object-oriented} extension of {Z}.

	["Z++, an Object-Oriented Extension to Z", Lano, Z User
	Workshop, Oxford 1990, Springer Workshops in Computing, 1991,
	pp.151-172].

	(22 Apr 1995)

Z180

	<processor> An 8-bit microprocessor, code compatible with the
	{Zilog Z80} and based on a design from {Hitachi} which is in
	turn based on the Zilog Z80.

	[Manufacturer?]

	(22 Apr 1995)

Z3

	<computer> The computer, finished before 1945, for which
	{Konrad Zuse} wrote the language {Plankalkl} and on which he
	implemented it.

	[Did Zuse design the computer?  Where?  Features?  Technology?
	Predecessors?  Contemporaries?  Fate?]

	(30 Mar 1995)

Z39.50

	{ANSI Z39.50}

Z8

	{Zilog Z8}

Z80

	{Zilog Z80}

ZAP

	Language for expressing transformational developments.

	["A System for Assisting Program Transformation",
	M.S. Feather, ACM TOPLAS 4(1):1-20 (Jan 1982)].

zap

	1. To modify, usually to correct; especially used when the
	action is performed with a debugger or binary patching tool.
	Also implies surgical precision.  "Zap the debug level to 6
	and run it again."  In the {IBM} {mainframe} world, binary
	patches are applied to programs or to the {operating system}
	with a program called "{superzap}", whose file name is
	"IMASPZAP" (possibly contrived from I M A SuPerZAP).

	2. To {fry} a chip with static electricity.  "Uh oh - I think
	that lightning strike may have zapped the disk controller."

ZAPP

	Zero Assignment Parallel Processor.  A virtual tree machine
	architecture in which a process tree is dynamically mapped
	onto a fixed, strongly connected network of processors
	communicating by message passing.  The basic operation of each
	node is to apply a divide and conquer function which takes
	four arguments: (1) a function 'primitive' which takes a
	problem description (PD) and returns true if it can be solved
	without division, (2) a function 'solve' which takes a
	primitive PD and returns its solution, (3) a function 'divide'
	which takes a PD and returns a list of PDs of smaller problems
	and (4) a function 'combine' which returns the solution to a
	problem by combining a list of solutions of subproblems.

	Each node has a copy of the code and one is given the initial
	problem description.  Task distribution is by process stealing
	in which a process constructs a descriptor for each subtask
	and idle (lightly loaded) processors can steal a descriptor
	from a physically connected neighbour.

Z-buffer

	<graphics> An {array} used to store the maximum Z {coordinate}
	of any feature plotted at a given (X, Y) location on the
	screen, used for {hidden line removal} in a 2D rendering of a
	3D scene.  The Z axis is perpendicular to the screen with
	values increasing towards the viewer so that any point whose Z
	coordinate is less than the corresponding Z-buffer value will
	be hidden behind some feature which has already been plotted.

	(18 Jul 1997)

ZEBRA

	A data management package in the {CERN Program Library}.

Zed

	1978.  Software Portability Group, U Waterloo.  {Eh}, with
	types added.  Similar to {C}.  Implementation language for the
	{Thoth} realtime operating system.  Added a few simple types
	for greater efficiency on byte-addressed machines.  String
	constants in case statements.  Enforces the naming convention:
	MANIFESTS, Externals and locals.  "Porting the Zed Compiler",
	G.B. Bonkowski et al, SIGPLAN Notices 14(8):92-97 (Aug 1979).

Zen

	[Kehoe, B., "Zen and the Art of the Internet", February 1992.]

zen

	<jargon> To figure out something by meditation or by a sudden
	flash of enlightenment.  Originally applied to {bugs}, but
	occasionally applied to problems of life in general.  "How'd
	you figure out the buffer allocation problem?"  "Oh, I zenned
	it."

	Contrast {grok}, which connotes a time-extended version of
	zenning a system.  Compare {hack mode}.  See also {guru}.

	(17 Sep 1996)

ZENO

	U Rochester 1978.  Euclid with asynchronous message-passing.
	"Preliminary ZENO Language Description", J.E. Ball et al,
	SIGPLAN Notices 14(9):17-34 (Sep 1979).

zepto

	{prefix}

Zermelo Frnkel set theory

	<mathematics> A {set theory} with the {axiom}s of {Zermelo set
	theory} (Extensionality, Union, Pair-set, Foundation,
	Restriction, Infinity, Power-set) plus the Replacement {axiom
	schema}:

	If F(x,y) is a {formula} such that for any x, there is a
	unique y making F true, and X is a set, then

		{F x : x in X}

	is a set.  In other words, if you do something to each element
	of a set, the result is a set.

	An important but controversial {axiom} which is NOT part of ZF
	theory is the {Axiom of Choice}.

	(10 Apr 1995)

Zermelo set theory

	<mathematics> A {set theory} with the following set of
	{axiom}s:

	Extensionality: two sets are equal if and only if they have
	the same elements.

	Union: If U is a set, so is the union of all its elements.

	Pair-set: If a and b are sets, so is

		{a, b}.

	Foundation: Every set contains a set disjoint from itself.

	Comprehension (or Restriction): If P is a {formula} with one
	{free variable} and X a set then

		{x: x is in X and P(x)}

	is a set.

	Infinity: There exists an {infinite set}.

	Power-set: If X is a set, so is its {power set}.

	Zermelo set theory avoids {Russell's paradox} by excluding
	sets of elements with arbitrary properties - the Comprehension
	axiom only allows a property to be used to select elements of
	an existing set.

	{Zermelo Frnkel set theory} adds the Replacement axiom.

	[Other axioms?]

	(30 Mar 1995)

ZERO

	<language> An {object oriented} extension of {Z}.

	["Object Orientation in Z", S. Stepney et al eds, Springer
	1992].

	(30 Mar 1995)

zero

	1. <character> 0, {ASCI} character 48.  Numeric zero, as
	opposed to the letter "O" (the 15th letter of the English
	alphabet).  In their unmodified forms they look a lot alike,
	and various {kluge}s invented to make them visually distinct
	have compounded the confusion.

	If your zero is centre-dotted and letter-O is not, or if
	letter-O looks almost rectangular but zero looks more like an
	American football stood on end (or the reverse), you're
	probably looking at a modern character display (though the
	dotted zero seems to have originated as an option on {IBM
	3270} controllers).  If your zero is slashed but letter-O is
	not, you're probably looking at an old-style {ASCII} graphic
	set descended from the default typewheel on the venerable
	{ASR-33} {Teletype} (Scandinavians, for whom slashed-O is a
	letter, curse this arrangement).

	If letter-O has a slash across it and the zero does not, your
	display is tuned for a very old convention used at {IBM} and a
	few other early mainframe makers (Scandinavians curse *this*
	arrangement even more, because it means two of their letters
	collide).  Some {Burroughs}/{Unisys} equipment displays a zero
	with a *reversed* slash.  And yet another convention common on
	early line printers left zero unornamented but added a tail or
	hook to the letter-O so that it resembled an inverted Q or
	cursive capital letter-O.

	(24 Jan 1995)

	2. To set to 0.  Usually said of small pieces of data, such as
	bits or words (especially in the construction "zero out").

	3. To erase; to discard all data from.  Said of disks and
	directories, where "zeroing" need not involve actually writing
	zeroes throughout the area being zeroed.  One may speak of
	something being "logically zeroed" rather than being
	"physically zeroed".

	See {scribble}.

	(06 Mar 1995)

zero assignment

	A zero assignment language is a language where there are no
	variables but only functions.  See also {single assignment}.

zero-content

	{content-free}

Zero Insertion Force

	<hardware> (ZIF) A kind of socket for {integrated circuit}s.
	A ZIF socket can be opened and closed by means of a lever or
	screw.  When open, there the chip may be placed in the socket
	without any pressure at all, the socket is then closed,
	causing its contacts to grip the pins of the chip.  Such
	sockets are used where chips must be inserted and removed
	frequently, such as in test equipment.  They are more
	expensive and usually take up more space than conventional IC
	sockets.

	(05 Dec 1994)

zeroth

	<jargon> First.

	Since zero is the lowest value of an {unsigned} {binary}
	{integer}, which is one of the most fundamental types in
	programming and {hardware} design, it is often natural to
	count from zero rather than one, especially when the integer
	is actually an {index}, as in hardware addressing or {C} and
	{Lisp}'s 0-based indexing of {arrays}.

	Hackers and computer scientists often like to call the first
	chapter of a publication "chapter 0", especially if it is of
	an introductory nature (one of the classic instances was in
	the First Edition of {K&R}).  In recent years this trait has
	also been observed among many pure mathematicians (who have an
	independent tradition of numbering from 0).

	Zero-based numbering tends to reduce {fencepost errors},
	though it cannot eliminate them entirely.

	Logically, the next item after the zeroth should be the
	"oneth" but this is never used.

	(07 Dec 1997)

ZEST

	An {object-oriented} extension of {Z}.

	["Object Orientation in Z", S. Stepney et al eds, Springer
	1992].

ZetaLisp

	{Maclisp} dialect used on the {LISP Machine}.  The many
	extensions to Maclisp include {vectors}, {closures},
	{flavors}, {stack groups}, {locatives} and {invisible
	pointers}.  Currently supported by {Lisp Machines, Inc.} and
	{Symbolics}.

	["LISP Machine Manual", D. Weinreb and D. Moon, MIT AI Lab,
	1981].

	(18 Mar 1997)

zetta-

	{prefix}

zettabyte

	<unit> 2^70 = 1,180,591,620,717,411,303,424 {bytes} = 1024
	{exabytes}.

	See {prefix}.

	(02 May 1997)

Zeus

	A former name of {byacc}.

ZFC

	<mathematics> {Zermelo Frnkel set theory} plus the {Axiom of
	Choice}.  A favourite {axiomatisation} of {set theory}.

	(29 Mar 1995)

ZF expression

	<programming> (After {Zermelo Frnkel set theory}).  {David
	Turner}'s name for {list comprehension}.

	(27 Mar 1995)

ZIF

	{Zero Insertion Force}

zigamorph

	/zig'*-morf/ 1. {Hex} FF (11111111) when used as a {delimiter}
	or {fence} character.  Usage: primarily at {IBM} shops.

	2. [proposed] The {Unicode} non-character +UFFFF
	(1111111111111111), a character code which is not assigned to
	any character, and so is usable as end-of-string.

ZIL

	<games> Zork Implementation Language.  Language used by
	{Infocom}'s Interactive Fiction adventure games.  Interpreted
	by the {zmachine}, for {Unix} and {Amiga}.

	{(ftp://plains.nodak.edu/Minix/st.contrib.Infocom.tar.Z)}

Zilog

	The {microprocessor} manufacturer who produced the {Zilog Z80}
	in July 1976 and later the {Zilog Z8000}.

	[More?  Address?  History?]

	(22 Apr 1995)

Zilog Z280

	An enhanced version of the {Zilog Z80} with a 16 bit
	architecture, introduced in July, 1987.  It added an {MMU} to
	expand addressing to 16Mb, features for {multitasking}, a 256
	byte {cache}, and a huge number of new {op code}s (giving a
	total of over 2000!).  Its internal clock runs at 2 or 4 times
	the external clock (e.g. a 16MHz CPU with a 4MHz bus).

	(31 Oct 1994)

Zilog Z8

	<processor> A family of {microcontroller}s from {Zilog} with
	on-chip {RAM} and {ROM}.  The Z8 is not related to the {Zilog
	Z80}, it uses a totally different architecture and
	{instruction set}.

	Competitors include the {Motorola 6805}/68HC05 family or the
	{Intel 8051}-family (or i51-family or MCS51-family - there is
	no standard family name).

	(22 Apr 1995)

Zilog Z80

	<processor> An 8-bit {microprocessor}.  It was released in
	July 1976 with a 2.5 MHz {clock rate}.  The Z80 was a much
	improved {Intel 8080} (as was the {Intel 8085}).  It also used
	8-bit data and 16-bit addressing, and could execute all of the
	{8080} {op code}s as well as 80 new ones, instructions that
	included 1, 4, 8 and 16-bit operations and even block move and
	block I/O instructions.  The {register set} was doubled, with
	two banks of registers (including A and F) that could be
	switched between.  This allowed fast {operating system} or
	{interrupt} {context switch}es.  It features 3 types of
	interrupt mode.

	The Z80 also added two {index register}s (IX and IY) and
	relocatable {vectored interrupt}s (via the 8-bit IV register).
	Like many processors (including the {8085}), the Z80 featured
	many undocumented op codes.  Chip area near the edge was used
	for added instructions, but fabrication made the failure of
	these high.  Instructions that often failed were just not
	documented, increasing chip yield.  Later fabrication made
	these more reliable.

	The thing that really made the Z80 popular was the memory
	interface - the CPU generated it's own {RAM} {refresh}
	signals, which meant easier design and lower system cost.
	That and its {8080} compatibility and {CP/M}, the first
	standard {microprocessor} {operating system}, made it the
	first choice of many systems.

	In addition to the original Z80 (2.5 MHz) there are the {Zilog
	Z80A} (4 MHz), {Zilog Z80B} (6MHz) and {Zilog Z80H} (8 MHz)
	versions.  The popular {Hitachi HD64180} processor family adds
	peripherals and an {MMU} to the Z80.

	The {Zilog Z280} was an enhanced version with an {MMU} and
	many new {op code}s.

	(12 Jun 1996)

Zilog Z8000

	<processor> A {microprocessor} from {Zilog} introduced not
	long after the {Intel 8086}, but with superior features.  It
	was basically a 16-bit processor, but could address up to 23
	bits in some versions by using {segment registers} (to supply
	the upper 7 bits).  There was also an unsegmented version, but
	both could be extended further with an additional {MMU} that
	used 64 {segment registers}.

	Internally, the Z8000 had sixteen 16-bit {registers}, but
	register size and use were exceedingly flexible.  The Z-8000
	registers could be used as sixteen 8-bit registers (only the
	first half were used like this), sixteen 16-bit registers,
	eight 32-bit registers, or four 64-bit registers, and included
	32-bit multiply and divide.  They were all general purpose
	registers - the {stack pointer} was typically register 15,
	with register 14 holding the stack segment (both accessed as
	one 32-bit register for painless address calculations).

	The Z8000 featured two modes, one for the {operating system}
	and one for user programs.  The user mode prevented the user
	from messing about with {interrupt} handling and other
	potentially dangerous stuff.

	Finally, like the {Zilog Z80}, the Z8000 featured automatic
	{DRAM refresh} circuitry.  Unfortunately it was somewhat slow,
	but the features generally made up for that.  Initial {bugs}
	also hindered its acceptance (partly because it did not use
	{microcode}).  There was a radiation resistant military
	version.

	There was a later 32-bit, {pipelined} version, the {Zilog
	Z80000}.

	(16 Dec 1997)

Zilog Z80000

	<processor> A later version of the {Zilog Z8000}, expanded to
	32 bits internally and with a 6-stage {pipeline}.

	(16 Dec 1997)

Zilog Z80A

	<processor> A version of the {Zilog Z80} {microprocessor} with
	a 4 MHz {clock rate}.

	(24 Apr 1995)

zip

	1. <tool, compression, file format> To create a compressed
	{archive} (a "zip file") from one or more files using
	{PKWare}'s {PKZIP} or a compatible {archiver}.  Its use is
	spreading from {MS-DOS} now that portable implementations of
	the {algorithm} have been written.

	zip is also the name of a {Unix} archiving utility compatible
	with {PKZIP}.  {unzip} is the corresponding de-archiver.

	See also {gzip}, {tar and feather}.

	2. <storage> {Zip Drive}.

	(26 Aug 1996)

Zipcode

	<language> A parallel language at {Lawrence Livermore}(?).

	(26 Aug 1996)

Zip Drive

	<hardware, storage> A {disk drive} from {Iomega Corporation}
	which takes removable 100 {megabyte} {hard disks}.  Both
	internal and external drives are manufactured, making the
	drive suitable for {backup}, mass storage or for moving files
	between computers.  Software is included to help with file
	organisation.  The internal {SCSI} model offers up to 60 MB /
	minute transfer rate.

	The Zip drive was awarded {Byte}'s Readers' {Hardware Choice
	Award 1996 (http://www.byte.com/art/9607/sec11/art1.htm)}.
	The company has started to manufacture a larger {Jaz} drive,
	which takes one {gigbyte} disks.

	{Home (http://www.iomega.com/index.html)}

	(23 Mar 1997)

zip file

	{zip}

zipperhead

	<abuse> An {IBM} term for a person with a closed mind.

	(30 Nov 1994)

ZMODEM

	<protocol> A file transfer protocol with error checking and
	crash recovery.  Developed by Chuck Forsberg.  Its transfer
	rate is similar to {YMODEM-g}.  Like YMODEM-g, ZMODEM does not
	wait for positive acknowledgement after each block is sent,
	but rather sends blocks in rapid succession.  If a ZMODEM
	transfer is cancelled or interrupted for any reason, the
	transfer can be resurrected later and the previously
	transferred information need not be resent.

	{FTP Oakland
	(ftp://oak.oakland.edu/pub/simtelnet/msdos/zmodem/)}, {FTP PDX
	(ftp://ftp.cs.pdx.edu/pub/zmodem/)}.

	Telephone: +1 900 737 7836.

	(02 Jul 1996)

ZOG

	A high-performance {hypertext} system developed at
	{Carnegie-Mellon University}.

	(30 Nov 1994)

ZOLA Technologies

	Producers of the {Z} {simulation} language.

	E-mail: <ZOLA@Applelink.Apple.com>.

	(30 Nov 1994)

zombie

	1. <operating system> {zombie process}.

	2. <chat> A {ghost}.

	(08 Oct 1997)

zombie process

	<operating system> (Or "defunct process") A {Unix} {process}
	that has terminated (either because it has been killed by a
	{signal} or because it has called {exit}()) and whose {parent
	process} has not yet received notification of its termination
	by executing (some form of) the {wait}() {system call}.

	A zombie process exists solely as a {process table} entry and
	consumes no other resources.  This entry is retained to hold
	the child's exit status until the parent process wants to
	retrieve it.  The parent can also be notified asynchronously
	via a signal of the child's termination.

	Zombie processes can be seen in "ps" listings occasionally
	(with a status "Z" in some versions).

	Compare {orphan process}.

	(08 Oct 1997)

zone

	A logical group of {network} devices on {AppleTalk}.

	(30 Nov 1994)

Zoo

	{byacc}

zoom

	<graphics> To show a smaller area of an {image} at a higher
	magnification ("zoom in") or a larger area at a lower
	magnification ("zoom out"), as though using a zoom lense on a
	camera.

	Unlike in an optical system, zooming in on a computer {image}
	does not necessarily increase the amount of detail displayed
	since this is limited by what is actually stored in the image.
	Similarly, you cannot zoom out beyond the full size of the
	image.

	(24 Oct 1997)

Zoomer

	A {PDA} from {Casio}, based on the {GEOS} {microkernel}
	{operating system}.

	{Home (http://www.biostat.washington.edu/zoomer.html)}.
	{(http://www.eit.com/mailinglists/zoomer/resources.html)}.

	{Usenet} newsgroup: {news:comp.sys.pen},
	{news:comp.sys.handhelds}, {news:comp.sys.palmtops}.

	(23 Jan 1995)

ZOPL

	A low-level {Pascal}(?) from {Geac}.

	(23 Jan 1995)

zorch

	/zorch/ 1. [TMRC] To attack with an inverse heat sink.

	2. [TMRC] To travel with velocity approaching lightspeed.

	3. [MIT] To propel something very quickly.  "The new comm
	software is very fast; it really zorches files through the
	network."

	4. [MIT] Influence.  Brownie points.  Good karma.  The
	intangible and fuzzy currency in which favours are measured.
	"I'd rather not ask him for that just yet; I think I've used
	up my quota of zorch with him for the week."

	5. [MIT] Energy, drive, or ability.  "I think I'll {punt} that
	change for now; I've been up for 30 hours and I've run out of
	zorch."

	6. [MIT] To flunk an exam or course.

	7. Computing power.

	(09 Jul 1997)

Zork

	/zork/ The second of the great early experiments in computer
	fantasy gaming; see {ADVENT}.  Originally written on {MIT-DM}
	during the late 1970s, later distributed with {BSD Unix} as a
	patched, sourceless {RT-11} {FORTRAN} binary (see
	{retrocomputing}) and commercialised as "The Zork Trilogy" by
	Infocom.  The FORTRAN source was later rewritten for
	portability and released to {Usenet} under the name "Dungeon".
	Both FORTRAN "Dungeon" and translated {C} versions are
	available from many {FTP archive}s.

zorkmid

	<games> /zork'mid/ The canonical unit of currency in
	hacker-written games.  This originated in {zork} but has
	spread to {nethack} and is referred to in several other games.

zsh

	{Z shell}

Z shell

	(zsh) 1. {sh} with list processing and {database}
	enhancements.

	Version 2.1.o (before 30 Oct 1995).

	{(ftp://cs.ucsd.edu/pub/zsh/zsh2.1.0.tar.Z)}

	2. A {Unix} command interpreter {shell} by Paul Falstad
	<pf@ttisms.com>, similar to, but not completely compatible
	with, {ksh}, with many additions to please {csh} users and
	some {tcsh} features.  zsh supports editing of multi-line
	commands a single buffer; variable editing; a command buffer
	stack; {recursive} {glob}bing; manipulation of {arrays}; and
	spelling correction.

	The current version (23 Mar 1993) 2.3.1 (2.4 in beta) is
	available for Berkeley and {SVR4}-based Unix.

	{zsh FAQ (http://mal9000.bevc.blacksburg.va.us/zsh/FAQ)}

	{(ftp://carlo.phys.uva.nl/pub/bas/zsh/)}

	Mailing list: <zsh-request@cs.uow.edu.au>.

	(31 Oct 1995)

ZUG

	A low-level {Awk}(?) from {Geac}.

	(23 Jan 1995)

ZUSE

	An LL(1) {parser generator} by Arthur Pyster, {University of
	California at Santa Barbara}.  Requires {Pascal}.

	(23 Sep 1986)

Zuse

	(Named after Konrad Zuse, the designer of the first modern
	programming language {Plankalkl}).  A descendant of {Ada},
	{Modula-2}, {Mesa} and {Oberon-1}, described by Christian
	Collberg <collberg@dna.lth.se> in his PhD thesis 1991.

	Zuse supports several levels of information hiding.  The Zuse
	type system includes fully hidden types (similar to {Modula-2}
	{opaque type}s but without any implementation restriction),
	semi-open pointer types (same as {Modula-2} {opaque type}s),
	extensible {record type}s (similar to {Oberon-1} public
	projection types but without the compiler hint), {enumeration}
	types, extensible enumeration types, and extensible {subrange
	type}s.

	A type can also be protected by specifying the operations that
	particular modules may perform (similar to {C++} {friend
	class}es and {Ada} {private type}s).  Zuse also includes
	hidden and extensible constants and hidden inline procedures.
	In order to support the higher levels of information hiding
	the implementation employs partial intermediate code linking.
	A version for {Sun-3} is available.

ZX-80

	<computer> {Sinclair}'s cheap {Zilog Z80}-based {personal
	computer} with built-in {BASIC} and one kilobyte of {RAM},
	launched in 1979.  The ZX-80 was originally sold in kit form
	and was used by many UK hobbyists as a means of learning the
	basics of computing.

	Some remember the 1kb ZX-80 for the claim in its advertising
	that you could control a nuclear power station with it.  I was
	succeeded by the {ZX-81}.

	(04 Nov 1995)

ZX-81

	<computer> An even more successful version of the {Sinclair}
	{ZX-80}, featuring a large {uncommitted logic array} instead
	of much discrete logic, an improved {BASIC}, and rather more
	expandability (it could take 16kb {RAM} packs).  It was
	launched around 1981 and was eventually replaced by the
	{Spectrum}.

	(04 Nov 1995)

zxnrbl

	<jargon> /sner'b*l/ Incorrect data introduced by transmission
	errors; any corrupted or uninterpretable data.

	The word originated in a 1978 advertisement for a
	Mockingboard, which "makes frogs croak, princesses shriek, and
	martians zxnrbl."

	"It's not misspelled on the original page.  The Internet must
	have zxnrbled it on the way to you."

	(16 Mar 1997)

ZX Spectrum

	<computer> {Sinclair}'s first personal computer with a colour
	display.  The Spectrum used the {Zilog Z80} processor like its
	predecessors the {ZX-80} and {ZX-81}.  It was originally
	available in 16k and 48k versions using cassette tape and
	later grew to 128k and sprouted {floppy disks}.  It had a
	wider and more solid case and a marginally better "dead flesh"
	keyboard.  Unlike the earlier models, it didn't require the
	presence of a cold carton of milk to prevent it overheating.
	It was possibly the most popular home computer in the UK for
	many years.

	[Was it "ZX" or just "Spectrum"?]

	(04 Nov 1995)

Zynet Ltd.

	<company> A UK {Internet service provider} offering full
	{Internet Protocol} connection by any reasonable means for any
	number of computers from individual {dial-up}s to {leased
	line} connections to entire networks.

	Zynet is a sister company of {Minerva Software} and thus claim
	a better than average understanding of the needs and
	idiosyncracies of {Acorn} systems and will be offering special
	services for education.

	{(http://www.zynet.co.uk/)}

	E-mail: <zynet@zynet.co.uk>.

	Telephone: +44 (1392) 426 160.  Fax: +44 (1392) 421 762.

	Address: Minerva House, Baring Crescent, Exeter EX1 1TL, UK.

	(31 Jan 1995)

ZyXEL

	A {modem} manufacturer.

	{(ftp://ftp.zyxel.com/pub/other/zyxel)}

	E-mail: <tech@zyxel.com>, <sales@zyxel.com>.

	Telephone: +1 800-255-4101 (Sales), +1 714-693-0808 (tech), +1
	714-693-0762 (BBS), +1 714-693-8811 (fax).

	Address: 4920 E. La Palma, Anaheim, CA 92807, USA.

	(31 Oct 1994)

~

	{tilde}
