Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Discovering Dennis Ritchie’s Lost Dissertation (computerhistory.org)
342 points by beefhash on June 20, 2020 | hide | past | favorite | 133 comments


Random Dennis Ritchie story: my high school principal was Dennis' brother, John, and had a "UNIX Magic" poster (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".


Wow, I was that high school principal, John Ritchie. I was always proud of that poster, and very proud of brother Dennis. Maybe I was in a bad mood that day, but was never annoyed by Dennis getting any attention--though both UNIX and C were beyond my powers of comprehension. Sorry about the misunderstanding.


Wow, good to hear from you! Hope post-LSRHS life has treated you well.

To be fair, I was there complaining about something as teenagers are wont to do so I probably put you in a bad mood :)


Welcome to HN!


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...

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...


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.


I would love to see this as well :)


If you get a chance, please post it to the TUHS/COFF mailing list, it would be greatly appreciated.

If you can't, do you mind if I crosspost it there?


Ooh, I'd love to see that - if I'm not mistaken, the third one is Feuds (or Wars?).


Hey, I would appreciate that. Thanks.


Seeing how the image link has expired, here's a decent one: https://i.imgur.com/qMN1are.jpg


Here's the image from the Google Cloud link:https://mega.nz/file/0ZVzmACS#Ve-io92zJoXX1DMHO_-2hIr125OQuj...

It's high quality, but it seems satured if compared to other photos. Maybe someone with the skills can fix that?


It says it's in the owner's trash now for some reason!? I want this so bad.


Alas, "File is in owner's trash".


High res version is inaccessible there.


The jars the wizard has at hand, and the scroll (“shell script”) are familiar looking things like “null”, “tar”, “uucp”, “diff”, “awk”, “C”,... but “oregano”? Is that a joke or a codename or some deprecated tool?


The Wizard's hat is labeled "su" and the huge shell that everything is mixing in is brilliant. Also note the pipes on the ceiling. This is amazing.

Oregano is still around!

https://en.wikipedia.org/wiki/Oregano_%28software%29


That ‘Oregano’ probably belongs to the wrong decade, if not the wrong century. A thread on comp.unix.wizards suggests that it is a reference to a Berkeley developer caught crossing the US–Canada border with a bag of oregano — that was actually oregano.


"Kaffee : It was oregano, Dave. It was ten dollars' worth of oregano.

Lieutenant Dave Spradling : Yeah, but your client thought it was marijuana.

Kaffee : My client's a moron. That's not against the law.

Lieutenant Dave Spradling : Kaffee, I have people to answer to, just like you do. I'm going to charge him.

Kaffee : With what? Possession of a condiment?"


Oops. Yeah you're right. Wrong century millennium, no less!

They do mention the circuit simulator, SPICE in that same thread. But still, not this oregano for sure.

https://groups.google.com/d/msg/comp.unix.wizards/kFdPoJBpcS...


The image also has a cat.


Also a fork, a broken pipe, a boot and I guess that's a log on the right.


And the “B” container is cracked, indicating they’ve moved on from B to C, and there’s a spool of thread (process threads?) - lots to enjoy, but oregano is still a mystery.


Possibly a reference to /{usr,var}/spool.


if it is a reference, this is probably more likely than process threads, since 'threads' as a native construct were a mid/late 90s addition to unix systems


Electrical circuit simulation [1] ... didn't know about this myself either, but noticed its still available in the Ubuntu repo and installed it.

EDIT: just noticed the comment by user kps in the sibling tree - might not be the software since it is too recent to be on the poster.

[1] https://en.wikipedia.org/wiki/Oregano_(software)


above the magician, one can see a lot of pipes.


John Ritchie was my high school English teacher! After I chose something about computers as a topic for some essay, he asked me if I knew what Unix was. I did not.


Looking at his magical artifacts floating in the air, he appears to be incanting some sort of USB driver.

https://upload.wikimedia.org/wikipedia/commons/6/67/USB_icon...


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.


"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.)


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.


>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?


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


No, that is fairy common, as far as I know. The only issue with that is that some universities will not lend out dissertations via interlibrary loan. In those cases, the only way to read a dissertation is to visit the university. This is a big problem for foreign dissertations, since it makes it extremely difficult to access the research.


Out of curiosity: what 'ancient' technical reports are you looking for (plus who knows someone here might know something)?


