You are on page 1of 47

UNIT 1

By-
Garima Jain
Programming Language: Definition, History ,Feature
Issues in Language Design
Structure and Operation of Computer
Programming Language Paradigms
Efficiency, Regularity
Issues in Language Translation
Syntax and Semantics
Definition : A notation of a algorithm and data
structures are called a programming language.
To improve your ability to develop effective
algorithms
To improve your use of existing programming
languages
To increase your vocabulary of useful programming
constructs
To allow a better choice of programming language
To make it easier to learn a new language
To make it easier to design a new language
1951- 55: Experimental use of expression
compilers.
1956- 60: FORTRAN, COBOL, LISP, Algol 60.
1961- 65: APL notation, Algol 60 (revised),
SNOBOL, CPL.
1966- 70: APL, SNOBOL 4, FORTRAN 66,
BASIC, SIMULA, Algol 68, Algol-W, BCPL.
1971- 75: Pascal, PL/1 (Standard), C, Scheme,
Prolog.
1976- 80: Smalltalk, Ada, FORTRAN 77, ML.
1981- 85: Smalltalk-80, Prolog, Ada 83.
1986- 90: C++, SML, Haskell.
1991- 95: Ada 95, TCL, Perl.
1996- 2000: Java.
2000- 05: C#, Python, Ruby, Scala.
Numerically based languages
Computing mathematical expressions
FORTRAN, Algol, Pascal, PL/1, BASIC, C, C++

Business languages
COBOL (Common Business Oriented Language)
English-like notation
Artificial intelligence languages
Tree search; Rule-based paradigm
LISP (LISt Processing)
PROLOG (PROgramming in LOGic)
System languages
C, C++
Script languages: AWK, Perl, TCL/TK
Web programming: HTML, XML, Java,
Microsoft *.NET family
Batch processing (batches of files)
Interactive processing (time sharing)
Effects on language design
File I/O in batch processing
Error handling in batch processing
Time constraints in interactive processing
Interactive processing
Embedded system environments

Effects on language design


No need for time sharing
Good interactive graphics
Non-standard I/O devices for embedded systems
Client-server model of computing
Server: a program that provides information
Client - a program that requests information
Effects on language design
Interaction between the client and server programs
Active web pages, Security issues, Performance
Conceptual integrity
Orthogonality
Naturalness for the application
Support for abstraction
Ease of program verification
Programming environment
Portability of programs
Cost of use
Cost of execution.
Cost of program translation.
Cost of program creation, testing, and use.
Cost of program maintenance.
Design to
Run efficiently : early languages
Easy to write correctly : new languages
Data typing features in ML
Class of C++
Package of Ada
A computer is an integrated set of algorithms and
data structures capable of storing and executing
programs.
Hardware computer or
virtual computer
Well-known computer architecture: Von Neumann
Imperative languages, most dominant, because of
von Neumann computers
Data and programs stored in memory
Memory is separate from CPU
Instructions and data are piped from memory to
CPU
Basis for imperative languages
Variables model memory cells
Assignment statements model piping
Iteration is efficient
Hardware realization
Physical devices
Firmware realization
microprogramming
Software simulation
Some other programming language
Combination of these techniques
Data
Various kinds of elementary and structured data.
Primitive operations
Sequence control
Controlling the sequence of primitive operations
execution.
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.
Main memory
High-speed register
High-speed cache memory
External files

Data and Program


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)
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


Access to operands of the operation
Keeping all resources of the computer operating as
much as possible
Memory
Central processor
External data devices

Multiprogramming
Cache memory
The outside world of computer; a set of peripherals
and input-output devices
Imperative / procedural languages
Applicative / functional languages
Rule-based / declarative languages
Object-oriented languages
Statement oriented languages that change machine
state
(C, Pascal, FORTRAN, COBOL)
Computation: a sequence of machine states (contents
of memory)
Syntax: S1, S2, S3, ... where S1, S2, are statements
Programming consists of building the function that
computes the answer
Computation: Function composition is major
operation (ML, LISP)
Syntax: P1(P2(P3(X)))
Computation: Actions are specified by rules that
check for the presence of certain enabling conditions.
(Prolog)
The order of execution is determined by the enabling
conditions, not by the order of the statements.
Syntax: Condition Action
Imperative languages that merge applicative design
with imperative statements (Java, C++, Smalltalk)

