Category Archives: Functional programming

Rich Hickey and Brian Beckman: Inside Clojure

Clojure is a modern Lisp that runs on the JVM. In this interview, Clojure’s inventor Rich Hickey is interviewed by software industry veteran Brian Beckman about Clojure’s origins, ideas, and concurrency. This is a great introduction to Clojure, if you are new to it, if you want to understand its origins and design goals.

Rúnar Bjarnason: Functional Programming is Terrible

Functional programming provides programmers with a powerful set of techniques. Over the last few years, many programmers have brought these ideas into their work, in a variety of languages. But functional programming, like all programming techniques, isn’t a perfect solution to all problems. In this talk, Rúnar Bjarnason shows us where some of the problems are with functional programming, and where (and why) the tradeoffs are still useful. His examples are in Scala, but the examples are applicable to many functional languages.

Jessica Kerr: Functional Principles for Object Oriented Development

Functional programming is a well-known programming technique in which we treat functions as first-class objects, and all (or many) objects as immutable. In this talk, Jessica Kerr shows how even when we’re working in an object-oriented language, functional programming techniques can help to make our code tighter, more elegant, and easier to understand — as well as more reliable.

Colton Myers: Decorators —A Powerful Weapon in your Python Arsenal

Python’s decorators allow you to intercept the definition or execution of a function (or class), and to inject or replace the code with your own. This talk, by Colton Myers, introduces this powerful technique, stepping through its syntax and use in different ways. He also demonstrates use of the wrapt library, which makes it easier and cleaner to create decorators.

Ted Neward: Thinking in Scala

Scala is a language, built on the JVM, that has both functional and object-oriented properties. It has become quite popular among many developers who want to keep using the JVM, but want a more modern, expressive language than Java. (Although there are definitely indications that the latest version of Java included some functional aspects in part because of Scala’s influence.) In this talk, Ted Neward describes Scala’s approach to development in terms that can (should!) help Java developers to understand and embrace Scala.

Tom Stuart: Refactoring Ruby with Monads

Many developers have heard of “monads” over the last few years. Besides asking “what is a monad?”, many of these developers have asked, “Why should I care?” The fact that monads are associated with esoteric, hard-to-understand languages (such as Haskell) only makes it less likely that we’ll learn about them. In this talk, Tom Stuart introduces the idea of Monads using Ruby, and then talks about how to use them to improve our Ruby code.  Slides for a version of this talk are available here.

Joe Armstrong: The Mess We’re In (#programming)

Joe Armstrong, one of the inventors of Erlang, discusses the current state of computers and programming languages, and the challenges that we face in trying to use, maintain, and extend them — while making them scalable and fault tolerant. He mentions Erlang, but most of his talk is spent describing the issues facing modern software engineers, with a strong emphasis on the amazing complexity that arises from putting modern computing power on people’s desks.