The only ancient technical report that I am looking for currently is Mark Morkovin's 1960 AGARD conference paper titled "The structure of supersonic turbulent boundary layers". This was presented at the April 1960 Boundary Layer Research Meeting of the NATO AGARD Wind Tunnel and Model Testing Panel in London.

I have tried contacting many different people about this without any success. Morkovin died in 2015 around the time I learned about the paper. His family has never responded to my correspondence and I do not believe they have a copy. The one professor who did have a copy of it threw out his collection of papers a few years before I asked him. Morkovin was a professor at the Illinois Institute of Technology and they do not have it in their archives. Morkovin likely wrote the paper while working for the Martin Company (now merged into Lockheed Martin). It is likely that the paper was also filed as a Martin Company research report, but I later learned that Lockheed Martin has no copies of the Martin Company research report series since the Martin Company apparently destroyed the paper copies intentionally before the merger (I have no detail past that). NATO published other papers from this conference but not this one. They may have a copy but they have never replied to my correspondence.

I do know of a professor looking for a copy of this paper, but he has also not found it either. It would be nice to find a copy, but it's not a high priority for me.


Fascinating and sad. I'd like to tell a similar story with a happier ending. I was looking for the first volume of JH Schroeter's observations of Mercury (published in 1788!) when I was writing my own PhD, and found it thanks to contacting a group of fans who were working on restoring and collecting his heritage in the Lilienthal observatory. All of my previous efforts had failed, but I learned my lesson here: if you want something hard to get, look for people who might be obsessed with the subject.


Maybe check with https://twitter.com/ColdWarScience, she's a historian and editor, specializing in the Cold War era of course


Some people like myself and gwern have lists of papers that we're looking for:

http://trettel.org/papers-to-find.html

https://www.gwern.net/Fulltext


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?


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.


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


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


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


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


Thanks, looks like people have done well by him


Might be difficult. I couldn't turn up any policy in brief surfing, but the only posthumous degrees I found were non-doctoral, and https://psychology.fas.harvard.edu/people/mary-whiton-calkin... doesn't bode well.

