Просмотров: 6712

Квайновая лихорадка для программистов-эзотериков


Большинство программистов когда-нибудь писали программу, печатающую свой собственный текст — это хорошо известное эзотерическое упражнение, распространенное особенно среди функциональщиков. Это так называемый Квайн:

Куайн (квайн, англ. quine) — компьютерная программа, которая выдаёт на выходе точную копию своего исходного текста. При этом программы, использующие внешние данные, куайнами не считаются; то есть исключается прочтение текста программы из файла, ввод его с клавиатуры и так далее. Кроме того, не считается куайном «программа», не содержащая вообще никакого кода (вырожденный случай).

Так вот японец Юсуки Эндо, один из ведущих разработчиков языка Ruby, довел эту задачу до предельного абсурда, cоздав программу на Ruby, печатающую программу на Scala, печатающую программу на Scheme, в свою очередь генерирующую программу на Scilab, .... и так по цепочке по ста языкам программирования, пока, в заключительной итерации, опять не распечатается исходная программа на Ruby.

Ну, не шиза ли настоящая? Но нет, настоящая шиза — это помехоустойчивый квайн, который распечатывает себя самого даже при произвольном повреждении любой промежуточной транс-репликации его сорцов. Ссылка — под катом.

Квайним по взрослому

Квайновая лихорадка для программистов-эзотериков

Итак, больше всего мне понравилась его программа, которая может напечатать свой собственный текст, даже если из нее удалить любой произвольный символ, и называется она — Radiation-hardened Quine.

Ещё один продвинутый вариант квайна от того же японского товарища — генерация 3D-модели в виде пустотелой колонны, на стенках которой выводится листинг кода самой программы, непосредственно генерирующей модель этой фигуры (самопроекция собственных исходников на поверхность моделируемой объемной фигуры).

Всё это барахло для ломания собственных мозгов распространяется под лицензий MIT License. Кто заразился красотой чужой шизы, вот ссылка для начинающих: Как писать квайны.

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

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , , ,
Эта запись опубликована: Понедельник, 19 октября 2015 в рубрике Литдыбр.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз