Tomas Petricek
University of Kent
tomas@tomasp.net | @tomaspetricek
Programming languages
As formal languages
Metaphor determines
what questions we ask
Syntax, semantics,
formal properties
Software engineering
Structured activity
Metaphor determines
questions we ask
Reliability, safety
Development process
Architecture and
urban planning
Design problem
Metaphor determines
what questions we ask
Dealing with complexity, evolution in time
Parnas on strategic defence
Modelling via code and tests
Gradual development
Large computing systems are products of evolutio- nary development (...); they became reliable through a process of slow testing and adaptation to an operational environment
(Weizenbaum on SDI)
Christopher Alexander
Things that are good have a certain structure. You can't get that except dynamically.
In nature you've got continuous very-small-feedback-loop (...), which
is why things get to be harmonious.
Radiant garden city beautiful
Programming languages
The case of cities
The case of programming
It is curious how authors, who in the formal aspects of their work require painstaking demonstration and proof, in the informal aspects are satisfied with subjective claims that have not the slightest support, neither in argument nor in verifiable evidence.
The Place of Strictly Defined
Notation in Human Insight
[Almost all buildings are] designed not to adapt; also budgeted and financed not to, constructed not to, administered not to, maintained not to, regulated and taxed not to, even remodelled not to.
But all buildings (...) adapt anyway, however poorly, because the usages in and around them are changing constantly.
How software evolves?
Simondon's concretization
3. Navigating through a city
A pleasant city is legible
[A legible city is] one whose districts or landmarks or pathways are easily identifiable and are easily grouped into an overall pattern.
What makes city legible?
What makes code legible?
New buildings teach bad maintenance habits
Once built, owners stop paying attention
Chaos engineering in cloud systems
Build parts that will have to be replaced soon?
1. Building materials
Tale of vinyl siding
Materials that look bad before they act bad
Problems with traditional materials are well understood
Unself-conscious design
Self-conscious design
Vernacular design method
Can we build software without reinventing form?
Buying and reconfiguring existing systems?
Jacobs on understanding cities
Understanding software
Programming as designing and intervening in complex systems that cannot be fully understood
Mathematical reductionism via statistics or logic cannot talk about all that matters
Programming languages as a design problem
Tomas Petricek, University of Kent
tomas@tomasp.net | @tomaspetricek