Quines (безполезна програма в програмата)
Quine (от английски quine) - програма, резултатът от която е собствен изходен код. Нека направим резервация веднага: програмите, които имат достъп до файлове или четат от клавиатурата, не са quines. По-сериозно ограничение: програмите, които имат пряк достъп до своя изходен код (посредством езика), също не са quines.
Пример за ОСНОВЕН:
Пример за Форте:
Съществуват ли те?
Въпреки простата формулировка на задачата, след като отделите малко време за нейното решаване, възниква въпросът: има ли изобщо такива програми? Отговор: Да!
Освен това, quine съществува на всеки език, който може да изведе произволен изчисляван низ! Тази идея е описана за първи път от Пол Братли и Джийн Мило. И първият куин е програма, написана на езика Автокод Atlas Хамиш Дюар.
И на съвременни езици?
Паскал:
Така. Уверихме се, че такива програми съществуват, а сега и малко теория за това как да ги направим.
Интуитивно е ясно, че трябва да изведете стойността на променливата, която съхранява частичния програмен код. Защо частично? Тъй като присвояването на самата променлива също трябва да се появи в стойността на променливата. С други думи, стойността на променливата трябва да се копира, което води до безкрайна рекурсия. Неприятен момент.