Blog Archive Entry


Unnatural Languages

Wow, is it April already? Time sure flies.

Okay, so clearly I’m not the most prolific blogger in the world. It’s not that I’m out of ideas; I just find it hard to express myself in prose nowadays. Part of this might be because I’ve immersed myself in relearning a couple of programming languages lately: Ruby, Objective-C and even good ol’ C++. It’s kinda hard to write in plain English again after all you’ve seen lately are things like if ([obj respondsToSelector:@selector(valueForKey:)]) (BlockMethods.getImplementation()->*eachPtr)([obj valueForKey:@"array"]) { |x| class << x; attr_accessor :tag; end }

You may think this is because I’m a huge geek with no life outside of computers. That is, of course, absolutely correct. But to be honest, I’m not very good at programming for a geek; I just love learning about new languages and appreciating the beauty of their design.

In my freshman year at Cornell, I took a course where we had to write a compiler for a simple object-oriented language that would output assembly for a fictitious machine. Going through this course was like a revelation: scoping rules were not—as I thought at the time—dictated by some lower-level system, but were intentional design choices. I also saw that inheritance in OOP wasn’t at all natural to implement, which implied to me that the concept of objects came first before someone decided to put it in a language.

Put in other words, I realized that programming languages were human-created abstractions. And from that point on, I saw programming languages as something akin to works of art; each language is a collection of design choices—some more unusual than others—that come together and attempt to form a coherent whole. It’s really quite a fascinating subject…

No? Oh come on, at least I think so.

Posted in Geekiness by jiunwei at April 7th, 2008. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.


Leave a Reply