Вы находитесь на странице: 1из 47
UNIT 1 By- Garima Jain

UNIT 1

By-

Garima Jain

 Programming Language: Definition, History ,Feature  Issues in Language Design  Structure and Operation

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

Definition : A notation of a algorithm and data structures are called a programming language.

 To improve  algorithms To languages improve your your ability use of to develop

To

improve

algorithms

To

languages

improve

your

your

ability

use

of

to

develop

effective

existing

programming

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,

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.

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

Numerically based languages

Computing mathematical expressions

FORTRAN, Algol, Pascal, PL/1, BASIC, C, C++

Business languages

COBOL

English-like notation

(Common

Business

Oriented

Language)

Artificial intelligence languages Tree search; Rule-based paradigm LISP (LISt Processing) PROLOG (PROgramming in LOGic)

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

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

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 

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 :

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

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

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

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

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. 

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

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

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

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

Access to operands of the operation

 Keeping all resources of the computer operating as much as possible  Memory 

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

The outside world of computer; a set of peripherals

and input-output devices

 Imperative / procedural languages  Applicative / functional languages  Rule-based / declarative languages

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

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

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.

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: (applicative

Imperative languages that merge applicative design with imperative statements (Java, C++, Smalltalk)

Syntax:

(applicative

(imperative

concepts)

data

Set

of

objects

(classes)

containing

concepts)

and

methods

 Programming language Syntax  Key criteria concerning syntax  Basic syntactic concepts  Overall

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

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

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. ASCII, Several EBCIDIC, Unicode different character

Character

set

The alphabet of the language.

ASCII,

Several

EBCIDIC, Unicode

different

character

sets

used:

are

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 –

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 

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

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

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

Analysis of the source program

Synthesis of the object program

Bootstrapping

Lexical analysis (scanning) – identifying the tokens of the programming language: keywords, identifiers, constants

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

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 variable 1 .

The semantic analysis builds the bridge between analysis and synthesis. Basic semantic tasks : •

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

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.

Intermediate code: Temp1 = B + C Temp2 = Temp1 + D A = Temp2

Intermediate code:

Temp1 = B + C Temp2 = Temp1 + D A = Temp2

Statements in yellow can be removed

Assembler code not optimized:

LOAD_R B

ADD_R C

STORE_R Temp1 LOAD_R Temp1

ADD_R D

STORE_R Temp2

LOAD_R Temp2 STORE_R A

The compiler for a given language can be written in the same language . •

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

Syntax: what the program looks like.

Semantics: the meaning given to the various

syntactic constructs.

Example:

V: array [0 int V[10];

9]

of integer;