Tomas Petricek, University of Kent
tomas@tomasp.net | @tomaspetricek
Learning to live with errors Programming, 2017
Cultures of programming
Draft for HOPL IV
Could this be a book?
Different cultures
When cultures meet
Programming is learned through practice
Advocate direct access to computer
Exemplars include Spacewar! and HAKMEM
Programming is a mathematical discipline
Advocate proving programs correct
Exemplars include ALGOL and PLT papers
Programming is industrial production process
Advocate organizational processes
Exemplars include Waterfall and SCRUM
Programming should be an engineering practice
Advocate tools and development practices
Exemplars include TDD and information hiding
Programming is a creative human activity
Advocate improving the human condition
Exemplars include oNLine System, Sonic Pi
Programming controversies
Programming concepts
Hacker culture
EDSAC initial orders and interpretative routines
Mathematical culture
Logic, formal languages and grammars
Managerial culture
Business need for cross-machine compatibility
Managerial culture
Records and business data processing
Mathematical culture
Lambda calculus models of PLs
Engineering culture
Clu and abstract data types
Hacker culture
Program checkout, debugging and testing
Engineering culture
From demonstration to destruction
Mathematical culture
Designing comprehensive test suites
Managerial culture
Testing in Waterfall vs. testing in TDD
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