Top Banner
PRINCIPLES OF Programming Languages UNIT 1 www.getmyuni.com
46

PRINCIPLES OF Programming Languages

Jan 31, 2023

Download

Documents

Khang Minh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PRINCIPLES OF Programming Languages

PRINCIPLES OF Programming Languages

UNIT 1

www.getmyuni.com

Page 2: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 3: PRINCIPLES OF Programming Languages

Programming Languages

•Definition : A notation of a algorithm and datastructures are called a programming language.

www.getmyuni.com

Page 4: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 5: PRINCIPLES OF Programming Languages

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.

www.getmyuni.com

Page 6: PRINCIPLES OF Programming Languages

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.

www.getmyuni.com

Page 7: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 8: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 9: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 10: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 11: PRINCIPLES OF Programming Languages

Software architectures

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

www.getmyuni.com

Page 12: PRINCIPLES OF Programming Languages

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.

www.getmyuni.com

Page 13: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 14: PRINCIPLES OF Programming Languages

The Structure And Operation Of A Computer

• A computer is an integrated set of algorithms and data structures capableof storing and executing programs.

•Hardware computer or

•virtual computer

www.getmyuni.com

Page 15: PRINCIPLES OF Programming Languages

Computer Architecture

•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

www.getmyuni.com

Page 16: PRINCIPLES OF Programming Languages

The von Neumann Architecturewww.getmyuni.com

Page 17: PRINCIPLES OF Programming Languages

Virtual Computers

• Hardware realization

•Physical devices

• Firmware realization

•microprogramming

• Software simulation

•Some other programming language

• Combination of these techniques

www.getmyuni.com

Page 18: PRINCIPLES OF Programming Languages

Major Components of a Computer

• Data

•Various kinds of elementary and structured data.

• Primitive operations

• Sequence control

•Controlling the sequence of primitive operationsexecution.

www.getmyuni.com

Page 19: PRINCIPLES OF Programming Languages

Major Components of a Computer

• Data access

•Controlling the data supplied to each execution ofan operation.

• Storage management

•Controlling the allocation of storage for programsand data.

• Operating environment

•Providing mechanisms for communication withan external environment containing programs anddata.

www.getmyuni.com

Page 20: PRINCIPLES OF Programming Languages

Data

• Main memory

• High-speed register

• High-speed cache memory

• External files

Data and Program

www.getmyuni.com

Page 21: PRINCIPLES OF Programming Languages

Operations

• A set of build-in primitive operations

•Arithmetic operations on each built-in numericdata (+,-,*,/)

•Testing various properties of data items (test forzero, positive, and negative numbers)

•Accessing and modifying various parts of a dataitem

•Controlling input-output devices

•Sequence control (jumps)

www.getmyuni.com

Page 22: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 23: PRINCIPLES OF Programming Languages

Data Access

• Access to operands of the operation

www.getmyuni.com

Page 24: PRINCIPLES OF Programming Languages

Storage Management

• Keeping all resources of the computer operating as much as possible

•Memory

•Central processor

•External data devices

Multiprogramming

Cache memory

www.getmyuni.com

Page 25: PRINCIPLES OF Programming Languages

Operating Environment

• The outside world of computer; a set of peripherals andinput-output devices

www.getmyuni.com

Page 26: PRINCIPLES OF Programming Languages

Language Paradigms

• Imperative / procedural languages

• Applicative / functional languages

• Rule-based / declarative languages

• Object-oriented languages

www.getmyuni.com

Page 27: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 28: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 29: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 30: PRINCIPLES OF Programming Languages

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)

www.getmyuni.com

Page 31: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 32: PRINCIPLES OF Programming Languages

Syntax

The syntax of a programming language describes the

structure of programs without any consideration of

their meaning.

www.getmyuni.com

Page 33: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 34: PRINCIPLES OF Programming Languages

Basic Syntactic Concepts

• Character set – The alphabet of the language. Several different charactersets 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 astatement

www.getmyuni.com

Page 35: PRINCIPLES OF Programming Languages

Basic Syntactic Concepts

• Noise words – optional words inserted into statements to improvereadability

• 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 inliteral strings

www.getmyuni.com

Page 36: PRINCIPLES OF Programming Languages

Basic Syntactic Concepts

• Delimiters – used to denote the beginning and the end of syntacticconstructs

• Expressions – functions that access data objects in a program and return avalue

• Statements – these are the sentences of the language, they describe a taskto be performed

www.getmyuni.com

Page 37: PRINCIPLES OF Programming Languages

Overall Program-Subprogram Structure

Separate subprogram definitions: Separate

compilation, linked at load time E.g. C/C++

Separate data definitions: General approach inOOP.

Nested subprogram definitions: Subprogram

definitions appear as declarations within the main

program or other subprograms. E.g. Pascal

www.getmyuni.com

Page 38: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 39: PRINCIPLES OF Programming Languages

Stages in Translation

• Analysis of the source program

• Synthesis of the object program

• Bootstrapping

www.getmyuni.com

Page 40: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 41: PRINCIPLES OF Programming Languages

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.

www.getmyuni.com

Page 42: PRINCIPLES OF Programming Languages

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.

www.getmyuni.com

Page 43: PRINCIPLES OF Programming Languages

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.

www.getmyuni.com

Page 44: PRINCIPLES OF Programming Languages

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

www.getmyuni.com

Page 45: PRINCIPLES OF Programming Languages

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.

www.getmyuni.com

Page 46: PRINCIPLES OF Programming Languages

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

www.getmyuni.com