[comp.lang.misc] Late Bloomers Revisited

eric@snark.uu.net (Eric S. Raymond) (12/13/89)

A couple of well-informed comp.arch regulars have suggested that I may
have been a bit too peremptory in dismissing Algol68's influence on later
language development. I will still argue vigorously that the Pascal family
was founded on Algol-60 (consider the relative dates) but I admit that there's
a case for tracing C casts and some aspects of its type system to Algol68.

Would dmr or anyone else with certain knowledge care to comment?

Followups to comp.lang.misc *only* this time...
-- 
      Eric S. Raymond = eric@snark.uu.net    (mad mastermind of TMN-Netnews)

paul@taniwha.UUCP (Paul Campbell) (12/14/89)

In article <1TmbNv#4mK14j=eric@snark.uu.net> eric@snark.uu.net (Eric S. Raymond) writes:
>A couple of well-informed comp.arch regulars have suggested that I may
>have been a bit too peremptory in dismissing Algol68's influence on later
>language development. I will still argue vigorously that the Pascal family
>was founded on Algol-60 (consider the relative dates) but I admit that there's

Wirth (the 'father' of Pascal) was a member of the Algol68 committee, after
being involved in the design of the language he designed Pascal, he put in
many of the Algol68 features that were easy to implement and left out the
ones that were hard.

	Paul

-- 
Paul Campbell    UUCP: ..!mtxinu!taniwha!paul     AppleLink: CAMPBELL.P
"We got a thousand points of light for the homeless man,
Got a kinder, gentler, machine gun hand ..." - Neil Young 'Freedom'

pcg@rupert.cs.aber.ac.uk (Piercarlo Grandi) (12/18/89)

In article <1TmbNv#4mK14j=eric@snark.uu.net> eric@snark.uu.net
(Eric S. Raymond) writes:

   A couple of well-informed comp.arch regulars have suggested that I may
   have been a bit too peremptory in dismissing Algol68's influence on later
   language development.

   Would dmr or anyone else with certain knowledge care to comment?

In the beginning there was Algol 58, and this was the ancestor of
Jovial.  Algol 60 was then defined and quite different from Algol
58 (and we lost forever the very important distinction between
parallel and serial implementations of arrays of records, as it
appears in Jovial).

Just after Algol 60 was defined, people started working on its
successor, provisionally named Algol X, to be more oriented to
non numerical problems, and with a standard io suite and
representation. The three major problems with Algol 60 were that
it was heavvily oriented towards numerical computations, it
lacked any standard hardware representation, and had no standard
io library.

From Algol 60 people at Trondheim derived first Simula I, then Simula 67,
which were OO supersets of Algol 60. Apparently they were not seriosuly
considered as candidates for Algol X. History may have been weel different
otherwise.

In the States PL/1 was defined, with a completely different philosophy
(not an algorithmic language, but a programming language).

N. Wirth, while in the USA, worked on PL/360 and on Algol W,
which had a minor but interesting effect on subsequent history;
PL/360 was structured assembler, with an algol like syntax, and
the other was an extension of Algol 60 with records and strings
etc...

In the UK, the CPL language (by Cambridge and London
Universities) project was started, and it produced a nice
language with operators, valued blocks, and lots of other nifty
aspects. To implement it, M. Richards implemented a very small
subset of it, called BCPL, which was at the same semantic level
as say PL/360, but machine independent, higher level (another
such language, byt the way, was Neliac, by Halstead, which was
quite good, IMNHO), and with only one data type, the word, and
only one type constructor, the array, but had sophisticated
control structures and was simple and fast.

In Europe, two landmark events happened; Dahl, Dijkstra, Hoare
authored "Structured Programming", and Van Wijngaarden proposed a
new technology for grammars that could be used to describe
context sensitive aspects.

After Hoare's paper on data typing in "Structure programming"
Wirth designed a language, called Pascal, that implemented a
*very small* subset of Hoare's ideas, essentially those that
could be implemented with strightforward code generation; such
interesting ideas as arrays with other arrays or sets or records
as indices were lost, and so on.

After Van Wijngaarden, groups in the UK and Holland defined a language,
very influenced by CPL, that was described in the new Two Level Grammars
invented by Van Wijngaarden. The new language was a very ample extension of
Algol 60, and not synctactically compatible with it, and was designed to
cover almost any area of programming, with just a small set of basic concepts,
that could be combined in many ways.

A small war ensued between the Pascal, Wirth, Hoare, Dijkstra
camp, and the Van Wijngaarden, Algol 6[68], CPL, camp; Pascal
was hailed as a theoretically sound language, Algol 68 fans retorted it
was too simple and limited to be adopted as a general purpose international
standard.

The latter point of view prevailed, and Algol 68 was adopted as
an international standard.  In 1975 a fully revised language
report and a slightly revised Algol 68 language were published.
It proved exceptionally difficult to provide a compiler for full
Algol 68, because the language syntax was *very* context
sensitive, and some language rules were *very* subtle, but
eventually it did happen.

In the meantime, Pascal, which had been rejected because it was
considered too simplistic, achieved fame and popularity because a
simple, free implementation was provided.

In the meantime BCPL too, much for the same reasons, had become
popular, and, thanks to links between Cambridge UK and some USA
research centers (Xerox, MIT, Bell Labs), had been adopted in
several parts of that country. In particular BCPL was to be the
implementation language for the Multics Project, before they
decided to switch (with much much pain) to PL/1. Indeed the BCPL
compiler on Multics is older than any PL/1 compiler, even if most
Multics users don't know there is one.

It so happened that certain Bell Labs people were working on
Multics, and they were certainly exposed to BCPL, and when Bell
Labs got out of Multics, they decided to build a very small OS
somewhow inspired to Multics (by the way, it is one of the
tragedies of history that many current Unix workstations are far
more powerful than the old Multics machines, yet the Unix they
run is still far less sophisticated, simple and efficient than
Multics was).

It also happened that the GE 600 machines used for Multics were
also popular in a certain canadian university, that took the BCPL
compiler and hacked it a little to create B, a less odd looking
version of BCPL (which had quaint British syntax, and also used a
very small character set, because of the use of very old printers
where it had been developed). It also happened that Bell Labs
had as a major service machine a GE 600 machine, and B was
installed on it.

In the meantime the Unix kernel had been evolving, and the
authors felt it was no longer sustainable having it in assembler.
The took B as a model, and developed C, a very small (initially)
extension to it. They added (initially just a few) different
lengths of integers, and symbolic offsets into arrays, turning
them into structures.

