Onko kellään kokemusta tai tietoa sellaisesta kun ohjelmisto muuntelee toimintatapaansa "löytääkseen" paremman(esim. nopeamman) toimintatavan?
Alkeellisempi versio on säätää joitain lukumuuttujia ja vaikeammin toteutettavassa versiossa monimutkaisuus vaihtelee ja metaohjelmisto laittaa toimintoja päälle tai pois, ottaa käyttöön tai poistaa käytöstä.
Kyse voi olla ohjelmankehitystavasta, jossa lopullinen tuote ei sitten sisällä niitä metatoimintoja, tai tuote voi muuntaa kompleksisuuttaan myös normaalin toiminnan aikana.
Alkeellisempi versio on säätää joitain lukumuuttujia ja vaikeammin toteutettavassa versiossa monimutkaisuus vaihtelee ja metaohjelmisto laittaa toimintoja päälle tai pois, ottaa käyttöön tai poistaa käytöstä.
Kyse voi olla ohjelmankehitystavasta, jossa lopullinen tuote ei sitten sisällä niitä metatoimintoja, tai tuote voi muuntaa kompleksisuuttaan myös normaalin toiminnan aikana.
Vastaukset 3
Vanhimmat
Ongelmallista. Tarkoitettiinpa sisäisiä tai ulkoisia toimintoja, tämä on aina tekoälyä.
Yleistä tieteestä -palstalla on ollut puhetta tekoälystä.
http://keskustelu.suomi24.fi/show.fcgi?category=2000000000000020&conference=681&subcat=749
"Geneettinen optimointi" on ilmeisesti helpoin tapa:
http://www.google.fi/search?q=geneettinen optimointi
Eräs esimerkki itseään optimoivasta ohjelmasta on Pythonin Psyco-kirjasto.
Ottamalla kirjaston mukaan omaan ohjelmaansa ja kutsumalla sen profile-funktiota mistä tahansa omastakin ohjelmasta saa itseään muuntelevan.
Psyco seuraa mitä funktioita kutsutaan usein ja kääntää ne muistiin konekielelle. Itseään muuntelevuus tulee esiin siinä, että Psyco voi kääntää konekielelle useita eritavoin optimoituja versioita samasta funktiosta. Optimoinnit riippuvat esimerkiksi siitä, millaisin parametrein funktiota tyypillisesti kutsutaan. Jos esimerkiksi funktion ensimmäisen parametrin arvo on usein sama, voidaan funktiosta kääntää muistiin sellainen versio, josta turhat parametrin arvosta riippuvat ehtolauseet on poistettu. Tällöin funktiota kutsuttaessa suoritetaan vain se koodi, mikä olisi aiemmin suoritettu vasta ehtolauseiden tarkastusten jälkeen. Tietenkin funktiokutsun Psyco tarkastaa tällaisessa tapauksessa, mitä käännettyä versiota funktiosta pitäisi oikeasti kutsua.
http://psyco.sourceforge.net/introduction.html
LLVM, eli Low Level Virtual Machine, tekee tämän, tai sen pitäisi joskus oppia tekemään se tulevassa versiossa. Periaatteessa useita eri kieliä voisi kääntää LLVM:n käskykannalle, jos joku jaksaisi tehdä kääntäjiä. No, onhan niitä pari tehty & tekeillä.
http://llvm.org/