Hi,
This was seen on Dave Farber's IP list; with many of
the Dramatis Personae on this list it seems worthwhile
to share it here, too:
"What I Saw at the Evolution of Plan 9" by Geoff Collyer
https://adi.onl/oral.pdf
-Jan
As part of a discusion on the Linux kernel mailing list, there was an
assertion that ctime was orginally "creation time".
From the v7 sources in TUHS, we can see:
struct dinode
{
unsigned short di_mode; /* mode and type of file */
short di_nlink; /* number of links to file */
short di_uid; /* owner's user id */
short di_gid; /* owner's group id */
off_t di_size; /* number of bytes in file */
char di_addr[40]; /* disk block addresses */
time_t di_atime; /* time last accessed */
time_t di_mtime; /* time last modified */
time_t di_ctime; /* time created */
};
... although the v7 kernel sources does seem to update ctime when the
inode metadata changes, regardless of what the coment in
/usr/src/sys/h/ino.h might say.
More interestingly, this comment seems to continue in newer versions
up to 3BSD, and then the comments becomes "change time" in BSD 4.2,
probably coincident with the File System Implementation?
The best we can guess is that the change from "creation time" to
"inode change time" happened sometime between 1979 and 1982. Does
anyone who was around can give the story about how and when this
happened?
- Ted
In July 1974 I visited Bell Labs Murray Hill, and Ken & Dennis showed me
around. I was very impressed because we (Univ of Nijmegen, NL) had a
PDP-11/45 just like theirs and I knew that machine quite well.
It was clear that their software kicked the machine much heavier than
our (DEC-original) DOS-system did. But I was a naive student so I wanted
more information and asked Ken: are there many UNIX users in Europe?
Ken brought us to the library where a Ms. Irma B. Biren, librarian, kept
the record of licenses. We found prof. Colouris in London... When I
asked whether maybe somebody closer by our place was present, Ken found
Gideon Yuval in Tel Aviv. Nobody closer....
Hendrik-Jan Thomassen
> everyone should write for their first compiler in Pascal for a
> simple language and no cheating using YACC. You need to write the whole
> thing if you want to understand how parsing really works.
Yacc certainly makes it easier to write parsers for big grammars, but
it's far from cheating. You need to know a lot more about parsing to use
Yacc than you need to roll your own.
Hand parsing of a tiny grammar is almost a necessary step on the way to
understanding Yacc. But I think hand-building the whole parser for a
compiler is unnecessary torture--like doing trigonometry with log tables.
Doug
Found out today that we lost George Coulouris about a month ago, he was at QMC (then QMW, now Queen Mary, University of London) in CompSci and an old Unix hand (but not only).
Obituary from his PhD student (who wrote a Unix editor called “ded”):
https://www.theguardian.com/education/2025/jan/19/george-coulouris-obituary
Someone I know is seeking the original version of an internal Bell Labs
memo from 1974 titled "Webster's Second on the Head of a Pin" by Morris and
Thompson. The topic appears to be related to improving the speed of lookups
or search. It's cited in a few papers as "Unpublished Technical Memo, Bell
Laboratories, Murray Hill, NJ 1974." All I can find online is citations.
Any leads appreciated!
--
Royce
As I mentioned in the discussion about C, it's easy to look back with
a modern perspective and cast aspersions on C. But this got me
thinking, what would possible alternatives have been? In the context
of the very late 1960s heading into the early 70s, and given the
constraints of the PDP-7 and early PDP-11s, what languages would one
consider for implementing a system like early Unix? Dennis's history
paper mentioned a very short-lived effort at Fortran, and I asked
about that a few years ago, but no one really remembered much about
it; I gather this was an experiment that lasted a few days or weeks
and was quickly abandoned. But what else?
My short list included PL/1, Algol/W, Fortran, and Pascal. Fortran was
already mentioned. I don't think PL/1 (or PL/I) could have fit on
those machines. Pascal was really targeted towards teaching and would
have required pretty extensive work to be usable. The big question
mark in my mind is Algol/W; how well known was it at the time? Was any
consideration for it made?
Obviously, the decision to go with BCPL (as the basis for B, which
beget C) was made and the rest is history. But I'm really curious
about how, in the research culture at the time, information about new
programming languages made its way through the community.
- Dan C.
On Mar 10, 2025, at 7:26 PM, John Levine <johnl(a)taugh.com> wrote:
>
> In my 1971 compiler course at Yale, Alan Perlis made us try to write a compiler
> that translated a subset of APL into Basic. He suggested we write it in APL,
> which was a terrible idea, so I wrote it in Trac, for which I happened to have
> written my own interpreter.
>
> I think my compiler was the only one that worked, and it was pretty clever,
> turning the APL array expressions into structures with array boundaries and
> example expressions, with no array temporaries. It only generated the loops to
> evaluate the expressions when storing into another array.
>
> Someone got a PhD in 1978 for a similar compiling technique but in 1971 I was a
> 17 year old twerp so what did I know?
>
> R's,
> John
Pretty impressive for a 17yo!
Isn’t APL syntax rather context sensitive[1]? Neither yacc nor
a RD parser would’ve helped! Unless the subset was limited to a
context free subset.
Tim Budd in his 1978 work made quite a few changes to APL to
ease compilation and used yacc. [I have the book somewhere....]
[1] I do not recall if Iverson's original APL had a context sensitive
grammar but modern APLs do.
Given an expression ‘x y z’, its parse depends on the types of
x, y & z. Example: y(x,z) if y is a dyadic verb, x & z are values,
x(y(z)) if x & y are monadic verbs, z a value etc.
I assume people have seen this?
https://github.com/ryomuk/TangNanoDCJ11MEM/tree/main
It's capable of running Unix v1 & some limited amount of v6 among other
things. The FPGA in question the Tang Nano 20k is sub 30GBP delivered from
AliExpress.
Kind of neat to combine a real processor with a simple FPGA implementation
of the hardware.
Ken,
Was smalgol also known as BC Algol, as described here:
https://www.softwarepreservation.org/projects/ALGOL/algol60impl/#BC_ALGOL
> On Mar 9, 2025, at 12:06 PM, Ken Thompson <kenbob(a)gmail.com <mailto:kenbob@gmail.com>>
> wrote:
>
> how about smalgol?
>
> it was an algol-like language with just int and float types.
> i dont know its history, but it came out of berkeley near
> when Niklaus Wirth was there. it compiled for the ibm 7094
> in normal batch processing fashion. i converted it to a jit
> into memory in order to skip the loading phase. i used
> it for a lot of my fun-work. (1965-66)
>
> mainframe time, then, was a big factor in the computing process.
> smalgol could compile, load, and run in about 1 cpu-second.
>
> smalgol was all ibm-cards, but it was on my mind through
> the bcpl to b to nb phases. i would use the modern word
> "influencer.”
Paul McJones