SPLASH'16 conference in Amsterdam
Last week I attended the SPLASH’16 conference in Amsterdam. SPLASH is a general conference on programming languages and anything only slightly related to that, such as language workbenches, meta-programming, aspect-oriented programming, type systems and compilers. The name SPLASH is a rather forced acronym for Systems, Programming, Languages and Applications: Software for Humanity, which they chose since their previous acronym OOPSLA (Object-Oriented Programming, Systems, Languages, and Applications) didn’t cover the variety of subjects any more. Personally, I would have called it the Backus conference, after John Backus who invented a now widely used notation for formal language syntax and designed the Fortran programming language.
Teaching concepts of programming languages in Scala
As part of the bachelor courses on Computer Science here at the TU Delft, students get taught concepts of programming languages. These range from functional concepts such as lambda’s and cons-nil lists to more imperative concepts such as records and mutation. And as many concepts there are to teach, there are as many ways to teach them. One approach is to ask students to implement a definitional interpreter that makes these concepts explicit, which is the approach chosen by Shriram Krishnamurthi and Joe Gibbs Politz for their book Programming and Programming Languages.
Use third-party runtime dependencies
Last week I argued why you should minimize the number of runtime dependencies. Once you’ve done that, you’re left with the core necessary dependencies of your product. Let’s continue with the coffee machine example, since you like coffee, right? Right? Your next door neighbor has invested in a Nespresso machine. He really likes the Ristretto, but occasionally goes for a Lungo. He has to buy Nespresso coffee capsules, as that’s all his machine will accept. He heard the horror stories of people destroying their expensive machines with aftermarket capsules, so he won’t do that. He will drink Nespresso brand coffee, he has no choice. The price of the capsules is set, there are no cheaper alternatives for him. And if Nespresso ever stops with his favorite blend, he’ll be sad.
Minimize the number of runtime dependencies
Hello, you must be a programmer, and you probably like coffee (there’s a reason some programming tools have coffee-related names). Well, then you have a coffee machine, correct? Let’s make some nice hot coffee for us to enjoy while reading this blog. Put some beans in there (it’s a luxurious machine, alright?), pour some water in the reservoir, and put an empty cup under there. Push the button to bring the machine to life, and after some whirring should you see the black gold oozing out of it. Nice…