Prism criticism

Jim Little jiml@inconnect.com
Sat, 05 Jun 1999 16:24:55 -0600


Maneesh Yadav wrote:
> 
> On Sat, 5 Jun 1999, Jim Little wrote:

> > My eventual goal is for the mini-languages and mini-compilers to
> > interoperate.  That's what all the different pieces of Prism are for.
> > The meta-metamodel provides a standard format for program models.  The
> > global heap provides a place for the different parts of the model to
> > reside.  And the interpreter provides a compilation engine.
> 
> The hard part to get all these languages to communicate is to setup up the
> details of the communication channels between them.  

Agreed.  :)  I have some ideas, but nothing worth mentioning at this
time.

> I still don't see how
> your Prism syntax fits into this idea of tonnes of mini languages.  

By "Prism syntax," I assume you mean the meta-metamodel.  (The _Bit,
_Map, _Stream stuff.)  It provides two things:

1) It's easier to manipulate than plain text.  Every atom corresponds to
exactly one piece of information, whereas in plain text, it may take
multiple characters to represent an atomic unit of information.  (For
example, '(double)31' is an atomic concept that requires multiple
characters.)  Compilers deal with this by parsing the text into an
internal format; I'm just making that internal format explicit and
standardized.

2) Language-neutrality.  This isn't as big of a deal, but it means that
both visual and textual languages are parsed into the same internal
format.  It also allows multiple languages per metamodel -- as you say
below, this may not be a good thing :) but it does allow languages to be
improved over time (taking out ambiguous syntax, adding convenience
features, etc) without changing the metamodel.

> And
> how much time would you save, the obvious problem is that if I am doing an
> application that combines graphics and database searching, I don't want to
> have to learn a new language for each.  That is a problem today, too many
> languages each with just a slightly syntacically different way of doing
> the exact same semantic thing...would your proposal not make it worse?

This is a really good point, and something I'm a concerned about.  My
hope is that each mini-language will be really small.  Also, I'm hoping
I can get the interoperability strong enough that each kind of
programming is handled by a single language.  So any time you want to do
normal imperative programming, you embed code in the same language you
always use for imperative programming, no matter what else you're doing
(web, 3D, etc).  That's the plan, anyway.  I won't know if it's feasible
until I try...

Jim

Prism is at http://www.teleport.com/~sphere