Nothing Special   »   [go: up one dir, main page]

skip to main content
article
Free access

How to write correct programs and know it

Published: 01 April 1975 Publication History

Abstract

There is no foolproof way to ever know that you have found the last error in a program. So the best way to acquire confidence that a program has no errors is never to find the first one, no matter how much it is tested and used. It is an old myth that programming must be an error-prone, cut-and-try process of frustration and anxiety. The new reality is that you can learn to consistently write programs which are error free in their debugging and subsequent use. This new reality is founded in the ideas of structured programming and program correctness, which not only provide a systematic approach to programming but also motivate a high degree of concentration and precision in the coding subprocess.

References

[1]
ACM Computing Surveys, Vol. 6, No. 4, (December 1974), pp. 209-321.
[2]
Baker, F. T., "Chief Programmer Team Management of Production Programming," IBM Systems Journal, Vol. 11, No. 1, (1972), pp. 56-73.
[3]
Baker, F. T., "System Quality Through Structured Programming," AFIPS Conference Proceedings, Vol. 41, Part I, (1972), pp. 339-343.
[4]
Böhm, and Jacopini, "Flow-diagrams, Turing Machines, and Languages with Only Two Formation Rules," Comm. ACM 9,5, (May 1966), pp. 366-371.
[5]
Dahl, O. J., Dijkstra, E. W., and Hoare, C. A. R., Structured Programming, Academic Press, London, England, (1972).
[6]
Dijkstra, E. W., "Programming Considered as a Human Activity," in Proc. IFIP Congress 1965, North-Holland Publ. Co., Amsterdam, The Netherlands, (1965), pp. 213-217.
[7]
Dijkstra, E. W., "GOTO Statement Considered Harmful," Comm. ACM 11, 3, (March 1968), pp. 147-148, 538, 541.
[8]
Dijkstra, E. W., "A Constructive Approach to the Problem of Program Correctness," BIT 8, 3, (1968), pp. 174-186.
[9]
Dijkstra, E. W., "The Humble Programmer," Comm. ACM 15, 10, (October 1972), pp. 859-866.
[10]
Dijkstra, E. W., "Programming as a Discipline of a Mathematical Nature," Amer. Math. Monthly, Vol. 81, No. 6, (June/July 1974), pp. 608-611.
[11]
Floyd, R. W., "Assigning Meanings to Programs," Proceedings of the Symposium in Applied Mathematics, Vol. 19, (Ed. J. T. Schwartz), American Mathematical Society, Providence, R. I., (1967) pp. 19-32.
[12]
Hoare, C. A. R., "An Axiomatic Approach to Computer Programming," Comm. ACM 12, 10, (October 1969), pp. 576-580, 583.
[13]
Huggins, W., Johns Hopkins University (Personal Communication).
[14]
Kelley, J. R., and McGowan, C. L., Top Down Structured Programming, (To be published).
[15]
Liskov, B. H., "A Design Methodology for Reliable Software Systems," Proceedings of Fall Joint Computer Conference, AFIPS Vol. 41, Part 1, (1972) pp. 191-199.
[16]
McCarthy, J., "A Basis for a Mathematical Theory of Computation," in Computer Programming and Formal Systems, P. Braffort and D. Hirschberg (Eds.), North-Holland, Amsterdam, (1967), pp. 33-70.
[17]
Mills, H. D., "Top-down Programming in Large Systems," in Debugging Techniques in Large Systems, Randall Rustin (Ed.), Prentice-Hall, Englewood Cliffs, N. J., (1971), pp. 41-55.
[18]
Mills, H. D., "The New Math of Computer Programming," Comm. ACM, 18, 1, (January 1975), pp. 43-48.
[19]
Naur, P., "Proof of Algorithms by General Snapshots," BIT, Vol. 6, (1966), pp. 310-316.
[20]
Wilder, R. L., Evolution of Mathematical Concepts - An Elementary Study, John Wiley and Sons, Inc., New York, (1968).
[21]
Wirth, N., "Program Development by Stepwise Refinement," Comm. ACM 14, 4, (April 1971), pp. 221-227.
[22]
Wirth. N., Systematic Programming - An Introduction, Prentice-Hall, Englewood Cliffs, N. J., (1973).
[23]
Zurcher, F., and Randell, B., "Iterative Multi-Level Modelling - A Methodology for Computer System Design," Proc. IFIP Congress, (1968), pp. D138-D142.

Cited By

View all
  • (2016)The role of anxiety when learning to programProceedings of the 16th Koli Calling International Conference on Computing Education Research10.1145/2999541.2999557(61-70)Online publication date: 24-Nov-2016
  • (2006)Data abstraction structured programming, and the practicing programmerSoftware: Practice and Experience10.1002/spe.438011070611:7(697-710)Online publication date: 27-Oct-2006
  • (2005)Comparing the Effectiveness of Software Testing StrategiesFoundations of Empirical Software Engineering10.1007/3-540-27662-9_20(300-338)Online publication date: 2005
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 10, Issue 6
International Conference on Reliable Software
June 1975
563 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/390016
Issue’s Table of Contents
  • cover image ACM Conferences
    Proceedings of the international conference on Reliable software
    April 1975
    567 pages
    ISBN:9781450373852
    DOI:10.1145/800027

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 April 1975
Published in SIGPLAN Volume 10, Issue 6

Check for updates

Author Tags

  1. Program correctness
  2. Programming practices
  3. Structured programming

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)230
  • Downloads (Last 6 weeks)28
Reflects downloads up to 29 Sep 2024

Other Metrics

Citations

Cited By

View all
  • (2016)The role of anxiety when learning to programProceedings of the 16th Koli Calling International Conference on Computing Education Research10.1145/2999541.2999557(61-70)Online publication date: 24-Nov-2016
  • (2006)Data abstraction structured programming, and the practicing programmerSoftware: Practice and Experience10.1002/spe.438011070611:7(697-710)Online publication date: 27-Oct-2006
  • (2005)Comparing the Effectiveness of Software Testing StrategiesFoundations of Empirical Software Engineering10.1007/3-540-27662-9_20(300-338)Online publication date: 2005
  • (1979)70's programming style for a developing country programmingProceedings of the 1979 annual conference10.1145/800177.810048(128-134)Online publication date: 1-Jan-1979
  • (1979)A new approach to water disinfection: I. N,N-dimethylalkylbenzyl-polystyrene anion exchange resins as contact disinfectantsWater, Air, and Soil Pollution10.1007/BF0104686812:4(477-484)Online publication date: Nov-1979
  • (1978)The roots of structured programmingACM SIGCSE Bulletin10.1145/990654.99063610:1(243-254)Online publication date: 1-Feb-1978
  • (1978)The roots of structured programmingPapers of the SIGCSE/CSA technical symposium on Computer science education10.1145/990555.990636(243-254)Online publication date: 23-Feb-1978
  • (1976)Software DevelopmentIEEE Transactions on Software Engineering10.1109/TSE.1976.2338312:4(265-273)Online publication date: 1-Jul-1976
  • (2011)What i learned from brianDependable and Historic Computing10.5555/2184121.2184123(1-6)Online publication date: 1-Jan-2011
  • (2011)What I Learned from BrianDependable and Historic Computing10.1007/978-3-642-24541-1_1(1-6)Online publication date: 2011
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media