Immutability

Immutability changes everything

Pat Helland

Når du kan endre og slette data som du vil, er det ditt problem å ta vare på gammel data hvis du skulle ønske det. Det finnes et hva av løsninger. Copy on write. Låsing. RCU. Message passing. Men alt dette er eksempler på at det i bunn og grunn er ditt problem. Det er også ditt problem å sørge for eierskap, og f.eks returnere kopier av objekters interne state slik at omverdenen ikke har anledning til å ødelegge staten din. Lykke til med cache-invalidering dersom du returnerer en intern datastruktur som du har cachet opp på andre vis, og noen utenifra kommer tli å endre på disse dataene.

Disse tingene løses kategorisk dersom du har immutable data. Du kan fritt returnere dataene til omverdenen uten å bekymre deg for at de plutslig endres av noen andre. Du trenger ikke å selv håndtere å ta vare på gammel data - når noen har en referanse til immutable data, kan de holde på den så lenge de vil.

En vanlig form for håndtering av state, er at man har pekere som oppdateres over tid. Når du leser ut en verdi fra en slik peker, får du nåværende immutable verdi tilbake. Senere vil du få en annen nyere immutable verdi tilbake. Dermed oppnår man det beste fra begge verdner. Både med og uten monads, avhengig av programmeringsspråk.

Det største kompromisset med immutability, er at objektorientering blir vanskelig å få til. Det finnes per idag ingen OO-systemer som gir like god immutability som f.eks funksjonell programmering i Scala eller Clojure. Spør du utviklere om OO eller FP er veien å gå, får du 2 ^ antall utviklere svar.

Våre anbefalinger

Simple Made Easy

Det er ikke lett å lage noe enkelt. Rich Hickey snakker om forskjellen på nærliggende (subjektivt lett) og ukomplisert (objektivt enkelt). Og implikasjonene for hvordan du bør tenke rundt software. Se foredraget

Våre bloggposter

Immutability in JavaScript

Introduksjon til immutability, og hvordan jobbe med immutable data i JavaScript Les posten

Immutability in React

Artikkelen bygger videre på artikkelen om immutability i JavaScript, og viser immutable data i sving i en React-applikasjon. Les posten

An immutable operating system

Hjerne-dump av tankene mine om et operativsystem jeg lenge har hatt lyst til å lage (og nå har begynt å hacke på). Til tross for svært lite tabloid stil fikk den en del oppmerksomhet, og endte opp på forsiden til Hacker News. Les posten

Våre presentasjoner

WTF is Datomic?

Introduksjon til hvordan i alle dager en immutable database kan funke, og hvorfor det er bra greier. Se video

You can't change this: Immutability in JavaScript

Hva er immutability? Hva er hensikten? Kan man benytte seg av det i JavaScript? Hvordan? Hvilke konsekvenser har immutability for UI-programmering? Dette foredraget gir deg svar på disse spørsmålene, med mer til. Se video

16 minutter om Pure Functions

Jeg snakker hva, hvorfor og hvordan om Pure Functions, i et utbrudd av entusiasme etter å ha jobbet med en kodebase basert på disse prinsippene et par år. Se video

The imminent revolution of functional append-only databases

I de fleste domener har gammel data høy verdi. Det bør ikke være ditt ansvar å løse dette manuelt med tradisjonelle muterbare databaser. Få en introduksjon til ny grensesprengende database-teknologi som løser dette problemet for deg. Se video