3. Concurrency
dreier som om å gjøre flere urelaterte
oppgaver omtrent samtidig
Parallelism
dreier seg om å dele en oppgave i mange
deloppgaver som kan gjøres concurrent
50. Clojures filosofi
Verdier
Immutable/uforanderlig, primitiv eller sammensatt
Identitet
En observert entitet som vi assosierer med en serie
relaterte tilstander (verdier) over tid
Tilstand
Verdien til en identitet i på et gitt tidspunkt
51. Clojures filosofi
Verdier
Immutable/uforanderlig, primitiv eller sammensatt
Identitet
En observert entitet som vi assosierer med en serie
relaterte tilstander (verdier) over tid
Tilstand
Verdien til en identitet i på et gitt tidspunkt
Tid
Relativ før/etter endring av identitet
83. Oppsummering
• Skiller tilstand og identitet
• Ingen mutable tilstand
• Ingenting blokkerer
• Clojure hjelper langt på vei med concurrency
84. Oppsummering
• Skiller tilstand og identitet
• Ingen mutable tilstand
• Ingenting blokkerer
• Clojure hjelper langt på vei med concurrency
• Mindre “accidental complexity”
Korrekthet og ytelse\nPresisere at det vi skal snakke om er Concurrency.\n
\n
Startet mars i 2006.\nFørste versjon 4 May 2009\nFikk veldig mye oppmerksomhet.\n
Alle problemer har en inherent complexity. Dette er det som uansett må til for å løse problemet.\n
Vært programmerer i 7 år, har hatt alle mulige roller som konsulent. De siste 4 åra...\n
Først lisp i 1958 John McCarthy\nIkke objektorientert\nYtelse nesten som Java\n
\n
Cambridge polish notation\n
Cambridge polish notation\n
Cambridge polish notation\n
Cambridge polish notation\n
Cambridge polish notation\n
Cambridge polish notation\n
Cambridge polish notation\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Makroer brukes bl.a. for kontrollstrukturer.\nClojure er et lite språk - For comprehensions\n\nDersom du ikke skjønte dette...\n
Makroer brukes bl.a. for kontrollstrukturer.\nClojure er et lite språk - For comprehensions\n\nDersom du ikke skjønte dette...\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Perception: You don't rub your brain on a value, there is a disconnect. Perception is massively parallel and requires no coordination. Uncoordinated.\n\n Med låsemodell, vil programmet gå tregere jo flere som oppfatter/perceives meg?\n
\n
\n
\n
Epokisk tidsmodell\n
\n
Gjenta egenskaper! Når brukes dette!\n
Gjenta egenskaper! Når brukes dette!\n
Gjenta egenskaper! Når brukes dette!\n
Gjenta egenskaper. Når brukes dette!\nActors vs agents:\nAc -> Sende tilstand til oppførsel\nAg -> Sende oppførsel til tilstand\nSynkron perception\n
Gjenta egenskaper. Når brukes dette!\nActors vs agents:\nAc -> Sende tilstand til oppførsel\nAg -> Sende oppførsel til tilstand\nSynkron perception\n
Gjenta egenskaper. Når brukes dette!\nActors vs agents:\nAc -> Sende tilstand til oppførsel\nAg -> Sende oppførsel til tilstand\nSynkron perception\n
Gjenta egenskaper, når brukes dette\n
Gjenta egenskaper, når brukes dette\n
Gjenta egenskaper, når brukes dette\n
\n
\n
STM var en av hovedårsakene til at Clojure ble såpass fort kjent.\nAnalogi\n
Snakke om .Net prosjektet\n
Atomic - rollback ved transactions ellers vil det committe\nConsistent - constraints i database, set-validator\nIsolated - Snapshot MVCC\nMen... kan gi rollback.\nEget eksempel 10 000 retries.\nEksempel tungt oppdaterer en ref som få konkurrerer om. Så gjør den en lett jobb som oppdaterer en ref som mange konkurrerer om.\n
Atomic - rollback ved transactions ellers vil det committe\nConsistent - constraints i database, set-validator\nIsolated - Snapshot MVCC\nMen... kan gi rollback.\nEget eksempel 10 000 retries.\nEksempel tungt oppdaterer en ref som få konkurrerer om. Så gjør den en lett jobb som oppdaterer en ref som mange konkurrerer om.\n
Atomic - rollback ved transactions ellers vil det committe\nConsistent - constraints i database, set-validator\nIsolated - Snapshot MVCC\nMen... kan gi rollback.\nEget eksempel 10 000 retries.\nEksempel tungt oppdaterer en ref som få konkurrerer om. Så gjør den en lett jobb som oppdaterer en ref som mange konkurrerer om.\n
\n
Når man tenker seg om -> fornuftig måte å modellere tilstand på. Bonusen er jo da at dette fungerer veldig bra i en concurrent setting.\n
Når man tenker seg om -> fornuftig måte å modellere tilstand på. Bonusen er jo da at dette fungerer veldig bra i en concurrent setting.\n