File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes General Computing and the fly likes BLISS, the language (was Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » General Computing
Bookmark "BLISS, the language (was "Truely Meaningless")" Watch "BLISS, the language (was "Truely Meaningless")" New topic
Author

BLISS, the language (was "Truely Meaningless")

Raj Shharma
Ranch Hand

Joined: Mar 22, 2009
Posts: 60
Dear Ranchers,

Please provide defination of life.


Thanks.


[Smart Questions]
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61206
    
  66

Sigh. 42!


[Asking smart questions] [Bear's FrontMan] [About Bear] [Books by Bear]
Raj Shharma
Ranch Hand

Joined: Mar 22, 2009
Posts: 60
Bear Bibeault wrote:Sigh. 42!


I believe it your age
Jeanne Boyarsky
internet detective
Marshal

Joined: May 26, 2003
Posts: 30526
    
150

Raj Shharma wrote:
Bear Bibeault wrote:Sigh. 42!


I believe it your age

No. But it is the answer to life


[Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Blogging on Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, OCAJP, OCPJP beta, TOGAF part 1 and part 2
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61206
    
  66

Raj Shharma wrote:I believe it your age

I wish!
Raj Shharma
Ranch Hand

Joined: Mar 22, 2009
Posts: 60
Frankly I didn't understood sigh. 42 and the most appropriate option which related was age ;)
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61206
    
  66

Do I look 42?



I'm an old coot!
Raj Shharma
Ranch Hand

Joined: Mar 22, 2009
Posts: 60
Bear Bibeault wrote:Do I look 42?



I'm an old coot!


Much Younger...I must say...





Cheers
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61206
    
  66

Raj Shharma wrote:Much Younger...I must say...

Friend for life! (I'll be 52 in October)
Pat Farrell
Rancher

Joined: Aug 11, 2007
Posts: 4656
    
    5

Bear Bibeault wrote:I'll be 52 in October

Wow, that is young for someone who can program in Bliss.

Is it possible to answer the meaning of life in less than a book? Isn't that what philosophers and poets try to do?
Raj Shharma
Ranch Hand

Joined: Mar 22, 2009
Posts: 60
Bear Bibeault wrote:Friend for life! (I'll be 52 in October)


A simple Response : WOW
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61206
    
  66

Pat Farrell wrote:
Bear Bibeault wrote:I'll be 52 in October

Wow, that is young for someone who can program in Bliss.

ELUDOM!
Raj Shharma
Ranch Hand

Joined: Mar 22, 2009
Posts: 60
Bear Bibeault wrote:
Pat Farrell wrote:
Bear Bibeault wrote:I'll be 52 in October

Wow, that is young for someone who can program in Bliss.

LOL!



Hat's off to you... I wonder how would it be to program in Bliss
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61206
    
  66

I really enjoyed BLISS, but the problem was that it was (is, I guess) such a big and malleable language, that no one else's programs ever looked anything like yours!

There was this one guy I worked with that never wrote a single non-macroed line of code. He essentially invented his own language within the language.

(P.S. I changed my LOL above to ELUDOM, which is much more appropriate!)
Raj Shharma
Ranch Hand

Joined: Mar 22, 2009
Posts: 60
Bear Bibeault wrote:I really enjoyed BLISS, but the problem was that it was (is, I guess) such a big and malleable language, that no one else's programs ever looked anything like yours!

There was this one guy I worked with that never wrote a single non-macroed line of code. He essentially invented his own language within the language.

(P.S. I changed my LOL above to ELUDOM, which is much more appropriate!)


I do not know whether it would be appropriate here or not but am very curious to know about BLISS vs Java...
It is really fascinating to look at the history of programming languages and evolution of the new ones...
Future I bet has many surprises for us from Software Point of view...
Pat Farrell
Rancher

Joined: Aug 11, 2007
Posts: 4656
    
    5

Raj Shharma wrote: I wonder how would it be to program in Bliss

Heavenly, obviously.

It was a decent language, aimed at the same problems as C, created at about the same time.

DEC/Digital used it for kernel, compilers, runtime systems, etc. I don't think it was ever used outside the DEC world (DEC, contractors, customers, etc). As most of the commercial systems used internal proprietary languages for these tasks (some even used PL/1) and the universities lucked into Unix because AT&T was forced to give away software.

When I had the choice, I personally preferred Bliss, but over time, C took over the world in that space. I strongly believe that if C has any place in the meaning of life, C++ did not improve on the answer. Smalltalk, perhaps, but then we are moving out of MD.
Pat Farrell
Rancher

Joined: Aug 11, 2007
Posts: 4656
    
    5

Raj Shharma wrote:I do not know whether it would be appropriate here or not but am very curious to know about BLISS vs Java...


It would be way, way OT, and not appropriate for Meaningless Drivel.

Bliss aimed much lower, it really doesn't compare to Java in target. Bliss generated very good machine code for the target enviroment, directly. At the same code could generate good results on widely varying machines such as the 32 bit Vax, 36 bit PDP-10s and 16 bit PDP-11s. They had nearly nothing in common. Well, the 11 and Vax had a Father/son relationship, but the PDP-11 had 64KB address limits that were serious. The PDP-10s were on a whole 'nother planet.

Raj Shharma
Ranch Hand

Joined: Mar 22, 2009
Posts: 60
Pat Farrell wrote:
Raj Shharma wrote:I do not know whether it would be appropriate here or not but am very curious to know about BLISS vs Java...


It would be way, way OT, and not appropriate for Meaningless Drivel.




Got it but the discussion is too fascinating...it would be better if we could move this post to some other appropriate Forums...
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61206
    
  66

Wow, just checked and Wikipedia has an article on BLISS.

The most interesting characteristics of BLISS that I remember are: both sides of an assignment were evaluated as expressions (vs. the lhs being a variable reference), and that a variable name represented the variable's address, not its content; you got at that with the . (dot) operator.
Pat Farrell
Rancher

Joined: Aug 11, 2007
Posts: 4656
    
    5

Raj Shharma wrote:if we could move this post to some other appropriate Forums...

Start one here in MD, explicitly about BLISS in the subject, and perhaps a nice moderator can move it to a more suitable place.
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61206
    
  66

Well, since this one is already well on-track. I've moved it to General Computing with a change of title.
Pat Farrell
Rancher

Joined: Aug 11, 2007
Posts: 4656
    
    5

Bear Bibeault wrote:t a variable name represented the variable's address, not its content; you got at that with the . (dot) operator.


Yes, just as in many assemblers.

A = B + C

meant that the address "A" was considered an alias for the sum of the addresses of "B" and "C".

In assembler/macro of the time, you would do something like



and

.A = .B + .C

means that you should calculate the sum of the values in variables pointed to by "B" and by "C" and place them in the location pointed to by "A"

This might be wrong, its been nearly 30 years. And the rule of Bliss was that if the program was buggy, you had the "dots" wrong, you needed either more dots or fewer.
Raj Shharma
Ranch Hand

Joined: Mar 22, 2009
Posts: 60
Bear Bibeault wrote:Well, since this one is already well on-track. I've moved it to General Computing with a change of title.



Thank you for moving this to this forum...now BLISS can be discussed without any constraints of Meaning less Drive
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61206
    
  66

X = Z

assigns the address of Z to X

X = .Z

assigns the value of Z to X

.X = .Z

assigns the value of Z to the variable pointed to by X

..X = ..Z

multiple levels of indirection

The old joke was "keep adding dots until it stops access violating". (access violation == NPE)
Raj Shharma
Ranch Hand

Joined: Mar 22, 2009
Posts: 60
Bear Bibeault wrote:X = Z

assigns the address of Z to X

X = .Z

assigns the value of Z to X

.X = .Z

assigns the value of Z to the variable pointed to by X

..X = ..Z

multiple levels of indirection

The old joke was "keep adding dots until it stops access violating". (access violation == NPE)



I must say...This is real Programming...Such a fascinating Concept...Keep on adding ...
Pat Farrell
Rancher

Joined: Aug 11, 2007
Posts: 4656
    
    5

In Bliss, everything evaluated to an address. An address is similar to a stared variable in C.

In C, you might write something like

a = *b + *c

which means don't add the values of b and c, but add the values of the things pointed to by b and c.

If I remember right, the assignment operator was := and it was strange, even for bliss, as it meant

Store the value of the expression on the right in the address pointed to by the address on the left.
So the above line in C would be

a := .b + .c

Bliss did not use "=" as an equal operator and did not have the evil failure that C had of mangling something like

if ( a = b ) ....

(which does an assignment of the value of B to A, and then tests to see of A is true)
It used two letter (or four?) abbreviations for EQ, LT, GT, etc.
Raj Shharma
Ranch Hand

Joined: Mar 22, 2009
Posts: 60
So pointers in C stack up in parallel with dot operator in BLISS?
Pat Farrell
Rancher

Joined: Aug 11, 2007
Posts: 4656
    
    5

Bear Bibeault wrote:Wikipedia has an article on BLISS.

I've always hated that article (more specifically, the example programs). They are too short to show much of the language.

Since every expression was an address, it was trivial to have functions that return tables of addresses to execute, etc. This was critical when yo uwere writing the Operating System itself in bliss. OS are all about device drivers, tables of IO, magic registers that do IO when you write to them, etc.

And since Bliss was developed by the same folks who developed the operating systems at DEC, and they were used to seriously advanced Macro assemblers, Bliss had a wicked powerful macro system. Not just a preprocessor that did text substitution as C had, but full logic in the macros, with control structures in the macros. Much of this came from the TOPS-10, Tenex, and DECsystem20 folks, who wrote wicked macros in assembly for their operating systems.

Some of the macros were too complex to ever understand, and could never be modified.
Pat Farrell
Rancher

Joined: Aug 11, 2007
Posts: 4656
    
    5

Raj Shharma wrote:So pointers in C stack up in parallel with dot operator in BLISS?


No, that's backwards.

normal variables in C are parallel to the dot operator in Bliss.
Star variables in C are parallel to naked variables in Bliss
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61206
    
  66

Pat Farrell wrote:Bliss did not use "=" as an equal operator ...


Ah yes, I had forgotten that!
Pat Farrell
Rancher

Joined: Aug 11, 2007
Posts: 4656
    
    5

One interesting trivia bit about Bliss was the definition of "true" or "false" for boolean tests. There used to be a long academic study of the defense of the Bliss decision, but I'd not expect to find it on the 'web, as it was written in the 70s. (the paper)

Bliss uses the value of the lowest bit in the expression as the test for TRUE or FALSE. If the last bit (least significant" was on, then it was TRUE, and if the last bit was off, it was FALSE.

The justification was that the execution cost was low, usually no more than the alternatives, and no worse than one instruction time in the 10% of the cases where there was a cost. The benefit was that it was consistent.

Bliss was all about bits and addresses and IO registers.

There are lots of ways you can define true and false.

You can define true as all bits on, and false as all bits off. This works well for obvious cases, and programming constructs such as we use in Java. You can define true as "something not zero" and false as "all bits zero" There are other sets of definitions.

Boolean done = false;
while ( !done) {
dp something
set done = true when you want to break out of the loop
}

But if the value you read in is to be evaluated, then what do you do with mixed bit values? In Java (for ease of understanding by folks on Javaranch)

a = 0x9;
b = 0x1;
if (a == b)
???

In Java semantics, a != b.
But if you use "all ones or all zeros" then it fails, and neither A nor B are true.
Worse,

if (a)
??? 1
if (b)
??? 2
if ( a && b)
??? 3

Most of us would expect that if the line with the 1 was true, and the line with the 2 was true, then the logical and would be true. This is true with the all ones or all zeros, but with the "some bit is on == true" then the bitwise AND fails.

Since writing operating systems often covers bit flags, bits from an IO device, etc. Bliss tests the lowest bit. I know that the PDP-10 hardware had an instruction that would test one bit in a register, and it was the fastest logical test. So there was no performance penalty.

It did take some programmer training.



Pat Farrell
Rancher

Joined: Aug 11, 2007
Posts: 4656
    
    5

Bear Bibeault wrote:Ah yes, I had forgotten that!

Bear,

when you were using Bliss, did the programmers like it?

Background, sometime around the release of the Vax (late 1970s), DEC issued an engineering directive that said:
"Thou shalt not program in assembly languages, use a higher level language!"

I think it was Gordon Bell that argued for this, wrote the memo, etc. Prior to this "rule", operating systems, compilers, etc. were written in the macro assembly language of the machine, Both RT-11 and RSX-11 were written in a Macro-11, all of the Tops-10 and early Tops-20 stuff was written in Macro-10, etc. At least on the PDP-10s, the macro language was advanced, and the code was not at all in the style of typical machine/assembly code of the day.

At that time, the center of the computer universe was in Boston, where DEC, Wang, Data General, Honeywell, Prime, and others spun out of MIT, U-Mass, etc. (It had not yet moved to Silicon Valley, and I'm not sure that the term Silicon Valley had even been coined then). A lot of the advanced OS work was done under ARPA/DARPA money, including the development Multics. Multics was written in PL/1. It was a very nice timesharing system with a lot of nice ideas, but it ran on multi-mega-million dollar mainframes. It was so expensive that Kernigan, Ritchie and Tompson wrote their operating system on cheaper hardware, they named it Unix as a pun on Multis..

I know that the systems programmers on the DEC mainframes loved Macro, and used Bliss only because it was an order.

I actually liked it, and most of my staff were happy with it. I know from folks I knew at Compuserv at the time, that they too did a ton of work in Bliss. But I think my company and Compuserv were the only two commercial shops that liked Bliss.

Did the folks at DEC like it? or did they whine that they should be using C?
Raj Shharma
Ranch Hand

Joined: Mar 22, 2009
Posts: 60
Raj Shharma wrote:
Bear Bibeault wrote:Do I look 42?
Why do we have your picture up in portal with horns ?


I'm an old coot!


Much Younger...I must say...





Cheers
Bear Bibeault
Author and ninkuma
Marshal

Joined: Jan 10, 2002
Posts: 61206
    
  66

Somehow I missed Pat's last post.... so here, over 2 years later:

when you were using Bliss, did the programmers like it?

We all loved it. We came from very different backgrounds but the entire team loved the freedom. Me, I had just moved from a job in diagnostics where I'd been writing MACRO-32 for 5 years.

Did the folks at DEC like it? or did they whine that they should be using C?

The advent of X is what moved us all to C. That's when the whining began.
Randall Twede
Ranch Hand

Joined: Oct 21, 2000
Posts: 4347
    
    2

personally i am glad we are beyond languages like bliss(although this is the first i have heard of it). i would rather program a PDP11 using the switches on the front. i mean use a high level language or use assembly.

i didn't like c either(or cobol, but for different reasons). i learned basic, pascal, java and VB6 before i even learned c++
by that time c++ seemed very much like java

dang! now it sounds like i am putting down c. not my intention. i imagine it would have been pretty hard to write unix in assembly and port it to all the different machines.


SCJP
Visit my download page
Pat Farrell
Rancher

Joined: Aug 11, 2007
Posts: 4656
    
    5

Randall Twede wrote:dang! now it sounds like i am putting down c. not my intention. i imagine it would have been pretty hard to write unix in assembly and port it to all the different machines.


But you could have written unix is bliss, its much like C. The pdp-11 assembly language, at least from DEC, was called Macro-11 and was a decent macro assembler, with a fairly good preprocessor. The reason C relies so heavily on the preprocessor was that all good assemblers of that day used them, often in quite complex and powerful ways.

Bliss, like many contemporaries and unlike C, did not hardwire in assumptions that a byte was 8 bits. Because on a lot of mainframes of the day, a byte was something else. 6, 7, 8, and 9 bit bytes were common on 36 bit, word addressable machines.

If K&R and the rest had used Bliss, perhaps we would not have been so biased that a byte is 8 bits. Bliss made things like signed and unsigned bytes of arbitrary size trivial.

Why use word oriented machines? For one, most of the time, you are dealing with words, you load an accumulator/register with a word, you add two registers and get an answer that is the same size as the words. With word addressing, you can save 3 bits per instruction. All of these machines had byte access instructions, but for most programs, most of the time, you lived in the word-oriented space.

Sadly, the Vax, probably the most popular mini-computer of the 80s, and where most of the unix development happened, was heavily biased towards byte addressability. So we are cursed with it today.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: BLISS, the language (was "Truely Meaningless")