Friday, May 11, 2007

Simplicity is only skin deep

Walking along a river surrounded with trees and colorful flowers it was hard to deny the beauty of simplicity. The beauty was in the effortless sense of pleasure perceived through my ears and eyes. I needed not to decipher my perceptions in seek of pleasure. Alas, that was a seen in the distant past. The rivers have dried up, as have the flowering fruit trees along them. The flowers have been ravaged with useless bushes absorbing the precipitation before it reaches the rivers.

The time came that I began to think about how the river and trees and the flowers were as they were. As I entered beneath the simplicity, I found myself confused and perplexed. I then realized that simplicity is only as deep as its mysterious beauty.

The elegance of a language for software development is a consequence of its simplicity.
However, simplicity that has not evolved on a complex foundation is but fleshless skin. The sense of simplicity I have in mind is the elegance with which a language portrays complex concepts in the form of universal abstractions.

The interpretation of simplicity in designing an abstract formalism has lost direction. After all, simplicity and its beauty are context sensitive. What a mathematician finds beautifully simple and elegant may look no more than a senseless sequence of letters taken from the alphabets of several languages.

For a software engineer, simplicity is the ability to express solutions effortlessly. Once a part of a solution requires digging deeper into the platform idiosyncrasies and specialized libraries, the beauty is simply replaced with agony. A simple language that anyone can learn almost overnight is not beautiful except for those who view mathematics ugly.

Consider the historical points in mathematical progress when concepts were symbolized. For instance, compare the Roman numerals to the positional number system that we use. Or, how mathematicians of antiquity dealt with equations before the notion of unknown was symbolized. Now think about forty-character-long library functions, which take several arguments in a certain order. Where is the beauty in a simple language with a library the size of an encyclopedia, given that all functions in the library are actually correct?

The simplicity, and therefore the beauty of mathematical abstractions is a consequence of their generality. The results that Euclid established from his drawings on sand are just as valid as if he used pencil and paper. Otherwise put, theorems are not valid relative to the platform on which they are obtained.

A discipline of engineering cannot be founded on a set of languages and then more languages for gluing them together. Instead, the discipline needs a monotonic abstract formalism. This is possible, and has even been done for Application software, which have a meaning without regard to whether their initial design was done on sand, or on paper.

An application that depends on its platform of execution is a system program. For instance, Microsoft Word is only an application for Windows platform, which needs upgrade every time that Windows changes. Thus, Word is not an application. On the other hand, one should not expect an application like Word to appear exactly the same way on a PDA. The point is that, Word should be available for any OS for a desktop computer in order to qualify as an abstract application.

A platform-independent application, such as a word-processor or a spreadsheet will allow users to switch to a better operating system without having to lose their files or learn about a different application. More importantly, application developers will not have to pour their bills through Microsoft gates for upgrading their products from XP to Vista, and then again to something else.

Take a look at Z++ and you will see that this is not a dream. Quite to the contrary, it is tangible and concrete.

Labels: , , , , ,