Quines (безполезна програма в програмата)

Quine (от английски quine) - програма, резултатът от която е собствен изходен код. Нека направим резервация веднага: програмите, които имат достъп до файлове или четат от клавиатурата, не са quines. По-сериозно ограничение: програмите, които имат пряк достъп до своя изходен код (посредством езика), също не са quines.

Пример за ОСНОВЕН:

Пример за Форте:

Съществуват ли те?

Въпреки простата формулировка на задачата, след като отделите малко време за нейното решаване, възниква въпросът: има ли изобщо такива програми? Отговор: Да!

Освен това, quine съществува на всеки език, който може да изведе произволен изчисляван низ! Тази идея е описана за първи път от Пол Братли и Джийн Мило. И първият куин е програма, написана на езика Автокод Atlas Хамиш Дюар.

И на съвременни езици?

Паскал:

Така. Уверихме се, че такива програми съществуват, а сега и малко теория за това как да ги направим.

Интуитивно е ясно, че трябва да изведете стойността на променливата, която съхранява частичния програмен код. Защо частично? Тъй като присвояването на самата променлива също трябва да се появи в стойността на променливата. С други думи, стойността на променливата трябва да се копира, което води до безкрайна рекурсия. Неприятен момент.