Kako napraviti računalo koje se samo re-programira?

Kako napraviti računalo koje se samo re-programira?
175
0
0

Ovo pitanje muči mnoge dizajnere kompjutorskih operacijskih sustava i kreatora aplikacija umjetne inteligencije. Kako bi odgovorili mnogi pokušavaju kopirati rješenja iz prirode.

Informatičari i mikrobiolozi polako shvaćaju kako DNA koju ima svako živo biće funkcionira upravo poput kompjutorskih programa.

Svaka se stanica reproducira iz digitalnih uputa pohranjenih u DNA. DNA ima iste značajke kao i moderni digitalni uređaji. Postoji više slojeva digitalnog kodiranja, dekodiranja i pohrane podataka, otkrivanja pogrešaka, ispravljanje i popravak pogrešaka. A osim svega toga DNA ima i dodatnu sposobnost prilagodbe okoline. I to je ono što bi informatičari htjeli kopirati iz prirode.

Kako se živa bića popravljaju i liječe, te se prilagođavaju bilo kojoj situaciji muči mnoge biologe? Računarskim proračunima su shvatili kako se slučajnim mutacijama stanice ne bi mogle nikada same prepraviti, te smišljaju nove teorije u kojima su stanicama dodijelili inteligenciju koja zna odrediti cilj mutacije i svijesno je provesti. Po teoriji iznijetoj u knjizi Evolucija 2.0 , evolucija nisu slučajni događaji. Stanice, po toj teoriji posjeduju evolucijski set alata "Swiss Army Knife" s pet oštrica. Promjene su ciljane, prilagodljive i svjesne. Stanice se sami inženjeriraju, u stvarnom vremenu, satima pa i minutama. Ali ne znaju kako to stanice rade. Kada bi znale odgovor na ovo pitanje tada bi i programeri mogli nešto slično napraviti u razvoju novih aplikacija. Za sada nijedan ljudski softver to ne radi. Dajte softveru milijune šansi i milijarde godina i sve što će učiniti je pad sustava.

Stanice to mogu.

Imaju DNA koji prenosi genetski kod na slijedeće potomke, te RNA koji po uputama DNA poput neke tvornice proizvodi proteine i druge molekule. Između ovih osnovnih makromolekula dijele se zadatci kodiranja, prenošenja poruka i dekodiranja. Ali kako se popravljaju greške, i kako se smišljaju nova antitjela za borbu protiv novih bolesti to biolozima i kemičarima nije ni približno jasno iako je sve zapisano u genetskom kodu. Kod je apsolutno neophodan za replikaciju i za život. Kod je potreban da bi stanice imale upute za izgradnju same sebe; kod je potreban za reprodukciju. Kod koji ima sposobnost ponovnog pisanja ključan je za bilo kakvu prilagodbu na nove okolnosti. Ova, u genetskom kodu zapisana metodologija prilagodbe je nepobitna upravo kod stvaranja antitjela koji imaju zadatak razoriti strane toksine, viruse ili bakterije. Kada neka bakterija ili virus uđu u tijelo njihov cilj je razmnožavanje, a ne ubijanje napadnutog organizma. Pri tome neke molekule u bakteriji ili virusu stvaraju toksine koji štete napadnutom organizmu. Zbog toga napadnute stanice moraju stvoriti antitjela koja razaraju nepoželjne toksine, ali i makromolekule napadača koji stvaraju te toksine. Ako unište samo toksine a ne i makromolekule koji stvaraju te toksine bolest će se odužiti. Zbog toga je važnije stvoriti antitjela koja razaraju molekule koje stvaraju toksine nego razoriti same toksine. A te negativne makromolekule nalaze se na tijelu virusa i bakterija pa njihovo razaranje dovodi i do smrti napadača.

Proces stvaranja antitjela moguć jedino postepenom gradnjom molekule koja je sposobna kemijski razoriti nepoželjnu stranu molekulu. Za ovo stvaranje antitjela nužno je postojanje malih kemijski nestabilnih molekula, slobodnih radikala koje stanica gura prema stranom tijelu. Kad se neki takav slobodni radikal uspije na nekom mjestu povezati sa stranom makromolekulom tada napadnuta stanica na to mjesto gura i druge slobodne radikale i druge molekule koji se kemijski povezuju na raniji slobodni radikal povezan sa stranom makromolekulom. Te se istovremeno nastoji povezati i sa stranom makromolekulom. Takvim rastom nove molekule koja se kemijski istovremeno povezuje i sa stranom molekulom ta strana molekula postaje kemijski sve nestabilnija. Radi toga strana makromolekula se u jednom trenutku može raspasti, a na njenom mjestu ostaje nova molekula koja ju je razorila. Ta nova molekula je novo antitjelo koje tada stanični RNK počinje kopirati u milijunima kopija.

Na sličan način bi i informatičari mogli napraviti i aplikacije za popravljanje drugih aplikacija.

