Co tak naprawdę oznacza „foo”?


232

Mam nadzieję, że kwalifikuje się to jako pytanie programistyczne, ponieważ w każdym samouczku programowania w końcu w przykładach kodu natrafisz na „foo”. (tak, jasne?)

co tak naprawdę oznacza „foo”?

Jeśli nie ma to nic znaczyć , kiedy zaczęło być używane?


Pytanie połączone w poprzednim komentarzu zostało najwyraźniej usunięte. Jest nadal dostępny w nieoficjalnym archiwum usuniętych pytań: stackoverflow.hewgill.com/questions/262/271.html . zobacz także powiązane powiązane usunięte pytanie: stackoverflow.hewgill.com/questions/163/229.html
HugoRune

1
To pytanie wydaje się nie na temat, ponieważ dotyczy Etymologii
bummi

1
To pytanie jest nie na temat, ponieważ nie dotyczy programowania w zakresie zdefiniowanym w Centrum pomocy.
l4mpi,

3
Głosuję za zamknięciem tego pytania jako nie na temat, ponieważ nie stanowi to problemu programistycznego.
Servy

Odpowiedzi:


138

Patrz: RFC 3092: Etymologia „Foo”, D. Eastlake 3rd i in.

Cytując jedynie odpowiednie definicje z tego dokumentu RFC dla zwięzłości:

  1. Używany bardzo ogólnie jako przykładowa nazwa dla absolutnie wszystkiego, szczególnie. programy i pliki (zwłaszcza pliki scratch).

  2. Najpierw na standardowej liście zmiennych metasyntaktycznych używanych w przykładach składni (bar, baz, qux, quux, corge, grult, garply, waldo, fred, plugh, xyzzy, thud). [ŻARGON]


25
Och, to po prostu niesamowite. Mają RFC dla Foo.
Mark Tomlin

5
Mark Tomlin, spójrz na datę w tym RFC.
programista Windows

6
Co to jest RFC ;-)?
Bastien Vandamme

1
@Pentarex Co to jest RTFM ;-)?
CodesInChaos

3
RFC - „Dokumenty z prośbą o komentarze zostały wynalezione przez Steve'a Crockera w 1969 roku, aby pomóc w nagraniu nieoficjalnych notatek dotyczących rozwoju ARPANET. Od tego czasu stały się oficjalnym zapisem specyfikacji internetowych, protokołów, procedur i wydarzeń”. Źródło: http://www.livinginternet.com
ZygD

44

foojest używany jako nazwa zastępcza, zwykle w kodzie przykładowym, aby wskazać, że nazwany obiekt lub wybór nazwy nie jest częścią sedna przykładu. fooczęsto występuje po nim bar, baza nawet bundy, jeśli potrzebna jest więcej niż jedna taka nazwa. Wikipedia nazywa te nazwy Zmiennymi Metasyntaktycznymi . Programiści Python rzekomo używać spam, eggs, hamzamiast foo, etc.

Istnieją dobre zastosowania foo w SA.

Widziałem także fooużywane, gdy programista nie może wymyślić sensownej nazwy (na przykład, zamiast tmp), ale uważam to za niewłaściwe użycie foo.


22

Ponieważ definicja „Foo” ma wiele znaczeń:

  • bar i baz są często łączone ze sobą, tworząc takie słowa, jak foobar, barbaz i foobaz. www.nationmaster.com/encyclopedia/Metasyntactic-variable

  • Główne pojęcia w CML, zwykle mapowane bezpośrednio na XMLElements (do omówienia później). wwmm.ch.cam.ac.uk/blogs/cml/

  • Pomiar całkowitej ilości pastwiska na wybiegu, wyrażonej w kilogramach suchej masy pastwisk na hektar (kg DM / ha) www.lifetimewool.com.au/glossary.aspx

  • Przedni obserwator. Oficer artylerii, który pozostał z piechotą i batalionami czołgów, aby ustawić posterunki obserwacyjne na liniach frontu, z których obserwować pozycje wroga i przesyłać współrzędne celów do dział z tyłu. Members.fortunecity.com/lniven/definition.htm

  • jest pierwszą powszechnie stosowaną zmienną metasyntaktyczną. Czasami jest łączony z paskiem, aby zrobić foobar. To sugeruje, że foo może pochodzić z II wojny światowej slangowe określenie FUBAR, jak skrótem f ucked / f Ouled u p b eyond a ll r ecognition, chociaż Plik Fachowe sprawia całkiem dobrą sprawę ... wyjaśnienie prowadnicy. info / mean / Metasyntactic-variable.html

  • Foo to zmienna metasyntaktyczna stosowana powszechnie w informatyce do abstrakcyjnego przedstawiania pojęć i może być używana do reprezentowania dowolnej części ... en.wikipedia.org/wiki/FOo

  • Foo to świat marzeń (nie nie jest) w serii Leven Thumps Oberta Skye'a. Chociaż ma wielu oryginalnych mieszkańców, większość obecnych mieszkańców pochodzi z Rzeczywistości i jest znana jako gnidy. ... en.wikipedia.org/wiki/Foo (miejsce)

  • Też foo ”. Reprezentacja głupca (głupca), z akcentem pana T. en.wiktionary.org/wiki/foo

Zasób: Google


Świetna odpowiedź, ale prawdopodobnie warto umieścić link do wpisu pliku Jargon: catb.org/jargon/html/F/foo.html
Dave Webb

Wyniki Google nie są odpowiedzią
nialljsmith,

2
Wyniki Google nie są odpowiedzią << Nie rozumiem. Więc jaka jest odpowiedź? jeśli myślisz o jednym? bez gwarancji? czy powinienem umieścić tutaj rzeczywiste linki do masy witryn? Myślę, że stackoverflow musi mieć rzeczy w jednym miejscu, a nie tylko linki do innych stron, w ten sposób opublikowałem to wszystko w jednym wątku.
Lukas Šalkauskas

Hej, jeśli zamierzasz zamieścić wszystkie odpowiedzi niezwiązane z programowaniem, dlaczego pominąłeś „foo-fightera”, którego piloci z czasów II wojny światowej nadali UFO, które widzieli i nie mogli zidentyfikować, ale przypuszczali, że byli bojownikami wroga?
Kmeixner,



7

Myślę, że to nic nie znaczy. Wiki mówi:

„Foo jest powszechnie stosowane z paskiem i foobarem zmiennych metasyntaktycznych.”


3

Dźwięk francuskiego fou (jak: amour fou) [szalony] napisany po angielsku, byłby foo, prawda? W przeciwnym razie furchtbar -> foobar -> foo, bar -> barfoo -> barfuß (boso). Po prostu fou. Stopa bez zębów.

Zgadzam się ze wszystkimi, którzy wspominali, że to znaczy: nic ciekawego, po prostu coś, co zwykle jest potrzebne do uzupełnienia wypowiedzi / wyrażenia.


Podoba mi się porównanie z innymi językami i ich różnymi znaczeniami :-D
Mat.

3

Wśród moich kolegów znaczenie (a może bardziej dokładnie - użycie ) terminu „foo” miało służyć jako symbol zastępczy reprezentujący przykład nazwy . Przykłady obejmują, ale nie ograniczają się do yourVariableName , yourObjectName lub yourColumnName .

Dziś unikam używania „foo” i wolę używać tego rodzaju nazwanego podstawienia z kilku powodów.

  • We wcześniejszych dniach pierwotnie uznałem użycie „foo” za miejsce docelowe w dowolnym przykładzie, które może być mylące jako f'd-up. Chciałem działającego przykładu, a nie czegoś, co było foobar.
  • Twoje wyniki mogą się różnić, ale ja zawsze, w 100%, za każdym razem, nigdy nie zawiodłem, otrzymałem więcej pytań uzupełniających na temat znaczenia rzeczywistej zmiennej, w której użyto „foo”.

2

Moim zdaniem każdy programista ma swoje „słowa”, które są używane za każdym razem, gdy potrzebujesz dowolnego słowa podczas programowania. Dla niektórych osób są to pierwsze słowa z dziecięcej piosenki, dla innych to imiona, a dla innych to coś zupełnie innego. Teraz dla społeczności programistów są też te „słowa”, a te słowa to „foo” i „bar”. Zastosowanie tego polega na tym, że jeśli musisz publicznie informować o programowaniu, nie musisz mówić, że użyjesz słów arbitrażowych, po prostu napiszesz „foo” lub „bar”, a każdy programista wie, że to tylko arbitralne słowa.


2
Jeśli „wszyscy” to wiedzą, dlaczego tak wiele osób pyta o znaczenie „foo”, „bar” i „foobar”? Prakash nie jest pierwszą osobą, która pyta. IMO foo, bar i foobar nie są intuicyjne, jak a, b, c, tmp, X, Y, Z, a var func, dlatego myślę, że wielu RLM
Anders Sandvig

Hm .. Czy to tylko ja, czy przerywane jest renderowanie długich komentarzy? Zresztą reszta brzmiała „… dlaczego myślę, że wiele osób uważa, że ​​są rozpraszające”.
Anders Sandvig,

1
Tak, przekroczyłeś limit 300 znaków na komentarz;) ale dzięki!
prakash

Prawdopodobnie jestem zbyt głęboko
uwikłany w

Znalazłem (i znajduję) ich rozpraszających. Zwłaszcza, gdy po raz pierwszy próbowałem rozszyfrować pytona, uznałem, że mają one znacznie większe znaczenie niż one. Może funkcja lub część składni. Chociaż miałem ten sam problem z takimi rzeczami jak ** kwargs. Instynktownie próbuję zapamiętać takie rzeczy. Do punktu spisania. Dopóki ktoś mi nie powie „nie ma znaczenia, jakiego wyrażenia używasz, dopóki masz **”. Przynajmniej „kwargs” ma sens, gdy uświadomisz sobie, co to oznacza. Rzeczy takie jak „foo” są po prostu myląco „mistyczne”. Czują się jak zranienia ze względu na zranienia.
OmikronWeapon
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.