Why is programming an art
blooki.st
blooki.st
No, his code isn't ugly. No, not only he understands it. It is actually considered exceptionally beautiful (http://kotaku.com/5975610/the-exceptional-beauty-of-doom-3s-...).
Beyond that, even if it was (which it isn't), you are not John Carmack. I don't know if dropping him into the article was supposed to bolster your point, but I can assure you it did the opposite. It reads like an oddly malformed appeal to authority. Bonus point: you can look at his code: https://github.com/id-Software
----
Please, please stop reading books about style and creating your own styles! Follow the language / platform standards and idioms so your code will instantly be readable by other developers. Almost all languages & platforms have dominant coding conventions, follow them. 15 years ago, you had to bake your own standard, you don't need to do it anymore.
Use your creativity on solving your problem, not formatting your code.
Yes, yes, and hell yes.
No, in full generality it's not - that's pretentious bullshit fancied by amateurs who want to cram as much meaning as possible into what they do.
Like painting, pottery, or photography, programming can be used to do art, but most of the time (99.9%+) it's just a mix of craft and industrial design, done to achieve a practical goal.
Since we almost never do this with programming, I don't believe it can be considered an art as practiced by most programmers. That's not to say you can't use it as art, though! Any medium can be used to express art, because art is flowing out of you constantly. Art and humanities should not be separate classifications. Art is humanity.
This heart of the matter, and it means programming is an art, a social one. Like marketing or graphic design, it's an art for other people. Programs must be written to be as readable as possible, to as many people as possible, while still being functional and elegant. This requires an intuition of psychology and sociology, in addition to a firm engineering grasp. A great programmer must be both mathematically brilliant and socially empathic. If she lacks the former, she won't be able to solve Hard Problems; if she lacks the latter, she'll be a Cowboy Coder (http://c2.com/cgi/wiki?CowboyCoder) and her code will be worthless to society.
That's why it's an art.
No, it doesn't. It just means that programming is inherently about communication (among other things). That does not, by a long shot, make it art.
Things that are made for practical purposes are not art, right? The thing with software is that the code is hidden from view.
There is an opportunity to make something practical by writing very impractical code, that for example, has variables named after fantasy characters, functions having some sort of narrative arc to their naming, maps "drawn" in ASCII...
TheGoblinKing.smites(our_hero) could be a method to reverse an array.
Again, highly impractical, but with a practical result.
Architecture has a similar duality, but in a different kind of way... buildings are indeed functional, but is there no art to the practice of designing them? No room for ornament, expression, or "impractical" intent? For example, ideologies can be encouraged through buildings by manipulating people's response to their sublime grandeur or nostalgia... this seems like a much more artistic and philosophical pursuit that goes well beyond just the pure function of the building as a place to keep things separate from the outside world.
[1] - http://delivery.acm.org/10.1145/1290000/1283929/a1974-knuth....
The functions of art include philosophical enquiry and invoking a sense of immanence in the receiver, and so on; creating a program might cause some of these things to happen in the programmer, but only as a coincidence. In his poem called The Scent of the Real, Alvin Pang writes "to bear clear witness/to your longing alone/[is] the only art/there is." Software doesn't do it either, other than as a potential medium for visual art or other forms. It seems likely that new, distinctively digital art forms will evolve, but even then it won't be "the programming" that corresponds to "the art".
An easy way to think about this is to remember those times when somebody in the workplace does something above and beyond expectations, eg. they solve a problem in particularly brilliant fashion, and colleagues see it and say 'this, this is a work of art.'
As a society, we can build buildings like regular old boxes, so long as it meets our needs for sheltering capacity. We don't do it this way because we've come to appreciate the ability of architects to create a more elegant building (elegant in cost, design, environmental effect).
Most of the programming we do is just building big blocky buildings that most will never see. If we were to spend the time and make it more elegant, we'd only be doing it for ourselves and other programmers, as we are the only ones that can appreciate it for the time being. Trying to simplify code is an art simply because it's unnecessary, but when it's actually achieved, yields some form of value to those that can appreciate it.
By that do you mean that it's difficult to do and you need to practise it? That sounds like a craft. I find it impossible to imagine the Mozart's Requiem or Sistine Chapel of software, much less of programming.
It is closer to making furniture than painting or sculpture, as it tends to need to be practical in some way. But if it were furniture making, you'd continually be presented with new designs, new types of wood and other materials, and new tools to make your furniture with, so you'd never know exactly how long it would take to make a couch or a bedroom set.
Creatives/artistic types enjoy modular, greenfield development or pushing the limits of confinement to produce something of beauty and use. Practical/craftsman/engineer types enjoy using technique to build, design, and maintain large systems because they enjoy process, skill, and established ways of doing things. There is room for both.
That. I'd even go a bit further and say they actually hinder your creativity: can you even think of heroic fantasy without falling back into Tolkien's imagination?
You have to know and understand the rules before you can break them in a meaningful way.
They are different skills, varying in levels of importance depending on the context.
Who cares how Michelangelo held his brush or his chisel; what matters is what he made.
Readability and being to able to maintain the code is just as important as the finished product.
Programming isn't just about one-shot projects, it's also about being able to pickup and work with existing source code. Whether it is for someone else or even yourself in the future.
It's the one thing that is all yours.
The code you write is an intrinsic part of the result. There goes form and function as one. There can be art in the function as can be art in the ideas embodied in the source code that carries out the function.
I can't swear to chisels but brushwork is extremely important to paintings; you really haven't seen a painting until you've gotten up close and been able to see the texture made by the strokes, and while maybe in theory you can achieve everything with a ham-fisted caveman grip on a brush it seems unlikely.
Which is to say, actually many people care about how artists hold their brushes.
This has been another entry in the billion part series: Why Analogies Are The Weakest Arguments.
When I realized that a plural form of the third person could be used in a gender-neutral way for the singular form, I was in awe.
* * *
Trivia:
In French, the common rule is "le masculin l'emporte"[1], which means the "male form wins"; if you talk about a group of 100 females and a single male, you must use the male form "ils" instead of the female form "elles".
[1]: [...] on abrège parfois cette règle en "le masculin l'emporte sur le féminin", alors qu'il serait correct de dire : seul les groupes exclusivement féminin sont féminins, les autres utilisent le genre non marqué.
Roughly translated to : It is more correct to say that groups exclusively composed of females are accorded using the female form, while the other groups use the 'unmarked' form (which is the male form).
The fascinating thing is that generic he was an ideological construct in the first place, a top-down imposition that never fully caught on in English despite literally centuries of being proclaimed as proper. Singular they continued to be used the whole time, and is found in most (all?) great English writers. (Jane Austen was particularly fond of it.) I don't have citations handy, but people with similar bees in their bonnets have made sure that web searches won't lack for them.
I agree that the singular "they" is superior.