Well this sounds great.
Are there any down sides,
or where are you as far as implementing this in your company?
>> So, we haven't implemented it everywhere yet.
We're using it right now almost exclusively for generating forecasters.
Although we've started using it in some newer applications for similar variance.
We're not generating whole applications with it yet,
we're generating mostly components of applications.
So there's a lot of opportunity there to expand its use and
we're looking into that.
Also, I think I mentioned that
this whole approach is based on a lot of prior work.
In particular, it's based on the work on these layered assemblies,
the GenVoca approach, the Head approach,
all the work of David Parnas, Don Batory.
That work is quite rich, and so we've been able to borrow heavily
from it to get the LayerBlox to where it is right now.
But that prior work also has gone on beyond what we've done.
So there are some pretty nice things you can do in some of
Batory's latest work where you can actually think about generating product
lines of product families.
Which, if you can imagine,
would scale much larger to building whole applications.
We don't have any support for that yet in LayerBlox, but
that's something we're looking into.
>> So let me get a little clarification here.
You used the term product line and product families.
Can you differentiate those two?
Probably the best is to give an example.
So what we've looked at so far is how to use LayerBlox to generate
different forecasters, different variants of a forecaster.
But a forecaster is one kind of product.
Often what you find, and what we have to deliver to customers,
is a family of related projects.
Such as a forecaster that works together with a replenishment system that works
together with a promotion planning system.
And what you really would like to do to scale this up
is to be able to generate product lines of entire product families.
And that work is, there is existing research in that area.
But we have not incorporated that yet into LayerBlox.
>> So, there's this family of compilers called GCC that
are capable of targeting various platforms.
But also they can be used for different, the technology can be used for
different programming languages.
Is that related to this product lines and product families?
>> Interesting question.
Yeah, I guess you could say that.
I wouldn't think of a compiler as a product family.
But to the extent that it is not for a single language but
for multiple languages, like GCC can be used for FORTRAN and for Ada.
>> Right. >> Yeah, I think that's
probably a good way of thinking about it.
>> Anything else you'd like to say about the current status of LayerBlox or
the things you'd like to do in the future?
We're interested in integrating LayerBlox itself in this method
of composition more tightly into
the programming language that we use to build our applications.
Right now LayerBlox is a separate generator.
But historically, this kind of approach has almost always started that way,
started with a separate generator.
But then led into very tight integration into a programming language.
And I think that's probably where this belongs.
That will then let us do much more sophisticated analyses of type
correctness of these assemblies.
It'll help us make some better decisions.
You mentioned the generality versus performance problem,
which could at some point crop up.
I have no doubt that, eventually, it might.
By integrating this more tightly into the programming language, you get more
opportunities for having more context when you're doing generation.
>> Is this anything like the generic capability in Java?
Where you can generate collection classes of various types by
parameterizing them?
>> It's very similar, yeah, so in fact that tends to be that kind of method.
The use of templates that are supported in the programming language is
often ways that this general model gets tightly integrated into a language.
So there was some work, Janusz Mardok just did some work on integrating
this very approach into Java, in exactly the way you're just suggesting.
So yes.
>> And we will put on the class resources page some links to some
of the papers that Kurt is referring to in case you want to
look into them a little more deeply.