(I'm probably just cynical, but if we took up a large enough collection, I'd bet they'd be willing to grant a degree in lieu of naming a building.)


There's nothing preventing award of degrees after death, if the thesis has been defended, other than administrivia. It's not the Nobel prize.


I like this idea. So I took a look at their policies and it seems the official Harvard thesis printer (https://www.hsph.harvard.edu/student-handbook/dissertation-g...) is Acme, which has an individual-oriented website: https://www.thesisondemand.com/ Using their calculator, a single 181pg\* BW printed thesis is ~$45. That seems cheap enough for a joke for me! But it looks like one will need to add some additional metadata to follow the dissertation guidelines...

If anyone wants to discuss this further, email me.

\* The first copy of the thesis linked in OP is 179 pages but it's very dirty and would need to be printed in color; the second copy, https://archive.computerhistory.org/resources/access/text/20... , is in much better shape and can be printed in BW.


After reading tankenmate's link, it seems this has already been tried & would be pointless; the library would just reject it. Oh well!


Policy or not, it would perhaps be nice to deposit a copy anyway. Put the ball in their court so to speak, even if Harvard does nothing further.


I'll never understand why people care so much about posthumous recognition. The man is dead and anything you do now is only going to make you feel better. In any case, Ritchie was regarded as one of the most accomplished men in computing during his life. That's far greater recognition than your average PhD.


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.


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.


> I never looked at cleaners the same way again.

Cleaners are people and are as complex, multi-faceted and interesting as anyone. No-one ignored me when I was a cleaner (I'm not a person to let them!), but I knew a girl who cleaned at a uni and she felt the students ignored her. She was a great person and they would have loved to have known her, she would have loved them back, it could have been great, but they probably didn't see her and I think she felt they were above her, and didn't try (well, smart students at a uni, she was a menial worker etc).

So the gap was never bridged - and had it been bridged, simply being acknowledged and chatted to by them, and appreciated as a person, would have helped her through a truly terrible time in her life. As well as making her job much nicer in the not-awful parts of her life.

People often don't see cleaners, cleaners/janitors/maintenance etc. sometimes they feel overawed or outclassed or something and scared off. Learn to see them, learn to say hello, let them know they are appreciated (as people, not as cleaners etc). It makes a huge difference to someone's work of scrubbing the floors, it really does. Like I said, it was my job once.


> 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.


Ah, that's also an explanation.

I tend to take the most optimistic interpretation.


> 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.


> 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'd signed up to attend his 'afscheid' lecture, thinking I might try go get my copy of 'Computer Networks' signed. Did not get around to going, probably for the better ;)

It's hard to overcome the 'say nothing' reflex. Years ago, g/f and I were visiting the Carl-Henning Pedersen museum in the town of Herning (DK), somehow we were the only visitors on that afternoon. We were blown away by the amazing wall decorations and his art. On the way out we ran into someone from the museum's staff and the Maestro himself (this was a few years before he passed away). What did we do? We just smiled and walked past them. I dunno....

And +1 the cleaners, for sure.


I worked as a cleaner in a tax office. After a few months I ended up spending time helping people with their Excel skills, as someone had asked if I was studying etc & I told them Computer Science :)

I have found that some people always view you as stupid when you’re doing certain jobs. When I was serving pints in a pub, people just assumed it was my career & that I was thick.

I’ve found it very important to not pre-judge.


The thing with admiration and fame is it isn't as positive as we like to think.

No one ever did anything worth mentioning for others to admire them, they did it because they had to for whatever reasons.

Treating them the same as you would any other person is likely to have a more positive effect.

I've had some really interesting interactions with famous people I didn't even recognize until later.


I guess it's also dependent on culture. for instance in my mediterranean culture people are much more expressive and sometimes tend to be over-appreciative with strangers. which I feel is sometimes disconforting because harassing if you're a celebrity


People who are bad at receiving compliments are often bad at giving them too, and vice versa.


A friend of mine once found herself seated next to Paulo Coelho (famous author of e.g. The Alchemist) on a flight. She was a huge fan, but out of respect for his privacy did not initiate any conversation.

Turns out he’s been flying to be part of a major talk show. The next night she watches the host ask the author about being famous. The author responds by saying that best part is that people approach him, and that he therefor gets to talk to so many different people, hear their stories and learn about their experiences.

So yeah. Say “thank you”.


But, as your friend thought, being respectful is also important. By all means say thank you, but don't expect much response beyond an acknowledgement. Famous people get TIRED of strangers talking to them, as much as they like the random encounters.


I suspect that varies. Actors, e.g., are far more likely to be recognized. I think the only author I’m a fan of who I’d recognize is Asimov, and obviously I’m unlikely to meet him on the street.


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

I'm a huge gearhead. I live in the US, but a few years ago I was in Rome for work. I was out to a late lunch with my boss and was explaining that one of my favorite boutique car manufacturers, Pagani, is just south of Napoli and that I wanted to take a weekend trip to visit their facilities. No later than 10 minutes did Mr. Horacio Pagani himself walks into the restaurant and I had full on fanboy panic attack. It was just the four of us in a restaurant; my boss and I, Horacio and his friend. I froze up and couldn't finish my meal. I tried to explain to my boss, but he didn't seem to understand. As we were leaving, Horacio got up too, which made me incredibly nervous. He looked at me and in my terrible Spanish (he was raised in Argentina, which I knew because as I mentioned I was a fanboy) I muttered "mucho gusto, soy un fan de tus autos". He smiled and nodded. I've never felt like such an idiot but so happy at the same time.

Horacio Pagaini was a chief engineer at Lamborghini and basically pioneered carbon fiber manufacturing. He tried to convince Lamborghini to use carbon fiber parts, but their response was that if Ferrari wasn't using them, neither would they. Obviously that didn't last long.... He left Lamborghini and started his own company to manufacture carbon fiber parts and eventually created some of the most amazing "hypercars" that money can buy (see Pagani Huayra and Zonda).

https://en.wikipedia.org/wiki/Horacio_Pagani_(auto_executive...


The only Pagani factory I can find is on the opposite side of the country, near Modena, you sure there's one south of Naples?


Nicest thing is to meet and interact amazing people and not know who they are, makes for a more natural exchange IMO


Back in 2007 I was the chair of the Washington, DC chapter of the ACM. The chapter had been dormant for a while so I thought hosting a lecture by a big name in computing would be a good kickstart. I emailed Brian Kernighan asking if he'd be available and willing to give a talk on Unix. He said he'd be absolutely delighted.

He was a wonderful speaker and just a great guy to talk to. He patiently signed copies of K&R C that folks had brought, told interesting anecdotes, and was a kind and pleasant person to everyone who spoke with him. Very approachable.

One thing I remember is him telling me that he only gets stage nerves if he knows he's being filmed. Massive crowd? No problem. Photographs? Go for it. Video cameras? If you do, you have my permission but don't tell me, and make sure I don't notice them.

After that I kept reaching out to other Big Names, and many of them said yes. I figured there was no harm in asking, all they could do is say no. And not a single person I asked said no because they didn't want to, it was always because the scheduling or travel just wouldn't line up properly.


I got to meet Larry Wall at the first Perl Conference in San Jose. I think Tom introduced us. I was dumbstruck: “Wow, I don’t know what to say; thank you.”

He smiled awkwardly: “You’re welcome, I guess.” Textbook Larry.

Randal and I were on the same flight out of ATL and met up for a bite in an airport restaurant.

Not just for the celebrities in our profession, let the people in your everyday world know how much they mean to you, how they’ve helped you out, how they’ve made meaningful differences in your life, that you care about them, and that you love them. Life is too short not to.


You are right :-) Shared the elevator with Dana Scott once at a conference in Seattle. Even exited it on the same floor, and we actually had hotel rooms next to each other. But I managed to say nothing to him :-D


"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!”


> 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.


Is it an unfashionable statement now?

The vast majority of the world's programs are written in procedural languages, and that situation does not look likely to change for the foreseeable future.


(I should know better than to post ambiguous one-liners late at night.)

It's certainly not an uncommon preference, but it's an unfashionable statement, at least among the intellectual circles that programming language designers with PhDs (or almost-PhDs!) tend to belong to. That's why I was interested to read it there. I've long had a joke, when asked if I prefer FP or OO, to say "I prefer imperative programming". It's funny because of that fashion. What I was wondering was whether said fashion was in place by the late 90s when dmr apparently wrote this, in which case maybe there was a trace of a joke there as well.

Edit: having read more of the OP, it seems to me deliciously apropos that his dissertation involved replacing recursive logic with loops.


But fashion != popularity. Indeed, the most popular thing in a field is almost definitionally unfashionable.


Functional programming languages have alway been somewhat dismissed by most. Even though every once in a while functional programming becomes somewhat of a hot topic, only few programmers actually take it up as their main or favourite programming style. I'd say Ritchie's attitude there is and was kind of mainstream. I suppose just as C (or C style languages) have been mainstream for the past 40 years.


Education is an issue. Very few programmers actually know what functional programming even is or how it can help.

Also 40 years ago we had what? LISP as is commonly used is not an FP language. ML was nice but there wasn't much FP done in ML either.

The advancements to make FP practical, like good garbage collectors, laziness, monads, good persistent data structures, are newer.


Many universities teach FP to their undergraduates, some of them even use Haskell as their first programming language.

I have published at ICFP and in the JFP, and understand garbage collectors, laziness, monads, good persistent data structures very well. Yet, I prefer CBV to lazy evaluation, I prefer full unrestricted support for imperative programming, I don't think Haskell approach to effects by monads is ideal (I prefer Scala's giving you the option to tame effects by monads). There is a reason why, despite near half a century since Backus' "Can programming be liberated from the von Neumann style?", CUDA dominates HPC, C++/C (and Rust) dominate mainstream infrastructure programming, Go took the cloud world by storm, ML is dominated by Python, front-end is dominated by Javascript/Typescript, hardware design is dominated by Verilog, and business computing (for lack of a better term) is dominated by Java/C#. I really don't think the reason is that everybody is too uneducated to realise the benefits of Haskell.


I don't know, as far as I know functional programming is a standard course in computer science university curriculum. I've only been part of small dev teams so far, but of those teams always more than half were university educated, and none of them continued functional programming after university. Of all my university friends only one did Haskell outside of university that I know of (maybe there's some secret Scala/F# lovers at Java/.net firms). I've been part of the Haskell community, so it's not like I don't know Haskell programmers, but I'm saying I know a lot of formally educated programmers, and only very few of them took a liking to functional programming to an extent they'd do it professionally or even as a hobby.


I think there are quite a few closet "functional" programmers, who may not even consider themselves as such, doing their best to write mostly side-effect-free, declarative code within the confines of an OO or multi-paradigm language (in .NET land, functional-ish features like LINQ and pattern-matching bleeding into C# makes this easier). I also met more than one person trying to introduce F#/Scala in a pretty small .NET shop I used to work for.


Except every non programmer with a business degree seem to love functional programming: Microsoft Excel


Excel is at its core a declarative programming language. Entering formulas in cells that reference other cells declares the relationship of the calculated cells to its referents.

It is not an imperative language: the user does not tell the computer which order in which to carry out computations. It is not procedural: there is no notion writing of procedures within its cells. It is not functional: while there are built-in functions users cannot write their own in the same way.


> while there are built-in functions users cannot write their own in the same way.

It's been a while since I've used Excel, but I thought you could write custom methods using VBA that could be called in a given cell.


You can indeed, but VBA is of course imperative, and VBA is used in part because it is difficult to read/write and considered a poor practice to have any significant chaining of functions in the spreadsheet. The bigger reason it is used, of course, is because Excel's declarative environment does not accommodate all behaviors and users prefer to implement them imperatively. So this sort of reinforces Excel as not being a functional environment.


Being able to write functions doesn’t make a language functional. The hallmark of functional programming is closures as first-class objects, passed as arguments or returned from other functions.

The nearest Excel equivalent would be constructing a formula string for later evaluation, which is far from the same thing. If you wanted to perform lambda calculus in Excel you’d end up implementing your own functional programming language in VBA. Have fun with that :-)


I’ve heard this before, but long felt it is more like logic programming: you declare facts and relationships, then an evaluation engine finds results.

Not saying you can’t, say, pass around closures in Excel but it’s far from natural. Whilst spreadsheets always remind me, more than anything, of the Prolog I took in college, and not the Lisp or ML.


Functional programming involves using functions as a first-class objects. I never saw that kind of programming in Excel.


Umm, doesn't Excel use Visual Basic (VBA) under the hood?


No, AFAIK, VBA is just a scripting layer exposed by Excel, not what Excel uses itself.


What do you mean by "using itself"? When you write a function in an Excel cell, IIANM it's a VBA function. Excel is implemented in C++ IIRC.


> When you write a function in an Excel cell, IIANM it's a VBA function

No, its uses the Excel formula language, which isn't the same as VBA (nor is it a subset of VBA; Excel formula language expressions generally aren't valid VBA.)


Not at all, Excel can be scripted in multiple ways, VBA is just one among many.


Hated functional programming in university, now wish there was wider industry adoption. Deep diving into FP made me think more about the code, rather than just writing it in an OO-Language.


Having used functional languages extensively in a job setting and now using C++ more and more, I find that there's nothing wrong in just writing procedural code if that's easier. Easier both to write and easier to read later. I've seen people take 20 minutes to write a single line of functional Javascript or Kotlin, when the underlying work is obvious and just writing the loop directly would be faster to create and much easier to understand later by you or anyone else who has to read the code.

The move to functional-style code the last many years seems a bit silly to me. Even C++ has been moving in a well-known trend of "no raw loops" in favor of the algorithms header in STL. I don't find there is a significant reason to abandon easy code most of the time. If you actually need to use the functional paradigm to swap out behavior in a polymorphic fashion using functions instead of inheritance, for example, then great.


I tend to go with whatever makes the code the most readable; best expresses the intent. If I'm iterating over a list, mapping each element to a lookup somewhere, and then removing those that weren't found... that's a good choice for functional. If I'm iterating over a list, if it matches one thing do something, otherwise filter it some more and do something else... I tend to find procedural is easier to read. Maybe it's a transform vs act-on type of thing; I'm not sure.


In hindsight you can say he suffered from imposter syndrome. People often have trouble to accept that an easy working solution to a difficult problem is an act of genius, instead they feel that they took a shortcut and are non deserving.


I've seen so many junior developers and interns thinking like this.

Sometimes they're are able to find a good simple solution to a hard problem but then feel bad for not using complex patterns, some popular external dependency, or for the lack of ability of giving it a complicated name.


The pro argument: many of the people I've exchanged email with[1] from that period have indicated that functional had more geek cred even then.

The con argument: we have enough memory and cpu now that functional languages are more practical than they ever were, which may help them be more prêt-à-porter fashion than the haute couture of a geekish peacock tail or springbok leap.

[1] I'm usually asking questions about long-dead endian-style controversies (cue the compromise of arrays starting at 0,5), and it's been nice to hear many of the people involved recommending the work of their opposites. Folk history seems to ascribe more dogmatic attitudes to the people who lived through technical controversies than they actually have.

Another lesson learned: when I try to tease out chains of influences, a not uncommon response is "I wish I'd been that clever, really it was just hacked together."


Your second para has contributed few things to my English language knowledge.


Sorry, I'll reword:

Thanks to Moore's Law, functional programming is no longer just for the mainframe, but can now be used for normal programs on standard platforms. If more people choose functional now just because they like the style[1], then it could be that procedural would be becoming less fashionable[2] over time.

