Bliss Language

BLISS stands for "Bill's Language for Implementing System Software," in honor of Bill Wulf, when he was a CS professor at CMU [http://www.cs.virginia.edu/brochure/profs/wulf.html] . BLISS came in varieties for the PDP-11 (BLISS-16), PDP-10 (Decsystem-10 and -20, BLISS-36), and VAX-11 (BLISS-32). Many pieces of VAX/VMS were written in BLISS, including the command language interpreter and the BACKUP program.

BLISS is interesting (and sometimes unique) in many ways:

      X=.Y;

where "." is the fetch operator that fetches the contents of address Y.

Q: This is unique? Isn't it just a pointer? Or am I missing something here?

A: its unique in the fact that all bare symbols are pointers, not contents

To give a better feel for this, consider the following C statements and their Bliss equivalents:

  {both: declare "a" to be an integer variable}
  C:     a = 1
  Bliss: a = 1

{both: declare "x" and "y" both to be e.g. integer variables} C: x = y Bliss: x = .y

{both: declare "p" to be a pointer to integer, and "y" to be an integer variable} C: p = &y Bliss: p = y ....note lack of "." before "y"

C: *p = 1 Bliss: .p = 1 ...I may be incorrect here, my memory is fuzzy

So, yes, this approach is in fact fairly unique, in a subtle way. The subtlety is almost certainly lost on anyone who has not delved deeply into the difference between LHS addresses and RHS addresses in compilers (variable name (etc) representing either fetch or store depending only on whether it is on the right or left hand side of an assigment).

Q: Does BLISS stand for Basic Language for Implementation of System Software or Bill's Language for Implementation of System Software? Did Bill Wulf name it after himself? Did he name it Basic, and later people bacronymed it Bill's?

A: I had Dr. Wulf for multiple classes at UVa and can attest that he used amusing acronyms for some of our projects. For example, in Operating Systems he gave us a tiny OS--dubbed IBOS--to enhance throughout the class. IBOS stood for Itty Bitty Operating System. In assembly programming class he started us out with a small program that implemented a very simple virtual machine for us to write programs for before moving on to x286 assembly code. Unfortunately I can't recall the acronym he gave that one. As for BLISS, I recall hearing the B stand for Bill's, but I don't have an authoritative source for that usage. In fact, if one reads the original paper about the language, "BLISS: A Language for Systems Programming," the acronym is never completely spelled out that I can find. -- ChrisHines

See Also: [http://encyclopedia.thefreedictionary.com/Bliss] See Also: Bliss Language Manual [http://avmp01.mppmu.mpg.de/HTBIN/BOOK/4358PRO.DECW$BOOK/9]


Q: Regarding the EXITLOOP and LEAVE: Are loops treated like functions and subroutines? and the EXITLOOP and LEAVE as returns? Or does the exit of the loop have a pointer to a default process, or a nameless statement somewhere or is it to the statement following the ENDLOOP? In which case how is it different from a GOTO except having a different name and having a label-less destination?

 FOO:
    BEGIN
    something; 
        BEGIN
        something;
        IF done THEN LEAVE FOO;
        more stuff;
        END;
    and yet more;
    END;
  COMMENT the LEAVE FOO brings you here;


CategoryProgrammingLanguage


EditText of this page (last edited February 24, 2014) or FindPage with title or text search