Jaka jest historia użycia „foo” i „bar” w przykładach kodu źródłowego?

60

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);
}
użytkowników15453
źródło
2
Wygląda na to, że żaden z postów fmsf nie jest bezpieczny przed szykanowaniem RichB.
Tak, uwielbia zmieniać to, co piszę, zaczynam myśleć, że ma na tym punkcie obsesję
4
„dlaczego bar foo?” tytuł nie jest zbyt dobry, IMHO
Jeff Atwood
1
Dodałem odpowiedź z poprawną etymologią (jest to najpopularniejsza z rodziny slangu armii amerykańskiej z II wojny światowej) i moje źródło.
To mem - komunikatywny pomysł. To jest własne uzasadnienie.
Mike Dunlavey,

Odpowiedzi:

65

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:

Ich wszechobecna „cywilność” czyniła ich ostrożnymi wobec zapału wojennego. „Nie byliśmy romantykami przepełnionymi diademem z peleryny i miecza” - napisał John Mason Brown, porucznik Rezerwy Marynarki Wojennej na Sycylię. „Ostatnia wojna była na to za blisko”. Życie wojskowe rozpaliło ich ironiczną wrażliwość i sceptycyzm. Pojedynczy prymitywny akronim, który uchwycił niższe oczekiwania żołnierza - SNAFU, „sytuacja normalna, wszystko popieprzone” - rozwinął się w słownictwo cynizmu GI: SUSFU (sytuacja niezmieniona, wciąż popieprzona); FUMTU (popieprzony bardziej niż zwykle); JANFU (wspólne pieprzenie armii i marynarki wojennej); JAAFU (wspólne anglo-amerykańskie pieprzenie); FUAFUP (popieprzony i popieprzony właściwie); i FUBAR (popieprzony nie do poznania) [Atkinson, s. 36].

Aktualizacja (23.11.2011): @Hugo ma fantastyczną listę niewojskowych poprzedników.

Jim Ferrans
źródło
3
Dodając do etymologii: „FUBAR mógł być pod wpływem niemieckiego słowa furchtbar, co oznacza okropne. Wymawia się go miękkim cht i prawdopodobnie dokonał przejścia w czasie II wojny światowej”
Mark
4
@Mark, niemiecka Wikipedia (de.wikipedia.org/wiki/Fubar), sugeruje, że może to być pseudoetymologia. Wskazuje również na poprzedników, takich jak „SILENCE IS FOO” w kreskówce Warner Brother z 1938 r. „Daffy Doc”.
4
@Jim Ferrans: Chociaż FUBAR prawdopodobnie wpłynął na użycie „baru” z „foo”, istnieją mocne dowody na to, że samo „foo” dobrze wyprzedza II wojnę światową, z odniesieniami przynajmniej do lat 30. XX wieku, jak wskazuje twój komentarz. Warto wspomnieć o tym w treści odpowiedzi.
Daniel Pryden
Tak, foo zdecydowanie wyprzedza II wojnę światową. W rzeczywistości znalazłem artykuł w gazecie MIT z 1938 r., Który mówi nam, jak często się to zdarzało: „Jako obraźliwe, oczywiście,„ foo! ”Ma określoną i prawdopodobnie niezastąpioną pozycję w naszym języku, chociaż obawiamy się, że nadmierne użycie, na które jest obecnie narażony, może doprowadzić do jego wczesnego (i, niestety, ciemnego) zapomnienia ”. Zobacz moją odpowiedź, aby uzyskać więcej informacji i odniesienie do 1937 r. W tej samej gazecie: programmers.stackexchange.com/questions/69788/...
Hugo,
59

Myślę, że to fonetyczna wymowa fubara.

Co oznacza:

  • F * cked
  • W górę
  • Poza
  • Wszystko
  • Naprawic
FlySwat
źródło
18
Naprawa lub uznanie; P
10
„Fouled” jest często używany, gdy trzeba być grzecznym.
30
naprawic? nie ... uznanie
hasen
6
To „uznanie”. Zobacz cytat z Dnia Bitwy Ricka Atkinsona tutaj: stackoverflow.com/questions/262271/...
7
Tylko uwaga, że ​​istnieją mocne dowody (patrz RFC 3092, plik żargonu i inne odpowiedzi tutaj), że „foo” było używane jako zastępcze bzdury w latach 30. XX wieku, na długo przed tym, jak FUBAR zaczął się w wojskowym slangu w czasach II wojny światowej.
Daniel Pryden
41

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:

