
Discovering Dennis Ritchie’s Lost Dissertation - beefhash
https://computerhistory.org/blog/discovering-dennis-ritchies-lost-dissertation/
======
prdonahue
Random Dennis Ritchie story: my high school principal was Dennis' brother,
John, and had a "UNIX Magic" poster
([https://i.imgur.com/aqg21UI.jpg](https://i.imgur.com/aqg21UI.jpg)) hanging
in his office.

I asked him what that was about and he dismissed it with a wave of his hand,
as if annoyed: "oh, just something my brother did".

~~~
faizshah
Someone posted a high res scan of this on reddit if anyone else is interested:
[https://www.reddit.com/r/unixporn/comments/91ntoh/comment/e3...](https://www.reddit.com/r/unixporn/comments/91ntoh/comment/e30bc3p)

Unfortunately no scan of the other two (feuds and views).

Here someone find a more permanent place for it:
[https://send.firefox.com/download/c1783a94da0e8cfa/#sklTlfgc...](https://send.firefox.com/download/c1783a94da0e8cfa/#sklTlfgcnkpYqF7eX1jsag)

~~~
sritchie
I have a copy of Views! Away from home for a few days but I can post pics of
the three posters when I make it home.

~~~
hodsonus
I would love to see this as well :)

------
morelisp
I didn't read the thesis itself yet but I feel like some key point must be
missing from the article. The "loop programs" described are nearly identical
to the "abacus machine" presented in the textbook _Computability and Logic_
(pp. 55-56 3rd ed.) which cites Joachim Lambek who published "How to Program
an Infinite Abacus" in 1961 which seems to also be trivially close in
structure (not merely equivalent).

Lambek in turn cites Melzak's "An Informal Arithmetical Approach to
Computability and Computation" which not identical - it has transfer and
arbitrary compare branch instructions - but that seems a compromise for
pedagogical purposes as deriving both from the "abacus" seems fairly trivial
to me.

~~~
vilhelm_s
"How to Program an Infinite Abacus" defines register machines (a.k.a counter
machines), and shows that they coincide with general recursive functions. "The
complexity of loop programs" defines loop programs, and shows that the
coincide with primitive recursive functions. (A key difference is whether
loops are bounded or not.)

------
atrettel
I am not surprised about the effort it took to find a copy of Ritchie's
dissertation. Dissertations tend to be difficult to find if they are not
already listed on WorldCat or in ProQuest. But the museum used the best method
in this case: talk to people close to people who had a copy at one point. In
my experience when all else fails, this strategy is the primary one that ends
up working. It doesn't work all the time, and I still am looking for a few
"ancient" technical reports despite some sustained effort on my part, but I
have been able to find several documents/reports just by asking the right
people.

Does anybody else have similar experiences? I'm interested if there are other
avenues that somebody could try as well.

~~~
closeparen
>Dissertations tend to be difficult to find if they are not already listed on
WorldCat or in ProQuest

My university library has a dissertation office with a copy of every one of
them back to 1931. You may not be able to find them online, but you certainly
can if you go in person during business hours. Is that unusual?

~~~
globular-toast
Ritchie's dissertation would have been held in such a library if he submitted
it. The article states that he did not.

------
W0lf
So after reading this, is it correct to say that Ritchie basically showed in
his thesis the application of the for loop for recursive prime number
computation and also its application to computational complexity? AFAIK for
loops where already known at the time since they first appeared in ALGOL a
little earlier?

~~~
sradman
TLDR; Gödel’s incompleteness theorem rests on recursive functions which can be
expressed as looping programs, i.e., for() loops. Dennis Ritchie’s PHD thesis,
which was never accepted by Harvard because he refused to pay for a bound copy
required for submission, demonstrated that the complexity of looping programs
is determined by the degree of nesting.

Ritchie did not seem to be driven by status seeking but instead by the urge to
build things.

~~~
smitty1e
...and perhaps a hint of disdain for the 11th hour fee.

------
angry_octet
How absolutely incredible that Harvard failed to obtain free publicity by
finally awarding Ritchie his PhD.

------
Taniwha
So what would happen if we took up a collection, produced a bound copy, and
sent it off to Harvard?

~~~
tankenmate
People, much closer to dmr, in the past have attempted it.[0] The issue it
would seem is that there is no record on file at Harvard that he ever defended
his thesis. ACM does however have a Doctoral Dissertation award in his name,
the irony.

[https://dl.acm.org/doi/pdf/10.1145/2626401.2626421](https://dl.acm.org/doi/pdf/10.1145/2626401.2626421)

~~~
Taniwha
Thanks, looks like people have done well by him

------
linsomniac
When I was a teen, K&R The C Programming Language changed my life. Years later
I shared an elevator with him at Usenix. I always regretted not saying
something to him, but I didn't have the words.

Kids: If you meet your heroes, say something. "Thank you" is good if you don't
have the words.

~~~
mettamage
When approaching strangers, saying something appreciative in a respectful way
is neutral at absolute worst and quite amazing at best.

Case in point:

Andrew Tanenbaum: I said that his work was amazing and thanked him. He
shrugged me off. I think he felt busy or didn’t care. I was happy that he
listened.

Jane McGonigal: retweeted my question while I had 0 followers and followed
about 10 people.

A semi-famous Dutch rapper: he was appreciative.

I have many examples with non-famous people too. The rule applies to both. I
originally learned it as a dating concept (a decade ago) but quickly decided
to compliment anyone that I genuinely wanted to give a compliment.

The reason it can still be quite amazing is simply because strangers don’t
dare to compliment other people that much. I have only seen it once from
another person.

You can test this theory by giving a compliment to someone you think never
receives it but deserves one (my go to: cleaners, especially if it’s really
clean) and to someone who does receive them more often.

My experience: both can still be quite awesome but the cleaners I complimented
really went out of their way to be appreciative (not always, just sometimes).
One even invited me to his home and I discovered he also was a music producer
on the side. We made some music together as I am a hobbyist myself.

I never looked at cleaners the same way again.

~~~
searchableguy
> Andrew Tanenbaum: I said that his work was amazing and thanked him. He
> shrugged me off. I think he felt busy or didn’t care. I was happy that he
> listened.

I have the same reaction to people thanking me out of nowhere especially when
I am deep into my own thoughts and it's awkward to say something after the
shrug. The realisation comes latter. So there is a chance he did appreciate
your thank you but couldn't reply back properly.

~~~
mettamage
Ah, that's also an explanation.

I tend to take the most optimistic interpretation.

~~~
P-NP
> So there is a chance he did appreciate your thank you but couldn't reply
> back properly.

> I tend to take the most optimistic interpretation.

Yes, always take the most optimistic interpretation compatible with the known
facts. Best way to stay happy.

------
karmakaze
"he shows that assessing loop programs by their depth of loops is exactly
equivalent to Grzegorczyk’s hierarchy. The rate of growth of primitive
recursive functions is indeed related to their computational complexity, in
fact, they are identical."

"I would have loved to collaborate with him, because he seemed like a smart,
nice guy who’d be fun to work with, but yeah, you know, he was already doing
other things. He was staying up all night playing Spacewar!”

------
dang
> _My graduate school experience convinced me that I was not smart enough to
> be an expert in the theory of algorithms and also that I liked procedural
> languages better than functional ones._

I wonder if that last bit was as unfashionable a statement when he made it as
it would be now.

~~~
ChrisMarshallNY
> I _liked_ procedural languages better than functional ones.

(Emphasis, mine). I suspect that he understood functional languages quite
well.

He just didn't _like_ them.

I like some aspects of FP, but there are other aspects that I don't like.

My own development style is a ghastly chimera of techniques, technologies and
jargon that coagulate into a disgusting bouillabaisse that makes everyone go
_" tsk, tsk,"_ but that always seems to work quite well, is of extremely high
quality, easy to understand, and results in a great deal of _ship_.

I am... _impure_. All zealots hate me.

~~~
ratww
_> I like some aspects of FP, but there are other aspects that I don't like._

Care to enumerate? Asking because I feel the same: I really enjoy
immutability, first class functions, map/filter/reduce, Option<T> and powerful
types (I dislike: currying, point-free, monads), but at the same time I feel
more at home doing that in imperative-ish languages like C#, JS/TS and Rust
where I can have guard _if_ s and the odd mutation here and there. Wondering
if anyone else is the same.

~~~
brmgb
> I dislike: currying, point-free, monads

Don't worry then, that's fine, you just dislike Haskell.

I personally really like functional programming but can't stand Haskell. The
style favoured by the community is optimised to be the most impenetrable
possible.

You should try Ocaml. The preferred style favours piping to point-free and
uses monads sparingly. Currying is everywhere but copious use of named
arguments tends to make things simpler.

~~~
ratww
Ah, funny thing: I worked with Haskell professionally for a while. I even
enjoy the laziness.

My biggest gripe with it is not so much the language itself but the culture:
it favours bloated and pompous solutions much in the same way Java/Spring
does. Monad Lifting, Lenses, Aspects and FactoryFactories occupy the same
space in my head.

I guess I just prefer both the simple side of functional and the simple side
of imperative.

I definitely have to give OCaml a try.

~~~
shpongled
OCaml/Standard ML are both pretty nice because you can still use mutation, and
the languages are significantly simpler than Haskell.

My only gripe with them is that there seems to be a culture of having zero
type annotations (due to HM), which can make reading other people's code
difficult.

~~~
brmgb
> the languages are significantly simpler than Haskell

I don't think that's quite true.

Ocaml has plenty of advanced features (the module system, GADT, structural
typing in the object system) but the community relationship with them is very
different than how the Haskell community uses the language. For the most part,
the Ocaml community tends to dislike gratuitous complexity and be non dogmatic
(I fondly remember a lens library announcement on which the top comment could
be boiled down to "just use mutations").

> My only gripe with them is that there seems to be a culture of having zero
> type annotations (due to HM), which can make reading other people's code
> difficult.

Interfaces tend to be annotated (mli files) but usually people rely on the
tooling to know types inside files. Merlin is a blessing. It is a very fast
type-checker which keeps working on incorrect files.

~~~
shpongled
Ah, I have more experience with SML than OCaml, I just kinda (ignorantly)
lumped them together.

I should put some more time in with OCaml, Merlin sounds nice.

------
globular-toast
> He already had a coveted job as a researcher at Bell Labs, and “never really
> loved taking care of the details of living.”

I love reading things like this. It reminds me that I'm not alone (although,
yes, I realise Ritchie is dead). I find it very hard to participate in these
kind of trivialities even though many other people seem to value them so much
that it mean the difference between a PhD and no PhD. But I'll often kick
myself later for not bothering. I wonder if Ritchie did.

