Path: csiph.com!xmission!news.glorb.com!peer02.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!post02.iad.highwinds-media.com!fx36.iad.POSTED!not-for-mail From: usenet@only.tnx (Questor) Newsgroups: alt.folklore.computers Subject: Re: BLISS Organization: ask the NSA Reply-To: usenet@only.tnx Message-ID: <575735ef.21428362@nntp2.rawbw.com> References: X-Newsreader: Forte Free Agent 1.21/32.243 Lines: 37 X-Complaints-To: abuse@rawbandwidth.com NNTP-Posting-Date: Tue, 07 Jun 2016 21:01:50 UTC Date: Tue, 07 Jun 2016 21:04:03 GMT X-Received-Bytes: 2468 X-Received-Body-CRC: 2603809294 Xref: csiph.com alt.folklore.computers:164767 On Sun, 5 Jun 2016 16:10:31 +0100, "gareth G4SDW GQRP #3339" wrote: >Inspired by the PL/I thread, I've had a look at BLISS for the first time. > >Interesting the dot notation to cause a variable name dereference in sharp >contrast to the C technique of using "&" to force a reference! Except that C doesn't require "&" in an assignment statement, so there still is an l-value/r-value dichotomy. >I wonder how many bugs came about in BLISS programs because of >the unnatural need to use dot compared to other languages? One gets used to it very quickly when working with the code all day. It did result in an interesting bug once. A program that had been working for years started failing one day with a page fault, and I quickly determined that what had changed was the KL had received a microcode update. I scrambled to find another machine that hadn't yet been upgraded to determine how it had worked previously. I discovered there was a missing dot operator, and consequently the pointer to a field specified a non-existant page. Under the old microcode, the write operation triggered the creation of a page, the page map was duly updated, and the value written to an otherwise empty page. When the program subsequently went to read said value with the same pointer, there it was -- right where it had been written. I don't remember the reason for the microcode change, but now the same write request caused a page fault. Anyway, I added the missing dot to the pointer construction and all was right with the world again. The big problem with the dot operator is that a period does not have a lot of "visual redundancy," if you will. It is at the mercy of fading ink ribbons, coffee stains, blurry CRT screens, etc. I don't know what the better choice would have been, but I wish someone had found it. Otherwise, I like the clear line that BLISS draws between l-values and r-values.