The world may be mutable but people have been using the notion of immutability to build reliable systems for a long time.
Global mutable state is one of the biggest drivers of complexity in software systems. We tackle a definition and how to reduce our reliance on it.
I break down two perspectives (their features and their methodologies) for the three most common paradigms. I also explore why paradigms are so easy to argue about, and what we can do about it.
Functional programmers often use the term "reason about code". It's not very well defined generally, but I use it myself to refer to our ability to use our real-world intuition in our own code.
Immutable data appear to contradict our observations of the real world. Things in the world are mutable, so shouldn't our data be mutable, too? It may be counterintuitive, but immutable data does a better job of modeling many of our expectations of the real world.
We all love programming for different reasons. Why do you program?
You actually need to learn nothing. But it's more complicated than that. This article will show you what can set you apart.
We address the question directly, but then look deeper to the beliefs behind the question.
We explore when it is safe to extract out an abstraction and when you need to go deeper and rebuild it from scratch.
We explore some of the background behind the meaning of the word abstraction and why we do it.
One of the great things about very robust and powerful abstractions is that they can give you tremendous leverage. The leverage can be so great that you can build something much greater than the sum of its parts. However, I worry that the web is an end to this kind of abstraction. I'd like to explore why that is and what we can do about it.
How a programming language can be an idea.