Il codice automodificante è una filosofia di programmazione in cui lo sviluppatore crea un programma in grado di alterare la propria codifica quando viene eseguito. Mentre lo sviluppatore può inserire i parametri per il codice automodificante, di solito cambia e si ottimizza senza interazione. Ci sono alcuni fenomeni informatici che fanno sì che la codifica cambi involontariamente, ma solo il codice auto-modificante intenzionale è veramente considerato auto-modificante. Questo è più comunemente usato dagli sviluppatori per migliorare la loro codifica, perché l’esecuzione della codifica molte volte può migliorare notevolmente il design originale.
L’aspetto più determinante del codice automodificante è la sua capacità di cambiare se stesso in meglio. Questo può essere fatto solo quando il codice è pronto per l’esecuzione e quando si sta preparando per l’esecuzione. Il codice in esecuzione dovrà fare il punto sul software corrente del computer, sullo stato e su altri fattori, quindi questo normalmente aiuta il codice a riconoscere gli errori di elaborazione per correggere al meglio la propria elaborazione.
Gli sviluppatori a volte impostano i parametri per il codice auto-modificante, come correggersi principalmente per le prestazioni, ma il codice normalmente si correggerà da solo senza interazione o richiesta. Oltre all’aumento dell’elaborazione, il codice cancellerà anche il codice non necessario che sta semplicemente trascinando verso il basso il programma e ridurrà la lunghezza del percorso. Allo stesso tempo, gli sviluppatori possono specificare aree che non possono essere modificate, poiché l’alterazione di alcune parti del codice potrebbe causare il malfunzionamento dell’intero programma o il blocco del funzionamento.
Occasionalmente si verifica un fenomeno nel software in cui la codifica cambia senza che lo sviluppatore scriva alcuna istruzione per farlo. Ciò si verifica normalmente con problemi di rotture del software o di buffer e, mentre la codifica viene modificata, non è considerato codice automodificante. Ci sono due ragioni per questo, una è che la modifica non è stata apportata intenzionalmente dallo sviluppatore. La seconda ragione è che la programmazione automodificante ha lo scopo di migliorare la codifica, mentre i problemi di buffer e rot degradano la codifica.
Ci sono molti vantaggi nell’avere un codice auto-modificante, perché funzionerà costantemente per migliorarsi in base allo stato attuale del computer e ad altri fattori interni. Questo viene utilizzato in modo più rigoroso dallo sviluppatore prima che il codice venga venduto o distribuito. Consentendo al codice di essere eseguito costantemente, consente alla programmazione di correggere se stessa e qualsiasi errore o problema causato dallo sviluppatore durante la creazione del codice. Un altro uso per questo è nei computer con memoria limitata, perché questo codice risponderà a una carenza di memoria riducendo le proprie dimensioni.