Possible Responses

Spring 2022

Introduction

The previous group of papers shed light on a turning point in the history of computer science. Computers had gotten dramatically more powerful in the two decades since they had burst onto the scene, and high-level languages had allowed the development of increasingly complex software systems — too complex for programmers to fully grasp in many cases. Prominent computer scientists were sounding the alarm and urging changes in how software was developed. The papers this week are a continuation of that theme: Two distinguished computer scientists present possible ways to manage software complexity.

Hoare wrote "An Axiomatic Basis for Computer Programming" in 1968, outlining a technique for using axioms to formally describe the behavior of imperative programs. It's really just a starting point, but gives the flavor of his proposed method: Apply standard proof techniques to programs in an effort to prove that they correctly implement the desired behavior (assuming the desired behavior can also be formally specified).

John Backus, who led the team at IBM that developed FORTRAN in the 1950s and was later part of the ALGOL team, made the remarks in the second paper in the 1970s as part of his Turing Award lecture. He argues for a break from imperative programming, which is a pretty strong statement coming from FORTRAN's inventor! After documenting the "inherent defects" in imperative languages, he makes a case for what we would now call functional programming.

Questions

Here are some questions you might try to answer as you read:

Papers