Language design for programming reliability

The language in which programs are written can have a substantial effect on their reliability. This paper discusses the design of programming languages to enhance reliability. It presents several general design principles, and then applies them to particular languages constructs. Since the validity of such design principles cannot be logically proved, empirical evidence is needed to support or discredit them. A major experiment to measure the effect of nine specific language-design decisions in one context has been performed. Analysis of the frequency and persistence of errors shows that several decisions had a significant impact on reliability.

[1]  Stephen N. Zilles,et al.  Programming with abstract data types , 1974, SIGPLAN Symposium on Very High Level Languages.

[2]  Gerald M. Weinberg,et al.  Psychology of computer programming , 1971 .

[3]  Peter Naur,et al.  Programming by action clusters , 1969 .

[4]  Charles Antony Richard Hoare,et al.  Hints on programming language design. , 1973 .

[5]  Jr. John Dennis Gannon,et al.  Language design to enhance programming reliability. , 1975 .

[6]  William A. Wulf,et al.  BLISS: a language for systems programming , 1971, CACM.

[7]  P. G. Moulton,et al.  DITRAN—a compiler emphasizing diagnostics , 1967, CACM.

[8]  B. L. Clark,et al.  The System Language for Project SUE , 1971, SIGPLAN Symposium on Languages for System Implementation.

[9]  Peter C. Poole Debugging and Testing , 1972, Advanced Course: Software Engineering.

[10]  C. A. R. Hoare,et al.  Procedures and parameters: An axiomatic approach , 1971, Symposium on Semantics of Algorithmic Languages.

[11]  Edwin H. Satterthwaite Debugging tools for high level languages , 1972, Softw. Pract. Exp..

[12]  B. L. Clark,et al.  Reflections on a language designed to write an operating system , 1973, SIGPLAN-SIGOPS Interface Meeting.

[13]  Niklaus Wirth,et al.  On the Design of Programming Languages , 1974, IFIP Congress.

[14]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[15]  J. E. Freund,et al.  Modern Elementary Statistics , 1968 .

[16]  Laurence Mark Weissman,et al.  A methodology for studying the psychological complexity of computer programs. , 1974 .

[17]  C. A. R. Hoare,et al.  Case expressions , 1964 .

[18]  Thomas R. Wilcox,et al.  Design and implementation of a diagnostic compiler for PL/I , 1973, CACM.

[19]  John A. Gould,et al.  Some Psychological Evidence on How People Debug Computer Programs , 1975, Int. J. Man Mach. Stud..

[20]  Edward A. Youngs Human Errors in Programming , 1974, Int. J. Man Mach. Stud..