Title: Programming Languages
1Programming Languages
22. Language Design Issues
- Design to
- Run efficiently early languages
- Easy to write correctly new languages
- Data typing features in ML
- Class of C
- Package of Ada
3Major influences on designing a language
- The underlying computer which programs execute
upon - The execution model, or virtual computer that
supports the language on the actual hardware - The computational model that the language
implements.
42.1. The Structure And Operation Of A Computer
- A computer is an integrated set of algorithms and
data structures capable of storing and executing
programs. - Hardware computer or
- virtual computer
5 Major Components of a Computer (From a
Programming Language Designers View)
- Data
- Various kinds of elementary and structured data.
- Primitive operations
- Sequence control
- Controlling the sequence of primitive operations
execution.
6 Major Components of a Computer (From a
Programming Language Designers View)
- Data access
- Controlling the data supplied to each execution
of an operation. - Storage management
- Controlling the allocation of storage for
programs and data. - Operating environment
- Providing mechanisms for communication with an
external environment containing programs and data.
7Data
- Main memory
- High-speed register
- High-speed cache memory
- External files
- Data and Program
8operations
- A set of build-in primitive operations
- Arithmetic operations on each built-in numeric
data (,-,,/) - Testing various properties of data items (test
for zero, positive, and negative numbers) - Accessing and modifying various parts of a data
item - Controlling input-output devices
- Sequence control (jumps)
9Sequence Control
- There is an interpreter
- Fetch the instruction
- Decode instruction
- Fetch designated operands
- Branch to designated operation
- Execute primitive operations 1 to n
- Using an address register
10Data Access
- Access to operands of the operation
11Storage Management
- Keeping all resources of the computer operating
as much as possible - Memory
- Central processor
- External data devices
- Multiprogramming
- Cache memory
12Operating Environment
- The outside world of computer
- a set of peripherals and input-output devices
13Computer States
- We saw the static organization of the
computer, - We also must see the dynamic operation of it
during program execution.
14Language Implementation
- Translation (compilation)
- Accept programs in some source language
- as input and produce functionally equivalent
programs in another object language as output. - Assembler assembly to machine language.
- Compiler a high level language to assembly or
machine code. - Loader,linker editor machine code in
relocatable form to machine code really
executable. - Preprocessor a high level language to a high
level language in a standard form .
15Language Implementation
- Software simulation (interpretation)
- the simulator executes the input program
directly.
16Differences Between Software Implementations
- Translation versus Interpretation
- Physical input sequence
- Logical flow of control
- Process each program statement exactly once
- might process some statements repeatedly
17Differences Between Software Implementations
- Faster program execution
- slow program execution
- Loss of information about program
- leaving statements in their original form
- Object program much larger then the source
program - no space is needed for object program
18Firmware Computers
- A common alternative to the strict hardware
realization of a computer is the firmware
computer, - simulated by a micro-program running on a
special micro-programmable hardware computer. - (emulation)
19 2.2. Virtual Computers
- Hardware realization
- Physical devices
- Firmware realization
- microprogramming
- Software simulation
- Some other programming language
- Combination of these techniques
20Syntax and Semantics
- Syntax what the program looks like.
- Semantics the meaning given to the various
syntactic constructs. -
- Example
- V array 0..9 of integer
- int V10
21Hierarchies of Computers
Virtual computer developed by programmer
The language virtual computer
Operating system virtual computer
Firmware virtual computer
Actual hardware computer
22Binding and Binding Times
- Binding of a program element to a particular
characteristic or property the choice of the
property from a set of possible properties. - Binding time of the property for that element
the time during program formulation or processing
when this choice is made.
23Examples Of Binding
- Setting the value of an attribute
- A variable name , type, storage area
- A routine name formal parameters of a certain
type, certain parameter-passing conventions, - A statement associated actions.
-
24Classes of Binding Times
- 1. Execution time (run time)
- (dynamic binding)
- 2. Translation time (compile time)
- 3. Language implementation time
- 4. Language definition time
25- 1. Execution time
- On entry to subprogram or block.
- Binding of formal to actual parameters in C.
- At arbitrary points during execution .
- Binding of variables to values by assignments.
- (can be modified repeatedly during execution)
26- 2. Translation time (compile time)
- Bindings chosen by the programmer
- Variable names and types
- Bindings chosen by the translator
- Relative locations of a data object in the
storage allocated for a procedure - Bindings chosen by the loader
- Actual addresses
27 - 3. Language implementation time
- The details associated with the representation of
numbers and of arithmetic operations. - (integer type memory representation)
- 4. Language definition time
- Possible statement forms, data structure types,
program structures. - (integer type definition)
28- Programming languages differ in
- The number of entities with which they can deal,
- The number of attributes to be bound to
attributes, - The time at which such bindings occur (binding
time), - The stability of the binding (fixed or modifiable)
29Importance of Binding Times
- Many of the most important differences among
languages involve differences in binding times. - Early binding efficiency.
- (FORTRAN types, arithmetic operations)
- Late binding flexibility.
- (ML types, string manipulations)
30Binding Time An Example
- X X 10
- Set of possible types for variable X.
- Type of variable X.
- Set of possible values for variable X.
- Value of the variable.
- Representation of the constant 10.
- Properties of the operator .
31- Attributes of a variable
- Name
- Scope
- Type
- L-value
- R-value
32Name and Scope
- Static scope binding defines the scope in terms
of the lexical structure of a program . (C,
Pascal) - Dynamic scope binding defines the scope of a
variables name in term of program execution.
(same dcl until new dcl) - (APL, LISP, SNOBOL)
33Name and Scope (dynamic binding)
- / block A/
- int x
-
- / block B/
- int x
-
- / block C/
-
- x
-
34Type
- Static typing bind variables to their type at
compile time, and the binding can not be changed
during execution. Static type checking - Dynamic typing run-time binding between
variables and their types.
(according to the value assigned)
352.3. Language Paradigms
- How does the program execute?
- What sort of constructs does the language
provide?
36- Four basic computational models
- Imperative languages
- Applicative language
- Rule-based language
- Object-oriented programming
37Imperative Languages
- Imperative or procedural languages are
command-driven or statement-oriented languages. - Basic concept machine state.
- The syntax has the form like
- statement1
- statement2
-
38Applicative Languages
- Applicative or functional languages look at the
function that program represents rather than just
to the state changes as the program executes,
statement by statement. - The syntax has the form like
- functionn(function2(function1 (data)))
39Rule-based Languages
- Rule-based or logical languages execute by
checking for the presence of a certain condition
and when it is satisfied, they execute an
appropriate action. - The syntax has the form like
- enabling condition1 action1
- enabling condition2 action2
-
- enabling conditionn actionn
-
40Object-Oriented Languages
- Object-oriented languages can be viewed as
combining imperative and functional paradigms. - Abstract data types
- inheritance
-
- efficiency of imperative languages
- flexibility and reliability of functional
languages. -
41Generality of Computational Model
- How one uses a programming language depends on
the programmer.