The Software Crisis
Spring 2022
Introduction
The paper for the last reading assignment chronicled the development of programming languages and tools up through the end of the 1950s. We saw that by the time the 50s came to a close, relatively modern-looking programming languages had emerged. This, in combination with increasingly powerful computing hardware, set the stage for a dramatic increase in the size and complexity of software in the following decade. For the first time, programmers began to have trouble managing the complexity of their programs.
The pair of papers this week were written after this "software crisis", but reflect upon the period and share thoughts about possible ways forward. The authors are famous computer scientists, and these papers capture the remarks made during their Turing Award lectures. (The Turing Award is sort of like the Nobel Prize for computer scientists, and the winner each year gives a presentation on a topic of their choosing.)
Questions
Here are some questions you might try to answer as you read:
-
Dijkstra and Hoare have a beer. What do they say to one another?
-
Which sorting algorithm did Hoare invent? Why did he have to wait for ALGOL 60 to implement it?
-
Why does Hoare's paper make me sad?
-
What was the "main failure" of Hoare's software group?
-
What are the two ways of constructing software, according to Hoare?
-
Why is Hoare so down on ADA?
-
What is Hoare trying to say with his "Emperor's Old Clothes" parable?
-
Hoare invents his perfect language. What does it look like?
-
How close are we to the "possible future" Dijkstra outlines?
-
What caused programming to become a "gigantic problem"?
-
What is "one of the most important aspects of any computing tool" according to Dijkstra?
-
What does he think about FORTRAN?
-
How about LISP?
-
Why must programmers "learn to program an order of magnitude more effectively"?
-
What is "one of the most vital activities of a competent programmer"?
-
What does Dijkstra mean when he says we should be humble programmers?
Papers