Vad är en självmodifierande kod?
Självmodifierande kod är en programmeringsfilosofi där utvecklaren skapar ett program som kan ändra sin egen kodning när den körs. Medan utvecklaren kan ange parametrar för den självmodifierande koden, ändras och optimerar den vanligtvis utan interaktion. Det finns några datorfenomen som får kodning att ändra oavsiktligt, men endast avsiktlig självmodifierande kod anses verkligen självmodifierande. Detta används oftast av utvecklare för att förbättra sin kodning, eftersom att köra många gånger många gånger kan förbättra den ursprungliga designen.
Den mest definierande aspekten av självmodifierande kod är dess förmåga att ändra sig själv till det bättre. Detta kan endast göras när kodningen gör sig redo att köra och när den förbereder sig för att köras. Den exekverande koden måste göra en förteckning över datorns nuvarande programvara, tillstånd och andra faktorer, så detta hjälper normalt koden att känna igen behandlingsfel för att bäst korrigera sin egen behandling.
Utvecklare ställer ibland parametrar för självmodifierande kod, som att korrigera sig självt mestadels för prestanda, men koden korrigerar normalt sig själv utan interaktion eller fråga. Bortsett från ökad bearbetning kommer koden också att radera onödigt kod som bara drar ner programmet och det kommer att minska banlängderna. Samtidigt kan utvecklare specificera områden som inte kan ändras, eftersom ändring av vissa delar av koden kan leda till att hela programmet lider eller slutar fungera.
Ett fenomen förekommer ibland i programvara där kodningen ändras utan att utvecklaren skriver in några instruktioner för att göra det. Detta inträffar normalt med programvarutrotning eller buffertproblem, och även om kodningen ändras anses den inte för självmodifierande kod. Det finns två skäl till detta, varav den ena är att förändringen inte avsiktligt görs av utvecklaren. Det andra skälet är att självmodifierande programmering är avsett att förbättra kodningen, medan buffert- och ruttproblem försämrar kodningen.
Det finns många fördelar med att ha självmodifierande kod, eftersom den hela tiden kommer att arbeta för att förbättra sig själv baserat på datorns nuvarande tillstånd och andra interna faktorer. Detta används mest noggrant av utvecklaren innan koden säljs eller distribueras. Genom att låta koden köras kontinuerligt gör det möjligt för programmeringen att fixa sig själv och eventuella fel eller problem som orsakas av utvecklaren under kodningens skapande. En annan användning för detta är på datorer med begränsat minne, eftersom den här koden kommer att svara på en minnesbrist genom att minska sin egen storlek.