A# /A sharp/ A separable component of Version 2 of the {AXIOM*} computer algebra system. It provides a programming language with an {optimising compiler}, an {intermediate code} {interpreter}, and a library of data structures and mathematical {abstractions}. The compiler produces {stand-alone executable} programs, {object} libraries in {native} {operating system} formats, {portable} {bytecode} libraries, {C} and {Lisp} {source code}. The A# programming language has support for {object-oriented} and {functional programming} styles. Both types and functions are {first class} values that can be manipulated with a range of flexible and composable {primitives} and user programs. The A# language design places particular emphasis on compilation for efficient {machine code} and portability. Ports have been made to various 16, 32, and 64 bit architectures: {RS/6000}, {SPARC}, {DEC Alpha}, {i386}, {i286}, {Motorola 680x0}, {S 370}; several {operating systems}: {Linux}, {AIX}, {SunOS}, {HP/UX}, {Next}, {Mach} and other {Unix} systems, {OS/2}, {DOS}, {Microsoft Windows}, {VMS} and {CMS}; {C} compilers: {Xlc}, {gcc}, {Sun}, {Borland}, {Metaware} and {MIPS} C. (1995-02-07) A-0 (Or A0) A language for the {UNIVAC I} or II, using {three-address code} instructions for solving mathematical problems. A-0 was the first language for which a {compiler} was developed. It was produced by {Grace Hopper}'s team at {Remington Rand} in 1952. Later internal versions were A-1, A-2, A-3, AT-3. AT-3 was released as {MATH-MATIC}. ["The A-2 Compiler System", Rem Rand, 1955]. [Sammet 1969, p. 12]. (1995-12-03) a1 Address 1 code. An a1 code {interpreter}, by Matthew Newhook was used to test compiler output. It requires {gcc} 2.4.2 or higher and is portable to computers with {memory segment} protection. {(ftp://ftp.cs.mun.ca/pub/a1)}. (1994-07-19) A1 security {Orange Book} A20 handler {IBM PC} memory manager software providing {HMA}. {XMM}s usually provide this functionality. Named after the 21st address line (A20), controlling the access to HMA. (1996-01-10) A-3 {ARITH-MATIC} A3D (Aureal 3-Dimensional?) A technology developed by {Aureal} that delivers sound with a three-dimensional effect through two speakers. Many modern {sound cards} and PC games now support this feature. A3D differs from the various forms of {surround sound} in that it only requires two speakers, while surround sound typically requires four or five. It is sometimes less convincing than surround sound but is supposedly better in {interactive} environments. For example, PC games in which sounds often move from one speaker to another favour A3D, while pre-recorded video favours surround sound. {(http://a3d.com/)}. (1999-01-26) A4C Authentication, Authorization, Accounting, Auditing and Charging. (2007-06-01) a56 An {assembler} for the {Motorola} {DSP56000} and {DSP56001} {digital signal processors} by Quinn Jensen . Version 1.1 is available from an {alt.sources} archive or {(ftp://wuarchive.wustl.edu/)}. (1992-08-10) AAC {Advanced Audio Coding} AADL {Axiomatic Architecture Description Language} AAL {ATM Adaptation Layer} AAP {Association of American Publishers} AAP DTD A {DTD} for a standard {SGML} document type for scientific documents, defined by the {Association of American Publishers}. (1994-11-08) aard (Dutch for "earth") A tool to check memory use for {C++} programs, written by Steve Reiss (who names his programs after living systems). Aard tracks the state of each byte of memory in the {heap} and the {stack}. The state can be one of Undefined, Uninitialised, Free or Set. The program can detect invalid transitions (i.e. attempting to set or use undefined or free storage or attempting to access uninitialised storage). In addition, the program keeps track of heap use through {malloc} and {free} and at the end of the run reports memory blocks that were not freed and that are not accessible (i.e. {memory leaks}). The tools works using a spliced-in {shared library} on {SPARCs} running {C++} 3.0.1 under {SunOS} 4.X. {(ftp://wilma.cs.brown.edu/pub/aard.tar.Z)}. (1998-03-03) AARP {Apple Address Resolution Protocol} AARP probe packets {AARP} {packets} sent out on a nonextended {AppleTalk} network to discover whether a randomly selected node ID is being used by any node. If not, the sending node uses the node ID. If so, it chooses a different ID and sends more AARP probe packets. (1997-05-03) AAUI {Apple Attachment Unit Interface} A&B A {bit signaling procedure} used in most {T1} transmission facilities where one bit from every sixth frame of each of 24 T1 {subchannels} is used for carrying {supervisory signaling}. [What does it stand for? Is this the same as "{bit robbing}"?] (1997-05-05) abbrev /*-breev'/, /*-brev'/ Common abbreviation for "abbreviation". (1995-02-27) Abbreviated Test Language for Avionics Systems (ATLAS) A Mil-spec language for automatic testing of avionics equipment. ATLAS replaced {Gaelic} and several other test languages. ["IEEE Standard ATLAS Test Language", IEEE Std 416-1976]. (2000-04-03) ABC 1. {Atanasoff-Berry Computer}. 2. An {imperative language} and programming environment from {CWI}, Netherlands. It is interactive, structured, high-level, and easy to learn and use. It is a general-purpose language which you might use instead of {BASIC}, {Pascal} or {AWK}. It is not a systems-programming language but is good for teaching or prototyping. ABC has only five data types that can easily be combined; {strong typing}, yet without declarations; data limited only by memory; refinements to support top-down programming; nesting by indentation. Programs are typically around a quarter the size of the equivalent {Pascal} or {C} program, and more readable. ABC includes a programming environment with {syntax-directed} editing, {suggestions}, {persistent variables} and multiple workspaces and {infinite precision} arithmetic. An example function words to collect the set of all words in a document: HOW TO RETURN words document: PUT {} IN collection FOR line in document: FOR word IN split line: IF word not.in collection: INSERT word IN collection RETURN collection {Interpreter}/{compiler}, version 1.04.01, by Leo Geurts, Lambert Meertens, Steven Pemberton . ABC has been ported to {Unix}, {MS-DOS}, {Atari}, {Macintosh}. {(http://cwi.nl/cwi/projects/abc.html)}. {FTP eu.net (ftp://ftp.eu.net/programming/languages/abc)}, {FTP nluug.nl (ftp://ftp.nluug.nl/programming/languages/abc)}, {FTP uunet (ftp://ftp.uu.net/languages/abc)}. Mailing list: . E-mail: . ["The ABC Programmer's Handbook" by Leo Geurts, Lambert Meertens and Steven Pemberton, published by Prentice-Hall (ISBN 0-13-000027-2)]. ["An Alternative Simple Language and Environment for PCs" by Steven Pemberton, IEEE Software, Vol. 4, No. 1, January 1987, pp. 56-64.] (1995-02-09) 2. Argument, Basic value, C?. An {abstract machine} for implementation of {functional languages} and its intermediate code. [P. Koopman, "Functional Programs as Executable Specifications", 1990]. (1995-02-09) ABC ALGOL An extension of {ALGOL 60} with arbitrary data structures and user-defined operators, for {symbolic mathematics}. ["ABC ALGOL, A Portable Language for Formula Manipulation Systems", R.P. van de Riet, Amsterdam Math Centrum 1973]. (1994-10-28) ABCL/1 An Object-Based Concurrent Language. The language for the {ABCL} {MIMD} system, written by Akinori Yonezawa of Department of Information Science, {Tokyo University} in 1986. ABCL/1 uses {asynchronous} {message passing} to {objects}. It requires {Common Lisp}. Implementations in {KCL} and {Symbolics Lisp} are available from the author. {(ftp://camille.is.s.u-tokyo.ac.jp/)}. E-mail: . ["ABCL: An Object-Oriented Concurrent System", A. Yonezawa ed, MIT Press 1990]. (1990-05-23). (1995-02-09) ABCL/c+ A {concurrent} {object-oriented} language, an extension of {ABCL/1} based on {C}. ["An Implementation of An Operating System Kernel using Concurrent Object Oriented Language ABCL/c+", N. Doi et al in ECOOP '88, S. Gjessing et al eds, LNCS 322, Springer 1988]. (1994-11-08) ABCL/R A {reflective} subset of {ABCL/1}, written in ABCL/1 by Yonezawa of {Tokyo Institute of Technology} in 1988. {(ftp://camille.is.s.u-tokyo.ac.jp/pub/abclr)}. ["Reflection in an Object-Oriented Concurrent Language", T. Watanabe et al, SIGPLAN Notices 23(11):306-315 (Nov 1988)]. (1994-11-08) ABCL/R2 An {object-oriented}, {concurrent}, {reflective} language based on {Hybrid Group Architecture}. ABCL/R2 was produced by , , , , at the {Tokyo Institute of Technology} in 1992. As a reflective language, an ABCL/R2 program can dynamically control its own behaviour, such as {scheduling} policy, from within a user-program. This system has almost all functions of {ABCL/1} and is written in {Common Lisp}. {(ftp://camille.is.s.u-tokyo.ac.jp/pub/abclr2/)}. (1993-01-28) abduction The process of {inference} to the best explanation. "Abduction" is sometimes used to mean just the generation of hypotheses to explain observations or conclusionsm, but the former definition is more common both in philosophy and computing. The {semantics} and the implementation of abduction cannot be reduced to those for {deduction}, as explanation cannot be reduced to implication. Applications include fault diagnosis, plan formation and {default reasoning}. {Negation as failure} in {logic programming} can both be given an abductive interpretation and also can be used to implement abduction. The abductive semantics of negation as failure leads naturally to an {argumentation}-theoretic interpretation of default reasoning in general. [Better explanation? Example?] ["Abductive Inference", John R. Josephson ]. (2000-12-07) ABEND /o'bend/, /*-bend'/ ABnormal END. Abnormal termination (of {software}); {crash}; {lossage}. Derives from an error message on the {IBM 360}; used jokingly by hackers but seriously mainly by {code grinders}. Usually capitalised, but may appear as "abend". Hackers will try to persuade you that ABEND is called "abend" because it is what system operators do to the computer late on Friday when they want to call it a day, and hence is from the German "Abend" = "Evening". [{Jargon File}] (1994-11-08) AberMUD The first popular {open source} {MUD}. The first version of AberMUD, named after Aberystwyth, UK, was written in {B} by Alan Cox, Richard Acott, Jim Finnis, and Leon Thrane, at University of Wales, Aberystwyth for an old {Honeywell} {mainframe} and opened in 1987. The gameplay was heavily influenced by {MUD1}, written by Roy Trubshaw and Richard Bartle, which Alan Cox had played at the University of Essex. In late 1988, Alan Cox ported AberMUD to {C} so it could run under {UNIX} on Southampton University's Maths machines. This version was named AberMUD2. Various other versions followed. (2008-11-24) ABI {Application Binary Interface} ABLE A simple language for accountants. ["ABLE, The Accounting Language, Programming and Reference Manual," Evansville Data Proc Center, Evansville, IN, Mar 1975]. [Listed in SIGPLAN Notices 13(11):56 (Nov 1978)]. (1994-11-08) ABM {Asynchronous Balanced Mode} ABNF {Augmented Backus-Naur Form} abort To terminate a program or {process} abnormally and usually suddenly, with or without {diagnostic} information. "My program aborted", "I aborted the transmission". The noun form in computing is "abort", not "abortion", e.g. "We've had three aborts over the last two days". If a {Unix} {kernel} aborts it is known as a {panic}. (1997-01-07) ABP 1. {Alternating bit protocol}. 2. {Microsoft} {Address Book Provider}. ABR {automatic baud rate detection} abscissa The horizontal or x coordinate on an (x, y) graph; the input of a function against which the output is plotted. The vertical or y coordinate is the "{ordinate}". See {Cartesian coordinates}. (1997-07-08) ABSET An early {declarative language} from the {University of Aberdeen}. ["ABSET: A Programming Language Based on Sets", E.W. Elcock et al, Mach Intell 4, Edinburgh U Press, 1969, pp.467-492]. (1994-11-08) absolute path A {path} relative to the {root directory}. Its first character must be the {pathname separator}. (1996-11-21) absolute pathname A {pathname} relative to the {root directory}. (1996-11-21) abstract A description of a concept that leaves out some information or details in order to simplify it in some useful way. Abstraction is a powerful technique that is applied in many areas of computing and elsewhere. For example: {abstract class}, {data abstraction}, {abstract interpretation}, {abstract syntax}, {Hardware Abstraction Layer}. (2009-12-09) abstract class In {object-oriented programming}, a {class} designed only as a parent from which sub-classes may be derived, but which is not itself suitable for instantiation. Often used to "abstract out" incomplete sets of features which may then be shared by a group of sibling sub-classes which add different variations of the missing pieces. (1994-11-08) abstract data type (ADT) A kind of {data abstraction} where a type's internal form is hidden behind a set of {access functions}. Values of the type are created and inspected only by calls to the access functions. This allows the implementation of the type to be changed without requiring any changes outside the {module} in which it is defined. {Objects} and ADTs are both forms of data abstraction, but objects are not ADTs. Objects use procedural abstraction (methods), not type abstraction. A classic example of an ADT is a {stack} data type for which functions might be provided to create an empty stack, to {push} values onto a stack and to {pop} values from a stack. {Reynolds paper (http://cis.upenn.edu/~gunter/publications/documents/taoop94.html)}. {Cook paper "OOP vs ADTs" (http://wcook.org/papers/OOPvsADT/CookOOPvsADT90.pdf)}. (2003-07-03) abstract interpretation A partial execution of a program which gains information about its {semantics} (e.g. control structure, flow of information) without performing all the calculations. Abstract interpretation is typically used by compilers to analyse programs in order to decide whether certain optimisations or transformations are applicable. The objects manipulated by the program (typically values and functions) are represented by points in some {domain}. Each abstract domain point represents some set of real ("{concrete}") values. For example, we may take the abstract points "+", "0" and "-" to represent positive, zero and negative numbers and then define an abstract version of the multiplication operator, *#, which operates on abstract values: *# | + 0 - ---|------ + | + 0 - 0 | 0 0 0 - | - 0 + An interpretation is "safe" if the result of the abstract operation is a safe approximation to the abstraction of the concrete result. The meaning of "a safe approximation" depends on how we are using the results of the analysis. If, in our example, we assume that smaller values are safer then the "safety condition" for our interpretation (#) is a# *# b# <= (a * b)# where a# is the abstract version of a etc. In general an interpretation is characterised by the {domains} used to represent the basic types and the abstract values it assigns to constants (where the constants of a language include primitive functions such as *). The interpretation of constructed types (such as user defined functions, {sum types} and {product types}) and expressions can be derived systematically from these basic domains and values. A common use of {abstract interpretation} is {strictness analysis}. See also {standard interpretation}. (1994-11-08) abstraction 1. Generalisation; ignoring or hiding details to capture some kind of commonality between different instances. Examples are {abstract data types} (the representation details are hidden), {abstract syntax} (the details of the {concrete syntax} are ignored), {abstract interpretation} (details are ignored to analyse specific properties). 2. Parameterisation, making something a function of something else. Examples are {lambda abstractions} (making a term into a function of some variable), {higher-order functions} (parameters are functions), {bracket abstraction} (making a term into a function of a variable). Opposite of {concretisation}. (1998-06-04) abstract machine 1. A processor design which is not intended to be implemented as {hardware}, but which is the notional executor of a particular {intermediate language} (abstract machine language) used in a {compiler} or {interpreter}. An abstract machine has an {instruction set}, a {register set} and a model of memory. It may provide instructions which are closer to the language being compiled than any physical computer or it may be used to make the language implementation easier to {port} to other {platforms}. A {virtual machine} is an abstract machine for which an {interpreter} exists. Examples: {ABC}, {Abstract Machine Notation}, {ALF}, {CAML}, {F-code}, {FP/M}, {Hermes}, {LOWL}, {Christmas}, {SDL}, {S-K reduction machine}, {SECD}, {Tbl}, {Tcode}, {TL0}, {WAM}. 2. A procedure for executing a set of instructions in some formal language, possibly also taking in input data and producing output. Such abstract machines are not intended to be constructed as {hardware} but are used in thought experiments about {computability}. Examples: {Finite State Machine}, {Turing Machine}. (1995-03-13) Abstract Machine Notation (AMN) A language for specifying {abstract machines} in the {B-Method}, based on the mathematical theory of {Generalised Substitutions}. (1995-03-13) abstract syntax A form of representation of data that is independent of machine-oriented structures and encodings and also of the physical representation of the data. Abstract syntax is used to give a high-level description of programs being compiled or messages passing over a communications link. A {compiler}'s internal representation of a program will typically be an {abstract syntax tree}. The abstract syntax specifies the tree's structure is specified in terms of categories such as "statement", "expression" and "{identifier}". This is independent of the source syntax ({concrete syntax}) of the language being compiled (though it will often be very similar). A {parse tree} is similar to an abstract syntax tree but it will typically also contain features such as parentheses which are syntactically significant but which are implicit in the structure of the {abstract syntax tree}. (1998-05-26) Abstract Syntax Notation 1 (ASN.1, X.208, X.680) An {ISO}/{ITU-T} {standard} for transmitting structured {data} on {networks}, originally defined in 1984 as part of {CCITT X.409} '84. ASN.1 moved to its own standard, X.208, in 1988 due to wide applicability. The substantially revised 1995 version is covered by the X.680 series. ASN.1 defines the {abstract syntax} of {information} but does not restrict the way the information is encoded. Various ASN.1 encoding rules provide the {transfer syntax} (a {concrete} representation) of the data values whose {abstract syntax} is described in ASN.1. The standard ASN.1 encoding rules include {BER} (Basic Encoding Rules - X.209), {CER} (Canonical Encoding Rules), {DER} (Distinguished Encoding Rules) and {PER} (Packed Encoding Rules). ASN.1 together with specific ASN.1 encoding rules facilitates the exchange of structured data especially between {application programs} over networks by describing data structures in a way that is independent of machine architecture and implementation language. {OSI} {Application layer} {protocols} such as {X.400} {MHS} {electronic mail}, {X.500} directory services and {SNMP} use ASN.1 to describe the {PDU}s they exchange. Documents describing the ASN.1 notations: {ITU-T} Rec. X.680, {ISO} 8824-1; {ITU-T} Rec. X.681, {ISO} 8824-2; {ITU-T} Rec. X.682, {ISO} 8824-3; {ITU-T} Rec. X.683, {ISO} 8824-4 Documents describing the ASN.1 encoding rules: {ITU-T} Rec. X.690, {ISO} 8825-1; {ITU-T} Rec. X.691, {ISO} 8825-2. [M. Sample et al, "Implementing Efficient Encoders and Decoders for Network Data Representations", IEEE Infocom 93 Proc, v.3, pp. 1143-1153, Mar 1993. Available from Logica, UK]. See also {snacc}. (2005-07-03) abstract syntax tree (AST) A data structure representing something which has been parsed, often used as a {compiler} or {interpreter}'s internal representation of a program while it is being optimised and from which {code generation} is performed. The range of all possible such structures is described by the {abstract syntax}. (1994-11-08) Abstract-Type and Scheme-Definition Language (ASDL) A language developed as part of {Esprit} project {GRASPIN}, as a basis for generating {language-based editors} and environments. It combines an {object-oriented} type system, syntax-directed translation schemes and a target-language interface. ["ASDL - An Object-Oriented Specification Language for Syntax-Directed Environments", M.L. Christ-Neumann et al, European Software Eng Conf, Strasbourg, Sept 1987, pp.77-85]. (1996-02-19) Abstract Windowing Toolkit {Abstract Window Toolkit} Abstract Window Toolkit (AWT) {Java}'s {platform}-independent {windowing}, graphics, and user-interface {toolkit}. The AWT is part of the {Java Foundation Classes} (JFC) - the standard {API} for providing a {graphical user interface} (GUI) for a Java program. Compare: {SWING}. ["Java in a Nutshell", O'Reilly]. {(http://java.sun.com/products/jdk/awt/)}. (2000-07-26) ABSYS An early {declarative language} from the {University of Aberdeen} which anticipated a number of features of Prolog. ["ABSYS: An Incremental Compiler for Assertions", J.M. Foster et al, Mach Intell 4, Edinburgh U Press, 1969, pp. 423-429]. (1994-11-08) AC2