Summer of Programming Languages

Having just returned from the annual Oregon Programming Languages Summer School, at which I teach every year, I am once again very impressed with the impressive growth in the technical sophistication of the field and with its ability to attract brilliant young students whose enthusiasm and idealism are inspiring.  Eugene was, as ever, an ideal setting for the summer school, providing a gorgeous setting for work and relaxation.  I was particularly glad for the numerous chances to talk with students outside of the classroom, usually over beer, and I enjoyed, as usual, the superb cycling conditions in Eugene and the surrounding countryside.  Many students commented to me that the atmosphere at the summer school is wonderful, filled with people who are passionate about programming languages research, and suffused with a spirit of cooperation and sharing of ideas.

Started by Zena Ariola a dozen years ago, this year’s instance was organized by Greg Morrisett and Amal Ahmed in consultation with Zena.  As usual, the success of the school depended critically on the dedication of Jim Allen, who has been the de facto chief operating officer since it’s inception.  Without Jim, OPLSS could not exist.  His attention to detail, and his engagement with the students are legendary.   Support from the National Science Foundation CISE Division, ACM SIGPLANMicrosoft Research, Jane Street Capital, and BAE Systems was essential for providing an excellent venue,  for supporting a roster of first-rate lecturers, and for supporting the participation of students who might otherwise not have been able to attend.  And, of course, an outstanding roster of lecturers donated their time to come to Eugene for a week to share their ideas with the students and their fellow lecturers.

The schedule of lectures is posted on the web site, all of which were taped, and are made available on the web.  In addition many speakers provided course notes, software, and other backing materials that are also available online.  So even if you were not able to attend, you can still benefit from the summer school, and perhaps feel more motivated to come next summer.  Greg and I will be organizing, in consultation with Zena.  Applying the principle “don’t fix what isn’t broken”, we do not anticipate major changes, but there is always room for improvement and the need to freshen up the content every year.  For me the central idea of the summer school is the applicability of deep theory to everyday practice.  Long a dream held by researchers such as me, these connections become more “real” every year as the theoretical abstractions of yesterday become the concrete practices of today.  It’s breathtaking to see how far we’ve come from the days when I was a student just beginning to grasp the opportunities afforded by ideas from proof theory, type theory, and category theory (the Holy Trinity) to building beautiful software systems.  No longer the abstruse fantasies of mad (computer) scientists, these ideas are the very air we breathe in PL research.  Gone are the days of ad hoc language designs done in innocence of the foundations on which they rest.  Nowadays serious industrial-strength languages are emerging that are grounded in theory and informed by practice.

Two examples have arisen just this summer, Rust (from Mozila) and Swift (from Apple), that exemplify the trend.  Although I have not had time to study them carefully, much less write serious code using them, it is evident from even a brief review of their web sites that these are serious languages that take account of the academic developments of the last couple of decades in formulating new language designs to address new classes of problems that have arisen in programming practice.  These languages are type safe, a basic criterion of sensibility, and feature sophisticated type systems that include ideas such as sum types, which have long been missing from commercial languages, or provided only in comically obtuse ways (such as objects).  The infamous null pointer mistakes have been eradicated, and the importance of pattern matching (in the sense of the ML family of languages) is finally being appreciated as the cure for Boolean blindness.  For once I can look at new industrial languages without an overwhelming sense of disappointment, but instead with optimism and enthusiasm that important ideas are finally, at long last, being recognized and adopted.  As has often been observed, it takes 25 years for an academic language idea to make it into industrial practice.  With Java it was simply the 1970’s idea of automatic storage management; with languages such as Rust and Swift we are seeing ideas from the 80’s and 90’s make their way into industrial practice.  It’s cause for celebration, and encouragement for those entering the field: the right ideas do win out in the end, one just has to have the courage to be irrelevant.

I hope to find the time to comment more meaningfully on the recent developments in practical programming languages, including Rust and Swift, but also languages such as Go and OCaml that are also making inroads into programming practice.  (The overwhelming success and future dominance of Haskell is self-evident.  Kudos!) But for now, let me say that the golden age of programming language research is here and now, and promises to continue indefinitely.

Update: word smithing.

15 Responses to Summer of Programming Languages

  1. […] その結果のいくつかは実際に適用されています。例えば、HaskellやScala、OCamlなどの言語は学術調査プロジェクトが開始し、使用の主流を見てきました。主流言語はまた、リサーチャーがデザインした機能を採用してきました。ガベージコレクション、例外、クロージャ、型推論、パラメトリック多相(ジェネリック)など、これ以外にいろいろです。もっとも、しばしば数10年遅れてのことでしたが。新生の言語であるSwiftやRustは、このような傾向を続けており、Bob HarperのようなPLリサーチの象徴は調査から生まれた良いアイデアはやがて確立されるという期待を述べました。 […]

  2. The gap is at least 25 years and not showing signs of shrinking (indeed it would rapidly and catastrophically widen if we actually take things like Go seriously).

    When mainstream languages reach the sophistication of Standard ML then we will can congratulate ourselves on rediscovering what we knew in the mid-1990s.

  3. shriramkrishnamurthi says:

    Bob, your excitement is understandable but overstated. Go is (as Dmitry Popov says) way behind the times, and Swift has various warts too, which I’ve been logging as I run into them: . It doesn’t even have full GC! That doesn’t sound like progress to me.

    • It’s not. All that regions nonsense is backward as well. I guess I was feeling expansive after OPLSS, and having been barbecued by people I respect for criticizing Swift. I started to read the Swift manual this summer, but quickly was seduced back into thinking about cubical sets instead.

  4. Blank Screen?

    Summer of Programming Languages | Existential Type

  5. Bogdan Barbu says:

    Hi. I noticed last year you gave a series of 5 lectures, whereas this year there were only four. Is it because you were able to condense the material or is there anything missing? Thanks.

  6. […] Some of the results have been adopted in practice. For example, the languages Haskell, Scala, and OCaml started as academic research projects and have seen mainstream use. Mainstream languages have also adopted researcher-designed features such as garbage collection, exceptions, closures, type inference, parametric polymorphism (generics), and more, though often after a decades-long delay. Nascent languages Swift and Rust have continued this trend, causing PL research icons like Bob Harper to express hope that good ideas from research eventually do take hold. […]

  7. […] Summer of Programming Languages | Existential Type […]

  8. NIck Barnes says:

    Automatic storage management took more than 30 years to hit the mainstream, not 20. But yes, hurrah that finally real-world languages are gaining some theoretical elegance.

  9. Dmitry Popov says:

    I wonder what interesting did you find in Go. It’s often described as a language which ignored all PL research since early 60s.

  10. […] Summer of Programming Languages […]

  11. Speaking as someone working in industry, I would be absolutely delighted to hear your thoughts on Swift, and I know many others would as well. Last week I gave a talk for other iOS developers in SF, pointing out that nearly all of the major new features in Swift originated in the 1980s or earlier, in SML or other functional languages. Many in the audience were surprised by this point, I think, but receptive and curious about what it implied.

    The twenty year gap between research and industrial practice is also a frustration for people in industry. When I read about OLPSS, it always feels like reading about an amazing vacation resort I will probably never be able to afford to visit!

  12. Harley says:

    Wonderful post. I attended OPLSS in 2011 and I absolutely loved it! I couldn’t agree more with what you said in this post, and I have to say that I am glad to see the new advances in industrial languages such as Swift and Rust. I hope this trend continues!

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

Join 206 other followers

%d bloggers like this: