Looking at paintings, they are often composed of a figure and a ground. The figure is usually what is more visible for the eye. Often the ground is less important as recognizing the shape is thought to be satisfied by recognizing the figure.
Understanding the figure can be simpler due to its more concrete and explicit nature, but the vision can not be complete without the ground. I even guess that thinking about the ground as a result of drawing the figure is quite naive. I guess that the ground defines rules of the environment, and is present implicitly in the definition of the shape. The fact that these rules are implicit makes them harder to capture. And easily ignored.
If we think about Object Oriented Programming as a figure, then what is the ground? The ground should be the environment that allowed us to define this meta-System.
Thinking about OOP as a meta system, allows us to capture the meta-meta-system. How this meta-meta-system can be defined?
Well, If we look at objects, they are special things that fall in a category ,things that fall in this category have special kind of relationship called inheritance, this relationship is governed by rules of polymorphism. Also we can add adjectives to tag some special behavior on the methods and properties of these things.
So far, I got things that fall in a category, governed by rules applied to relationships . moreover methods and properties of these things can have adjectives that can add rules on their use.
Now, with such a meta-meta-system I can define another meta-system than OOP, say a hierarchical one, or maybe a system of connectors. These several meta-systems can co-exist exactly as several categories of things co-exist in real world.
 A question that raises evidently here, is How do they co-exist? How do they inter-connect? The simple answer is : messages… The problem of the integration of different types of paradigm had always existed, and had always been pushed out to frameworks to handle it. I believe that these frameworks of integration are themselves not well integrated in the language. Maybe including them in the language can make more natural?
Anyway my whole idea is a paradigm oriented programming language, where we define dimensions, that we can use to define meta-systems. I see the idea is pretty faisable, might be more than a (things, category, relationship, rules, adjectives) even if I could imagine a lot of meta-systems built only on this 5 dimensioned programming language…
All what I am about in this blog post is ideas, far from being mature.It is just a stream of ideas that I felt to persist somewhere. And here I did :)



How is a paradigm oo language different than a dsl with principles of object orientation?
Comment by Dave — July 27, 2007 @ 4:58 pm
Good question Dave.
When you do your DSL, you ll be trying to represent your business model, in the best way without constrains coming from the hosting language. In a Paradigm oriented programming, you can create a paradigm, with a meta-system that describes, say, a hierarchical paradigm. A paradigm where for example any call to any method on the target will be reported (intercepted) by the responsible of the hierarchy. Such a paradigm can be represented by a relationship that is responsible, and things that are members of the hierarchy. In the same way that OOP implementations introduce static, virtual and override, you can introduce adjectives on members of this paradigm. I know that interception is possible in Java for example, but it is not natural /see Thing Oriented Programming/, and it is not only about interception. In a Paradigm Oriented programming language, you can add semantics to the programming language, which will be used all along its use.
I hope that i could answer the question. Anyway feel free to ask more questions if interested. Often i am very implicit in my writings, and i am not a native English speaker :p
Comment by sadek — July 27, 2007 @ 8:54 pm
[...] a lot with Meta programming System of JetBrains. I feel that it has a lot in common with my idea of Paradigm Oriented Programming. In the way that it defines the language by links, adjectives and things (i.e. dimensions) that [...]
Pingback by Sadek Drobi’s Blog » Java or C# do not fit as a host language for DSLs, Lua is a better alternative to use as an IL in a Meta programming System — July 29, 2007 @ 10:40 pm