Wie ist die Geschichte der Verwendung von "foo" und "bar" in Quellcodebeispielen?

60

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);
}
Benutzer15453
quelle
2
Es sieht so aus, als ob keiner von fmsfs Posts vor RichBs Mobbing sicher ist.
Ja, er liebt es zu ändern, was ich schreibe, ich fange an zu glauben, dass er davon besessen ist
4
die "warum foo bar?" Titel ist nicht sehr gut, IMHO
Jeff Atwood
1
Ich habe eine Antwort mit der korrekten Etymologie (es ist das populärste von einer Familie von Begriffen der US-Armee aus dem Zweiten Weltkrieg) und meiner Quelle hinzugefügt.
Es ist ein Mem - eine mitteilbare Idee. Es ist seine eigene Rechtfertigung.
Mike Dunlavey

Antworten:

65

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:

Ihre durchdringende "Zivilität" ließ sie vor kriegerischem Eifer zurückschrecken. "Wir waren keine Romantiker, die sich mit Umhang und Schwert beschäftigten", schrieb John Mason Brown, ein Leutnant der Navy Reserve auf dem Weg nach Sizilien. "Der letzte Krieg war zu nahe." Das Militärleben entzündete ihre ironische Sensibilität und ihre Skepsis. Ein einzelnes grobes Akronym, das die gesunkenen Erwartungen des Soldaten einfing - SNAFU, "Situation normal, alles beschissen" - hatte sich zu einem Vokabular des GI-Zynismus erweitert: SUSFU (Situation unverändert, immer noch beschissen); FUMTU (mehr als üblich beschissen); JANFU (gemeinsamer Fick zwischen Armee und Marine); JAAFU (gemeinsamer angloamerikanischer Mist); FUAFUP (beschissen und ordentlich beschissen); und FUBAR (bis zur Unkenntlichkeit beschissen) [Atkinson, p. 36].

Update (23.11.2011): @Hugo hat eine fantastische Liste der nichtmilitärischen Vorfahren.

Jim Ferrans
quelle
3
Zur Etymologie hinzufügen: "FUBAR wurde möglicherweise durch das deutsche Wort furchtbar beeinflusst, was schrecklich bedeutet. Es wird mit einem weichen cht ausgesprochen und hat wahrscheinlich den Übergang während des Zweiten Weltkriegs geschafft."
Mark
4
@ Mark, die deutsche Wikipedia (de.wikipedia.org/wiki/Fubar), schlägt vor, dass dies eine Pseudoetymologie sein könnte. Es verweist auch auf Vorfahren wie das "SILENCE IS FOO" -Schild in Warner Brothers 1938-Cartoon "The Daffy Doc".
4
@ Jim Ferrans: Während FUBAR wahrscheinlich die Verwendung von "bar" mit "foo" beeinflusste, gibt es starke Beweise dafür, dass "foo" von sich aus gut vor dem Zweiten Weltkrieg war, mit Hinweisen zumindest aus den 1930er Jahren, wie Ihr Kommentar zeigt. Es könnte gut sein, dies in Ihrer Antwort zu erwähnen.
Daniel Pryden
Ja, foo geht definitiv dem Zweiten Weltkrieg voraus. Tatsächlich habe ich einen Zeitungsartikel des MIT aus dem Jahr 1938 gefunden, aus dem hervorgeht, wie häufig es war: "Natürlich hat" foo! "Eine eindeutige und wahrscheinlich unersetzliche Position in unserer Sprache, obwohl wir befürchten, dass das Exzessive Eine Nutzung, der es gegenwärtig ausgesetzt ist, kann durchaus dazu führen, dass es in eine frühe (und leider auch dunkle) Vergessenheit gerät. " Siehe meine Antwort für mehr und eine Referenz von 1937 in derselben Zeitung: programmers.stackexchange.com/questions/69788/…
Hugo
59

Ich denke, es ist die phonetische Aussprache von Fubar.

Welches dafür steht:

  • F * cked
  • Nach oben
  • Darüber hinaus
  • Alle
  • Reparatur
FlySwat
quelle
18
Reparatur oder Anerkennung; P
10
"Fouled" wird oft verwendet, wenn man höflich sein muss.
30
Reparatur? nah .. Anerkennung
hasen
6
Es ist "Anerkennung". Siehe Zitat von Rick Atkinsons Tag der Schlacht hier: stackoverflow.com/questions/262271/…
7
Nur eine Bemerkung, dass es starke Beweise gibt (siehe RFC 3092, die Jargon-Datei und andere Antworten hier), dass "foo" in den 1930er Jahren als ein Platzhalter-Unsinn-Wort verwendet wurde, lange bevor FUBAR in die Militärsprache im Zweiten Weltkrieg eintrat.
Daniel Pryden
41

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:

