Quel est l'historique de l'utilisation de «foo» et «bar» dans les exemples de code source?

60

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);
}
utilisateur15453
la source
2
On dirait qu'aucun des messages de fmsf n'est à l'abri de l'intimidation de RichB.
Yup il aime changer ce que j'écris, je commence à penser qu'il est obsédé par cela
4
le "pourquoi foo bar?" titre n'est pas très bon, à mon humble avis
Jeff Atwood
1
J'ai ajouté une réponse avec l'étymologie correcte (c'est le plus populaire d'une famille de termes en argot de l'armée américaine datant de la Seconde Guerre mondiale) et ma source.
C'est un meme - une idée communicable. C'est sa propre justification.
Mike Dunlavey

Réponses:

65

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:

Leur "civilisation" omniprésente les rendait méfiants du zèle martial. "Nous n'étions pas des romantiques remplis de bousculades de capes et d'épées", a écrit John Mason Brown, un lieutenant de la réserve de la marine américaine en route pour la Sicile. "La dernière guerre était trop proche pour ça." La vie militaire a enflammé leur sensibilité ironique et leur scepticisme. Un seul acronyme grossier qui traduisait les attentes réduites du soldat - SNAFU, "situation normale, tout foutu" - s'était élargi au vocabulaire du cynisme GI: SUSFU (situation inchangée, toujours foutue); FUMTU (foutu plus que d'habitude); JANFU (fuck-up conjoint armée-marine); JAAFU (fuck-up mixte anglo-américain); FUAFUP (foutu et foutu convenablement); et FUBAR (foutu au-delà de toute reconnaissance) [Atkinson, p. 36].

Mise à jour (23/11/2011): @Hugo a une liste fantastique d'antécédents non militaires.

Jim Ferrans
la source
3
Pour ajouter à l'étymologie: "FUBAR peut avoir été influencé par le mot allemand furchtbar, qui signifie terrible. Il est prononcé avec un cht doux et a probablement fait la transition au cours de la Seconde Guerre mondiale"
Mark
4
@Mark, La Wikipédia allemande (de.wikipedia.org/wiki/Fubar), suggère que cela pourrait être une pseudoétymologie. Il mentionne également des antécédents tels que le signe "SILENCE IS FOO" dans le dessin de 1938 de Warner Brother "The Daffy Doc".
4
@Jim Ferrans: Bien que FUBAR ait probablement influencé l'utilisation de "bar" avec "foo", il existe des preuves solides que "foo" est bien antérieur à la Seconde Guerre mondiale, avec des références remontant au moins aux années 1930, comme l'indique votre commentaire. Il serait peut-être bon de mentionner cela dans le corps de votre réponse.
Daniel Pryden
Oui, foo est bien avant la seconde guerre mondiale. En fait, j’ai trouvé un article de journal du MIT de 1938 qui nous dit à quel point il était courant: "En tant qu’explictif, bien sûr," foo! "Occupe une position définie et probablement irremplaçable dans notre langue, bien que nous craignions l’usage auquel il est actuellement soumis pourrait bien entraîner sa chute dans un oubli précoce (et, hélas, sombre) ". Voir ma réponse pour plus d'informations et une référence de 1937 dans le même journal: programmers.stackexchange.com/questions/69788/…
Hugo
59

Je pense que c'est la prononciation phonétique de fubar.

Qui veut dire:

  • F * cked
  • Up
  • Au-delà
  • Tout
  • réparation
FlySwat
la source
18
Réparation ou reconnaissance; P
10
"Fouled" est souvent utilisé quand il faut être poli.
30
réparation? nah .. reconnaissance
hasen
6
C'est la "reconnaissance". Voir la citation de la journée de bataille de Rick Atkinson ici: stackoverflow.com/questions/262271/…
7
Juste une note indiquant qu'il existe des preuves solides (voir RFC 3092, le fichier Jargon, et d'autres réponses ici) que "foo" a été utilisé comme mot de passe fictif dans les années 1930, bien avant que FUBAR ne soit devenu un argot militaire à l'époque de la Seconde Guerre mondiale.
Daniel Pryden
41

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:

