Live data from Hacker News

Knuth: Computer Programming as an Art (1974)

paulgraham.com

71–80 of 110 posts

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

#71

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.

In CS you build abstractions on top of binary data and binary data operations. Who says I can't build abstractions on top of wood or clay? What is the true nature of an "abstraction"? What is a computer?

We try to create this machine that does things that exist only in the virtual world. Abstract operations and abstract data are the primitives or so it seems. The problem is these constructs are limited. We cannot have an unlimited amount of data nor can we have an unlimited amount of computing speed.

Why is this supposedly purely virtual abstraction limited? Because nothing can be purely virtual. Abstract data and procedure are both in itself abstractions on top of physical objects that are limited by the laws of the physical world (aka the laws of physics). There is a deeper physical primitive that exists underneath this abstraction we call information. Every virtual bit in a computer is an abstraction on top of this physical primitive.

What is this primitive?: silicon, aka Clay (SiO2).

So in short, if computers are artistic clay sculptures, then programmers are working with clay. Thus every time you program you are doing "arts and crafts." Programmers are both artists and craftsmen, the terms are one and the same.

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

#72
post #22

Earlier quoted context omitted.

Title now changed from "Paul Graham: Programming as Art" to Knuth:

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

That one is a scanned PDF; its contents don't appear to be indexed by, e.g., Google; its availability is dependent on the continued goodwill of the ACM.

Paul Graham's copy is plain HTML, sitting on the open web where anyone can see it and index it, and while for the rest of us its availability is dependent on PG's continued goodwill presumably he likes being able to rely on it staying there as long as he wants unless he's explicitly forced to take it down somehow.

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

#73

Earlier quoted context omitted.

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…

> In CS/programming, if we're doing any experiments, they're

> done because we're too stupid to infer the right answer

That's the same as for physics. In theory, there is no difference between theory and practice. In practice, there is.

More specifically, for CS: what you're describing is an alternate universe where the halting problem[1] doesn't exist, or rather has been solved. In short, there is no way to predict, in the general case, whether a program will terminate or not, other than running it (= doing the experiment).

More generally, if you have a mechanism that predicts with perfect accuracy what the output of my program is, more quickly than running the program, then I will just call that new mechanism "the program", and use that instead of the original program. And then you're back to running the program to find out what it does.

UPDATE: To me, this is a (if not THE) fundamental results of theoretical computer science: a precise description of its limits. And since this is an article by Knuth: "Beware of bugs in the above code; I have only proved it correct, not tried it"[2]

[1] https://en.wikipedia.org/wiki/Halting_problem

[2] http://www-cs-faculty.stanford.edu/~uno/faq.html

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

#74

Earlier quoted context omitted.

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 experi…

> 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.

Whilst I know a little about art, I'm not confident enough in my own experience to put it so strongly.

> because the arts are not primarily about technique

Agreed. I think your subsequent definition of art is a brave one! It's difficult to define, but I get where you're coming from. As you hint at in the subsequent paragraph.

> What's left is usually neither rigorous nor beautiful.

A bit harsh! But yes, there's a large body in the middle that just gets things done.

Sounds like you may be immersed in the arts world, and I've already cited these before, but you may enjoy the Grayson Perry lectures if you haven't listened to them already. I found them refreshingly straight-talking:

http://www.bbc.co.uk/programmes/b00729d9/episodes/downloads

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

#75
post #72

Earlier quoted context omitted.

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

That one is a scanned PDF; its contents don't appear to be indexed by, e.g., Google; its availability is dependent on the continued goodwill of the ACM. Paul Graham's copy is plain HTML, sitting on the open web where anyone can see it and index it, and while for the rest of us its availability is dependent on PG's continued goodwill presumably he likes being able to rely on it staying there as long as he wants unless…

You have a point. I still find it odd to use a personal domain (other than the author's) for this purpose, with the Internet Archive and other options being available.

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

#76
post #22

Earlier quoted context omitted.

Title now changed from "Paul Graham: Programming as Art" to Knuth:

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

Knuth is famous for focusing on writing his books. He even stopped using email because it was too distracting. I doubt he has the time (or interest) to export all his writing to modern indexable formats on a site he maintains (Prof. Knuth feel free to yell at me about this assumption). He is clearly credited. Just getting the knowledge out there is good.

What I find truly astonishing is that this 1974 paper is so relavent today.

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

#78
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…

> if you are original and independent thinker

You equate art with originality, but Knuth do not, and most arts except "Contemporary Art" did not either. Just turn your eyes to Quattrocento or Chinese landscapes: these artists are not trying to invent something or be original. Listen to Bach: where is the inventions? It is just a natural flow of notes in a structuring harmonic frame. I do not imagine Bach thinking "Let's do something unheard" when writing his partitions.

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

#79

Earlier quoted context omitted.

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 experi…

Things named "X Studies" are almost always empty bullshit.

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

#80
post #19

Earlier quoted context omitted.

Is it though? It can certainly be formal. But so is logic, so is mathemetics. I am not sure there is a clear consensus if math is a science. I can go with engineering (but licensed engineers might object to that), art or craft perhaps.

I've heard mathematics classified as a "structural science", as opposed to the "natural sciences". Theoretical CS fits into that "structural science" umbrella term very well.

Ok I can see that. Though I never heard the term "structural science". At least in US I most people talk about Science and Math. Math is explicitly not included in the "Science" category because it is mentioned separately. Otherwise it would be like saying "Engineering and Chemical Engineering".
Post reply on HN