About the same time, several people from cambridge UK happened to
visit Bell Labs, among them S. Bourne, one of the authors of the
Algol68C (a large subset of algol 68) compiler. This strongly
influenced the /bin/sh shell syntax (and its implementation), the
adb debugger, and the further evolution of C, which however still
retained its fundamental BCPLish flavour.

After a while, B. Stroustrup, a Danish guy that had been exposed
to Simula 67 at home, and to heavvvvy doses of BCPL and Algol68C
at Cambridge UK for his doctorate, joined Bell Labs, and started
working on a project called C with Classes, which eventually
extended C both with many Algol 68 and Simula 67 features.

   I will still argue vigorously that the Pascal family
   was founded on Algol-60 (consider the relative dates) but I
   admit that there's a case for tracing C casts and some aspects
   of its type system to Algol68.

Well, if you believe what I said above, Pascal was meant as an
*alternative* to Algol 60, and as a successor, it had a very
distinctly different flavour. Simula 67 and Algol 68 are the true
descendants of Algol 60. C has been much influenced by BCPL (of
course...)  which is a distant relation of Algol 68, by Algol 68
itself, and later on, C++ has been even more heavvily influenced
by Algol 68 and Simula 67. C has somewhat more than casts and
many aspects of its type system inspired by Algol 68 or Algol
68C.

Other interestiong notes: J. Ichbiah, the Ada man, had previously
worked a lot on Simula 67, somewhat on Algol 68, and developed an
implementation language whose ancestry seems to me clearly
derived from Algol 68 or Mary, called LIS, many of which features
popped up in Ada. Ada itself also contains a number of ideas
taken straight from Algol 68. A german university is now
distributing for very cheap a very portable Simula 67 compiler
that will also run on home micros... It may still make a comeback!

Algol 68 also influenced a lot of research into difficult topics
of programming language design and implementation; to this date,
papers on Algol 68 implementation make fascinating reading.

Frankly, Algol 68 is now all but dead, but if somebody, e.g.
Cambridge UK, were to release on the net, e.g. comp.sources.misc,
as freeware the Algol68{C} compiler (a *very* fine piece of
portable software) and its accessories and libraries and tools
etc..., I believe a lot of people in the USA and elsewhere could
rediscover its charms, and it could develop into a serious thing.
--
Piercarlo "Peter" Grandi           | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcvax!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk

ljdickey@water.waterloo.edu (L.J.Dickey) (12/18/89)

In article <1TmbNv#4mK14j=eric@snark.uu.net> eric@snark.uu.net (Eric S. Raymond) writes:
 | A couple of well-informed comp.arch regulars have suggested that I may
 | have been a bit too peremptory in dismissing Algol68's influence on later
 | language development. I will still argue vigorously that the Pascal family
 | was founded on Algol-60 (consider the relative dates) but I admit that 
 | there's a case for tracing C casts and some aspects of its type system
 | to Algol68.
 | 

I think you will find that C was derived from B (Bell?), which in turn
owes a lot to CPL and BCPL from Cambridge.

-- 
    L. J. Dickey, Faculty of Mathematics, University of Waterloo.
	ljdickey@water.UWaterloo.ca	ljdickey@water.BITNET
	ljdickey@water.UUCP		..!uunet!watmath!water!ljdickey
	ljdickey@water.waterloo.edu	

dmr@alice.UUCP (12/18/89)

Grandi's history of languages, <PCG.89Dec17184350@rupert.cs.aber.ac.uk>,
seems moderately plausible up until the part I know about directly.  Perhaps
we have an effect like the one observed after Velikovsky's books:
the astronomers agreed that the astronomy was bogus, but some were impressed
by his history; some historians thought the opposite.

Specifics: Multics was sophisticated, but I would not call it
simple and efficient.  There was never any plan to write it in BCPL
(this would be an anachronism if nothing else).

B (the name is an intersection of BCPL and Bonnie, Thompson's wife's
name) was done by Thompson at Bell Labs.  Waterloo (the Canadian university)
got it much later, and made good use of it--to develop Eh and Zed,
for example, but this was a branch off the main line.

Bourne came to work at Bell Labs after C started, and stayed for
several years (rather more than just a visit).  He didn't "influence"
the Bourne shell and adb, he wrote them.

To respond to the topic that started this discussion off: the type
structure of C was in fact profoundly influenced by Algol 68.
And all the languages mentioned are indeed descendants of Algol 60.

	Dennis Ritchie
	dmr@research.att.com
	att!research!dmr

bs@alice.UUCP (Bjarne Stroustrup) (12/18/89)

Simula was designed and implemented in Oslo, not Trondheim.

(maybe you got muddled up with Mary, that came from Trondheim?)

Also, I worked extensively with Simula at Cambridge.

amull@Morgan.COM (Andrew P. Mullhaupt) (12/19/89)

In article <PCG.89Dec17184350@rupert.cs.aber.ac.uk>, pcg@rupert.cs.aber.ac.uk (Piercarlo Grandi) writes:
> 
> In article <1TmbNv#4mK14j=eric@snark.uu.net> eric@snark.uu.net
> (Eric S. Raymond) writes:
> 
>    A couple of well-informed comp.arch regulars have suggested that I may
>    have been a bit too peremptory in dismissing Algol68's influence on later
>    language development.
> 
>    Would dmr or anyone else with certain knowledge care to comment?
>
To Eric: I think you may have been a little hasty...
 
| Frankly, Algol 68 is now all but dead, but if somebody, e.g.
| Cambridge UK, were to release on the net, e.g. comp.sources.misc,
| as freeware the Algol68{C} compiler (a *very* fine piece of
| portable software) and its accessories and libraries and tools
| etc..., I believe a lot of people in the USA and elsewhere could
| rediscover its charms, and it could develop into a serious thing.
| --
To Peter:
True enough, but people are witnessing a rebirth of interest in 
another 'dead' language (APL). I would like a copy of that Algol68
from Cambridge if I could have one for UNIX. The most likely use
would be to explore in a real environment, (i.e. 'off the blackboard')
what some of the data structuring ideas of Algol68 can bring to
our in-house language design efforts.

Later,
Andrew Mullhaupt

rcd@ico.isc.com (Dick Dunn) (12/19/89)

pcg@rupert.cs.aber.ac.uk (Piercarlo Grandi) wrote a long note about the
interrelationships of the Algols, Simula, Pascal, etc., but got some of the
history turned about.

