Re: Language Oriented Programming



Responding to Raxitsheth...

Hello All...

http://www.onboard.jetbrains.com/is1/articles/04/10/lop/

There are two directions one can go with this. One is to create DSLs at the 3GL level. The other is to create a language that allows one to abstract arbitrary domains directly in domain terms.


There is no question that 3GL DSLs can improve developer productivity and software reliability compared to traditional 3GLs. The downside is that they represent a high degree of specialization; the developer must learn a new DSL to solve a problem in a new domain. This can be a problem for larger applications because they often have subject matters from different domains and sometimes those concerns overlap. For example, an Inventory Control application needs a knowledge of the goods being inventoried and associated business processes. But it also requires a knowledge of operations research forecasting algorithms.

Another problem is dealing with the computing space. Almost all commercial software critically involves mapping a business domain into the domain of hardware computational models. One must necessarily manipulate the business abstractions in a manner that provides optimization in terms of the hardware models. To avoid explicitly dealing with that optimization the DSL compiler must provide optimization for the computing space. But the only way that can be done is if the DSL itself is sufficiently abstract so that it is independent of local computing environments. However, that segues to the second evolutionary road.

If one has sufficient abstraction so that the solution representation is independent of the local computing environment, one has a 4GL. To provide that level of independence one needs a high degree of abstraction. In particular, one needs to be able to abstract business concepts directly in those terms simply because one can't use computing space terms. That happens to be exactly what OOA does. If one has a general purpose language capable of such abstraction, one doesn't need a DSL because one can directly abstract exactly the same way the DSL does.

UML represents such a 4GL and translation technology allows transparent optimization for the local computing space through the transformation engine. Translation evolved as an extension of optimization for the deterministic (albeit highly complex) computing space. But it ended up in the same place where 3GL DSLs are destined to end up: a general purpose language for directly abstracting the problem space purely in problem space terms and then compiling executables from it that are optimized for the computing environment.

Bottom line: I agree with Kazakov that there is nothing in LOP that is not already addressed in OOA when combined with MDA transformation. IOW, it is too little, too late.

*************
There is nothing wrong with me that could
not be cured by a capful of Drano.

H. S. Lahman
hsl@xxxxxxxxxxxxxxxxx
Pathfinder Solutions  -- Put MDA to Work
http://www.pathfindermda.com
blog: http://pathfinderpeople.blogs.com/hslahman
(888)OOA-PATH



.