Tomas Petricek, Charles University, Prague


The history of programming, told through the lens of interactions between five cultures of programming.
Cultures cooperate, exchange ideas, disagree, struggle for control.




Software update activated unused and wrong code
Reflections on the issue

Software not formally verified correct!
Poor testing and engineering practice
Incorrect implementation of oversight processes

Managerial
Hacker
Humanistic
Mathematical
Engineering

System continued running
for 45 minutes! It should
have been turned off sooner!
Threats of high-frequency trading
Automation reorganizes the human



“Programming in the early 1950s was a black art,
a private arcane matter involving only a programmer,
a problem, a computer, ... and a primitive assembly program.”
John Backus (1976)


“With SAGE, we were faced with programs too large for one person to grasp entirely and also with the need to hire and train large numbers of people to become programmers... We were faced with organizing and managing a whole new art.”
Herbert Benington (1956)


“Program testing can be used to show the presence of bugs, but never to show their absence!” Rather than verifying programs through their testing, we should prove them correct.
Edsger Dijkstra (1969)


“The phrase software engineering was deliberately chosen as provocative... We undoubtedly produce software by backward techniques.”
The black art of programming has to make way for the science of software engineering!
NATO Conference on Software Engineering (1968)


“Alan Kay is more interested in us kids. He repudiates the manipulative arrogance .. and serves the dictum of Seymour Papert, Should the computer program the kid or should the kid program the computer?”
Brand, Rolling Stone (1972)



Glitch art uses errors for critical & aesthetic goals
Different cultures see errors differently!
What is error-free?
How to create it?



Floor turtle programmed in the LOGO language using a button box
How to educate good programmers?
Fundamental concepts!



