unit1 principle of programming language

47
PRINCIPLES OF PROGRAMMING LANGUAGES UNIT 1 By- Garima Jain

Upload: garima

Post on 07-May-2015

10.497 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Unit1 principle of programming language

PRINCIPLES OF PROGRAMMING LANGUAGES

UNIT 1

By-Garima Jain

Page 2: Unit1 principle of programming language

Presentation Outline

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

Page 3: Unit1 principle of programming language

Programming Languages

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

Page 4: Unit1 principle of programming language

Why study programming languages

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

Page 5: Unit1 principle of programming language

History

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.

Page 6: Unit1 principle of programming language

History

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.

Page 7: Unit1 principle of programming language

Language development

Numerically based languages

Computing mathematical expressions

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

 

Business languages

COBOL (Common Business Oriented Language) English-like notation

Page 8: Unit1 principle of programming language

Language development

 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

Page 9: Unit1 principle of programming language

Software architectures Mainframe era

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

Page 10: Unit1 principle of programming language

Software architectures Personal computers

  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

Page 11: Unit1 principle of programming language

Software architectures Networking era

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

Page 12: Unit1 principle of programming language

Attributes of a good language 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.

Page 13: Unit1 principle of programming language

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

Page 14: Unit1 principle of programming language

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

Page 15: Unit1 principle of programming language

Computer Architecture

•Well-known computer architecture: Von Neumann• Imperative languages, most dominant, because ofvon 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

Page 16: Unit1 principle of programming language

The von Neumann Architecture

Page 17: Unit1 principle of programming language

Virtual Computers Hardware realization

Physical devices Firmware realization

microprogramming Software simulation

Some other programming language Combination of these techniques

Page 18: Unit1 principle of programming language

Major Components of a Computer

Data Various kinds of elementary and structured data.

Primitive operations Sequence control

Controlling the sequence of primitive operations execution.

Page 19: Unit1 principle of programming language

Major Components of a Computer

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.

Page 20: Unit1 principle of programming language

Data Main memory High-speed register High-speed cache memory External files

Data and Program

Page 21: Unit1 principle of programming language

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

Page 22: Unit1 principle of programming language

Sequence 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

Page 23: Unit1 principle of programming language

Data Access Access to operands of the operation

Page 24: Unit1 principle of programming language

Storage Management Keeping all resources of the computer operating as

much as possible Memory Central processor External data devices

MultiprogrammingCache memory

Page 25: Unit1 principle of programming language

Operating Environment The outside world of computer; a set of peripherals

and input-output devices

Page 26: Unit1 principle of programming language

Language Paradigms

Imperative / procedural languages

Applicative / functional languages

Rule-based / declarative languages

Object-oriented languages

Page 27: Unit1 principle of programming language

Imperative / procedural 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

Page 28: Unit1 principle of programming language

Applicative / functional languages

Programming consists of building the function that computes the answer

Computation: Function composition is major operation (ML, LISP)

Syntax: P1(P2(P3(X)))

Page 29: Unit1 principle of programming language

Rule-based / declarative languages

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

Page 30: Unit1 principle of programming language

Object-oriented languages

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)

Page 31: Unit1 principle of programming language

Language Translation issues

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

Page 32: Unit1 principle of programming language

Syntax

The syntax of a programming language describes the

structure of programs without any consideration of

their meaning.

Page 33: Unit1 principle of programming language

Key criteria concerning syntax

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

Page 34: Unit1 principle of programming language

Basic Syntactic Concepts

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

Page 35: Unit1 principle of programming language

Basic Syntactic Concepts

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

Page 36: Unit1 principle of programming language

Basic Syntactic Concepts

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

Page 37: Unit1 principle of programming language

Overall Program-Subprogram Structure

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

Page 38: Unit1 principle of programming language

Overall Program-Subprogram Structure

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

Page 39: Unit1 principle of programming language

Stages in Translation

Analysis of the source program

Synthesis of the object program

Bootstrapping

Page 40: Unit1 principle of programming language

Analysis of the source program

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", ), ;, }

Page 41: Unit1 principle of programming language

Syntactic and Semantic Analysis

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.

Page 42: Unit1 principle of programming language

Basic Semantic Tasks

The semantic analysis builds the bridge between analysis and synthesis.

Basic semantic tasks:

• Symbol–table maintenance• Insertion of implicit information• Error detection• Macro processing

Result : an internal representation, suitable to be used for code optimization and code generation.

Page 43: Unit1 principle of programming language

Synthesis of the object program

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.

Page 44: Unit1 principle of programming language

Optimization example

Intermediate code:

Temp1 = B + C

Temp2 = Temp1 + D

A = Temp2

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 AStatements in yellow can be removed

Page 45: Unit1 principle of programming language

Bootstrapping

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.

Page 46: Unit1 principle of programming language

Syntax 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 V[10];

Page 47: Unit1 principle of programming language

THANK YOU.. !!