Live data from Hacker News

Knuth: Computer Programming as an Art (1974)

paulgraham.com

61–70 of 110 posts

Re: Knuth: Computer Programming as an Art (1974)

#61
post #53

Programming is much more of a craft than it is either an art or a science. Good craftsmanship combines beauty with utility, as does good coding. Programmers work with abstractions, rather than with wood or clay. And their craft is as cerebral and intellectually demanding as an art or a science. But it's still a craft.

Michelangelo was working with chisel, colors, palette - was he a craftsman? How about guys that were replicating his work? They would have been closer to the 'craftmanship' side. Programming is art for many of us. For some it's a craft. If you are original and independent thinker in our profession, have creative ideas nobody had prior to you, you are much closer to an artist. If you just reuse what somebody else crea…

Craftsman by day, artist by night.

--Programmer Man

Re: Knuth: Computer Programming as an Art (1974)

#63

Programming is much more of a craft than it is either an art or a science. Good craftsmanship combines beauty with utility, as does good coding. Programmers work with abstractions, rather than with wood or clay. And their craft is as cerebral and intellectually demanding as an art or a science. But it's still a craft.

The way I tend to picture roles in software is in analogy to my old job in aerospace.

We have scientists/researchers who focus on the theoretical aspects. We have engineers who have a reasonable understanding of the theoretical aspects and tend to work in the design space. And we have craftsmen/technicians who have a reasonable understanding of design and tend to spend most of their time coding.

A sort of pastime of mine is to follow arguments on technical subjects and see if I can see these groups talking at cross purposes because they see the world from their perspective. Although if it relates to Haskell I don't bother as it's a gimme.

Where I do see a difference between software and aerospace is that, in software, there's a more noticeable feeling of hierarchy. To paraphrase: Haskellers look down on C programmers look down on Javascript programmers (like some sort of geeks' That Was The Week That Was sketch).

Maybe it was like this in aero too (I was quite young). What I do know is that I was in awe of the skills of the crafties I worked with. Unless you've watched a chap spray paint a propeller to a finer tolerance than a purpose built robot, you only have a partial understanding of the word exquisite.

Re: Knuth: Computer Programming as an Art (1974)

#65
" The moral of this story, it seems to me, is that we should make use of the idea of limited resources in our own education. We can all benefit by doing occasional "toy" programs, when artificial restrictions are set up, so that we are forced to push our abilities to the limit. We shouldn't live in the lap of luxury all the time, since that tends to make us lethargic."

I love the way Knuth expresses himself.

Re: Knuth: Computer Programming as an Art (1974)

#66

Earlier quoted context omitted.

What part of computer science is experimentation?

I am tempted to write: "what part isn't?" Seriously, just about everything we do in computer science is experimentation, at least if it involves... physical computers . Every time we run a program, we run an experiment. At least if we have some expectation of what we want the program to do. Every time we write a test, or run a test suite, we are running an experiment. Every time we implement some sort of abstraction,…

That's not the kind of experiment I meant.

In physics, we do experiments because we don't know the rules of the natural world. That's the only way we can learn them.

In CS/programming, if we're doing any experiments, they're done because we're too stupid to infer the right answer beforehand. Insofar as you're dealing with the theoretical part of the problem, you shouldn't need any experiments, because the results are purely mathematic and should be perfectly predictable. And if you're doing hardware experiments, it's not computer science either - that's electrical engineering or applied physics. Whatever other tests you may be doing to save some time are still the engineering type.

The point is, computer science doesn't have any area in which it could use experiments for discovery. It's fair to say then, that it's not really a science. (It's also fair to point out that the line between science and engineering is getting blurry nowadays.)

Re: Knuth: Computer Programming as an Art (1974)

#67

Earlier quoted context omitted.

OK, but why does PG host this? It's freely available: http://dl.acm.org/citation.cfm?id=361612

Presumably same reason why someone re-tweets something and now it's on their profile. Or he just felt like it.

Generally you somehow point to it.

Re: Knuth: Computer Programming as an Art (1974)

#68

