Joe Armstrong: Why OO Sucks

Famed programmer Joe Armstrong passed away this weekend. He created the Erlang programming language, based on the actor model, and without using Google, I’m pretty darned sure that Erlang had an impact on Akka, the very cool actor library for Scala. Here’s an article Mr. Armstrong wrote some years ago, titled, Why OO Sucks (OO as in OOP).

Erlang has single-assignment variables

“Erlang has single-assignment variables. As the name suggests, they can be given a value only once. If you try to change the value of a variable once it has been set, you’ll get an error.”

(“Single-assignment variables” are the same as val fields in Scala. Using them can make your code more like algebra.)

This is a page from my book, Functional Programming, Simplified

What is This “Lambda” You Speak Of?

“It takes a wise man to learn from his mistakes, but an even wiser man to learn from others.”

~ Zen Proverb


Once you get into FP, you’ll quickly start hearing the terms “lambda” and “lambda calculus.” The goal of this chapter is to provide background information on where those names come from, and what they mean.

Why we can easily distribute Erlang programs over multicores or networks

“In Erlang it’s OK to mutate state within an individual process but not for one process to tinker with the state of another process ... processes interact by one method, and one method only, by exchanging messages. Processes share no data with other processes. This is the reason why we can easily distribute Erlang programs over multicores or networks.”

Joe Armstrong, in the book Programming Erlang

Joe Armstrong on how you’ll think about Swift

One last quote from Joe Armstrong, which highlights how a person looks at something based on their background: “If you’re coming from the Erlang/Haskell world you’ll think, ‘Swift is verbose and a bit of a mess,’ but if you’re coming from Objective-C you’ll think, ‘Swift is concise and elegant.’”