By Eric C.R. Hehner
There are numerous theories of programming. the 1st usable concept, known as ''Hoare's Logic'', remains to be essentially the most well known. In it, a specification is a couple of predicates: a precondition and postcondition (these and all technical phrases can be outlined in due course). one other well known and heavily comparable conception via Dijkstra makes use of the weakest precondition predicate transformer, that's a functionality from courses and postconditions to preconditions. lones's Vienna improvement strategy has been used to virtue in a few industries; in it, a specification is a couple of predicates (as in Hoare's Logic), however the moment predicate is a relation. Temporal good judgment is yet one more formalism that introduces a few certain operators and quantifiers to explain a few facets of computation. the speculation during this booklet is less complicated than any of these simply pointed out. In it, a specification is simply a boolean expression. Refinement is simply usual implication. This conception can be extra basic than these simply pointed out, employing to either terminating and nonterminating computation, to either sequential and parallel computation, to either stand-alone and interactive computation. And it comprises time bounds, either for set of rules type and for tightly restricted real-time functions
Read or Download A Practical Theory of Programming PDF
Best programming languages books
This e-book covers plenty of other ways that eventualities and person tales were utilized in a number of industries. i am partial to the method and so preferred all the diversified viewpoints. The booklet does be afflicted by being written from a number of authors with assorted agendas, and you'll no longer locate whatever of price in the entire chapters.
An up to date, authoritative textual content for classes in conception of computability and languages. The authors redefine the development blocks of automata idea through supplying a unmarried unified version encompassing all conventional different types of computing machines and "real global" digital pcs. This reformulation of computablity and formal language conception presents a framework for development a physique of data.
Via supplying a proper semantics for Z, this booklet justifies the declare that Z is an exact specification language, and gives a regular framework for knowing Z requirements. It makes an in depth theoretical comparability among schemas, the Z build for breaking standards into modules, and the analogous amenities in different languages corresponding to transparent and ASL.
- Shell-Programmierung … im Alleingang: Die Korn-Shell in der Praxis
- Einführung in die Programmierung mit LOGO: Lehrbuch für Unterricht und Selbststudium
- C++ Programming: Program Design Including Data Structures (6th Edition)
- Software and Systems Traceability
- Professional BlackBerry
Additional resources for A Practical Theory of Programming
X:= y+1 In each, the problem (left side) is refined by (follows from, is implied by) the solution (right side) for all initial and final values of all variables. 3 Conditions optional A condition is a specification that refers to at most one state. A condition that refers to (at most) the initial state (prestate) is called an initial condition or precondition, and a condition that refers to (at most) the final state (poststate) is called a final condition or postcondition. In the following two definitions let P and S be specifications.
At one extreme, we have the specification † ; it is the easiest specification to implement because all computer behavior satisfies it. At the other extreme is the specification ƒ , which is not satisfied by any computer behavior. But ƒ is not the only unimplementable specification. Here is another. x≥0 ∧ y′=0 If the initial value of x is nonnegative, the specification can be satisfied by setting variable y to 0 . But if the initial value of x is negative, there is no way to satisfy the specification.
If b is an implemented boolean expression of the initial values, and P and Q are programs, then if b then P else Q is a program. Q is a program. An implementable specification that is refined by a program is a program. For the “implemented expressions” referred to in (b) and (c), we take booleans, numbers, characters, and lists, with all their operators. We omit bunches, sets, and strings because we have lists, and we omit functions and quantifiers because they are harder to implement. All these notations, and others, are still welcome in specifications.