EDP Dictionary - C

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)

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.

	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},
	{secondary cache}, {sector mapping}, {set associative cache}.

	(21 Jan 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

	A software engineering vendor in the US.

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)

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) {ASCII} character 24.

	(28 Jun 1996)

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

	(04 Mar 1997)

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.

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

	(CMU)  in Pittsburgh, Pennsylvania.  {School of Computer Science
	(http://www.cs.cmu.edu/Web/FrontDoor.html)}.

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)

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 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. A huge volume of spurious error-message output produced 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
	is interpreted as garbaged or ill-formed.

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

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

	<text> Opposite of {case sensitive}.

	(13 Jan 1996)

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

	<text> A property of a text matching operation which
	distinguishes upper-{case} (capital) letters from lower case.

	Case sensitivity is relevant in areas including: text editors
	(many default to case insensitive searching but case sensitive
	searching is occasionally more useful); {operating systems}
	({MS-DOS} filenames are case insensitive, {Unix} filenames are
	case sensitive); 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).

	(13 Jan 1996)

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 {coercion}s 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

	What a {guru} does when you ask him or her to run a particular
	program and type at it 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.

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)

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

	A category K is a collection of objects, obj(K), and a
	collection of {morphism}s (or "{arrow}s"), 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 {set}s 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.

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)

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

	(23 Mar 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}

CDA

	1. <file format> {Compound Document Architecture}.

	2. <law> {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}

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 Européen pour la Normalisation.

	A body coordinating {standard}isation activities in the EEC
	and EFTA countries.

	(14 Dec 1994)

CENELEC

	CEN-electricite.

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

	A {C} {prototype} extractor byAdam Bryant <adb@cs.bu.edu>.  It
	can generate {header file}s for large multi-file C programs,
	and will provide an automated method for generating all of the
	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}

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/ 1. The perforated edge strips on
	printer paper, after they have been separated from the printed
	portion.  Also called {selvage} and {perf}.

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

	(12 Feb 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 gray-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}.

	Oppose 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
	Göteborg.

	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 Göteborg, 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

	The basic unit of discussion on {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).

	(16 Feb 1995)

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

	/chan'l op/ (Or "chanop", "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.

	(30 Jan 1995)

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 perofrms
	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)

chanop

	/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)

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.

	While he did produce prototypes of portions of the Difference
	Engine, it was left to Georg and Edvard Schuetz to construct
	the first working devices to the same design which were
	successful in limited applications.

	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

	{talk}

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

	[Is a checksum the same as a CRC?]

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

chiclet keyboard

	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 products got launched using
	them.  Customers rejected the idea with almost equal
	unanimity, and chiclets are not often seen on anything larger
	than a digital watch any more.

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

	/chop/ [IRC]  See {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

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

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

	Courant Institute of Mathematical Sciences PL/I.  A PL/I
	subset.

	["CIMS PL/I", P.W. Abrahams, Courant Inst].

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.

	Oppose {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. {Commercial Internet Exchange}.

	2. {Compulink Information eXchange}.

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 variables which
	represent the state of an object of that class and the
	behaviour is given by a set of {method}s associated with the
	class.

	Classes are related in a {class hierarchy}.  One class may be
	a specialisation (a "{subclass}") of another (one of its
	"{superclass}es") 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

	A set of {class}es and their interrelationships.

	One class may be a specialisation (a "{subclass}" or "{derived
	class}") of another which is one of its "{superclass}es" or
	{base class}es.

	(07 Feb 1995)

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 {module}s 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 {MacOS}, {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

	A computer system or process that requests a service of
	another computer system or process (a "{server}").  For
	example, a {workstation} requesting the contents of a file
	from a {file server} is a client of the file server.

	See also {client-server}.

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

	(11 Jun 1996)

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