If You're Not Writing a Program, Don't Use a Programming Language [video]
I haven't watched the full talk, so let me know if this gets explored by Lamport, but...Here's a thought: PL researchers seem to generally agree that typed languages are superior to untyped languages, yet programmers tend to prefer untyped languages to typed languages, to the point where Java and C++ have the fanciest type systems in common use, with ML being the closest thing to an academic language that gets significant use.It seems intuitive to me that typed languages are bad for exploring algorithmic design, so could this where the disconnect is?  Most programmers do not know what algorithm their final product is going to have when they start and dynamic languages are much more ergonomic when you are exploring he design space.Certainly if I knew exactly what program I was going to write when I started, I could probably write it in haskell; indeed once I have a working program, translating it to haskell is often fairly mechanical.  However much of my time is spent trialing algorithms that may or may not be a good fit for the problem I'm solving and in those cases I feel like haskell gets in my way, while lisp gets out of my way.I don't know if there is any practical takeaway from this, but it does seem to at least give an explanation for the divide between PL theory and practice.