@lanodan we have the absolute worst standards of any engineering discipline, we have a million poorly educated programmers using toy hammers and orbital lasers to build bridges out of popsicle sticks and children's toys out of refined uranium and everything is on fire and WHY ARE WE OKAY WITH THIS
@sir heckin MOOD
Knuth himself argues this point here (https://dl.acm.org/doi/pdf/10.1145/361604.361612). It’s more reasoned and well-put than mine, so before responding, please go and read what he says too :) If only to avoid any miscommunication (I’m writing this at 5am without stimulants like caffeine). Paul Graham also mentions about this in “Hackers and Painters”, which is a good read.
Art isn’t about “emotion” — that’s simply one of the things we choose to express through art. A lot of art can be considered “beautiful” without striking any particular emotion within someone. It’s about creativity, and more fundamentally, about Expression. When we talk about “Good Code”, concepts like “Style” and “Aesthetics” are completely appropriate.
Aesthetics and Style are the reason that there are 40 year old, heated flamewars about Bracing Style (K&R or Allman?), Comment Style (Both on the position and content). It’s the reason why APL or J are seldom used, why someone chooses one language over another. Both APL and J are perfectly functional, efficient languages. Indeed, from an Engineering standpoint, they are ideal! Minimal syntax, so the syntax parser has little work, and you do not have to type much. And the concepts they base off (matrix computations) are ideal for translating to SIMD for the fastest execution time! Not to mention, they’re equivalent to any other language!
Surely, if it’s an Engineering practice, bracing style should not matter? Comments should not matter? Surely, how the language that you use looks, should not matter?
The reason why they are not used is Aesthetics, and Style. The Aesthetics of those languages are unfamiliar, so they’re harder to parse (without training). The style you have to write in, performing matrix computations, is not one most people find easy or useful, and are harder to model in your head. These two things also come into how the communities developed. Look at the difference between C++ and C, the one community developing different Taste in what it was appropriate for the language to do, and how it should act as time went on, drawing a divide.
In a deep way, Programming and Art are about expressing an idea from yourself to someone or something else. I’m going to borrow some ideas from Mathematical Platonism, and talk about the “Platonic Space” for a second.
Imagine a platonic realm filled with concepts about implementation. The mechanisms you can create, the data structures you use, and so on.
When you program, you have to figure out which, of the thousands of ways you could implement this program, to choose. You have to pick the data structures that you think fit the constraints best, from which there are many. Making that choice, is not a logical choice. Often one is as good as the other, or they have tradeoffs that make it impossible to choose through a logical method. Ultimately, it comes down to constraints and Taste. Ultimately, the way you write that, comes down to your Taste as a Programmer. Just like artists do. In the many days I would spend talking to my parents about my programs and them, their art, we slowly realised there is more in common than not.
This is why toy languages and environments like the PICO-8 are so much fun for programmers. This is why learning more programming languages is fabled to make you a better programmer. It offers you experience and familiarity with pulling unfamiliar ideas out of that platonic space, forcing you to choose ideas that you have not implemented before, and seeing how they play out when you do that. It’s about expanding your own knowledge of the possible ideas that exist in that space, and how to implement them.
When I say all of this, I say it as the child of two artists, one of whom is an acclaimed Fellow for the Society of Botanical Art. They have, throughout my entire life, done their utmost to convey their knowledge to me. We have spent long hours talking about our work, and noticing the similarities in how we approach things, and the forms of expression we are given. I have talked deeply, with artists, about this fact.
I do not believe that craftmanship of programming shares any more with Engineering than the act of “Building a Wooden Chair” does. You can do it as an Engineer, and the chair will be well-built indeed. But you can do it with no knowledge about that and still build a beautiful, functional chair. The point of Engineering, and indeed, Computer Science, is to inform our senses when we wonder if a design for a program or a chair is going to work, and to expand our knowledge of what we can craft. but it should never be assumed to be equivalent.
Thanks for reading :)
Also, I don't think art must necessarily carry emotional expression.
My maths teacher used to say "derivatives are a craft, integrals are art" because there's no algorythm or methodology for calculating integrals. You have to guess, and you have to guess correctly.
@portpupper @sir @lanodan I agree but that said I knew multiple people in college who switched from CE because it was a boring plug and chug field. In software development it's much easier for a single person/small team to make a thing that's useful without necessarily needing to pass the same bar as building a bridge, and that's good. People might build a lot of not so solid tools, but there are enough that work well enough that they dramatically improve productivity (hate that term...) and let people do things they previously couldn't.
I definitely sympathize with this mood, but I also think people saying software development should be like CE makes no sense...
"Yeah sometimes your car doors just won't open. Restart it and see if that helps".
"We couldn't make this fridge run on the west coast power grid so we shipped it together with a complete miniature power grid that the user can dock into their kitchen."
"I know this microwave uses 4000W but have you seen the pretty UI?"
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!