I was invited to give a talk at the Programming Languages Mentoring Workshop (PLMW) colocated with POPL’19 in January. The talk topic was What is programming languages research? I was excited to give this talk. It’s a topic I’ve thought a lot about over the years; in 2015 I wrote a blog post about it. Shortly thereafter I was elected SIGPLAN Chair, and over the ensuing three years came to know the exciting depth and breadth of the field even more deeply.
Like the blog post, the talk presents what I view as the goals, ethos, and benefits of PL research. Because the PLMW audience is senior undergraduates and early graduate students, the talk also presents an overview of PL as a field. In particular, it presents a tutorial of sorts of the areas and methods that PL researchers often develop and employ. To capture what these are, I skimmed a sampling of the conference proceedings of PLDI and POPL from the last 30 years. Doing so, I abstracted the “shape” of a PL research paper, and identified the broad areas PL researchers tend to focus on. The talk presents a flavor of these areas. Because the talk took place just before POPL, I focused most on topics that appear in POPL-published research; the talk highlights particular POPL’19 papers as examples.
Several people afterward told me that they enjoyed the talk and asked about whether a video of the talk might be available. Unfortunately, the talks were not recorded. SIGPLAN main conference talks are regularly video-recorded, but workshops and co-located events are hit and miss. I certainly understand the financial reasons for this situation. Nevertheless, it’s really too bad that PLMW talks are not recorded. In my experience, PLMW speakers put an exceptional amount of time and care into their talks, so they are often very well done. The talks also target a general audience, so they are potentially valuable to many more people than just those attending the actual event.
In the hopes that others might find it useful, I decided to video-record myself giving the PLMW talk. The recording is not great, but I hope that fact doesn’t get in the way of the conveying the content. If it does, maybe just the slide deck will prove useful. If you have comments or thoughts, I’m glad to hear them!
Many thanks to the organizers of PLMW@POPL’19 for a great event, and the opportunity to speak!
Thanks for posting this. Just wanted to point out that that Haskell code you include is *not* QuickSort. No random pivot = not QuickSort.
Sorry about the sloppiness! I hope the main point of that example is clear.
The intent is clear but I think it is (unintentionally) seriously misleading. Effectively parallelizing a non-trivial algorithm is _hard_. Witness the multiple failed attempts by experts, attested to by the blog post.
On similar lines, I highly recommend Melissa O’Neill’s takedown of the classic Sieve of Eratosthenes example, which she refers to as, in essence, short, elegant, and wrong.
https://www.cs.hmc.edu/~oneill/papers/Sieve-JFP.pdf
Neat! Thanks for sharing.
What on earth are you talking about? You can choose whichever pivot you want – not just a random pivot.
Feel free to take it up with Sir Tony himself. Hoare’s original QuickSort algorithm is Algorithm 64 (which, btw, makes Algol look just as nice as Haskell). It depends on (his) “partition”, which is Algorithm 63, which explicitly depends on randomness.
https://dl.acm.org/citation.cfm?id=366642
https://dl.acm.org/citation.cfm?id=366644
Love the talk, and have a small suggestion for the next version.
In your slide on type systems, I would add performance as another benefit. Eliminating classes of errors also means eliminating classes of runtime checks.
Pingback: Resumen de lecturas compartidas durante febrero de 2019 | Vestigium
Pingback: Highlighting PL Research to the CS Community | SIGPLAN Blog
Pingback: Increasing the Impact of PL Research | SIGPLAN Blog
Pingback: Increasing the Impact of PL Research - The PL Enthusiast