Here's the draft of an abstract for a colloquium talk I'm giving at Indiana next month. Suggestions for what I should *call* this talk? I was thinking "It's all just interpreters!" or "Interpreters everywhere!", and then @ganshen suggested "Interpreters: the ultimate abstraction" -- am I audacious enough to call it that?

(Feedback welcome on other aspects of it, too!)

I decided to go with "Interpreters everywhere!", but I'm definitely going to make an "Oops! All Interpreters" slide, thanks @adrian
@lindsey I think I used this picture as a slide a long time ago...
@lindsey but of course what I really want is an alignment chart of what is an interpreter
@ccshan @lindsey I recently found the one for compilers again, now I desperately want one for interpreters
@cfbolz @ccshan I'll put it in my talk if one of you makes it
@lindsey @ccshan I'm not entirely happy with this yet, but it's what I came up with waiting for my kid to fall asleep...
@cfbolz @ccshan I think it's a great start, but there's an uncomfortable dependence on knowing what a "program" is
@lindsey @cfbolz @ccshan Lindsey I don't think this one has like a super wide audience regardless :)

@regehr @lindsey @ccshan actually I was seriously considering doing a "program alignment chart" first

anyway, here's a version with pictures

@cfbolz @regehr @lindsey @ccshan which square do we put "the person repeating everything I'm saying in ASL is an interpreter" in
@InfiniteNutshell @regehr @lindsey @ccshan would have been a good alternative to the shredder, maybe. But then, isn't an ASL interpreter more like a compiler?
@cfbolz @regehr @lindsey @ccshan for that matter, which square does "a compiler is an interpreter" belong in
@InfiniteNutshell @cfbolz @regehr @ccshan oh no. it would go in the top left

@lindsey @InfiniteNutshell @regehr @ccshan of course it would 😅😅😅😅

(I'm a strong believer in 'a compiler is an interpreter'. Obviously a jit has interpreter like qualities. Then there's abstract interpretation in many compilers. Partial evaluation is also interpretation that compiles at the same time. Additionally you can also write a lot of compiler passes as slightly weird interpreters that go along the program, (abstractly) execute bits of it and produce another program as a side effect)

@cfbolz @InfiniteNutshell @regehr @ccshan Okay. So an interpreter is anything that turns syntax into semantics, and a compiler is just a special case of that where the semantics is also syntax?
@lindsey @cfbolz @InfiniteNutshell @ccshan I have a hard time seeing a clean answer in this direction. I like Laurie's post about this. in other words, an interpreter is a thing that takes both a program and a specific input, and tells you what the programs does to that input. a compiler is anything else.
@lindsey @cfbolz @InfiniteNutshell @ccshan or maybe the compiler is the thing that reliably halts, for arbitrary program inputs
@regehr @lindsey @cfbolz @InfiniteNutshell @ccshan Also, a compiler is 2nd Futamura projection. :)
@regehr @lindsey @cfbolz @InfiniteNutshell @ccshan Maybe also in Laurie's post (has been quite a while since I read it and it's late in my time zone) but the temporal aspect is also highly relevant (to me, at least) and important for classification: an interpreter is present during program execution (interspersed or intermingled), while a compiler (usually) is not: it produces a target representation prior to, and terminates before, executing the generated code.
@cfbolz a choir is much more of an interpreter than a shredder.

@cfbolz I'm still stuck on the shredder: nothing it does has to do with the structure or interpretation of the text on its input page. not an interpreter.

If you want something machine-shaped in that square maybe "a linotype machine is a computer".

@stylus sorry 😅. It's not that deep, the shredder is an attempt to make this meme more funny (and for some people it seems to actually have worked: https://triangletoot.party/@shovemedia/115350603109669076 ). Generally, these purist/neutral/rebel memes are fun for me if some of the squares are just super out there, like 'Saturn is a tea' on the teal alignment chart.
Triangle Toot Party!
@cfbolz @regehr @lindsey @ccshan A choir is 100% an interpreter. Dunno about all these other things though.
@byorgey @cfbolz @regehr @ccshan I'll ask our interpreter director what she thinks after the next interpreter rehearsal
@lindsey @byorgey @regehr @ccshan fun fact: the interpreter picture is actually my old interpreter

