Hva er en selvmodifiserende kode?
Selvmodifiserende kode er en programmeringsfilosofi der utvikleren lager et program som er i stand til å endre sin egen koding når den kjøres. Mens utvikleren kan legge inn parametere for den selvmodifiserende koden, endres og optimaliserer den vanligvis seg selv uten interaksjon. Det er noen datamaskinfenomener som gjør at koding endres utilsiktet, men bare forsettlig selvmodifiserende kode virkelig anses som selvmodifiserende. Dette brukes ofte av utviklere for å forbedre kodingen, fordi det å kjøre kodingen mange ganger kan forbedre den originale designen.
Det mest definerende aspektet ved selvmodifiserende kode er dens evne til å endre seg selv til det bedre. Dette kan bare gjøres når kodingen gjør seg klar til å utføres og når den forbereder seg på å kjøre. Den utførende koden må gjøre rede for datamaskinens nåværende programvare, tilstand og andre faktorer, så dette hjelper normalt koden til å gjenkjenne behandlingsfeil for å best mulig rette behandlingen.
Utviklere setter noen ganger parametere for selvmodifiserende kode, for eksempel å korrigere seg for det meste for ytelse, men koden vil normalt korrigere seg selv uten interaksjon eller spørsmål. Bortsett fra økt behandling, vil koden også slette unødvendig kode som bare drar ned programmet, og den vil redusere banelengdene. Samtidig kan utviklere spesifisere områder som ikke kan endres, fordi å endre noen deler av koden kan føre til at hele programmet lider eller slutter å fungere.
Et fenomen oppstår av og til i programvare der kodingen endres uten at utvikleren skriver inn noen instruksjoner for å gjøre det. Dette skjer normalt med programvarerot eller bufferproblemer, og mens kodingen endres, regnes den ikke som selvmodifiserende kode. Det er to grunner til dette, den ene er at endringen ikke blir gjort med vilje av utvikleren. Den andre grunnen er at selvmodifiserende programmering er ment å forbedre kodingen, mens problemer med buffere og rot ødelegger kodingen.
Det er mange fordeler med å ha selvmodifiserende kode, fordi den hele tiden vil arbeide for å forbedre seg selv basert på datamaskinens nåværende tilstand og andre interne faktorer. Dette brukes strengest av utvikleren før koden selges eller distribueres. Ved å la koden kjøres kontinuerlig, gjør det programmeringen i stand til å fikse seg selv og eventuelle feil eller problemer som er forårsaket av utvikleren under kodingens opprettelse. En annen bruk for dette er på datamaskiner med begrenset minne, fordi denne koden vil svare på en minnemangel ved å redusere sin egen størrelse.