Saturday, July 28, 2007

Established tools do not become extinct

In 1989 I was asked to teach C to a group of students who were only exposed to COBOL. I was caught by surprise when I found myself in serious trouble while discussing Boolean expressions. That was a long time ago and both languages were old even then. A modern language that forbids the use of traditional concepts is simply creating engineers who cannot use the equivalent of a screwdriver, should it be necessary.

Take a closer look at next construction site that you pass by. You will see sophisticated modern machinery, some rather huge. However, you also see workers wearing belts of simple tools like hammer, screwdrivers and so on. Thus, unlike programming languages a modern construction site does not forbid the use of established tools.

Some languages proudly advertise their lack of support for global scope, others boast of lack of pointers in their language, and yet others sell themselves as supporting a particular paradigm. For their defense, they will tell you about all the bad uses of the notions they are leaving out. Compare that to someone describing the hazards of using a power tool such as a drill. By the way, you hardly hear about the difficulty of designing a coherent language that could support all of the well-established concepts.

Researchers have identified many bad patterns of using the very best of programming concepts. In fact, it seems like engineers would pick up the incorrect patterns of usage unless properly trained. This is probably the greatest cause of defective software, especially when hiring engineers who lack adequate academic preparation in software development. Leaving out pointers and the lack of global scope only ties up the hands of experienced engineers, resulting in bad software written even by such engineers.

Interestingly, some venders use global scope and pointers in crafting their virtual machines and yet the language supported by their machines leaves these notions out. Unlike machine instructions, pointers are conceptual tools and are not associated with low-level programming. However, inadequate training may cause an engineer to carry over his low-level experience to the higher level of an abstract language. That is only a good marketing factor for selling a weak language for use by inadequately trained engineers.

The Z++ abstract programming language combines all successful and well-established conceptual tools for developing application software. Furthermore, Z++ includes sophisticated linguistic tools for distributed computing, component-oriented development, autonomous agents, database and service-oriented applications. All these tools (linguistic constructs) interact coherently by design, allowing the compiler to do a thorough analysis, which is not possible by the addition of extensive libraries to a less expressive language.

The following is a digression.

Intelligence has perfected the ideological notion of carnivorousness. We suck life out of our own species through the very means that were invented to end exploitation, namely democracy. The solution is not a different social system. Rather, we must find ways to curtail the ability of rapacious sub-intelligent anomalies to enslave our nations through corruptions and deceptions.

Beware of the media that you trust most. They will deteriorate the reputation of the best candidates and at the last moment they will create chaos and confusion, appointing another Bush-like to the White House. Only your eyes and ears can be deceived, not your mind.

Labels: , , ,