Tuesday 13 December 2005 — This is 19 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.
Comments
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).
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: