Квайновая лихорадка для программистов-эзотериков
Большинство программистов когда-нибудь писали программу, печатающую свой собственный текст — это хорошо известное эзотерическое упражнение, распространенное особенно среди функциональщиков. Это так называемый Квайн:
Куайн (квайн, англ. quine) — компьютерная программа, которая выдаёт на выходе точную копию своего исходного текста. При этом программы, использующие внешние данные, куайнами не считаются; то есть исключается прочтение текста программы из файла, ввод его с клавиатуры и так далее. Кроме того, не считается куайном «программа», не содержащая вообще никакого кода (вырожденный случай).
Так вот японец Юсуки Эндо, один из ведущих разработчиков языка Ruby, довел эту задачу до предельного абсурда, cоздав программу на Ruby, печатающую программу на Scala, печатающую программу на Scheme, в свою очередь генерирующую программу на Scilab, .... и так по цепочке по ста языкам программирования, пока, в заключительной итерации, опять не распечатается исходная программа на Ruby.
Ну, не шиза ли настоящая? Но нет, настоящая шиза — это помехоустойчивый квайн, который распечатывает себя самого даже при произвольном повреждении любой промежуточной транс-репликации его сорцов. Ссылка — под катом.
Квайним по взрослому
Итак, больше всего мне понравилась его программа, которая может напечатать свой собственный текст, даже если из нее удалить любой произвольный символ, и называется она — Radiation-hardened Quine.
Какая милота. Квайн на vi.
ii^V^V^V^[BDuplxbbpp^[BDuplxbbpp
— ORA-00600 (@ping_f) January 22, 2015
Ещё один продвинутый вариант квайна от того же японского товарища — генерация 3D-модели в виде пустотелой колонны, на стенках которой выводится листинг кода самой программы, непосредственно генерирующей модель этой фигуры (самопроекция собственных исходников на поверхность моделируемой объемной фигуры).
Всё это барахло для ломания собственных мозгов распространяется под лицензий MIT License. Кто заразился красотой чужой шизы, вот ссылка для начинающих: Как писать квайны.
Интересности из мира квайнов: http://t.co/gIrWyruyZN. 100 языков, радиационно-устойчивый квайн, часы и змейка. pic.twitter.com/XSiKq6qkyn
— Хабрахабр (@habrahabr) July 13, 2015
Ключевики не для людей: Куайн, головоломки и сложные задачи для программистов, а также рекурсия и эзотерические языки программирования. Программирование шуток и приколов, конвеер из языков программирования, метапрограммирование, полуморфизм и эзотерический код для прокачки мозгов. Необычные программы (с открытым исходным кодом) и самопрограммирование с генерацией исходников кода с рекурсивным и интересным Куайном на Ruby.