Calcification
In my view, the problem is that lower levels of software become harder and harder to manage and more expensive to change.
It behooves us not to gloss over it and not to accept it as a fact.
There are 2 parts to fixing a problem
- define / state the problem, then,
- fix it.
Method for identifying part 1: Ask “why?” over and over again, recursively.
For example, first iteration: why are the lower levels more expensive to change?
An alternate way of asking the same question is “Why is/was there a Moore’s Law for hardware but not for software?”
My current answer: deep asynchronousity, lack of dependencies. ICs are asynchronous, lines of code are synchronous. Computer “functions” are synchronous and create ad-hoc blocking1.
Computer “functions” are subroutines, not mathematical functions2.
Computers are Programmable Electronic Machines (PEMs?), not solely meant for computation.
Paper is 2D. Computers are 4D (x/y/z/t). Using 2D equations to express 4D PEMics is a handy trick (physicists call this a “simplifying assumption”) but cannot express the full breadth of 4D capabilities. At a minimum, one needs multiple 2D notations to describe phenomena in 4D.
Appendix - See Also
References
https://guitarvydas.github.io/2004/01/06/References.html
Blogs
obsidian blogs (see blogs that begin with a date 202x-xx-xx-)
Videos
videos - programming simplicity playlist
Books
leanpub’ed (disclaimer: leanpub encourages publishing books before they are finalized - these books are WIPs)
Programming Simplicity Takeaways, and, Programming Simplicity Broad Brush
Discord
Programming Simplicity all welcome, I invite more discussion of these topics, esp. regarding Drawware and 0D
@paul_tarvydas
Mastodon
(tbd, advice needed re. most appropriate server(s))