Sunday, February 26, 2006

Z++ and Academic Research

The purpose of this note is to demonstrate the relevance of Z++ research to the view of abstract software development. Research of each era must eventually converge and become lost in the subconscious in a manner that it can be taught systematically. Ultimately, a starting point of abstraction will have to serve as a solid foundation for further research.

The degree of the desire for an abstract software development medium can easily be measured with a look back at past few years. We all have seen what happened when Smalltalk, Java, CORBA and XML were introduced. Nevertheless, any combination of them falls short of a suitable foundation for research towards abstract software. Clearly, branching off the main stem by introducing random attempts only impedes the elevation of level of abstraction.

We know that the notion of abstract software development is distinct from programming a particular device or technology. In most cases, we even have great ideas for research towards designing an abstract language. However, it is not easy to focus on a research that takes two decades before even knowing whether it is going to work, or not. In particular when you must discard the entire work of almost a year and start over, several times.

A medium for expressing abstract software is better known as a programming language. The best way to describe Z++ is therefore to refer to it as a platform-independent programming language. However, an engineer should regard Z++ as an abstraction for expressing software solutions.

Whether we call Z++ a programming language, or an abstract language, it is only of practical interest when its statements can be translated into instructions suitable for execution on hardware devices. So, first we must solve the problem of an abstract infrastructure with specific characteristics that will be able to run Z++ executables.

The infrastructure must preserve the generality of linguistic abstractions in that the language must not admit more than one version. Furthermore, linguistic notions must remain constant as new devices are introduced. This requires that the infrastructure be self-contained and to abstract away the well-understood scientific concepts of its time.

The Z47 processor depends on the C++ and SQL standards, and a transmission protocol such as TCP/IP. Z47 is entirely self-contained except for the drawing of graphic entities. It manages its own signals, threads and everything else, without making any system calls. Despite the fact that Z47 is a mini operating system, it is less than half a meg in size. All Z++ linguistic abstractions are translated to the instructions and system calls of Z47.

Once the problem of infrastructure is solved, the expressiveness of the abstract language becomes the item of interest. Z++ contains the programming language C++ as a proper subset. Commercial attempts have only achieved simulating a subset of C++ via huge virtual machines relying directly on the operating system on which they run.

Z++ abstractions solve several outstanding problems and simplify many others. Researchers can work on new ideas without having to deal with ever-changing libraries and system calls. Their research will be based on an abstract and consistent medium.

A look at the syntax chart reveals the high educational value of Z++ in preparing true software engineers. Considering the ratio of application software to system programs it is clear that we need a considerably larger number of application developers. Nevertheless, Z++ does not branch off the main stem. Apart from including C++ as a subset, Z++ links with C++ dynamic libraries. The latter provides a trivial solution for SOA.

Z++ is freely available from ZHMicro.

Labels: , , , ,