
Десятилетиями разработчики программного обеспечения вставляли шутки в свою работу. Одна из самых живучих, умных и по-гиковски удовлетворяющих внутренних шуток скрывалась на виду: рекурсивная аббревиатура. Она выросла из малоизвестной причуды в заветную традицию — и по сей день сильна.
Что такое рекурсивная аббревиатура?
Чтобы понять рекурсивную аббревиатуру, нам нужно начать с основ. Аббревиатура — это слово, образованное из начальных букв других слов, например NASA (Национальное управление по аэронавтике и исследованию космического пространства) или RAM (Оперативное запоминающее устройство). Довольно просто, не правда ли?
Теперь рекурсивный акроним поднимает все на ступеньку выше. В этих случаях одна из букв в акрониме фактически обозначает сам акроним. Таким образом, определение слова включает в себя само слово. Это концепция, которая щекочет мозг — как будто стоишь между двумя зеркалами и видишь бесконечные отражения.
Эта странная система именования отражает глубокую привязанность программистов к рекурсии — концепции в компьютерной науке, где функция вызывает сама себя. Она элегантна, умна и по своей сути логична, как и аббревиатуры, которые заимствуют ее структуру.
Происхождение рекурсивных аббревиатур
Концепция рекурсивных акронимов восходит к ранним дням вычислительной техники, где наименования вещей часто служили поводом для остроумия. Один из самых ранних известных примеров появился в ходе разработки Unix, очага экспериментов и хакерской культуры в 1970-х и 80-х годах.
Поскольку Unix породил огромную экосистему инструментов с открытым исходным кодом, соглашения об именовании развивались вместе с ней. Разработчики, многие из которых были вовлечены в несколько взаимосвязанных проектов, начали использовать рекурсивные аббревиатуры как способ создания инсайдерских шуток, которые признавали происхождение их программного обеспечения, одновременно утверждая его независимость.
К тому времени, как в 1990-х годах Linux начал доминировать на рынке ПО с открытым исходным кодом, рекурсивные аббревиатуры стали практически знаком отличия.
Примеры рекурсивных сокращений
Рекурсивные аббревиатуры могут быть остроумными, ироничными или просто абсурдными. Ниже приведена выборка некоторых из самых известных — и малоизвестных — примеров.
1. GNU – GNU – это не Unix
Один из самых знаковых рекурсивных акронимов, GNU был частью движения свободного программного обеспечения Ричарда Столлмана. Хотя GNU был вдохновлен Unix, Столлман хотел подчеркнуть, что он был свободным, открытым и принципиально другим. Самореферентное название воплощает как юмор, так и серьезность миссии.

2. PHP – PHP: препроцессор гипертекста
Первоначально обозначавший «Персональную домашнюю страницу», PHP позже был переопределен, чтобы отразить его роль как динамического серверного языка. Теперь название рекурсивно включает само себя, что является подходящим поворотом для языка, глубоко вплетенного в ткань сети.
3. Bing – Bing – это не Google
Это немного натянуто. Microsoft никогда официально не подтверждала этот бэкроним, но слухи продолжают ходить. Намеренно или нет, но это отражает дух соперничества (и нахальное отношение), стоящий за войнами поисковых систем.
4. ВИНО – ВИНО не является эмулятором
Этот уровень совместимости позволяет пользователям запускать приложения Windows на Linux и macOS. Название настаивает на том, что это не эмулятор, несмотря на то, что он делает вещи, похожие на эмулятор. Классический юмор с открытым исходным кодом.

5. СОСНА – СОСНА – это не вяз
Текстовый почтовый клиент, который улучшил старую программу Elm. Рекурсивная аббревиатура — это и кивок, и укол, что вполне соответствует характеру мира Unix.
6. RPM – Менеджер пакетов RPM
Появившись впервые как менеджер пакетов для Red Hat Linux, ведутся споры о том, что эта аббревиатура означает «официально». В зависимости от того, кто говорит, она может также означать Red Hat Package Manager. Конечно, мы предпочитаем умную забавную версию и придерживаемся ее.
7. LYNX – LYNX – это не X
Текстовый веб-браузер Lynx стоит отдельно от графических браузеров (например, использующих X Window System). Название отражает это отличие. Кстати, впервые появившись в 1992 году, LYNX является старейшим существующим веб-браузером, который до сих пор поддерживается и получает обновления.
8. EINE – EINE – это не EMACS
Ранний текстовый редактор типа Emacs для машин Lisp. Как и во многих рекурсивных аббревиатурах, название указывало на связь с предшественником, одновременно обозначая новое направление.
9. ZWEI – Изначально ZWEI был EINE
Продолжение EINE. Шутка становится глубже: она не только рекурсивно самореферентна, но и является каламбуром на немецких словах «один» (eine) и «два» (zwei). Двойная рекурсия, двойные очки зануды.
10. Zinf – Zinf не бесплатный усилитель
Аудиоплеер, ответвившийся от FreeAmp. Название подчеркивало независимость проекта, продолжая при этом традицию рекурсивного именования.
11. Комплект аудиоподключения JACK – JACK
Аудиосервер с низкой задержкой, используемый для профессионального аудиопроизводства. Простой, элегантный и рекурсивный.

12. LAME – LAME – это не кодировщик MP3
Авторы этого популярного кодека (используемого кодировщиком для создания различных типов музыкальных и/или видеофайлов) хотели ясно дать понять, что они не предоставляют инструмент, который будет кодировать (потенциально незаконно) музыкальные или видеофайлы. Подумайте об этом, как если бы вы дали кому-то двигатель без автомобиля.
cURL – библиотека URL-запросов cURL
cURL — это широко используемая утилита в Linux и многих библиотеках программирования для извлечения объектов всех видов из сети. Двойной балл за это! Эта аббревиатура на самом деле имеет две рекурсии, где C означает cURL, а U означает URL.

14. МУНГ – МУНГ до тех пор, пока не станет плохо
Шутка из ранних дней Unix, глагол «mung» означал испортить что-то необратимо. Аббревиатура в шутку рекурсивно переопределяет себя — каламбур как на функцию, так и на форму.
15. TIP – Tip – это не Пико
Рекурсивный и конкурентный выпад против другого текстового редактора (Pico), часть игривой культуры, окружающей раннее программное обеспечение Unix. Автор TIP понял, что создал конфликт имен с существующей программой, и изменил название на то, что мы все знаем сейчас как Nano, что приводит нас к интересной побочной истории.
Nano — это не рекурсивная аббревиатура, но само слово выбрано далеко не случайно. И pico, и nano — это префиксы в метрической системе измерений, как в picometer и nanometer. Все, что nano, в 1000 раз больше, чем все, что pico. Еще один хитро скрытый, тонкий намек, что редактор Nano в 1000 раз лучше своего предшественника.

16. TINT – TINT – это не Тетрис
Консольная игра в стиле «Тетрис», которая гордо отмежевывается от оригинала, хотя и явно им вдохновляется. Юмор и дань уважения, объединенные в одну аббревиатуру.
17. AMBER – AMBER означает более зашифрованную маршрутизацию
Протокол, ориентированный на безопасность, с рекурсивным названием, подчеркивающим его возможности шифрования.
18. JASS – JASS не является системой сценариев
Используется в Warcraft III, JASS — это собственный скриптовый язык Blizzard. Он определяет себя тем, чем он не является — классическим рекурсивным сарказмом.
19. PIP – Pip устанавливает пакеты
Фактический установщик пакетов для Python. PIP устанавливает… себя? Не совсем так, но рекурсивное название поддерживает традицию.

20. XINU – Xinu – это не Unix
XINU — это легкая операционная система, разработанная для академических целей. И это, последняя запись в нашем списке, триада для гиков — ее трудно заметить и редко можно увидеть. Эта аббревиатура рекурсивная, на самом деле это слово Unix, написанное наоборот, и включает в себя намек на исходную аббревиатуру «is not» — GNU.
Рекурсивные аббревиатуры — это больше, чем просто соглашение об именовании, это давняя традиция разработчиков, секретное рукопожатие и напоминание о том, что юмор и интеллект часто идут рука об руку в мире кода. Эти причудливые названия показывают, что даже в самых технических средах всегда есть место для игривости.
Конечно, приведенный выше список далеко не исчерпывающий. Бесчисленное множество рекурсивных аббревиатур существует среди множества приложений, библиотек и операционных систем. Новые рекурсивные аббревиатуры также создаются постоянно, особенно в проектах с открытым исходным кодом, где креативность часто так же важна, как и функциональность. Так что в следующий раз, когда вы установите пакет или запустите утилиту, присмотритесь — возможно, вы обнаружите шутку, скрывающуюся на виду.