PZ08A - Prime programs Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section 8.3.3 PZ08A.

Slides:



Advertisements
Similar presentations
Automated Theorem Proving Lecture 1. Program verification is undecidable! Given program P and specification S, does P satisfy S?
Advertisements

PZ03D Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ03D - Program verification Programming Language Design.
PZ04B Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ04B - Arrays and records Programming Language Design.
Chapter 2: Understanding Structure
PZ10B Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ10B - Garbage collection Programming Language Design.
PZ09B Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ09B - Parameter transmission Programming Language Design.
PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ08A - Prime programs Programming Language Design and.
Prime programs Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Section 2.3 Gauss-Jordan Method for General Systems of Equations
PZ05A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ05A - Abstract data types Programming Language Design.
PZ12A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ12A - Guarded commands Programming Language Design.
1 Introduction to Computability Theory Lecture12: Decidable Languages Prof. Amos Israeli.
PZ10A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ10A - Heap storage Programming Language Design and.
PZ07B Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ07B - Basic statements Programming Language Design.
CS 454 Theory of Computation Sonoma State University, Fall 2011 Instructor: B. (Ravi) Ravikumar Office: 116 I Darwin Hall Original slides by Vahid and.
Axiomatic Semantics Dr. M Al-Mulhem ICS
PZ02A - Language translation
PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ03CX - Language semantics Programming Language Design.
1 Regular Grammars Generate Regular Languages. 2 Theorem Regular grammars generate exactly the class of regular languages: If is a regular grammar then.
Chapter 8 . Sequence Control
PZ09A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ09A - Activation records Programming Language Design.
October 8, 2009Theory of Computation Lecture 10: A Universal Program II 1 Pairing Functions and Gödel Numbers This way the equation  x, y  = z defines.
Dr. Muhammed Al-Mulhem 1ICS ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Axiomatic Semantics ICS 535.
PZ02B Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ02B - Regular grammars Programming Language Design.
Unit Testing CS 414 – Software Engineering I Don Bagert Rose-Hulman Institute of Technology January 16, 2003.
8.2 Solving Systems of Linear Equations by Substitution.
PZ01A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ01A -- Introduction Programming Language Design and.
PZ11A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ11A - Exception handling Programming Language Design.
Simple Program Design Third Edition A Step-by-Step Approach
PZ02B Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ02B - Regular grammars Programming Language Design.
DISTRIBUTED SYSTEMS II A POLYNOMIAL LOCAL SOLUTION TO MUTUAL EXCLUSION Prof Philippas Tsigas Distributed Computing and Systems Research Group.
PZ03EX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ03EX - ML Programming Language Design and Implementation.
PZ07A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ07A - Expressions Programming Language Design and Implementation.
Chapter 4 Section 2. Objectives 1 Copyright © 2012, 2008, 2004 Pearson Education, Inc. Solving Systems of Linear Equations by Substitution Solve linear.
PZ03BX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ03BX - Recursive descent parsing Programming Language.
PZ03BX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ03BX –Recursive descent parsing Programming Language.
PZ09A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ09A - Activation records Programming Language Design.
PZ03CX Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, PZ03CX - Language semantics Programming Language Design.
Basic statements Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
1 Regular grammars Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
PZ11A Programming Language design and Implementation -4th Edition
Computability and Complexity
Regular grammars Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Finite Automata a b A simplest computational model
PZ05A - Abstract data types
Complexity 6-1 The Class P Complexity Andrei Bulatov.
Alternating tree Automata and Parity games
Understanding the Three Basic Structures
Semantics In Text: Chapter 3.
PZ09A - Activation records
PZ04A - Scalar and composite data
Regular grammars Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
PZ03D - Program verification
PZ03D - Program verification
Language semantics Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Reductions Complexity ©D.Moshkovitz.
Reductions Complexity ©D.Moshkovitz.
Prime programs Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
PZ09B - Parameter transmission
Basic statements Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Basic statements Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Prime programs Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Prime programs Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Regular grammars Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
PZ07B - Basic statements Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Basic statements Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
PZ02B - Regular grammars Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section PZ02B.
CH 4 - Language semantics
PZ03BX - Recursive descent parsing
Presentation transcript:

PZ08A - Prime programs Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section 8.3.3 PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

Understanding control structures Earlier discussion on control structures seemed somewhat ad hoc. Is there a theory to describe control structures? Do we have the right control structures? Roy Maddux in 1975 developed the concept of a prime program as a mechanism for answering these questions. PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

Spaghetti code PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

Control structures represented as flowcharts PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

Theory of prime programs Consider 3 classes of flowchart nodes: Any flowchart is a graph of directed arcs and these 3 types of nodes: PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

Proper programs A proper program is a flowchart with: 1 entry arc 1 exit arc There is a path from entry arc to any node to exit arc A prime program is a proper program which has no embedded proper subprogram of greater than 1 node. (i.e., cannot cut 2 arcs to extract a prime subprogram within it). A composite program is a proper program that is not prime. PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

Prime flowcharts PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

Prime decomposition Every proper program can be decomposed into a hierarchical set of prime subprograms. This decomposition is unique (except for special case of linear sequences of function nodes). PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

All prime programs can be enumerated All primes can be enumerated (next slide) Each implements a function. What is function for 2-node primes (c) and (d) and 4-node primes (l) through (q)? All primes with at least 1 function node are our usual control structures - except (k) - the do-while-do construct. More about this later. PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

Number of primes is infinite Construction to create primes with any number of nodes: Use of prime programs to define structured programming: Concept first used by Dijkstra in 1968 as gotoless programming. Called structured programming in early 1970s- Program only with if, while and sequence control structures. PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

Structured programming Issue in 1970s: Does this limit what programs can be written? Resolved by Structure Theorem of Böhm-Jacobini. Here is a graph version of theorem originally developed by Harlan Mills: PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

Structure theorem Outline of proof: 1. Label each arc with 1 being the entry arc and 0 the exit arc. 2. Let I be a new variable not used in program. 3. For each node in program construct the following: PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

Structure theorem (continued) 4. Create the following new flowchart on right. If F is the original function, what is the new function? PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

Program verification - again For every flowchart, we can compute a function for each arc in its prime decomposition. f1: S1  S3; f2: S2  S4; f3: S5  Sf A program is then C(f1, f2, f3): S0  Sf Program verification is a formal method to define these functions: Axiomatic - Hoare, 1969 Weakest precondition - Dijkstra, 1972 Algebraic data types - Guttag, 1975 Functional correctness - Mills, 1975 PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000

Prime programs - Summary Structure theorem does not say: Given any “spaghetti program” convert it into a structured program. What it does say is that there is no loss of functionality in using only those control structures. It is still up to the programmer to choose the best algorithm to solve problem. Also, the prime decomposition shows that the primes up to 4 nodes are the useful programming language control structures, except for the do-while-do, which has been ignored by language designers. PZ08A Programming Language design and Implementation -4th Edition Copyright©Prentice Hall, 2000