programming a computer
1. understanding what low level operations a machine can perform
2. breaking down a problem into recipes that involve only those low level operations
programming a person
1. understanding what low level operations a person can perform
2. breaking down a problem into recipes that involve only those low level operations
explaining to other humans
Explaining to other humans why certain recipes were used to program machines or persons.
This is different from the above, in that the low-level operations are grouped together to form higher level layers of operations.
Higher level operations are often understood by more exploration and/or education in the domain. High level operations are still operations, but they are layered combinations of lower-level recipes. The combinations are considered to be "higher level" because they don't directly map into low-level machine operations. High level recipes don't necessarily need to be based on the same, sequential principles of low-level operations, they simply need to be mapped into low-level operations.
“Software” is just a high-level set of operations that controls circuits built with many ICs. ICs are just high-level sets of operations used to control circuits of transistors. Transistors are just high-level operations used to control electrical flows within rust (oxides). And so on, molecules, atoms, sub-atomic particles, etc. Human-to-human explanations involve layering and elision of details.
Most non-programmers don't want to delve into this kind of detail. Some non-programmers are quite smart and have received degrees in other fields and are domain experts in those fields. Non-programmers, though, don’t want to know the details of programming, they like spreadsheets while programmers think that spreadsheets don't provide enough low-level detail.
Corollary: only 1% of humans are interested in creating programs with enough detail to control the actions of simple machines. The other 99% of people don't care for that kind of anal-retentive attention to detail. Programming languages like Rust, Python, Javascript, etc. appeal only to the 1%. The other 99% think that spreadsheets are "good enough" for their purposes. [disclaimer: 1% and 99% are numbers that I simply pulled out of the air, without any evidence for what these numbers actually are].
The 1% will find it easier to use non-ambiguous languages like the programming languages that they are accustomed to, like Rust, Python, Javascript, etc., while the 99% will find it easier to use ambiguous language, like English, to build only some of the programs that can be created by the use of non-ambiguous languages such as those used by the 1%.
The idea that operations are written vs. spoken is orthogonal to the act of programming. I believe that the 1% will not find much use for LLM-based programming, regardless of input method. I do, though, think that the 99% will find LLM-based programming to be a useful approach for creating "good enough" software for their needs.
See Also
Email: ptcomputingsimplicity@gmail.com
References: https://guitarvydas.github.io/2024/01/06/References.html
Blog: guitarvydas.github.io
Videos: https://www.youtube.com/@programmingsimplicity2980
Discord: https://discord.gg/65YZUh6Jpq
Leanpub: [WIP] https://leanpub.com/u/paul-tarvydas
Gumroad: tarvydas.gumroad.com
Twitter: @paul_tarvydas
Substack: paultarvydas.substack.com