I like that it is a block structured language without a goto. It has pass-by-value and pass-by-reference semantics.
It has a macro front-end that I wish was in use in more modern environments.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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?
34 comments
[ 3.4 ms ] story [ 75.0 ms ] threadAny reason for that?
https://www.cs.tufts.edu/~nr/cs257/archive/ronald-brender/bl...
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.
https://en.wikipedia.org/wiki/SIMH
Actually it was a very nice language and certainly an improvement over writing system software in assembly language.
Used it for a couple of years in the mid '70s before moving on to SAIL.
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.
Maybe make a remark about word marks, or decimal machines.
Are you sufficiently sputtered yet?
https://en.wikipedia.org/wiki/IBM_1620
So often I heard the phrase, "Bliss is ignorance..."
Much later, I used BLISS on a VAX/780 at Space Telescope Science Institute - making an image editor interface into VMS. Long time ago!
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
I'm not sure how they compare to macros in newer languages such as Dylan, D, or Rust.
[0] https://compilers.iecc.com/comparch/article/92-09-191
[Edit]
A good overall description is here: https://www.cs.tufts.edu/~nr/cs257/archive/ronald-brender/bl...
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. :)
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.
Not sure what being a counter example means.
As for the rest, yeah you are right, BLISS came right in 1970.
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.
I've never understood why languages don't do this. There seem to be lots of advantages and almost no disadvantages.
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.