Unit1 principle of programming language

garimajain4053 86,322 views 47 slides Jan 31, 2013
Slide 1
Slide 1 of 47
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47

About This Presentation

No description available for this slideshow.


Slide Content

PRINCIPLES OF Programming Languages UNIT 1 By- Garima Jain

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

Programming Languages Definition : A notation of a algorithm and data structures are called a 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

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.

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.

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

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

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

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

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

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.

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

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

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

The von Neumann Architecture

Virtual Computers Hardware realization Physical devices Firmware realization microprogramming Software simulation Some other programming language Combination of these techniques

Major Components of a Computer Data Various kinds of elementary and structured data. Primitive operations Sequence control Controlling the sequence of primitive operations execution.

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 .

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

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)

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

Data Access Access to operands of the operation

Storage Management Keeping all resources of the computer operating as much as possible Memory Central processor External data devices Multiprogramming Cache memory

Operating Environment The outside world of computer; a set of peripherals and input-output devices

Language Paradigms Imperative / procedural languages Applicative / functional languages Rule-based / declarative languages Object-oriented 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

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

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

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)

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

Syntax The syntax of a programming language describes the structure of programs without any consideration of their meaning.

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

Basic Syntactic C oncepts 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

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

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

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

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

Stages in Translation Analysis of the source program Synthesis of the object program Bootstrapping

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

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 .

Basic Semantic T asks 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.

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.

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

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.

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

THANK YOU.. !!
Tags