Bliss Compiler wanted
Brian Reid
reid at decwrl.dec.com
Fri Jun 24 15:34:54 AEST 1988
People are asking about BLISS.
BLISS was invented at Carnegie-Mellon in the late 1960's, and was first
implemented for the PDP-10 as Bliss-10. A better, incompatible version for
the PDP-11 was developed, called (oddly enough) Bliss-11. In the middle
1970's, DEC picked up BLISS, filled it full of dollar signs and long mnemonic
names, and produced BLISS-36 (a successor to BLISS-10), BLISS-16 (a successor
to BLISS-11) and BLISS-32 (for the Vax). I don't believe that BLISS-16 ever
amounted to much, since it was implemented only as a cross-compiler from the
PDP-10 (as was Bliss-11, come to think of it). Then DEC found a set of macros
that could be layered on top of BLISS-36, BLISS-32, and BLISS-16 to implement
a machine-independent common version, which I think was called Common BLISS
or something like that.
A lot of VMS is written in BLISS. Unfortunately, not enough of it is. Far too
much of VMS is written in VAX assembler.
At some point in there, some people at Bell Labs produced 98% of a Bliss
compiler for an IBM 360 or a Honeywell or an Interdata or something like
that, but in general BLISS exists/existed only for DEC machines.
I've always liked BLISS. It's the world's greatest assembler. It doesn't have
pretenses of having data types, like C, and it is very regular and very
simple. Its most notorious feature was the need for an explicit "value of",
operator: if you wanted to do the equivalent of the C statement
x = y + 1;
in Bliss, you had to say
x := .y + 1;
The "." means "contents of y", since all expressions evaluated to addresses
and not values. (If you just said "y + 1", then it added 1 to the address of
y and not the contents of y).
While this was a big nuisance, and led to expressions like
Z[.A+.B] := .A[.A[.I-4]]
that are as awful as C type declarations, it also let you do jazzy stuff like
F(X) := 3;
which would call the function F with the argument X, which would return an
address. The number 3 would then be stored into that address.
BLISS had very sophisticated control structures, much nicer than C has. I
think the dot operator for dereferencing was what doomed it, though to
this day I would rather be programming in Bliss than in C.
The people who designed and implemented the first few Blisses included Chuck
Geschke, who is now president of Adobe Systems, Bruce Leverett, who works for
Scribe Systems, Richard Johnsson, who works with me at DEC. Ron Brender was
the major guru of Bliss at DEC. Probably still is.
More information about the Comp.unix.questions
mailing list