Monday, July 9, 2012

Symphonies and Software

What does a classical music symphony have in common with a computer software program? I'm a professional software engineer but am only a fan of classical music, so I'm barely qualified to make the connection, but they strike me as surprisingly similar.

Both music and software are creative works. A person uses his or her mind to create something that did not exist before. They are inwardly driven to make something wonderful and they want others to enjoy it. They may have some extrinsic motivation, like fame or a fat salary, but the best creative work comes from some inner fire. We want to create something new, something wonderful, something that will last.

Both music and software is coded. The standard Western notation for music developed notes, staves, dynamic and tempo markers and such. It is a musical language. Other less formal systems have also been invented when it suits the music, like the jazz chord chart. Similarly, software is encoded using a variety of programming languages. Each language is designed to make certain tasks easier. There are general purpose languages (like C or JavaScript) and more domain-specific languages (like SQL or HTML). It shows that language is a malleable tool. We have the power to invent whatever language is needed for what must be done.

The language of music and software allows for abstraction. Low-level complexity can be hidden to allow higher-level ideas to come out. The composer knows the inner workings of his symphony, the harmonic structures, the themes and recapitulations, the balanced orchestration, and he captures all of this with the language of music. The listener may be aware of some of this, but it's not essential. He can simply listen and be moved. Likewise, the software developer knows the structure of his program. He has well-designed interfaces, tested modules, efficient algorithms and optimized inner loops. The user never sees it. If the program works, if it does exactly what he wants, if it's fast and stable, and if it's adaptable to new features over time, he grows to love and depend on that program for running his daily life. The composer and the programmer see the beauty of that complex inner structure, but everyone can appreciate the beauty that flows out of it.

Music and software allow us to communicate more directly than words. Music captures and communicates emotion and software captures and communicates work. How do you feel? I could try to describe it to you with words, or I can communicate it in a more immediate way with music so that you can feel it to. How do you do that? I could try to describe the process in words, or I can give you a software program that gets the job done for you in a faster and more efficient way than you could on your own. In both cases abstract thought-stuff comes to life as we listen to the music or use the program.

Both music and software give us insight into the nature of reality. Just like the discovery of the Higgs boson, we are privileged to get a glimpse into "how it all works." Why do certain chords or rhythms have such power? I think of it as mathematics incarnate. We can experience in an immediate way the beauty and perfection of mathematical proportion. In the same way, a new computer program that allows us to video chat with someone around the world allows to us exercise something like omnipotence over time and space. The almost unreal description of quantum mechanics turns out to be very useful when designing integrated circuits with millions of transistors. We might not believe all this talk about quarks and leptons and bosons, but there it is, working right in front of you.

And all this, both music and software, gives us insight into human nature, into who we are. Man is able to reason and dream beyond the bounds of our immediate experience. When I hear a Brahms symphony or a Bruch violin concerto, my emotions are moved and I ponder the significance of my existence. In the same way, I see a terabyte hard drive and a gigabit Ethernet connection as a fulfillment of the divine command to "subdue the earth." We should marvel at the logical complexity of software systems like databases and search engines. How is it that man is able to build such massive and wonderful creations out of 0's, 1's and a simple logic table? Even if you think our Internet-era utopianism is a little overblown, there's something very wonderful about being alive in this age. It is a marvel what man has done and we are right to enjoy it.

No comments:

Post a Comment