Comment by genman
2 years ago
I think the main message is this here: "If you’re a programmer, you might think that the fiddliness of programming is a special feature of programming, but really it’s that everything is fiddly, but you only notice the fiddliness when you’re new, and in programming you do new things more often.".
I've done programming and construction and more than often construction is like programming, especially when you are renovating.
> in programming you do new things more often
Only if you don't do new things often outside of programming. Everything certainly is fiddly and anything new you do is going be technical if you care about doing it well. I spent half a day last week learning to paint-fill engraving to make labeling. Conceptually it was trivial (coat with paint, wipe off excess, sand back when dry) but there was still plenty of nuance.
This is non-intuitive to me because programming languages (above the level of assembly, probably) are made by humans to represent human concepts, while construction is based on physics.
While writing that sentence I realized that programming does have a lot to do with logic, which is a construct of reality, and not humanity. So I guess it does makes sense that programming would be fiddly.
I am not a programmer.
One thing your initial reasoning left out is that human concepts are not simple, either. Money may seem simple until you start to consider currencies, rounding, taxes, fees, etc. Text may seem simple until you consider punctuation, different alphabets, math symbols, emoji, and other special symbols, glyphs, or characters. Names may seem simple until you consider suffixes, names that consist of multiple words, middle names, cultures that place the family name first, nicknames, name changes, various accents and other "special" characters (that probably are perfectly normal to the person with the name), etc. As a programmer you often have to deal with other programmers' solutions to handle all this complexity, which may be flawed or simply different.
I mention all this not to pick holes in your logic but because it sounded like you were trying to look more closely at your intuition.
> As a programmer you often have to deal with other programmers' solutions to handle all this complexity
That's entirely my point. Human concepts can be incredibly complicated, or just as bad based on ideas that are foreign to others. Some people like figuring out human complexity, but no one likes figuring out everyone's personal complexity.
Many disciplines are still more constrained by our limited understanding of, and ability to manipulate, physical constraints. The more abstract programming languages become, the more personally complex they become. Like money and verbal languages.
Also, construction designs, materials, and tools are made by humans.
Programming languages can theoretically abstract things away to the extent a properly formulated phrase will get working code from an LLM. Construction designs and materials are still concretely limited by what physics will allow.
6 replies →
It's not just logic. Storage is in practice never infinite, everything has a speed limit. Those are real things, not some human concept.
I was thinking about the human-facing end. Not whatever constraints the compiler is under to translate the human-facing end to machine-operable code.
I think this distinction is artificial. Programming is made of and constrained by physics: the electric field in the transistors is a real physical phenomenon. While constructions are made of concepts; just ask an architect about "negative space".
And yet the humans doing the construction still have to measure angles in non-obvious manners regardless of the kind of staircase they are installing.
Well, programming is a lot easier if you don't have to deal with reality.
That tends to not happen so often.