Amateur study of programming languages has been extremely valuable to me, first as an inexhaustible source of curious insights and second as an economic signal 1. As a result, when a favorite professor wrote to me for advice on where to direct you, I figured that I might be able to do us both a favor2 with the following “reply to public”. Thus, without further ado, here are some of the PL people, projects, venues, and other resources that have been helpful to me so far.
I’ve found that informal workshops and symposia are great places to meet implementers and theorists whose work I respect. Some of my favorite venues have been:
I’ve also heard good things about some of the more formal venues like
though I haven’t yet attended any of their events.
There are a variety of good PLT research groups on the US East coast. Some of my favorites include:
Even better, these folks often host seminar series (announced via
mailing lists like programming@eecs.harvard.edu
and pl-seminar@lists.ccs.neu.edu
)
that, if you ask nicely, you can attend.
(Note: there are many other awesome PL research groups on the US East Coast, in Western Europe and on the US West Coast but, for the most part, I’m less directly familiar with their work.)
As I got deeper into PL, I eventually ran into math that was beyond my ability to efficiently learn via self-study. Fortunately, I sought help from another favorite professor and, together, we developed a summer reading program that really helped me to connect my undergraduate study of math with my interest in PLT via some classic books like:
These projects and people have all done work that I’m glad to have used and studied:
and, of course, I can’t leave out the debt owed other members of the ALGOL family:
Tech centers like Boston, San Francisco, New York, and Philly often have monthly programming language user group meetings like these:
and many others that I have never had the pleasure of attending!
Finally, aside from reading voraciously and from going out of my way to search for languages that seem appropriate for the problem of the day, the most useful technique that I’ve found for really learning the idioms and quirks of new languages is to systematically implement one or more of a suite of toy problems (2-d line rendering, Paxos, line-oriented network protocols or UNIX utilities, data structures) that I’ve accumulated over the years.