Si nous avons un programme informatique arbitraire qui peut modifier ses instructions, est-il possible de simuler ce programme avec un programme qui ne peut pas modifier ses instructions?
Éditer:
Je suis nouveau sur stackexchange, donc je ne sais pas si je suis autorisé à poser une NOUVELLE question ici, mais voici: Ok donc la preuve que c'est possible est en fait très simple comme vous l'avez montré. Maintenant, je me demande: y a-t-il des problèmes pour lesquels il est plus efficace (et dans quelle mesure) d'utiliser l'algorithme d'auto-modification le plus efficace pour résoudre le problème, par rapport à l'algorithme de non-auto-modification le plus efficace équivalent en entrée-sortie?
Tout modèle de calcul complet de Turing qui n'a pas de code de modification (ou "code") sert de preuve de cette déclaration. Je ne sais pas que des modèles standard (TM, RAM, ...) n'ont modifier le code, donc nous ne pas regarder trop loin.
Pour obtenir un programme dans le langage que vous avez en tête, compilez à partir d'un tel modèle (et assurez-vous que le compilateur n'introduit pas de modification de code).
C'est, bien sûr, un argument existentiel: il existe un programme équivalent. Mais nous savons également qu'il existe des compilateurs récursifs (c'est-à-dire calculables) entre deux langages Turing-complete, c'est ainsi que vous obtenez un programme de la forme (lisez: dans la langue) que vous voulez.
la source
Pour compléter la réponse de David Richerby :
S'il était vrai qu'aucun algorithme auto-modifiable ne peut être modélisé par des algorithmes non auto-modifiables, alors ces algorithmes devraient être exécutés sur quelque chose qui est également auto-modifiable. Il faudrait que ce soit des tortues tout le long.
Comme je l'ai mentionné dans mon commentaire, un algorithme auto-modifiable peut être exécuté sur un processeur qui respecte lui-même les règles d'un algorithme statique (codé dans sa conception) qui lui "indique" comment exécuter les instructions de la machine.
la source
cat
. (Pas de jeu de mots, même si les chats sont des êtres vivants)