metasyntaktische Variable /n./

Ein Name, der in Beispielen verwendet wird und so verstanden wird, dass er für alles steht, worüber diskutiert wird, oder für ein beliebiges Mitglied einer Klasse von Dingen, über die diskutiert wird. Das Wort foo ist das kanonische Beispiel. Um Verwirrung zu vermeiden, verwenden Hacker niemals (naja, kaum) "foo" oder ähnliche Wörter als dauerhafte Namen für irgendetwas. In Dateinamen ist eine übliche Konvention, dass jeder Dateiname, der mit einem metasyntaktischen Variablennamen beginnt, eine Arbeitsdatei ist, die jederzeit gelöscht werden kann.

In gewissem Maße ist die Liste der bevorzugten metasyntaktischen Variablen eine kulturelle Signatur. Sie treten sowohl in Serien (für verwandte Gruppen von Variablen oder Objekten) als auch als Singletons auf. Hier sind einige gebräuchliche Signaturen:

foo, bar, baz, quux, quuux, quuuux ...:
MIT / Stanford-Verwendung, jetzt überall zu finden (hauptsächlich dank früherer Versionen dieses Lexikons!). Am MIT (aber nicht in Stanford) wurde Baz in den 1970er und 1980er Jahren für eine Weile nicht mehr verwendet. Eine häufige kürzliche Mutation dieser Sequenz fügt qux vor quux ein.

bazola, ztesch:
Stanford (ab Mitte der 70er Jahre).

Foo, Bar, Thud, Grunzen:
Diese Serie war auf der CMU sehr beliebt. Andere CMU-assoziierte Variablen umfassen gorp.

foo, bar, fum:
Es wird berichtet, dass diese Serie bei XEROX PARC weit verbreitet ist.

Fred, Barney:
Siehe den Eintrag für Fred. Dies sind in der Regel Briten.

corge, grault, flarp:
Beliebt an der Rutgers University und bei GOSMACS-Hackern.

zxc, spqr, wombat:
Universität Cambridge (England).

shme
Berkeley, GeoWorks, Ingres. Ausgesprochen / shme / mit einem kurzen / e /.

Schnorchel
Brown University, Anfang der 1970er Jahre.

foo, bar, zot
Technische Universität Helsinki, Finnland.

blarg, wibble
Neuseeland.

Toto, Titi, Tata, Tutu
Frankreich.

pippo, pluto, paperino
Italien. Pippo / pee'po / und Paperino / pa-per-ee'-no / sind die italienischen Namen für Goofy und Donald Duck.

aap, noot, mies
Niederlande. Dies sind die ersten Wörter, mit denen ein Kind lernte, auf einer niederländischen Rechtschreibtafel zu schreiben.

Von alledem sind nur 'foo' und 'bar' universell (und fast so). Die Verbindungen Foobar und Foobaz erfreuen sich ebenfalls einer sehr breiten Verbreitung.

Einige Jargonbegriffe werden auch als metasyntaktische Namen verwendet. barf and mumble zum Beispiel. Siehe auch Commonwealth Hackish zur Diskussion zahlreicher metasyntaktischer Variablen in Großbritannien und im Commonwealth.

ColinYounger
quelle
Ich muss sagen, ich komme aus Neuseeland und habe noch nie von "Blarg" ODER "Wibble" gehört.
Das war einer ziemlich gut. Es ist aufwendig. Danke Alter.
Tarik
OMG, mein QL-Account ist qux. Schockiert ...
@Colin - Ich habe den Link zu einer anderen Seite geändert, da die vorhandene Seite offline war.
dort
Ich fand einige andere interessante metasyntaktische Variablen aus einer MIT 1964-Veröffentlichung über LISP (die natürlich auch foo hatte): Chi / Boston New York / Spinatbuttersteak / Foo Crock Glitch / Poot Toop / Toot Toot / Isthisatrivialexcercise / Ploop Flot Top / Snap Knistern Pop / eins zwei drei / Flugzeug Subdrescher. Siehe meine Antwort für weitere Informationen: programmers.stackexchange.com/questions/69788/…
Hugo
25

Wikipedia gibt diese Definition der metasyntaktischen Variablen an :

In der Informatik verwenden Programmierer metasyntaktische Variablen, um einen Platzhalternamen oder einen Alias-Begriff zu beschreiben, der üblicherweise verwendet wird, um den zu diskutierenden Gegenstand oder ein beliebiges Mitglied einer Klasse von zu diskutierenden Dingen zu bezeichnen. Die Verwendung einer metasyntaktischen Variablen ist hilfreich, um einen Programmierer von der Erstellung einer logisch benannten Variablen zu befreien. Dies ist häufig hilfreich, wenn Beispiele für einen Algorithmus erstellt oder vermittelt werden. Das Wort foo ist das Hauptbeispiel.
Der Begriff "metasyntaktische Variable" findet sich hauptsächlich in der informellen Literatur. Es wird manchmal auch als Synonym für Metavariable verwendet.
Jedes Symbol oder Wort, das nicht gegen die Regeln der Sprache verstößt, kann als metasyntaktische Variable verwendet werden, aber häufig werden unsinnige Wörter verwendet. Das gleiche Konzept wird in anderen Bereichen verwendet, wo es durch Begriffe wie schematische Variablen ausgedrückt wird (siehe logische Form ).
In mathematischer Analogie: Eine metasyntaktische Variable ist ein Wort, das eine Variable für andere Wörter ist, genau wie in der Algebra Buchstaben als Variablen für Zahlen verwendet werden.

Der Artikel enthält auch allgemeine Beispiele für solche Variablen in verschiedenen Programmiersprachen:

C
Im folgenden Beispiel der Programmiersprache C sind der Funktionsname foo und die Variablennamenleiste beide metasyntaktische Variablen. Zeilen, die mit // beginnen, sind Kommentare.

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

   return bar;
}

Python

Spam, Schinken und Eier sind die wichtigsten metasyntaktischen Variablen, die in der Programmiersprache Python verwendet werden. [5] Dies ist ein Hinweis auf die berühmte Comedy-Skizze Spam von Monty Python, dem Namensgeber der Sprache. [6] Im folgenden Beispiel sind Spam, Schinken und Eier metasyntaktische Variablen und Zeilen, die mit # beginnen, sind Kommentare.

# Define a function named spam
def spam():

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

    #define the variable eggs
    eggs = 1

    return

Rubin

Im folgenden Beispiel sind baz, foo und bar metasyntaktische Variablen und Zeilen, die mit # beginnen, sind Kommentare.

# 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
quelle
19

Hier ist die Antwort von Wikipedia:

Die Begriffe foobar, foo, bar und baz sind gebräuchliche Platzhalternamen (auch als metasyntaktische Variablen bezeichnet), die in der Computerprogrammierung oder in der computerbezogenen Dokumentation verwendet werden. Sie werden häufig verwendet, um unbekannte Werte darzustellen, typischerweise wenn ein Szenario beschrieben wird, in dem der Zweck der unbekannten Werte verstanden wird, ihre genauen Werte jedoch willkürlich und unwichtig sind. Die Begriffe können verwendet werden, um einen beliebigen Teil eines komplizierten Systems oder einer Idee darzustellen, einschließlich der Daten, Variablen, Funktionen und Befehle. Die Wörter selbst haben in dieser Verwendung keine Bedeutung und sind lediglich logische Darstellungen, ähnlich wie die Buchstaben x und y in der Algebra verwendet werden. Foobar wird oft alleine verwendet; foo, bar und baz werden normalerweise in dieser Reihenfolge verwendet, wenn mehrere Entitäten benötigt werden.

Foo ist als Neologismus in die englische Sprache eingetreten und wird von vielen als kanonisches Beispiel für eine metasyntaktische Variable angesehen. Es wird häufig in Computerprogrammierbeispielen (manchmal als "nur einmal" ausgedrückt) und Pseudocode verwendet. Eric S. Raymond hat es neben Kludge und Cruft als "wichtigen Hackerismus" bezeichnet. [1]

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

Und aus RFC 3092:

Wenn es in Verbindung mit "Bar" verwendet wird, ist es im Allgemeinen auf das Armee-Slang-Akronym FUBAR ("Fucked Up Beyond All Repair") zurückzuführen, das später in "Foobar" geändert wurde. Frühe Versionen der Jargon-Akte [JARGON] interpretierten diese Änderung als eine Bowdlerisierung nach dem Krieg, aber es scheint jetzt wahrscheinlicher, dass FUBAR selbst eine Ableitung von 'foo' war, vielleicht beeinflusst von den deutschen 'furchtbar' - 'foobar' may war eigentlich die ursprüngliche form.

Denn wie es scheint, hatte das Wort "foo" selbst in Comics und Cartoons eine unmittelbare Vorkriegsgeschichte. In der Warner Brothers-Karikatur von 1938 unter der Regie von Robert Clampett, "The Daffy Doc", hält eine sehr frühe Version von Daffy Duck ein Schild mit der Aufschrift "SILENCE IS FOO!" Hoch ... (snip)

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

Daniel A. White
quelle
6
oder man könnte einfach zugeben, es kommt von fubar = "f" bis zur Unkenntlichkeit "
Jonathan Fingland
4
@ Jonathan Fingland: Nein, tut es nicht. (Tatsächlich ist "foo" wahrscheinlich älter als "foobar" und "FUBAR".) Siehe RFC 3092 und den Jargon-Dateieintrag für "foo".
Daniel Pryden
@ Daniel, ausgezeichnete Referenz. Hinzugefügt
Jonathan Fingland
19

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:

Auf Foo-ismus

Der Lounger ist der Ansicht, dass dieses Geschäft des Foo-Ismus von seinen irreführenden Befürwortern zu weit vorangetrieben wurde, und tritt hiermit und unverzüglich seinem Missbrauch entgegen. Es mag sein, dass es kein Foo wie ein altes Foo gibt, und wir sind es, aber auf jeden Fall sind ein Foo und sein Geld eine Party. (Stimme von der Tribüne - "Sei nicht albern!")

Als Explosivstoff natürlich "foo!" hat eine eindeutige und wahrscheinlich unersetzliche Position in unserer Sprache, obwohl wir befürchten, dass der exzessive Gebrauch, dem es derzeit ausgesetzt ist, dazu führen könnte, dass es in eine frühe (und leider dunkle) Vergessenheit gerät. Wir sagen leider, weil die richtige Verwendung des Wortes zu so glücklichen Vorfällen wie den folgenden führen kann.

Es war eine Vorlesung über Thermodynamik um 8.50 Uhr von Professor Slater in Raum 6-120. Nachdem der Professor die Vorderseite der Tafel verdeckt hatte, stellte er den Griff für den Hebemechanismus ein und wandte sich der Klasse zu, um die Diskussion fortzusetzen. Das vordere Brett hob sich langsam und majestätisch und enthüllte das Brett dahinter. Auf dieses Brett wurden die Symbole mit der Aufschrift "FOO" groß geschrieben.

Die Tech-Zeitung , ein Jahr zuvor, der Brief an den Herausgeber, September 1937 :

Bis der Zug den Bahnhof erreicht hat, sind die Neophyten so voll mit den Geschichten über den Ruhm von Phi Omicron Omicron, normalerweise als Foo bezeichnet, dass sie eine leichte Beute sind.

...

Es macht mir nichts aus, meine ersten vier Söhne an die Große und Universelle Bruderschaft von Phi Omicron Omicron verloren zu haben, aber ich wünsche mir, dass mein fünfter Sohn, mein Baby, zumindest im Voraus gewarnt wird.

Hoffentlich deins

Empörte Mutter von fünf Kindern.

Und die Tech im Dezember 1938 :

Die allgemeine Denkrichtung lässt sich am besten anhand der Bemerkungen am Ende der Stimmzettel interpretieren. Eine Stimme sagte: "Ich glaube, was ich tue, geht Pulver nichts an", während eine andere nur ein kurzes "Foo" hinzufügte.


Die erste dokumentierte "foo" in Tech - Kreisen ist wahrscheinlich 1959 ‚s Dictionary of the TMRC Sprache :

FOO: die heilige Silbe (FOO MANI PADME HUM); nur unter Inspiration zu sprechen, um mit der Gottheit zu kommunizieren. Unsere erste Verpflichtung ist es, die Foo Counter am Laufen zu halten.

Diese werden bei FOLDOC erklärt . Der Compiler des Wörterbuchs, Pete Samson, sagte im Jahr 2005:

Die Verwendung dieses Wortes bei TMRC geht meiner Ankunft dort voraus. Ein foo-Zähler kann einfach zufällig blinkende Lichter haben oder ein echter Zähler mit einer undurchsichtigen Eingabe sein.

Und aus der Jargon-Datei 4.0.0 von 1996 :

