24-03-2005 09:32 Программистское
В дневнике ЖЖ-юзера, откуда я беру все эти вопросы, одно время обсуждалась программа, которая печатает на экран себя как нетривиальное достижение программистской мысли.

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

В связи с чем вопрос -- теоретически возможно написать прогу, которая будет печатать себя не из файла? (т.е. она должна будет сохранять свой код в свой же двоичный исполняемый файл, а потом брать его оттуда, либо же себя декомпилировать) Если да, не говорите мне как
Комментарии:
24-03-2005 10:10
Камрад
Да.
24-03-2005 11:01
Камрад
Anafay
В жизни появился смысл
24-03-2005 11:51
Камрад
Update:
Вот тут в умной книжке написано, что под линуксом, если компилировать прогу при помощи gcc с опцией -g, в проге будет кусок под названием .debug, где сидит исходный код. Но это не наш метод.
Haibane
Надо такую написать, которая осознает себя, изучит пару языков программирования (машинный и тот, на котором надо распечатать себя), исследует механизм работы своего машинного кода в памяти, перепишет его на второй язык и выведет на экран! %)
24-03-2005 21:07
Камрад
cpcat
Well, then it'll get a conscience and would be destined to capture the world.
25-03-2005 02:51
Камрад
cpcat
Надо такую написать, которая осознает себя
Противоречит Тьюрингу. То бишь даже теоретически невозможно :D
25-03-2005 03:53
Камрад
Anafay
Well, can't we write something that would look in memory for machine code of itself and then backwardly interpret it?
25-03-2005 06:49
Камрад
Xirax
and then backwardly interpret it
Нет. Не всегда есть debug info, и оптимизация препятствует. Плюс еще препроцессор есть ;)

Не туда смотришь :) Эту задачу я давал в 97м школьникам (маткласс) на пятерку, так что проще надо :D Кроме постановки, давал код на бейсике (три строки), им надо было родить аналог на паскале, куда больше размером.
Закрыть