abstract class
<programming> In object-oriented programming, a class designed only as a
parent from which sub-classes may be derived, but which is not itself suitable
for instantiation. Often used to "abstract out" incomplete sets of features
which may then be shared by a group of sibling sub-classes which add different
variations of the missing pieces.
(1994-11-08)
Nearby terms:
ABSET « absolute path « absolute pathname «
abstract class » abstract data type » abstract
interpretation » abstraction
abstract data type
<programming> (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.
Cook paper "OOP vs ADTs".
(2003-07-03)
Nearby terms:
absolute path « absolute pathname « abstract class «
abstract data type » abstract interpretation »
abstraction » abstract machine
abstract interpretation
<theory> A partial execution of a program which gains information about
its semantics (e.g. control structure, flow of information) without performing
all the calculations. Abstract interpretation is typically used by compilers to
analyse programs in order to decide whether certain optimisations or
transformations are applicable.
The objects manipulated by the program (typically values and functions) are
represented by points in some domain. Each abstract domain point represents some
set of real ("concrete") values.
For example, we may take the abstract points "+", "0" and "-" to represent
positive, zero and negative numbers and then define an abstract version of the
multiplication operator, *#, which operates on abstract values:
*# | + 0 -
---|------
+ | + 0 -
0 | 0 0 0
- | - 0 +
An interpretation is "safe" if the result of the abstract operation is a
safe approximation to the abstraction of the
concrete result. The meaning of "a safe
approximation" depends on how we are using the
results of the analysis.
If, in our example, we assume that smaller values are safer then the "safety
condition" for our interpretation (#) is
a# *# b# <= (a * b)#
where a# is the abstract version of a etc.
In general an interpretation is characterised by the 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)
Nearby terms:
absolute pathname « abstract class « abstract data
type «
abstract interpretation » abstraction » abstract
machine » Abstract Machine Notation
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. <programming> 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)
Nearby terms:
abstract class « abstract data type « abstract
interpretation « abstraction » abstract
machine » Abstract Machine Notation » abstract
syntax
abstract machine
1. <language> A processor design which is not intended to be implemented
as hardware, but which is the notional executor of a particular intermediate
language (abstract machine language) used in a compiler or interpreter. An
abstract machine has an instruction set, a register set and a model of memory.
It may provide instructions which are closer to the language being compiled than
any physical computer or it may be used to make the language implementation
easier to port to other 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. <theory> A procedure for executing a set of instructions in some
formal language, possibly also taking in input data and producing output. Such
abstract machines are not intended to be constructed as hardware but are used in
thought experiments about computability.
Examples: Finite State Machine, Turing Machine.
(1995-03-13)
Nearby terms:
abstract data type « abstract interpretation «
abstraction «
abstract machine » Abstract Machine Notation »
abstract syntax » Abstract Syntax Notation 1
Abstract Machine Notation
<language> (AMN) A language for specifying abstract machines in the
B-Method, based on the mathematical theory of Generalised Substitutions.
(1995-03-13)
Nearby terms:
abstract interpretation « abstraction « abstract
machine «
Abstract Machine Notation » abstract syntax »
Abstract Syntax Notation 1 » abstract syntax tree
abstract syntax
<language, data> A representation of data (typically either a message
passing over a communications link or a program being compiled) which is
independent of machine-oriented structures and encodings and also of the
physical representation of the data (called "concrete syntax" in the case of
compilation or "transfer syntax" in communications).
A compiler's internal representation of a program will typically be specified by
an abstract syntax in terms of categories such as "statement", "expression" and
"identifier". 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)
Nearby terms:
abstraction « abstract machine « Abstract Machine
Notation «
abstract syntax » Abstract Syntax Notation 1 »
abstract syntax tree » Abstract-Type and
Scheme-Definition Language
Abstract Syntax Notation 1
<language, standard, protocol> (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 PDUs 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)
Nearby terms:
abstract machine « Abstract Machine Notation «
abstract syntax « Abstract Syntax Notation 1
» abstract syntax tree » Abstract-Type and
Scheme-Definition Language » Abstract Windowing
Toolkit
abstract syntax tree
<compiler> (AST) A data structure representing something which has been
parsed, often used as a compiler or interpreter's internal representation of a
program while it is being optimised and from which code generation is performed.
The range of all possible such structures is described by the abstract syntax.
(1994-11-08)
Nearby terms:
Abstract Machine Notation « abstract syntax «
Abstract Syntax Notation 1 « abstract syntax tree
» Abstract-Type and Scheme-Definition Language »
Abstract Windowing Toolkit » Abstract Window Toolkit
Abstract-Type and Scheme-Definition Language
<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)
Nearby terms:
abstract syntax « Abstract Syntax Notation 1 «
abstract syntax tree « Abstract-Type and
Scheme-Definition Language » Abstract Windowing
Toolkit » Abstract Window Toolkit » ABSYS
Abstract Windowing Toolkit
Abstract Window Toolkit
Nearby terms:
Abstract Syntax Notation 1 « abstract syntax tree «
Abstract-Type and Scheme-Definition Language «
Abstract Windowing Toolkit » Abstract Window
Toolkit » ABSYS » AC2
Abstract Window Toolkit
<graphics> (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].
Home.
(2000-07-26)
Nearby terms:
abstract syntax tree « Abstract-Type and
Scheme-Definition Language « Abstract Windowing
Toolkit « Abstract Window Toolkit » ABSYS »
AC2 » AC3
|