Sunday, May 22, 2005

The Z++ evolution

This note is a description of observations that led to Z++ abstract language.

Introduction.

Reality is insensitive to its virtual depiction by any form of intelligence. Contradictions in our theories affect us, only. Zeno was well aware of that or else he would have offered himself as the target of the never reaching arrow.

An interpretation of reality is a virtual representation comprising of our abstractions and theories. We usually measure the closeness of our interpretation with the degree of our ability to manipulate the reality in desirable ways. The four-element interpretation was too far as compared to the periodic table of Mendeleyev, which enabled us to create none-existent elements.

The domain of application software is a virtual reality, nonetheless real in its own right. It is just as insensitive to our interpretations as the actual reality is. We can either deal with it via the four-element theory, or move up to the periodic table.

Expressiveness.

According to Webster, paradigm is a theoretical and philosophical framework for a discipline. Expressiveness paradigm is the view that developing application software is not the same activity as putting down instructions to a machine.

Each category, depending on size and user interface of devices in its collection, has its own domain of applications. For instance, a full-fledged word processor is not a suitable application for a smart-phone.

Developing an expensive application for a specific version of an operating system is embracing bankruptcy. Thus, for a developer the target of a standalone application is the entire category. Presently, distributed applications are targeted to a subset of available platforms due to lack of an expressive abstract language.

Paramount in expressiveness paradigm is the requirement of generality of its underlying abstract language. Different sets of linguistic features for each category is an indication of dependence upon hardware and is therefore contrary to abstractness. The idea behind abstraction is to learn certain techniques and to be able to apply them in similar situations. Variations in the language cause the learning of multiple unrelated techniques for most ordinary tasks. This in turn obstructs the natural process of building intuition in dealing with similar problems.

An important research in expressiveness is the involvement of compiler in all aspects of a software solution. We have incrementally achieved higher degrees of compiler participation from the initial plain translation of formulas to machine instructions. For instance, the Z++ verification of exceptions is a compile-time entity just as type checking is.

Abstractions that have proven useful in any language should not be neglected for matters of prestige. The class invariants of Eiffel, the array treatment of APL, and some ADA abstractions are among a few that should not be abandoned due to the challenges of a coherent design.

Requirements.

Fundamental to the assumption of expressiveness is the absence of loopholes. The closure of an abstract language is its independence from any particular implementation, especially without having to rely on a set of specialized libraries. Instead of the loophole of library calls replacing system calls, the language should have the proper linguistic constructs to deal with abstractions.

Expressiveness paradigm does not seek minimalism. However, including syntactic sugar redundancies merely to support transient commercial products is a violation of abstractness. An abstraction that claims to be compatible with just about anything else is a useless commercial product.

Issues.

Whether intelligence is the result of evolution or revolution is unknown. The fact is that without preliminary work by evolution, there would not have been a mechanism to be equipped with intelligence. In the same vain, we should start out with a language that has proven successful in building large and complex software. Fortunately for us, there is a popular language that qualifies as a starting point.

C++ is a system programming language. Nevertheless, most application developers fall back on C++ despite the fact that their software will be limited to a particular device. A serious developer knows that the entire set of languages for developing applications put together does not match up to C++. We are not speaking of slowness and the sizes of virtual machines, but the linguistic facilities of C++.

Several years prior to 1993 were spent in evolving C++ before it was ready for the Z++ revolution. However, to an engineer Z++ is just an evolutionary superset of C++ for developing abstract distributed components and applications. The revolution of independence from platform is invisible at language level. One should differentiate between languages presenting a small subset of C++ and Z++, which includes C++ as a relatively small subset.

Conclusion.

It is hoped that this brief introduction will encourage you to take the step to your freedom, once and for all. The home of Z++ is ZH Micro

Labels: , ,