PurelyFunctional.tv Newsletter 209: Peter Landin and Christopher Alexander
Issue 209 - January 23, 2017
Last week, I offered anyone who buys a membership a personalized Clojure training plan. We'd have a short call, I'd ask you questions, and I'd draft up a plan just for you. It's part promotion and part learning about my customers. Also, limiting it to just those who sign up this month would keep me from having too many calls.
A long-time customer mentioned that he wanted a training plan, too. And I felt bad. I want to reward my existing members as well! I love talking to my members, I was just worried about getting too many calls. But now I'm okay with it.
So I'm opening it up to every member, no matter when you purchased. If you'd like to have a chat and get my recommendations for what you should study based on your goals, you can. But this chat is only good until the end of January. So sign up now if you want in.
Sorry if I made you feel like I didn't appreciate you. You rock.
Please enjoy the issue.
PS Want to get this in your email? Subscribe!
Peter Landin was an important figure in the development of programming language theory. He was instrumental in creating the distinction between syntax and semantics that we know today. Further, he helped show how programming languages could be mapped onto the Lambda Calculus even after they were designed (as opposed to a language like LISP that was designed to be a Lambda Calculus). This of course has had tremendous impact on our understanding of functional programming and compilers. He died in 2009.
Of course, making this profile has really got me thinking about the human side of computer science.
Landin published this gem back in 1966. He analyzes the problem of defining a computer language and keenly dissects the issues with an inspiring clarity. He separates out syntax from the syntax tree, shows how they relate, and asserts the principle that the value of an expression should be based only on its subexpressions. This paper also argues that expression equivalencies should be considered vital. And as a sidenote, he invents significant whitespace. The paper is old, but still contains many insights that are not commonly heard.
Another amazing paper that deals with how to express programs in terms of lambda calculus. There are a ton of great ideas in this paper that are now commonplace. Functions as first-class values, recursion, and how such a lambda calculus can be interpreted with a simple program like Lisp was. Oh, and did he also invent the idea of closures with this paper?
Richard Bornat wrote this obituary shortly after Landin's death in 2009. It tells the story of someone with brave ideas from mathematics who was never satisfied with programming as it was. He didn't publish much, but was often there as part of the discussion that birthed and developed the ideas. A shorter version of this was published in The Guardian.
I've said some negative things about Design Patterns. A very smart person called me on it once, and I couldn't justify my statement. Like with most of my loud mouth remarks, I realized that I had quite a bit of research ahead of me before I could really speak intelligently about the subject. One of the books I decided to read was Christopher Alexander's The Timeless Way of Building.
It's quite a book. It's a treatise on architecture and how we can build buildings that encourage life. I liked it from the first page. It is not technical at all and is very optimistic. It encourages us to tune into subtle judgments in ourselves about harmony, wholeness, and aliveness. It introduces the idea of a Pattern Language that contains life-affirming solutions to tensions where people live. For instance, alcoves allow people to be together while being somewhat apart.
This book has also inspired me to look deeper into Agile, which I have never really had a good experience with. Many of the Agile practices come directly from Alexander's architectural process. I can say that I understand Agile much better after reading this book.
The Origins of Pattern Theory, The Future of the Theory, and the Generation of a Living World YouTube
Christopher Alexander was invited to speak at the OOPSLA (Object-Oriented Programming, Systems, Languages & Applications) conference in 1996. Design Patterns had already swept the industry.
You should watch this talk in its entirety. There is also a transcript. I'd like to highlight one passage:
I understand that the software patterns, insofar as they refer to objects and programs and so on, can make a program better. That isn't the same thing, because in that sentence "better" could mean merely technically efficient, not actually "good." Again, if I'm translating from my experience, I would ask that the use of pattern language in software has the tendency to make the program or the thing that is being created is morally profound---actually has the capacity to play a more significant role in human life. A deeper role in human life. Will it actually make human life better as a result of its injection into a software system?
Reading The Timeless Way of Building, that moral question pervades everything. It's a search for where we went wrong and how we can resurrect that sense of what makes life better that is lacking in modern architecture. And this is lacking in any talk about Design Patterns. I've of course been thinking about this difference, though it is along much different lines from my previous objections to Design Patterns.
I just wanted to remind everyone that there are eight days left to register to win a copy of SICP. I know there are more people out there that want to read this book than actually have read the book. And reading it for free online is not as comfortable as a nice print copy. Enter the giveaway and you get one chance to win. Share out the link and you could get more.
I made a two-hour course on Category Theory. Why? Because I haven't seen anyone teach it the way I like to teach. If you like how I teach, go watch the course. It's free!