Anatoly Vorobey (avva) wrote,
Anatoly Vorobey
avva

Category:

квайны

Кстати, каждому программисту, который этого еще не сделал в своей жизни, стоит написать квайн. Квайн (quine) - это программа, которая не получает никаких входных данных, и печатает свой собственный исходный текст. У него такое смешное название в честь философа по фамилии Quine.

На любом современном языке программирования можно написать квайн, причем "честный". Под честным я имею в виду, что программа не пытается найти свой собственный исходный текст на диске и прочитать из файла, или скажем пользуется тем, что "система" дает ей доступ к исходному тексту. Например, в языке Basic можно написать программу "10 LIST" и это будет квайн, потому что LIST дает команду напечатать исходный код - но это "нечестно". Квайн на джаваскрипте в одной из предыдущих записей тоже был "нечестным", но очень уж элегантным. Честный квайн вообще ниоткуда не берет свой исходный код, кроме строк, которые написаны в самом тексте программы.

Когда пытаешься написать квайн, вначале это кажется невозможным, как вытащить себя за волосы из болота. Но потом пробуешь так-сяк, то-это, и обычно в конце концов получается. Иногда под конец уже почти все совпадает, но какие-то кавычки пропущены или еще какая мелочь, и с этим возишься, но все проблемы можно преодолеть. Когда получается, это очень крутое ощущение, как мини-озарение такое. Мне кажется, что в конечном итоге это не супер глубокая вещь с идейной точки зрения, скорее такой забавный трюк. Но очень приятно, когда смог. Мне кажется, что каждому программисту стоит постараться пройти этот мини-квест. А если никак, ну никак не получится, не расстраиваться, найти онлайн и почитать, как это сделать. Только все-таки постарайтесь как следует сами раньше, это стоит того.

Я вспомнил про квайны недавно в связи с математической логикой, там есть похожие вещи. И решил написать квайн на питоне, чтобы вспомнить, как это. Не сразу получилось, но все-таки написал, и когда проверил, что выдает ровно свой исходник, с точностью до символа, как-то даже обрадовался и настроение повысилось, ходил потом с улыбкой. Хоть и помнил в принципе, как к этому подойти, а все равно. Мелочь, а приятно.
Tags: программирование
Subscribe

  • поддавки

    Понравилась шахматная(?) задачка от Евгения Поникарова. Автор задачи John Beasley. Белые начинают и выигрывают в поддавки. Напомню правила игры в…

  • спускались в шахты с нелитературными целями

    Лет шесть или семь не видел имя Дивова (российский фантаст) и почти забыл о его существовании. А тут. А тут, оказывается, такое движение, такая…

  • о пузырях земли

    В одном сообществе в ФБ задали вопрос. В шекспировском "Макбете" есть сцена, когда ведьмы исчезают, и Банко говорит (в переводе Пастернака):…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 32 comments

  • поддавки

    Понравилась шахматная(?) задачка от Евгения Поникарова. Автор задачи John Beasley. Белые начинают и выигрывают в поддавки. Напомню правила игры в…

  • спускались в шахты с нелитературными целями

    Лет шесть или семь не видел имя Дивова (российский фантаст) и почти забыл о его существовании. А тут. А тут, оказывается, такое движение, такая…

  • о пузырях земли

    В одном сообществе в ФБ задали вопрос. В шекспировском "Макбете" есть сцена, когда ведьмы исчезают, и Банко говорит (в переводе Пастернака):…