Programming is much more of a craft than it is either an art or a science. Good craftsmanship combines beauty with utility, as does good coding. Programmers work with abstractions, rather than with wood or clay. And their craft is as cerebral and intellectually demanding as an art or a science. But it's still a craft.

I agree, craft is much more appropriate. I think this is a confusing essay, because in everyday speech "art" is employed to mean something very different from "an art" and we get lost in semantics. The continued references to obsolete definitions confuse things further. In practice, the phrase "an art" is usually used in the same way as "an artform", as it is not meant to be taken literally; a commentator may say "th…

I think Computer Science is the branch of maths that studies computing. Things like Computability, Complexity Theory and Information Theory are clearly branches of Maths, and Math is a science. Now, most CS courses are not about this: they are engineering courses at heart, that only use CS in the way a Civil Engineering course may us Physics.

Re: Knuth: Computer Programming as an Art (1974)

#69

Programming is much more of a craft than it is either an art or a science. Good craftsmanship combines beauty with utility, as does good coding. Programmers work with abstractions, rather than with wood or clay. And their craft is as cerebral and intellectually demanding as an art or a science. But it's still a craft.

I agree, craft is much more appropriate. I think this is a confusing essay, because in everyday speech "art" is employed to mean something very different from "an art" and we get lost in semantics. The continued references to obsolete definitions confuse things further. In practice, the phrase "an art" is usually used in the same way as "an artform", as it is not meant to be taken literally; a commentator may say "th…

I agree, but I'll go further than you - I don't think this essay is confusing at all. It's simply nonsense - the kind of thing someone clever writes when they're discussing a subject completely outside their area of competence.

CS can be a craft. It's not one of the arts, not even if it's beautifully put together, because the arts are not primarily about technique - they're about capturing and distilling human experiences using allusions and associations to (re)create those experiences. Fluent technique is a useful tool that help with that, but it's not the point.

(Modern art is a bit more limited than that, but that's more or less what art meant for most of Western history.)

The experiences created by the most timeless art are focused, but also ambiguous and complicated. You can get lost in them, and although there's often a clear theme, you can't define the rest of what's happening with absolute final precision.

That's almost exactly the opposite of what good code does. Which is why "That's a clever, clean solution" is an experience that exists in the craftsman's world, and is either peripheral or completely absent from an artist's view.

>I think dropping "science" from "Computer Science" would help immeasurably.

At my university the joke was always that it should be called "Computer Studies." Only a nugget of algorithmic research is genuinely scientific, and that lives in a tiny corner of the rest of the Pure Math. There could be a lot more formal provability, but going down that route would put a lot of programmers out of work, because the level of difficulty is much higher than that needed to crank out some JavaScript.

What's left is usually neither rigorous nor beautiful.

Re: Knuth: Computer Programming as an Art (1974)

#70
post #57
post #53

Earlier quoted context omitted.

Michelangelo was working with chisel, colors, palette - was he a craftsman? How about guys that were replicating his work? They would have been closer to the 'craftmanship' side. Programming is art for many of us. For some it's a craft. If you are original and independent thinker in our profession, have creative ideas nobody had prior to you, you are much closer to an artist. If you just reuse what somebody else crea…

I think it's more of an art in the classical sense (which is like a craft), in that we are artisans rather than artists. The difference being that we primarily create things valued for their utility, rather than their aesthetics. Video games being the possible exception, although even there the programmers are essentially building a vehicle for the art-stuff (story, graphics, gameplay, music) to shine through.

I am learning technology so that I can express my ideas and share them with the rest of the world, and have fun with likeminded people. I also do photography at the pro level, movies, compose music in a world-class home music studio etc. I assume if you want to be great at art, you have to be great at techn(ology/ique). In my case it means I need to write superb pixel shaders, create VSTis producing sound nobody else has produced before and still awesome, stabilizing hyperlapses with my own computer vision algorithm, making robots dance and so on. For that I need to study whatever I find at MIT/Stanford/Harvard/etc even if it is very very difficult. So is this a craft?
Post reply on HN