Digital Evolution

Digitális evolúció

Minden kutatás, keresés, alkotás csak akkor indulhat be, ha már elõzetesen - legyen az bármilyen homályos - van valamilyen képünk az elérni kívánt állapotról, dologról. A digitális evolúció tanulmányozása bõvelkedik a gyengén körvonalazott, vagy teljesen világos csak éppen távoli célokban. Ezeknek a ködképeknek a felsorolása fogja meghatározni, világosabbá tenni elsõ nekifutásra a digitális evolúció fogalmát.
 

  1. Robusztus, alkalmazkodóképes, hibatûrõ programok fejlesztése. Manapság az informatika mindent átfogó szédületes tempójú fejlõdésének lehetünk tanúi. Kérdéses azonban, hogy a fejlõdés jelenlegi irányai megfelelõek lesznek a jövõben is, hiszen az informatikai eszközök fejlõdésével egy ütemben, sõt néha még gyorsabban növekednek az ezektõl eszközöktõl megkövetelt igények. A hardver eszközök nemsokára elérhetik a fizikai korlátokat. Kevésbé feltûnõ probléma a  programok jövõje. A mai szoftverrendszerek forráskódjai nagy sebességgel növekednek, egy operációs rendszer programsorok millióiból áll. Egy idõ után nehezen kezelhetõ bonyolultságot érhetnek el a programok. Instabil mûködés, nehéz hibakeresés, törékenység, erõs környezetfüggõség a jellemzõi a mammutnagyságú rendszereknek. A szoftverfejlesztés elmélete már az informatika kezdete óta ismeri ezt a problémát. A különbözõ programfejlesztési módszertanok próbálnak választ adni arra a kérdésre, hogy miként tudja az emberi elme kezelhetõvé tenni a bonyolultságot. A kisebb nagyobb sikerek ellenére az emberalkotta rendszerek nem  képesek azt a mûködési stabilitást produkálni, amire a Földön kifejlõdött élõvilág képes. A változatos élõvilág hosszú évmilliók alatt fejlõdött ki, s képes volt reagálni drasztikus környezeti változásokra is. Nem véletlen tehát, hogy az informatika egyre többször használ fel biológiától kölcsönzött ötleket, a hardver és szoftvertechnológia egyaránt. Új irány lehet a szoftverfejlesztésben, ha a programokat nem ember írja, hanem egy mesterséges környezetben hozza létre azt az evolúció. Ezek a programok digitális élõlényekként foghatók fel, amiknek meg kell küzdeniük az erõforrásokért (memória, processzoridõ), gondoskodniuk kell önmaguk replikálásáról (az önreplikáció során mutációk történhetnek, melyek hasznosak lehetnek a program számára), s a környezetük által definiált feladatok megoldásával elõnyre kell szert tenniük más programokkal szemben. Ezeknek a feladatoknak a megoldására kifejlõdött, optimalizált programrészletek késõbb felhasználhatók lehetnek más informatikai rendszerekben. A közeli jövõben ezek természetesen csak rövid gépi kódú részletek lehetnek.
  2. Az evolúció mûködési elveinek alaposabb megismerése. Az evolúció tanulmányozásában az egyik legfõbb problémát az jelent, hogy ez a folyamat emberi léptékkel mért idõ alatt nem megfigyelhetõ, hiszen az evolúció csak évmilliók alatt hoz létre észrevehetõ változásokat. A másik probléma is  a megfigyelhetõség fogyatékosságából származik. Egy biológiai rendszer sohasem tanulmányozható a rendszerbe történõ beavatkozás nélkül. Ezekre a problémákra jelenthetnek megoldást a folyamatosan növekvõ teljesítménnyel bíró digitális számítógépek.   A bennük létrehozott evolúciós folyamatnak a sebessége csak a számítógép gyorsaságától  függ. Emellett a folyamat bármikor leállítható, kimerevíthetõ bármely pillanat anélkül, hogy az bármiféle csekély hatással lenne a populáció fejlõdésére. Egy fontos különbséget  kell itt észrevenni: a digitális közegben létrehozott evolúció nem modellezi a földi élõvilág fejlõdését. Az önmagukat replikálni képes programok nem élõlények absztrakt modelljei, hanem olyan entitások, akik képesek saját környezetükben fejlõdni és szaporodni. A földi élõvilág egy megvalósulása az életnek a fizikai világban, míg a digitális élõlények populációja az élet egy másik megvalósulását képviselik egy teljesen eltérõ logikai közegben. Ezen különbségtétel mögött az az erõs feltételezés áll, miszerint az élet jelenségei függetlenek a megvalósulás közegétõl,  az élet kibontakozásának mûködési elvei általánosabb szinten találhatók. Ha ez a feltételezés nem helytálló, akkor a digitális evolúció tanulmányozása szükségszerûen tévút.
  3. Válaszkeresés a "Lehetséges-e egyáltalán, hogy a változatos élõvilágot és minket embereket egyszerû mûködésû folyamat hozzon létre?" - típusú kérdésekre. Az ilyen horderejû kérdések megválaszolását csak nagyon hosszadalmas munka után lehet értelmesen tárgyalni, ha egyáltalán a tudományos kutatás keretein belül feltehetõk ezek a kérdések.
