Wednesday, October 19, 2005

The Great Sin of software development

The canvas of our being is drawn upon by thinkers and scientists, painted by artists and stained by some leaders. Each of us is self-aware and has an idea of how we relate to our surroundings, or the context of our being.

There was an archeological moment during which we became aware of ourselves. The same mechanism that made us self-aware also helped us find ways to satisfy the urges of an aware engine driven by instinctive stimuli. This is the Satanic Phase of our evolution as symbolized by Eve accepting an apple from a snake.

We are all borne with the Great Sin of being equipped with the mechanism of awareness and instinct. Thus, we are ready to become Pablo Escobar, Hitler or just a mean exploiter in our small territory. We must be reborn spiritually in order to evolve from Satanic Phase to Devine Phase.

The Satanic Phase will always coexist with the Devine Evolution simply because we are borne with the Great Sin. In fact, Jesus clearly told us that the highway to heaven is very thin, which could be taken as an indication of the possibility of Armageddon. I only hope there will be some reborn survivors to spread our species throughout the galaxies.

Armageddon does not apply to our creations, only catastrophic failures. The context of our being learns from failures and our creations evolve thereby reshaping our being. Programming was born with the Great Sin of the mentality of coding a device. From early days we have tried to give birth to the notion of abstract programming.

We started out with a paradigm contest until we realized that the sum of all paradigms leaves out a lot to be desired. Then entered the paradoxical era of specification languages. Presently, the design tools are the next wave of specification languages. However, at least there seemed to be a glimmer of hope with regard to specification languages.

An abstract programming language, close enough to a specification language can be conceived in the context of computational and algorithmic activities. The first step in separating user interaction (the GUI) from the algorithmic component was taken by Smalltalk. However, the language was awkward for developing computational algorithms. Java spoiled the whole beauty of the idea by marketing itself as a simpler version of C++ with GUI capabilities.

The idea of Smalltalk was to develop the algorithmic components in an abstract language and leave the GUI construction to the tools, with simple gluing mechanism to the computational component. The languages C and C++ are familiar to every device programmer, and are firmly established. An abstract language for developing applications should evolve from such proven standards because the Great Sin will not disappear.

An abstract language for developing platform-independent distributed applications needs a great deal of research into the past, as well as the current state of affairs. The goal of an abstract language is to serve a purpose similar to mathematics. The language should be monotonically extensible without redundancies imposed by implementation obstacles.

Z++ is platform-independent superset of C++ for developing abstract distributed applications. In other words, Z++ is of evolutionary nature based on established standards. The treatment of GUI is an evolutionary adjustment to the Smalltalk approach. Thus, the marketing department can design the interface and pass it on to the engineering department, instead of submitting a manual of GUI printouts to be coded.

Z++ is freely available from ZHMicro

Labels: , , ,