Foobar — метасинтаксическая переменная в программировании¶
Foobar (также foo и bar) — метасинтаксические переменные, традиционно используемые в программировании и технической документации для обозначения произвольных имён, значений или объектов. Термин применяется как заполнитель, когда требуется привести пример без привязки к конкретным данным. В русскоязычной практике аналогичную роль выполняют слова «что-то», «некоторое значение» или буквы «X» и «Y», однако именно «foo» и «bar» закрепились в международной компьютерной культуре как стандартные плейсхолдеры.
¶Происхождение и этимология
Точное происхождение слова «foobar» остаётся предметом дискуссий. Наиболее распространённая версия связывает его с военным жаргоном времён Второй мировой войны: аббревиатурой FUBAR (англ. Fucked Up Beyond All Repair — «испорчено до неузнаваемости»). Однако лингвисты и историки компьютерной техники отмечают, что написание «foobar» появилось позже и, вероятно, возникло независимо.
Впервые в программировании термин задокументирован в документации к языку Fortran в 1960-х годах. Руководство по языку от 1965 года содержало пример, где переменные назывались FOO и BAR. С тех пор эти имена распространились через учебные материалы, статьи и исходный код.
Существует также версия, что «foo» происходит от китайского иероглифа «фу» (福), обозначающего удачу, однако она не имеет документальных подтверждений. В среде хакеров Массачусетского технологического института (MIT) слово «foo» использовалось как шутливое восклицание ещё в 1950-х годах, что зафиксировано в студенческом фольклоре.
¶Классификация и родственные термины
В компьютерной литературе выделяют несколько категорий метасинтаксических переменных:
- foo — базовый заполнитель для имени переменной, функции или файла;
- bar — второй по частоте использования заполнитель, обычно следующий за «foo»;
- baz — третий элемент последовательности, применяется реже;
- qux, quux, corge — продолжение ряда, встречается в документации GNU и тестовых примерах.
Кроме того, существуют специализированные плейсхолдеры: foobar2000 (название аудиоплеера), example.com (домен для примеров), test (учётная запись для проверки), lorem ipsum (текст-заполнитель в полиграфии). В русскоязычных учебниках иногда используются «ололо» и «ололош», однако они не получили широкого распространения за пределами шуточных материалов.
¶Применение в программировании
Основная сфера использования — иллюстрация синтаксиса в учебниках, справочниках и ответах на форумах. Например, при объяснении объявления переменной в языках C, Python или JavaScript автор пишет:
``python foo = 42 bar = "hello" ``
Это позволяет читателю сосредоточиться на структуре кода, а не на смысле имён. Аналогично в документации к фреймворкам и библиотекам примеры вызовов функций часто содержат foo() или bar.baz().
В юнит-тестировании (модульном тестировании) метасинтаксические переменные применяются для обозначения тестовых данных и заглушек (mock-объектов). Например, тест может проверять, что функция add(foo, bar) возвращает корректную сумму, где foo = 2, bar = 3.
В командной строке Unix-систем foo и bar используются для демонстрации работы с аргументами: cp foo bar означает «скопировать файл с именем foo в файл bar». Это особенно удобно в man-страницах (руководствах), где реальные имена файлов неизвестны.
¶Использование в примерах и документации
Крупные проекты с открытым исходным кодом, включая ядро Linux и инструменты GNU, регулярно используют foo и bar в комментариях и тестовых сценариях. В стандартах RFC (Request for Comments), описывающих протоколы интернета, также встречаются эти имена. Например, в RFC 2616 (HTTP/1.1) при описании заголовков используется foo для иллюстрации синтаксиса.
В базах данных и SQL-примерах заполнители помогают показать структуру запроса:
``sql SELECT * FROM foo WHERE bar = 'baz'; ``
В конфигурационных файлах (например, в Nginx или Apache) foo.example.com часто фигурирует как виртуальный хост для демонстрации настроек.
¶Культурное влияние и за пределами IT
Термин вышел за рамки программирования. В 2002 году вышел аудиоплеер foobar2000, название которого напрямую отсылает к метасинтаксической переменной. В математических и физических статьях изредка встречаются обозначения foo и bar в шуточных примерах, хотя академическая традиция предпочитает латинские буквы.
В интернет-фольклоре существует мем «Foo Fighters» — название американской рок-группы, заимствованное из жаргона лётчиков Второй мировой войны (обозначение НЛО), которое, в свою очередь, созвучно с «foo». Однако прямой связи с программистским термином нет.
В русскоязычных IT-сообществах (Хабр, Stack Overflow на русском) «foo» и «bar» используются так же часто, как и в англоязычных, без перевода. Иногда встречается вариант «фуу» или «бар», но он не является нормативным.
¶Критика и альтернативы
Некоторые педагоги и авторы учебников критикуют использование foo и bar, считая их бессмысленными и затрудняющими понимание для новичков. Вместо них предлагаются осмысленные имена, отражающие суть примера: username, total_price, file_path. Аргумент в пользу осмысленных имён поддерживается принципами чистого кода (например, книгой Роберта Мартина «Чистый код»), где рекомендуется избегать бессодержательных идентификаторов.
Тем не менее, в кратких примерах, где цель — показать синтаксис, а не алгоритм, foo и bar остаются удобными благодаря краткости и нейтральности. Они не создают ложных ассоциаций и не требуют перевода.
В отдельных проектах приняты внутренние стандарты: например, в документации языка Go часто используются x и y, в Java — obj и value, в тестовых фреймворках — actual и expected. Однако глобальная традиция «foo/bar/baz» сохраняется в кросс-языковых руководствах и справочных системах.
¶Источники
- Raymond E. S. The Jargon File (версия 4.4.7), статья «foo».
- Документация к Fortran 66, IBM, 1965.
- RFC 3092 — «Etymology of Foo», 2001 год.
- Мартин Р. Чистый код: создание, анализ и рефакторинг. — СПб.: Питер, 2010.
- Материалы форума Stack Overflow (английская версия), раздел «What is the history of foo and bar?».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →
