Guy Steele & Richard Gabriel: 50 in 50

For those who like their PL History presented in avante guard beat poetry, a video of Steele & Gabriel's 50 in 50 speech at JAOO is made to order. Or as the link says:

A fun, artistic and enlightning presentation full of interesting facts - and who better to do it than Richard P. Gabriel and Guy L. Steele (the great Quux). Nothing more to say than the rallying cry; More cowbell!

Passing aside the Stephen Wright comic delivery of the two speakers, there are a lot of interesting thoughts, though very few are dwelled on. I think the most interesting things were the languages that they chose as expositions for the major ideas that they covered. Here's the ones that I picked out (though I ended up with only 49):

Do LoopsFortran (Pascal,APL)Guarded CommandsAlgol-68
Array OriginC, Fortan, Pascal, APLExtensible LanguagePPL
Domain Specific LanguageAPTStructured ProgrammingBLISS, INTERCAL
Text vs. EnvironmentAlgol-60, Lisp, SmalltalkLanguage as Educational ToolLogo
Stack MachinesBefunge (SECD Machine, Forth)Formal Dynamic SemanticsSECD
Data ParallelismAPLEnumerated TypesPascal
CoercionPL/I (Fortran-V)Backtracking and Theorem ProvingConniver (Prolog)
Hierarchical RecordsCOBOLArgument HandlingCommon Lisp, Ada, Python (VB, C#, Suneido, PL/pgSQ)
Pointers & ListsIPL-VCoding in Natural LanguagePerligata (COBOL, Hypercard)
ParsingYacc (LR1, Recursive Descent)Computational DramaShakespeare
Linked RecordsAEDReasoningProlog
Mathematical SyntaxMADCAP, MIRFAC, Kleerer-May SystemType DeclaratorsC
Line NumbersBasic (Focal, APL)Data AbstractionCLU, Alphard
Visual LanguagesPietDynamic vs. Lexical ScopingScheme
Pattern Matching & ReplacementCOMIT, SNOBOLKnowledge RepresentationKRL (Conniver, Microplanner)
BrandingAda (COMIT, SNOBOL, TRAC)Stream ProcessingLucid
Dynamic LanguagesAMBIT/LGeneric FunctionsCommon Lisp
Program as DataLispReflection3-Lisp
Macro ProcessorTRAC, ML/I, Limp, M4Metacircular InterpretersLisp
Call By Name vs. Call By ValueC, Algol-60Functional ProgrammingKRC
Dangling ElseAlgol-60Control ParallelismOccam
Formal Static SemanticsAlgol-68Domain Specific LanguagesHQ9+, MUMBLE
Algebraic Formula ManipulationFormac (Macsyma, Mathematica)Build LanguagesMake, Ant, Rake (JCL)
Message PassingSmalltalk (C++, C#, Java, Flavors, Common Loops, CLOS, Scheme, Dylan, Simula, Self)ScriptingPerl
ObjectsSimula (Smalltalk, C++, Java)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Two minor corrections

For generic functions, they specifically mentioned Common Lisp, and for reflection, they specifically mentioned 3-Lisp.


In my defense, I was getting lazy near the end (not to mention I've never heard of 3-Lisp). :-)

Come to think of it our

Come to think of it our coverage of 3-Lisp is indeed pretty weak.

not much via google

but (for those of us who don't know) it looks to be reflection and self-modification gone gang-busters. in lisp.

PL salute

Mostly a note to myself, but at the end of the video there's a brief salute to innovators of the past (in Academy Award style). Some of them are on my PL People page, but these are some of the names that I probably need to look up:

  • Andrei Petrovich Ershov
  • Alan Jay Perlis
  • Allen Newell
  • Calvin Mooers
  • Herbert A. Simon
  • Robert W. Floyd
  • Eiichi Goto
  • Bernard A. Galler
  • Douglas T. Ross
  • Ken Kennedy
  • Donald Michie

A couple of these I've heard of. Though the trick from my standpoint is to assign them to a specific PL.

[For some reason I'm in the mode for making lists today] :-)

PL salute

I think I can help to identify the first one in the list

Ershov: Alpha and Rapira

From a PL perspective, Ershov appears to have been involved with Alpha and Rapira. Alpha dates to 1961 is an extension of Algol - though a cursory search appears to yield few details. Rapira was an educational PL with Russian keywords.

Piet as the example of a

Piet as the example of a visual language? That's really a shame. Surely there are much more significant (and useful) examples.

Eso innovation

I was also wondering about INTERCAL and Befunge. Maybe Whitespace is missing? I guess it's not all too serious. I'd also say awk is a scripting language that preceded Perl...

Not necessarily a time line history

Some of the PLs chosen, such as Piet, were merely punchlines to a joke. Others were intended as the logical conclusion to a paradigm. Awk may have preceded Perl, but Perl probably serves as a better overall example of a scripting language - even if it is amalgam of scripting languages that came before it.

[Edit note: Of course, their selection of KRC instead of Haskell kind of runs counter to the whole *best* example argument] :-)

Visual languages

I suppose one could fall back on the old adage about: The more people that you invite to a party, the more you leave out. But I think Alan McInnes gave some insight on a slide presentation of an unrelated PL history from Stroustrap:

I found the slides to be interesting, and am glad that you posted the story. I think the key is to look at the slides not as an objective (pun intended) history of programming languages, but as a presentation of Bjarne Stroustrup's perspective on that history. Which is an interesting thing in itself. The fact that, to take one example that someone else here already raised, Stroustrup gave such a small amount of attention to Lisp helps us to understand why C++ is the way it is.
I'd take it the same way for Steele and Gabriel. Perhaps it is simply a reflection of them not being immersed in these type of languages - they have probably been influenced very little by visual PLs. Any discussion of history is always subjective. One item that is obviously on Steele's agenda was Mathematical notation, where he asks whether it is time to explore it further - an obvious reference to his current work in Fortress.

Aspect Oriented Programming

Well not necessarily the philosophy but the technical implementation really came from common lisp with before and after methods.

do not spam me

There was brief mention of aspects in the presentation. Given Gregor Kiczales history, it is well known that the AOP has deep roots with Lisp.

Anyhow, your non sequitur first post and your pseudonym that goes against the spirit of LtU policies, I'd tag you as a spammer.

Yes, it is rather weird.

Yes, it is rather weird.


I hate you Chris, I was thinking of doing something similar to this just recently! :P

Nice work.

Some suggestions

I think Modula-2 should be added to the "Structured Programming" section, as it is the first language (that I know of) to focus on modules.

Also, perhaps Icon should be added to the pattern matching section?


Since they were deeply into the dept of silly walks, the list needs to be heavily redacted for those who are looking for a more refined breakdown of history.

I've never understood the interaction between Modula-2, CLU and Alpherd, but all of them were influential.

Icon requires looking at Griswold's work with SNOBOL, which was mentioned, though the approach to pattern matching was different - with Icon using success/failure generators.

Yeah I just noticed that you

Yeah I just noticed that you were going for more of a chart of what they talked about rather than a chart of your own.

Perhaps a chart that's more fleshed out and with a few more features would be a neat project.


Such a table would be mostly subjective, as the problems being addressed by languages, as well as the chosen solutions, are not always clear cut. So, even before you began discussing what language begat what feature, you have to make a call on the major ideas - past, present and future.

Personally, I'd prefer to see a James Burke-ish sort of Connections, wherein you take a problem and thread it through the history of programming languages. The interaction between languages over time is usually much more complex than A-then-B causality.


I was surprised and happy when two of my favorite esoteric languages were mentioned :)

Which - Piet and

Which - Piet and Shakespeare?

I was sad to see the lack of Homespring...

re Guarded Commands

I believe their "guarded commands" reference was to Dijkstra's A Discipline of Programming rather than to Algol 68.

IIRC the key takeaway for Algol 68 was van Wijngaarden grammars.

So the last box is destined

So the last box is destined to remain empty?

Actually the first element (number 0) is missing

At the beginning of the speech, Guy says that it isn't 50 languages, but that they are making 50 comments of 50 words each. That introductory statement counts as one of the one of the 50-word comments. So the table should have as the first box "Introduction".

Funny bug!

Great presentation indeed. It's funny to see a bug at 58:25, when Richard P. Gabriel presents Scheme. Quoting:

(define f (x) (+ x 19))
(f 23) ;23+19=42

It's great to see that the result is 42, of course, but definition of "f" is wrong, and won't compile in Scheme.

Maybe Richard P. Gabriel needs a Scheme compiler for his presentations! Now, what about Guy Steele's Rabbit compiler! :-D.