De analogie tussen DNA en computertaal.


Inleiding

De levensvormen die wij kennen in de wereld verschillen in vele opzichten van elkaar. Echter: al die vormen hebben een gemeenschappelijk basismateriaal. Alle levensvormen

  • zijn of bestaan uit cellen;
  • en al die cellen hebben een celkern;
  • en in die kern bevinden zich chromosomen.

De chromosomen zijn opgebouwd uit DNA. Virussen vallen niet onder deze definitie. Virussen bestaan uit genetisch materiaal met een omhulsel van eiwit, maar zijn of hebben geen cel. Virussen worden niet tot de levende organismen gerekend.

Wat is DNA?

DNA of Desoxyribonucleïnezuur  is eenvoudig gezegd de drager van het erfelijk materiaal én het is de drager van stuurinformatie voor celprocessen.

 

DNA is opgebouwd uit twee hele lange ketens van eiwitten die paarsgewijs in een dubbele spiraal tegenover elkaar aan elkaar verbonden zijn. Zo’n dubbele keten zou je kunnen vergelijken met een ritsluiting:  ieder stukje heeft een eigen partner in de andere keten.

Bij de voortplanting wordt van de ritsluiting gebruikt gemaakt: in de mannelijk en vrouwelijke voorplantingscellen zit telkens maar één helft van de DNA-ketens. Als de bevruchting plaatsvindt, dan worden de ketens van de mannelijke en vrouwelijke cel aan elkaar “geritst” en het genetisch materiaal van de ouders wordt gemengd. Dan is er een bevruchte eicel ontstaan, die zich gaat delen: een nieuw leven is aan het ontstaan.

 Al jaren wordt er aan gewerkt om het –menselijk–  erfgoed, het genoom in kaart te brengen. Er wordt gezocht naar de betekenis van de code die het DNA vormt. Af en toe klinken er juichende berichten dat er weer een mijlpaal is bereikt. Toch is er meer onduidelijk dan duidelijk. Daar is een reden voor.

We kijken naar een “taal” die we niet kennen, en die we op die manier ook niet kunnen leren. We kunnen hooguit primitief ontcijferen. Maar daarover later meer.

Computertaal

Toen ik me in 1984 voor computertaal begon te interesseren, leerde ik dat er opdrachten waren om in een bestaand computersysteem waarden te veranderen.

Daarvoor werden de termen Peek en Poke gebruikt: met Peek kon je op een bepaalde plek “kijken”  en met Poke kon je iets veranderen. De Engelse term Poke is voor de ouderen nog herkenbaar: met een pook kon je in een kachel in het vuur morrelen …

De schrijfwijze daarvoor was  Peek “plekje” en Poke “plekje; waarde”.

Het was boeiend om gewoon willekeurig iets te veranderen en de gedachte dat er 65000 plekjes of adressen waren om iets mee te doen was fascinerend.

Sommige van deze adressen bepaalden de kleur van het beeldscherm, andere  produceerden een piepje.  Als er op een bepaalde plek een “verkeerde” waarde gezet werd, dan liep de computer vast. Het bleek niet gemakkelijk om iets zinnigs te doen zonder een goede adreslijst. De “adreslijst” was de documentatie die over die computer bestond.

Degene die de computer had gemaakt, kende de adressen en wist welke functie waar huisde.

DNA en Computergeheugen

Men kan een primitieve vergelijking tussen het computergeheugen en het DNA  maken: immers ook in het DNA liggen functies opgeslagen en ook in het DNA zijn er vaste plekken voor elke functie.

Een vergelijking gaat natuurlijk mank op allerlei vlakken, bijvoorbeeld omdat het DNA een rol speelt bij de vorming van cellen en dat voor “realtime” processen zoals die in een computergeheugen plaatsvinden, in de cel eerst kopieën van stukjes DNA gemaakt worden (RNA), die dan gebruikt worden.

Een ander aspect dat mank gaat is, dat de Commodore 64 uit het eerder genoemde voorbeeld 65.000 adressen had en alleen al het 1e chromosoom van het menselijk DNA 220.000.000 nucleotiden. Dat is 3300 keer zoveel!

Evolutie, geleidelijke verbetering

De evolutietheorie leert dat levensvormen stapje voor stapje zijn veranderd en verbeterd. Deze verbeteringen moeten in het erfelijk materiaal plaatsvinden, omdat immers een verbetering in de soort pas tot uiting kan komen in het nageslacht; als de verbetering reproduceerbaar is geworden.

Veranderingen in het DNA kunnen eigenlijk alleen tot stand komen door wat “mutaties” genoemd worden.  Het is zeer beslist niet zo, dat fysieke veranderingen in een “gerealiseerd lichaam” terug kunnen vloeien in het erfelijk materiaal:  een afgehakte staart die “nuttig” zou blijken, verdwijnt niet vanwege het afhakken uit het erfelijk materiaal.

