C/C++

Код , который пишет сам себя

Возможен ли код , который пишет сам себя ?
При условии , что ты написал программу и дал возможность ей добавить новые элементы в себя (или с помощью нейросетей и прочего)
В общем смысле - ИИ. В частном, в смысле вирусов - полиморфный код (не путать с полиморфизмом из программирования).
Айрат Сабитов
Айрат Сабитов
2 621
Лучший ответ
Не во всех языках, но возможен. Называется это квайн и гуглится с полпинка.
В тривиальных случаях - да возможно. Это называется "самомодифицирующийся код". И такой приём программирования был вполне популярен лет 30-40 назад. Но закончилось это появлением полиморфных вирусов...

В сложных случаях подобные системы будут сваливаться в алгоритмическую неразрешимость. Так что практической пользы от этого нет.

В современных процессорах и операционных системах область оперативной памяти, в которую загружается выполняемый код, в процессе выполнения этого кода запрещено модифицировать. Так что в современном программировании самомодифицирующийся код не используется.

P.S. Разумеется, в интерпретируемых языках такое можно провернуть через eval... Но это медленно и печально. И является даже не дырой в безопасности, а широко распахнутыми перед хакерами воротами.
MB
Michael Bobrov
73 643
Konstantin Naumov Достаточно исполнять код через интерпретатор
тогда нах ты нужен при таком коде? скайнет рулит
Ну так есть же самообучаемые. Другое дело, если вы про exe файл, то это другое.
А вот программа может быть записана как бинарный файл или просто в базе данных и потом считывать эти данные и от этого менять поведение.
Ии собрался делать? Нужно учесть все нюансы типа переполнения байта, выхода за пределы памяти, утечки памяти, ограничения размера файла и количества структур. Короче простейшую функцию будет обслуживать огромный косплекс алгоритмов. Генетические алгоритмы в этом отношении попроще, но ждать чего-то вменяемого придется миллионы лет и не факт что за это время очередной BSOD не положит систему.
чисто по факту нейросеть и есть код, который сам себя пишет. А если быть точным - сеть :).
По существу - код может сам себя написать, теоретически возможно