Перейти к содержимому

Foo bar baz что это

  • автор:

Метапеременные

Метапеременные — это слова-заменители, которые применяются в технических текстах для обозначения чего-либо, что может стоять на их месте, метапеременные часто используются в программировании.

Обычно используют осмысленные имена метапеременных. Например, описание команды переименования файла может выглядеть следующим образом:

mv source target

Здесь source и target — метапеременные, обозначающие имя файла до (source) и после (target) переименования. Однако часто используются и слова, не несущие смысловой нагрузки, foo является каноническим примером.

Использование метапеременных в тексте аналогично использованию в математике букв x, y и z для неизвестных переменных и a, b и c для неизвестных констант. Метапеременные можно рассматривать как переменные метаязыка, используемого, например, для обсуждения программного кода, описания алгоритма и т. п.

Часто используемые метапеременные

Искусственные слова

  • foo часто используется как первая метапеременная, для обозначения неопределённого (пока) объекта: функции, процесса, и т. п. Этимология этого слова также раскрывается в первоапрельском RFCRFC 3092.
  • bar используется для ссылки на второй неопределённый объект в обсуждении. Например, «функция foo вызывает функцию bar» или «функция foo(bar)».
  • часто применяется метапеременная foobar, имя которой образовано как объединение foo и bar.
  • baz — каноническая третья метапеременная, после foo и bar.
  • quux — каноническая четвёртая метапеременная. Иногда используется вариант qux для четвёртой метапеременной и quux, quuux, quuuux и т. д. — для следующих.
  • bat — используется некоторыми программистами вместо quux.
  • xyzzy и plugh — волшебные слова в старой текстовой игре ADVENT.
  • qwe, asd, zxc — набор символов для ввода информации в текстовые поля для быстрого заполнения.

Английские слова

  • spam и eggs — канонические метапеременные, используемые в языке программирования скетч комик-группы Монти Пайтон.
  • needle (иголка) и haystack (стог сена) могут использоваться в примерах, объясняющих синтаксис команд или функций поиска; благодаря идиоме «искать иголку в стоге сена», становится понятно, что в чём ищется.

Другие примеры

В качестве метапеременных используются: test, mum, thud, beekeeper, hoge, corge, grault, garply, waldo, kalaa, puppu, dothestuff, temp, var, sub.

Часто используемые мета-числа

  • 42 часто используется как инициализатор для переменных, когда конкретное значение не важно. Число взято из произведения Дугласа Адамса «Путеводитель для путешествующих автостопом по галактике», в котором оно фигурирует как ответ на главный вопрос жизни, вселенной и всего такого.
  • другие числа: 23, 47, 69, 666, 0815, 1337, 4711, DEADBEEF16.

Наличие таких чисел в выводе может указывать на логическую ошибку в программе — неинициализированную переменную.

Имена людей

  • J. Random (англ.random — случайный) и Ned Baker используются для обозначения любого человека или какого-то человека из определённой группы, например «J. Random User».
  • Имена Алиса (Alice) и Боб (Bob) используются, когда идёт речь о взаимодействии двух человек, например при описании применения криптографических протоколов. В качестве продолжения ряда могут использоваться Carol, Dave и т. д. Для некоторых ролей используются традиционные имена, например, Ева (Eve) — это пассивный взломщик, который может перехватывать данные, но не может их изменять, Мэллори (Mallory) — это активный взломщик, Трент (Trent) — нейтральный арбитр.

Доменные имена

Ссылки

Approximately 212 RFCs, or about 7 % of RFCs issued so far, starting with [RFC269], contain the terms `foo’, `bar’, or `foobar’ used as a metasyntactic variable without any proper explanation or definition. This may seem trivial, but a number of newcomers, especially if English is not their native language, have had problems in understanding the origin of those terms. This document rectifies that deficiency.

Wikimedia Foundation . 2010 .

  • Метановые углеводороды
  • Метаплазия Баррета

«Foo» и «bar»: как в программировании появились два самых популярных «зарезервированных имени»

Обложка поста «Foo» и «bar»: как в программировании появились два самых популярных «зарезервированных имени»

Задумывались ли вы о том, откуда в программировании появились «зарезервированные имена» foo и bar? Недавно такой вопрос был задан на Stack Overflow, и, помимо лучшего ответа, мы собрали несколько различных мнений по этому поводу.

На Stack Overflow был задан вопрос:

Вот лучший пользовательский ответ:

Имена для метапеременных

Метапеременные — это слова-заменители, которые применяются в технических текстах для обозначения чего-либо, что может стоять на их месте, метапеременные часто используются в программировании.

Есть две легендарных метапеременных — это foo и bar . Они прекрасны — короткие, одинаковой длины, отличаются друг от друга, легко произносятся. А вот если нам необходимо больше метапеременных? Тут уже нету чётких правил. Обычно используются baz и bat. Но они имеют существенный недостаток — очень схожее написание с bar. И еще более схожее звучание (при выступлениях глухие буквы в конце часто съедаются и получается «ба» вместо «бар» и«бат»)

var foo = 'fooValue', bar = 'barValue', baz = 'bazValue', bat = 'batValue'; 

На данном ресурсе сидит огромное количество программистов и я хотел бы предложить отказаться от традиции использовать baz и bat в качестве имени метапеременной, а также обсудить возможность замены их чем-нибудь другим.

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

Предложение высказано после обсуждения в топике «JavaScript. Ядро».

Почему бы не придумать к foo-bar еще набор названий, которые бы отвечали следующим условиям:
— Длина — три буквы
— Кардинально отличаются внешним видом
— Кардинально отличаются произношением
— Легко и чётко произносятся. Должен быть 1 слог.

Например, я предлагаю следующий набор:

foo // фу bar // бар qux // куикс (читать как quux) osе // оуз rol // рол zed // зэд

Quux использовал т.к. он есть традиционной четвертой переменной, и звучит, имхо, лучше, чем qux. Но при этом выбивается из «ритма» трехбуквенных переменных.

var foo = 'fooValue', bar = 'barValue', quux = 'quuxValue', ose = 'oseValue', rol = 'rolValue', zed = 'zedValue'; // vs var foo = 'fooValue', bar = 'barValue', qux = 'quxValue', ose = 'oseValue', rol = 'rolValue', zed = 'zedValue'; 

Конечно, первое время они будут непривычны, но со временем устаканится набор разных метапеременных, которые хорошо выглядят в коде. Хотелось бы выслушать ваше мнение.

Почему во многих примерах функции называют foo?

Часто вижу в различной литературе, видеоуроках, статьях в интернете и прочем, что демонстративные функции и методы носят название foo . почему именно foo ? Что это значит? И откуда появилось это понятие?

Отслеживать
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
задан 14 авг 2016 в 20:42
7,748 17 17 золотых знаков 72 72 серебряных знака 133 133 бронзовых знака
14 авг 2016 в 21:00
ассоциация: stackoverflow.com/questions/4868904
27 фев 2017 в 17:36
простите, а какое отношение это имеет к программированию? по-моему весьма косвенное
11 авг 2017 в 7:21
@MaxU зачем python, если уже любой-язык?
14 мар 2018 в 3:14
@NickVolynkin, откатил изменение.
14 мар 2018 в 6:33

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Скорее всего слова foo , bar и baz родились в комиксе Smokey Stover and Pogo в конце 30-х годов 20-го века (как правильно заметил @AnT ) и, благодаря своей популярности, стали использоваться технарями из MIT

What’s Foo? My uncle found this word engraved on the bottom of a jade statue in San Francisco’s China town. The word Foo means Good-Luck.

Что такое Foo? Мой дядя нашел это слово выгравированным на дне нефритовой статуэтки в «China town» в Сан Франциско. И обозначает (переводится) оно «удача» или «удачи!».

Вот очень подробный и развернутый ответ на этот вопрос в английской версии StackOverflow. В этом ответе есть воспоминания людей об употреблении слов foo , bar , baz , foobar , которые работали непосредственно в Tech Model Railroad Club (сокращенно TRMC) или, несколько позже, просто в кругу MIT в 1960-1990-х годах.

Также в популяризации данных слов сыграла роль военная аббревиатура FUBAR («Fucked Up Beyond All Repair», что можно перевести как «ремонту не подлежит», что относилось к военной технике, либо «Fucked Up Beyond All Recognition» — речь шла о людских жертвах, которые невозможно опознать), которая появилась во время второй мировой войны и по слухам была придумана неким рядовым, которого «задолбали» всякие военные аббревиатуры.

Технари из TRMC клуба в MIT использовали слово «FOO» для обозначения ситуаций когда была необходима аварийная остановка системы. В случае, когда кто-нибудь нажимал один из аварийных выключателей на системном табло вместо времени появлялась надпись «FOO» и поэтому эти выключатели назвали «Foo switches». Позже в этом клубе стали использовать кнопки с подписями «FOO» и «BAR» (уже как дань традиции), и использовались они в самых разных ситуациях.

Впоследствии это стало использоваться в IT мире как «placeholders», то есть для названия переменных/классов в тех случаях, когда это не важно (например в примерах) или когда на ум ничего лучшего не приходит.

P.S.: также существует неподтвержденная версия, что «FOOBAR» происходит от немецкого «furchtbar» (ужасно).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *