From:	MERC::"uunet!WKUVX1.BITNET!MacroMan" 23-APR-1992 04:41:31.20
To:	<raxco!galaxy.dnet!gleeve@UUNET.UU.NET>
CC:	
Subj:	Historical Rap on C/BLISS/LISP and the "=" operator

The problem with BLISS is that the program of simplification
and de-emphasis of syntax did not go far enough, so that
the result is that the syntax can still obscures things,
and its MACRO language, although powerful, (extremely powerful
compared with C), is also somewhat syntactically obtuse,
and weak compared with the LISP techniques of the time.

(Historical note: Guy Steele, author of a Common Lisp manual,
and also a C Reference Manual, was a graduate student of one of the
guys who wrote the book "Design of an Optimizing Compiler" which
was about BLISS. Then Guy went to MIT and worked with Sussman
to come up with the lisp dialect Scheme. Guy's masters thesis
was on an optimizing Scheme compiler. I don't want to imply too
much, since different people were are Harvard, MIT, and CMU at
different times, and the real story may be what happened to the
circle of people who ended up at Stanford, Xerox Parc, Software Arts
(purchased out of Chapter 11 by Lotus) ...)

Let me just say, that the C/Unix "thread" which can be interpreted as
having broken off of MIT earlier than 1973, is NOT the dominating
thread it may seem to be. In fact, it is the weakest thread, having
lead the most ISOLATED LIFE, and being the most Wizardly-Closed of
environments (It has the smallest number of Gods and influences).

The point about "=" is that semantically it could be a SUBROUTINE-CALL,
which has been coded in assembly language! A mere part of the runtime library
if you will.

In C, you might write:

long assign(address,value)
 long *address,value;
{return(*address = value);}

And invoke this as:

 BLISS:  A = .A + 1;
 C:      assign(&A,A+1);

So there you have it. Ignoring the infix-syntax "=" you see that C
and BLISS are similar, both require a "." or a "&" in different places.

Now, what have a glossed-over? The issue of what KIND of address
and memory-operation to invoke when doing the memory-move operations.



-gjc