scispace - formally typeset
Search or ask a question

Showing papers by "C. A. R. Hoare published in 2002"


Book
01 Jan 2002
TL;DR: It is suggested that input and output are basic primitives of programming and that parallel composition of communicating sequential processes is a fundamental program structuring method.
Abstract: This paper suggests that input and output are basic primitives of programming and that parallel composition of communicating sequential processes is a fundamental program structuring method. When combined with a development of Dijkstra's guarded command, these concepts are surprisingly versatile. Their use is illustrated by sample solutions of a variety of familiar programming exercises.

1,062 citations


Book ChapterDOI
01 Jan 2002
TL;DR: In this paper, a powerful method of simplifying the proofs of program correctness is suggested; and some new light is shed on the problem of functions with side-effects, and a new method for simplifying program correctness proofs is proposed.
Abstract: A powerful method of simplifying the proofs of program correctness is suggested; and some new light is shed on the problem of functions with side-effects.

491 citations


Book
01 Jan 2002
TL;DR: In this article, the logical foundations of computer programming are explored by using techniques first applied in the study of geometry and later extended to other branches of mathematics, and a formal proof of a simple theorem is displayed.
Abstract: In this paper an attempt is made to explore the logical foundations of computer programming by use of techniques which were first applied in the study of geometry and have later been extended to other branches of mathematics. This involves the elucidation of sets of axioms and rules of inference which can be used in proofs of the properties of computer programs. Examples are given of such axioms and rules, and a formal proof of a simple theorem is displayed. Finally, it is argued that important advantages, both theoretical and practical, may follow from a pursuance of these topics.

398 citations


Book
01 Jan 2002
TL;DR: In this paper, the concept of a monitor as a method of structuring an operating system is introduced and a form of synchronization is described in terms of semaphores and a suitable proof rule.
Abstract: This paper develops Brinch Hansen's concept of a monitor as a method of structuring an operating system. It introduces a form of synchronization, describes a possible method of implementation in terms of semaphores and gives a suitable proof rule. Illustrative examples include a single resource scheduler, a bounded buffer, an alarm clock, a buffer pool, a disk head optimizer, and a version of the problem of readers and writers.

245 citations


Book ChapterDOI
01 Jan 2002
TL;DR: Programming constructs for parallelism, including means for expressing resource constraints and synchorinzation, are discussed and formally defined.
Abstract: The objectives for a theory of parallel programming are discussed. Programming constructs for parallelism, including means for expressing resource constraints and synchorinzation, are discussed and formally defined.

211 citations


01 Jan 2002

9 citations


Book
C. A. R. Hoare1
01 Jan 2002
TL;DR: My personal perspective illustrates the complementary roles of pure research, aimed at academic ideals of excellence, and the unexpected ways in which the results of such research contribute to the gradual improvement of engineering practice.
Abstract: It was my early experience in industry that triggered my interest in assertions and their in-program proofs; and my subsequent research at university extended the idea into a methodology for the specification and design of programs. Now that I have returned to work in industry, I have looked into the current role of assertions in industrial program development. My personal perspective illustrates the complementary roles of pure research, aimed at academic ideals of excellence, and the unexpected ways in which the results of such research contribute to the gradual improvement of engineering practice.

8 citations


Proceedings Article
26 Aug 2002
TL;DR: Assertions play many related roles in Microsoft programming practice, and are beginning to be used to guide optimising compilation, and to suppress spurious warnings from a program analysis tool.
Abstract: Assertions play many related roles in Microsoft programming practice. Their primary purpose is to instrument code with test probes that will detect errors as close as possible to their place of occurrence. They are also used for program documentation, to assist in the further development of high-volume legacy code for delivery in later releases. They are beginning to be used to guide optimising compilation, and to suppress spurious warnings from a program analysis tool. Assertion failure is used to classify multiple occurrences of the same defect, and so ensure that it is cleared only once. Finally, assertions are now increasingly shipped to customers, to reduce the risk of crashes on the customer’s machine. My early research into programming theory was motivated by the hope that assertions would be used to specify the criterion of total correctness of a program, and to prove that the program implements its specification, without risk of error. Ironically, these are two purposes for which they are almost never used.

8 citations