In our discussion on the multiple aesthetics of code, we mainly focused on form and function. A few made arguments that when analyzing aesthetics of code, one shouldn't take into consideration the aesthetics of English (or, however it is humans communicate — we just happen to use English), but instead the fact that this code is made for a machine — a machine which doesn't share our same notions of form and structure.
Thursday, February 28, 2008
The Purpose of a Language
Throughout this discussion, however, I feel something important was overlooked — namely "purpose". What's the purpose of code? Why do we have programming languages?
In the early stages of computing history, the sole purpose of code was to control a machine. Because of this, it made sense to have the structure of the language match the structure of the machine. Obfuscation of code was simply a bi-product of this fact, seeing that your instructions had to match the specific features of the machine — not a human being.
As time went on though, and as more scientists made advances in mechanical computing, more machines would pop up. IBM had their machines, Cray had theirs, and Digital Computing Equipment shipped a whole bunch of PDPs, so writing software for each of these machines meant bending your brain to convert your thoughts into however each individual machine "thought". That is, each time you wanted to think of something for the computer to do, you had to not only think it through yourself, but then also think of it in the way that the computer understands data — whether it meant having a certain series of switches flicked to the "on" position, or specific holes punched out in paper tape, you had to convert your human logic — each time — into whatever arbitrary system a hunk of hardware happened to use.
The purpose of computers was to alleviate our own minds of repetitive and tedious computation, but instead, we found ourselves enslaved to them at this point. We were not only forced to think how one particular machine thought, but every particular machine that anyone ever made.
Clearly you see the problem.
The form and function of mechanical computation was undoubtedly preserved, but the purpose of mechanical computation was lost.
This led to the creation of possibly one of the most important programming languages in existence — C. The idea behind C was to bridge the two "modes of thinking" (that of human, and that of machine), without sacrificing the human's ability to harness the power of the machine. Two employees at AT&T Bell Labs decided that they tired of their previous choice of programming language's inability to harness more of their machine's features, and so made C to improve upon it. Yes, we're writing instructions for machines, but ultimately we are humans. We want to be able to think and map out ideas in a way that makes sense to us, and our peers. Plus we want it to work efficiently. And on a multitude of machines. Does that sound like too much? Or perhaps overly demanding? Well we made the darn machines right? We're smart folks, why not get it right (or at least try to)?
Anywho, back to aesthetics. I believe that to say the aesthetics of the language should be determined based on the structure of the hardware its used on is to completely ignore the purpose of computing in general. We did not invent computers to enslave ourselves to a lifetime of conforming to each individual machine's architecture. We're smarter than that. We're humans — remember? We invented computers to liberate our own selves by allowing a way for our own human thoughts to be performed quickly by an external entity. Therefore, if the aesthetics of the language doesn't coincide with the same set aesthetics we would apply to instructions written for another person (or in other words, if the code is not easily read and understood by the human writing, reading, or editing the code), then it doesn't matter that your code is beautifully in sync with the underlying machine. You've added yet one more hurdle a human mind must clear in order to get that machine to do what he or she means. Yes, this is my opinion, but I believe this counters the purpose and goal of mechanical computing. Until the day when machines write code for other machines, the code should support the aesthetics of its (human) author.
-JTF
Subscribe to:
Post Comments (Atom)
1 comment:
There's some interesting historical information on Software and Language on the website of the Computer History Museum:
http://www.computerhistory.org/timeline/?category=sl
Post a Comment