I have already published some notes on the HaPoP-5 conference, here are more notes from the accompanying PROGRAMme workshop. Tomas Petricek and Liesbeth de Mol kindly asked me to take part in the workshop as a respondent for one of the presentations, of which I am most grateful to them! Note the goal of the PROGRAMme program (!) is to publish a - possibly constantly evolving - book to answer the question "What is a computer program?" This book currently lives in a private wiki as it's still a work-in-progress, with lot of unfinished chapters.
Day 1 - PROGRAMme
What is a computer program? An anti-disciplinary view
presented by Liesbeth De Mol
This is the introduction to the whole book, reminding it's an ANR funded project
anti-disciplinary vs. trans-disciplinary: The intent is not to let each discipline (logic, CS, philosophy, linguistics...) undisturbed but rather to
The goal is to question the object that lies at the foundation, as programs have become transparent while software is "eating the world", to approach the problem with ontological glasses on
Problems are also opportunities:
Programs evolve and their use, study, and make should be on equal footing. A program is like a pharmakon, being both a cure and a poison depending.
In his response, Paul Edwards highlights there are 2 genres of computing history:
Computer Science is the discipline that connects notations and machines, seeking (or producing) semiotic closure of the questions it delves with
I wholeheartedly support the intention of breaking the barriers disciplines erect around them, a process leading to the over-specialisation which has dire consequences on the whole of humanity. I think it's Gunther Anders who introduced the moral imperative that one should fullly understand the consequences of his or her actions as part of a system, or refrain from undertaking them. That software is both a boon and bane is now quite obvious and rethinking our, and others', relationship to programs, programming, and software is an important task to carry out.
Classifying programs
presented by Baptiste Mélès
The unicity of the concept of program contrasts with the diversity of concrete programs. The goal of classification is also to not forget "minorities".
Bottom-up classification approach, using comparative analysis and unifying existing classifications
Top-down (a priori) classification seeks to escape "real-life mess"
Like most of the chapters, this is a work-in-progress about which I don't have much to say.
Logic – a declaration of independence?
presented by Giuseppe Primiero
Logic representation comes before the implementation of any program
Draw on the analogy of "Logic as Motherland" and "Languages as colonies"
Flow diagrams from Von Neumann was a first step
Then come various policies of control (Curry-Howard, logic programming, operational semantics...): How does Motherland enforces rules on colonies
Adopt a pragmatic view: The nature of programs depend on the user or agent
The Order of Concepts opposes the Order of Things
A new role for Formal Methods: Not imposing regulations on what can or cannot be programmed, but hlping in constructing systems
It seems there are many Motherlands: Logic, business needs, military
I enjoyed how far we can get applying the Motherland/colonies pattern to CS and programming history. There is still this "provincial" feeling within CS w.r.t. Mathematics and Logic. It's not uncommon for programmers with strong math background to grow some form of superiority complex regarding their inferior brethens, the "mere" programmers and this attitude is especially rife in the FP circles. Putting the bonds between logic and programming in perspective, realising that type theory or formal methodes are just one aspect of programs, is an important work to carry out.
Notations. There is no escape
presented by Tomas Petricek
Note: These notes are a mix of things from the chapter presented by Tomas and my own response to it. See the slides.
The ever growing proliferation of notations seems like a curse, as if they have escaped some Pandora's box
They are the result of a negotiation between humans and machines
Having different notations for humans and machines is a way to enforce division of labor & maintain hierarchy of thinkers and doers
LISP and Smalltalk provides higher notational programmability
Machines – Hide and seek
presented by Maarten Bullynck
Brown & Carr, 1954 develops the idea of "Automatic Programming" into a general translation system, whereby the computer itself is used to translate high-level language into low-level instructions, something which was novel and actively resisted by some people at the time
Computers become digital because we tame the waves from analog signal
Cloud computing and virtual machines seems to mark the triumph of software vs. hardware
There is a need to open the machines
Systems – the system if dead! Long live the system.
Understand programs from a systems perspective
A system is a stabilised heterogeneous situation containing members, see McIlroy, 1969
A program:
Programs:
States of the system are opening, exchanging, closing
Maintaining invariants:
Example of RUNCOM evolving to
/etc/rc.dthensystemd