Почему многие примеры кода, особенно учебные пособия, так часто используют имена «Foo» и «Bar»? Это почти стандарт.
Например:
void foo(char* bar) {
printf("%s", bar);
}
terminology
history
variables
user15453
источник
источник
Ответы:
Foo и bar происходят от аббревиатуры Второй мировой войны армии США FUBAR, "F-ed Up Beyond All Recognition". Целое семейство этих терминов широко использовалось в ходе кампаний в Северной Африке и на Сицилии (1942-43). Превосходный День битвы: Война на Сицилии и в Италии, 1943-1944 гг., Рик Аткинсон приводит список из них. Например, JANFU - это «Объединенный военно-морской флот F Up», такой как инцидент 11 июля 1943 года, когда флот вторжения для операции «Хаски» сбил 23 армейских ВВС C-47, перевозящих десантников для усиления плацдарма.
Обновление: Википедия имеет список связанных сокращений, который включает некоторые оригинальные Второй мировой войны, перечисленные Аткинсоном.
Любой программист поймет мотивацию использования foo и bar для именования переменных. Они, безусловно, были частью культуры C / UNIX с самого начала, и, как указывает @Walter Mitty, предшествовали этому.
Обновление (05.10.2009): вот описание Аткинсона:
Обновление (23.11.2011): у @Hugo фантастический список невоенных предшественников.
источник
Я думаю, что это фонетическое произношение фубара.
Что означает:
источник
В «Словаре нового хакера» есть очень хорошая статья об этом - и я считаю, что это лучший ресурс для такого рода вещей, чем Википедия:
источник
Википедия дает это определение метасинтаксической переменной :
В статье также приведены общие примеры таких переменных на разных языках программирования:
источник
Вот ответ Википедии:
http://en.wikipedia.org/wiki/Foo
А из RFC 3092:
http://www.faqs.org/rfcs/rfc3092.html
источник
ТЛ; др
«Foo» и «bar» как метасинтаксические переменные были популяризированы MIT и DEC, первые ссылки находятся в работе над LISP и PDP-1 и Project MAC с 1964 года.
Многие из этих людей были в техническом модельном железнодорожном клубе Массачусетского технологического института, где мы впервые обнаружили документированное использование «foo» в технических кругах в 1959 году (и вариант в 1958 году).
И "foo", и "bar" (и даже "baz") были хорошо известны в популярной культуре, особенно из комиксов Smokey Stover и Pogo, которые читали многие члены TMRC.
Кроме того, похоже, что военные FUBAR способствовали их популярности.
Использование одиночного «foo» в качестве бессмысленного слова довольно хорошо задокументировано в популярной культуре в начале 20-го века, как и военный FUBAR. (Некоторое чтение: FOLDOC FOLDOC Жаргон Файл Жаргон Файл Википедия RFC3092 )
Хорошо, давайте найдем несколько ссылок.
СТОП ПРЕССА! После публикации этого ответа я обнаружил эту прекрасную статью о "foo" в выпуске "Tech " в пятницу, 14 января 1938 года ("Старейшая и самая большая газета MIT & первая газета, опубликованная в Интернете"), том LVII. № 57, цена три цента:
Газета Tech , годом ранее, Письмо в редакцию, сентябрь 1937 года :
И Технология в декабре 1938 года :
Первое документальное «Foo» в технических кругах, вероятно , 1959 «s Словарь TMRC Язык :
Это объясняется в FOLDOC . Компилятор словаря Пит Самсон сказал в 2005 году:
А с 1996 года Jargon File 4.0.0 :
За год до словаря TMRC в газете MIT Voo Doo Gazette 1958 года («Дополнение юмора в деканате MIT») (PDF) упоминается Foocom в книге «Законы Мерфи и Финагла» Джона Банжафа (студент-электротехник) :
Также MIT Voo Doo (PDF) 1964 года ссылается на использование TMRC:
Но давайте вспомним, что этот вопрос касается примеров кода, поэтому давайте найдем "foo", "bar" и "foobar", опубликованные в коде.
Итак, Jargon File 4.4.7 говорит о «foobar»:
Первая опубликованная ссылка, которую я могу найти, относится к февралю 1964 года , но написана в июне 1963 года «Язык программирования LISP: его использование и применение» компанией Information International, Inc. со многими авторами, включая Тимоти П. Харта и Майкла Левина:
Также включает в себя другие метасинтаксические переменные, такие как: FOO CROCK GLITCH / POOT TOOR / ON YOU / SNAP CRACKLE POP / XYZ
Я ожидаю, что это почти то же самое, что следующая ссылка на «foo» из MIT Project MAC в январе 1964 года AIM-064 или LISP Exercises Тимоти П. Харта и Майкла Левина:
Он разделяет многие другие метасинтаксические переменные, такие как: CHI / Бостон, Нью-Йорк / Шпинатный стейк, глянец с потрохами, помада / инструмент, инструмент / истиситивиалексCерзис / шлепанцы, топ / SNAP, хруст, поп / один из двух третей мест
Как для «foo», так и для «bar» вместе, самое раннее упоминание, которое я смог найти, - это проект MAC MIT в июне 1966 года AIM-098 или PDP-6 LISP, сделанные не кем иным, как Питером Самсоном:
Еще несколько отзывов.
@Walter Mitty вспомнил на этом сайте в 2008 году:
Джон В. Эверетт вспоминает в 1996 году:
Даниэль П.Б. Смит в 1998 году:
Роберт Шульденфрей в 1996 году:
Пол М. Вексельблат в 1992 году:
Брюс Рейнольдс в 1996 году:
Вот такой прямой IBM "BAR" с 1955 года.
Другие ранние ссылки:
1967 foo bar MIT AIM-127
1967 foo bar MIT AIM-127a
1965 foo MIT Tech Engineering News
1968 Foo Baz DEC
1971 FOO BAR UCLA-NMC RFC269
1972 FOO MIT AI
1972 FOO MIT AI HAKMEM ( сканирование в формате PDF )
1972 FOO DEC
1973 FOO DEC
1973 foo bar Международный объединенный совет по искусственному интеллекту
1975 foo bar Международный объединенный совет по искусственному интеллекту
1977 Foobar
1978 Foobar
1978 Моби Фубар в Software Wars
Я не смог найти никаких ссылок на панель foo как «инвертированный сигнал foo», как это предлагается в RFC3092 и в других местах.
Вот некоторые из более ранних F00, но я думаю, что это совпадения / ложные срабатывания:
1959 "FOO 31 IBM-704 Bettis Plant использует метод наименьших квадратов" Комиссия по атомной энергии США
1960 FOO (FO Out, F1, F2, FOO, FOI) "Цифровая компьютерная и управляющая техника"
1967 FOO?
источник
Использование таких слов, как «foo» и «bar», заставляет вас сосредоточиться на концепции, а не на том, что вы можете понять, основываясь на известных вам терминах. Например:
Приведенный выше код позволяет вам вернуться к своим знаниям о реальных вещах.
Если вы пытаетесь объяснить концепцию, в которой важная часть состоит не в том, что делается (например, печать мяу или кора), а в том, как это делается, то удаление частей, которые вам знакомы, поможет:
Теперь вы должны сосредоточиться на том, что на самом деле происходит, вы больше не в состоянии угадать, что произойдет.
Итак, короткая версия заключается в том, что foo, bar и тому подобное используются для подчеркивания концепций, в которых содержание не имеет значения, но идея имеет значение.
источник
С http://en.wikipedia.org/wiki/Foobar
В технологии это слово, вероятно, первоначально распространялось в системных руководствах Digital Equipment Corporation в 1960-х и начале 1970-х годов. Другая возможность состоит в том, что foobar развился из электроники, как инвертированный сигнал foo. Это происходит потому, что если цифровой сигнал имеет низкий активный уровень (таким образом, отрицательное или нулевое напряжение представляет собой «1»), то горизонтальная полоса обычно помещается над меткой сигнала. Файл Jargon делает случай, который foo возможно предшествует FUBAR
источник
Из файлов жаргона http://www.catb.org/jargon/html/F/foo.html
foo: / foo /
bar: / bar /, n.
источник
Согласно http://en.wikipedia.org/wiki/Foo :
источник
Я второй файл жаргона относительно Foo Bar.
Я могу проследить это, по крайней мере, до 1963 года и до серийного номера PDP-1 2, который находился на втором этаже здания 26 в MIT. Foo и Foo Bar использовались там, а после 1964 года в комнате PDP-6 в проекте MAC.
источник
Насколько я знаю, Foo приходит от Foobar который является изменение «FuBar», военный улов phraase , что означает « F *** эд U р б eyond а Л.Л. г ecognition.»
Опять же, могут быть и другие источники.
http://en.wikipedia.org/wiki/Foo
источник
Foo и Bar (также известные как FUBAR ... F *** ed Up Beyond All Recognition) только что использовались в качестве стандартных универсальных имен для таких вещей, как классы, свойства, имена методов и т. Д.
По сути, идея состоит в том, чтобы передать ваш код без лишней посторонней информации, которая могла бы отойти от того, как работает код (т.е. нам не нужно знать, что ваша функция называется AddUser, чтобы увидеть код и понять, что он делает, если мы переименуем его в Foo ()).
источник
Это бессмысленные слова, которые в большинстве случаев могут быть заменены более подходящими примерами слов. Слова «foo» и «bar» часто используются в программировании, когда кто-то не может придумать хороший пример.
Если «foo» и «bar» являются производными от FUBAR, почему они используются многими профессионалами в примерах инструкций, когда примеры не напоминают ничего, что было бы до неузнаваемости?
Для меня общее использование этих слов неуместно - это то, что так вышло до неузнаваемости.
источник