## 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 Loops Fortran (Pascal,APL) Guarded Commands Algol-68 Array Origin C, Fortan, Pascal, APL Extensible Language PPL Domain Specific Language APT Structured Programming BLISS, INTERCAL Text vs. Environment Algol-60, Lisp, Smalltalk Language as Educational Tool Logo Stack Machines Befunge (SECD Machine, Forth) Formal Dynamic Semantics SECD Data Parallelism APL Enumerated Types Pascal Coercion PL/I (Fortran-V) Backtracking and Theorem Proving Conniver (Prolog) Hierarchical Records COBOL Argument Handling Common Lisp, Ada, Python (VB, C#, Suneido, PL/pgSQ) Pointers & Lists IPL-V Coding in Natural Language Perligata (COBOL, Hypercard) Parsing Yacc (LR1, Recursive Descent) Computational Drama Shakespeare Linked Records AED Reasoning Prolog Mathematical Syntax MADCAP, MIRFAC, Kleerer-May System Type Declarators C Line Numbers Basic (Focal, APL) Data Abstraction CLU, Alphard Visual Languages Piet Dynamic vs. Lexical Scoping Scheme Pattern Matching & Replacement COMIT, SNOBOL Knowledge Representation KRL (Conniver, Microplanner) Branding Ada (COMIT, SNOBOL, TRAC) Stream Processing Lucid Dynamic Languages AMBIT/L Generic Functions Common Lisp Program as Data Lisp Reflection 3-Lisp Macro Processor TRAC, ML/I, Limp, M4 Metacircular Interpreters Lisp Call By Name vs. Call By Value C, Algol-60 Functional Programming KRC Dangling Else Algol-60 Control Parallelism Occam Formal Static Semantics Algol-68 Domain Specific Languages HQ9+, MUMBLE Algebraic Formula Manipulation Formac (Macsyma, Mathematica) Build Languages Make, Ant, Rake (JCL) Message Passing Smalltalk (C++, C#, Java, Flavors, Common Loops, CLOS, Scheme, Dylan, Simula, Self) Scripting Perl Objects Simula (Smalltalk, C++, Java)

## Comment viewing options

### Two minor corrections

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

### Corrected

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.

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

http://ershov.iis.nsk.su/ershov/english/index.html

http://ershov.iis.nsk.su/ershov/english/scient.html

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

### Dangit!

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?

### Incomplete

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.

### Connections

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.

### Yay!

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.