Reading 04: Programming is an art (Donald Knuth approved!)

Paul Graham sees hacking (and by extension hackers) as closer to an artform than anything else. Paul describes hackers as makers, people who are creating something beautiful, not necessarily something new and original, but something beautiful whether in output or in design. I believe his definition is compatible and in fact fits in very well with Levy’s description of hackers. The hacker ethic even mentions that computers can be used for art and beauty! Additionally, from the stories we have read of early hackers trying to impress other hackers through code shaving to tales of hackers choosing to program an astronomically accurate star chart for the background of a game, we can see that beauty has been part of hacking since it’s very beginning. There are certainly diminishing returns to code shaving - once you’ve reached the point where you are spending hours upon hours to try and shave off a line or two of code, you’re wasting your time if you purely think of your efforts as being to create a more efficient program. It would take years to get back the time you spent coding that program in terms of faster runtime. However, if instead you think of your efforts as being to create a more beautiful program, then you can argue that there is no wasted time. In that case, spending hours to shave off a line of code from a program is like Michelangelo spending hours to sculpt the veins in David’s hands to look more realistic, as there can be no objective value based on beauty. The value is assigned entirely by the hacker doing the programming, and if the hacker thinks their time is well spent, then there can be no argument against it.

 
Paul’s arguments are a refreshing breath of air for me personally, and they make me want to take more pride in my work. As we discussed in class last Thursday, many other engineers at Notre Dame call computer science a “fake engineering major”. In my opinion, they are completely right. Leaving aside my personal opinion that other majors have more difficult courses that they take (required math & science courses >>> required computer science courses) computer science is fundamentally quite different from other engineering majors. All of these other majors lead to physical, real world results (and are accordingly restrained by real world factors), while computer science has no physical outputs. Our outputs are entirely digital, and are thus unconstrained by real world limitations (for the sake of this argument I’m ignoring hardware limitations as being a bit nit picky). Computer Science in addition, is a discipline that lends itself far more to creativity and beauty than other engineering disciplines do. Mechanical and Civil engineers are far more focused with functionality than they are with design - a civil engineer that cares about design is really an architect. Computer Science on the other hand can be used for far more beautiful things, as early hackers have shown. You can code up an astronomically correct projection of the stars. You can do some code golfing and create a program that prints itself. You can create programs that have no real function at all, and just create some pretty colors that show up on your screen. And that’s perfectly fine, because to hack (and thus to program) is to create something beautiful.

Comments

Popular posts from this blog

Reading 09: Open source? Sounds communist to me

Reading 02: ABC Always Be Selling out