The head of the department decided to send me to spy on the current situation of functional programming to Trends in Functional Programming 2015 (TFP2015) conference and the Trends in Functional Programming in Education workshop. Since the events took place on the French Riviera in Sophia-Antipolis (between Nice and Cannes), I didn’t see many downsides to my temporary exile. 🙂 In this blog post, I concentrate on three things: general observations on today’s functional programming, thoughts about teaching functional programming, and general feelings about the conference.
The TFP2015 conference is quite small, there were about 50 participants from Denmark, The Netherlands, England, Scotland (these two should be mentioned separately since Glasgow is so strong in functional programming), Sweden, Hungary, France, The United States, and Finland (that’s me and only me). And probably some other countries I forgot.
The conference had only one track, so it was quite easy to decide what to attend. However, since each conference lunch consisted of an aperitif, entrée, main course with two glasses of wine, and dessert, staying awake during the afternoon sessions clearly required more willpower than the morning presentations. 🙂
Considering the conference topic I was pleased to notice that most of the presentations in were not completely over my head, and almost all of them were interesting. The subjects varied a lot, from experiments in using functional approach to robot programming in education to “Proving Soundness of Refactorings to Introduce Parallel Skeletons in Erlang” (which, frankly, was mostly over my head).
Overall I learned a lot not only from the presentations, but also from discussions with people and from what was not mentioned. It’s clear that the functional programming community has noticed that the industry is becoming more interested in functional programming. However, I’m not sure everybody was aware why that has happened and what should be done. Some people still seemed to regard functional programming as a theoretical computer science subject, where practical use happens by accident and is not that interesting. However, there were presentations where functional programming was applied to embedded programming, for example.
I noticed one trend (that’s typical in other scientific communities as well): in several presentations I heard the phrase “I’m sure I don’t have to explain to this audience why I chose the functional programming approach to this problem”. I always wanted to raise my hand and ask to hear the explanation, because I’m interested in knowing what functional programming is suitable for in the real world and why. I remained silent, because I was afraid that the reason would simply be “because I like functional programming”.
About programming languages: It seemed that in this conference Haskell was the default language for everything, like C++/Python/Java in imperative programming. If anyone wanted to be taken seriously, they used Idris or Agda (languages derived from Haskell, with even stronger type systems and formalisms). Scheme and Lisp seemed to be tolerated if you were teaching introductory-level programming. However, Clojure and Scala were not mentioned even once. Clearly many people did not follow the development of imperative languages at all, since some were surprised to hear that C++ and Java have lambdas nowadays as well. When I talked with people, many agreed that functional languages have a difficulty to interface with the real world, and it’s difficult to teach how that should be done. In the discussions I suggested my vision, a multi-paradigm (mostly imperative) language with a purely functional subset (where the compiler would enforce pure functionalism). Many people agreed that that sounds like a good practical compromise, but nobody knew any languages like that (and I don’t either).
In education everyone seemed to have the same problem as we: students have a short attention span, do not want to deep learn things and are unwilling to participate in any sort of discussion, especially online. So, everything is as it has always been. 🙂 Most universities seemed to have a separate course for functional programming, additionally functional programming was introduced in courses similar to our Principles of Programming Languages. However, functional programming is typically taught in isolation, which makes applying it to other areas more difficult. (My own ambition with Terhi Kilamo is introduce some functional programming in our Data Structures and Algorithms course next spring, so that people get familiar with both imperative and functional style data structures and algorithms. We’ll see what the end result will be.)
The conference took place in INRIA (the French National Institute for computer science and applied mathematics) in Sophia-Antipolis, which is a French “Silicon Valley” village with mostly companies and a couple universities (I heard that the place was chosen because its climate is similar to California, in order to attract engineers from there). The conference web pages warned that there was little else to see in Sophia-Antipolis, so I followed the advice and chose to stay in the nearest coastal town Antibes 8 km away (it took 40 minutes by local bus to get to Sophia-Antipolis). To my surprise only a handful of other participants stayed in Antibes. The rest had a hotel in Sophia-Antipolis and either complained that there was nothing to do, or were happy to have peaceful time with their computers. 🙂 Sophia-Antipolis was clearly not meant for pedestrians. I noticed from the map that there was a small national park just outside the INRIA campus. It took me half an hour to find out how to get there (because the park was mostly surrounded by a fence), only to learn that the park mainly consisted of thorn shrubbery with a couple of paths between.
Depending on your preference Antibes was either a lovely and lively town in French Riviera (with plenty of shops with arts, women’s clothing and jewelry, not to mention mansions and luxury yachts of film stars), or a too hot and dry place with walled-out mansions and far too little greenery. My opinions are somewhere in between, and I spent a lot of evenings walking around (desperately looking for some nature). But I still liked the place, mainly because the people were friendly everywhere (in France!), and the food was excellent. The organizers of the conference did not seem to think Antibes was good enough for us, since the conference social event and dinner to place in Nice (25 km to the east). There we had a guided tour and a long (really long) dinner, with a lot of interesting discussions.
All in all I was really happy with the conference. It helped me get a feeling of the functional programming community, and I got a lot of tips and ideas about teaching functional programming. It was also my first visit to France, which made me realize that our Francois is not the only friendly Frenchman in existence. 🙂