Frühere Versionen dieses Lexikons haben "baz" als Stanford-Korruption von bar abgeleitet. Pete Samson (Compiler des TMRC-Lexikons) berichtet jedoch, dass es bereits aktuell war, als er 1958 zu TMRC kam. Er sagt, "Es kam von" Pogo ". Albert der Alligator würde, wenn er verärgert oder empört wäre," Bazz Fazz! " oder "Rowrbazzle!" Das Clublayout soll die (mythischen) Grafschaften von New England in Rowrfolk und Bassex modellieren (Rowrbazzle vermischt mit (Norfolk / Suffolk / Middlesex / Essex). "

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

Weitere Forschungen im Rahmen eines gemeinsamen Foocom- und Anarcom-Stipendiums haben das Gesetz so erweitert, dass es umfassend und universell anwendbar ist: Wenn etwas schief gehen kann, wird es!

Auch MIT Voo Doo (PDF) von 1964 verweist auf die Verwendung von TMRC:

Ja! Ich möchte sofort ein Erfolgs- und Schneekunde sein. Senden Sie mir einen Abschluss in: ...

  • Foo Zähler

  • Foo Jung


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

Vermutlich ursprünglich in den 1960er und frühen 1970er Jahren durch DECsystem-Handbücher der Digital Equipment Corporation (DEC) verbreitet; bestätigte Sichtungen gehen auf das Jahr 1972 zurück.

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:

Da "FOO" ein Name für sich selbst ist, wird "COMITRIN" sowohl "FOO" als auch "(FOO)" genauso behandeln.

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:

Auto [((FOO. CROCK). GLITCH)]

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:

EXPLODE fügt wie PRIN1 Schrägstriche ein, also (EXPLODE (QUOTE FOO / BAR)) PRIN1 als (FOO // / BAR) oder PRINC als (FOO / BAR).


Noch einige Rückrufe.

@Walter Mitty hat an dieser Stelle im Jahr 2008 zurückgerufen:

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.

John V. Everett erinnert sich 1996:

Als ich 1966 zu DEC kam, wurde Foobar bereits häufig als Wegwerfdateiname verwendet. Ich glaube, fubar wurde foobar, weil der PDP-6 sechs Zeichennamen unterstützte, obwohl ich immer davon ausging, dass der Begriff vom MIT auf DEC migriert wurde. Bei DEC gab es damals viele MIT-Typen, von denen einige mit dem CTSS 7090/7094 gearbeitet hatten. Da die 709x auch eine 36-Bit-Maschine war, wurde dort möglicherweise Foobar als gemeinsamer Dateiname verwendet.

Foo und Bar wurden auch häufig als Dateierweiterungen verwendet. Da die damaligen Texteditoren eine Eingabedatei bearbeiteten und eine Ausgabedatei erstellten, war es üblich, eine .foo-Datei in eine .bar-Datei und wieder zurück zu ändern.

Es war auch üblich, bei der Bearbeitung mit TECO foo zu verwenden, um einen Puffer zu füllen. Die Textzeichenfolge zum genauen Füllen eines Plattenblocks lautete IFOO $ HXA127GA $$. Fast alle PDP-6/10-Programmierer, mit denen ich gearbeitet habe, verwendeten dieselbe Befehlszeichenfolge.

Daniel PB Smith im Jahr 1998:

Dick Gruen hatte ein Gerät in seinem Schlafsaal, die übliche Zusammenstellung von B-Batterie, Widerständen, Kondensatoren und NE-2-Neonröhren, die er einen "foo counter" nannte. Dies wäre etwa 1964 gewesen.

Robert Schuldenfrei im Jahr 1996:

Die Verwendung von FOO und BAR als Beispielvariablennamen geht mindestens auf 1964 und die IBM 7070 zurück. Auch dies mag älter sein, aber hier habe ich es zum ersten Mal gesehen. Das war in Assembler. Was wäre das FORTRAN-Ganzzahläquivalent? IFOO und IBAR?

Paul M. Wexelblat im Jahr 1992:

Der früheste PDP-1-Assembler verwendete zwei Zeichen für Symbole (18-Bit-Computer). Programmierer ließen immer ein paar Wörter als Patch-Speicherplatz übrig, um Probleme zu beheben. (Springe zum Patch-Bereich, mache neuen Code, springe zurück) Dieser Bereich hieß herkömmlicherweise FU: was für Fxxx Up stand, den Ort, an dem du Fxxx Ups repariert hast. Wenn gesprochen, war es als FU-Raum bekannt. Spätere Assembler (z. B. MIDAS erlaubte drei Zeichen-Tags, sodass FU zu FOO wurde, und wie ALLE PDP-1-Programmierer werden Sie feststellen, dass dies FOO-Speicherplatz war.

Bruce B. Reynolds im Jahr 1996:

Auf der IBM-Seite von FOO (FU) BAR wird die BAR-Seite als Basisadressregister verwendet. Mitte der 1970er Jahre mussten sich CICS-Programmierer um die verschiedenen xxxBARs kümmern ... Ich denke, einer davon war FRACTBAR ...

Hier ist eine gerade IBM "BAR" aus dem Jahr 1955.


Andere frühe Referenzen:


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:

Hugo
quelle
13

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:

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");
    }
}

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.

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");
    }
}

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.

