On Programming Languages

April 16, 2007

Recently on my current project, one question arose, what Endian is the target PC? Well, actually I’m the one who asked that question. And while it might be late in the current project state, still it’s a very important fact to take notice of. The problem is that we’re developing an application that sends data accross a network. The spec only says things such as memory addresses used to store variables without any regards on Endians and all. So, when I have to save a data of,.. let’s say a 64 bit integer on 4 sequential memory address, suddenly Endiancy came into play. My project leader couldn’t answer the question immedietly. Apparently she didn’t take note of it (or maybe doesn’t even knew there is such thing as Endians. doh.).

Anyway, that question brought me (again) into a discussion in my head about the architecture of programming language. Wouldn’t it be great if we could just have a framework totally free of the hardware layers? It means that I do not have to worry about endians, memory layout, integer sizes, and memory alignments, etc. Of course I realize that this problem couldn’t be handled with current technology and with all those varieties on how microprocessors and os-es implement their internals.

I was reminded of a discussion in Technology Review. The question was asked to Mr. Bjarned Stroustroup, the creator of C++. Does he regrets of inventing C++? The arguments are that C++ is too complicated and destroys (changed) the already beautiful C constructs. He answers, that he never regret of creating C++ and that programming language evolved so that previous paradigm became the base of the next paradigm. (I think he said so). Well, I agree. I can’t imagine what will become of today applications without C++. C++ provides a bridge to transform between Procedural Programming to OOP. It’s one of the key why the world of programming can adopt OOP in such a fast pace. If there is no C++, maybe today we’ll still be programming on C and OOP will be alienated. The paradigm shift is necessary and to do that C++ was necessary.

When I look back at the previous programming language that I learned, I realized that as we go from the oldest programming language to nowadays programming language, we move from hardware oriented to application oriented paradigm. Assembler is just a mnemonic for microprocessor instruction codes, Pascal and C is created to ease development by abstracting hardwares with frequently used Macros and Patterns (sorry, I don’t mean to offend C and Pascal lovers). C++ pushed what C and Pascal have to offer with more abstractions and more Patterns with RIA. And .Net and Java makes people forget about the underlying memory structure (including initializations, cleanups and memory releases) while promoting the OOP model.

As you can see, current programming language were built by using previous programming models as their base. The major transition as far as I can see is the transformation between Procedural Programming Language to OOP which was provided and helped by the presence of C++.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: