[Simh] BLISS and C

Clem Cole clemc at ccc.com
Mon Jan 29 12:05:01 EST 2018


On Mon, Jan 29, 2018 at 8:20 AM, dave porter <dave_list_addr at verizon.net>
wrote:

> I recall reading something from Dennis Ritchie to the effect
> that if he'd been able to get hold of a BLISS compiler he
> wouldn't have bothered to invent C.  But DEC held on to
> its compilers tightly.


​Hmmm.. to be honest this sound nice but I suspect it is more like
legend/wishful thinking than something Dennis would have said.
Unfortunately we can not ask him, but I can report a little on how both
languages came into being (actually all three cause you need to include B
here also) as I know/knew the designers of both and was a witness to a
small portion of the stories.  You can then decide for yourself.

Two related things that I did not mention yesterday when I was describing
the differences between the languages are that BLISS has only one data type
(a 'word') and is 'typeless' in the sense of Pascal or other strongly typed
languages.   C was originally 'weakly typed' and only later added strong
typing (and why is important).  Also remember that at the time BLISS was
designed, Wulf specifically targeted the PDP-10(the PDP-11 did not yet exist
and the PDP-8 was explicitly a non-target).  I'm pretty sure if you read
Wulf's original paper, they were not trying to be
architecture independent.  Also it was designed to be an >>implementation<<
language for the PDP-10.  Another point is that Wulf and team had other
tools for the PDP-10 when they wrote it - including an OS.

B (C direct predecessor), like BCPL and BLISS, was untyped and worked with
words only.   In fact, Ken is on record as saying that he was originally
starting to develop a Fortran compiler for the PDP-7 to run on UNIX (both
of which had been written in PDP-7 assembler).   He ended up with a new
semi-interpreted language that was good enough to write utilities; i.e. B
was born and started a life of its own.  He was clearly influenced by BCPL
and had just been using PL/1 with Multics.   Clearly he was trying to
create an implementation language for the PDP-7.  But Ken was not using any
tools other than his own for the PDP-7 - in fact he was originally cross
assembling from a GECOS system.    Once UNIX was 'up' on the PDP-7, it
was minimal compared to TOPS-10, that Wulf had used [check out:  pdp7-unix
is a project to resurrect Unix on the PDP-7
<https://github.com/DoctorWkt/pdp7-unix>].

BTW: another salient point is that Ken, Dennis and team had previously
tried to purchase a PDP-10 for their lab, and had been rejected by their
management.   The whole reason Ken was working on the PDP-7, was that he
borrowed it from another group and he had access to it.   They were using
GCOS as their 'main systems' and the PDP-7 system was being developed as
an independent project.

So by the time of moving Unix to PDP-11, Dennis had switched from an
B interpreter to a B compiler; which then begat NB, ney C [See Clem Cole's
Quora answer What-language-was-the-first-C-compiler-written-in
<https://www.quora.com/What-language-was-the-first-C-compiler-written-in>].
  So the point is that Dennis was building tools to support their project
and C was just continuing the development of Ken's B.

One can argue, why did Ken not just build something more like BCPL instead
of B?  I can not say, maybe the brevity of { } from PL/1 was more
attractive than the Algol BEGIN/END style?   I don't know.   But I suspect
it was because he was originally targeting Fortran that he kept 'blocks' to
be minimal.   He ended up with something like BCPL in semantics and PL/1 in
syntax than Fortran.

Back to C:  With the PDP-11 Dennis added supports for different data types
- in particular bytes and byte addressing.   Originally, he left the C
language mostly typeless (everything defaulted to an int).  C stays that
way for a long time, through K&R.   But as the language starts to get used
for other architectures, the ideas of being 'more strongly typed' starts to
come into play.   In fact, I think the two primary changes to ANSI C that
helped to cement C in the long run, were strong typing and function
prototypes (which used it).

As I think back on Wulf's intention to create a systems programming
language with good support for SW engineering, and I suspect the single
'word' and lack of typing actually would have hurt Bill's claimed intent
for BLISS (I've never asked him - I need too next time I see him).

All this comes back to my point.   Btw the time Dennis develops, C, B had
been in use and had been created incrementally from B.   If Ken had had
access to BLISS compiler, he would have needed it on GCOS, and CMU never
created same and then you are correct, sold the rights to their
implementations to DEC.  But the fact is, Ken and Dennis did have a BCPL
compiler on GCOS?  So why not just retarget it to the PDP-7?   Why did Ken
create B?

Clem


ᐧ
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.trailing-edge.com/pipermail/simh/attachments/20180129/e642ff5b/attachment.html>


More information about the Simh mailing list