S.D.I.-Consulting BVBA

Menu:

The Next Paradigm

1 Mar 2005

In my opinion the outlines of where the programming languages are heading are becoming clearer. In the beginning, there only was assembly language, followed by languages that supported structured programming and finally they evolved to object oriented languages. The functional languages are more abstract, they are not bound to a single paradigm and it is possible to apply all techniques.

Paul Graham stated that "all languages evolve to Lisp". I think this is true, not in the sense that in the end everybody will be using Lisp, but in the sense that more and more features available in the language will be transferred to the conventional programming languages. People are having trouble with the super-flexible abstraction mechanisms and their uniform representations available in Lisp. Specific syntax constructs for specific features, as you can find them in Java and C# are more popular.

There is a very interesting feature in Lisp that has not been copied much to other languages. It is the ability to generate parts of the program from within the program itself. There are clear signs that developers are trying to fill this niche. You can see this by looking at the Java tools that are widely used. I will describe two of these. First there is "aspect oriented programming" in which you can modify the behavior of existing programming language constructs by using a special purpose language. Secondly there is the "doclet annotations" in which a programmer can describe features inside the javadocs which can be used by external generators to generate more code or to generate configuration files.

All these tools have the same thing in common: they generate code. The tools are replacements to fill the "program generating" gap. The next paradigm will embrace this feature. It is not yet clear under which form it will become popular. Will it be one of the existing forms or will it be a newer more explicit one? Recently I encountered the Jetbrains Meta Programming System which is an example of an explicit system.  

References: