- types of data allowed
- types of operations available
- mechanisms for controlling the sequence of operations
Structured data types: software simulated
- Data objects, variables, and constants 1. 1. Data object:
- Programmer defined data objects - variables, arrays, constants, files, etc.
- System defined data objects - set up for housekeeping during program execution, not directly accessible by the program. E.g. run-time storage stacks.
- Type: determines the set of data values that the object may take and the applicable operations.
- Name: the binding of a name to a data object.
- Component: the binding of a data object to one or more data objects.
- Location: the storage location in memory assigned by the system.
- Value: the assignment of a bit pattern to a name.
- Literals: constants whose name is the written representation of their value.
- A programmer-defined constant: the name is chosen by the programmer in a definition of the data object.
- Data types A data type is a class of data objects with a set of operations for creating and manipulating them.
- Attributes that distinguish data objects of that type Data type, name - invariant during the lifetime of the object
- stored in a descriptor and used during the program execution
- used only to determine the storage representation, not used explicitly during execution
- Values that data object of that type may have
- Operations that define the possible manipulations of data objects of that type.
- Domain - set of possible input arguments
- Range - set of possible results
- Action - how the result is produced
- the number, order, and data types of the arguments in the domain,
- the number, order, and data type of the resulting range
- Operations that are undefined for certain inputs.
- Implicit arguments, e.g. use of global variables
- Implicit results - the operation may modify its arguments
- Self-modification - usually through change of local data between calls,
i.e. random number generators change the seed. - Storage representation
- determined by the compiler and not stored in descriptors during execution - C
- stored in a descriptor as part of the data object at run time - LISP Prolog
- Implementation of operations
- Directly as a hardware operation. E.g. integer addition
- Subprogram/function, e.g. square root operation
- In-line code. Instead of using a subprogram, the code is copied into the program at the point where the subprogram would have been invoked.
- Declarations Declarations provide information about the name and type of data objects
- Explicit – programmer defined
- Implicit – system defined e.g. in FORTRAN - the first letter in the name of the variable determines the type
- Choice of storage representation
- Storage management
- Declaration determines the lifetime of a variable, and allowes for more efficient memory usage.
- Specifying polymorphic operations.
- Type checking and type conversion Type checking: checking that each operation executed by a program receives
- Difficult to debug
- Type information must be kept during execution
- Software implementation required as most hardware does not provide support
- No coercions, any type mismatch is considered an error : Pascal, Ada
- Coercions are the rule. Only if no conversion is possible, error is reported.
a run-time grouping of one or more pieces of data in a virtual computer.
a location in memory with an assigned name in the actual computer.
Data structure: a combination of data objects.
Attributes and Bindings
Variables: Data objects defined and named by the programmer explicitly.
Constants: a data object with a name that is permanently bound to a value for its lifetime.
integer, real, character, Boolean, enumeration, pointer.
Usually an ordered set, i.e. it has a least and a greatest value
Programmer-defined (as subprograms, or class methods)
Examples: in C, C++ int, short, long and char are variations of integers.
The operations available to the larger class are available to the subtype.
This can be implemented using inheritance.
2. 2. Implementation of a data type
Described in terms of:
Layout of attributes and data values within the block
needed during program execution.
Perl - the variable is declared by assigning a value
$abc = 7 $abc is an integer variable
Examples:Purpose of declarationdeclaration: float Sub(int, float)
signature: Sub: int x float --> float
In most language +, -. *, / are overloaded
Ada - aloows the programmer to overload subprograms
ML - full polymorphism
the proper number of arguments of the proper data types.
Static type checking is done at compilation.
Dynamic type checking is done at run-time.
Implemented by storing a type tag in each data objectAdvantages: Flexibility
Disadvantages:
Type inference: implicit data types, used if the interpretation is unambiguous. Used in ML
Type Conversion and Coercion
C - cast, e.g. (int)X for float X converts the value of X to type integer
Java - permits implicit coercions if the operation is widening
C++ - and explicit cast must be given.
as adding real numbers and integers.
Disadvantages: may hide serious programming errors.
No comments:
Post a Comment