From: MERC::"uunet!WKUVX1.BITNET!MacroMan" 23-APR-1992 04:41:31.20 To: 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