Nada Amin will be giving a talk at EuroClojure 2017. Her talk is called Generative Programming and Verification.
PurelyFunctional.tv: How did you get into Clojure?
Nada Amin: In 2008, I saw a talk by Rich Hickey at MIT. I remember being impressed with the design decisions in the language, though I didn’t have a use case for Clojure at the time. Then, I stumbled on Overtone, a great audio environment based on Supercollider and Clojure. Finally, I became a contributor to core.logic, implementing core.logic.nominal as I was looking for declarative ways to represent and explore programming language semantics, including reasoning about alpha-equivalence and binders like one does on paper.
PF.tv: What is your talk about?
NA: My talk is about writing code that generates code in a principled way. I’ll show how we can turn interpreters into compilers, as well as collapse towers of interpreters.
PF.tv: Who is your talk for?
NA: My talk is for anyone who’s interested about code generation, and looking for insights into how to build compilers from first principles.
PF.tv: What do you hope people will take away from the talk?
NA: There are some principled and powerful ways to think about code generation. In particular, you can write an interpreter first, and derive a compiler almost automatically.
PF.tv: What concepts do you recommend people be familiar with to maximize their experience with the talk?
PF.tv: What resources are available for people who want to study up before the talk?
NA: In the talk, I will use the Lightweight Modular Staging (LMS) framework for code generation in Scala. Some tutorials on generative programming in LMS.
A paper (functional pearl) on building a SQL to C compiler in 500 lines of code.
A paper on extending these generative techniques to verification of low-level C code
PF.tv: Where can people follow you online?
PF.tv: Are there any projects you'd like people to be aware of? How can people help out?
NA: I’d like to advertise io.livecode.ch which is a project that can turn any Github repository into web pages with live editable snippets. It works pretty well for languages with small runtime (e.g. Scheme). I’d like to encourage people to try it out and contribute their own creations.
PF.tv: Where do you see the state of Clojure in 10 years?
NA: The Clojure community has been great in taking ideas from academia and making them practical and accessible. I also find the Clojure language itself evolving tastefully, with interesting concepts and libraries such as transducers, clojure.spec, etc. being introduced and pushed in interesting directions. In 10 years, I hope Clojure will continue along this trajectory of always incorporating the best ideas floating around and turning them into delightful practical and accessible libraries.
PF.tv: If Clojure were an animal, what animal would it be?
NA: A cuttlefish. Very smart and quick to adapt.