zmienna metasyntaktyczna /n./

Nazwa używana w przykładach i rozumiana jako oznaczająca wszystko, co jest przedmiotem dyskusji, lub dowolny przypadkowy członek klasy rzeczy będących przedmiotem dyskusji. Słowo foo jest kanonicznym przykładem. Aby uniknąć zamieszania, hakerzy nigdy (cóż, prawie nigdy) nie używają słowa „foo” ani innych podobnych słów jako stałych nazw czegokolwiek. W nazwach plików powszechną konwencją jest to, że każda nazwa pliku rozpoczynająca się od nazwy zmiennej metasyntaktycznej jest plikiem typu scratch, który można usunąć w dowolnym momencie.

Do pewnego stopnia lista preferowanych zmiennych metasyntaktycznych jest sygnaturą kulturową. Występują zarówno szeregowo (używane dla pokrewnych grup zmiennych lub obiektów), jak i singletony. Oto kilka typowych podpisów:

foo, bar, baz, quux, quuux, quuuux ...:
Wykorzystanie MIT / Stanford, teraz dostępne wszędzie (głównie dzięki wczesnym wersjom tego leksykonu!). W MIT (ale nie w Stanford) baza na jakiś czas przestała być używana w latach 70. i 80. Powszechna ostatnia mutacja tej sekwencji wstawia qux przed quux.

bazola, ztesch:
Stanford (od połowy lat 70.)

foo, bar, huk, chrząknięcie:
ta seria była popularna na CMU. Inne zmienne związane z CMU obejmują gorp.

foo, bar, fum: Zgłoszono, że
ta seria jest powszechna w XEROX PARC.

fred, barney:
Zobacz pozycję fred. Zazwyczaj są to brytyjczycy.

corge, grault, flarp:
Popularny na Rutgers University i wśród hakerów GOSMACS.

zxc, spqr, wombat:
Cambridge University (England).

shme
Berkeley, GeoWorks, Ingres. Wymowa / shme / with short / e /.

Snork
Brown University, wczesne lata 70.

foo, bar, zot
Politechnika Helsińska, Finlandia.

blarg, wibble
Nowa Zelandia.

toto, titi, tata, tutu
Francja.

pippo, pluto, paperino
Włochy. Pippo / pee'po / i Paperino / pa-per-ee'-no / to włoskie nazwy Goofy i Donald Duck.

aap, noot, mies
Holandia. Są to pierwsze słowa, których dziecko nauczyło się literować na holenderskiej tablicy pisowni.

