Painting With ThoughtThis Week: Programming
Thursday, October 8, 2009
Category: Arts & Entertainment > Columns
On the second or third day of Computer Science 61A this semester, our professor, Brian Harvey, made a rather poignant observation: "CS, as a field, is really misnamed. It's not really about computers. That's electrical engineering. Nor is it really a science, because we aren't actually discovering things that already exist. We're really information engineers. We're creating things that didn't exist before us, using only our ability to think." At least that's what I heard in my heart.
It should come to no surprise to anyone who knows me why, after hearing that, I immediately fell madly in love with the field. It should also come to no surprise to people who know me that I immediately decided that I had to figure out a way to turn programming into a fine art.
I can understand if you're skeptical.
"But Daniel" you say, sagely, "There's nothing on earth less artistic than programming. It's formulaic and unforgiving and rigid and colorless and boring and complicated and dry and efficient, exactly the opposite of art!" I hear you. If traditional fine art (visual art, music, literature, etc.) was on some sort of linear spectrum of rigidity, then computer programming would be very far away. But creativity isn't a spectrum. It's a circle, and by going around opposite directions, programming and traditional fine art have reached the same place.
They aren't so different, when you think about it. At their core, all the arts are about realizing a vision using a certain basic toolset. With painters, that toolset is their brushes, berets, paint (and paintlike things, like strawberries or poop-Google it!-or whatever they're smearing on canvas these days). For musicians, it's the instruments they play. For writers, it's words and cigarettes. For chefs, it's their ingredients, their kitchen and Italian accents.
In all cases, artists realize a vision by assembling primitive elements. It's exactly the same in programming. The only difference is that programmers use basic functions like plus, minus and equal, and the beauty of the final product is not the sight, sound or the taste but the visceral pleasure of perfect logic.
A few weeks ago, we learned about Abstract Data Structures, which are essentially arbitrary rules for organizing and storing information. The most important of these was the capital-T Tree, which follows a rigid format: The first thing is some piece of information (a "datum"), like the name of a planet. Everything after that is a "child" of the first thing, like names of countries on that planet. But it gets better, because every "child" is itself a Tree and has children of its own (like the names of states). A datum can have one child, or five thousand, or zero. (Oh my god, I'm so smart!)
On the last day, we were shown a program called "Treemap," only four lines of code, not more than 30 words, that-while preserving the structure-could do something erotically exciting to every element in the entire tree. Like make every word plural.
If there is a beauty in the creative process that results in a painting or play, then that same beauty can be found in the creative process that results in a computer program. If art is about the communication of an emotion or idea, then programming is the art of arts, about the best way to communicate any idea. There is no room for error. The computer doesn't "get" what you're trying to do. It's an asshole. World-class programmers must master their instruments in the same way that world-class musicians must master theirs.
They are painting with thought.
Admonish Daniel for his vulgar language at [email protected]
Comments (0) »Comment Policy
The Daily Cal encourages readers to voice their opinions respectfully in regards to both the readers and writers of The Daily Californian. Comments are not pre-moderated, but may be removed if deemed to be in violation of this policy. Comments should remain on topic, concerning the article or blog post to which they are connected. Brevity is encouraged. Posting under a pseudonym is discouraged, but permitted. Click here to read the full comment policy.