Kada neki kompjutorski program puke kompjutor se gasi i netko ga mora ponovno pokrenuti. Kada neka aplikacija uđe u beskonačnu petlju ona se može beskonačno vrtiti i trošiti vrijeme, energiju i druge resurse dok ju netko ne ugasi.

Ove dvije greške u radu se mogu otkloniti podjelom sistemskog softvera na više nivoa. Niži nivo kontrolira viši nivo. Ako se viši nivo ugasi niži nivo ga može resetirati, a ako viši nivo duže vremena radi nešto bez rezultata niži novo može ugasiti aplikaciju koja se beskorisno vrti. A hoće li se to i dogoditi ovisi o programerima i o tome koliko su dobro ubacili kontrolnih naredbi u same programe.

Ali što kada se to dogodi sa osnovnim softverom u kojem kontrolne naredbe nisu predvidjele sve moguće greške?

Ovaj problem bi se mogao riješiti podjelom fizičkog kompjutora na najmanje tri virtualna kompjutora spojena u jednu mrežu u istom stroju. Svaki od ovih virtualnih kompjutora bi trebao raditi na drugom operativnom sustavu i svaki bi imao svoje zadatke. Ali svaki od njih bi trebao imati i poseban kontrolni podprogram sa zadatkom kontrole rada druga dva virtualna kompjutora, te otkrivati probleme koje ta drva druga virtualna kompjutora imaju. Ako se jedan kompjutor ugasi kontrolni programi u druga dva bi trebali analizirati zašto se to dogodilo, te bi ga trebali ponovno pokrenuti. Ako jedan uđe u neku beskonačnu petlju druga dva bi to trebali otkriti, te ako oba dođu do istog zaključka o razlogu greške trebali bi ga ugasiti i ponovno upaliti. Za ovaj posao te kontrolne aplikacije bi morale imati alate za analizu rada strojnog koda i otkrivanje grešaka, alate za pisanje koda u izvornom programu, te alate za analizu i kontrolu takvog programa, te alate za kompilaciju izvornog koda i dekompilaciju strojnog koda u izvorni program.

Kod navedene dvije osnovne vrste grešaka bitno je da oba druga kompjutora koja otkriju istu grešku te predlože isto riješenje. Tek kada se postigne suglasnost o tome mogli bi poduzeti akciju.

Problem je kada otkriju neku grešku na nekoj aplikaciji koja se ne može popraviti samim gašenjem i paljenjem takve aplikacije. U takvoj situaciji virtualni kompjutor na kojem se vrti takva aplikacija bi takvoj aplikaciji, na sugestiju druga dva virtualna kompjutora trebalo dati niži nivo prioriteta i ovlasti, toj aplikaciji kod čitanja, pisanja, slanja ili brisanja baza podataka. Na ovaj način bi se i ubačeni zlonamjerni softveri poput virusa, crva, trojanaca i sličnih aplikacija pretvorili u bezopasne nametnike koje korisnik može lako otkriti i analizirati za što su namijenjeni.

Istovremeno bi druga dva virtualna kompjutora trebala na izvornom kodu aplikacije kod koje se dogodila greška minimalno promijeniti naredbu koja izaziva problem, te testirati takvu novu verziju te aplikacije. Za to je potrebno točno otkriti na kojoj naredni je program pukao, te promijeniti samo tu naredbu. Ako se radi o funkcionalnoj naredbi i nova naredba mora imati istu funkciju, a ako se radi o kontrolnoj naredbi nju je potrebno ili izmijeniti, ili izbrisati, ili dodati novu kontrolu koja će spriječiti kvar. Testiranjem bi trebalo utvrditi jeli ta nova verzija aplikacije funkcionira, ima li sve funkcije stare verzije, te ima li neke nove funkcije. Nakon toga bi trebalo testirati ponavlja li se i kod ove nove verzije greška koja se pojavila kod stare verzije. Ako test pokaže kako bi se i dalje ponavljala greška narednu treba mijenjati na drugi način. Tek kad sva testiranja pokažu poboljšanje virtualni kompjutor koji je napravio ispravljenu verziju trebao bi drugom kontrolnom virtualnom kompjutoru poslati tu verziju aplikacije na testiranje. Ako i on potvrdi poboljšanje tada bi tu verziju trebalo instalirati na mjesto stare, a staru verziju bi trebalo komprimirati i spremiti kao rezervu, u slučaju da se nova verzija u radu pokaže kao lošija. Ako se nakon nekog vremena to dogodi novu verziju bi trebalo ugasiti, te ponovno instalirati staru verziju.

Na ovaj način bi se podjelom kompjutora na najmanje tri virtualna kompjutora koji se međusobno kontroliraju postigla puno veća sigurnost kompjutora od gašenja, blokiranja i manjih bagova, te obrane od zlonamjernog softvera, ali za stvaranje potpuno novih aplikacija koji rade neke potpuno nove funkcije i dalje će biti potreban inteligentni dizajner koji zna što bi ta nova aplikacija trebala raditi, te kako to napraviti.

 

Ostale moje tehničko tehnološke analize i inovacije mogu se vidjeti u ovoj knjizi.