Complexity & Verification: the History of Programming As Problem Solving

Total Page:16

File Type:pdf, Size:1020Kb

Complexity & Verification: the History of Programming As Problem Solving COMPLEXITY & VERIFICATION: THE HISTORY OF PROGRAMMING AS PROBLEM SOLVING A DISSERTATION SUBMITTED TO THE FACULTY OF THE GRADUATE SCHOOL OF THE UNIVERSITY OF MINNESOTA BY Joline Zepcevski IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF DOCTOR OF PHILOSOPHY Arthur L. Norberg February 2012 © Copyright by Joline Zepcevski 2012 All Rights Reserved Acknowledgments It takes the work of so many people to help a student finish a dissertation. I wish to thank Professor Arthur L. Norberg for postponing his retirement to be my advisor and my friend over the course of this project. Thank you to my committee, Professor Jennifer Alexander, Professor Susan Jones, Dr. Jeffery Yost, and Professor Michel Janssen, all of whom individually guided this dissertation at different times and in specific ways. Thank you also to Professor Thomas Misa for his guidance and assistance over many years. I had a great faculty and a great cohort of graduate students without whom this dissertation would never have been completed. I particularly want to thank Sara Cammeresi, whose unending support and friendship were invaluable to the completion of this project. I wish to thank my family, Jovan Zepcevski, Geraldine French, Nicole Zepcevski, and Brian Poff, who supported me and loved me throughout it all. I also want to thank my friends: Tara Jenson, Holly and Aaron Adkins, Liz Brophey, Jennifer Nunnelee, Jen Parkos, Vonny and Justin Kleinman, Zsuzsi Bork, AJ Letournou, Jamie Stallman, Pete Daniels, and Megan Longo who kept me sane. I need to thank Lisa Needham for all her assistance. Without your help, I wouldn’t sound nearly as smart. You’re a great friend and a great editor! Thank you also to Karl Brophey for his feedback. I was lucky to have a great early experience in this field at the University of Sydney, under the leadership of Rachel Ankeny and, later, at the University of New South Wales with David Miller and John Schuster. Finally, without the early guidance of a dedicated and caring professor, Dr. Katherine Neal, I would never have pursued this path. I was so lucky to have had a teacher who could make such an enormous impact on a student. i For my mother, who taught me everything I know – including how to use a computer. And my father, who gave me the opportunities he never had. ii Complexity & Verification: The History of Programming as Problem Solving Abstract Changes in computer programming methods were responses to specific stimuli, and that (contrary to much existing analyses) the development of programming methods does not fit an ideal of “progress.” I focus on the rise of two fundamental computing problems: complexity, or the proliferation of people and methods; and verification, which is the (in)ability to verify that a program functions as intended. Complexity and verification were the catalyst for the development of automatic coding systems but also increased exponentially as a result of automatic coding systems like FORTRAN and COBOL. These systems have English-like commands that simplify programming. The adoption of automatic coding systems opened up the programming field to more software engineers and allowed the creation of more elaborate software systems, creating ever more complexity in the discipline. I argue that since the introduction of automatic coding systems in the 1950s, methodological changes and new programming languages have been attempts to solve long standing problems faced by programmers. Not, as the traditional insider narrative suggests, a steady evolution based on a better understanding of programming. In this dissertation, I focus on the changes motivated by two stimuli — complexity and verification. iii Contents Table of Figures ................................................................................................................... vi Chapter 1 .............................................................................................................................. 1 Overview: A Case Study of Complex Technological Change ................................................... 1 Introduction ........................................................................................................................ 1 Definitions ....................................................................................................................... 9 The History of Software in the History of Science & Technology ................................................. 26 Agents of Change ............................................................................................................ 30 Programming as Duality ................................................................................................... 32 Opening a Black-Box ........................................................................................................ 36 Using Programs as Historic Documents ............................................................................... 38 Historiography .................................................................................................................... 42 Chapter Outline .................................................................................................................. 55 Conclusion ......................................................................................................................... 58 Chapter 2: A Pre-history of Programming ........................................................................... 59 Early Computing ................................................................................................................. 59 Stored Program Concept ...................................................................................................... 66 Treating Data and Instructions Identically........................................................................... 69 Hierarchical Memory ........................................................................................................ 70 Sequential Processing ...................................................................................................... 70 After the Stored Program Concept ......................................................................................... 71 Sub-Routines and Virtual Addressing ................................................................................. 78 Symbolic Notation and the Road to Automatic Coding Systems ............................................. 80 Complexity and Verification .................................................................................................. 85 Chapter 3: Automatic Coding Systems .............................................................................. 89 FORTRAN ....................................................................................................................... 94 COBOL ......................................................................................................................... 100 ALGOL ......................................................................................................................... 107 LISP ............................................................................................................................ 114 ALGOL & LISP: the theoretical equivalent of FORTRAN & COBOL? ............................................................ 117 Complexity, Verification, and Automatic Coding Systems........................................................ 120 Chapter 4: Structured Programming ................................................................................ 123 Discontent ........................................................................................................................ 123 SABRE ......................................................................................................................... 131 Coding SABRE ............................................................................................................... 135 State of the Field ........................................................................................................... 145 Dijkstra and the Origins of Structured Programming .............................................................. 166 What is a Go To Statement and Why was it Controversial? .......................................... 169 iv What is Structured Programming? ....................................................................................... 184 What is StepWise Program Composition? .......................................................................... 184 What did Dijkstra Mean By Testing Aids? .......................................................................... 189 Controversy .................................................................................................................. 192 Redefining Structured Programming .................................................................................... 197 Structured Programs use a specific design methodology ......................................................... 205 Results of the Structured Programming Conflict .................................................................... 208 Chapter 5: Object Oriented Programming ........................................................................ 213 What is Object Oriented Programming? ................................................................................ 214 Classes ........................................................................................................................ 218
Recommended publications
  • Women in Computing History
    Women in Computing History Denise Gfirer ACM-W0) Co-Chair EMD Consulting Scotts Valley, California 95066 USA <[email protected]> Introduction Exciting inventions, innovative technology, human interac- tion, and intriguing politics fill computing history. However, the recorded history is mainly composed of male achieve- ments and involvements, even though women have played substantial roles. This situation is not unusual. Most science fields are notorious for excluding, undervaluing, or over- looking the accomplishments of their female scientists [1, 16, 17, 22]. As J.A.N. Lee points out, it is up to the histori- ans and others to remedy this imbalance (see this issue [14]). Some steps have been taken towards this goal through pub- lishing biographies on women in technology [2, 5, 6, 8, 10, 12, 13, 18, 20, 21, 23, 24], also see this issue [7], and through honoring the pioneers with various awards such as the GHC'97 Pioneering Awards(z) (Figure 1), the WITI Hall of Fame(3), and the AWC Lovelace Award(n). A few online sites Figure 1: Computer Science Pioneer Celebration, at the Grace Hopper contain biographies of women in technology, shown in Table Celebration of Women in Computing '97. Left to right: (Fran Allen, Ruzena Bajcsy, Adele Mildred Koss, Denise Gtirer, Anita Borg, Jean 1 below. However, even with these resources, many women Jennings Bartik, Judy Levenson Clapp, Thelma Estrin, Joyce Currie Little who have contributed significantly to computer science are (Courtesy Institute for Women in Technology, Palo Alto, California) still to be discovered. preprogrammed software for needed tasks (in particular word processing, email, and database access).
    [Show full text]
  • IBM Iseries Universal Connection for Electronic Support and Services
    IBM iSeries Universal Connection for Electronic Support and Services Explains the supported functions with Universal Connection Shows how to install, tailor, and configure Universal Connection Helps you determine communications problems Masahiko Hamada Michael S Alexander Makoto Kikuchi ibm.com/redbooks International Technical Support Organization SG24-6224-00 iSeries Universal Connection for Electronic Support and Services August 2001 Take Note! Before using this information and the product it supports, be sure to read the general information in Appendix A, “Special notices” on page 209. First Edition (August 2001) This edition applies to Version 5 Release 1 of OS/400. Comments may be addressed to: IBM Corporation, International Technical Support Organization Dept. JLU Building 107-2 3605 Highway 52N Rochester, Minnesota 55901-7829 When you send information to IBM, you grant IBM a non-exclusive right to use or distribute the information in any way it believes appropriate without incurring any obligation to you. © Copyright International Business Machines Corporation 2001. All rights reserved. Note to U.S Government Users - Documentation related to restricted rights - Use, duplication or disclosure is subject to restrictions set forth in GSA ADP Schedule Contract with IBM Corp. Contents Preface . vii The team that wrote this redbook . vii Comments welcome . viii Chapter 1. Extreme Support Personalized (ESP) . .1 1.1 Introduction to ESP . .1 1.1.1 Customer Care Advantage . .1 1.1.2 ESP approach. .3 1.1.3 Benefits for customers. .4 1.2 Available applications in electronic support . .5 1.2.1 Electronic Customer Support (ECS) connection . .5 1.2.2 Service Agent . .6 1.2.3 Consolidated inventory collection using Management Central .
    [Show full text]
  • Donald Knuth Fletcher Jones Professor of Computer Science, Emeritus Curriculum Vitae Available Online
    Donald Knuth Fletcher Jones Professor of Computer Science, Emeritus Curriculum Vitae available Online Bio BIO Donald Ervin Knuth is an American computer scientist, mathematician, and Professor Emeritus at Stanford University. He is the author of the multi-volume work The Art of Computer Programming and has been called the "father" of the analysis of algorithms. He contributed to the development of the rigorous analysis of the computational complexity of algorithms and systematized formal mathematical techniques for it. In the process he also popularized the asymptotic notation. In addition to fundamental contributions in several branches of theoretical computer science, Knuth is the creator of the TeX computer typesetting system, the related METAFONT font definition language and rendering system, and the Computer Modern family of typefaces. As a writer and scholar,[4] Knuth created the WEB and CWEB computer programming systems designed to encourage and facilitate literate programming, and designed the MIX/MMIX instruction set architectures. As a member of the academic and scientific community, Knuth is strongly opposed to the policy of granting software patents. He has expressed his disagreement directly to the patent offices of the United States and Europe. (via Wikipedia) ACADEMIC APPOINTMENTS • Professor Emeritus, Computer Science HONORS AND AWARDS • Grace Murray Hopper Award, ACM (1971) • Member, American Academy of Arts and Sciences (1973) • Turing Award, ACM (1974) • Lester R Ford Award, Mathematical Association of America (1975) • Member, National Academy of Sciences (1975) 5 OF 44 PROFESSIONAL EDUCATION • PhD, California Institute of Technology , Mathematics (1963) PATENTS • Donald Knuth, Stephen N Schiller. "United States Patent 5,305,118 Methods of controlling dot size in digital half toning with multi-cell threshold arrays", Adobe Systems, Apr 19, 1994 • Donald Knuth, LeRoy R Guck, Lawrence G Hanson.
    [Show full text]
  • Advancing Automatic Programming: Regeneration, Meta-Circularity, and Two-Sided Interfaces
    SOFTNET 2019 Advancing Automatic Programming: Regeneration, Meta-circularity, and Two-Sided Interfaces HERWIGMANNAERT NOVEMBER 2 7 , 2 0 1 9 • Automatic Programming • Toward Automatic Regeneration • Creating Meta-Circular Regeneration • On Meta-Programming Interfaces ADVANCING AUTOMATIC PROGRAMMING • Concluding Facts and Thoughts Overview • Questions and Discussion • Automatic Programming • Concept and Trends • Remaining Challenges • Toward Automatic Regeneration ADVANCING AUTOMATIC PROGRAMMING • Creating Meta-Circular Regeneration • On Meta-Programming Interfaces Overview • Concluding Facts and Thoughts • Questions and Discussion Automatic Programming • Automatic programming: • The act of automatically generating source code from a model or template • Sometimes distinguished from code generation, as performed by a compiler • Has always been a euphemism for programming in a higher-level language than was then available to the programmer [David Parnas] • Also referred to a generative or meta-programming • To manufacture software components in an automated way • It is as old as programming itself: System.out.println(“Hello world.”); System.out.println(“System.out.println(\“Hello world.\”);”); The Need for Automatic Programming • Goal is and has always been to improve programmer productivity • In general, to manufacture software components in an automated way, in the same way as automation in the industrial revolution, would: • Increase programming productivity • Consolidate programming knowledge • Eliminate human programming errors • Such
    [Show full text]
  • Writing and Reviewing Use-Case Descriptions
    Bittner/Spence_06.fm Page 145 Tuesday, July 30, 2002 12:04 PM PART II WRITING AND REVIEWING USE-CASE DESCRIPTIONS Part I, Getting Started with Use-Case Modeling, introduced the basic con- cepts of use-case modeling, including defining the basic concepts and understanding how to use these concepts to define the vision, find actors and use cases, and to define the basic concepts the system will use. If we go no further, we have an overview of what the system will do, an under- standing of the stakeholders of the system, and an understanding of the ways the system provides value to those stakeholders. What we do not have, if we stop at this point, is an understanding of exactly what the system does. In short, we lack the details needed to actually develop and test the system. Some people, having only come this far, wonder what use-case model- ing is all about and question its value. If one only comes this far with use- case modeling, we are forced to agree; the real value of use-case modeling comes from the descriptions of the interactions of the actors and the system, and from the descriptions of what the system does in response to the actions of the actors. Surprisingly, and disappointingly, many teams stop after developing little more than simple outlines for their use cases and consider themselves done. These same teams encounter problems because their use cases are vague and lack detail, so they blame the use-case approach for having let them down. The failing in these cases is not with the approach, but with its application.
    [Show full text]
  • Modified Moments for Indefinite Weight Functions [2Mm] (A Tribute
    Modified Moments for Indefinite Weight Functions (a Tribute to a Fruitful Collaboration with Gene H. Golub) Martin H. Gutknecht Seminar for Applied Mathematics ETH Zurich Remembering Gene Golub Around the World Leuven, February 29, 2008 Martin H. Gutknecht Modified Moments for Indefinite Weight Functions My education in numerical analysis at ETH Zurich My teachers of numerical analysis: Eduard Stiefel [1909–1978] (first, basic NA course, 1964) Peter Läuchli [b. 1928] (ALGOL, 1965) Hans-Rudolf Schwarz [b. 1930] (numerical linear algebra, 1966) Heinz Rutishauser [1917–1970] (follow-up numerical analysis course; “selected chapters of NM” [several courses]; computer hands-on training) Peter Henrici [1923–1987] (computational complex analysis [many courses]) The best of all worlds? Martin H. Gutknecht Modified Moments for Indefinite Weight Functions My education in numerical analysis (cont’d) What did I learn? Gauss elimination, simplex alg., interpolation, quadrature, conjugate gradients, ODEs, FDM for PDEs, ... qd algorithm [often], LR algorithm, continued fractions, ... many topics in computational complex analysis, e.g., numerical conformal mapping What did I miss to learn? (numerical linear algebra only) QR algorithm nonsymmetric eigenvalue problems SVD (theory, algorithms, applications) Lanczos algorithm (sym., nonsym.) Padé approximation, rational interpolation Martin H. Gutknecht Modified Moments for Indefinite Weight Functions My first encounters with Gene H. Golub Gene’s first two talks at ETH Zurich (probably) 4 June 1971: “Some modified eigenvalue problems” 28 Nov. 1974: “The block Lanczos algorithm” Gene was one of many famous visitors Peter Henrici attracted. Fall 1974: GHG on sabbatical at ETH Zurich. I had just finished editing the “Lectures of Numerical Mathematics” of Heinz Rutishauser (1917–1970).
    [Show full text]
  • Retrocomputing As Preservation and Remix
    Retrocomputing as Preservation and Remix Yuri Takhteyev Quinn DuPont University of Toronto University of Toronto [email protected] [email protected] Abstract This paper looks at the world of retrocomputing, a constellation of largely non-professional practices involving old computing technology. Retrocomputing includes many activities that can be seen as constituting “preservation.” At the same time, it is often transformative, producing assemblages that “remix” fragments from the past with newer elements or joining together historic components that were never combined before. While such “remix” may seem to undermine preservation, it allows for fragments of computing history to be reintegrated into a living, ongoing practice, contributing to preservation in a broader sense. The seemingly unorganized nature of retrocomputing assemblages also provides space for alternative “situated knowledges” and histories of computing, which can sometimes be quite sophisticated. Recognizing such alternative epistemologies paves the way for alternative approaches to preservation. Keywords: retrocomputing, software preservation, remix Recovering #popsource In late March of 2012 Jordan Mechner received a shipment from his father, a box full of old floppies. Among them was a 3.5 inch disk labelled: “Prince of Persia / Source Code (Apple) / ©1989 Jordan Mechner (Original).” Mechner’s announcement of this find on his blog the next day took the world of nerds by storm.1 Prince of Persia, a game that Mechner single-handedly developed in the late 1980s, revolutionized computer games when it came out due to its surprisingly realistic representation of human movement. After being ported to DOS and Apple’s Mac OS in the early 1990s the game sold 2 million copies (Pham, 2001).
    [Show full text]
  • Turing's Influence on Programming — Book Extract from “The Dawn of Software Engineering: from Turing to Dijkstra”
    Turing's Influence on Programming | Book extract from \The Dawn of Software Engineering: from Turing to Dijkstra" Edgar G. Daylight∗ Eindhoven University of Technology, The Netherlands [email protected] Abstract Turing's involvement with computer building was popularized in the 1970s and later. Most notable are the books by Brian Randell (1973), Andrew Hodges (1983), and Martin Davis (2000). A central question is whether John von Neumann was influenced by Turing's 1936 paper when he helped build the EDVAC machine, even though he never cited Turing's work. This question remains unsettled up till this day. As remarked by Charles Petzold, one standard history barely mentions Turing, while the other, written by a logician, makes Turing a key player. Contrast these observations then with the fact that Turing's 1936 paper was cited and heavily discussed in 1959 among computer programmers. In 1966, the first Turing award was given to a programmer, not a computer builder, as were several subsequent Turing awards. An historical investigation of Turing's influence on computing, presented here, shows that Turing's 1936 notion of universality became increasingly relevant among programmers during the 1950s. The central thesis of this paper states that Turing's in- fluence was felt more in programming after his death than in computer building during the 1940s. 1 Introduction Many people today are led to believe that Turing is the father of the computer, the father of our digital society, as also the following praise for Martin Davis's bestseller The Universal Computer: The Road from Leibniz to Turing1 suggests: At last, a book about the origin of the computer that goes to the heart of the story: the human struggle for logic and truth.
    [Show full text]
  • Oral History of Captain Grace Hopper
    Oral History of Captain Grace Hopper Interviewed by: Angeline Pantages Recorded: December, 1980 Naval Data Automation Command, Maryland CHM Reference number: X5142.2009 © 1980 Computer History Museum Table of Contents BACKGROUND HISTORY ...........................................................................................................3 1943-1949: MARK I, II, AND III COMPUTERS AT HARVARD....................................................6 1949-1964: ECKERT AND MAUCHLY, UNIVAC, AND THE ONE-PASS COMPILER ................7 The Need for User-Friendly Languages ..................................................................................10 DEMANDS FOR THE FUTURE..................................................................................................12 Application Processors, Database Machines, Distributed Processing ....................................12 Demand for Programmers and System Analysts ....................................................................14 The Value and Cost of Information..........................................................................................14 The Navy’s Dilemma: Micros and Software Creation..............................................................15 The Murray Siblings: Brilliant Communicators.........................................................................18 Common Sense and Distributed Computing ...........................................................................19 BACK TO 1943-1949: HOWARD AIKEN....................................................................................21
    [Show full text]
  • Structured Programming - Retrospect and Prospect Harlan D
    University of Tennessee, Knoxville Trace: Tennessee Research and Creative Exchange The aH rlan D. Mills Collection Science Alliance 11-1986 Structured Programming - Retrospect and Prospect Harlan D. Mills Follow this and additional works at: http://trace.tennessee.edu/utk_harlan Part of the Software Engineering Commons Recommended Citation Mills, Harlan D., "Structured Programming - Retrospect and Prospect" (1986). The Harlan D. Mills Collection. http://trace.tennessee.edu/utk_harlan/20 This Article is brought to you for free and open access by the Science Alliance at Trace: Tennessee Research and Creative Exchange. It has been accepted for inclusion in The aH rlan D. Mills Collection by an authorized administrator of Trace: Tennessee Research and Creative Exchange. For more information, please contact [email protected]. mJNDAMNTL9JNNEPTS IN SOFTWARE ENGINEERING Structured Programming. Retrospect and Prospect Harlan D. Mills, IBM Corp. Stnuctured program- 2 ' dsger W. Dijkstra's 1969 "Struc- mon wisdom that no sizable program Ste red .tured Programming" articlel could be error-free. After, many sizable ming haxs changed ho w precipitated a decade of intense programs have run a year or more with no programs are written focus on programming techniques that has errors detected. since its introduction fundamentally alteredhumanexpectations and achievements in software devel- Impact of structured programming. two decades ago. opment. These expectations and achievements are However, it still has a Before this decade of intense focus, pro- not universal because of the inertia of lot of potentialfor gramming was regarded as a private, industrial practices. But they are well- lot of fo puzzle-solving activity ofwriting computer enough established to herald fundamental more change.
    [Show full text]
  • Three-Dimensional Integrated Circuit Design: EDA, Design And
    Integrated Circuits and Systems Series Editor Anantha Chandrakasan, Massachusetts Institute of Technology Cambridge, Massachusetts For other titles published in this series, go to http://www.springer.com/series/7236 Yuan Xie · Jason Cong · Sachin Sapatnekar Editors Three-Dimensional Integrated Circuit Design EDA, Design and Microarchitectures 123 Editors Yuan Xie Jason Cong Department of Computer Science and Department of Computer Science Engineering University of California, Los Angeles Pennsylvania State University [email protected] [email protected] Sachin Sapatnekar Department of Electrical and Computer Engineering University of Minnesota [email protected] ISBN 978-1-4419-0783-7 e-ISBN 978-1-4419-0784-4 DOI 10.1007/978-1-4419-0784-4 Springer New York Dordrecht Heidelberg London Library of Congress Control Number: 2009939282 © Springer Science+Business Media, LLC 2010 All rights reserved. This work may not be translated or copied in whole or in part without the written permission of the publisher (Springer Science+Business Media, LLC, 233 Spring Street, New York, NY 10013, USA), except for brief excerpts in connection with reviews or scholarly analysis. Use in connection with any form of information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed is forbidden. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. Printed on acid-free paper Springer is part of Springer Science+Business Media (www.springer.com) Foreword We live in a time of great change.
    [Show full text]
  • Printed Program
    rd International Conference 43 on Software Engineering goes Virtual PROGRAM May 25th –28th 2021 Co-located events: May 17th –May 24th Workshops: May 24th , May 29th –June 4th https://conf.researchr.org/home/icse-2021 @ICSEconf Table of Contents Conference overviews ............................................................... 3 Sponsors and Supporters ......................................................... 11 Welcome letter ........................................................................ 13 Keynotes ................................................................................. 18 Technical Briefings ................................................................. 28 Co-located events .................................................................... 35 Workshops .............................................................................. 36 New Faculty Symposium ........................................................ 37 Doctoral Symposium .............................................................. 39 Detailed Program - Tuesday, May 25th .................................................... 42 - Wednesday, May 26th ............................................... 53 - Thursday, May 27th .................................................. 66 - Friday, May 28th ....................................................... 80 Awards .................................................................................... 91 Social and Networking events ................................................. 94 Organizing Committee ........................................................
    [Show full text]