TofuBeer
quelle
ah, eine echte Antwort!
Nickf
1
Ja, aber warum speziell Foo und Bar? Warum nicht Lorum und Ipsum?
en.wikipedia.org/wiki/Foo könnte genau sein ...
@TofuBeer Ja, sie sind "metasyntaktische Variablen". @masher siehe meine Antwort mit vielen Hinweisen, warum Foo und Bar und nicht Lorem und Ipsum. programmers.stackexchange.com/questions/69788/... In der Tat, es gibt viele verschiedene Metasyntaktische Variable , die im Laufe der Jahre verwendet wurde, und an verschiedenen Orten.
Hugo
7

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

Cetra
quelle
dies erklärt nicht die , warum
Ich habe viele Referenzen von "foo" und später "bar" vom MIT und auch von DEC (beide in Massachusetts) in ihrer Arbeit an LISP und dem PDP-1 und Project MAC ab 1964 gefunden. Es ist eine nette Idee, aber ich konnte keinen Hinweis auf ein "invertiertes foo-Signal" finden. Mehr hier: programmers.stackexchange.com/questions/69788/…
Hugo
7

Aus den Jargon-Dateien http://www.catb.org/jargon/html/F/foo.html

foo: / foo /

  1. Interj. Dauer des Ekels.
  2. [sehr gebräuchlich] Wird allgemein als Beispielname für absolut alles verwendet, insb. Programme und Dateien (insbesondere Arbeitsdateien).
  3. Zuerst in der Standardliste der in Syntaxbeispielen verwendeten metasyntaktischen Variablen. Siehe auch bar, baz, qux, quux, garply, waldo, fred, plugh, xyzzy, thud.

bar: / bar /, n.

  1. [sehr häufig] Die zweite metasyntaktische Variable nach foo und vor baz. „Nehmen wir an, wir haben zwei Funktionen: FOO und BAR. FOO ruft BAR ... "
  2. Oft an foo angehängt, um foobar zu produzieren.
jop
quelle
5

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

Die Ursprünge der Begriffe sind nicht mit Sicherheit bekannt, und es wurden mehrere anekdotische Theorien aufgestellt, um sie zu identifizieren. Foobar kann vom vulgären militärischen Akronym FUBAR abgeleitet sein, oder es hat an Popularität gewonnen, weil es gleich ausgesprochen wird.

RichieHindle
quelle
4

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.

Walter Mitty
quelle
+1 für das Erleben einer der frühesten Verwendungen von Foo Bar :) Wie genau wurden Foo und Foo Bar dort tatsächlich verwendet?
Hugo
PS Ich habe Ihr Zitat in meine große Antwort aufgenommen: programmers.stackexchange.com/questions/69788/…
Hugo
2

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

Chris
quelle
0

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

TheTXI
quelle
-3

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.

John
quelle
2
Beachten Sie, dass sich direkt unter der Frage ein Banner befindet: Wir suchen nach langen Antworten, die eine Erklärung und einen Kontext bieten. Geben Sie nicht nur eine einzeilige Antwort; Erklären Sie, warum Ihre Antwort richtig ist, idealerweise mit Zitaten. Antworten, die keine Erklärungen enthalten, werden möglicherweise entfernt. Ihre Antwort bietet wenig Erklärung; Derzeit ist es nur eine Meinung.
Martijn Pieters
Es gibt viele andere kurze Antworten. Warum nicht ein Argument vorbringen, wenn Sie mit dem, was ich sage, nicht einverstanden sind, anstatt auf eine Technik hinzuweisen, die nicht zutrifft?
John
edit in rev 2 hat diese antwort noch schlimmer gemacht als zuvor (obwohl es schwer vorstellbar war, was schlimmer sein könnte): jetzt ist es nur eine wiederholung einer weiteren antwort , die vor 4
jahren