But it's thought through as a person who is an amateur at best. I've taken literal introductory courses to programming in Fortran, Java, and R, have hacked together two or three VBscript programs, had a very slight one-day introduction to assembler in the Java course, and as a child was briefly in a summer program that had us "programming" a very simple robot (telling it to go certain lengths in certain directions). A former roommate said my pseudocode (when taking the Fortran course) looked like Pascal, and I used to watch him do some Forth programming.
So in terms of programming philosophy I am really, really clueless. But in terms of programming languages what I do have is a basic understanding of how incredibly diverse the languages are. And that a huge amount of this diversity is based on human preferences.
As an analogy to construction. Yes, there are a diverse number of techniques that can be used in constructions (yurts, hay-bail housing, etcetera). One could also draw an analogy to pre-fab construction as modular programming and libraries as kits (or whatever). But for the most part, outside of scale, it seems that most construction effectively standardized on a few "languages", if not a single language.
I've always kind of seen programming above the level of electrical engineering as working in a social system designed with decisions that seemed like a good idea to a person who isn't me. This point was driven home a year ago when taking an R course and reading the literature discussing the grammar of R.
But yeah, in addition there are physical limits for programming as well. That's what just came as a mild insight for me here. I theoretically had been aware of it, but as an end-user / non-programmer just hadn't really put it together and thought about it before.
Details. :)