Warum verwenden viele Codebeispiele, insbesondere Tutorials, so oft die Namen "Foo" und "Bar"? Es ist fast ein Standard.
Zum Beispiel:
void foo(char* bar) {
printf("%s", bar);
}
terminology
history
variables
Benutzer15453
quelle
quelle
Antworten:
Foo und Bar stammen vom Akronym FUBAR der US Army, "F-ed Up Beyond All Recognition". Eine ganze Familie dieser Begriffe fand während der nordafrikanischen und sizilianischen Feldzüge (1942-43) breite Verwendung. Rick Atkinsons ausgezeichneter Schlachttag: Der Krieg in Sizilien und Italien, 1943-1944, enthält eine Liste davon. Zum Beispiel ist eine JANFU eine "Joint Army Navy F Up", wie der Vorfall am 11. Juli 1943, als die Invasionsflotte für die Operation Husky 23 Army Air Force C-47-Transporte mit Fallschirmjägern abschoss , um den Brückenkopf zu verstärken.
Update: Wikipedia hat eine Liste verwandter Akronyme, die einige der von Atkinson gelisteten ursprünglichen WWII-Akronyme enthält.
Jeder Programmierer wird die Motivation verstehen, mit foo und bar Variablen zu benennen. Sie waren von Anfang an Teil der C / UNIX-Kultur, und wie @Walter Mitty betont, waren sie älter als sie.
Update (05.10.2009): Hier ist Atkinsons Beschreibung:
Update (23.11.2011): @Hugo hat eine fantastische Liste der nichtmilitärischen Vorfahren.
quelle
Ich denke, es ist die phonetische Aussprache von Fubar.
Welches dafür steht:
quelle
Das New Hacker's Dictionary hat einen sehr guten Eintrag in diesem Bereich - und ich halte es für eine bessere Ressource für diese Art von Dingen als Wikipedia:
quelle
Wikipedia gibt diese Definition der metasyntaktischen Variablen an :
Der Artikel enthält auch allgemeine Beispiele für solche Variablen in verschiedenen Programmiersprachen:
quelle
Hier ist die Antwort von Wikipedia:
http://en.wikipedia.org/wiki/Foo
Und aus RFC 3092:
http://www.faqs.org/rfcs/rfc3092.html
quelle
tl; dr
"Foo" und "bar" als metasyntaktische Variablen wurden von MIT und DEC populär gemacht, die ersten Referenzen sind für LISP und PDP-1 und Project MAC ab 1964 in Arbeit.
Viele dieser Leute waren im Tech Model Railroad Club des MIT, wo wir 1959 die erste dokumentierte Verwendung von "foo" in technischen Kreisen finden (und 1958 eine Variante).
Sowohl "foo" als auch "bar" (und sogar "baz") waren in der Populärkultur bekannt, insbesondere aus Smokey Stover- und Pogo-Comics, die von vielen TMRC-Mitgliedern gelesen wurden.
Auch die militärische FUBAR dürfte zu ihrer Popularität beigetragen haben.
Die Verwendung von einsamem "Foo" als Unsinnwort ist in der Populärkultur des frühen 20. Jahrhunderts ziemlich gut dokumentiert, ebenso wie die militärische FUBAR. (Hintergrundinformationen: FOLDOC FOLDOC Jargon-Datei Jargon-Datei Wikipedia RFC3092 )
OK, also lasst uns ein paar Referenzen finden.
STOP PRESS! Nachdem ich diese Antwort gepostet hatte, entdeckte ich diesen perfekten Artikel über "foo" in der Ausgabe von The Tech ("MITs älteste und größte Zeitung und die erste im Internet veröffentlichte Zeitung"), Band LVII vom 14. Januar 1938 . Nr. 57, Preis drei Cent:
Die Tech-Zeitung , ein Jahr zuvor, der Brief an den Herausgeber, September 1937 :
Und die Tech im Dezember 1938 :
Die erste dokumentierte "foo" in Tech - Kreisen ist wahrscheinlich 1959 ‚s Dictionary of the TMRC Sprache :
Diese werden bei FOLDOC erklärt . Der Compiler des Wörterbuchs, Pete Samson, sagte im Jahr 2005:
Und aus der Jargon-Datei 4.0.0 von 1996 :
Ein Jahr vor dem Wörterbuch TMRC, 1958 ‚s MIT Voo Doo Gazette ( "Humor suplement des MIT Deans' Büros") (PDF) erwähnt Foocom, in "The Laws of Murphy und Finagle" von John Banzhaf (ein Student der Elektrotechnik) :
Auch MIT Voo Doo (PDF) von 1964 verweist auf die Verwendung von TMRC:
Denken wir jedoch daran, dass es sich bei dieser Frage um Codebeispiele handelt. Suchen wir also nach "foo", "bar" und "foobar", die im Code veröffentlicht sind.
Also, Jargon File 4.4.7 sagt von "foobar":
Die erste veröffentlichte Referenz, die ich finden kann, stammt aus dem Februar 1964 , wurde jedoch im Juni 1963 geschrieben. Die Programmiersprache LISP: ihre Funktionsweise und Anwendungen von Information International, Inc., mit vielen Autoren, einschließlich Timothy P. Hart und Michael Levin:
Enthält auch andere metasyntaktische Variablen wie: FOO CROCK GLITCH / POOT TOOR / ON YOU / SNAP CRACKLE POP / XYZ
Ich gehe davon aus, dass dies in etwa der nächsten Referenz von "foo" aus dem Projekt MAC des MIT im Januar 1964 (AIM-064) oder den LISP-Übungen von Timothy P. Hart und Michael Levin entspricht:
Es teilt viele andere metasyntaktische Variablen wie: CHI / BOSTON NEW YORK / SPINACHBUTTER STEAK / FOO CROCK GLITCH / POOT TOOP / TOOT TOOT / ISTHISATRIVIALEXCERCISE / PLOOP FLOT TOP
Für "foo" und "bar" zusammen ist der früheste Hinweis, den ich finden konnte, aus dem Projekt MAC des MIT im Juni 1966 , AIM-098, oder PDP-6 LISP von keinem anderen als Peter Samson:
Noch einige Rückrufe.
@Walter Mitty hat an dieser Stelle im Jahr 2008 zurückgerufen:
John V. Everett erinnert sich 1996:
Daniel PB Smith im Jahr 1998:
Robert Schuldenfrei im Jahr 1996:
Paul M. Wexelblat im Jahr 1992:
Bruce B. Reynolds im Jahr 1996:
Hier ist eine gerade IBM "BAR" aus dem Jahr 1955.
Andere frühe Referenzen:
1967 foo bar MIT AIM-127
1967 foo bar MIT AIM-127a
1965 foo MIT Tech Engineering News
1968 foo baz DEZ
1971 FOO BAR UCLA-NMC RFC269
1972 FOO MIT AI
1972 FOO MIT AI HAKMEM ( PDF-Scan )
1972 FOO DEC
1973 FOO DEC
1973 foo bar Internationaler Gemeinsamer Rat für Künstliche Intelligenz
1975 foo bar Internationaler Gemeinsamer Rat für Künstliche Intelligenz
1977 Foobar
1978 Foobar
1978 Moby Foobar in Software Wars
Ich konnte keine Verweise auf foo bar als "invertiertes foo-Signal" finden, wie in RFC3092 und anderswo vorgeschlagen.
Hier sind einige noch frühere F00s, aber ich denke, sie sind Zufälle / Fehlalarme:
1959 "FOO 31 IBM-704 Bettis Plant verwendet eine Methode der kleinsten Quadrate" US Atomic Energy Commission
1960 FOO (FO Out, F1, F2, FOO, FOI) "Digitaler Computer und Steuerungstechnik"
1967 FOO?
quelle
Wenn Sie Wörter wie "foo" und "bar" verwenden, konzentrieren Sie sich auf das Konzept und nicht auf das, was Sie anhand der Ihnen bekannten Begriffe verstehen können. Zum Beispiel:
Mit dem obigen Code können Sie auf Ihre Kenntnisse der realen Welt zurückgreifen.
Wenn Sie versuchen, ein Konzept zu erklären, bei dem es nicht darum geht, was gerade getan wird (z. B. Miauen oder Bellen), sondern darum, wie es getan wird, entfernen Sie die Ihnen bekannten Teile.
Jetzt muss man sich auf das konzentrieren, was wirklich passiert, man kann nicht mehr erraten, was passieren wird.
Die Kurzversion besagt also, dass foo, bar und dergleichen verwendet werden, um Konzepte hervorzuheben, bei denen der Inhalt keine Rolle spielt, die Idee aber.
quelle
Aus http://en.wikipedia.org/wiki/Foobar
In der Technologie wurde das Wort wahrscheinlich ursprünglich in den 1960er und frühen 1970er Jahren durch Systemhandbücher der Digital Equipment Corporation verbreitet. Eine andere Möglichkeit besteht darin, dass sich der Fobar aus der Elektronik als invertiertes Foo-Signal entwickelt hat. Dies liegt daran, dass, wenn ein Digitalsignal aktiv niedrig ist (ein negativer oder spannungsfreier Zustand also eine "1" darstellt), üblicherweise ein horizontaler Balken über dem Signaletikett platziert wird. Die Jargon-Datei macht einen Fall, dass Foo möglicherweise älter als FUBAR ist
quelle
Aus den Jargon-Dateien http://www.catb.org/jargon/html/F/foo.html
foo: / foo /
bar: / bar /, n.
quelle
Laut http://en.wikipedia.org/wiki/Foo :
quelle
Ich habe die Jargondatei in Bezug auf Foo Bar gelesen.
Ich kann es mindestens bis 1963 zurückverfolgen und die PDP-1-Seriennummer 2, die sich im zweiten Stock des Gebäudes 26 am MIT befand. Foo und Foo Bar wurden dort und nach 1964 im PDP-6-Raum des Projekts MAC eingesetzt.
quelle
Soweit ich weiß, kommt foo von foobar die eine Änderung von "fubar" ist, eine militärische Fang phraase die für steht " F *** ed u p b eyond a ll r eCognition."
Andererseits kann es andere Quellen geben.
http://en.wikipedia.org/wiki/Foo
quelle
Foo und Bar (auch bekannt als FUBAR ... F *** ed Up Beyond All Recognition) wurden gerade als generische Standardnamen für Dinge wie Klassen, Eigenschaften, Methodennamen usw. verwendet.
Grundsätzlich besteht die Idee darin, Ihren Code ohne so viele irrelevante Informationen zu übermitteln, die möglicherweise von der Funktionsweise des Codes abweichen könnten (dh wir müssen nicht wissen, dass Ihre Funktion AddUser heißt, um den Code zu sehen und zu verstehen, was er tut, wenn wir ihn umbenennen zu Foo ()).
quelle
Dies sind Unsinnwörter, die in den meisten Fällen durch relevantere Beispielwörter ersetzt werden können. Die Wörter "foo" und "bar" werden häufig beim Programmieren verwendet, wenn jemand kein gutes Beispiel findet.
Wenn "foo" und "bar" von FUBAR abgeleitet sind, warum werden sie dann von so vielen Fachleuten in Anweisungsbeispielen verwendet, wenn die Beispiele nichts ähneln, was bis zur Unkenntlichkeit ausgedacht wurde?
Für mich ist die übliche Verwendung dieser Wörter unangemessen, was bis zur Unkenntlichkeit so aufgefallen ist.
quelle