Tuesday 13 December 2005

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.


Keith Gaughan 11:56 AM on 13 Dec 2005

Obviously somebody was having a good laugh when they came up with the name.

Bob 12:36 PM on 13 Dec 2005

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).

Paul 3:02 PM on 13 Dec 2005

Sounds a little like forth, where you are never far from explicit binary addresses and data.

Richard Schwartz 4:24 PM on 13 Dec 2005

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" :-)

Keith Gaughan 4:33 AM on 15 Dec 2005

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.

Keith Gaughan 4:34 AM on 15 Dec 2005

Gah, I meant BCPL.

Chris Ryland 6:33 AM on 15 Dec 2005

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:
not displayed and no spam.
Leave this empty:
not searched.
Name and either email or www are required.
Don't put anything here:
Leave this empty:
URLs auto-link and some tags are allowed: <a><b><i><p><br><pre>.