Let's pick up about here...
> In Europe, two landmark events happened; Dahl, Dijkstra, Hoare
> authored "Structured Programming"...

You need to be careful about that one, because the three parts of _Struc-
tured_Programming_ have different origins and different real dates.

[vanWijngaarden's work]
> new technology for grammars that could be used to describe
> context sensitive aspects.

There are really two aspects to the work here.  Remember (or note, if you're
fortunate enough not to remember:-) that the original Algol 68 report had
the two-level "vW" grammar, but used ordinary prose to describe "context
conditions".  The revised report (circa 72?) pushed the grammar much
further.

> After Hoare's paper on data typing in "Structure programming"
> Wirth designed a language, called Pascal, that implemented a
> *very small* subset of Hoare's ideas...

This is a bit backwards.  Pascal was first out about 1970; _Structured_
_Programming_ was published after that.  However, Hoare's work is properly
dated more like '65 (it just took a while to see print in _S_P_), and the
work itself certainly laid the basis for Pascal's type structure.  I think
Hoare and Wirth were working closely at that time.

> A small war ensued between the Pascal, Wirth, Hoare, Dijkstra
> camp, and the Van Wijngaarden, Algol 6[68], CPL, camp; Pascal
> was hailed as a theoretically sound language, Algol 68 fans retorted it
> was too simple and limited to be adopted as a general purpose international
> standard.

Pascal was a result of the war, not the precipitator.  There were several
candidate language proposals presented to WG2.1, and after very heated
dispute (Grandi calls it a "small war"; I would omit "small":-), those
favoring a simple language produced a sort of "minority report" and
eventually left the group.  Pascal followed shortly thereafter.

> In the meantime BCPL too, much for the same reasons, had become
> popular, and, thanks to links between Cambridge UK and some USA
> research centers (Xerox, MIT, Bell Labs), had been adopted in
> several parts of that country...

I'd say that BCPL had really become significant *before* the Pascal/
Algol 68 flap...although it was certainly alive and well then.

[moving to another part...]
> About the same time, several people from cambridge UK happened to
> visit Bell Labs, among them S. Bourne, one of the authors of the
> Algol68C (a large subset of algol 68) compiler. This strongly
> influenced the /bin/sh shell syntax (and its implementation),...

That's what we know now as the "Bourne shell" - but this appeared circa
Version 7, which is very late 70's.  The Bourne shell was by no means the
first /bin/sh.

>...the adb debugger,...

Don't forget that there was an Algol 68 implementation for V7 (by Bourne).
According to Bourne, adb was developed to help debug that implementation.

>    I will still argue vigorously that the Pascal family
>    was founded on Algol-60 (consider the relative dates)...
>...Well, if you believe what I said above, Pascal was meant as an
> *alternative* to Algol 60, and as a successor, it had a very
> distinctly different flavour...

Pascal was intended from the start to be a "small" language, and to have a
straightforward mapping onto the machine.  Given that Pascal was first
implemented on CDC 6x00's, and given the grotesque, hideous, abysmal imple-
mentation of Algol 60 on that machine, I wonder what part of Wirth's atti-
tude to Algol 60 as a real language was formed by latter-day experience
with that implementation.

> Other interestiong notes: J. Ichbiah, the Ada man, had previously
> worked a lot on Simula 67, somewhat on Algol 68, and developed an
> implementation language whose ancestry seems to me clearly
> derived from Algol 68 or Mary, called LIS, many of which features
> popped up in Ada. Ada itself also contains a number of ideas
> taken straight from Algol 68...

Anyone seriously designing an algorithmic language post-1970 has to have
been influenced somehow by Algol 68.  I wonder if some of the influences
from Algol 68, and more particularly from Mary (a wonderful bit of work)
could have come via Mark Rain, who was deeply involved in Mary and at least
peripherally involved in both Algol 68 and Green.
-- 
Dick Dunn     rcd@ico.isc.com    uucp: {ncar,nbires}!ico!rcd     (303)449-2870
   ...Never offend with style when you can offend with substance.

pcg@aber-cs.UUCP (Piercarlo Grandi) (12/20/89)

In article <10248@alice.UUCP> dmr@alice.UUCP writes:
    
    Specifics: Multics was sophisticated, but I would not call it
    simple and efficient.

Well, I beg to differ. Compared to things like VMS, System V, BSD Unix,
etc..., Multics was remarkably small, simple, and fast. I find that a lot of
people tend to forget that Multics run machines on which you would not today
run GNU Emacs. The architecture of Multics was remarkably elegant, and given
the few simple concepts employed and the relatively simple machine
architecture it was also efficient and simpel itself. The use of shared
libraries, memory mapped files, etc... was especially favourable.

Of course, as an example of *really* simple and efficient, I would put
forward V7 Unix (if one is content with its many limits), or MUSS, which is
actually as powerful as Multics, and smaller than Unix V7, and was designed
about the same time as Multics was. I have often thought that MUSS was what
Multics should have been. On the other hand, Multics is still far simpler
and more elegant and efficient than the latter day Unixes. Certainly
architecturally, API-wise, but also I think in implementation, e.g. I think
also in a simple measure of lines of code in the kernel.

    There was never any plan to write it in BCPL
    (this would be an anachronism if nothing else).

I was not there, and Dennis Ritchie was, but I seem to recollect reading
that the Multics project at MIT was started *before* PL/1 was designed, and
the MIT people, who had good links with Cambridge UK (and some with
Manchester), and were inspired by Atlas and Titan as well as CTSS, had
decided to use BCPL.

It was only after PL/1 was designed and looked like becoming a standard that
(apparently to please GE and BTL, the industrial partners) they decided to
switch to PL/1, and a first, half cooked, compiler for it was written from
scratch, *after* the BCPL had already been done. I sure remember having a
look at the Multics BCPL compiler and seeing that it seemed *very* old (and
nobody knew about it anyhow).

Anybody can tell whether my recollection of having read this is true?

    B (the name is an intersection of BCPL and Bonnie, Thompson's wife's
    name) was done by Thompson at Bell Labs.

Ooops. A slip. On the other hand, if I remember correctly, either Thompson
or Ritchie did study in a canadian University, and maybe this tripped my
memory.
    
    Bourne came to work at Bell Labs after C started, and stayed for
    several years (rather more than just a visit).  He didn't "influence"
    the Bourne shell and adb, he wrote them.

Yes, yes. I used some understatement, or tongue-in-cheek, here and there
(e.g. describing the Algol 68 Pascal debate as merely a small war...).  I was
writing that Bourne's Algol68C experiences influenced very much both the sh
syntax and its source code (in later System Vs it has been de-Algol68fied
though), not to mention the fact that adb had an a68 stack trace command as
well as a c stack trace command ($a and $c respectively, if I remember
correctly).

    And all the languages mentioned are indeed descendants of Algol 60.

In an historical sense Pascal is as well, but I would like to maintain my
contention that Pascal's flavour is very different, and I would rather call
it a successor rather then a descendant. It belongs to the "algorithmic"
language family, and comes after Algol 60, but the style is profoundly
different.
-- 
Piercarlo "Peter" Grandi           | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcvax!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk

pcg@aber-cs.UUCP (Piercarlo Grandi) (12/20/89)

In article <1989Dec18.192301.3863@ico.isc.com> rcd@ico.isc.com (Dick Dunn) writes:
    
    > In Europe, two landmark events happened; Dahl, Dijkstra, Hoare
    > authored "Structured Programming"...
    
    You need to be careful about that one, because the three parts of _Struc-
    tured_Programming_ have different origins and different real dates.

Well, they all were presented at the NATO workshops, didn't they? certainly
they are utterly different in flavour. The Hoare and the Dahl contributions,
about type systems and non nested flow control, have unfortunately been
mostly forgotten.

    Pascal was a result of the war, not the precipitator.  There were several
    candidate language proposals presented to WG2.1, and after very heated
    dispute (Grandi calls it a "small war"; I would omit "small":-), those
    favoring a simple language produced a sort of "minority report" and
    eventually left the group.  Pascal followed shortly thereafter.

Well, Pascal as we know it today. Let's say I used "Pascal" with some
latitude here, to mean the coagulation of the ideas from Hoare's work on
typing, and from Wirth's work on PL/360 and Algol W. Indeed Pascal was the
answer to Algol 68, and unfortunately more or less buried it. This happened
because, I reckon, a free model implementation was readily available, and
quickly adopted at many Universities.

The Algol 68 guys had painted themselves in a corner, because they had
relied on advances in the state of the art in compilers to make Algol 68
implementable and usable. This took quite a few years, not unlike Ada, but
for different reasons. I really think that some aspects of Algol 68 (user
defined priorities and operator symbols, operators and modes with the same
name, excessive overloading of parenthesis, ...) were a very poor tradeoff
between language sophistication and cost of compilation, especially as to
syntax. At least however Algol 68 *semantics* were carefully designed to be
efficiently implementable, and by and large they were. I think that the bits
of Algol 68 that went into C++ have been admirably chosen, and Stroustrup
has got it more right.

The end result is that there are nowadays some excellent (and portable)
Algol 68 compilers, like Algol 68C, RSRE, FLACC, and a few others, and some
pretty good subset compilers (Manchester for ACK, a British/Canadian one for
PDPs, ...). The reader of this newsgroup already knows I wish some were
posted to the net...

    That's what we know now as the "Bourne shell" - but this appeared circa
    Version 7, which is very late 70's.  The Bourne shell was by no means the
    first /bin/sh.

Unfortunately. I always reckoned myself lucky I did serious work on Unix
only starting with V7 (can you say "Onyx"? even PDPs were too expensive...).
The older shell was almost terrible.
    
    I wonder if some of the influences from Algol 68, and more particularly
    from Mary (a wonderful bit of work) could have come via Mark Rain, who
    was deeply involved in Mary and at least peripherally involved in both
    Algol 68 and Green.

Well, Mary certainly influenced LIS, judging from the latter's syntax and
certain aspects of semantics. I read some papers about Mary in some old
Machine Oriented HL Language proceedings, and given that LIS is also
described as a MOHLL, I am sure that Ichbiah did his homework and was well
aware of Mary.

By he way, are these MOHLL conferences still held? They were *very*
interesting.
-- 
Piercarlo "Peter" Grandi           | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcvax!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk

pcg@aber-cs.UUCP (Piercarlo Grandi) (12/20/89)

In article <10250@alice.UUCP> bs@alice.UUCP (Bjarne Stroustrup) writes:
    
    Simula was designed and implemented in Oslo, not Trondheim.

Yes, yes. Norwegian Computing Center. Great guys.

    (maybe you got muddled up with Mary, that came from Trondheim?)

Yes, Mark Rain. He is now in the USA, I seem to remember.

    Also, I worked extensively with Simula at Cambridge.

it shows here and there in C++...
-- 
Piercarlo "Peter" Grandi           | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcvax!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk

dmr@alice.UUCP (12/20/89)

Grandi writes:

 > It was only after PL/1 was designed and looked like becoming a standard that
 > (apparently to please GE and BTL, the industrial partners) they decided to
 > switch to PL/1, and a first, half cooked, compiler for it was written from
 > scratch, *after* the BCPL had already been done. I sure remember having a
 > look at the Multics BCPL compiler and seeing that it seemed *very* old (and
 > nobody knew about it anyhow).


He is wrong; just about the first thing I did on coming to Bell
Labs was to work on the port of the BCPL compiler to Multics.  In fact
I wrote the bcpl command, which, just like cc , called in the various
compiler phases.  (By the time I arrived, Rudd Canaday and Ken Thompson
had done the real work of making Martin Richards' 7094 compiler
generate GE 645 code instead.)  In due course announcement of this
compiler appeared in the MSPM as unofficially supported software.  The
operating system was already a going concern, though not a commercial
product, by then (1968).  This BCPL compiler is indeed very old;
if Grandi has really looked at it, he has looked at characters
typed by me, in that year, into a Multics system written in PL/1.

The first versions of Multics were written in EPL, for `Early PL/1',
a dialect of PL/1 whose compiler was written by Doug McIlroy and
Bob Morris.  I assure you that the EPL compiler is older than
the BCPL compiler, so old that it has vanished except perhaps
in someone's file cabinet.  In 1969 or so a full PL/1 compiler,
courtesy of Freiburghouse etc. of GE was introduced.

The person who took a sabbatical at Waterloo was Steve Johnson.
He had a real shock.  He took B there and planted its seed,
but when he came back to Bell Labs, C had appeared, and Alan
Snyder had already converted SCJ's yacc program from B into C....


	Dennis Ritchie
	dmr@research.att.com
	att!research!dmr

seanf@sco.COM (Sean Fagan) (12/20/89)

In article <1517@aber-cs.UUCP> pcg@cs.aber.ac.uk (Piercarlo Grandi) writes:
>In article <10248@alice.UUCP> dmr@alice.UUCP writes:
>    Specifics: Multics was sophisticated, but I would not call it
>    simple and efficient.

Elegant, in what it did, I would add.

>Well, I beg to differ. Compared to things like VMS, System V, BSD Unix,
>etc..., Multics was remarkably small, simple, and fast. 

Huh?  Multics is/was *huge* (all those lines of PL/I add up, you know 8-))!.
Seriously, we're talking hundreds of thousands of lines of code, I believe.
The "kernel" was, I suppose, smaller than you would expect, but Mach is tiny
comparatively (for the same reasons...).

>I find that a lot of
>people tend to forget that Multics run machines on which you would not today
>run GNU Emacs. 

GNU Emacs is a poorly-written program.  There *was* a version of emacs that
ran under Multics, and even had a LISP-interpreter, I believe.

As for efficient, I'm going to plug NOS on a CDC Cyber 8-).

-- 
Sean Eric Fagan  | "Time has little to do with infinity and jelly donuts."
seanf@sco.COM    |    -- Thomas Magnum (Tom Selleck), _Magnum, P.I._
(408) 458-1422   | Any opinions expressed are my own, not my employers'.

pcg@aber-cs.UUCP (Piercarlo Grandi) (12/20/89)

Well, APL is different, because it has always had loyal commercial
followers, and IBM behind it. APL has never been really dead. Algol 68 is
essentially dead. There are a few users in the UK, NAG may still be
supporting their fine mathematical library with Algol 68 bindings, but
that's it mostly. Anybody still using Neliac? :->

    I would like a copy of that Algol68 from Cambridge if I could have one
    for UNIX.

Cambridge tend to be fairly liberal with it, at least to Universities (I got
a copy several years ago fairly easily). It is worth having a look at. They
have a very flexible intermediate code generation scheme, that ports easily.

    The most likely use would be to explore in a real environment, (i.e.
    'off the blackboard') what some of the data structuring ideas of Algol68
    can bring to our in-house language design efforts.

Most of them have been borrowed into other languages, so overloading,
operators, etc... you may already know. On the other hand, in Algol 68 they
are beautifully integrated and more general than anywhere else (at times,
too much so). You may, if not already, want to have some hands experience
with Simula 67 as well, because a number of interesting ideas and concepts
from Simula 67 (block prefixing, inner, non nested flow control, class
bodies, inspecting, and a few more recent ones) are not simply there in most
common OO languages. On the other hand Simula 67 has some obvious drawbacks,
mostly because of backwards compatibility with Algol 60, like the forced use
of references for class objects.

	Note: Bertrand Meyer, that writes at length about Simula 67 in his
	book, seems not to have realized that the forced use of references
	is a regrettable hack, not a feature. This is fairly clearly said in
	the Simula 67 papers, and too bad that in Eiffel this hack survives,
	only worse. By the way, I am working on a paper in which I purport
	to show that this hack is the reason why Simula 67 has prefixing,
	that was later misnomed inheritance, and that prefixing/inheritance
	is superfluous and even negative in a language like C++ that does
	not mandate the use of references.

Also, the Algol 68 Revised Report is a model of clarity, simplicity,
conciseness and elegance in language definition, and the use of two level
grammars exemplary, as is the careful choice of terminology. It is well
worth reading on its own sake.

By the way, somebody will disagree with me, but I really think that is true,
especially given the (at times excessive, e.g. coercions) sophistication of
the language. I think that the bad press that Algol 68 got in this area is
because of the original Report, which was not very nice (what about
"gomma"s? :->). The Revised Report is another things entirely.

Compare it with the reference manuals on Ada and C++, which languages are
certainly on the same level of sophistication, and have a good many quirks
as well, and you will see that the Algol 68 RR never fails to make clear
what is the answer to even the most obscure questions (admittedly, you can
formulate much more obscure questions about Ada and C++ than Algol 68).
-- 
Piercarlo "Peter" Grandi           | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcvax!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk

davecb@yunexus.UUCP (David Collier-Brown) (12/21/89)

>In article <10248@alice.UUCP> dmr@alice.UUCP writes:
>    Specifics: Multics was sophisticated, but I would not call it
>    simple and efficient.

pcg@aber-cs.UUCP (Piercarlo Grandi) writes:
> Well, I beg to differ. Compared to things like VMS, System V, BSD Unix,
> etc..., Multics was remarkably small, simple, and fast. I find that a lot of
> people tend to forget that Multics run machines on which you would not today
> run GNU Emacs.

   Alas, BSD 4.3 still isn't as large as Multics, although 4.4 may
make it (;-)).

   As a former Multician (DRBrown.TSDC@HI-Mulics.ARPA) and still Multics
bigot, I have to agree with both peter and dmr.

  It suffered from "sophistication", in that the primitives they picked
as being sufficent for the task were large, often complex "objects", usually
described properly as subsystems.  They were, however, few in number and
conceptually simple, which made it easy to reason about once you got past
that first horrible case of information overload...
   As to fast, it varied.  The early releases bottlenecked seriously in
a number of areas (mostly due to implementation, phew!).  Mine was a 
release 9 on the DPS-8M hardware base and ran like a workstation (:-)).
  Also, there was no such thing as a small configuration, which meant that
the machines usually got loaded with everybody and his brother as soon as
they arrived, lest the investment not pay off.  Net result: 130 users and
fair to poor response.

  To return to late blooming, I've seen a few of the good ideas quietly
resurface (memory mapped segments/files), and the bad ones (like small
segments: only 2^18 bytes) pop back up like a handfull of bad pennys.  Ah
well, it just proves that he who knows not history is doomed to reinvent
it.  
--dave
 

-- 
David Collier-Brown,  | davecb@yunexus, ...!yunexus!davecb or
72 Abitibi Ave.,      | {toronto area...}lethe!dave 
Willowdale, Ontario,  | Joyce C-B:
CANADA. 416-223-8968  |    He's so smart he's dumb.

pcg@aber-cs.UUCP (Piercarlo Grandi) (12/22/89)

PL/1, if used carefully, is not that horrible at all, and the Multics guys
had an *excellent* compiler. I read an old MIT TR in which (Saltzer?) there
was a discussion of truly kernelizing Multics, and line counts for the
various system modules were given, and it was not *big*. Notice also that the
linker in Multics is considered a part of the system.

Remember that Unix V7 was about 10-20,000 lines, and that current BSD or AT&T
Unixes run well into the hundred thousands. I would really like to see a
line count, side by side, of SunOS 3 or 4, and System V.3 or 4, and of
Multics. It could be surprising... I doubt *I* would be suprised.

    The "kernel" was, I suppose, smaller than you would expect,
    but Mach is tiny comparatively (for the same reasons...).

After all Multics used a few elegant concepts thoughtout, and this leads to
simplification in a lot of places, and the standard use of shared libraries
meant a lot of code reuse, which the Multics guys were very keen about.

I also doubt that non kernel parts of Multics are longer than for other
systems. Most of Multics was done by very careful programmers operating under
a well understood set of principles, conventions, ideas, quite unlike Unix.
And again, having high quality shared libraries means *a lot*. I would gladly
throw away many of the Unix tools I have for the equivalent ones under
Multics, which are smaller and more sophisticated. For example, GNU Emacs vs.
Multics EMACS, rn vs. confer, RDMS vs. most every other DB, etc...

I may again be wrong, but I think that the perception of Multics as huge is
really psychological, because the typical Multics kit was huge indeed; I
worked on a many (12, if I remember correctly) processor H6080, for one.
    
    GNU Emacs is a poorly-written program.

Especially as to memory management (editing with the gap method, no
ccompaction of the lisp workspace, ...).

    There *was* a version of emacs that ran under Multics, and even had a
    LISP-interpreter, I believe.

On the other hand the Multics EMACS, which I had the pleasure to use, by
Greenberg, was *written* in Multics Lisp, which I had the pleasure to use
too. Great thing. Almost conceivable only under Multics. At times I used
Multics Lisp as my shell, an idea that under Unix was done by sombody at Yale.

Once you understand that pipes are bogus and you could say "(sort (ls))"
instead of "ls | sort", something that is only really practical with one
level shared memory architectures, you don't want to go back again. I don't
know it it has been ported, but I think that Icon would also make a fine
Multics shell. Not that the native shell was bad, mind you...

I am sorry about RMS' feelings :-), but I came to believe that Multics EMACS
was *the* proper EMACS, and the original Teco EMACS and the various C
EMACSes floating around just not up to par.

Now RMS or somebody of that ilk could well observe that the model EMACS
should be LMI ZMACS, and I may agree, except that it was overdone and
hackerish. On the other hand interactive programs are really best done in
an interactive language, or at least in a dynamic binding environment.
-- 
Piercarlo "Peter" Grandi           | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcvax!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk

pcg@aber-cs.UUCP (Piercarlo Grandi) (12/22/89)

    >Well, I beg to differ. Compared to things like VMS, System V, BSD Unix,
    >etc..., Multics was remarkably small, simple, and fast. 
    
    Huh?  Multics is/was *huge* (all those lines of PL/I add up, you know
    8-))!.
Message-ID: <1549@aber-cs.UUCP>
Date: 21 Dec 89 18:11:19 GMT
Reply-To: pcg@cs.aber.ac.uk (Piercarlo Grandi)
Organization: Dept of CS, UCW Aberystwyth
	(Disclaimer: my statements are purely personal)
Lines: 61

PL/1, if used carefully, is not that horrible at all, and the Multics guys
had an *excellent* compiler. I read an old MIT TR in which (Saltzer?) there
was a discussion of truly kernelizing Multics, and line counts for the
various system modules were given, and it was not *big*. Notice also that the
linker in Multics is considered a part of the system.

Remember that Unix V7 was about 10-20,000 lines, and that current BSD or AT&T
Unixes run well into the hundred thousands. I would really like to see a
line count, side by side, of SunOS 3 or 4, and System V.3 or 4, and of
Multics. It could be surprising... I doubt *I* would be suprised.

    The "kernel" was, I suppose, smaller than you would expect,
    but Mach is tiny comparatively (for the same reasons...).

After all Multics used a few elegant concepts thoughtout, and this leads to
simplification in a lot of places, and the standard use of shared libraries
meant a lot of code reuse, which the Multics guys were very keen about.

I also doubt that non kernel parts of Multics are longer than for other
systems. Most of Multics was done by very careful programmers operating under
a well understood set of principles, conventions, ideas, quite unlike Unix.
And again, having high quality shared libraries means *a lot*. I would gladly
throw away many of the Unix tools I have for the equivalent ones under
Multics, which are smaller and more sophisticated. For example, GNU Emacs vs.
Multics EMACS, rn vs. confer, RDMS vs. most every other DB, etc...

I may again be wrong, but I think that the perception of Multics as huge is
really psychological, because the typical Multics kit was huge indeed; I
worked on a many (12, if I remember correctly) processor H6080, for one.
    
    GNU Emacs is a poorly-written program.

Especially as to memory management (editing with the gap method, no
ccompaction of the lisp workspace, ...).

    There *was* a version of emacs that ran under Multics, and even had a
    LISP-interpreter, I believe.

On the other hand the Multics EMACS, which I had the pleasure to use, by
Greenberg, was *written* in Multics Lisp, which I had the pleasure to use
too. Great thing. Almost conceivable only under Multics. At times I used
Multics Lisp as my shell, an idea that under Unix was done by sombody at Yale.

Once you understand that pipes are bogus and you could say "(sort (ls))"
instead of "ls | sort", something that is only really practical with one
level shared memory architectures, you don't want to go back again. I don't
know it it has been ported, but I think that Icon would also make a fine
Multics shell. Not that the native shell was bad, mind you...

I am sorry about RMS' feelings :-), but I came to believe that Multics EMACS
was *the* proper EMACS, and the original Teco EMACS and the various C
EMACSes floating around just not up to par.

Now RMS or somebody of that ilk could well observe that the model EMACS
should be LMI ZMACS, and I may agree, except that it was overdone and
hackerish. On the other hand interactive programs are really best done in
an interactive language, or at least in a dynamic binding environment.
-- 
Piercarlo "Peter" Grandi           | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcvax!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk

firth@sei.cmu.edu (Robert Firth) (12/27/89)

In article <1989Dec18.192301.3863@ico.isc.com> rcd@ico.isc.com (Dick Dunn) writes:

>Pascal was a result of the war, not the precipitator.
...
>I'd say that BCPL had really become significant *before* the Pascal/
>Algol 68 flap...although it was certainly alive and well then.

The documents I think support both these assertions.

(1) The publication of record introducing Pascal is Acta Informatica
    vol 1 pp 35-63, entitled 'The Programming Language Pascal'.  The
    journal most helpfully includes dates of submission as well as
    dates of publication; it received Wirth's paper on 1970 October 30.

(2) The summary to the paper begins thus:

	A programming language called Pascal is described
	which was developed on the basis of Algol-60, its
	range of applicability is considerably increased
	due to a variety of data structuring facilities.

    The language was developed by Wirth in the period 1969/70, after
    he had broken with the Algol-6X group, and in part as an attempt
    to demonstrate the feasability of his ideas, which, of course,
    owe a lot to Algol-W and to Hoare's work on data structures.

(3) At the time of publication, there was one full Pascal compiler,
    written in Pascal and executing on the CDC 6600.  (This had
    some bizarre consequences that still plague us, including the
    line oriented IO, inherited alas by Ada.)

(4) By contrast, BCPL had reached the same stage four years earlier,
    and by 1969 had been ported to the Titan at Cambridge.  The
    first edition of the Cambridge BCPL manual was issued in the
    same year.  The BCPL porting kit was issued in 1971; the date
    on the accompanying compiler documentation is August 1971.

Incidentally, I have a copy of the Cambridge Algol-68C compiler.
It is indeed a fine piece of work, and much of it could profitably
be studied today.

firth@sei.cmu.edu (Robert Firth) (12/27/89)

In article <1517@aber-cs.UUCP> pcg@cs.aber.ac.uk (Piercarlo Grandi) writes:

>I was not there, and Dennis Ritchie was, but I seem to recollect reading
>that the Multics project at MIT was started *before* PL/1 was designed, and
>the MIT people, who had good links with Cambridge UK (and some with
>Manchester), and were inspired by Atlas and Titan as well as CTSS, had
>decided to use BCPL.

This seems very confused to me.  First, 'Atlas' and 'Titan' are the
same thing; the machine at Cambridge called 'Titan' was a prototype
Atlas II.  As far as I know, it's only relevance to the MIT machine
is that both used a virtual memory technique derived from the
original Manchester design.  Moreover, the Titan was programmed largely
in machine code; there was a scientific programming language called
'Titan Autocode' made available in 1965 for number crunchers.  In
contrast to Multics, it had no real user file system; your files were
on magnetic tape and your directory was a sheet of paper in your desk
drawer on which you wrote down what you had written to which physical
block of tape.

The Cambridge Time Sharing System came into use only in 1967/68; I
remember watching the first remote terminal being installed in 1967.
Before that, you had to walk in the side door on Corn Exchange Street
and hang your little bag on the hook, containing the paper tape and
the job request slip.  So it is unlikely to have had much influence
on Multics, whose basic design was done by the end of 1966.

The 'Multics' project proper was started in October 1965; the second
report of the IBM/SHARE committee designing NPL, which contains the
greater part of what became PL/I, was issued in June 1964.  This
should settle the issue of chronological priority; it is of course
much harder to decide questions of influence or inspiration.

farber@linc.cis.upenn.edu (David Farber) (12/28/89)

As someone who was there and was part of the descision making process
at the beginning of Multics, let me add some info.

At the beginning of multics there was the normal problem
of what to program it in . We walked through assembler, B, 
even comtran and fortran. For obvious reasons
they were not attractive. I had be in on the begging of NPL
(latter PL/1 ) and Doug McIlroy had been on the 3x3
that fortulated NPL initial specs. NPL seemed
to be the route to go but there was no compiler for it. 
Bob Morris and Doug McIlroy thought they could put one togather
rapidly so we went with it.

In hinesight it was the right path; PL/1 was not a easy
language to compile for but there was NO other route.

Dave
David Farber; Prof. of CIS and EE, U of Penn, Philadelphia, PA 19104-6389 Tele:
215-898-9508(off); 215-274-8292 (home); FAX: 215-898-0587;  Cellular:  302-740-
1198 "The fundamental principle of science, the definition almost, is this: the
sole test of the validity of any idea is experiment." -- R. P. Feynman

pcg@rupert.cs.aber.ac.uk (Piercarlo Grandi) (12/29/89)

In article <5455@bd.sei.cmu.edu> firth@sei.cmu.edu (Robert Firth) writes:

   This seems very confused to me.  First, 'Atlas' and 'Titan' are the
   same thing; the machine at Cambridge called 'Titan' was a prototype
   Atlas II.

The *hardware* was the same (mostly). The OS was, I understand,
quite different.  Manchester had their OS, and Cambridge rolled
their own.

	[ ... nice reminiscences ...]

   The Cambridge Time Sharing System came into use only in 1967/68; I
   remember watching the first remote terminal being installed in 1967.
   Before that, you had to walk in the side door on Corn Exchange Street
   and hang your little bag on the hook, containing the paper tape and
   the job request slip.  So it is unlikely to have had much influence
   on Multics, whose basic design was done by the end of 1966.

This is a funny case of *double* confusion. The Cambridge TSS
that inspired Multics was the one done at MIT, Cambridge, for the
one old IBM machine (that had been modified to support base+limit
"virtual memory"). Multics was then largely inspired by the
virtual memory work done in the UK (minus, unfortunately, the
reverse page map used in ATLAS, which is another great idea whose
time has not yet come, modulo the ROMP...) and by the software
environent of that MIT CTSS, plus a slew of new ideas on
protection, which eventually resurfaced in the capability
bandwagon.

As to Multics, I read once that the sale of GE's computer
interests to Honeywell was the direct cause of Multics being
deemphasized, as the new owners wanted to take time to study
their acquisition and froze all new developments. I have read
that the stop to Multics was what made many major US corporations
(the fat part of the market) that were seriously considering it
as an alternative to IBM (so seriously that IBM hastily did
TSS/370 as a countermove -- BTW, TSS/370 was not that bad or slow
either) stop waiting and choose the IBM 360/370 line and its
horrid OS for good, and consigned posterity to ABENDs.

By the way, a personal note: I have always had this passion for
understanding the history of computer technology. In the
forgotten lateral valleys of such history there are a number of
very interesting things, mostly languages (from Neliac to EL/1),
but also architectures, operating systems, concepts, etc...

Many thanks to those that were there (Ritchie, Firth, Farber...)
for recollecting. I was not there; I am too young for that, and I
have only had the pleasure of skeeing out and reading now
yellowish books and magazines and reports abandoned on some dusty
shelf, and trying out all that I could to get a feel (yes, I
wrote programs in several odd language on several odd systems
just to learn: "Because it was there" :->).
--
Piercarlo "Peter" Grandi           | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcvax!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk

mitchell@community-chest.uucp (George Mitchell) (12/30/89)

In article <18510@netnews.upenn.edu> farber@linc.cis.upenn.edu (David Farber)
wrote:
>In hinesight it was the right path; PL/1 was not a easy
>language to compile for but there was NO other route.

Why not ALGOL?
/s/ George   vmail: 703/883-6029
email:  mitchell@community-chest.mitre.org    [alt: gmitchel@mitre.arpa]
snail:  GB Mitchell, MITRE, MS Z676, 7525 Colshire Dr, McLean, VA  22102

pcg@aber-cs.UUCP (Piercarlo Grandi) (01/02/90)

In article <85180@linus.UUCP> gmitchel@mitre.org (George Mitchell) writes:
    In article <18510@netnews.upenn.edu> farber@linc.cis.upenn.edu (David Farber)
    wrote:
    >In hinesight it was the right path; PL/1 was not a easy
    >language to compile for but there was NO other route.

Actually PL/1 is not a bad language. Exception handling is revolting,
arithmetic is *CRAZY*, and I/O and tasking a bit less so, syntax at times
odd, but for systems programming is not bad at all.

Based pointers, areas, reducible procedures (nonstandard), records, UNSPEC(),
etc... The only thing I really ever missed was a type naming facility,
because LIKE only applies to records (yes, I used to create dummy BASED
records as type prototypes...). The macro processor was an incredible beast,
better stay out of that.

The real problem with PL/1 for system programming is that some of the
ridiculous parts of the language, notably exceptions, greatly complicate the
procedure call protocol, slowing it down quite a bit, all the funny parts
make the compiler slow and bulky, and that in the flagship implementation,
IBM's, these problems were especially bad.

The IBM PL/I implementations, both optimizing and debugging, are easily the
worst around, both as to compiler quality and compiled code quality; the
best PL/1s IMNHO are the Multics one (of course!), and the Univac 1100 one.
    
    Why not ALGOL?

I assume you mean Algol 60; Algol 68 (which is later than Multics, so could
not have been used) has been used with great success to write several
operating systems.

Well, the reasons are obvious: no pointers, no records (BCPL has no records,
that's why C exists... :->), no "unsafe" operations, etc... Just not a
systems programming language.

Let me immediately defuse a counterexample: the "Algol" used to write the
Burroughs kernel is not really Algol 60, actually there are two Algols, one
for user programs and the other for systems programs; also the hardware is
*very* Algol oriented -- Multics is not an Algol like system at all; it is
all about dynamic allocation, shared memory, sophisticated pointer mangling.

As a fun note, people have been using Fortran for systems programming, e.g.
PR1MOS (they switched to a kind of PL/1 later on), and a very good Algol 68
compiler from France. They were both heroic efforts, given the lack of
pointers and records.

-- 
Piercarlo "Peter" Grandi           | ARPA: pcg%cs.aber.ac.uk@nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcvax!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk

beecher@granite.cr.bull.com (Thomas Beecher) (01/03/90)

I'm interested in Grandi's comments about signal/exception processing in
PL/I.   I've spent slightly more time programming PL/I (on Multics) than C
(on UNIX and DOS), so perhaps I'm biased, but...

With the possible exception of stack unwinding (cleanup condition)
which is hairy under the best of situations, I've found PL/I's signal
processing both fully functional and comprehensible.  (The
difficulties in correctly handling cleanup conditions in Multics PL/I
are well documented and well-understood by proficient Multics
programmers.)

Signal processing is more a function of the operating system than it
is of the programming language being used.  I can't imagine a tenable
argument for SysV's signal processing in C (besides, of course,
implementation efficiency, which doesn't hold water for me).  I seem
to remember a quote from Dennis Ritchie (I think--excuse me, Dennis,
if I'm wrong) that suggested that UNIX signals were not designed to
convey any information:  signals were meant to be either noticed or
ignored (sort of like moving faster than the speed of light, eh?).
Berkeley signalling sematics are somewhat better. 

With a well-defined (though perhaps implementation dependent) set of
system signals and the ability to define signals in the users'
namespace, PL/I offers the programmer complete, determinsitic control
over the handling of "exceptional" events.  (To those who aren't
familiar with Multics, you might also find it interesting to note that
signals can be both defined and handled at command level.)

I'm not terribly interested in involving myself in a religious (or
religiose) argument here, but as for me and my house, I shall long
miss PL/I's signalling semantics.

phipps@garth.UUCP (Clay Phipps) (01/04/90)

In article <18510@netnews.upenn.edu>,
farber@linc.cis.upenn.edu (David Farber) writes:
>
>NPL seemed to be the route to go but there was no compiler for it. 
>Bob Morris and Doug McIlroy thought they could put one togather rapidly 
>so we went with it.

Their estimate was reported by Corbat'o as 6 months.
Corbat'o described himself as a "member of the design team" for Multics.

>In hinesight it was the right path; 
>PL/1 was not a easy language to compile for but there was NO other route.

Corbat'o reported that "in spite of the dedication of the people involved",
reaching the "barely usable" stage actually required 15 months, 
and "a lot of work went into upgrading it in the next 18 months". 
"But it works and is useful", he concluded.

For more detail than net-bandwidth concerns are likely to allow this thread
of discussion to provide on the design and implementation of Multics, 
readers might be interested in hunting down the 1965 FJCC proceedings.
Another source, from which the quotes here were drawn, is the paper

F.J. Corbat'o: "PL/I As A Tool For System Programming: Five Years With 
A Temporary Compiler", _Datamation_ (hide it inside an issue of _CACM_ 
if you are too embarrassed to risk discovery that you ever read 
_Datamation_ :-), May 1969.

Disclaimer: I wasn't there, so I don't know how representative 
Corbat'o's paper was of the opinions of members of the Multics project team.
Mention of estimated and actual compiler completion times is not intended to 
denigrate the efforts of the people involved.  Deity knows *I'm* not perfect.
-- 
[The foregoing may or may not represent the position, if any, of my employer, ]
[ who is identified solely to allow the reader to account for personal biases.]
                                              
Clay Phipps 
Intergraph APD: 2400#4 Geng Road, Palo Alto, CA 94303; 415/852-2327
UseNet: {apple,ingr,pyramid,sri-unix}!garth!phipps
[^--Please either e-mail replies or allow 16 days for me to see follow-ups :-( ]
EcoNet: cphipps