<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: DCI arkitekturen</title>
	<atom:link href="http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/</link>
	<description>om livet som .net utvikler</description>
	<lastBuildDate>Wed, 16 May 2012 21:05:45 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Fantom</title>
		<link>http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-113924</link>
		<dc:creator>Fantom</dc:creator>
		<pubDate>Sat, 10 Dec 2011 06:09:31 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-113924</guid>
		<description>[...] å utvide objektene på måter Java/C# ikke kan (for eksempel sånn som jeg presenterte i posten om DCI arkitekturen i mars [...]</description>
		<content:encoded><![CDATA[<p>[...] å utvide objektene på måter Java/C# ikke kan (for eksempel sånn som jeg presenterte i posten om DCI arkitekturen i mars [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bjarte</title>
		<link>http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-87493</link>
		<dc:creator>Bjarte</dc:creator>
		<pubDate>Mon, 29 Mar 2010 11:04:36 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-87493</guid>
		<description>Takk for mye tilbakemelding. Jeg har studert DCI mer siden sist, og har også komment frem til at det er meningen at logikken skal være knyttet til rollene. Fra et DCI synspunkt er det da ikke diskutabelt slik jeg ser det.

Sitat: &quot;Den virkelige verden består bare av deltagere (roller). Algoritmer oppstår når de 
kommuniserer.&quot;

Veldig interessant kommentar, og observasjonen er nok korrekt. Likevel tror jeg at dersom mennesker tenker på algortimer som separate &quot;ting&quot; så kan det være verdifullt å bruke den ideen i koden. DCI-tanken om å få utviklerens (og brukerens) mentale modell inn i koden er årsaken til det. Dette er jo litt DDD tankegang. Allestedsnærverende språk, o.s.v.

Ett av argumentene jeg ser når Trygve og James (later som jeg kjenner de på fornavn) snakker om DCI er at i tidligere modeller var algortimen (&quot;what the system does&quot;) fragmentert på tvers av domene objektene (&quot;what the system is&quot;). For å løse dette lar de ulike objeter spille ulike roller i en gitt kontekst. Algoritmen er nå knyttet til rollen i den gitte kontekten, men er ikke algoritmen som tidligere var fragmentert på tvers av objektene, nå fragmentert på tvers av rollene? Jeg sier ikke at denne tankegangen er korrekt OOD, men det gir kanskje grunnlag til litt småfilosofering :) Å knytte algoritmene til rollene er uansett fremskritt.

Etter å ha undersøkt DCI nærmere ser jeg at det egentlig bare er en reformulering av Udi Dahans &quot;Making roles explicit&quot; presentasjon. Det er i alle fall en del av puslespillet. Hvem som kom først, skal jeg ikke uttale meg om.

Trygves ide om å lage vertøy som støtter DCI utvilkingsmodellen er spennende. Blir interessant å se hvilke verktøy som dukker opp i .NET verden i fremtiden.

Når det gjelder fri vilje, så tror jeg ikke at jeg skal gå inn på det. Det ville blitt for mye tekst for en kommentar. Jeg har ikke landet på &quot;hard determinism&quot;, men jeg er ikke langt unna.</description>
		<content:encoded><![CDATA[<p>Takk for mye tilbakemelding. Jeg har studert DCI mer siden sist, og har også komment frem til at det er meningen at logikken skal være knyttet til rollene. Fra et DCI synspunkt er det da ikke diskutabelt slik jeg ser det.</p>
<p>Sitat: &#8220;Den virkelige verden består bare av deltagere (roller). Algoritmer oppstår når de<br />
kommuniserer.&#8221;</p>
<p>Veldig interessant kommentar, og observasjonen er nok korrekt. Likevel tror jeg at dersom mennesker tenker på algortimer som separate &#8220;ting&#8221; så kan det være verdifullt å bruke den ideen i koden. DCI-tanken om å få utviklerens (og brukerens) mentale modell inn i koden er årsaken til det. Dette er jo litt DDD tankegang. Allestedsnærverende språk, o.s.v.</p>
<p>Ett av argumentene jeg ser når Trygve og James (later som jeg kjenner de på fornavn) snakker om DCI er at i tidligere modeller var algortimen (&#8220;what the system does&#8221;) fragmentert på tvers av domene objektene (&#8220;what the system is&#8221;). For å løse dette lar de ulike objeter spille ulike roller i en gitt kontekst. Algoritmen er nå knyttet til rollen i den gitte kontekten, men er ikke algoritmen som tidligere var fragmentert på tvers av objektene, nå fragmentert på tvers av rollene? Jeg sier ikke at denne tankegangen er korrekt OOD, men det gir kanskje grunnlag til litt småfilosofering :) Å knytte algoritmene til rollene er uansett fremskritt.</p>
<p>Etter å ha undersøkt DCI nærmere ser jeg at det egentlig bare er en reformulering av Udi Dahans &#8220;Making roles explicit&#8221; presentasjon. Det er i alle fall en del av puslespillet. Hvem som kom først, skal jeg ikke uttale meg om.</p>
<p>Trygves ide om å lage vertøy som støtter DCI utvilkingsmodellen er spennende. Blir interessant å se hvilke verktøy som dukker opp i .NET verden i fremtiden.</p>
<p>Når det gjelder fri vilje, så tror jeg ikke at jeg skal gå inn på det. Det ville blitt for mye tekst for en kommentar. Jeg har ikke landet på &#8220;hard determinism&#8221;, men jeg er ikke langt unna.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Torbjørn</title>
		<link>http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-87360</link>
		<dc:creator>Torbjørn</dc:creator>
		<pubDate>Sun, 28 Mar 2010 18:33:29 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-87360</guid>
		<description>... og jeg har flere tanker. La meg forsøke å utdype det jeg sa i forrige svar ...

Fra min anbefaling av Object Thinking: &quot;Objekt-tenking går rett og slett ut på å tenke som et objekt. Tradisjonelle utviklere tenker som datamaskiner. De konsentrerer seg om den tekniske løsningen, om implementasjon.&quot;

Når vi designer algoritmer tenker vi at det finnes en sentral enhet som koordinerer ting. Jeg tror dette er en veldig menneskelig måte å se verden på. Vi tenker f.eks. at vi har en sentral, imperativ hjerne som styrer oss. Virkeligheten er anderledes - hjernen forstås bedre som en stor samling paralelle prosesser (med mye fuzzy logic) som kommuniserer og kommer opp med forslag og forståelse i felleskap.

Vi snakker også om at livet har &lt;b&gt;mening&lt;/b&gt;, og at det er &lt;b&gt;en mening&lt;/b&gt; bak ting. Vi ser på historien som en lineær hendelsesrekke som gir mening, selv om det ofte egentlig preges mer av kaos. Vi dikter opp overnaturlige krefter som står over oss og koordinerer - den ultimate algoritmen. Vi snakker om fri vilje, selv om begrepet ikke gir rasjonell mening.

(Mine innlegg om fri vilje: &lt;a href=&quot;http://blog.kjempekjekt.com/2007/01/08/fri-vilje/&quot; rel=&quot;nofollow&quot;&gt;her&lt;/a&gt;, &lt;a href=&quot;http://blog.kjempekjekt.com/2007/01/18/fri-vilje-ii/&quot; rel=&quot;nofollow&quot;&gt;her&lt;/a&gt; og &lt;a href=&quot;http://blog.kjempekjekt.com/2007/02/22/fri-vilje-iii/&quot; rel=&quot;nofollow&quot;&gt;her&lt;/a&gt;.)

Mennesker setter ting i system for å forsøke å foutse hva som skjer siden. Vi gir systemene vi &quot;ser&quot; navn og tyngde, men systemene eksisterer egentlig ikke på den måten. De er samhandling mellom ulike entiteter. Helheten er større enn delene. På samme måte ønsker jeg å designe software som er større enn objektene det består av. Algoritmen er måten objektene kommuniserer på!</description>
		<content:encoded><![CDATA[<p>&#8230; og jeg har flere tanker. La meg forsøke å utdype det jeg sa i forrige svar &#8230;</p>
<p>Fra min anbefaling av Object Thinking: &#8220;Objekt-tenking går rett og slett ut på å tenke som et objekt. Tradisjonelle utviklere tenker som datamaskiner. De konsentrerer seg om den tekniske løsningen, om implementasjon.&#8221;</p>
<p>Når vi designer algoritmer tenker vi at det finnes en sentral enhet som koordinerer ting. Jeg tror dette er en veldig menneskelig måte å se verden på. Vi tenker f.eks. at vi har en sentral, imperativ hjerne som styrer oss. Virkeligheten er anderledes &#8211; hjernen forstås bedre som en stor samling paralelle prosesser (med mye fuzzy logic) som kommuniserer og kommer opp med forslag og forståelse i felleskap.</p>
<p>Vi snakker også om at livet har <b>mening</b>, og at det er <b>en mening</b> bak ting. Vi ser på historien som en lineær hendelsesrekke som gir mening, selv om det ofte egentlig preges mer av kaos. Vi dikter opp overnaturlige krefter som står over oss og koordinerer &#8211; den ultimate algoritmen. Vi snakker om fri vilje, selv om begrepet ikke gir rasjonell mening.</p>
<p>(Mine innlegg om fri vilje: <a href="http://blog.kjempekjekt.com/2007/01/08/fri-vilje/" rel="nofollow">her</a>, <a href="http://blog.kjempekjekt.com/2007/01/18/fri-vilje-ii/" rel="nofollow">her</a> og <a href="http://blog.kjempekjekt.com/2007/02/22/fri-vilje-iii/" rel="nofollow">her</a>.)</p>
<p>Mennesker setter ting i system for å forsøke å foutse hva som skjer siden. Vi gir systemene vi &#8220;ser&#8221; navn og tyngde, men systemene eksisterer egentlig ikke på den måten. De er samhandling mellom ulike entiteter. Helheten er større enn delene. På samme måte ønsker jeg å designe software som er større enn objektene det består av. Algoritmen er måten objektene kommuniserer på!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Torbjørn</title>
		<link>http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-87359</link>
		<dc:creator>Torbjørn</dc:creator>
		<pubDate>Sun, 28 Mar 2010 18:13:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-87359</guid>
		<description>Bjarte: Slik jeg tolker det skal logikken være i rollene ja, konteksten er miljøet som gjør at rollene kan spille sammen, men deltar ikke aktivt. Om vi sier at rollene som inngår i en transaksjon er en pengekilde og en pengemottager, så sier DCI at er det disse rollene som inneholder logikken nødvendig for å synkronisere og gjennomføre transaksjonen.

Jeg tenker at spørsmålet ditt egentlig dreier seg mer om DDD. Hvordan ser forretningsfolkene i dette domenet på verden? Når de snakker om en transaksjon, fokuserer de da på de to kontoene, eller ser de på selve transaksjonen som en entitet i seg selv? Er det siste mest riktig kan det være naturlig å si at transaksjonen er en egen rolle. Etter at vi har avgjort det kan vi bruke DCI for å implementere, og har da tre roller: MoneySource, MoneyDestination og MoneyTransaction. MoneyTransaction er nå ikke konteksten, men en fullverdig rolle - konteksten kommer i tillegg.

Jeg har aldri jobbet i bank, og vet ikke hva som vil være mest forståelig for en i det domenet, men for meg virker det mest naturlig å &lt;i&gt;ikke&lt;/i&gt; modellere MoneyTransaction som en egen rolle. Den &quot;orginale&quot; OO-ideen var at objekter snakker sammen for å oppnå adferd, mens å lage et transaksjons-objekt for å inneholde transaksjonslogikken egentlig er prosedyre-tankegang i forkledning. Men det finnes mange måter å designe software på, og få fasiter.

Men for å svare helt klart på spørsmålet ditt (i forhold til min forståelse av DCI): Poenget med rollene DCI er å samhandle. Samhandlingen skal ikke implementeres &quot;på utsiden&quot; (i konteksten).

Den virkelige verden består bare av deltagere (roller). Algoritmer oppstår når de kommuniserer. Dette er det &lt;a href=&quot;http://blog.kjempekjekt.com/2009/05/21/a-tenke-objekter/&quot; rel=&quot;nofollow&quot;&gt;Dr. David West kaller Object Thinking&lt;/a&gt; (anbefaler boken). I imperativ programmering fokuserer vi ofte på å implementere algoritmer steg for steg, og dette er altså ikke, i følge en del kloke hoder, god bruk av objektorientering. Fantastisk software oppstår når objekter &quot;snakker sammen&quot; som i den virkelige verden.</description>
		<content:encoded><![CDATA[<p>Bjarte: Slik jeg tolker det skal logikken være i rollene ja, konteksten er miljøet som gjør at rollene kan spille sammen, men deltar ikke aktivt. Om vi sier at rollene som inngår i en transaksjon er en pengekilde og en pengemottager, så sier DCI at er det disse rollene som inneholder logikken nødvendig for å synkronisere og gjennomføre transaksjonen.</p>
<p>Jeg tenker at spørsmålet ditt egentlig dreier seg mer om DDD. Hvordan ser forretningsfolkene i dette domenet på verden? Når de snakker om en transaksjon, fokuserer de da på de to kontoene, eller ser de på selve transaksjonen som en entitet i seg selv? Er det siste mest riktig kan det være naturlig å si at transaksjonen er en egen rolle. Etter at vi har avgjort det kan vi bruke DCI for å implementere, og har da tre roller: MoneySource, MoneyDestination og MoneyTransaction. MoneyTransaction er nå ikke konteksten, men en fullverdig rolle &#8211; konteksten kommer i tillegg.</p>
<p>Jeg har aldri jobbet i bank, og vet ikke hva som vil være mest forståelig for en i det domenet, men for meg virker det mest naturlig å <i>ikke</i> modellere MoneyTransaction som en egen rolle. Den &#8220;orginale&#8221; OO-ideen var at objekter snakker sammen for å oppnå adferd, mens å lage et transaksjons-objekt for å inneholde transaksjonslogikken egentlig er prosedyre-tankegang i forkledning. Men det finnes mange måter å designe software på, og få fasiter.</p>
<p>Men for å svare helt klart på spørsmålet ditt (i forhold til min forståelse av DCI): Poenget med rollene DCI er å samhandle. Samhandlingen skal ikke implementeres &#8220;på utsiden&#8221; (i konteksten).</p>
<p>Den virkelige verden består bare av deltagere (roller). Algoritmer oppstår når de kommuniserer. Dette er det <a href="http://blog.kjempekjekt.com/2009/05/21/a-tenke-objekter/" rel="nofollow">Dr. David West kaller Object Thinking</a> (anbefaler boken). I imperativ programmering fokuserer vi ofte på å implementere algoritmer steg for steg, og dette er altså ikke, i følge en del kloke hoder, god bruk av objektorientering. Fantastisk software oppstår når objekter &#8220;snakker sammen&#8221; som i den virkelige verden.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bjarte</title>
		<link>http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-87180</link>
		<dc:creator>Bjarte</dc:creator>
		<pubDate>Fri, 26 Mar 2010 08:36:52 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-87180</guid>
		<description>@Thomas: I C# får du til DCI ved å bruke intefaces som roller og knytte logikk til disse rollene v.h.a extention methods på interfacene. 

@Torbjørn: Spennende artikkel som satt igang mye lesing her i gården :) Et spørsmål: Er det mening at all logikken skal være knyttet til rollene (MoneySource,MoneyDestination), eller kan man tenke seg at logikken ligger i konteksten (MoneyTransfer) ? 

I ditt eksempel kunne man tenkt seg at &quot;transfer&quot; logikken kunne vært plassert i MoneySource (slik som du gjorde), eller MoneyDestination. Den kunne også vært plassert i MoneyTransfer som da ville hatt transaksjonslogikken o.s.v.

Hva om man hadde tre, fire eller fem roller som skulle spille sammen ? Ville det ikke da vært natulig å ha transaksjonslogikken i konteksten og ikke nøvendigvis i rollene. Rollene er bare deltagere i det store spillet (e.g. algoritmetn) i konteksten.

Hva sier DCI om dette ? Noen tanker ?</description>
		<content:encoded><![CDATA[<p>@Thomas: I C# får du til DCI ved å bruke intefaces som roller og knytte logikk til disse rollene v.h.a extention methods på interfacene. </p>
<p>@Torbjørn: Spennende artikkel som satt igang mye lesing her i gården :) Et spørsmål: Er det mening at all logikken skal være knyttet til rollene (MoneySource,MoneyDestination), eller kan man tenke seg at logikken ligger i konteksten (MoneyTransfer) ? </p>
<p>I ditt eksempel kunne man tenkt seg at &#8220;transfer&#8221; logikken kunne vært plassert i MoneySource (slik som du gjorde), eller MoneyDestination. Den kunne også vært plassert i MoneyTransfer som da ville hatt transaksjonslogikken o.s.v.</p>
<p>Hva om man hadde tre, fire eller fem roller som skulle spille sammen ? Ville det ikke da vært natulig å ha transaksjonslogikken i konteksten og ikke nøvendigvis i rollene. Rollene er bare deltagere i det store spillet (e.g. algoritmetn) i konteksten.</p>
<p>Hva sier DCI om dette ? Noen tanker ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas Ferris Nicolaisen</title>
		<link>http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-87139</link>
		<dc:creator>Thomas Ferris Nicolaisen</dc:creator>
		<pubDate>Thu, 25 Mar 2010 23:29:16 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-87139</guid>
		<description>Du har sikkert sett den, men her er en liten pointer til Rickard Öbergs nylige artikkel om DCI vha Qi4J i Java: http://java.dzone.com/articles/implementing-dci-qi4j 

Så med litt AOP så får man til DCI i Java, og sikkert i C# også :)</description>
		<content:encoded><![CDATA[<p>Du har sikkert sett den, men her er en liten pointer til Rickard Öbergs nylige artikkel om DCI vha Qi4J i Java: <a href="http://java.dzone.com/articles/implementing-dci-qi4j" rel="nofollow">http://java.dzone.com/articles/implementing-dci-qi4j</a> </p>
<p>Så med litt AOP så får man til DCI i Java, og sikkert i C# også :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Torbjørn</title>
		<link>http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-85975</link>
		<dc:creator>Torbjørn</dc:creator>
		<pubDate>Sat, 20 Mar 2010 15:54:55 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-85975</guid>
		<description>Haskell, eller funksjonell programmering generelt, er fasienerende, det må jeg si. Spennende å få helt nye synspunkter og perspektiv på det vi driver med. 

Når det gjelder MANGE klasser.., i utgangspunktet ikke noe problem. Mange klasser er langt å foretrekke fremfor få og store klasser - det hjelper på å holde koblingen mellom ting til et minimum. Forestill deg et system som 10 utviklere har jobbet på i et års tid: Du åpner en vilkårlig fil og finner en klasse på kanskje 10-15 linjer, og på få sekunder skjønner du akkurat hvorfor klassen eksisterer og hvordan den fungerer, uten å måtte se i noen andre filer. Det er målet med god objektorientering! 

Det finnes desverre ikke mange slike, men idealer er bra :)</description>
		<content:encoded><![CDATA[<p>Haskell, eller funksjonell programmering generelt, er fasienerende, det må jeg si. Spennende å få helt nye synspunkter og perspektiv på det vi driver med. </p>
<p>Når det gjelder MANGE klasser.., i utgangspunktet ikke noe problem. Mange klasser er langt å foretrekke fremfor få og store klasser &#8211; det hjelper på å holde koblingen mellom ting til et minimum. Forestill deg et system som 10 utviklere har jobbet på i et års tid: Du åpner en vilkårlig fil og finner en klasse på kanskje 10-15 linjer, og på få sekunder skjønner du akkurat hvorfor klassen eksisterer og hvordan den fungerer, uten å måtte se i noen andre filer. Det er målet med god objektorientering! </p>
<p>Det finnes desverre ikke mange slike, men idealer er bra :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ameth</title>
		<link>http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-85955</link>
		<dc:creator>Ameth</dc:creator>
		<pubDate>Sat, 20 Mar 2010 13:11:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-85955</guid>
		<description>Eeeh, og det forsvant alt etter en &lt; ... Igjen:

Jeg skjønner hvordan objekt-orientering gjør kodebaser mer skalerbare og slikt, ja, og hvis det må bli et par tusen linjer før du kan vise til redusert arbeid skal du få slippe. Jeg bare forestiller meg at hvis du skal ha en klasse til hver rolle blir det en del slike etterhvert.

Her er et nytt eksempel i Haskell som kanskje er litt mer DCI-ete: http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24161#a24161
Forskjellene er at jeg delte opp Balanceable i MoneySource og MoneyDestination og flyttet det over i STM-monaden (Software Transactional Memory) for atomisk oppdatering, beskyttet fra andre tråder og whatnot. STM lar seg dog ikke blande med databasetransaksjoner da disse krever IO, men det er relativt enkelt å legge til &quot;Database.HDBC.withTransaction&quot; på det forrige eksempelet.

Det enkleste Haskell-eksempelet jeg kom på var http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24162#a24162</description>
		<content:encoded><![CDATA[<p>Eeeh, og det forsvant alt etter en &lt; &#8230; Igjen:</p>
<p>Jeg skjønner hvordan objekt-orientering gjør kodebaser mer skalerbare og slikt, ja, og hvis det må bli et par tusen linjer før du kan vise til redusert arbeid skal du få slippe. Jeg bare forestiller meg at hvis du skal ha en klasse til hver rolle blir det en del slike etterhvert.</p>
<p>Her er et nytt eksempel i Haskell som kanskje er litt mer DCI-ete: <a href="http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24161#a24161" rel="nofollow">http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24161#a24161</a><br />
Forskjellene er at jeg delte opp Balanceable i MoneySource og MoneyDestination og flyttet det over i STM-monaden (Software Transactional Memory) for atomisk oppdatering, beskyttet fra andre tråder og whatnot. STM lar seg dog ikke blande med databasetransaksjoner da disse krever IO, men det er relativt enkelt å legge til &#8220;Database.HDBC.withTransaction&#8221; på det forrige eksempelet.</p>
<p>Det enkleste Haskell-eksempelet jeg kom på var <a href="http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24162#a24162" rel="nofollow">http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24162#a24162</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ameth</title>
		<link>http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-85953</link>
		<dc:creator>Ameth</dc:creator>
		<pubDate>Sat, 20 Mar 2010 13:10:01 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-85953</guid>
		<description>Det virker som om bloggen din spiste kommentaren min </description>
		<content:encoded><![CDATA[<p>Det virker som om bloggen din spiste kommentaren min</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Torbjørn</title>
		<link>http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-85921</link>
		<dc:creator>Torbjørn</dc:creator>
		<pubDate>Sat, 20 Mar 2010 07:29:09 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/03/18/dci-arkitekturen/#comment-85921</guid>
		<description>Nok en til Ameth: Siden du tok deg bryet å kode dette i Haskell, og siden du spurte om en enklere løsning i Ruby - la meg demonstrere hvordan det ser ut om jeg stripper bort det som ikke er helt nødvendig, og står igjen med samme funksjonalitet som det du hadde:

http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24155#a24155

Virker det enklere nå?

Her er den enkleste Ruby-løsningen jeg kommer opp med om jeg ikke bruker DCI (eller objektorientering i det hele tatt): http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24158#a24158 Dette er ikke noe jeg vil brukes i en real-life løsning.., men det er i alle fall en del enklere enn Haskell-implementasjonen.</description>
		<content:encoded><![CDATA[<p>Nok en til Ameth: Siden du tok deg bryet å kode dette i Haskell, og siden du spurte om en enklere løsning i Ruby &#8211; la meg demonstrere hvordan det ser ut om jeg stripper bort det som ikke er helt nødvendig, og står igjen med samme funksjonalitet som det du hadde:</p>
<p><a href="http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24155#a24155" rel="nofollow">http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24155#a24155</a></p>
<p>Virker det enklere nå?</p>
<p>Her er den enkleste Ruby-løsningen jeg kommer opp med om jeg ikke bruker DCI (eller objektorientering i det hele tatt): <a href="http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24158#a24158" rel="nofollow">http://hpaste.org/fastcgi/hpaste.fcgi/view?id=24158#a24158</a> Dette er ikke noe jeg vil brukes i en real-life løsning.., men det er i alle fall en del enklere enn Haskell-implementasjonen.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

