Skip to main content

I’m so confused!

Topics/tags: Miscellaneous, programming languages, short

Today Youngest Son and I visited the Computer History Museum. The last time we visited was about seven or eight years ago. At that time, most of the museum was closed for renovations. This time, most of the museum was open. Lots of things were great, but I particularly enjoyed seeing the analog computers and the IBM card sorters. Youngest enjoyed seeing the Curta calculators. There was way too much to see. We spent over four hours there and didn’t even finish the main exhibits [1].

About one-third of the way through the exhibit, they have a diagram of about 150 major programming languages [2,3] and the influence relationships between them. I enjoyed tracing some of the LISP descendants.

But then I noticed some strange things. There’s an arrow from csh to Miranda. It’s hard for me to envision how a C-like [4] shell language could influence a lazy functional language. There’s also an arrow from csh to KRC [5] and from KRC to Miranda. Let’s see …

Kent Recursive Calculator was one of the earliest higher-order, lazy, purely functional programming systems. [6]

I was starting to wonder if someone was just having fun with the diagram or whether I’d missed out on the monads in csh [7]. Then Youngest Son pointed out that there’s also an influence arrow from TeX to Lua. Let’s see … typesetting language and embedded application language. Yeah, there’s a clear connection there. More seriously though, I wonder if someone confused Lua with LuaTeX.

So, what’s going on here?

  • Is the Computer History Museum checking to see if anyone notices?
  • Did someone make a mistake in drawing the connections?
  • Did someone put in some mistaken connections to see if people would draw incorrect connections?
  • Are there actually connections between these languages?
  • Something else?

I wish I knew. Maybe I’ll ask on the Computer History mailing list that I’m on. Maybe I’ll ask on the SIGCSE list. Or maybe I’ll just leave things well enough alone.

But for now, well, I’m just confused.

Postscript: If you should happen to visit the Computer History Museum, spend a little time watching the looking toward the future videos. There’s one in which the President of Electronic Arts says something like Any technology you learn now will be obsolete in five years. So the best thing to do is to get a broad Liberal Arts education. I wish I’d been able to record that.

Postscript: In researching this piece [8], I discovered that Turner’s early paper on KRC is called Recursion Equations as a Programming Language. That reminded me of my advisor’s book, Equational Logic as a Programming Language. I wonder if X as a Programming Language was a common topic for functional folks in the early 1980’s.

[1] I think we would have gone back if we could. Unfortunately, they aren’t open again until after we leave.

[2] And some not-so-major programming languages.

[3] And maybe some things that aren’t strictly programming languages.

[4] I was surprised to see that although sh was listed as an influence on csh, C wasn’t. I thought the whole point of csh was to add a C perspective to shell scripting.

[5] The museum lists it as krc, all lowercase. But I see it as KRC when I look online.


[7] Miranda’s popular descendent is Haskell. Haskell handles pure I/O with strange mathematical entities called monads.

[8] Air quotes are intentional.

Version 1.0 of 2018-06-03.