Открыть сервис

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 →