75

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

почему именно foo? Что это значит? И откуда появилось это понятие?

MaxU - stand with Ukraine
  • 149,321
  • 12
  • 59
  • 132
faoxis
  • 7,738

2 Answers2

94

Скорее всего слова 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» (ужасно).

0xdb
  • 51,614
MaxU - stand with Ukraine
  • 149,321
  • 12
  • 59
  • 132
  • 10
    Абсолютно неверно! Никакого отношения к военному "FUBAR" происхождение троицы foo, bar и baz не имеет (не забываем о baz, кстати). Возможно военное "FUBAR" и способствовало популяризации foo и bar, но именно происхождение тут ни при чем. Однозначного ответа никто уже не знает, но корифеи MIT утверждают, что основным источником были таки "Smokey Stover and Pogo comics", где использовались все три слова. – AnT stands with Russia Aug 14 '16 at 23:01
  • На мультитране ещё упоминается quux. – hunter Aug 15 '16 at 08:18
  • @AnT, спасибо за дельный комментарий! Я копнул чуть глубже и обнаружил много интересной информации о происхождении и использавании слов foo,bar,baz,foobar и постарался исправить свой ответ... – MaxU - stand with Ukraine Aug 15 '16 at 11:51
3

На русский язык foo переводится как "нечто" или в контексте функции "некая функция". Это просто название-пример, когда нужно сосредоточиться именно на синтаксисе функции. Вроде "Hello world" для первой программы на изучаемом языке программирования.

cheops
  • 19,454
  • 29
  • 48
  • 139
  • 12
    foo не переводится как "нечто" – strangeqargo Aug 14 '16 at 21:05
  • @strangeqargo Словарь Lingvo Computers считает именно так, а на чем ваше утверждение основано? – cheops Aug 14 '16 at 21:08
  • 6
    на знании английского языка. foo/bar не переводятся. (bar переводится, но не имеет отношения к программированию, foo - не переводится). Кроме того, при таком подходе, в контексте foo/bar и foo и bar должны переводиться как foo=нечто и bar=нечто. Их нельзя перевести, если не завести аналоги для программистов на русском. И в любом случае foo() никогда не будет значит нечто(). It, something, thing - можно перевести как нечто. Foo - нельзя. – strangeqargo Aug 14 '16 at 21:13
  • кроме того, копипаста из словаря не объясняет происхождения ни foo ни bar, ни почему оно так работает. – strangeqargo Aug 14 '16 at 21:16
  • @strangeqargo если так рассуждать challenge тоже не переводимое слово. Однако, для него подбирают перевод и переводят как "вызов", хотя если рассуждать по вашей логике - это тоже не вызов. Переводить можно все, пусть даже с некоторой потерей. – cheops Aug 14 '16 at 21:21
  • @strangeqargo про то, как оно в вашем понимании "работает" можете описать в вашем ответе автору вопроса, а не в комментариях к моему ответу. – cheops Aug 14 '16 at 21:23
  • challenge переводится как испытание/вызов, но foo не переводится как "нечто". это общепринятый идентификатор для функций/переменных, название которых не имеет значения, поскольку они используются для примера. – strangeqargo Aug 14 '16 at 21:26
  • Т.е. некая функция или переменная? challenge не просто испытание, а полезное испытание данное Богом и преодоление которого делает сильнее, испытание в рамках протестанской модели поведения. Однако вас это перевод устраивает, а против некой функции у вас фундаментальные возражения? Если честно не вижу в вашем определении противоречий с переводом. – cheops Aug 14 '16 at 21:32
  • 14
    хватит нести чушь. На русский язык foo переводится как "нечто" Не переводится. – strangeqargo Aug 14 '16 at 21:46
  • 2
    @strangeqargo, я тоже думаю, что перевести нельзя. Похоже, это что-то национальное. Я вот, часто пишу -- xaxa (а во Франции мне как-то сказали, что у них используют в подобных случаях tutu). – avp Aug 14 '16 at 22:02
  • @strangeqargo, а вот мультитран с cheops согласен. "я так думаю" -- не аргумент, вам привели источники, либо найдите противоречие, либо приведите свой авторитетный источник. – hunter Aug 14 '16 at 22:06
  • @avp ну ответ был дан юзером MaxU, а вообще, это просто идентификатор. как Pi (число пи) или C (градусы цельсия). Ну можно конечно поизвращаться и придумать Русские Национальные Аналоги типа чтото() и тото()... но... зачем? – strangeqargo Aug 14 '16 at 22:06
  • @hunter мультитран это не словарь русского языка. перевод мультитрана - это объяснение компьютерного слэнга. Foo Fighters вы не переведете как "Бойцы Нечто" – strangeqargo Aug 14 '16 at 22:09
  • 1
    @strangeqargo, а никто специально и не придумывает, просто все что-то свое используют (кто что привык) – avp Aug 14 '16 at 22:09
  • 6
    @hunter если быть точным, то у слова foo нет смысла, и первести его нельзя. только подобрать аналог. "The nonsense word "foo" emerged in popular culture during the early 1930s, first being used by cartoonist Bill Holman who peppered his Smokey Stover[3] fireman cartoon strips with "foo" signs and puns." Вы можете переводить его как "кек", "улл", "клаа" или "жьооо", но не как "нечто". А поскольку оно не переводится, лучше всего оставить его просто как foo. Просто идентификатор привычный для программистов всего мира. – strangeqargo Aug 14 '16 at 22:12
  • 1
    @strangeqargo, "первести его нельзя. только подобрать аналог" -- прошу меня извинить, но после именно этой фразы я вынужден спросить вас что именно вы имеете в виду под переводом слова. – hunter Aug 14 '16 at 22:40
  • @strangeqargo не находите, что ссылаться на 30-е для перевода современного компьютерного сленга немного самонадеяно? Язык меняется раз в 20 лет, некоторые слова вроде меняют смысл на противоположный, приобретают негативную окраску, просто начинаю использоваться для обозначения других понятий. Одно слово может иметь десяток значений. Есть контекст, в рамках которых подбирается перевод. Foo в компьютерной индустрии и в пищевой обозначает разные вещи. В разных сленговых группах, эти значения разные, но это не значит, что перевести слово нельзя - возможно нельзя передать весь бэкграунд, но можно. – cheops Aug 15 '16 at 05:31
  • 6
    В уважаемых толковых английских словарях слово foo отсутствует, см. Оксфордский, McMillan. Оно ничего не означает в английском языке, и, соотв-но, не может переводиться на русский язык по собственному значению, только через способ употребления: но поскольку языков программирования на русском мало, аналоги просто не сформировались. Аналогичный вопрос на english.SE. –  Aug 15 '16 at 08:41
  • 3
    @hunter подобрать аналог, передающий бессмысленность, т.е. взять слово, не существующее в русском языке. Мапинг слова foo в "нечто" неправилен, поскольку у слова "нечто" есть смысл (неопределенное значение), если важно (не знаю зачем) транскрибировать, то можно (а то и лучше) перевести как фуу - такого слова тоже нет. – strangeqargo Aug 16 '16 at 19:19