Tomáš Petříček, 309 (3rd floor)
petricek@d3s.mff.cuni.cz
https://tomasp.net | @tomaspetricek
Lectures: Monday 12:20, S7
https://d3s.mff.cuni.cz/teaching/nprg075
Origins, languages, systems, correctness
How could it have
gone differently?
Reflections on ethics, politics, development
What if we took one aspect as primary?
Try to explain
how scientists think and work
How concepts evolve & what
are they?
How social aspects shape technology
Periods of normal science disrupted by revolutions
New era with new assumptions when the old ways stop working
New incommensurable with the old thinking
(Gabriel, 2012)
From thinking about programming systems
Running, with evolving state, modified interactively
To thinking about programming languages
Relationships in static code
"Smalltalk is an object-oriented, dynamically typed reflective programming language"
What makes it interesting?
Think not about source code, but about evolving system state!
Functional programming language
derived from the lambda calculus?
(Deutsch, 1967)
Interactive program editing on the terminal
Teletype, not a screen!
Print using: P
Delete child: (3)
Replace child: (2 ..)
Machines optimized for LISP with LISP-based environment
Persistent memory with just cons-cells
Response to new hardware architecture
Polyhedra, space, graph, function, convergence, measurable set
How does the definition change and why?
Euler's formula
\(V-E+F=2\)
A polyhedron is a solid whose surface consists of polygonal faces?
Through any point in space there will be at least one plane whose cross-section with the polyhedron will consist of one single polygon.
I turn aside with a shudder of horror from this
lamentable plague of functions which have no derivatives.
(Charles Hermite, 1893)
Data types like records, modelled as sets
Abstract data types for modularity
Type checking ala lambda calculus
Well-typed programs do not go wrong
New type systems based on this
Types for documentation and editor tooling
Standard construction in algebraic topology Monad as a "box" intuition
Used for sequencing effectful computations
Definition in terms of bind and return
Monads in Haskell and the do
notation
Monad as a "sequencing" intuition
How commercial
interests or gender bias shape computing
Redefinition of programming as more masculine software engineering in the 1960s
The quality of programmers is a decreasing function of the density
of go to statements in the programs they produce.
Us converts waved this interesting bit of news under the noses of the unreconstructed assembly-language programmers who kept trotting forth twisty bits of logic and saying, 'I betcha can’t structure this.'
What is structured programming and how to do it in practice
From engineering concept to managerial concept
Any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure.
Learning from the past
Complex reasons why & how programming ideas work and do not work
History and philosophy of programming
Tomáš Petříček, 309 (3rd floor)
petricek@d3s.mff.cuni.cz
https://tomasp.net | @tomaspetricek
https://d3s.mff.cuni.cz/teaching/nprg075
Philosophy of science
History & reflections
Historical materials