
Bliss: A language for systems programming (1971) [pdf] - tjalfi
https://www2.cs.arizona.edu/classes/cs520/spring06/bliss.pdf
======
neilv
As an intern the '90s, I was porting some Unix workstation embedded systems
tool to the VAXstation, and was surprised to find the system API documentation
I needed wasn't written for C, but for BLISS. Fortunately, VAX C could still
call it.

I've used a lot of different systems thus far, but what I saw of the DEC
VAX/VMS ecosystem was impressive, and a very different cultural flavor than
Unix-descended systems. I'm all about the Linux and *BSD now, but,
occasionally, I have to resist the urge to buy a small VAX, just to explore
more of the clever and different things they did.

~~~
cptnapalm
SIMH is a thing.

[https://en.wikipedia.org/wiki/SIMH](https://en.wikipedia.org/wiki/SIMH)

~~~
neilv
Thanks! They also link to this writeup, which someday I might attempt to
reproduce: [http://www.wherry.com/gadgets/retrocomputing/vax-
simh.html](http://www.wherry.com/gadgets/retrocomputing/vax-simh.html)

------
Stratoscope
The thing that blew my mind when I started programming with BLISS in the
mid-70s was that it didn't have the artificial distinction between statements
and expressions that nearly every other language of the day had - and most
languages still have. In BLISS, everything was an expression and returned a
value, much like Ruby today.

------
dang
An article about its history was posted a couple times (without comments):

[https://www.cs.tufts.edu/~nr/cs257/archive/ronald-
brender/bl...](https://www.cs.tufts.edu/~nr/cs257/archive/ronald-
brender/bliss.pdf)

------
CliffStoll
Yep, sends me back almost a half century (gadzooks, am I really 70 years
old?). PDP-11/40 and DECUS days.

So often I heard the phrase, "Bliss is ignorance..."

~~~
donut
Hi Cliff. What did you use BLISS for? Low level system stuff, or codes for
astronomy?

~~~
vogelke
Not Cliff, but I remember BLISS from early '80s Air Force work. It's the only
thing I know that could beat compiled Fortran for things like signal
processing. That code absolutely flew.

------
wglb
We used Bliss 36 back in late 70s to write a compiler for an in house language
called Syclops. It was a knockoff of PL/M for the 8085.

Bliss was a very interesting language with features that no other language
has. We started the compiler effort on OS\360 using PL/1\. We then moved to
Bliss 36 on the PDP 10. Oh and we changed the Syclops language twice. The
three of us did the compiler in a year.

That was one of my favorite projects

~~~
tjchear
What were those features that no other language has?

~~~
wglb
Native ability to define fields within a word, macros, use of period (dot) to
dereference pointers, arbitrary representations of data structures (the
programmer defines the method of access of structure elements), everything is
an expression, native co-routines (which can be marvelous in building co-
operating processes), some control over register allocation policy (useful for
interfacing with other non Bliss-programs), the idea of "plit" (pointer to a
literal) which points to literals not constrained by word boundaries, built-in
functions that map directly to PDP 10 instructions.

[Edit]

A good overall description is here:
[https://www.cs.tufts.edu/~nr/cs257/archive/ronald-
brender/bl...](https://www.cs.tufts.edu/~nr/cs257/archive/ronald-
brender/bliss.pdf)

~~~
pjmlp
Modula-2 also has native co-routines and was how Lilith did multi-tasking.

How Ada tasks work depend on the runtime configuration, one of them is just
like co-routines.

Using the dot for pointer access is a common feature in the Algol linage of
systems programming languages, including Modula-3, Oberon and its descendents,
Component Pascal, Active Oberon.

Burroughs with ESPOL/NEWP is known for being the first OS written without any
Assembly back in 1961, given that all CPU instructions were exposed as
compiler intrisics.

So not all those features were BLISS only. :)

~~~
wglb
The only one of these that I can find that were before Bliss was the Burroughs
effort, which a computer scientist acquaintance said was a universal counter
example to how languages were built.

So if this cronology is correct, my statement should have clarified that it
was the first (save for the Burroughs example) to have those features.

~~~
pjmlp
Burroughs is still being sold commercially as Unisys ClearPath, so at least
NEWP is in a better shape in 2020 than BLISS.

Not sure what being a counter example means.

As for the rest, yeah you are right, BLISS came right in 1970.

~~~
wglb
The comment about universal counterexample was coined by Arthur Sale, then a
professor of CS at University of Tasmania. In particular, he was referring to
the B 6700 and C's presumption of NULL being a zero just would not work with
that hardware, which had its own unique way to describe null.

Another less dramatic example was the Burroughs 5500 and the fact that
addresses were in decimal (bcd)--no binary in sight.

Yes, I know of no running Bliss, but I would put that as due to DEC
disappearing.

------
leed25d
I was a Bliss programmer for several years in the mid-1970s. It remains one of
my favorite programming languages.

~~~
wglb
What did you use it for?

~~~
leed25d
I was employed by a defense contractor working on submarine detection systems.

------
ngvrnd
First job out of college was coding in BLISS for automated test equipment at
Teradyne. A very interesting language with a powerful macro facility, and as
others have pointed out, expression semantics for almost everything. Another
quirk was the requirement to dereference pointers in all circumstances with
the . operator.

~~~
nicoburns
> expression semantics for almost everything.

I've never understood why languages _don 't_ do this. There seem to be lots of
advantages and almost no disadvantages.

~~~
hhas01
C. The popularity and mindshare of C means most languages of the last 50 years
have selectively evolved to be C knockoffs.

A pity Bliss wasn’t their role model instead, but that’s the value of market
positioning: you don’t need the best product, just the product that everyone
knows.

~~~
pjmlp
And now we are trying to fix 50 years of memory corruption bugs being fixed
multiple times per month.

------
W-Stool
VMS, DEC's OS for their VAX architecture, was written in Bliss and a listing
of the entire source code was available at the time on microfiche. Could you
imagine Microsoft of Apple making the entire source code to their OS available
to customers inexpensively?

------
valenciarose
Bliss is Ignorance

Actually it was a very nice language and certainly an improvement over writing
system software in assembly language.

~~~
ThomasBHickey
Being able to embed assembly instructions directly in the code gave much
needed access to all the PDP-10 byte manipulation instruction. I loved BLISS,
but some had trouble with the pesky dots needed to indicate value of rather
than addresses of variables.

Used it for a couple of years in the mid '70s before moving on to SAIL.

~~~
valenciarose
Oh, I have fond memories of 36-bit byte pointers.

My first two programming jobs were in PDP-10/20 Assembly. Occasionally someone
will complain about network specs that say octet instead of byte. And I‘ll
just casually say, well some machines had variable byte sizes and go back to
what I was doing, waiting for them to start sputtering.

~~~
msla
> And I‘ll just casually say, well some machines had variable byte sizes and
> go back to what I was doing, waiting for them to start sputtering.

Maybe make a remark about word marks, or decimal machines.

Are you sufficiently sputtered yet?

~~~
082349872349872
Word marks, as in the Can't Add Doesn't Even Try?

[https://en.wikipedia.org/wiki/IBM_1620](https://en.wikipedia.org/wiki/IBM_1620)

