Dlaczego wiele przykładów kodu, zwłaszcza samouczków, używa tak często nazw „Foo” i „Bar”? To prawie standard.
Na przykład:
void foo(char* bar) {
printf("%s", bar);
}
terminology
history
variables
użytkowników15453
źródło
źródło
Odpowiedzi:
Foo i bar pochodzą z akronimu armii amerykańskiej FUBAR „F-ed Up Beyond All Recognition”. Cała rodzina tych terminów znalazła szerokie zastosowanie podczas kampanii w Afryce Północnej i na Sycylii (1942–1943). Doskonały Dzień Bitwy Ricka Atkinsona : Wojna na Sycylii i we Włoszech w latach 1943–1944 podaje ich listę. Na przykład JANFU to „Joint Army Navy F Up”, taki jak incydent 11 lipca 1943 r., Kiedy flota inwazyjna dla operacji Husky zestrzeliła 23 transportowce Army Air Force C-47 przewożących spadochroniarzy, aby wzmocnić przyczółek plażowy.
Aktualizacja: Wikipedia ma listę powiązanych akronimów, które obejmują niektóre oryginalne akronimy wymienione w wykazie Atkinsona.
Każdy programista zrozumie motywację do używania zmiennych foo i bar do nazywania zmiennych. Z pewnością byli częścią kultury C / UNIX od samego początku i, jak zauważa @Walter Mitty, wcześniej.
Aktualizacja (10/5/2009): Oto opis Atkinsona:
Aktualizacja (23.11.2011): @Hugo ma fantastyczną listę niewojskowych poprzedników.
źródło
Myślę, że to fonetyczna wymowa fubara.
Co oznacza:
źródło
The New Hacker za słownik ma bardzo dobrą pozycję na ten temat - i uważam, że jest to lepsze źródło informacji dla tego typu rzeczy niż Wikipedia:
źródło
Wikipedia podaje tę definicję zmiennej metasyntaktycznej :
W artykule podano również typowe przykłady takich zmiennych w różnych językach programowania:
źródło
Oto odpowiedź Wikipedii:
http://en.wikipedia.org/wiki/Foo
I z RFC 3092:
http://www.faqs.org/rfcs/rfc3092.html
źródło
tl; dr
„Foo” i „bar”, ponieważ zmienne metasyntaktyczne zostały spopularyzowane przez MIT i DEC, pierwsze odniesienia są w pracy nad LISP i PDP-1 oraz Projektem MAC od 1964 roku.
Wiele z tych osób było w klubie Tech Model Railroad Club MIT, gdzie po raz pierwszy udokumentowano użycie „foo” w kręgach technicznych w 1959 r. (I wariant w 1958 r.).
Zarówno „foo”, jak i „bar” (a nawet „baz”) były dobrze znane w kulturze popularnej, szczególnie z komiksów Smokey Stover i Pogo, które będą czytane przez wielu członków TMRC.
Wydaje się również prawdopodobne, że wojskowy FUBAR przyczynił się do ich popularności.
Użycie samotnego „foo” jako nonsensownego słowa jest dość dobrze udokumentowane w kulturze popularnej na początku XX wieku, podobnie jak wojskowy FUBAR. (Trochę czytania w tle: FOLDOC FOLDOC Plik żargonu Plik żargonu Wikipedia RFC3092 )
OK, więc znajdźmy jakieś referencje.
ZATRZYMAJ NACIŚNIJ! Po opublikowaniu tej odpowiedzi odkryłem ten doskonały artykuł o „foo” w piątek 14 stycznia 1938 roku w wydaniu The Tech („najstarsza i największa gazeta MIT oraz pierwsza gazeta opublikowana w Internecie”), Tom LVII. 57, cena za trzy centy:
Gazeta Tech , rok wcześniej, List do redakcji, wrzesień 1937 r . :
A technologia w grudniu 1938 r . :
Pierwszy udokumentowany „foo” w kręgach tech jest prawdopodobnie 1959 „s słownik z TMRC Język :
Zostały one wyjaśnione w FOLDOC . Kompilator słownika Pete Samson powiedział w 2005 roku:
I z pliku żargonu 4.0.0 z 1996 roku :
Na rok przed słownikiem TMRC w 1958 r. W MIT Voo Doo Gazette („Humor suplement biura Dziekanów MIT”) (PDF) wspomina Foocom w „The Laws of Murphy and Finagle” Johna Banzhafa (student elektrotechniki) :
Również MIT Voo Doo z 1964 r. (PDF) odnosi się do użycia TMRC:
Pamiętajmy jednak, że to pytanie dotyczy przykładów kodu, więc znajdźmy „foo”, „bar” i „foobar” opublikowane w kodzie.
Tak więc plik Jargon 4.4.7 mówi o „foobar”:
Pierwsze opublikowane odniesienie, które mogę znaleźć, pochodzi z lutego 1964 r. , Ale zostało napisane w czerwcu 1963 r., The Programming Language LISP: jego działanie i aplikacje Information International, Inc., z wieloma autorami, w tym Timothy P. Hart i Michael Levin:
Obejmuje również inne zmienne metasyntaktyczne, takie jak: FOO CROCK GLITCH / POOT TOOR / ON YOU / SNAP CRACKLE POP / XYZ
Spodziewam się, że jest to tak samo jak następne odniesienie do „foo” z projektu MAC MIT w AIM-064 ze stycznia 1964 r. Lub ćwiczeń LISP autorstwa Timothy P. Hart i Michaela Levina:
Udostępnia wiele innych zmiennych metasyntaktycznych, takich jak: CHI / BOSTON NEW YORK / SPINACH BUTTER STEAK / FOO CROCK GLITCH / POOT TOOP / TOOT TOOT / ISTHISATRIVIALEXCERCISE / PLOOP FLOT TOP / SNAP CRACKLE POP / ONE TWO THREE / PLANE SUB THRESHER
W przypadku zarówno „foo”, jak i „bar”, najwcześniejsze odniesienie, jakie mogłem znaleźć, pochodzi z projektu MAC MIT w AIM-098 z czerwca 1966 r. Lub LISP PDP-6 autorstwa Petera Samsona:
Jeszcze więcej wycofań.
@Walter Mitty przypomniał na tej stronie w 2008 roku:
John V. Everett wspomina w 1996 roku:
Daniel PB Smith w 1998:
Robert Schuldenfrei w 1996 roku:
Paul M. Wexelblat w 1992:
Bruce B. Reynolds w 1996 roku:
Oto prosty IBM „BAR” z 1955 roku.
Inne wcześniejsze odniesienia:
Bar foo z 1967 r. MIT AIM-127
Bar foo z 1967 r. 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 ( skan PDF )
1972 FOO DEC
1973 FOO DEC
1973 foo bar Międzynarodowa Wspólna Rada ds. Sztucznej Inteligencji
1975 foo bar Międzynarodowa Wspólna Rada ds. Sztucznej Inteligencji
Foobar z 1977 r
Foobar 1978
1978 Moby Foobar in Software Wars
Nie znalazłem żadnych odniesień do paska foo jako „odwrócony sygnał foo”, jak sugerowano w RFC3092 i gdzie indziej.
Oto niektóre z wcześniejszych F00, ale myślę, że są to zbiegi okoliczności / fałszywe alarmy:
1959 „FOO 31 IBM-704 Bettis Plant wykorzystuje technikę najmniejszych kwadratów” US Atomic Energy Commission
1960 FOO (FO Out, F1, F2, FOO, FOI) „Cyfrowa inżynieria komputerowa i automatyka”
FOO 1967?
źródło
użycie słów takich jak „foo” i „bar” powoduje, że skupiasz się na koncepcji, a nie na tym, co możesz pojąć na podstawie znanych Ci terminów. Na przykład:
Powyższy kod pozwala ci oprzeć się na swojej wiedzy o rzeczach z prawdziwego świata.
Jeśli próbujesz wyjaśnić koncepcję, w której ważną częścią nie jest to, co jest robione (na przykład drukowanie miau lub szczekania), ale sposób, w jaki to się robi, to usuwaj części, które znasz: pomoc:
Teraz musisz skupić się na tym, co naprawdę się dzieje, nie możesz już zgadywać, co się wydarzy.
Tak więc krótka wersja jest taka, że foo, bar i tym podobne są używane do podkreślania koncepcji, w których treść nie ma znaczenia, ale pomysł ma znaczenie.
źródło
From http://en.wikipedia.org/wiki/Foobar
W technologii słowo to było prawdopodobnie propagowane w podręcznikach systemowych przez Digital Equipment Corporation w latach sześćdziesiątych i wczesnych siedemdziesiątych. Inną możliwością jest to, że foobar wyewoluował z elektroniki jako odwrócony sygnał foo. Wynika to z faktu, że jeśli sygnał cyfrowy jest aktywny na niskim poziomie (więc stan ujemny lub zerowy napięcia reprezentuje „1”), wówczas na etykiecie sygnału zwykle umieszczany jest poziomy pasek. Plik żargonu stanowi przypadek, w którym foo prawdopodobnie wyprzedza FUBAR
źródło
Z plików żargonu http://www.catb.org/jargon/html/F/foo.html
foo: / foo /
bar: / bar /, n.
źródło
Według http://en.wikipedia.org/wiki/Foo :
źródło
Drugi plik żargonu dotyczący Foo Bar.
Mogę prześledzić go co najmniej do 1963 roku i numeru seryjnego PDP-1 2, który był na drugim piętrze budynku 26 w MIT. Wykorzystano tam Foo i Foo Bar, a po 1964 r. W pokoju PDP-6 w projekcie MAC.
źródło
O ile mi wiadomo, foo pochodzi od foobar, który jest modyfikacją „fubar”, wojskowej frazy połowowej, która oznacza „ F *** ed u p b eyond a ll r ecognition”.
Z drugiej strony mogą istnieć inne źródła.
http://en.wikipedia.org/wiki/Foo
źródło
Foo and Bar (znany również jako FUBAR ... F *** ed Up Beyond All Recognition) został właśnie użyty jako standardowe nazwy ogólne dla rzeczy takich jak klasy, właściwości, nazwy metod itp.
Zasadniczo chodzi o to, aby przekazać kod bez tylu dodatkowych informacji, które mogłyby uciec od jego działania (tj. Nie musimy wiedzieć, że twoja funkcja nazywa się AddUser, aby zobaczyć kod i zrozumieć, co robi, jeśli zmienimy jego nazwę na Foo ()).
źródło
Są to nonsensowne słowa, które w większości przypadków można zastąpić bardziej odpowiednimi przykładowymi słowami. Słowa „foo” i „bar” są często używane w programowaniu, gdy ktoś nie wymyśli dobrego przykładu.
Jeśli „foo” i „bar” pochodzą od FUBAR, dlaczego są one używane przez tak wielu profesjonalistów w przykładach instrukcji, skoro przykłady nie przypominają niczego, co byłoby nie do poznania?
Dla mnie powszechne użycie tych słów w niewłaściwy sposób to coś, co jest nie do poznania.
źródło