The editor who changed the name was Nicklaus Wirth, the inventor of Pascal, and one of the other great historical proponents of structured programming.
There were absolutely intermediate representations by 1968. For example, see:
The Design of the Gier ALGOL Compiler by Peter Naur (1963)
ALGOL 60 Implementation by B. Randell and L. J. Russell (1964)
I'm pretty sure there are older examples, but I don't have access to my library right now so I am limited to my memory and the pale shadow of truth that can be found online.
Personally, I never really liked the whole concept of "where we are in the program" that he builds up in this paper. I think his discussion of how to reason clearly about the different structured statement types in Notes on Structured Programming
(
https://www.cs.utexas.edu/users/EWD/ewd02xx/EWD249.PDF) is both easier to understand and far more useful from a practical perspective.
In Perl, goto will search the call stack for a matching label, like with exceptions. In Algol 60 and Pascal, since you are able to nest procedures within other procedures, you can use goto to jump to an error handler in a high level procedure regardless of how many intermediate procedure calls you are jumping out of.
Jimmy's argument against dependency injection, based on the fact that you don't know what code you are calling or what it will do, reminds me of the argument in Polymorphism considered harmful (
https://dl.acm.org/doi/pdf/10.1145/181628.181635), and to some extent is also an argument against late binding, closures, function pointers, execution tokens, and ultimately object-oriented programming and functional programming as paradigms. [Later note: Ha ha! Jimmy claims OO considered harmful later in the episode! I disagree, but I respect your consistency! 😂 Oh wait, you like functional programming? 🤔]
https://wiki.c2.com/?ClosuresAndObjectsAreEquivalent
For the advantages of hiding implementation details within modules, and not making everything public, I believe Parnas provided an excellent argument.
https://dl.acm.org/doi/10.1145/361598.361623
Your arguments against black boxes sound a lot like arguments against abstraction and even potentially code reuse in general. You might enjoy some of Charles Moore's early writings about Forth. One of his goals was to reduce the number of levels of abstraction and allow the programmer to work in a convenient environment while still having easy access to the lower level reality.
Unfortunately, I think many modern programmers do not grasp the level of chaos that used to exist in many Fortran and Basic programs, and so they don't really understand the type of madness that Dijkstra was trying to reduce in the world. They assume that any goto is terrible and confusing, while sometimes a single goto in the right place can eliminate several flags and pieces of convoluted loop logic, making a piece of code much easier to understand.
There are empirical studies showing that for certain types of problems, more students can write correct solutions if they are allowed to use break statements, which are a type of goto that Dijkstra did not approve of.
https://dl.acm.org/doi/10.1145/182.358436
http://doi.acm.org/10.1145/199691.199815
I don't think Hopkins made as good of an argument as Knuth, but his paper still deserves a place in the cannon.
http://doi.acm.org/10.1145/800194.805860
Furthermore, in the Knuth paper that I linked above, he actually gives an example that Dijkstra admitted was a good use of a goto.
My favorite quote about goto comes from the original wiki at
https://wiki.c2.com/?GoTo
"The apprentice uses it without thinking. The journeyman avoids it without thinking. The master uses it thoughtfully."