Wat is een mutatie? In de DNA keten worden soms bij het reproduceren/kopiëren “fouten” gemaakt.  Stel ergens in de DNA keten komt de reeks DAABE voor. Na de kopieerslag staat er nu plotseling  BEEBE. Een dergelijke fout kan leiden tot andere erfelijke eigenschappen.  Echter: bijna geen enkele mutatie, hoe nuttig op zich wellicht ook, kan invloed hebben op een evolutionair proces. Alleen de genen die zich bevinden in de cellen die betrokken zijn bij de voortplanting geven mutaties door. Dat wil dus zeggen: een mutatie in het kader van de evolutie moet zitten in de zaadcel of de eicel op weg naar de bevruchting óf ontstaan in de stamcellen voordat de deling en differentiatie van de cellen op gang komt. De meest confronterende gevolgen van mutaties in cellen vinden we in de ziekte kanker.

Toch zou een mutatie op het juiste moment, in de juiste cel de basis voor een verbetering kunnen zijn.

Een voorbeeld

Hoe zou een dergelijke verbetering van het ontwerp tot stand kunnen komen?

Om daar iets over te zeggen, is het misschien handig om even terug te grijpen op het voorbeeld van de computertaal.

Een programmeur heeft een stukje software geschreven. Deze software wordt via een bewerkingsslag geschikt gemaakt voor het computergeheugen.  Als je een dump van het computergeheugen bekijkt, zoals in dit plaatje, dan kun je je voorstellen dat het niet zo eenvoudig zal zijn om hier zonder kennis van zaken, door “blind” te veranderen, verbeteringen in aan te brengen.

 Wanneer je heel voorzichtig te werk gaat, is het mogelijk om eenvoudige cosmetische veranderingen te realiseren. Het is echter ondoenlijk om op deze manier nieuwe functionaliteit toe te voegen aan een programma.

 Stelt u zich een computerprogramma voor dat is gemaakt om eenvoudig rekenwerk te kunnen uitvoeren: optellen en aftrekken. Hoe waarschijnlijk is het dat een computerprogramma dat geschreven is om optel- en aftreksommen te maken, door blinde aanpassingen in de code geschikt kan worden gemaakt om te vermenigvuldigen te delen of zelfs om wortel te kunnen trekken?

Om de vraag anders te stellen: kunnen willekeurige mutaties nieuwe functionaliteit genereren?

Laten we eens kijken…

Stel dat we een mutatie op ons rekenprogramma uitvoeren en stel dat die mutatie de eerste stap vormt van laten we aannemen de 120 veranderingen die nodig zijn om van een “opteller” een “worteltrekker” te maken, hoe weet ik dan dat dat een goede stap is? Wanneer weet ik, dat een stap tot resultaat zal leiden?

De evolutie gaat er immers van uit dat verbeteringen leiden tot beter functioneren. En een mutatie die geen nuttig effect heeft, is vooralsnog een zinloze en te negeren mutatie. Ik muteer zonder inzicht, dus ik zal een traject van vele mutaties moeten doorlopen alvorens ik kan controleren of er iets nuttigs is ontstaan. Op enig moment zal ik moeten besluiten dat een poging niet gelukt is en terug moeten keren naar het ongemuteerde origineel.

Het proces van verbetering door mutatie zou dus wellicht op deze manier kunnen verlopen, maar de kans hierop is wel bijzonder klein: een vereiste opeenvolging van 120 veranderingen. De lotto is daarmee vergeleken een bijzonder zekere investering!

Als een programmeur op deze manier werkt, zal hij niet veel geld verdienen.

Maar er is ook nog een ander aspect.

Als worteltrekken een volledig nieuwe functie wordt in ons rekenprogramma, dan kunnen we naar hartenlust mutaties uitvoeren, omdat de werking van het optellen niet in het gedrang komt.

Als echter, zoals bij de evolutietheorie gebruikelijk, uitgegaan wordt van een geleidelijke aanpassing van de bestaande functionaliteit, dan wordt het risico van mutaties steeds groter. De kans dat er een mutatie plaatsvindt die het optellen “kapot maakt” is vele malen groter dan de kans dat er een mutatie plaatsvindt, die het optellen in tact laat en tevens bijdraagt aan de ontwikkeling.

Volgens de neodarwinistische opvatting is naast mutatie nog een andere kracht aan het werk in de evolutie, en die kracht wordt “natuurlijke selectie” genoemd.

Natuurlijke selectie werkt tegen mutaties

Die twee, de mutatie en de natuurlijke selectie botsen met elkaar. Een functie die onjuiste antwoorden geeft is zeker geen argument om gewicht in de schaal van de natuurlijke selectie te leggen. Toch zal er geen mutatie mogelijk zijn die in één keer worteltrekken mogelijk maakt. De geleidelijke aanpassing zal dus de natuurlijke selectie als het ware moeten omzeilen, tot er iets nuttigs is ontstaan. Dat is haast een innerlijke tegenspraak.

Machinetaal

De gedachten over de analogie tussen computerprogramma’s en DNA leidden tot nog een andere gedachte.

Hierboven is een stukje van een computerprogramma in een afbeelding getoond. Dat is echter niet de manier waarop de maker van een programma het heeft opgeschreven. Wat in die afbeelding te zien was, is de zogenaamde “machinetaal”, de taal die door de processor “begrepen” wordt.

Er wordt door een programmeur een programmeertaal gebruikt, en die programmeertaal wordt door een zogenaamde compiler omgezet naar de code zoals in de afbeelding getoond.

Wat de programmeur schrijft is –gaande weg de ontwikkeling automatisering- steeds meer gaan lijken op gewone taal zoals mensen spreken. Een compiler is dus een vertaalprogramma, waarmee de door de programmeur bedachte zaken worden samengebald tot machinecode.

 

Die andere gedachte die naar boven kwam drijven was eigenlijk een vraag:

Als DNA de “machinecode” voor het leven op aarde is, wat is dan de programmeertaal waarmee die code is geschreven?

Kijkt u eens naar dit schema over computertaal “van code naar resultaat”
Stap 1
Programmeertaal
In dit geval de programmeertaal “C”, met het programma dat meestal in les 1 voor programmeurs gemaakt wordt. Het programma drukt een tekst af op het beeldscherm: Hello World ;-)
Stap 2
Machinetaal
In dit geval voor een windowsPC
Stap 3
Resultaat
De tekst “Hello World ;-)” wordt afgebeeld
En volgt u de analogie:
Stap 1
Programmeertaal
In dit geval het woord van God, een stukje uit Genesis
En God zeide: Dat de aarde voortbrenge levende wezens naar hun aard, vee en kruipend gedierte en wild gedierte naar hun aard; en het was alzo.
Stap 2
Machinetaal
De chromosomen, gevormd door DNA
Stap 3
Resultaat
De tekst “Hello World ;-)” wordt afgebeeld

DNA, Gods Machinetaal

Het erfelijk materiaal zou je de machinetaal van God kunnen noemen. In Genesis staat een concept van hoe het scheppen in zijn werk ging: God sprak en het was er.

In Vers 24 van Genesis 1  staat:  God zei: ‘De aarde moet allerlei levende wezens voortbrengen: vee, kruipende dieren en wilde dieren.’ En zo gebeurde het.

Gods bedoeling is door Zijn woord volledig tot uitdrukking gekomen. Zoals een programmeur woorden gebruikt om iets tot stand te brengen in een computer, zo heeft ook God woorden gebruikt om de schepping tot stand te brengen. Het DNA is het resultaat van de woorden van God, het is onderdeel van de manier waarop Zijn woorden vorm en vastigheid hebben gekregen.

En zoals een programmeur een stuk geschreven programma kan hergebruiken om een andere variant van een programma te maken, met bijvoorbeeld een uitbreiding richting worteltrekken, zo kan de impact van Gods scheppingswoorden (let op het woord allerlei) de basis vormen voor diversiteit.

In de levensvormen die Hij heeft geschapen is het DNA machinerie die er voor zorgt dat elk organisme en elke soort groeit, zich vormt en zich voort kan planten (wees vruchtbaar en word talrijk).

De macht van Zijn Woord is onbegrijpelijk groot.

Om de levende wezens gebruik te laten maken van licht heeft Hij ze ogen gegeven. De toevoeging “naar hun aard” geeft aan dat Hij daarin gevarieerd heeft.

Van de code die verantwoordelijk is voor de aanwezigheid van de ogen bestaan allerlei varianten: sommige zijn grotendeels overeenkomend andere  weer zeer verschillend.

De adelaar kan kijken met een ontzagwekkende scherpte in een klein blikveld, de kameleon kan zijn beide bolle ogen zó draaien dat hij een blikveld van 360 graden heeft. Honden en katten kunnen geen kleuren zien. Vliegen met hun facetogen zien weliswaar vaag, maar zijn toch moeilijk te pakken te krijgen.

Elke soort naar zijn aard

Er is, zo geloof ik, geen sprake van evolutie van allerlei vormen, die alleen maar tot stand zouden hebben kunnen komen als er ook per soort tientallen miljoenen of miljarden “mislukte trajecten” zouden zijn geweest, maar God heeft binnen strakke grenzen variëteit voorbereid.

De grens tussen soorten wordt onder andere bepaald door “de ritssluiting”. Er vindt geen voortplanting tussen soorten plaats: de rits gaat gewoon niet dicht, tenzij met geweld. Een olifant kan niet gekruist worden met een baviaan en een vlieg niet met een ooievaar. Een kat niet met een hond. Een paard en een ezel wel, maar de nakomelingen zijn onvruchtbaar: de ritsluiting is kapot.

Hoe groot de ruimte voor variëteit binnen de soort is, zien we bijvoorbeeld bij honden, die vooral door gericht fokken zeer uiteenlopende verschijningsvormen kunnen hebben.