Tomas Petricek, University of Kent
tomas@tomasp.net | @tomaspetricek
(Hoare, 1996)
"Twenty years ago it was reasonable to predict that the size of software would be severely limited by [its] unreliability."
"Fortunately, the problem of program correctness has turned out to be far less serious than predicted."
"So [a question arises]: why have twenty years of pessimistic predictions been falsified?"
"Programming in the early 1950s was a black art, a private arcane matter involving a programmer, a problem, a computer, and perhaps a small library of subroutines and a primiti- ve assembly program"
(Backus, 1976)
Hacker culture of programming
Establishing a discipline
Mathematical culture
Programming as mathematics
Notion of algorithm becomes central
Use formal methods to show correctness
Worked well in academia!
Engineering culture
The black art of programming has to make a way for the science of software engineering.
NATO 1968 and 1969 Conferences on Software Engineering
Managerial culture
Unlocking Computer’s Profit Potential (McKinsey, 1968)
Control over budgets, complexity, scheduling and the workforce.
Focus on organisation and development proces
Limiting factors for computing
Terminology in the 1960s
"With some care, it has been possible, for example, to find a bug while at a breakpoint in running a test case, call the [structure] editor to make a correction, run the program on a simpler test case to verify the correctness of the change, then resume execution of the original test case from the breakpoint."
ON in PL/1 (1964)
Allow writing
robust programs
Handle 23 known errors
ERRORSET in LISP (1962)
More control to programmers
John B. Goodenough (1975)
Exception as boundary object
Exceptions in telecom
One machine is not enough
When something goes wrong, kill the process
Supervisor process restars
Exceptions as a basis for programming style
Computer Program Test Methods Symposium (1972)
Testing distinguished
from debugging
Companies hire test managers and test technicians
Test automation establishes a test as an artifact
(Gelperin & Hetzel, 1988)
Demonstration period (1957-78)
Destruction period (1978-82)
Testing as part of the development process
Testing after coding in Waterfall (1970)
Unit testing separate from acceptance tests
Test-Driven Development
Development methodology
What happened
to debugging?
Conceptually similar to '60s
Learned through practice
Hacker culture only
No boundary object to exchange with other cultures?
Hacker - Trust person making it
Engineering - Rely on tools
Managerial - Rely on processes
Mathematical - Trust formal proofs
Mathematization of programming
Rise of software engineering
Interactive programming
Programming with types
Papers: http://tomasp.net/academic
Contact: t.petricek@kent.ac.uk