Cultures of Programming - A Companion Exhibition to the Book
Cultures of Programming
A Companion Exhibition to the Book
Tomas Petricek , tomas@tomasp.net
Andrew Goodall, Jaroslav Nesetril, curators
Galerie Chodba, December 2025—April 2026
Would you like to display this exhibition at your university or a conference? Drop me an email!
This exhibition looks at the history of programming through a perspective<br>introduced in the Cultures of Programming book. In 14 posters, it<br>illustrates the five different basic ways of thinking about programming and<br>documents a number of remarkable collaborations and disagreements between the five cultures.
History of Programming
A New Look at the History
This exhibition tells the story of how interactions and disagreements between<br>the different cultures of programming shaped programming concepts and methodologies that<br>programmers use today, including programming lang­uages, types and objects, software engineering,<br>and interactive programming.
It follows the evolution of these concepts and methodologies from<br>the early days of programming to recent times and interprets the key developments in terms of<br>interactions between cultures of programming. The interpretation reveals two interesting<br>aspects of the development of programming.
First, many programming innovations happen when multiple cultures meet and contribute to a single<br>concept or methodology. Second, individual cultures of programming retain a remarkably strong<br>identity throughout the history, marking programming as an inherently pluralistic discipline.
The opening panel presents the exhibition and the book. It introduces the key premise of the<br>exhibition—looking at the history of programming as interactions between five different<br>cultures of programming. The exhibition follows a different structure from the book,<br>dedicating a panel to each of the individual cultures, before focusing on a few selected<br>interactions between cultures.
The Cultures of Programming panel illustrates the five different cultures<br>of programming with one paradigmatic example for each culture. For managerial culture,<br>the large scale of systems is a typical trait, whereas creative ideas on education are often<br>linked to the humanistic culture. Using a chalk and blackboard for reasoning about<br>programs characterises the mathematical culture, while the engineering culture<br>sees programming as a complex task requiring professionalism. Finally, the hacker culture<br>tends to push the limits of what is possible, not always with serious goals in mind.
There are many excellent books on the history and philosophy of programming and computing.<br>The panel History and Philosophy shows just a few of those. It includes a<br>number of books that defined some aspect of the field, technical accounts of specific aspects<br>of the history of programming, as well as books that use the perspective of social studies to<br>uncover how hidden biases, power structures and rhetoric reshape computing. My account in<br>Cultures of Programming aims to be more historical than a typical technical book and more<br>technical than a typical historical book.
Five Cultures of Programming
Different Ways of Thinking about Programming
The first computer programmers came from a range of backgrounds including mathematics, electrical<br>engineering, business and psychology. Those disciplines shaped many of their basic assumptions<br>about programming, what kind of task it is and how it should be done. Those different ways of<br>thinking about programming that I refer to as cultures of programming continue shaping<br>programming to this day. The cultures clash over basic principles, but also contribute to shared programming<br>concepts. Their basic assumptions remain at the core of current contentious debates about<br>programming.
In the first part of the exhibition, we look at the basic beliefs<br>of the five different cultures of programming—mathematical culture, hacker culture,<br>engineering culture, managerial culture and humanistic culture.
The Mathematical culture sees programs as formal mathematical entities<br>and believes that mathematical methods can tackle the increasing complexity of software<br>systems. The panel illustrates this way of thinking by highlighting two of its achievements.<br>The Algol language, illustrated through a diagram describing its syntax, was<br>regarded as an "object of stunning beauty" and provided a common language for theoretical<br>computer science. The mathematical focus played a key role in establishing computer science<br>as an academic discipline within the modern university.
The panel gives a brief overview of the work of four computer science pioneers.<br>John McCarthy first envisioned a mathematical theory of programs; Peter Naur and<br>C. A. R. Hoare were the first to develop methods for formally proving properties<br>of computer programs; while Peter Landin pioneered the use of the lambda calculus,<br>a formal system developed in the 1930s in the context of mathematical logic, as a model<br>of...