2012-04-28 2 views

ответ

3

Куайн, по существу, это команда, которая выводит свой собственный исходный код. И нет никаких практических применений для этого.

2

Нет, это не полезная вещь, это просто упражнение стиля, что некоторые программисты пользуются ...

1

Куайн полезно в следующих случаях:

  • Programmatic сборник

Код объекта можно сериализовать на диск непосредственно, хотя у него есть печенье и версию предваряется фронт. Но при компиляции схемы во время выполнения вам требуется значение Scheme: например, скомпилированная процедура. По этой причине, чтобы не нарушить абстракции, Коварство определяет поддельный язык в нижней части башни:

Value 

Компиляция значению загружает код объекта в процедуру, и будит спящий великан.

Возможно, эту странность можно объяснить примером: компиляция файлов по умолчанию для компиляции в объектный код, поскольку она создает объектный код, который должен жить в бесплодном мире вне времени исполнения Guile; но компилировать значения по умолчанию для компиляции для оценки, поскольку его продукт возвращается в мир Guile.

Действительно, процесс компиляции может циркулировать через эти разные миры бесконечно, как показано на следующей Куайна:

((lambda (x) ((compile x) x)) '(lambda (x) ((compile x) x))) 
  • проверки безопасности:

В Omniture если злоумышленник должен добавить quine в файл cookie, а затем принудительно использовать eval, используя новое значение для cid

Использование созданного файла gzip (прикрепленный файл - это файл, который распаковывает себя), можно получить tar (1), чтобы вызвать бесконечную цепочку gzip-компрессоров, пока вся память на машине, работающей с tar (1), не была истощенные или другой лимит ресурсов пинки в.

  • Transformation Самого

по существу, его интуитивно (и эффективно) содержанием является то, что программа может использовать свой собственный источник в качестве переменного, то есть добавления к языку программирования способность к pr ogram манипулировать собой (его исходный код) не добавляет его выразительной способности.Таким образом, существует программа, которая сжимает свой собственный листинг; существует один, который печатает свою собственную контрольную сумму MD5 (это гораздо проще, чем найти программу - действительно любой файл - который содержит его контрольную сумму MD5

  • Автономные Двухуровневая архитектура

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

  • самосохранение

TiddlyWiki является необычным примером практического Куайна: именно эта способность создавать копию своего собственного исходного кода, который лежит в основе способности TiddlyWiki, чтобы самостоятельно сохранить изменения в себе ,

  • Доказательств

Если «Куин» означает «автомат, используя свой собственный исходный код в качестве входных данных», затем Гёделя используется Куайн, более или менее, чтобы доказать свою теорему о неполноте, Тьюринг использовал это, чтобы доказать, что проблема с остановкой была невыполнимой, Томпсон использовал ее для того, чтобы показать, что доступ к исходному коду всего вашего программного обеспечения и компиляторов недостаточен для поиска в нем бэкдоров, Стив Рассел примерно изобрел языки функционального программирования, закодировав букву Маккарти в Lisp quine в (709?) сборке, Джон фон Нейман предсказал, что структура то, что самовоспроизводящиеся формы жизни в целом оказались бы quines, и было доказано право с открытием ДНК.

Так что если quines ответственны за существование жизни, теорему неполноты Гёделя, доказательство бессознательности проблемы остановки и существование языков функционального программирования, я выдвигаю их как самую исторически важную категорию программ для всех ,

  • неструктурированной петли не

Мюриэль имеет не традиционные структуры управления. Вместо этого у Muriel есть команда, чтобы заменить текущую запущенную программу Muriel на заданную строку и запустить ее вместо этого. Это приводит к методу программирования, в котором программа должна выполняться сама по себе, чтобы выполнить какой-либо цикл.

Список литературы

Смежные вопросы