You should always strive to make, and make use of, immutable data structures. Even if your domain is inherently mutable (like most domains, really), there are quite a few pitfalls that can give you headaches later on if you also use mutable data structures. Many of them are avoidable simply by making it harder to accidentally modify data.βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβββο»Ώβο»Ώβββββββο»Ώβββο»Ώββββββββο»Ώο»Ώββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβββο»Ώβο»Ώβββββββο»Ώβββο»Ώββββββββο»Ώο»Ώββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»Ώβ
An immutable data structure is one that cannot change. Its values are set in stone. Once created, it is simply not possible to assign a new value to either the object itself, or one of its children. If this thought is completely new to you, it might sound quite strange and limiting. And you would not necessarily be wrong on the limiting part β a key point with immutability is actually to limit what can be done with an object. As it turns out, if you cannot change an object, many sources of bugs also disappears!βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββο»Ώβββο»Ώβββββο»Ώβββββββββββββββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββο»Ώββββο»Ώβββββββββο»Ώβο»Ώβο»Ώβββο»Ώβββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββο»Ώβββο»Ώβββββο»Ώβββββββββββββββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββο»Ώββββο»Ώβββββββββο»Ώβο»Ώβο»Ώβββο»Ώβββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»Ώβ
Reasoningβββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώβββββο»Ώβο»Ώββββο»Ώββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββββββββββο»Ώβββο»Ώββο»Ώβββββββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώβο»Ώβββββο»Ώβββββο»Ώβο»Ώββββο»Ώββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββββββββββο»Ώβββο»Ώββο»Ώβββββββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»Ώβ
Reasoning about programs can be quite hard. And when they grow in size, it becomes even harder. Our minds are limited, and can only keep so much information present at once. This is where immutability becomes quite a valuable tool: by limiting the possible interactions with objects, you no longer have to keep track of all the possible places an object might be mutated. Reasoning about your program is now more about understanding the general flow than keeping track of every tiny bit of your program.βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββββββββββο»Ώβββββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώββββο»Ώββββββο»Ώββββββββο»Ώββββο»Ώβο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββββββββββο»Ώβββββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώββββο»Ώββββββο»Ώββββββββο»Ώββββο»Ώβο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»Ώβ
Data Flowβββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββββββββββο»Ώβββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββο»Ώβββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβο»Ώββββο»Ώββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώβββββββββββο»Ώβββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββο»Ώβββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβο»Ώββββο»Ώββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»Ώβ
I donβt like surprises. Well, there are of course nice surprises, but when I program I like things to behave the way I expect them to. If I pass my data to a function to have some computation performed, I expect that function to play nice and donβt change my data in the process. But if my data structures are mutable, how can I be sure they donβt? Actually, there is nothing more than conventions to stop that from happening. If my data structures are immutable, change is prohibited by the compiler itself. Passing data around in your application is suddenly a completely safe operation, and you no longer have to worry about the implementation of every function you use.βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββββο»Ώβο»Ώβββββββββββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώββββο»Ώββο»Ώβββββββββο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββββο»Ώβο»Ώβββββββββββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβο»Ώββββο»Ώββο»Ώβββββββββο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»Ώβ
Concurrencyβββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββββββο»Ώβββββββο»Ώβββββββββο»Ώβο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββββββο»Ώβο»Ώβββο»Ώβο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββββββο»Ώβββββββο»Ώβββββββββο»Ώβο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββββββο»Ώβο»Ώβββο»Ώβο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»Ώβ
Concurrency is a biggie nowadays, with home computers having more and more CPUS and threads available. Yeah, I know, this was also true 15 years ago. But I needed a way to start this paragraph, so just keep on reading. Concurrency is also inherently hard, as threads might need to synchronize, and sometimes even needs access to shared data to perform their operations. What would happen if you had two threads operating on the same, shared data structure β one reading from it while the other mutates it? Best case scenario, your program blows up and execution stops. Worst case, you end up with the wrong result and have no idea that something is seriously wrong. This is not a new problem β concurrency and all its issues has been discussed by computer scientists since at least the 1960s (βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββββββο»Ώβο»Ώβββο»Ώβββββββο»Ώββββο»Ώββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββββββο»Ώββο»Ώβββββο»Ώββο»Ώββο»Ώβββο»Ώββββο»Ώββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββββββο»Ώβο»Ώβββο»Ώβββββββο»Ώββββο»Ώββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββββββο»Ώββο»Ώβββββο»Ώββο»Ώββο»Ώβββο»Ώββββο»Ώββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»ΏβConcurrenty (computer scienceβββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββββββο»Ώβο»Ώβββο»Ώβββββββο»Ώββββο»Ώββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββο»Ώβββο»Ώβββββο»Ώβο»Ώβββββββββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββββββο»Ώβο»Ώβββο»Ώβββββββο»Ώββββο»Ώββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββο»Ώβββο»Ώβββββο»Ώβο»Ώβββββββββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»Ώβ). There are therefore also multiple ways to deal with concurrency, and prevent concurrency issues. The easiest though, at least in my opinion, is simply making your data structures immutable. When shared resources canβt change, threads canβt cause issues for each other as easily. Again, we have removed possible problems by limiting the number of possible operations.βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββββββο»Ώβο»Ώβββο»Ώβββββββο»Ώββββο»Ώββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββββββββββββββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββββββο»Ώβο»Ώβββο»Ώβββββββο»Ώββββο»Ώββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββββββββββββββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»Ώβ
But what about the real world?βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββββο»Ώββββββββββββο»Ώο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβββο»Ώβββο»Ώββββο»Ώββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββββο»Ώββββββββββββο»Ώο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββο»Ώβββο»Ώβββο»Ώβββββο»Ώβββο»Ώβββο»Ώββββο»Ώββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»Ώβ
As we can see, immutability gives us several desired properties when programming. We all want to get rid of bugs, and we all want to remove sources of confusion. At least I do. We want to spend more time solving the real problems, not the problems we created ourselves two weeks ago. I donβt know about you, but I can tell you that the list of bugs caused by my code is already seriously long, and if something can stop that list from growing at the speed of light Iβm all in!βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββββββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββββββο»Ώββββββββββββο»Ώβο»Ώβββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββββββββο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββββββο»Ώββββββββββββο»Ώβο»Ώβββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»Ώβ
But just making things immutable does not solve the problems by itself. In real life, data change over time, and if our programs canβt do this itβs quite hard to solve real life problems with them. If I make software for cars, having an immutable speed dial does not exactly help the driver. "Yeah, I know it doesnβt change, but at least it doesnβt crash your car!" β good luck selling your car on that premise. Luckily, immutable data structures also have ways of modelling changes. In fact, they often have quite similar APIs as mutable data structures, but with the key difference that they return a new copy with the change included rather than modifying the data in place. With our speed dial example, we would simply receive a new speed dial and swap out the old one when accelerating or braking instead of modifying the current one. Now, this might be where you start thinking "creating new copies all the time.. that sure sounds expensive.". And I wouldnβt blame you for thinking like that, because naively implemented that might actually be true. But let me assure you that correctly implemented, this pattern is no more resource intensive than modifying in place.βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβο»Ώβββββο»Ώβββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββββββο»Ώβο»Ώβο»Ώβββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβο»Ώβββββο»Ώβββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββββββο»Ώβο»Ώβο»Ώβββββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»Ώβ
Again, if this way of thinking is completely new to you, I can imagine you still might be a bit puzzled after reading this. If you are curious how one would actually structure code following an immutable pattern, I recommend picking up and learning a functional programming language. You might just get addicted.βββββο»Ώβο»Ώββββββο»Ώο»Ώβο»Ώβββββββββο»Ώββββββο»Ώββββββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώβββββββο»Ώο»Ώββββββο»Ώββββββββββο»Ώβββββββββββββββο»Ώβββββββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώββββο»Ώο»Ώββο»Ώο»Ώβββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώββββο»Ώο»Ώββββββο»Ώββο»Ώββββββββο»Ώββο»Ώββββο»Ώο»Ώβββββββββββββο»Ώββββο»Ώο»Ώββο»Ώβββο»Ώο»Ώβββββββββο»Ώο»Ώββο»Ώβββο»Ώβββββββο»Ώβο»Ώββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώββο»Ώββο»Ώβο»Ώβββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββο»Ώβββο»Ώββο»Ώβββο»Ώββββββββο»Ώββββββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώβββββββββο»Ώβο»Ώβββο»Ώβο»Ώβββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββο»Ώο»Ώο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώββββο»Ώββο»Ώο»Ώββββββο»Ώβββο»Ώβββο»Ώβββο»Ώβο»Ώβββββο»Ώβο»Ώβββββββββο»Ώβββββββββββο»Ώβββββββββββββββββο»Ώβββο»Ώββο»Ώβββββββο»Ώβββο»Ώο»Ώβββο»Ώβββο»Ώββο»Ώββο»Ώβο»Ώββββββο»Ώββββββο»Ώβββο»Ώββββο»Ώββο»Ώβββββββο»Ώβββββο»Ώββββββο»Ώβββο»Ώββββββο»Ώβββο»Ώβββββββββββββββο»Ώο»Ώββββββββββο»Ώβο»Ώβο»Ώβο»Ώβο»Ώβββο»Ώβββο»Ώβββο»Ώββββο»Ώββο»Ώβββο»Ώβο»Ώβββββο»Ώββββο»Ώββο»Ώβββο»Ώβββββββο»Ώββββο»Ώββο»Ώβββο»Ώββββββββββββο»Ώββο»Ώβο»Ώβββββο»Ώβββο»Ώβββο»Ώβββο»Ώβββββββο»Ώβββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώβββο»Ώβββο»Ώβββββββο»Ώο»Ώββο»Ώββββο»Ώο»Ώβο»Ώβο»Ώβο»Ώβββββββο»Ώβββββββο»Ώβββββββο»Ώο»Ώββββο»Ώββο»Ώο»Ώββο»Ώββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώββββο»Ώβββο»Ώββο»Ώβββο»Ώββββββββο»Ώββββββββο»Ώβββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββββο»Ώββββββββββο»Ώββββββο»Ώββββββββο»Ώββββββο»Ώββββββββο»Ώο»Ώβββο»Ώβββββο»Ώβββββββο»Ώβο»Ώβββββββββο»Ώβο»Ώβββββββββο»Ώβββο»Ώβββββββο»Ώβββββββββο»Ώβο»Ώβββο»Ώβο»Ώβββββββββββββο»Ώβββο»Ώβββββββο»Ώββββββββο»Ώββο»Ώβββββββο»Ώβββο»Ώβββββββο»Ώο»Ώβ
Relevant resources recommended by the author
Woops. An error has occured, and we are not able to find the link!