[1] instead of before, when "wearing the hair shirt" of functional programming could be seen as declaring oneself a strong enough hacker that one could hack despite all the practical drawbacks.

(compare "Honest Costly Signal" in the context of https://news.ycombinator.com/item?id=23570975 )

[2] in the mass fashion vs class fashion sense.

(compare https://news.ycombinator.com/item?id=23560291 . I doubt it's controversial to say functional has always been on the Joycean side.)


Since it was on his Bell Labs website, surely this phrasing of the feeling came no earlier than the late 80s, rather than when he left academia in '68? ("Functional programming" as a contrasting term seems to have barely existed before Backus's Turing Award lecture in '77.)

For the 80s and much of the 90s Ritchie's view seems obviously dominant, in no small part due to his own work in making extremely "usable" tools for procedural programming.


Reading CACM on 50-year delay gives me an interesting diff against current state of the art. Functional programming was a thing (albeit perhaps before "functional programming" was a name) in the sixties.

CPL, IIRC, actually had an outer-functional semantics, and one would escape to "value of" blocks to do procedural stuff (which was necessary in inner code due to the pitifully small machines of the day).

Writing bootstrap compilers in GPM must've been very similar to working in a lazy functional language.

See also https://en.wikipedia.org/wiki/PAL_(programming_language)


At least in my mind, Dennis was much more about pragmatism and results than about fashion.


Is it possible that "functional programming" meant as in Kleene's Introduction to Metamathematics, where the work has a mathematical flavor with recursive functions, in contrast with FORTRAN or ALGOL or whatever language DR was using on physical machines at the time?


That's a good point. I wonder if functional programming, at least partially, referred to the array programming of APL.


The best indicator of prevailing fashion is that the most popular languages are imperative or multi-paradigm, and some of them are descendants (at least in some aspects) of one made by Ritchie.


> 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.


> 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 ifs and the odd mutation here and there. Wondering if anyone else is the same.


> 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.


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.


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.


> 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.


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.


You’d probably like Erlang. Functional but pragmatic, an imperative core with immutability, native concurrency...it was my introduction to FP and I hope to get another shot at working with it professionally.


Yeah! Actually Joe Armstrong's Programming Erlang was my true introduction to FP, got the book when it was released. Lovely language, a shame I never found an opportunity to use it after that.


I do that a lot with Reason/OCaml. It is surprising how powerful imperative, mutable programming is when most of the code you write is functional, and then you want do something a little difficult in the paradigm, and you make a `ref`, write a while loop, mutate an array, or store stuff in a global variable, and it is done! Mutation in OCaml is like a fine scalpel - extremely powerful, occasionally used, and just right on the table whenever you need it.


Have you tried F#? Its brevity makes quite nice but it’s not functionally pure, you can use OOP where you are more comfortable


I like first-class functions. I actually like currying.

But I also like state, polymorphism and identity.


Are you sure you don't mean partial application?


I'm not exactly sure. Partial application is not a term I know. I am not an FP guru.

My familiarity with FP tends to be around "Hey! I like this Swift feature! Where did it come from?"

It's the part where we clump together functions to make a single, rather powerful function that is, in essence, a rabbithole.


C is clearly influenced by functional languages.

Though C programming is usually about effects, effects occur in expressions which usually return a value except in cases when their type is "void" (which was a later introduction into C, possibly from C++).

C even has an if/then conditional that yields a value, the ternary operator x ? y : z, which is a more strongly typed version of (if x y z).


Ritchie: I liked procedural languages better than functional ones.

ChrisMarshallNY: I suspect that he understood functional languages quite well. He just didn't like them.

Your statement doesn't follow from Ritchie's words that you quoted. Preference of A over B does not have the logical consequence that B is disliked. It doesn't even imply that A is intensely liked.


Fair point.


I've been researching your point since I read your comment, but I haven't been able to learn if he actually disliked functional languages.

Personally, I prefer Haskell or some functional Python at times, since that solves certain problems well. But, we have a lot more computing resources than existed in the past. I guess it could be possible that he enjoyed the functional paradigm, but pragmatically created a procedural language, given the hardware constraints.


I thought he was talking about Mathematics.

It's a functional language.

Always has been.


From that standpoint, C is a functional language. Functions are first class citizens in C. I doubt that is what he was discussing.


The link on your about page to your LinkedIn profile is broken


Thanks so much for that! It's been fixed.


> 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.


[flagged]


Doesn't sound like he was asking for anyone's sympathy.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: