Monday, May 30, 2005

An abstract language is the only way to go

The pioneers at the philosophical phase of programming faced a large amount of vagueness and confusion. As the philosophical period faded away, despite all the great work by the pioneers, the design of an abstract language slid into its being viewed like the paintings of artists. There are those who like one style of paintings, and those that like another style.

The artistic taste is only a necessary requirement for the design of an abstract language. The activity is by far scientific than artistic. It goes without saying that a practitioner with shallow understanding of the history of software development lacks the qualities of a scientist. On the other hand, writing articles without relevant practical experience is the trait of a philosopher. In particular, the domain of application software is quite real and does not lend itself to our creative interpretations. Anymore, a scientist for this endeavor is one who faces the challenges personally, not one who looks over shoulders and proclaims philosophical announcements.

In the beginning the universe of software development was fertile due to lack of prior experience. Many languages were born, some based on scientific research and others purely for pinning down a government contract. This has created the perspective that language is like a car. Sometimes we need a Ferrari, and other times a truck is more suitable. This naïve perspective lacks the insight that the domain of application software admits an abstract language.

The chaotic state of applications written in several languages and dependent upon multiple gluing mechanism, like XML and CORBA is a direct consequence of the lack of an expressive abstract language. The confusing murky situation will only get worse by further requiring that certified experts deal with various aspect of an application which rely on proprietary technologies. The only way out of further gambling is to drop all dependencies. Thus, an abstract language is the Holy Grail.

The abstract language Z++ is a superset of C++, with corrections and coherent extensions for platform-free distributed computing. The only requirement for availability of Z++ for a platform is a C++ compiler. The Z47 processor is about 500K and supports the entire Z++ language for any platform. Now, if a particular platform only admits a C compiler it should be referred to as a device, not a platform. One programs a device, but develops applications for a platform.

Labels: ,