Category:::Philosophy
Knuth defines programming as 'the art of complexity management'.
Which is brilliant and true but in the same way he disregards mere correctness, to focus on a higher value, namely architecture.
We can now go further and posit that programming is the 'art of communicating an algorithm.'
This lifts the consideration from the earthly plain of the 'stuff' of the endeavour to the realm of air which is to consider programming as a form of communication, it is writing.
Nim helps with the comprehension of strangers by reducing language artefacts to a minimum, and effective typing, and effective naming really helps (especially if you have no type annotations in your language), but I think I could do a better job of work as a programmer if I thought of myself as an author - not too different from an author in any other field.
Cue the millennial hounds...
We can now go further and posit that programming is the 'art of communicating an algorithm.'
That's the original meaning: greek "pro-gramma" translates per-syllable to "pre-scription" and meant "a published edict/law". So "programming" is "communicating a set of rules to a machine". Whether these rules describe what to do (algorithm) or what the problem to solve is (declaration) depends on programmer's preference and probably on how smart the language/compiler is.
Things seem to tend to the latter over time, at least for application programming. We will know we're there when we have a language in which, for every solvable problem, a complete description of the problem is identical to a program solving it (with acceptable performance).
If you want to get philosophical, programming is simply an act of writing a program, i.e. a set of instructions specific for a target. This means writing messy code which doesn't compile and wouldn't work even if it did is still programming. What you're probably asking, what is ideal programming. Unfortunately, you won't get an answer here, as extracting the essence of such abstract concepts unavoidably depends on axiological stance of the one who formulates it.
There's a lot of good catchy formulas for what constitutes good programming, and almost all of them are true in some respect and in some situations. However, these formulas can't embrace the whole, as the whole is complex and the short statement isn't by definition
One thing programming is not, and I usually get a lot of flak for stating this fact, it is not art. It's a craft. Art is expressing one's self with symbols (in the semiotic meaning of the term), and while a program can say a lot about it's author, it's not that.
... craft
I used to be a professional blacksmith, now I'm a professional programmer, in both of those careers I have worked in the art industry, and I could not agree with you more.
Any task where the outcomes are specified but the means to achieve those outcomes are up to the practitioner's discretion is a craft; for a good definition of 'art' i go to Bukowski:
Style is the answer to everything.
A fresh way to approach a dull or dangerous thing
To do a dull thing with style is preferable to doing a dangerous thing without it
To do a dangerous thing with style is what I call art...
Could a moderator lock this thread? I believe this thread is not really discussing Nim.
German (My second language, I apologize for my small vocabulary/bad grammar): Könnte ein Moderator diese Diskussion abbrechen? Ich glaube das diese Diskussion nicht wirklich über Nim spricht.
While I refuse to engage in anything approaching productive discourse in relationship to this community anymore, I had to reply as this made me lol.
To be fair though, @jorjun_arch has yet to invent an entire cast of PhDs / doctorates yet to elaborate on their points. Yet....
Seriously though, this thread is way more "on the rails" than that one schizo thread was... Wish I could find iti.
Why stop at author? Why not paint a program? Or sculpt it? Or compose it? Or cook it? Or ... use your imagination here? Could the person who first thought of the notion of a "computer recipe" have made the association with a "cooking recipe" to "communicate" the idea of "programming" to a "non-programmer"? Even better, what about https://ksick.medium.com/fun-with-piet-10b5224858e ?
For more inspiration have a look at https://www.dangermouse.net/esoteric/ It includes a language that can be useful for those who want to communicate their programs to orang-utans. The connection with nim? Someone motivated enough can - and will - write a backend for each of these esoteric languages.
And what is programming? I don't know in general, but for me it has to contain an element of fun.
Thanks for your twitter messages and reminder about thread 5582, @carterza :)
It is like it is cock-sure it is superior.
Reakky quite fascinating. Is it some primeval sense of the set-upon, that numbers should be there?
I am always outnumbered. But it's the guns you see.
There really isn't anything in this world more dangerous than software. If you can think of something please let me know.
Biotech