Задать вопрос
DollyPapper
@DollyPapper

Возможно ли создать программу путем перебора символов в файле?

Пришла в голову мысль и прошу знающий людей сказать, почему скорее всего(я так подозреваю), нельзя сделать сабж вопроса? Допустим мы написали алгоритм который просто вставляет в файл допустим столько символов, чтобы заполнить 1кк строк. Допустим наш компилятор очень умная вещь, которой не важно как мы соблюдаем грамматику языка. Не ставим скобки, не ставим пробелы, вобщем просто рандомно вставляем любые символы. Так же условимся, что чтобы создать нужную нам программу нужно именно миллион строк. Ну написал какой то программист программу, в ней миллион строк, она компилируется и работает. Мы путем полного перебора хотим полностью повторить эту программу. Так же у нас в распоряжении все компьютеры мира, чтобы каждый из них параллельно генерировал и компилировал эту программу. Возможно ли за конечное время, что программа будет создана?
  • Вопрос задан
  • 622 просмотра
Подписаться 3 Средний 4 комментария
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 7
@Caitiff_One
Обычный человек, начинающий разработчик:)
Определенно возможно, а точнее вероятность отлична от нуля, хоть и мала. Но ничто не помешает "слепому случаю" устроить всё так, что такой набор символов будет сгенерирован в первую же итерацию.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
возможно, разумеется

см.
Ответ написан
Комментировать
@asd111
Можно даже посчитать какова вероятность.
У нас 1 млн строк, в каждой строке пусть по 80 символов итого 80 млн символов на файл.
Допустим мы используем 60 символов из тех что есть на клавиатуре. Т.е. в каждом месте файла может быть один из 60 символов с клавиатуры.
Получим количество возможных вариантов файлов 60 в степени 80 млн.
Т.е. вероятность написать таким способом нужную программу равна 1 / 60 в степени 80 млн.
Ответ написан
Комментировать
Griboks
@Griboks
Возможно, но долго. Данный подход является одним из методов создания искусственного интеллекта - искусственная эволюция.
Ответ написан
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Упоминая Теорему о бесконечных обезьянах, большинство совершенно не способно представить себе неограниченное время.

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

По вашему вопросу - программу, которая запускается и завершается - скорее всего можно случайным образом написать за минуту. Программу, которая выполняет некий алгоритм действий - зависит от размера программы - чем больше размер, тем геометрически больше времени понадобится.
Ответ написан
Комментировать
@DmitryUlitin
Виктор Пелевин в своем романе "IPhuck 10" раскрыл тему.
Он назвал это рандомным кодом (RCP – "random code programming").
Вот цитата из книги: "RCP – это близкое по идеологии, но совершенно иное по целям и результатам направление в программировании. Здесь мы генерируем не случайные комбинации входных данных, а случайные последовательности самого программного кода. А потом прикладываем к этому коду принципы "exhaustive testing".
Это как с обезьяной, способной за миллион лет настучать на машинке "Войну и мир" – только в случае с RCP мы отводим миллиард лет, делаем обезьяне серьезный оверклок воткнутым в задницу высоковольтным проводом – и ожидаем, что она напишет нам не "Войну и мир", а программу, способную написать "Войну и мир".
Качество задачи меняется – поэтому нужна очень высокая производительность и большие объемы памяти. Сегодня с этим проблем нет: мощности избыточны. Достаточно задать требования к выходным секвенциям, и мы рано или поздно получим программу, которая будет делать то, что нам угодно..."
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы