The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
Program development by stepwise refinement
Communications of the ACM
The specification of program flow in Madcap 6
ACM '72 Proceedings of the ACM annual conference - Volume 2
Typed representation of objects by functions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Abstract data types and the development of data structures
Communications of the ACM
An example of hierarchical design and proof
Communications of the ACM
Hi-index | 0.03 |
It is becoming increasingly evident that human programmers are not capable of efficiently producing reliable programs if they must be concerned initially with every detail of the final program. The approach described here is one of “semantic levels of programming”, which involves a graduated approach to the production of programs. A common but fallacious belief of some software implementors today is that the efficient execution of software systems should be a major concern in the initial system version. In fact, the primary concern in the initial version should be the reliable operation of the system, which is closely connected with the existence of a sound, overall system design. Assuming that we recognize that there is some reasonable time from the initiation of a software system implementation project to the availability of an initial version, the philosophy of semantic refinement is based on the belief that: “If a major concern in the implementation of the initial version of a software system is efficiency, then the initial version will be unreliable.” Many systems which are initially unreliable have a way of remaining unreliable for a discouragingly long period of time.