HLL and misa...

Jecel Mattos de Assumpcao Jr. jecel@lsi.usp.br
Sun, 18 Jun 1995 21:02:53 -0300


Let me make a few comments on this very interesting thread ( BTW - is
Garth on the Tunes list? I like to avoid sending multiple copies of
a message to the same person )

> >    I hope that you won't disappoint them. I wish I can help !
> 
> you can.  you all seem like an intelligent group of people and i hope
> to bounce some of the latest of our research with you.  any comments
> our suggestions are very welcome.

I would suggest you stick around this list - I am working on my own
system rather than Tunes but have gained a lot with these discussions.

> i can tell you right now - you're not going to find a language which
> meets the requirements of your HLL.  we have spent enormous amounts of
> time scouring the net for a language which provides what misa will
> provide (which is more or less what you require for you HLL).

I would be very interested in seeing a list of what you looked at.
Here are some languages I studied for my Merlin project:

  Self, Smalltalk, Prolog, FP, Sisal, Moostrap, TSOL, C, Objective-C,
  Forth, LISP, NewtonScript, Echonet, APL, Actor for Windows, Act-1,
  Occam, Oberon, Logo, Hypertalk

Here are some languages I looked at but would like to know more about:

  Dylan, Java, Icon, Agora

Languages I wish I knew:

  Beta, SML, Haskell, Perl

If I thought about it a little more I might remember some others...
I think that Moostrap would help you a lot - it is a Scheme-like
language with Self-like object semantics and a very good reflective
structure.

"Definition of a Reflective Kernel for a Prototype-Based Language"
Phillipe Mulet and Pierre Cointe
International Symposium on Object Technologies for Advanced Software
ISOTAS'93

Sorry - I lost the ftp address of this paper, but can look it up if
there is interest.

> perhaps even if this language turns out to be what you are interested
> in, you could use it for the basis of your HLL. 

I say that the less language there are in the world, the better!

> i would, however, be very interested in getting more people involved
> with the definition of this language.  you and anybody else is
> welcome.  

I like to hear other peoples opinions, even if I end up ignoring
them in the end :-) It is much nicer to make a choice because you
decided it was the best way and not because you hadn't heard of
the alternatives.

> my point was that on the abtract level s-exp are very useful.  never
> mind the fact taht it's in a linked-list which has cars and cdrs and
> all that nonsense.

An alternative is to use arrays ( or vectors ) like Smalltalk-72 did.
So "((x b c d) x 9 (z z))" would be translated into 3 arrays rather
than 10 cons cells:

         ---------------------------
         |      |      |     |     |------
         ---------------------------                /         \_______\=--------              /                     \      \       ----------------------------   x     9    ----------------
  |      |      |      |     |              |       |      |
  ----------------------------              ----------------
    |       |      |      |                     \      | 
    |       |      |      |                      \     | 
    x       b      c      d                       ---- z

( I would rather have done this in postscript ;-)

The main advantage of the cons implementation is that you can
go all over the structure just by bumping a pointer, while here
you have to combine pointer chasing *and* indexing. If the
structure is mostly static, as code usually is, there is a closer
correspondence between the source and low level implementation
with arrays than with cons cells.

> it is the _defined_, _simple_, structure that makes LISP so powerful.
> the C syntax is much to complex to achieve the runtime modification
> which is possible in LISP (not to mention all of the other things
> which make it a static language istead of a dynamic one).

C is a static language. It syntax is the least of its differences
with Lisp ( compare the old and new Dylan syntaxes and their effect
of the language, for example ).

> what we need is a defined (and, of course, redefinable) simple syntax
> which is easily modifiable during runtime.  s-exp is one of the best
> currently available syntaxes.  

I agree - you can build other, more readable, syntaxes on top of
it if you want - see Logo.

-- Jecel