Dupliceren
Dupliceren
Dupliceren gebeurt vaak impliciet
Veel informatieprocessen hebben impliciet het dupliceren van informatie tot gevolg. Denk bijvoorbeeld aan het uitlezen van een geheugen: het geheugen houdt de oorspronkelijke waarde, hoe vaak dit ook uitgelezen wordt. Het verspreiden van informatie betekent ook dat er kopieën gemaakt worden. Bij een broadcast is dat direct duidelijk. Maar ook als er via het internet een bestand verstuurd wordt, zijn er in alle tussenliggende systemen kopieën van het origineel aanwezig. Meestal zijn deze tijdelijk - maar daar heb je geen zicht op.
In een programma kom je deze impliciete duplicatie tegen als je een waarde van een variabele op verschillende plaatsen gebruikt.
Geen verlies van informatie
Bij dupliceren van informatie vindt er geen verlies plaats: het origineel en de kopie kunnen precies gelijk zijn. (Bij een analoge kopie is dit niet het geval, maar een digitale kopie kun je heel betrouwbaar maken. Ook in het geval van celdeling wordt er een zeer betrouwbare kopie van het origineel gemaakt - met een zeer kleine kans op fouten.)
Reversibel?
Als je een kopie maakt van een origineel, tast dit het origineel niet aan. Dit betekent dat je nooit kunt nagaan of er een kopie gemaakt is, van het origineel, of van een kopie van een kopie... Met andere woorden: als je informatie verspreidt, heb je de verspreiding daarvan niet echt meer in de hand. Als je een kopie gemaakt hebt, kun je dat eigenlijk niet meer ongedaan maken.
Waarom dupliceren?
Meestal is er een fysische reden om te dupliceren:
- lokale kopie werkt sneller (processor cache; lokaal bestand op schijf, i.p.v. via internet)
- je hebt te maken met meerdere actors (agents; processoren) - de capaciteit per actor is beperkt
- parallellisme (zowel van processoren als van mensen of organisaties)
- een enkel origineel is kwetsbaar; je maakt duplicaten voor een redundante representatie
- alleen duplicaten maken is niet voldoende; je moet weten of een kopie beschadigd is
- voor een redundante representatie hoef je niet altijd een volledige kopie te maken
- vb: kanaalcodering, bij transport; RAID voor secondair geheugen
Dupliceren van veranderlijke informatie; redundantie
Als je een kopie maakt van veranderlijke informatie, krijg je een consistentie-probleem.
- cache-coherency
- database consistentie; transacties
- dupliceren vs. "sharing"van gemeenschappelijke data
- DropBox (kopie) vs. Google Docs (sharing)
- Google Docs vs. GitHub (kopie met merge achteraf)
Hoe werk je met twee (of meer) actors aan eenzelfde resultaat?
- samenwerken aan een presentatie, document
- samenwerken aan een programma
- distributed processing; parallellisme