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

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

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

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