Home > Electronics Tutorials > Online Computer Terms Dictionary > A

Online Computer Terms Dictionary - A

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
 

Discover

     more......