@cfbolz @lindsey More seriously though, I think of a generalized interpreter as anything that turns syntax into semantics. According to that definition, a choir really does fit the bill to a T: it turns syntax (musical notation) into semantics (sound).

To me, shredder is the odd one out: there is no plausible sense in which a shredder turns text into semantics. Inspired by the example of a choir, I might suggest "actor" for that cell: an actor turns syntax (a textual script) into semantics (a performance). (Shredder is funnier though...)

I am also not so sure about Excel: yes, it operates on text, but I don't think it takes text and turns it into semantics. Maybe "text adventure game"?

@cfbolz @lindsey "Text adventure game" wouldn't fit in the box, but you could write "Zork is an interpreter"...

@byorgey @cfbolz @lindsey IMHO that's too confusing, since Zork is implemented as an interpreter for an abstract machine...

(It was, of course, written by Lispers)

@pozorvlak @cfbolz @lindsey hah, didn't know that!
@byorgey oh yeah, it was a frankly incredible hack. The Z-machine supported virtual memory, allowing them to run games that had been designed for mainframes on tiny 8-bit micros, and also allowed them to offer all their games across the incredibly fragmented 1980s home computer market simply by porting the interpreter. See http://web.archive.org/web/20130113052554/http://www.csd.uwo.ca/Infocom/Articles/small.html for more details. And the modern amateur IF scene was started by developers reverse-engineering the bytecode format and writing open-source interpreters. @cfbolz @lindsey
How to Fit a Large Program Into a Small Machine

@byorgey @cfbolz @lindsey LucasArts and Sierra both did something similar for point-and-click adventures, with ScuMM and SCI respectively.

@byorgey @lindsey we are clearly strongly overanalyzing this, but why couldn't confetti be semantics?

I didn't want to use Zork, too close to doom. Anyway, Excel is Turing complete, so clearly it's a fine interpreter (nowadays the formula language is very powerful: https://eusprig.org/wp-content/uploads/2309.00115.pdf but you can also simulate a turing machine directly by using rows as the tape, and just have many rows for the time axis. so all that is missing is an infinite grid).

@byorgey @lindsey
to do more overanalysis: if we apply Mario's criterium ( https://tratt.net/laurie/blog/2023/compiled_and_interpreted_languages_two_ways_of_saying_tomato.html#comment-ZdjDTuX1ipQQ ) then shredder, doom, tv, choir all don't fit the 'complexity' argument. their runtime is not unbounded, if their input ends they will also stop. so they are more compiler-like
Laurence Tratt: Compiled and Interpreted Languages: Two Ways of Saying Tomato

@cfbolz @lindsey Hmm, I don't buy that criterium though. 🙂 The reason a choir takes time linear in its input is not because it is a compiler, but because musical notation is not Turing complete.
@byorgey musical notation already has loops, so we just need to add if-statements... @cfbolz @lindsey

@cfbolz @lindsey Confetti could be semantics, but it's not the semantics *of the text on the paper being shredded*. It's the semantics of an extremely simple "program" embedded into the hardware of the shredder.

Yes, Excel's formula language is Turing complete, but if you're thinking of it that way, then it should go in the top left.

@byorgey @cfbolz @lindsey how about a photo of an actor playing Shredder in one of the TMNT movies?

@cfbolz @lindsey @byorgey

I think of a generalized interpreter as anything that turn syntax into semantics.+1. This is extremely close to the working definition of "interpreter" a lecturer of mine uses every year, but just when it comes to operational semantics specifically. (Denotational semantics would be close to her definition of a compiler, for example.) Still, I do believe an actor interprets, rather than compiling, so the analogy sounds very convincing to me

@cfbolz @regehr @lindsey @ccshan I giggled so hard at “shredder”