Digitális élõlények

Mik a digitális élõlények? A Physis rendszerben ezek egyszerû programok, azaz nem mások mint utasítások sorozata. Az utasítások egyszerûen egész számokkal vannak reprezentálva. Az egyes utasításokhoz rendelhetünk ugyan emlékeztetõ szócskákat (mnemonik) az assembly programozási nyelvekhez hasonlóan, de ez csak az ember számára teszi érthetõbbé a programot, a gépnek nincs szüksége rá.
A programot legkönnyebben körkörös szalagként képzelhetjük el.  A szalag cellákra van osztva. Minden cellában egy egész szám található, amely egy értelmes utasításnak felel meg. A valóságban a gép memóriájában egy egész típusú egydimenziós tömbként tárolódik.

Milyen gépen futnak ezek a programok? Jelenleg nem létezik olyan hardver, amely képes lenne a speciális utasításokból álló digitális élõlények futtatására, ezért végrehajtásukhoz szoftveresen szimulált processzorokra, virtuális gépekre van szükségünk. A virtuális gép sorban olvassa és végrehajtja az utasításokat a szalagról. Egy utasítás végrejatása jelenthet egy számítást, vagy egyszerûen csak a processzor állapotváltozását. Egy élõ digitális élõlény ily módon egy utasításszalag és azt végrehajtó processzor együttese.

Mit csinálnak ezek a programok? A legfontosabb feladat, amit mindenképpen végre kell hajtaniuk: önmaguk lemásolása. Ez egy látszólag egyszerû feladat, hiszen csak a szalagon lévõ egész számokat kell átmásolni a szalag más celláiba. Ehhez azonban ki kell számítani a pontos méretét a másolandó területnek (a digitális élõlény mérete), le kell foglalni az új memóriaterületet, s végre kell hajtani a másolást. Ha a másolás sikeres, akkor  egy új digitális élõlény jön létre, amely aztán elválva szülõjétõl elkezdi önállóan végrehajtani saját kódját. Ez hasonlít a sejtosztódás folyamatához. Ezeket a "biológiai" mûveleteket az utasításkészletnek támogatnia kell.
Az önreplikálás mellett - mintegy mellékesen - a digitális élõlények végrehajthatnak apróbb feladatokat. (alapmûveletek egész számokkal, logikai számítások...). A bemenõ adatokat mesterséges környezetükbõl olvassák be, s a számítás eredményét is oda írják vissza. Ezeknek a természetben az anyagcsere folyamatok felelnek meg. Ha egy digitális élõlény gyorsan és helyesen végzi el ezeket a feladatokat akkor több processzoridõt kap a saját programjának futtatására, s ezáltal hamarabb képes utódot létrehozni. A processzoridõ lehetne a napfény analógiája a digitális élettérben. A környezet által meghatározott feladatok végrehajtására kifejlõdött kódrészleteket késõbb kimetszhetjük a digitális élõlénybõl s azt felhasználhatjuk informatikai rendszerekben.
Egy digitális élõlény futtathatja valamelyik szomszédjának is a kódját, így neki nem kell tartalmazni a felhasznált kódrészletet, ezáltal kódja rövidebb lesz s gyorsabban tud szaporodni. Ez a parazitizmus jelensége. A megfelelõen tervezett utasításkészlet lehetõséget adhat az élõlények közötti interakciók sokféleségének megjelenésére.

Hogyan képesek fejlõdni a digitális élõlények? Az önreplikáció során az átmásolt utasítások sérülhetnek. Egy utasítás megvátozhat, eltûnhet vagy megjelenhet az utód kódjában. Ezek a mutációk. (A mutációk mértékét természetesen a mesterséges környezet szabályozza.) A mutációk többsége lehet káros, s az utód elveszti szaporodóképességét, de némelyikük lehet hasznos s ennek eredményeképpen az utód gyorsabban tud szaporodni, s így képes elterjedni az élettérben.
A Physis rendszer legfõbb célja, hogy megtalálja az utasításkészletek azon jellemzõit, melyek lehetõvé teszik, hogy a véletlen változások a lehetõ legkevesebb kárt okozzák az élõlényben s így a hasznos mutációk révén az élplények gyors és korlátok nélküli fejlõdésre legyenek képesek. Röviden: azt a azámítógépes nyelvet keressük, amely evolválható.
 
 

Helsinki 2000. február 27.