variable métasyntaxique /n./

Un nom utilisé dans les exemples et compris comme désignant tout ce qui est en discussion, ou tout membre aléatoire d'une classe de sujets en discussion. Le mot foo est l'exemple canonique. Pour éviter toute confusion, les pirates informatiques n'utilisent jamais (enfin, presque jamais) `foo 'ou d'autres mots similaires comme noms permanents pour quoi que ce soit. Dans les noms de fichiers, une convention commune est que tout nom de fichier commençant par un nom de variable métasyntaxique est un fichier de travail pouvant être supprimé à tout moment.

Dans une certaine mesure, la liste des variables métasyntaxiques préférées est une signature culturelle. Ils se produisent à la fois en série (utilisé pour des groupes de variables ou d'objets liés) et en tant que singletons. Voici quelques signatures communes:

foo, bar, baz, quux, quuux, quuuux ...: utilisation de
MIT / Stanford, maintenant partout (grâce en grande partie aux premières versions de ce lexique!). Au MIT (mais pas à Stanford), baz a cessé d'être utilisé pendant un certain temps dans les années 1970 et 80. Une mutation récente commune de cette séquence insère qux avant quux.

bazola, ztesch:
Stanford (à partir du milieu des années 70).

foo, bar, thud, grunt:
Cette série était populaire à la CMU. Les autres variables associées à la CMU incluent gorp.

foo, bar, fum:
Cette série serait courante chez XEROX PARC.

Fred, Barney:
Voir l'entrée de Fred. Celles-ci ont tendance à être britanniques.

corge, grault, flarp:
populaire à la Rutgers University et parmi les pirates de GOSMACS.

zxc, spqr, wombat:
Université de Cambridge (Angleterre).

shme
Berkeley, GeoWorks, Ingres. Prononcé / shme / avec un court / e /.

snork
Brown University, début des années 1970.

foo, bar, zot
Université de technologie de Helsinki, Finlande.

blarg, wibble
New Zealand.

toto, titi, tata, tutu
France.

pippo, pluto, paperino
Italie. Pippo / pee'po / et Paperino / pa-per-ee''no / sont les noms italiens de Goofy et Donald Duck.

aap, noot, mies
Pays-Bas. Ce sont les premiers mots qu'un enfant avait l'habitude d'apprendre à épeler sur un tableau orthographique néerlandais.

Parmi tous ceux-ci, seuls "foo" et "bar" sont universels (et baz presque). Les composés foobar et `foobaz 'jouissent également d'une très grande richesse monétaire.

Certains termes de jargon sont également utilisés comme noms métasyntaxiques; barf et mumble, par exemple. Voir également Commonwealth Hackish pour une discussion sur les nombreuses variables métasyntaxiques trouvées en Grande-Bretagne et dans le Commonwealth.

ColinYounger
la source
Je dois dire que je suis néo-zélandais et que je n'ai jamais entendu parler de «blarg» ou de «wibble».
C'était un très bon. C'est élaboré. Merci mec.
Tarik
OMG, mon compte QL est qux. Choqué ...
@Colin - J'ai modifié le lien vers un site différent, car le site existant était hors ligne.
là-
J'ai trouvé d'autres variables métasyntaxiques intéressantes dans un article du MIT (1964) sur le LISP (qui avait bien sûr aussi foo): chi / Boston New York / steak au beurre d'épinard / foo crock glitch / poot toop / toot toot / isthisatrivialexcercise / ploop craquement pop / un deux trois / sous batteur plan. Voir ma réponse pour plus d'informations: programmers.stackexchange.com/questions/69788/…
Hugo
25

Wikipedia donne cette définition de variable métasyntaxique :

En informatique, les programmeurs utilisent des variables métasyntaxiques pour décrire un nom d’espace réservé ou un terme pseudonyme communément utilisé pour désigner le sujet en discussion ou un membre arbitraire d’une classe d’objets en discussion. L'utilisation d'une variable métasyntaxique est utile pour libérer le programmeur de la création d'une variable nommée de manière logique, ce qui est souvent utile pour créer ou enseigner des exemples d'algorithme. Le mot foo est l'exemple principal.
Le terme "variable métasyntaxique" est principalement trouvé dans la littérature informelle. Il est parfois aussi utilisé comme synonyme de métavariable.
Tout symbole ou mot qui ne contrevient pas aux règles du langage peut être utilisé comme variable métasyntaxique, mais des mots non-sens sont couramment utilisés. Le même concept est utilisé dans d'autres domaines où il est exprimé par des termes tels que variable schématique (voir la forme logique ).
Par analogie mathématique: une variable métasyntaxique est un mot qui est une variable pour d’autres mots, tout comme en algèbre, les lettres sont utilisées comme variables pour les nombres.

L'article donne également des exemples courants de telles variables dans différents langages de programmation:

C
Dans l'exemple suivant du langage de programmation C, le nom de la fonction foo et la barre de nom de variable sont tous deux des variables métasyntaxiques. Les lignes commençant par // sont des commentaires.

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

   return bar;
}

Python

Le spam, le jambon et les œufs sont les principales variables métasyntaxiques utilisées dans le langage de programmation Python. [5] Ceci est une référence au célèbre sketch comique Spam de Monty Python, l’éponyme du langage [6]. Dans l'exemple suivant, spam, jambon et oeufs sont des variables métasyntaxiques et les lignes commençant par # sont des commentaires.

# Define a function named spam
def spam():

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

    #define the variable eggs
    eggs = 1

    return

Rubis

Dans l'exemple suivant, baz, foo et bar sont des variables métasyntaxiques et les lignes commençant par # sont des commentaires.

# 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
la source
19

Voici la réponse de Wikipédia:

Les termes foobar, foo, bar et baz sont des noms génériques usuels (également appelés variables métasyntaxiques) utilisés dans la programmation informatique ou la documentation liée à l'informatique. Ils sont couramment utilisés pour représenter des valeurs inconnues, généralement lors de la description d'un scénario dans lequel le but des valeurs inconnues est compris, mais dont les valeurs précises sont arbitraires et sans importance. Les termes peuvent être utilisés pour représenter n’importe quelle partie d’un système ou d’une idée complexe, y compris les données, les variables, les fonctions et les commandes. Les mots eux-mêmes n’ont aucune signification dans cet usage et sont simplement des représentations logiques, un peu comme les lettres x et y sont utilisées en algèbre. Foobar est souvent utilisé seul; foo, bar et baz sont généralement utilisés dans cet ordre, lorsque plusieurs entités sont nécessaires.

Foo est entré dans la langue anglaise en tant que néologisme et est considéré par beaucoup comme l’exemple canonique d’une variable métasyntaxique. Eric S. Raymond a appelé cela un "hackérisme important" aux côtés de kludge et cruel. [1]

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

Et de la RFC 3092:

Lorsqu'il est utilisé en relation avec 'bar', il est généralement associé à l'acronyme FUBAR ('Fucked Up Beyond All Repair'), qui a été modifié en foobar. Les premières versions du fichier de jargon [JARGON] interprétaient ce changement comme une archellisation de l'après-guerre, mais il semble maintenant plus probable que FUBAR soit en soi un dérivé de "foo" peut-être influencé par le "furchtbar" allemand (terrible) - "foobar" peut effectivement été la forme originale.

Car, semble-t-il, le mot «foo» a lui-même une histoire d’avant-guerre dans les bandes dessinées et les dessins animés. Dans le dessin de Warner Brothers de 1938 réalisé par Robert Clampett, "The Daffy Doc", une version très ancienne de Daffy Duck affiche un panneau disant "SILENCE IS FOO!" ... (snip)

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

Daniel A. White
la source
6
ou vous pouvez simplement admettre que cela vient de fubar = '' f 'up au-delà de toute reconnaissance'
Jonathan Fingland le
4
@ Jonathan Fingland: Non, ce n'est pas le cas. (En fait, "foo" est probablement antérieur à "foobar" et à "FUBAR".) Voir RFC 3092 et l'entrée du fichier jargon pour "foo".
Daniel Pryden
@ Daniel, excellente référence. Ajouté
Jonathan Fingland
19

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:

Sur le foo-ism

The Lounger pense que cette affaire de foo-ism a été poussée trop loin par ses partisans égarés et prend par la présente position contre de tels abus. Il se peut qu’il n’y ait pas un foo comme un vieux foo, et nous le sommes, mais de toute façon, un foo et son argent sont une fête. (Voix des gradins - "Ne soyez pas foo-lish!")

Comme un juron, bien sûr, "foo!" occupe une place précise et probablement irremplaçable dans notre langue, bien que nous craignions que l’usage excessif auquel il est actuellement soumis puisse bien conduire à sa chute dans un oubli précoce (et, hélas, sombre). Nous disons, hélas, car une utilisation appropriée du mot peut entraîner des incidents heureux, tels que les suivants.

C'était une conférence sur la thermodynamique à 8.50 donnée par le professeur Slater dans la salle 6-120. Le professeur, après avoir couvert la face avant du tableau, installe la poignée qui actionne le mécanisme de levage et se tourne vers la classe pour poursuivre sa discussion. Le panneau avant lentement, majestueusement, se souleva, révélant le tableau derrière lui, et sur ce tableau, écrit en gros, les symboles épelés "FOO"!

Le journal Tech , un an plus tôt, la lettre au rédacteur en chef, septembre 1937 :

Au moment où le train arrive à la gare, les néophytes sont tellement remplis d’histoires sur la gloire de Phi Omicron Omicron, généralement désignée par Foo, qu’ils sont une proie facile.

...

Cela ne me dérange pas de perdre mes quatre premiers fils au profit de la Grande et Universelle Fraternité de Phi Omicron, mais je souhaite que mon cinquième fils, mon bébé, soit au moins prévenu à l’avance.

Espérons que le vôtre,

Mère de cinq enfants indignée.

Et le Tech en décembre 1938 :

La tendance générale de la pensée pourrait être mieux interprétée à partir des remarques faites à la fin des votes. Un vote a déclaré: "Je ne pense pas que ce que je fasse soit une affaire de Pulver", tandis qu'un autre a simplement ajouté un "Foo" très bref.


Le premier "foo" documenté dans les cercles technologiques est probablement le Dictionnaire du langage TMRC de 1959 :

FOO: la syllabe sacrée (FOO MANI PADME HUM); être parlé que sous l'inspiration de communier avec la divinité. Notre première obligation est de faire tourner les compteurs Foo.

Celles-ci sont expliquées à FOLDOC . Le compilateur du dictionnaire Pete Samson a déclaré en 2005:

L'utilisation de ce mot à la TMRC précède mon arrivée là-bas. Un compteur de foo pourrait simplement avoir des lumières clignotantes au hasard, ou pourrait être un vrai compteur avec une entrée obscure.

Et à partir du fichier de jargon 4.0.0 de 1996 :

Les versions précédentes de ce lexique dérivaient de «baz» en tant que corruption de barreau de Stanford. Cependant, Pete Samson (compilateur du lexique TMRC) rapporte que c'était déjà le cas quand il a rejoint TMRC en 1958. Il disait "ça venait de" Pogo ". Albert l'Alligator, vexé ou outré, crierait" Bazz Fazz! " ou 'Rowrbazzle!' On a dit que la configuration du club était calquée sur les comtés (mythiques) de Rowrfolk et de Bassex en Nouvelle-Angleterre (Rowrbazzle se mêlant à (Norfolk / Suffolk / Middlesex / Essex). "

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

Des recherches supplémentaires dans le cadre d'une subvention conjointe Foocom et Anarcom ont élargi la loi pour qu'elle soit applicable à tous et universellement applicable: si quelque chose pouvait mal tourner, ce serait ça!

Le MIT Voo Doo (PDF) de 1964 fait également référence à l’utilisation du TMRC:

Oui! Je veux être un succès instantané et des clients de la neige. Envoyez-moi un diplôme en: ...

  • Foo Counters

  • Foo Jung


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

Probablement à l'origine propagé par les manuels DECsystem de Digital Equipment Corporation (DEC) dans les années 1960 et au début des années 1970; les observations confirmées remontent à 1972.

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:

Ainsi, puisque "FOO" est un nom pour lui-même, "COMITRIN" traitera à la fois "FOO" et "(FOO)" exactement de la même manière.

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:

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

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:

EXPLODE, comme PRIN1, insère des barres obliques, ainsi (EXPLODE (QUOTE FOO / BAR)) PRIN1 en tant que (FOO // / BAR) ou PRINC en tant que (FOO / BAR).


Quelques autres rappels.

@Walter Mitty a rappelé sur ce site en 2008:

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.

John V. Everett rappelle en 1996:

Lorsque j'ai rejoint DEC en 1966, foobar était déjà couramment utilisé comme nom de fichier jetable. Je crois que fubar est devenu foobar parce que le PDP-6 supportait six noms de caractères, même si j'ai toujours supposé que le terme avait migré du DEC au DEC de MIT. Il y avait de nombreux types de MIT au DEC à cette époque, dont certains avaient travaillé avec le CTSS 7090/7094. Comme le 709x était aussi une machine 36 bits, foobar y aurait peut-être été utilisé comme nom de fichier courant.

Foo et Bar étaient aussi couramment utilisés comme extensions de fichiers. Comme les éditeurs de texte de l'époque utilisaient un fichier d'entrée et produisaient un fichier de sortie, il était courant d'éditer un fichier .foo dans un fichier .bar, et vice-versa.

Il était également courant d'utiliser foo pour remplir un tampon lors de l'édition avec TECO. La chaîne de texte permettant de remplir exactement un bloc de disque était IFOO $ HXA127GA $$. Presque tous les programmeurs PDP-6/10 avec lesquels j'ai travaillé utilisaient cette même chaîne de commande.

Daniel PB Smith en 1998:

Dick Gruen avait dans son dortoir un appareil, l’assemblage habituel de piles B, de résistances, de condensateurs et de tubes au néon NE-2, qu’il qualifiait de «compteur foo». Cela aurait été vers 1964 ou à peu près.

Robert Schuldenfrei en 1996:

L'utilisation de FOO et de BAR comme exemples de noms de variable remonte au moins à 1964 et à IBM 7070. Cela aussi peut être plus ancien, mais c'est là que je l'ai vu pour la première fois. C'était dans Assembler. Quel serait l'équivalent en FORTRAN? IFOO et IBAR?

Paul M. Wexelblat en 1992:

Le premier assembleur de PDP-1 utilisait deux caractères pour les symboles (machine 18 bits). Les programmeurs laissaient toujours quelques mots comme espace de patch pour résoudre les problèmes. (Aller à l'espace de patch, créer un nouveau code, à revenir en arrière) Cet espace était habituellement appelé FU: Fxxx Up, l'endroit où vous avez corrigé Fxxx Ups. Lorsqu'il était parlé, il était connu sous le nom d'espace FU. Les assembleurs ultérieurs (par exemple, MIDAS autorisaient trois balises de caractères, FU devenant ainsi FOO et TOUS les programmeurs de PDP-1 vous diront qu’il s’agissait de FOO.

Bruce B. Reynolds en 1996:

Du côté IBM de FOO (FU) BAR, le côté BAR est utilisé comme registre d’adresses de base; Au milieu des années 1970, les programmeurs CICS devaient s'inquiéter des divers xxxBAR ... Je pense que l'un d'eux était FRACTBAR ...

Voici un IBM "BAR" hétéro de 1955.


Autres premières références:


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:

Hugo
la source
13

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:

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

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:

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

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.

TofuBeer
la source
ah, une vraie réponse!
nickf
1
Oui, mais pourquoi Foo and Bar en particulier? Pourquoi pas Lorum et Ipsum?
en.wikipedia.org/wiki/Foo pourrait être précis ...
@TofuBeer Oui, ce sont des "variables métasyntaxiques". @masher voir ma réponse avec des tonnes de références sur les raisons pour lesquelles Foo et Bar et non Lorem et Ipsum. programmers.stackexchange.com/questions/69788/… En fait, de nombreuses variables métasyntaxiques ont été utilisées au fil des ans et à des endroits différents.
Hugo
7

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

Cetra
la source
cela n'explique pas le pourquoi
J'ai trouvé de nombreuses références de premier "foo" et plus tard "bar" du MIT ainsi que de DEC (tous deux dans le Massachusetts), dans leurs travaux sur LISP, le PDP-1 et le projet MAC à partir de 1964. C'est une bonne idée, mais je n'ai trouvé aucune référence à un "signal foo inversé". Plus ici: programmers.stackexchange.com/questions/69788/…
Hugo
7

Extrait des fichiers de jargon http://www.catb.org/jargon/html/F/foo.html

foo: / foo /

  1. interj. Terme de dégoût.
  2. [très fréquent] Utilisé très généralement comme nom d'échantillon pour absolument tout, en particulier. programmes et fichiers (surtout les fichiers de travail).
  3. Premier sur la liste standard des variables métasyntaxiques utilisées dans les exemples de syntaxe. Voir aussi bar, baz, qux, quux, garply, waldo, fred, plugh, xyzzy, thud.

bar: / bar /, n.

  1. [très fréquent] La deuxième variable métasyntaxique, après foo et before baz. «Supposons que nous ayons deux fonctions: FOO et BAR. FOO appelle BAR ... "
  2. Souvent ajouté à foo pour produire foobar.
jop
la source
5

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

Les origines des termes ne sont pas connues avec certitude et plusieurs théories anecdotiques ont été avancées pour les identifier. Foobar peut provenir de l'acronyme militaire vulgaire FUBAR, ou avoir gagné en popularité en raison du fait qu'il est prononcé de la même manière.

RichieHindle
la source
4

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.

Walter Mitty
la source
+1 pour avoir assisté à l’une des premières utilisations de Foo Bar :) Comment exactement Foo et Foo Bar ont-ils réellement été utilisés là-bas?
Hugo
PS J'ai inclus votre citation dans ma grande réponse: programmers.stackexchange.com/questions/69788/…
Hugo
2

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

Chris
la source
0

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

TheTXI
la source
-3

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.

John
la source
2
Notez que juste en dessous de la question se trouve une bannière: nous recherchons des réponses longues qui fournissent des explications et un contexte. Ne vous contentez pas de donner une réponse d'une ligne. expliquez pourquoi votre réponse est juste, idéalement avec des citations. Les réponses qui n'incluent pas d'explications peuvent être supprimées. Votre réponse offre peu d'explication; actuellement, il ne s'agit que d'une opinion.
Martijn Pieters
Il y a beaucoup d'autres réponses courtes. Pourquoi ne pas fournir un argument si vous n'êtes pas d'accord avec ce que je dis au lieu de souligner un détail technique qui ne s'applique pas?
John
edit in rev 2 a rendu cette réponse encore pire qu’elle ne l’était auparavant (même s’il était difficile d’imaginer ce qui pourrait être pire): maintenant, il ne fait que répéter une autre réponse qui a été publiée il ya 4 ans
gnat le