Spośród nich tylko „foo” i „bar” są uniwersalne (i baz prawie tak). Związki foobar i `foobaz 'również cieszą się bardzo dużą popularnością.

Niektóre terminy żargonowe są również używane jako nazwy metasyntaktyczne; na przykład barf i bełkot. Zobacz także Hackish Wspólnoty Narodów, aby omówić liczne zmienne metasyntaktyczne występujące w Wielkiej Brytanii i Wspólnocie.

ColinYounger
źródło
Muszę powiedzieć, że jestem z Nowej Zelandii i nigdy nie słyszałem o „blarg” LUB „wibble”.
To było całkiem dobre. To dopracowane. Dzięki, stary.
Tarik,
OMG, moje konto QL to qux. Zszokowany ...
@Colin - Zmieniłem link do innej strony, ponieważ istniejąca była offline.
stamtąd
Znalazłem kilka innych interesujących zmiennych metasyntaktycznych z artykułu MIT 1964 na temat LISP (który oczywiście również miał foo): chi / boston new york / stek masła szpinakowego / foo crock glitch / poot toop / toot toot / isthisatrivialexcercise / ploop flot top / snap crackle pop / one two three trzy / plane sub thresher. Zobacz moją odpowiedź, aby uzyskać więcej informacji: programmers.stackexchange.com/questions/69788/…
Hugo
25

Wikipedia podaje tę definicję zmiennej metasyntaktycznej :

W informatyce programiści używają zmiennych metasyntaktycznych do opisania nazwy zastępczej lub aliasu powszechnie używanego do oznaczenia omawianego tematu lub arbitralnego członka klasy rzeczy będących przedmiotem dyskusji. Zastosowanie zmiennej metasyntaktycznej jest pomocne w uwolnieniu programisty od tworzenia zmiennej o nazwie logicznej, co jest często przydatne podczas tworzenia lub uczenia przykładów algorytmu. Słowo foo jest głównym przykładem.
Termin „zmienna metasyntaktyczna” występuje przede wszystkim w literaturze nieformalnej. Czasami jest również używany jako synonim metawet.
Dowolny symbol lub słowo, które nie narusza reguł języka, może być użyte jako zmienna metasyntaktyczna, ale powszechnie używane są bzdury. Ta sama koncepcja jest stosowana w innych dziedzinach, w których jest wyrażona terminami, takimi jak zmienna schematyczna (patrz postać logiczna ).
Przez analogię matematyczną: Zmienna metasyntaktyczna jest słowem, które jest zmienną dla innych słów, tak jak w algebrze litery są używane jako zmienne dla liczb.

W artykule podano również typowe przykłady takich zmiennych w różnych językach programowania:

C
W poniższym przykładzie języka programowania C nazwa funkcji foo i pasek nazwy zmiennej są zmiennymi metasyntaktycznymi. Linie zaczynające się od // są komentarzami.

// The function named foo
int foo(void)
{
   // Declare the variable bar and set the value to 1
   int bar = 1;

   return bar;
}

Pyton

Spam, szynka i jajka są głównymi zmiennymi metasyntaktycznymi używanymi w języku programowania Python. [5] Jest to odniesienie do słynnego szkicu komediowego „Spam” Monty Pythona, który jest eponimem języka. [6] W poniższym przykładzie spam, szynka i jaja są zmiennymi metasyntaktycznymi, a linie zaczynające się od # są komentarzami.

# Define a function named spam
def spam():

    # define the variable ham
    ham = "Hello World!"

    #define the variable eggs
    eggs = 1

    return

Rubin

W poniższym przykładzie baz, foo i bar są zmiennymi metasyntaktycznymi, a linie zaczynające się od # są komentarzami.

# Declare the variable foo and set equal to 1
foo = 1

# Declare the variable bar and set equal to 2
bar = 2

# Declare the method (function) named baz, which prints the text 'Hello world'
def baz
   puts 'Hello world'
end
Matthieu
źródło
19

Oto odpowiedź Wikipedii:

Terminy foobar, foo, bar i baz, są popularnymi nazwami zastępczymi (zwanymi również zmiennymi metazntaktycznymi) używanymi w programowaniu komputerowym lub dokumentacji związanej z komputerem. Są one powszechnie używane do reprezentowania nieznanych wartości, zazwyczaj przy opisywaniu scenariusza, w którym rozumie się cel nieznanych wartości, ale ich dokładne wartości są arbitralne i nieważne. Terminy mogą służyć do reprezentowania dowolnej części skomplikowanego systemu lub idei, w tym danych, zmiennych, funkcji i poleceń. Same słowa nie mają znaczenia w tym zastosowaniu i są jedynie logicznymi reprezentacjami, podobnie jak litery xiy są używane w algebrze. Foobar jest często używany sam; foo, bar i baz są zwykle używane w tej kolejności, gdy potrzebnych jest wiele jednostek.

Foo wszedł w język angielski jako neologizm i przez wielu uważany jest za kanoniczny przykład zmiennej metasyntaktycznej. [Potrzebne źródło] Jest szeroko stosowany w przykładach programowania komputerowego (czasami wyrażanych jako „tylko raz”) i pseudokodu. Eric S. Raymond nazwał to „ważnym hackeryzmem” obok kludge i crufta. [1]

http://en.wikipedia.org/wiki/Foo

I z RFC 3092:

Używany w połączeniu z „prętem” jest na ogół przypisywany do akronimu slangu armii FUBAR z czasów II wojny światowej („Fucked Up Beyond All Repair”), później zmodyfikowanego do foobar. Wczesne wersje pliku żargonu [JARGON] interpretowały tę zmianę jako powojenną Bowdlerization, ale teraz wydaje się bardziej prawdopodobne, że FUBAR sam był pochodną „foo”, być może pod wpływem niemieckiego „furchtbar” (okropny) - „foobar” może faktycznie były oryginalną formą.

Wydaje się, że samo słowo „foo” miało bezpośrednią przedwojenną historię w komiksach i kreskówkach. W kreskówce Warner Brothers z 1938 r. W reżyserii Roberta Clampetta „The Daffy Doc”, bardzo wczesna wersja Daffy Duck trzyma znak „SILENCE IS FOO!” ... (snip)

http://www.faqs.org/rfcs/rfc3092.html

Daniel A. White
źródło
6
lub możesz po prostu przyznać, że pochodzi od fubar = '"f" ponad wszelkie możliwości'
Jonathan Fingland
4
@Jathanathan Fingland: Nie, nie ma. (W rzeczywistości „foo” prawdopodobnie poprzedza zarówno „foobar”, jak i „FUBAR”.) Patrz RFC 3092 i wpis pliku żargonu dla „foo”.
Daniel Pryden
@Daniel, Doskonałe odniesienie. Dodano
Jonathan Fingland
19

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:

Na Foo-ism

Lounger uważa, że ​​ta działalność Foo-ism została zbyt daleko posunięta przez wprowadzonych w błąd zwolenników, i natychmiast sprzeciwia się jego nadużyciom. Możliwe, że nie ma takiego foo jak stary foo, a my to robimy, ale foo i jego pieniądze to impreza. (Głos od trybunów - „Nie bądź głupi!”)

Oczywiście jako przekleństwo „foo!” ma określoną i prawdopodobnie niezastąpioną pozycję w naszym języku, chociaż obawiamy się, że nadmierne użycie, którym jest obecnie poddawany, może równie dobrze doprowadzić do jego wczesnego (i, niestety, mrocznego) zapomnienia. Mówimy niestety, ponieważ właściwe użycie tego słowa może prowadzić do takich szczęśliwych zdarzeń, jak poniżej.

Był to wykład termodynamiczny 8,50 profesora Slatera w pokoju 6-120. Profesor po zasłonięciu przedniej strony tablicy ustawił uchwyt uruchamiający mechanizm podnoszący, tymczasem zwracając się do klasy, aby kontynuować dyskusję. Przednia tablica powoli, majestatycznie, uniosła się, odsłaniając tablicę za nią, i na tej tablicy, pisz duże, symbole, które pisały „FOO”!

Gazeta Tech , rok wcześniej, List do redakcji, wrzesień 1937 r . :

Zanim pociąg dotarł do stacji, neofici są tak wypełnieni historiami o chwale Phi Omicron Omicron, zwykle nazywanej Foo, że są łatwą ofiarą.

...

Nie chodzi mi o to, że straciłem pierwszych czterech synów w Wielkim i Uniwersalnym Bractwie Phi Omicron Omicron, ale życzę sobie, aby mój piąty syn, moje dziecko, został przynajmniej ostrzeżony z wyprzedzeniem.

Mam nadzieję, że twoje,

Oburzona Matka Piątki.

A technologia w grudniu 1938 r . :

Ogólny trend myślowy najlepiej interpretować na podstawie uwag przedstawionych pod koniec głosowania. W jednym głosowaniu powiedziano: „Nie sądzę, że to, co robię, jest sprawą Pulvera”, podczas gdy w innym dodawano tylko krótkie „Foo”.


Pierwszy udokumentowany „foo” w kręgach tech jest prawdopodobnie 1959 „s słownik z TMRC Język :

FOO: święta sylaba (FOO MANI PADME HUM); wypowiadane tylko wtedy, gdy pod natchnieniem obcują z Bóstwem. Naszym pierwszym obowiązkiem jest obracanie liczników Foo.

Zostały one wyjaśnione w FOLDOC . Kompilator słownika Pete Samson powiedział w 2005 roku:

Użycie tego słowa w TMRC antycypuje moje przybycie. Licznik foo może po prostu mieć przypadkowo migające światła lub może być prawdziwym licznikiem z niejasnym wejściem.

I z pliku żargonu 4.0.0 z 1996 roku :

Wcześniejsze wersje tego leksykonu wywodziły się z „baz” jako korupcja pręta Stanforda. Jednak Pete Samson (kompilator leksykonu TMRC) informuje, że był już aktualny, kiedy dołączył do TMRC w 1958 r. Mówi: „Pochodzi z„ Pogo ”. Albert Aligator, zdenerwowany lub oburzony, krzyczy„ Bazz Fazz! ”. lub „Rowrbazzle!” Mówiono, że układ klubu modeluje (mityczne) hrabstwa Nowej Anglii w Rowrfolk i Bassex (Rowrbazzle zmieszane z (Norfolk / Suffolk / Middlesex / Essex). ”

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) :

Dalsze badania w ramach wspólnego grantu Foocom i Anarcom rozszerzyły prawo na wszystkie i mają uniwersalne zastosowanie: jeśli coś pójdzie nie tak, to zrobi to!

Również MIT Voo Doo z 1964 r. (PDF) odnosi się do użycia TMRC:

Tak! Chcę być natychmiastowym klientem sukcesu. Wyślij mi dyplom z: ...

  • Liczniki Foo

  • Foo Jung


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”:

Prawdopodobnie pierwotnie propagowane w podręcznikach DECsystem firmy Digital Equipment Corporation (DEC) w latach 60. i wczesnych 70. XX wieku; potwierdzone obserwacje pochodzą z 1972 r.

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:

Zatem, ponieważ „FOO” jest nazwą samą dla siebie, „COMITRIN” będzie traktował zarówno „FOO”, jak i „(FOO)” dokładnie w ten sam sposób.

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:

samochód [((FOO. CROCK). GLITCH)]

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:

EXPLODE, podobnie jak PRIN1, wstawia ukośniki, więc (EXPLODE (QUOTE FOO / BAR)) PRIN1 jako (FOO // / BAR) lub PRINC jako (FOO / BAR).


Jeszcze więcej wycofań.

@Walter Mitty przypomniał na tej stronie w 2008 roku:

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.

John V. Everett wspomina w 1996 roku:

Kiedy dołączyłem do DEC w 1966 roku, foobar był już powszechnie używany jako nazwa pliku do wyrzucenia. Wierzę, że Fubar stał się foobar, ponieważ PDP-6 obsługiwał sześć nazw postaci, chociaż zawsze zakładałem, że termin migrował do DEC z MIT. W DEC istniało wiele typów MIT, niektóre z nich pracowały z CTSS 7090/7094. Ponieważ 709x był także 36-bitową maszyną, foobar mógł być tam używany jako wspólna nazwa pliku.

Foo i bar były również powszechnie używane jako rozszerzenia plików. Ponieważ edytory tekstu tego dnia działały na pliku wejściowym i tworzyły plik wyjściowy, edytowanie pliku .foo do pliku .bar było powszechne i ponownie.

Często używano również foo do wypełniania bufora podczas edycji za pomocą TECO. Ciąg tekstowy, który dokładnie wypełniał jeden blok dysku, to IFOO $ HXA127GA $$. Prawie wszyscy programiści PDP-6/10, z którymi pracowałem, używali tego samego ciągu poleceń.

Daniel PB Smith w 1998:

Dick Gruen miał w swoim pokoju wieloosobowym urządzenie, zwykle składające się z baterii B, rezystorów, kondensatorów i lamp neonowych NE-2, które nazwał „licznikiem foo”. Byłby to około 1964 roku.

Robert Schuldenfrei w 1996 roku:

Wykorzystanie FOO i BAR jako przykładowych nazw zmiennych sięga co najmniej 1964 roku i IBM 7070. To też może być starsze, ale właśnie tam to zobaczyłem. To było w asemblerze. Jaki byłby ekwiwalent liczby całkowitej FORTRAN? IFOO i IBAR?

Paul M. Wexelblat w 1992:

Wcześniejszy asembler PDP-1 używał dwóch znaków dla symboli (maszyna 18-bitowa). Programiści zawsze zostawiali kilka słów jako miejsce na łatę, aby naprawić problemy. (Przejdź do łatania miejsca, zrób nowy kod, przeskocz do tyłu) To miejsce tradycyjnie nosiło nazwę FU: oznaczało Fxxx Up, miejsce, w którym naprawiłeś Fxxx Ups. Kiedy mówiono, był znany jako przestrzeń FU. Późniejsze asemblery (np. MIDAS dopuścił trzy znaczniki char, więc FU stało się FOO, a jak WSZYSCY programiści PDP-1 powiedzą ci, że to przestrzeń FOO.

Bruce B. Reynolds w 1996 roku:

Po stronie IBM FOO (FU) BAR jest używany po stronie BAR jako Base Address Register; w połowie lat 70. programiści CICS musieli martwić się różnymi xxxBARami ... Myślę, że jednym z nich był FRACTBAR ...

Oto prosty IBM „BAR” z 1955 roku.


Inne wcześniejsze odniesienia:


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:

Hugo
źródło
13

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:

public abstract class Animal
{
    public abstract void speak();
}

public class Cat 
    extends Animal
{
    public abstract void speak()
    {
        System.out.println("meow");
    }
}

public class Dog
    extends Animal
{
    public abstract void speak()
    {
        System.out.println("bark");
    }
}

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:

public abstract class Foo
{
    public abstract void star();
}

public class Bar
    extends Foo
{
    public abstract void star()
    {
        System.out.println("A");
    }
}

public class Car
    extends Foo
{
    public abstract void star()
    {
        System.out.println("b");
    }
}

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.

TofuBeer
źródło
ah, prawdziwa odpowiedź!
nickf
1
Tak, ale dlaczego właśnie Foo i Bar? Dlaczego nie Lorum i Ipsum?
en.wikipedia.org/wiki/Foo może być dokładne ...
@TofuBeer Tak, są to „zmienne metasyntaktyczne”. @masher widzi moją odpowiedź z mnóstwem referencji wyjaśniających, dlaczego Foo i Bar, a nie Lorem i Ipsum. programmers.stackexchange.com/questions/69788/... W rzeczywistości istnieje mnóstwo różnych zmiennych metazntaktycznych, które były używane przez lata i w różnych miejscach.
Hugo
7

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

Cetra
źródło
to nie wyjaśnia, dlaczego
Znalazłem wiele odniesień do pierwszego „foo”, a później „bar” z MIT, a także DEC (oba w Massachusetts), w ich pracach nad LISP i PDP-1 oraz Project MAC od 1964 roku. To fajny pomysł, ale nie mogłem znaleźć żadnego odniesienia do „odwróconego sygnału foo”. Więcej tutaj: programmers.stackexchange.com/questions/69788/...
Hugo
7

Z plików żargonu http://www.catb.org/jargon/html/F/foo.html

foo: / foo /

  1. interj. Termin obrzydzenia.
  2. [bardzo często] Używany bardzo ogólnie jako przykładowa nazwa absolutnie wszystkiego, szczególnie. programy i pliki (zwłaszcza pliki scratch).
  3. Najpierw na standardowej liście zmiennych metasyntaktycznych używanych w przykładach składni. Zobacz także bar, baz, qux, quux, garply, waldo, fred, plugh, xyzzy, thud.

bar: / bar /, n.

  1. [bardzo często] Druga zmienna metasyntaktyczna, po foo i przed baz. „Załóżmy, że mamy dwie funkcje: FOO i BAR. FOO nazywa się BAR .... ”
  2. Często dołączane do foo do produkcji foobar.
jop
źródło
5

Według http://en.wikipedia.org/wiki/Foo :

Pochodzenie terminów nie jest znane z całą pewnością, a kilka anegdotycznych teorii zostało rozwiniętych w celu ich identyfikacji. Foobar może wywodzić się z wulgarnego akronimu wojskowego FUBAR lub zyskać popularność ze względu na to, że wymawia się go tak samo.

RichieHindle
źródło
4

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.

Walter Mitty
źródło
+1 za to, że był świadkiem jednego z pierwszych zastosowań Foo Baru :) Jak dokładnie były tam używane Foo i Foo Bar?
Hugo
PS Włączyłem twój cytat do mojej wielkiej odpowiedzi: programmers.stackexchange.com/questions/69788/…
Hugo
2

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

Chris
źródło
0

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 ()).

TheTXI
źródło
-3

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.

John
źródło
2
Zauważ, że tuż pod pytaniem znajduje się baner: Szukamy długich odpowiedzi, które zawierają wyjaśnienia i kontekst. Nie udzielaj odpowiedzi w jednym wierszu; wyjaśnij, dlaczego Twoja odpowiedź jest poprawna, najlepiej z cytatami. Odpowiedzi, które nie zawierają wyjaśnień, mogą zostać usunięte. Twoja odpowiedź niewiele wyjaśnia. obecnie jest to tylko opinia.
Martijn Pieters,
Istnieje wiele innych krótkich odpowiedzi. Dlaczego nie przedstawić argumentu, jeśli nie zgadzasz się z tym, co mówię, zamiast wskazywać na techniczność, która nie ma zastosowania?
John
edycja w wersji 2 sprawiła, że ​​ta odpowiedź była jeszcze gorsza niż wcześniej (choć trudno było sobie wyobrazić, co może być gorsze): teraz jest to tylko powtórzenie innej odpowiedzi , która została opublikowana 4 lata temu
gnat