Doodles for discussion towards simplification of computers for non-programmers.
Pond’ring Aloud 2025-01-19
I think part of it is that with more resources, we can become more “careless,” which leads to bloat. Really clean diagrams!
What we have seen happening over the last 40 years is growth and complexification of both hardware and software, in parallel with increased resource consumption. Not very different from what we have seen in other branches of technology. Or elsewhere in society, law for example. Some people believe that growth and complexification are natural processes of complex system, much like entropy increase in thermodynamics. That's speculation so far, but not unreasonable.
What I am more interested in is stories of simplification, or preservation of simplicity. Successful fight against the supposedly natural tendency towards complexification.
I approach this in 2 steps:
- understand
- (re)invent
[Maybe this is a form of first-principles-thinking?]
This is mostly step (1). Drawing diagrams makes me think harder about how to explain what I observe. I'm sharing the diagrams in the hopes that others might be interested and might be inspired and might kibbitz. Maybe the most striking conclusion thus far is that progress and complexification has been one-sided - aimed almost entirely at satisfying developers' needs. The Production Engineering step is missing from our workflow. We go even so far as to think that children need to learn to develop code using this workflow. Another observation is that the great minds of 1950 were faced with new, poorly-understood hardware, then devised ways to use it. We (the royal we) are at this point again: our problem space is quite different from that of 1950. In 1950, thinking of using more than one CPU was too co$t prohibitive. Today, we can have bowls full of the things. How should our workflow and tools be re-invented? Obviously, we want to use what we already have, instead of starting from scratch again. If we take the view that the existing stuff is just "assembler" for something new, what can we come up with? Another observation is that "sequential programming languages" aren't up to the task of solving today's problems (hence, we get a succession of gotchas, like callback-hell, await, package managers, version hell, etc.)
[first principles thinking: guitarvydas.github.io/2022/05/25/Programming-First-Principles-Thinking.html]
📝 Programming: First Principles Thinking
I have stumbled upon an article about First Principles Thinking.
We need to think again how to layer simplicity over top of this bag.
Exactly. But I doubt there are universal answers to this. I expect simple solutions or frameworks to be domain-specific.
I think innovation and creativity tend to emerge from constrained environments, so I guess some kind of way of forcing that could help.