Selv-modificerende kode

Betegnelse for en programmeringsmetode, hvor koden er i stand til at ændre sig selv. Da den kode, som ligger i en computers arbejdslager, ligner alle andre data og kun adskiller sig fra "rigtige" data ved, at CPU'en udfører dem som instruktioner, er det en naturlig konsekvens, at et program kan betragte sig selv som data. Dette er i øvrigt en konsekvens af von Neumann-arkitekturen, hvor arbejdslageret anvendes til såvel program som data. Et program kan derfor modificere sig selv, f.eks. ved at ændre en additionsinstruktion eller en "no operation" til en hop-instruktion.

Selv-modificerende kode kan i særlige tilfælde give en forbedret ydeevne og reducere pladsbehov, men vil kunne give særdeles store problemer med hensyn til fejlsøgning, vedligeholdelse, sikkerhed og dokumentation. Af disse årsager betragtes selv-modificerende kode i dag som en uskik, der er utilladelig i professionel programudvikling. Selv-modificerende kode støttes normalt ikke af højere programmeringssprog (det er svært at vide, hvad en oversætter genererer) og forhindres af beskyttelsessystemet i visse computeres maskinel (en undtagelse er LISP). Selv-modificerende kode finder dog anvendelse i systemer, der skal sikre mod illegal kopiering, netop fordi det er svært for uvedkommende at gennemskue, hvad koden egentlig laver.

Forfattere: 
Klaus Hansen
Casper Thomsen
Tine Havkrog Jensen