He goes on to describe how the "successful research language" dies the "slow death" after a decade and after having peaked with a couple of hundred users, and that the third road is when you cross the boundary of immortality, at which point you become the new COBOL, like Java, C, Python, Perl and other things that humanity will now never be rid of, held up by the network effect of legacy code.
Haskell, interestingly, plateaued in an intermediate stage for a decade, but now seems destined to become one of the immortal legacy languages.
Lots of references, mostly verbal, to seminal papers, including "Cons should not evaluate its argument", "Lambda the ultimate <blah>" and "Why functional programming matters". I hope this is all written down somewhere or I'll have to do it.
> When people first start to use Coq or Isabel, you don't hear from them for two years, they sort of go dark. And then they emerge, with all their pain receptors destroyed, and they say "it's the only way to live".
Took me a while. I finally had to use the right terms to find the name of my formal methods professor and then found one of her lecture schedules that mentioned it. :-D
It's pretty cool. If I remember correctly, you provide it with an implementation (in the tool's own special language) of a multi-threaded application, and it exhausts the combination space and shows you a sequence of operations that leads up to one of your asserts breaking.
It also has some interactive modes that I forgot how they work or maybe we never went into it. The thing that stuck rather than the tool itself was the concept of Kripke structures for modeling states through time.
There was also a number of formal logic models of control structures for pen-and-paper proofs of invariants that *should* have stuck. :-)