Looking Out To Sea

Aaargh! Public speaking

Recently there have been a few presentations at work, including one on the two languages Python and Lua. These are both dynamically typed languages and as you might know I’m a static typing kinda guy. It seemed reasonable to take this opportunity to get some public speaking practice while providing a counterpoint to this recent languages talk.

The language we use at work is C++ with a bit of legacy C and some assembly in the darker corners. This is a wee bit object-oriented and very imperative — a whole world away from the Haskell that I would more than likely use as my example language.

(Other topics suggested by my colleagues were capoeira and software engineering in an independent Scotland. I’m trying to work out how I can make a few “functional programming in an independent Scotland” jokes but there’s nothing forthcoming. The obvious “separation of Church and state” joke isn’t relevant here!)

The issues which I could discuss are numerous, and there’s plenty of things I’d like to talk about that are not introductory. So sticking to the basics, I have some themes and topics:

  • Functions, procedures, side-effects. Some definitions.
  • Purity & referential transparency. Haskell is a language of extremes (the “hair shirt”) so we may as well discuss the advantages of this full-on expression-based approach to programming.
  • The benefits of an expressive type system. Not an FP-specific thing but it gives an opportunity to show one of Haskell’s strengths.
  • Laziness and the duality of data structures and control structures. Might be a bit mind-bending but nobody said it was going to be easy.
  • History of Turing machines and Lambda calculus. Not sure if it can be worked in without sounding too much like a lecture but it would help to push the idea that this is a fundamentally different approach to the problem of programming but at the same time it is just as powerful.

I think I just need to start writing and see what I can come up with. Rearrange, edit, and so on — until I’m done.