Tuesday 13 December 2005This is over 17 years old. Be careful.

When I was at Digital, I did a little bit of maintenance work in a language called Bliss. Like C, Bliss was a low-level high level language. It was designed for systems programming (for example, implementing parts of VAX/VMS). It had a strange macro facility which I don’t remember anything about, and was typeless: you dealt with memory layout similarly to how you would in assembler. The defining characteristic, though, was its use of variable names.

In most languages, what a variable name means depends on where it is used, but in a subtle way that programmers typically don’t even realize. For example, in this C statement:

a = b;

The “a” means the address of the variable a, and the “b” means the value of the variable b. The statement means: take the value of b, and store it in a.

Bliss didn’t make this distinction. For uniformity, variable names meant the same thing everywhere. And since the left-hand side of the assignment operator needed the address of a variable, that’s what variable names meant everywhere. To get the value at an address, you used the dot operator, which is the equivalent of C’s * operator. So in Bliss, the above statement would be written:

a = .b;

The most common error in Bliss was forgetting a dot. “a = b” meant store the address of b in a. Dealing with pointer variables meant double dots:

val = ..pVal;

What a headache. If you are really curious, the Bliss Reference Manual is online.


Obviously somebody was having a good laugh when they came up with the name.
Keith, perhaps the name was intended as a joke but I don't think so. BLISS was incredibly powerful language in the proper hands (programmer's bliss?).

According to the Wikipedia entry, BLISS is variously said to be short for "Basic Language for Implementation of System Software" or "System Software Implementation Language, Backwards". It was sometimes called "Bill's Language for Implementing System Software", after Bill Wulf (the language's designer).
Sounds a little like forth, where you are never far from explicit binary addresses and data.
My first wife worked on the BLISS compiler team for a while. I heard an awful lot about that dot. Actually, I believe it was often refered to affectionately as the "damndot" :-)
I heard of BLISS in the past, but never had the pleasure of using it. From people I know who have, apparrently I'm lucky: their descriptions made it sound like a scary version of B with a different syntax.
Hey, the CMU Bliss-11 compiler was great in its heyday (I used it in the mid-70's at Harvard).

it was one of the first highly-optimizing systems language compilers, and would do utterly surprising things after heavy data and control flow analysis (back in those days, we'd sit and chuckle at what it had done). Chuck Geschke (now CEO emeritus of Adobe) wrote his PhD on the optimization techniques he developed for the Bliss compiler.

Add a comment:

Ignore this:
Leave this empty:
Name is required. Either email or web are required. Email won't be displayed and I won't spam you. Your web site won't be indexed by search engines.
Don't put anything here:
Leave this empty:
Comment text is Markdown.