The impact of language design on the production of reliable software

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 language constructs. Since we can not logically prove the validity of such design principles, empirical evidence is needed to support or discredit them. Gannon has performed a major experiment to measure the effect of nine specific language design decisions in one context. Analysis of the frequency and persistence of errors shows that several decisions had a significant impact on reliability.

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

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

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

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

[5]  J. Bormann A. van Wijngaarden (Ed.), B. J. Mailloux, J. E. L. Peck and C. H. A. Koster, Report on the Algorithmic Language ALGOL 68. Amsterdam 1969. Printing by the Mathematisch Centrum. Preis brosch. $ 4.50 . , 1970 .

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

[7]  Howard Lee Morgan,et al.  Spelling correction in systems programs , 1970, Commun. ACM.

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

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

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

[11]  Lance A. Miller Programming by Non-Programmers , 1974, Int. J. Man Mach. Stud..

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

[13]  Friedrich L. Bauer Software Engineering , 1975, Lecture Notes in Computer Science.

[14]  Mary Shaw,et al.  Global variable considered harmful , 1973, SIGP.

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

[16]  B. J. Mailloux,et al.  Report of Algorithmic Language ALGOL 68 , 1969 .

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

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

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

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

[21]  Martin Richards,et al.  BCPL: a tool for compiler writing and system programming , 1969, AFIPS '69 (Spring).

[22]  B. L. Clark,et al.  The System Language for Project SUE , 1971 .

[23]  Edsger W. Dijkstra,et al.  Letters to the editor: go to statement considered harmful , 1968, CACM.

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

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

[26]  Stephen N. Zilles,et al.  Programming with abstract data types , 1974 .

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

[28]  B. J. Mailloux,et al.  Report on the Algorithmic Language ALGOL 68 , 1969 .