Sloupek

Jsou témata, o kterých slyšíme často a pravidelně se jim věnujeme i na stránkách Computerworldu. Když jsem začal ps...


Jsou témata, o kterých slyšíme často a pravidelně se jim věnujeme i na
stránkách Computerworldu. Když jsem začal psát tento Sloupek, chtěl jsem se
právě těmto často přetřásaným oblastem vyhnout, a tak se pro mě stala tabu
např. Windows 2000, Linux i Internet.
Jako velmi zajímavé, jistě (r)evoluční téma, které zatím podle všeho nemělo tu
čest být na stránkách CW představeno, jsem nakonec objevil genetické
programování.
Hned na úvod: nejedná se o genetické inženýrství, modifikované organismy ani
nic podobného, ale o využití evolučních mechanismů při tvorbě a optimalizaci
kódu. V první řadě tedy stanovíte úkol, který musí váš program plnit. Podle
dosažených výsledků se budou vaše programy dělit na více a méně úspěšné (a ty
zdatnější "přežijí" do dalších pokusů). Až dosud nic překvapujícího, teď však
přijde na řadu další princip uplatňující se v průběhu evoluce, kterým je
rodičovství, vyvolávající rekombinaci genů potomci nejsou se svými předky
totožní.
Vezmeme kus kódu z jednoho programu a přidáme k němu jiný kód, tedy programy
vlastně zkřížíme. Samozřejmě to nemůžeme udělat zcela nahodile, ale podle
určitých pravidel, jejichž výsledkem bude např. spustitelnost programu. Aby
křížení mělo rozumný smysl, musíme samozřejmě použít programy relativně podobné.
Kromě rozmnožování pak do systému zabudujeme další hnací motor vývoje, tedy
náhodnou mutaci. Její výsledek bude s velkou pravděpodobností pro program
smrtící (letální), nicméně pouze tímto způsobem můžeme dospět ke zcela nové
funkci.
Podobně jako se organismy adaptují na přírodní prostředí, budou nakonec i vaše
programy posléze přizpůsobeny vámi zadaným podmínkám. A stejně jako docházelo
ke změnám těchto podmínek (ať už se jednalo o pozvolné klimatické změny, nebo o
události kataklyzmatické), i vy můžete najednou změnit pravidla hry, a posunout
tak celý systém zase o kousek dopředu.
Nenechte se mýlit tím, že genetické programování dnes působí ještě jako utopie.
Existuje již celá řada projektů, třebaže se zatím spíše jedná o výzkum než o
konkrétní praktické nasazení.
A jaké bude místo vývojáře v celém procesu? Stane se jakýmsi šlechtitelem, jenž
bude muset pokud možno přesně stanovit podmínky, podle nichž se kusy softwaru
budou dělit na úspěšné a ty, které sítem přežití neprojdou. Měl by také umět
rozpoznat, zda určitá funkce (třebaže v danou chvíli k ničemu nebo dokonce
programu na škodu) by se nemohla naopak stát za jiných podmínek konkurenční
výhodou.
V průběhu miliard let uvařila pozemská evoluce z prapolévky organických látek
neuvěřitelné věci. Pokud by se podařilo nastartovat podobný vývoj i v dnešní
polévce softwarové, mohli bychom se také dostat ke zcela netušeným výsledkům.
Zájemce o celou problematiku lze odkázat např. na stránku
http://www.genetic-programming. org.
0 0480 / pah









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.