Pourquoi de nombreux exemples de code, notamment des didacticiels, utilisent-ils les noms "Foo" et "Bar" si souvent? C'est presque une norme.
Par exemple:
void foo(char* bar) {
printf("%s", bar);
}
terminology
history
variables
utilisateur15453
la source
la source
Réponses:
Foo et Bar proviennent de l'acronyme FUBAR de la US WWII, "F-ed Up Beyond All Recognition". Toute une famille de ces termes est devenue très répandue au cours des campagnes nord-africaine et sicilienne (1942-1943). L'excellent jour de bataille de Rick Atkinson : La guerre en Sicile et en Italie, 1943-1944, en donne une liste. Par exemple, une JANFU est une "unité mixte de la marine et de l'armée", comme l'incident du 11 juillet 1943, lorsque la flotte d'invasion de l' opération Husky a abattu 23 véhicules de transport de l' armée de l'air C-47 transportant des parachutistes pour renforcer la tête de pont.
Mise à jour: Wikipedia a une liste d’acronymes apparentés qui incluent certains des acronymes originaux de la Seconde Guerre mondiale répertoriés par Atkinson.
Tout programmeur comprendra la motivation pour utiliser foo et bar pour nommer des variables. Ils font certainement partie de la culture C / UNIX depuis le début et, comme le souligne @Walter Mitty, l'ont précédée.
Mise à jour (10/5/2009): Voici la description d'Atkinson:
Mise à jour (23/11/2011): @Hugo a une liste fantastique d'antécédents non militaires.
la source
Je pense que c'est la prononciation phonétique de fubar.
Qui veut dire:
la source
Le dictionnaire du nouveau pirate informatique a une très bonne entrée à ce sujet - et je considère que c'est une meilleure ressource pour ce genre de choses que Wikipedia:
la source
Wikipedia donne cette définition de variable métasyntaxique :
L'article donne également des exemples courants de telles variables dans différents langages de programmation:
la source
Voici la réponse de Wikipédia:
http://en.wikipedia.org/wiki/Foo
Et de la RFC 3092:
http://www.faqs.org/rfcs/rfc3092.html
la source
tl; dr
"Foo" et "bar" en tant que variables métasyntaxiques ont été popularisés par le MIT et le DEC, les premières références sont en cours de travail sur LISP, le PDP-1 et le projet MAC à partir de 1964.
Un grand nombre de ces personnes appartenaient au Tech Model Railroad Club du MIT, où nous trouvons la première utilisation documentée de «foo» dans les cercles technologiques en 1959 (et une variante en 1958).
Les mots "foo" et "bar" (et même "baz") étaient bien connus dans la culture populaire, en particulier dans les bandes dessinées de Smokey Stover et de Pogo, qui auront été lus par de nombreux membres du TMRC.
En outre, il semble probable que les militaires FUBAR ont contribué à leur popularité.
L'utilisation de "foo" seul comme mot non-sens est assez bien documentée dans la culture populaire au début du 20ème siècle, tout comme le militaire FUBAR. ( Un peu de lecture de fond: FOLDOC FOLDOC Jargon fichier Jargon Fichier Wikipedia RFC3092 )
OK, trouvons quelques références.
STOP PRESSE! Après avoir posté cette réponse, j'ai découvert cet article parfait sur "foo" dans l' édition du vendredi 14 janvier 1938 de The Tech ("Le plus ancien et le plus grand journal du MIT et le premier journal publié sur le Web"), volume LVII. N ° 57, Prix Trois cents:
Le journal Tech , un an plus tôt, la lettre au rédacteur en chef, septembre 1937 :
Et le Tech en décembre 1938 :
Le premier "foo" documenté dans les cercles technologiques est probablement le Dictionnaire du langage TMRC de 1959 :
Celles-ci sont expliquées à FOLDOC . Le compilateur du dictionnaire Pete Samson a déclaré en 2005:
Et à partir du fichier de jargon 4.0.0 de 1996 :
Un an avant le dictionnaire TMRC, le MIT Voo Doo Gazette de 1958 ("Supplément humoristique du bureau des doyens du MIT") (PDF) mentionne Foocom dans "Les lois de Murphy et Finagle" de John Banzhaf (étudiant en génie électrique) :
Le MIT Voo Doo (PDF) de 1964 fait également référence à l’utilisation du TMRC:
Mais rappelons-nous que cette question concerne les exemples de code, trouvons donc "foo", "bar" et "foobar" publiés dans le code.
Ainsi, le fichier de jargon 4.4.7 dit de "foobar":
La première référence publiée que je puisse trouver date de février 1964 , mais a été écrite en juin 1963, Le langage de programmation LISP: son fonctionnement et ses applications par Information International, Inc., avec de nombreux auteurs, mais comprenant Timothy P. Hart et Michael Levin:
Inclut également d'autres variables métasyntaxiques telles que: FOO CROCK GLITCH / POOT TOOR / ON YOU / SNAP CRACKLE POP / XYZ
Je pense que cela correspond à peu près à la même référence à "foo" du projet MAC du MIT en janvier 1964 dans le document AIM-064, ou exercices LISP de Timothy P. Hart et Michael Levin:
Il partage de nombreuses autres variables métasyntaxiques telles que: CHI / BOSTON NEW YORK / ÉPINARD BUTTER STEAK / FOO CROCK GLITCH / POOT TOOP / TOOT TOOT / ISTHISATRIVIALEXCERCISE / PLOOP FLOT TOP / SNAP CRACKLE POP / UN TWO THREE / PLANE SUB THREE
La première référence que j'ai pu trouver provient à la fois du projet MAC du MIT, publié en juin 1966 dans le document AIM-098, ou PDP-6 LISP, de Peter Samson:
Quelques autres rappels.
@Walter Mitty a rappelé sur ce site en 2008:
John V. Everett rappelle en 1996:
Daniel PB Smith en 1998:
Robert Schuldenfrei en 1996:
Paul M. Wexelblat en 1992:
Bruce B. Reynolds en 1996:
Voici un IBM "BAR" hétéro de 1955.
Autres premières références:
Foo bar de 1967 MIT AIM-127
Foo bar de 1967 MIT AIM-127a
1965 foo MIT Tech Engineering News
1968 foo baz DEC
FOO BAR 1971 UCLA-NMC RFC269
1972 FOO MIT AI
1972 FOO MIT AI HAKMEM ( numérisation PDF )
1972 FOO DEC
1973 FOO DEC
1973 foo bar Conseil mixte international sur l'intelligence artificielle
1975 foo bar Conseil international mixte sur l'intelligence artificielle
Foobar 1977
Foobar 1978
1978 Moby Foobar dans la guerre des logiciels
Je n'ai pas été en mesure de trouver de références à la barre foo en tant que "signal foo inversé" comme suggéré dans la RFC3092 et ailleurs.
Voici quelques-uns des F00 encore antérieurs, mais je pense qu’ils sont des coïncidences / faux positifs:
1959 "L’usine FOO 31 IBM-704 Bettis utilise une technique des moindres carrés" US Atomic Energy Commission
1960 FOO (FO Out, F1, F2, FOO, FOI) "Ingénierie de calcul numérique"
1967 FOO?
la source
en utilisant des mots tels que "foo" et "bar", concentrez-vous sur le concept et non sur ce que vous pouvez saisir en fonction des termes que vous connaissez. Par exemple:
Le code ci-dessus vous permet de vous baser sur votre connaissance des choses du monde réel.
Si vous essayez d'expliquer un concept où la partie importante n'est pas ce qui est fait (impression de miaou ou d'écorce, par exemple), mais sur la façon dont cela se fait, supprimez les parties que vous connaissez bien:
Maintenant, vous devez vous concentrer sur ce qui se passe réellement, vous ne pouvez plus deviner ce qui va se passer.
Ainsi, la version courte est que foo, bar, etc. sont utilisés pour souligner des concepts dont le contenu importe peu, mais pas l’idée.
la source
De http://en.wikipedia.org/wiki/Foobar
En technologie, le mot a probablement été propagé à l’origine dans les manuels du système par Digital Equipment Corporation dans les années 1960 et au début des années 1970. Une autre possibilité est que foobar ait évolué à partir de l'électronique, sous la forme d'un signal foo inversé. En effet, si un signal numérique est actif bas (si une condition de tension négative ou nulle représente un "1"), une barre horizontale est généralement placée sur l'étiquette du signal. Le fichier jargon fait un cas qui est probablement antérieur à FUBAR
la source
Extrait des fichiers de jargon http://www.catb.org/jargon/html/F/foo.html
foo: / foo /
bar: / bar /, n.
la source
Selon http://en.wikipedia.org/wiki/Foo :
la source
J'appuie le fichier de jargon concernant Foo Bar.
Je peux remonter au moins à 1963 et au PDP-1 numéro de série 2, qui se trouvait au deuxième étage du bâtiment 26 du MIT. Foo et Foo Bar y ont été utilisés et, après 1964, dans la salle PDP-6 du projet MAC.
la source
Pour autant que je sache, foo vient de foobar qui est une altération de « fubar », un phraase catch militaire qui signifie « F *** ed u p b oin a ll r econnaissance. »
Là encore, il peut y avoir d'autres sources.
http://en.wikipedia.org/wiki/Foo
la source
Foo and Bar (autrement connu sous le nom de FUBAR ... F *** ed Up Beyond All Recognition) vient d'être utilisé comme noms génériques standard pour des éléments tels que les classes, les propriétés, les noms de méthodes, etc.
Fondamentalement, l’idée est de transmettre votre code sans autant d’informations superflues qui pourraient éventuellement échapper à son fonctionnement (c’est-à-dire que nous n'avons pas besoin de savoir que votre fonction est nommée AddUser pour voir le code et comprendre ce qu’il fait si nous le renommons. à Foo ()).
la source
Ce sont des mots non-sens qui peuvent dans la plupart des cas être remplacés par des mots exemples plus pertinents. Les mots "foo" et "bar" sont fréquemment utilisés dans la programmation lorsque personne ne peut penser à un bon exemple.
Si "foo" et "bar" sont dérivés de FUBAR, pourquoi sont-ils utilisés par tant de professionnels dans des exemples d'instructions alors que ces exemples ne ressemblent à rien qui soit irréprochable?
Pour moi, l'utilisation courante de ces mots à tort est ce qui est impossible à reconnaître.
la source