Clanek predstavuje zajimavou uvahu, ale (jak autor sam zminil) pouze z hlavy "svatecniho programatora". Jsem sice studentem, ale i presto mne programovani zivi a troufam si tvrdit, ze technika genetickeho programovani je tak trochu zcestna. Pokud vyvstane nejaky problem (potrebuji program na prohlizeni webu), presne je specifikovan vysledek a jakozto programator se mohu vydat tou nejkratsi cestou k jeho splneni. Proc mutovat programy, kdyz vim, jak ma vysledek vypadat a soucasne presne vim, jak toho dosahnout? Prijde mi to jako mit recept na bajecny kolac, ale snazit se upeci vysledny produkt experimentovanim. Proc proboha? Kromtoho, ktery programator ma chut (nadsenci mozna ano) a hlavne cas psat programy-zdroje mutace + program, ktery bude mutace provadet, jen proto, aby vznikl program uplne jiny? Ja tedy ne... :-)
myslet si, ze vim nejlepe, jak neceho dosahnout, je docela prehnane sebevedome... ostatne, je docela velka skupina problemu, kde docela presne vime, ze nevime, jak je resit - napr. spolehlive rozpoznavani mluvene reci, analyza bezne mluveneho (a nikoliv programovaciho) jazyka, apod. Pokud v tehle pripadech selhala napr. UI na bazi neuronovych siti, proc nezkusit geneticke programovani ?
spousta problemu realneho zivota neni jednoduse algoritmizovatelnych, a pycha programatoru casto neni adekvatni tomu, co doopravdy dokazi predvest...
Existuje druh problemu, ktere lze resit jedine geneticky, jde o typ uloh kdy "zprvu nic nevime", teprve pak se jaksi "samo" zacne objevovat reseni.
To skutecne odpovida biologicke evoluci, nebot v jejim prubehu vznikaly uplne nove biologicke druhy.
Vyvoj napriklad technickych objevu ma mozna take podobny charakter - postupnym "tapanim" se odkryva fungujici reseni.
Naproti tomu webovy prohlizec lze evidentne naprogramovat snaze "klasicky" - zname pozadavky a cestu, jak je realizovat. Stoji ovsem za uvahu, zdali nemame pri programovani toho weboveho prohlizece tak jasno prave diky tomu, ze (technicka) "evoluce" jiz nasla dostatek vhodnych reseni.
Aneb otazka zni: lze vubec ze sveta "tezit" reseni jinak, nez geneticky? Naprogramoval byste webovy prohlizec aniz byste nejaky nekdy videl? Aniz byste vedel, co je programovaci jazyk?
Vse i my sami jsme soucasti velke, pozoruhodne evoluce, jejiz rozsah nam neni dano rozumem uchopit... Vzrusujici predstava, ze?
S podivem, některé věci i v osvědčených produktech se řeší genetickými algoritmy, protože je to výhodnější než tradiční postupy, nebo dokonce nikdo neví, jak na to. Příkladem budiž způsob, jakým se spojují tabulky v PostgreSQL. Při spojování většího počtu tabulek PostgreSQL prostě zkouší a zkouší...
Takovy drobny dodatek - GA (geneticky algoritmus) je neco trochu jineho, nez GP (gen. programovani), protoze GP generuje primo programy resici ulohu, kdezto GA hleda optimalni reseni, napr. bod, kde funkce nabyva maxima.
Jinak k tomu prohlizeci - samozrejme by to slo udelat, ale problem je v ohodnoceni kvality programu. GA i GP pouzivaji ohodnocovaci funkci, ktera priradi kazdemu retezci (nebo programku) pocet bodu rikajici, jak je to kvalitni. Zkuste napsat program, ktery ohodnoti kvalitu weboveho prohlizece ...
Zatimco pro reseni optima s hodne slozitymi funkcemi to tezko udelate jinak. Zvlast, kdyz umime spocist hodnotu funkce v urcitem bode, ale nezname treba vsechny derivace a jine dodatecne informace potrebne pro jine postupy. V tomle jsou GA i GP strasne skromne.
Ja treba pouzivam GA k uceni RRWW automatu podle prikladu spravnych a nespravnych slov (RRWW automaty jsou automaty prijmajici neco vic nez kontextove jazyky, zalezi na typu automatu)
Necht si autor predchoziho prispevku uvedomi, ze on sam je vysledkem genetickeho algoritmu beziciho jiz mnoho generaci na opravdu velke populaci. To ze je schopen naprogramovat webovy prohlizec je velmi chvalihodne.
Tam kde presne vim, jak dosahnout vysledku je naprosto neopodstatnene nasazovat GA, to je pravda, ale to snad autor clanku ani nedela, nebo snad ano ?
Preju Vam hodne stesti pri psani www prohlizecu a doufejne, ze Vas to uzivi az do konce zivota ;-)
Good luck
HK
Dobre, dobre, omlouvam se, nemyslel jsem to presne tak, jak jsem napsal :-)
Zcestneho neni samozrejme nic, jen jsem chtel poukazat na to, ze pro drtivou vetsinu programovacich uloh je tato technika zbytecna.
SpamAssassin je prave podle meho (doufam, ze mam spravne informace) spatnym prikladem. Pokud jsou spammeri cim dal tim "chytrejsi" a SpamAssassin dokaze inteligentne menit filtry posty, aby tuto "chytrost" kompenzoval, nejedna se o geneticke programovani. Na zmenu filtru je sice potreba jista davka umele inteligence, ale vse je pevne napsano uvnitr programu. SpamAssassin sam sebe nemeni nebo nevytvari jine mutace sama sebe, ktere by byly zalozeny na jinem zdrojovem kodu (tedy obsahujici modifikovane algoritmy). Doufam, ze se nemylim... Pokud ano, omlouvam se a prosim neflamovat... :-)