Syntax: Set of objects (classes) containing data


(imperative concepts) and methods (applicative
concepts)
Programming language Syntax
Key criteria concerning syntax
Basic syntactic concepts
Overall Program-Subprogram structure
Stages in Translation
Analysis of the source program
Synthesis of the object program
Bootstrapping
The syntax of a programming language describes the
structure of programs without any consideration of
their meaning.
Readability a program is considered readable if the
algorithm and data are apparent by
inspection.
Write-ability ease of writing the program.
Verifiability ability to prove program
correctness (very difficult issue)
Translatability ease of translating the program
into executable form.
Lack of ambiguity the syntax should provide for
ease of avoiding ambiguous structures
Character set The alphabet of the language.
Several different character sets are used: ASCII,
EBCIDIC, Unicode
Identifiers strings of letters of digits usually
beginning with a letter
Operator Symbols +-*/
Keywords or Reserved Words used as a fixed part
of the syntax of a statement
Noise words optional words inserted into statements
to improve readability
Comments used to improve readability and for
documentation purposes. Comments are usually
enclosed by special markers
Blanks rules vary from language to language.
Usually only significant in literal strings
Delimiters used to denote the beginning and the
end of syntactic constructs
Expressions functions that access data objects in a
program and return a value
Statements these are the sentences of the language,
they describe a task to be performed
Separate subprogram definitions: Separate
compilation, linked at load time E.g. C/C++
Separate data definitions: General approach in
OOP.
Nested subprogram definitions: Subprogram
definitions appear as declarations within the main
program or other subprograms. E.g. Pascal
Separate interface definitions:
C/C++ header files
Data descriptions separated from executable
statements. A centralized data division contains all data
declarations. E.g. COBOL
Un-separated subprogram definitions: No syntactic
distinction between main program statements and
subprogram statements.
E.g. BASIC
Analysis of the source program

Synthesis of the object program

Bootstrapping
Lexical analysis (scanning) identifying the tokens of the
programming language: keywords, identifiers, constants
and other symbols

In the program
void main()
{ printf("Hello World\n"); }
the tokens are

void, main, (, ), {, printf, (, "Hello World\n", ), ;, }


Syntactic analysis (parsing) determining the structure
of the program, as defined by the language grammar.

Semantic analysis - assigning meaning to the syntactic


structures

Example: int variable1;

meaning: 4 bytes for variable1 , a specific set of


operations to be used with variable1.
The semantic analysis builds the bridge between analysis and
synthesis.

Basic semantic tasks:

Symboltable maintenance
Insertion of implicit information
Error detection
Macro processing

Result : an internal representation, suitable to be used for


code optimization and code generation.
Three main steps:

Optimization - Removing redundant statements

Code generation - generating assembler commands with


relative memory addresses for the separate program
modules - obtaining the object code of the program.

Linking and loading - resolving the addresses -


obtaining the executable code of the program.
Assembler code not optimized:
Intermediate code:
LOAD_R B
Temp1 = B + C
ADD_R C
Temp2 = Temp1 + D
STORE_R Temp1
A = Temp2
LOAD_R Temp1
ADD_R D
STORE_R Temp2
LOAD_R Temp2
STORE_R A
Statements in yellow
can be removed
The compiler for a given language can be written in
the same language.

A program that translates some internal representation


into assembler code.

The programmer manually re-writes the compiler into


the internal representation, using the algorithm that is
encoded into the compiler.

From there on the internal representation is translated into


assembler and then into machine language.
Syntax: what the program looks like.
Semantics: the meaning given to the various
syntactic constructs.

Example:
V: array [0..9] of integer;
int V[10];