Qual é o histórico do uso de "foo" e "bar" nos exemplos de código-fonte?


60

Por que muitos exemplos de código, especialmente os tutoriais, usam os nomes "Foo" e "Bar" com tanta frequência? É quase um padrão.

Por exemplo:

void foo(char* bar) {
  printf("%s", bar);
}

2
Parece que nenhuma das postagens de fmsf está a salvo do bullying de RichB.

Yup ele gosta de mudar o que eu escrevo, eu estou começando a pensar que ele é obcecado com isso

4
o "por que foo bar?" título não é muito bom, IMHO
Jeff Atwood

11
Adicionei uma resposta com a etimologia correta (é a mais popular de uma família de termos de gíria do Exército dos EUA na Segunda Guerra Mundial) e minha fonte.

É um meme - uma ideia comunicável. É sua própria justificativa.
Mike Dunlavey

Respostas:


65

Foo e bar vêm do acrônimo FUBAR da Segunda Guerra Mundial do Exército dos EUA, "F-ed Up Beyond All Recognition". Uma família inteira desses termos foi amplamente difundida durante as campanhas do norte da África e da Sicília (1942-43). O excelente Dia da Batalha de Rick Atkinson : A Guerra na Sicília e na Itália, 1943-1944 fornece uma lista desses. Por exemplo, um JANFU é uma "Marinha do Exército Conjunta F Up", como o incidente de 11 de julho de 1943, quando a frota de invasão da Operação Husky derrubou 23 transportes da Força Aérea C-47 do Exército, transportando pára-quedistas para reforçar a cabeça da praia.

Atualização: a Wikipedia possui uma lista de acrônimos relacionados que incluem alguns dos originais da Segunda Guerra Mundial listados por Atkinson.

Qualquer programador entenderá a motivação para usar foo e bar para nomear variáveis. Eles certamente fizeram parte da cultura C / UNIX desde o início e, como aponta o @Walter Mitty, a antecederam.

Atualização (05/10/2009): Aqui está a descrição de Atkinson:

Sua difundida "civilidade" os deixou cautelosos com o zelo marcial. "Não éramos românticos cheios de manto de cabo e espada", escreveu John Mason Brown, tenente da Reserva da Marinha que seguia para a Sicília. "A última guerra estava perto demais para isso." A vida militar inflamava suas sensibilidades irônicas e seu ceticismo. Um único acrônimo bruto que capturava as expectativas mais baixas do soldado - SNAFU, "situação normal, toda fodida" - havia se expandido para um vocabulário de cinismo GI: SUSFU (situação inalterada, ainda fodida); FUMTU (fodido mais que o normal); JANFU (foda conjunta Exército-Marinha); JAAFU (foda conjunta anglo-americana); FUAFUP (fodido e fodido propriamente); e FUBAR (fodido além de qualquer reconhecimento) [Atkinson, p. 36]

Atualização (23/11/2011): @Hugo tem uma lista fantástica dos antecedentes não militares.


3
Para acrescentar à etimologia: "FUBAR pode ter sido influenciado pela palavra alemã furchtbar, que significa terrível. É pronunciada com um tom suave e provavelmente fez a transição durante a Segunda Guerra Mundial"
Mark

4
@Mark, a Wikipedia alemã (de.wikipedia.org/wiki/Fubar), sugere que essa pode ser uma pseudoetymologia. Também aponta antecedentes como o sinal "SILENCE IS FOO" no desenho animado da Warner Brother de 1938 "The Daffy Doc".

4
@ Jim Ferrans: Embora o FUBAR provavelmente tenha influenciado o uso de "bar" com "foo", há fortes evidências de que "foo" por si só antecede a Segunda Guerra Mundial, com referências pelo menos desde a década de 1930, como indica seu comentário. Pode ser bom mencionar isso no corpo da sua resposta.
Daniel Pryden

Sim, foo definitivamente é anterior à Segunda Guerra Mundial. De fato, encontrei uma peça de jornal do MIT de 1938 que nos diz como era comum: "Como palavrão, é claro," foo! "Tem uma posição definida e provavelmente insubstituível em nossa língua, embora receamos que o excesso o uso a que está atualmente sujeito pode muito bem resultar em um esquecimento precoce (e, infelizmente, sombrio). " Veja minha resposta para obter mais e uma referência de 1937 no mesmo jornal: programmers.stackexchange.com/questions/69788/…
Hugo

59

Eu acho que é a pronunciação fonética de fubar.

O que significa:

  • F * cked
  • Acima
  • Além
  • Tudo
  • Reparar

18
Reparo ou reconhecimento; P

10
"Sujo" é frequentemente usado quando é preciso ser educado.

30
reparar? nah .. reconhecimento
Hasen

6
É "reconhecimento". Veja a citação do Dia da Batalha de Rick Atkinson aqui: stackoverflow.com/questions/262271/…

7
Apenas uma observação de que há fortes evidências (consulte a RFC 3092, o Jargon File e outras respostas aqui) de que "foo" foi usado como uma palavra sem sentido nos anos 30, muito antes de a FUBAR entrar em calão militar na era da Segunda Guerra Mundial.
Daniel Pryden

41

O New Hacker's Dictionary tem uma entrada muito boa sobre isso - e considero que é um recurso melhor para esse tipo de coisa do que a Wikipedia:

variável metassintática / n./

Um nome usado em exemplos e entendido como qualquer coisa que esteja em discussão ou qualquer membro aleatório de uma classe de coisas em discussão. A palavra foo é o exemplo canônico. Para evitar confusão, os hackers nunca (bem, quase nunca) usam `foo 'ou outras palavras como ele como nomes permanentes para qualquer coisa. Nos nomes de arquivos, uma convenção comum é que qualquer nome de arquivo que comece com um nome de variável metassintática é um arquivo temporário que pode ser excluído a qualquer momento.

Até certo ponto, a lista de variáveis ​​metassintáticas preferidas é uma assinatura cultural. Eles ocorrem tanto em série (usada para grupos relacionados de variáveis ​​ou objetos) quanto em singletons. Aqui estão algumas assinaturas comuns:

foo, bar, baz, quux, quuux, quuuux ...:
uso do MIT / Stanford, agora encontrado em todos os lugares (em grande parte graças às versões anteriores deste léxico!). No MIT (mas não em Stanford), o baz deixou de ser utilizado por um tempo nas décadas de 1970 e 1980. Uma mutação recente comum desta sequência insere qux antes do quux.

bazola, ztesch:
Stanford (de meados dos anos 70 em diante).

foo, bar, baque, grunhido:
Esta série era popular na CMU. Outras variáveis ​​associadas à CMU incluem gorp.

foo, bar, fum:
Esta série é relatada como comum no XEROX PARC.

fred, barney:
veja a entrada para fred. Estes tendem a ser britânicos.

corge, grault, flarp:
Popular na Universidade Rutgers e entre os hackers do GOSMACS.

zxc, spqr, wombat:
Universidade de Cambridge (Inglaterra).

Shme
Berkeley, GeoWorks, Ingres. Pronunciado / shme / com um curto / e /.

snork
Universidade Brown, início dos anos 1970.

foo, bar, Zot
Universidade de Tecnologia de Helsinki, na Finlândia.

blarg, wibble
Nova Zelândia.

toto, titi, tata, tutu
França.

pippo, plutão, paperino
Itália. Pippo / pee'po / e Paperino / pa-per-ee'-no / são os nomes italianos de Pateta e Pato Donald.

aap, noot, mies
Países Baixos. Estas são as primeiras palavras que uma criança costumava aprender a soletrar em um quadro de ortografia holandês.

De tudo isso, apenas 'foo' e 'bar' são universais (e quase sempre). Os compostos foobar e `foobaz 'também possuem uma moeda muito ampla.

Alguns termos do jargão também são usados ​​como nomes metassintáticos; vomitar e murmurar, por exemplo. Veja também o Commonwealth Hackish para discussão de inúmeras variáveis ​​metassintáticas encontradas na Grã-Bretanha e na Commonwealth.


Tenho que dizer, eu sou da Nova Zelândia e nunca ouvi falar de 'blarg' OU 'wibble'.

Essa foi uma ótima. É elaborado. Obrigado cara.
Tarik

OMG, minha conta QL é qux.

@ Colin - alterei o link para um site diferente, pois o existente estava offline.
daí

Eu encontrei outras variáveis ​​metassintáticas interessantes de um artigo do MIT 1964 sobre o LISP (que, obviamente, também tinha foo): chi / boston nova york / bife com manteiga de espinafre / falha de crock foo / poot toop / toot toot / isthisatrivialexcercise / ploop flot top / snap crackle pop / one two three / plane sub thresher. Veja minha resposta para obter mais informações: programmers.stackexchange.com/questions/69788/…
Hugo

25

A Wikipedia fornece esta definição de Variável metassintática :

Na ciência da computação, os programadores usam variáveis ​​metassintáticas para descrever um nome de espaço reservado ou um termo alternativo comumente usado para denotar o assunto em discussão ou um membro arbitrário de uma classe de coisas em discussão. O uso de uma variável metassintática é útil para liberar um programador da criação de uma variável nomeada logicamente, o que geralmente é útil ao criar ou ensinar exemplos de um algoritmo. A palavra foo é o principal exemplo.
O termo "variável metassintática" é encontrado principalmente na literatura informal. Às vezes, também é usado como sinônimo de metavariável.
Qualquer símbolo ou palavra que não viole as regras da linguagem pode ser usado como uma variável metassintática, mas palavras sem sentido são comumente usadas. O mesmo conceito é empregado em outros campos em que é expresso por termos como variável esquemática (ver formulário lógico ).
Por analogia matemática: Uma variável metassintática é uma palavra que é uma variável para outras palavras, assim como nas letras de álgebra são usadas como variáveis ​​para números.

O artigo também fornece exemplos comuns de tais variáveis ​​em diferentes linguagens de programação:

C
No exemplo a seguir da linguagem de programação C, o nome da função foo e a barra de nomes de variáveis ​​são variáveis ​​metassintáticas. Linhas começando com // são comentários.

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

   return bar;
}

Pitão

Spam, presunto e ovos são as principais variáveis ​​metassintáticas usadas na linguagem de programação Python. [5] Esta é uma referência ao famoso esboço da comédia Spam, de Monty Python, o epônimo da linguagem. [6] No exemplo a seguir, spam, presunto e ovos são variáveis ​​metassintáticas e as linhas que começam com # são comentários.

# Define a function named spam
def spam():

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

    #define the variable eggs
    eggs = 1

    return

Rubi

No exemplo a seguir, baz, foo e bar são variáveis ​​metassintáticas e as linhas que começam com # são comentários.

# 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

19

Aqui está a resposta da wikipedia:

Os termos foobar, foo, bar e baz são nomes comuns de espaços reservados (também chamados de variáveis ​​metassintáticas) usados ​​na programação de computadores ou na documentação relacionada a computadores. Eles geralmente são usados ​​para representar valores desconhecidos, geralmente ao descrever um cenário em que o objetivo dos valores desconhecidos é entendido, mas seus valores precisos são arbitrários e sem importância. Os termos podem ser usados ​​para representar qualquer parte de um sistema ou idéia complicada, incluindo dados, variáveis, funções e comandos. As próprias palavras não têm significado nesse uso e são meramente representações lógicas, assim como as letras xey são usadas na álgebra. Foobar é frequentemente usado sozinho; foo, bar e baz são geralmente usados ​​nessa ordem, quando várias entidades são necessárias.

Foo entrou no idioma inglês como um neologismo e é considerado por muitos o exemplo canônico de uma variável metassintática. [Citação necessário] É amplamente utilizado em exemplos de programação de computadores (às vezes expressos como "apenas uma vez") e pseudocódigo. Eric S. Raymond chamou isso de "hackerismo importante" ao lado de kludge e cruft. [1]

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

E da RFC 3092:

Quando usado em conexão com 'bar', geralmente é atribuído à sigla da gíria do Exército da era da Segunda Guerra Mundial, FUBAR ('Fucked Up Beyond All Repair'), posteriormente modificada para foobar. As primeiras versões do Jargon File [JARGON] interpretavam essa mudança como uma evasão pós-guerra, mas agora parece mais provável que o FUBAR fosse um derivado de 'foo' talvez influenciado pelo alemão 'furchtbar' (terrível) - 'foobar' pode realmente foram a forma original.

Pois, ao que parece, a palavra "foo" em si tinha uma história imediata antes da guerra em histórias em quadrinhos e desenhos animados. No desenho animado da Warner Brothers de 1938, dirigido por Robert Clampett, "The Daffy Doc", uma versão muito antiga de Daffy Duck exibe uma placa dizendo "SILENCE IS FOO!" ... (snip)

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


6
ou pode simplesmente admitir isso vem de = fubar ' 'f' acima além de todo o reconhecimento'
Jonathan Fingland

4
@ Jonathan Fingland: Não, não. (De fato, "foo" provavelmente antecede "foobar" e "FUBAR".) Veja RFC 3092 e a entrada Jargon File para "foo".
Daniel Pryden

@ Daniel, excelente referência. Adicionado
Jonathan Fingland

19

tl; dr

  • "Foo" e "bar" como variáveis ​​metassintáticas foram popularizadas pelo MIT e DEC, as primeiras referências estão sendo trabalhadas no LISP e PDP-1 e no Projeto MAC a partir de 1964.

  • Muitas dessas pessoas estavam no Tech Model Railroad Club do MIT, onde encontramos o primeiro uso documentado de "foo" nos círculos de tecnologia em 1959 (e uma variante em 1958).

  • "Foo" e "bar" (e até "baz") eram bem conhecidos na cultura popular, especialmente nos quadrinhos Smokey Stover e Pogo, que foram lidos por muitos membros do TMRC.

  • Além disso, parece provável que os FUBAR militares tenham contribuído para sua popularidade.


O uso de "foo" solitário como uma palavra sem sentido está muito bem documentado na cultura popular no início do século XX, assim como o FUBAR militar. (Alguma leitura de segundo plano: FOLDOC FOLDOC Jargon File Jargon File Wikipedia RFC3092 )


OK, então vamos encontrar algumas referências.

PARE DE IMPRENSA! Depois de postar esta resposta, descobri este artigo perfeito sobre "foo" na edição de sexta-feira, 14 de janeiro de 1938 , do The Tech ("o maior e mais antigo jornal do MIT e o primeiro jornal publicado na web"), Volume LVII. 57, preço três centavos:

Em Foo-ism

O Lounger pensa que esse negócio de Foo-ism foi levado muito longe por seus proponentes equivocados, e por este meio e imediatamente se posiciona contra seu abuso. Pode ser que não haja alguém como um velho, e nós somos, mas enfim, um homem e seu dinheiro são uma festa. (Voz da arquibancada - "Não seja tolo!")

Como um palavrão, é claro, "foo!" tem uma posição definida e provavelmente insubstituível em nossa linguagem, embora tenhamos medo de que o uso excessivo a que está atualmente sujeita possa resultar na queda de um esquecimento precoce (e, infelizmente, sombrio). Dizemos infelizmente porque o uso adequado da palavra pode resultar em incidentes felizes como os seguintes.

Era uma palestra de Termodinâmica das 8h50 do professor Slater na sala 6-120. O professor, tendo coberto a parte da frente do quadro-negro, ajeitou a manivela que opera o mecanismo de elevação, voltando-se para a classe para continuar sua discussão. O painel frontal, lenta e majestosamente, levantou-se, revelando o painel atrás dele e, nesse quadro, escreva com letras grandes os símbolos que soletravam "FOO"!

O jornal Tech , um ano antes, a Carta ao Editor, setembro de 1937 :

Quando o trem chega à estação, os neófitos ficam tão cheios das histórias da glória de Phi Omicron Omicron, geralmente conhecido como Foo, que são presas fáceis.

...

Não é que eu me importe em ter perdido meus quatro primeiros filhos para a Grande e Universal Irmandade de Phi Omicron Omicron, mas desejo que meu quinto filho, meu bebê, seja pelo menos avisado com antecedência.

Espero que o seu,

Mãe indignada de cinco filhos.

E The Tech em dezembro de 1938 :

A tendência geral de pensamento pode ser melhor interpretada a partir das observações feitas no final das cédulas. Um voto disse: "Não acho que o que faço seja da conta de Pulver", enquanto outro apenas acrescentou um breve "Foo".


O "foo" documentada pela primeira vez em círculos tecnologia é provavelmente 1959 's Dictionary of the TMRC Idioma :

FOO: a sílaba sagrada (FOO MANI PADME HUM); para ser falado somente quando estiver sob inspiração para comungar com a Deidade. Nossa primeira obrigação é manter os contadores de Foo girando.

Estes são explicados no FOLDOC . O compilador do dicionário Pete Samson disse em 2005:

O uso dessa palavra no TMRC antecede a minha vinda para lá. Um contador de foo pode simplesmente ter luzes piscando aleatoriamente ou pode ser um contador real com uma entrada obscura.

E a partir do arquivo Jargon File 4.0.0 de 1996 :

Versões anteriores desse léxico derivavam 'baz' como uma corrupção de barra em Stanford. No entanto, Pete Samson (compilador do léxico do TMRC) relata que já era atual quando ingressou no TMRC em 1958. Ele diz: "Veio de" Pogo ". Albert, o Jacaré, quando irritado ou ultrajado, gritava 'Bazz Fazz!' ou 'Rowrbazzle!' Dizia-se que o layout do clube modelava os condados (míticos) da Nova Inglaterra de Rowrfolk e Bassex (Rowrbazzle se misturou com (Norfolk / Suffolk / Middlesex / Essex) ".

Um ano antes do dicionário do TMRC, o MIT Voo Doo Gazette de 1958 ("Suplemento de humor do escritório do Reitor do MIT") (PDF) menciona Foocom, em "As leis de Murphy e Finagle", de John Banzhaf (um estudante de engenharia elétrica) :

Mais pesquisas sob uma concessão conjunta da Foocom e da Anarcom expandiram a lei para ser abrangente e universalmente aplicável: se algo pode dar errado, isso acontecerá!

O MIT Voo Doo (PDF) de 1964 também faz referência ao uso do TMRC:

Sim! Eu quero ser um sucesso instantâneo e clientes de neve. Envie-me uma graduação em: ...

  • Contadores de Foo

  • Foo Jung


Mas lembre-se de que esta pergunta é sobre exemplos de código, então vamos encontrar "foo", "bar" e "foobar" publicados no código.

Então, o Jargon File 4.4.7 diz sobre "foobar":

Provavelmente originalmente propagado pelos manuais DECsystem pela Digital Equipment Corporation (DEC) na década de 1960 e início da década de 1970; avistamentos confirmados lá remontam a 1972.

A primeira referência publicada que posso encontrar é de fevereiro de 1964 , mas escrita em junho de 1963, The Linguagem de Programação LISP: sua Operação e Aplicações pela Information International, Inc., com muitos autores, mas incluindo Timothy P. Hart e Michael Levin:

Assim, como "FOO" é um nome para si mesmo, "COMITRIN" tratará "FOO" e "(FOO)" exatamente da mesma maneira.

Também inclui outras variáveis ​​metassintáticas, como: FOO CROCK GLITCH / POOT TOOR / ON YOU / SNAP CRACKLE POP / XYZ

Eu espero que isso seja o mesmo que esta próxima referência de "foo" do Projeto MAC do MIT no AIM-064 de janeiro de 1964 , ou Exercícios LISP de Timothy P. Hart e Michael Levin:

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

Ele compartilha muitas outras variáveis ​​metassintáticas, como: CHI / BOSTON NEW YORK / MANTEIGA DE ESPINAFRA / GLITCH FOO CROCK / POOT TOOP / TOOT TOOT / ISTHISATRIVIALEXCERCISE / PLOOP FLOT TOP / SNAP CRACKLE POP / ONE DOIS TRÊS / SUB THRESHER DO PLANO

Para "foo" e "bar" juntos, a referência mais antiga que pude encontrar é do Projeto MAC do MIT em AIM-098 de junho de 1966 , ou PDP-6 LISP de ninguém menos que Peter Samson:

EXPLODE, como PRIN1, insere barras, então (EXPLODIR (CITAÇÃO FOO / BAR)) PRIN1 como (FOO // / BAR) ou PRINC como (FOO / BAR).


Mais algumas recordações.

@Walter Mitty lembrou neste site em 2008:

Eu apóio o arquivo do jargão sobre Foo Bar. Posso rastreá-lo pelo menos até 1963, e o número de série 2 do PDP-1, que ficava no segundo andar do prédio 26 do MIT. O Foo e o Foo Bar foram usados ​​lá e, depois de 1964, na sala PDP-6 do projeto MAC.

John V. Everett lembra em 1996:

Quando entrei no DEC em 1966, o foobar já estava sendo usado como um nome de arquivo descartável. Acredito que fubar se tornou foobar porque o PDP-6 suportava seis nomes de caracteres, embora eu sempre assumisse que o termo migrou para o DEC do MIT. Naqueles dias, havia muitos tipos de MIT no DEC, alguns dos quais haviam trabalhado com o CTSS 7090/7094. Como o 709x também era uma máquina de 36 bits, foobar pode ter sido usado como um nome de arquivo comum lá.

Foo e bar também eram comumente usados ​​como extensões de arquivo. Como os editores de texto da época operavam em um arquivo de entrada e produziam um arquivo de saída, era comum editar de um arquivo .foo para um arquivo .bar e voltar novamente.

Também era comum usar foo para preencher um buffer ao editar com o TECO. A sequência de texto para preencher exatamente um bloco de disco era IFOO $ HXA127GA $$. Quase todos os programadores PDP-6/10 com os quais trabalhei usavam a mesma cadeia de comando.

Daniel PB Smith em 1998:

Dick Gruen tinha um dispositivo em seu dormitório, a montagem habitual de baterias B, resistores, capacitores e tubos de néon NE-2, que ele chamou de "contador de foo". Isso teria sido por volta de 1964, aproximadamente.

Robert Schuldenfrei em 1996:

O uso de FOO e BAR como nomes de variáveis ​​de exemplo remonta a 1964 e ao IBM 7070. Isso também pode ser mais antigo, mas foi aí que o vi pela primeira vez. Isso foi no Assembler. Qual seria o equivalente inteiro do FORTRAN? IFOO e IBAR?

Paul M. Wexelblat em 1992:

O primeiro Assembler PDP-1 usava dois caracteres para programadores de símbolos (máquinas de 18 bits) sempre deixava algumas palavras como espaço de correção para corrigir problemas. (Salte para corrigir o espaço, faça um novo código, volte para trás) Esse espaço convencionalmente foi nomeado FU: que significa Fxxx Up, o local em que você corrigiu o Fxxx Ups. Quando falado, era conhecido como espaço da UF. Montadores posteriores (por exemplo, o MIDAS permitiram três tags de char para que o FU se tornasse FOO, e como TODOS os programadores do PDP-1 dirão que esse é o espaço FOO.

Bruce B. Reynolds em 1996:

No lado IBM da FOO (FU) BAR está o uso do lado BAR como Registro de Endereço Base; no meio da década de 1970, os programadores do CICS precisavam se preocupar com os vários xxxBARs ... acho que um deles era o FRACTBAR ...

Aqui está um IBM "BAR" direto de 1955.


Outras referências iniciais:


Não consegui encontrar nenhuma referência à barra foo como "sinal foo invertido", como sugerido na RFC3092 e em outros lugares.

Aqui estão alguns dos F00s anteriores, mas acho que são coincidências / falsos positivos:


13

usar palavras como "foo" e "bar" faz com que você se concentre no conceito e não no que você pode entender com base nos termos que você conhece. Por exemplo:

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

O código acima permite que você volte ao seu conhecimento das coisas do mundo real.

Se você está tentando explicar um conceito em que a parte importante não é o que está sendo feito (imprimir miado ou latido, por exemplo), mas como está sendo feita, remova as peças que você conhece:

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

Agora você precisa se concentrar no que realmente está acontecendo; não é mais capaz de adivinhar o que vai acontecer.

Portanto, a versão curta é que foo, bar e similares são usados ​​para enfatizar conceitos em que o conteúdo realmente não importa, mas a idéia sim.


ah, uma resposta real!
nickf

11
Sim, mas por que Foo e Bar especificamente? Por que não Lorum e Ipsum?

en.wikipedia.org/wiki/Foo poderia ser preciso ...

@TofuBeer Sim, são "variáveis ​​metassintáticas". @masher veja minha resposta com muitas referências sobre por que Foo e Bar e não Lorem e Ipsum. programmers.stackexchange.com/questions/69788/… De fato, existem muitas variáveis ​​metassintáticas diferentes que foram usadas ao longo dos anos e em lugares diferentes.
Hugo

7

De http://en.wikipedia.org/wiki/Foobar

Em tecnologia, a palavra provavelmente foi propagada originalmente por manuais de sistema da Digital Equipment Corporation nos anos 1960 e início dos anos 1970. Outra possibilidade é que o foobar tenha evoluído da eletrônica, como um sinal de foo invertido. Isso ocorre porque se um sinal digital estiver ativo baixo (portanto, uma condição de tensão negativa ou zero representa um "1"), uma barra horizontal é normalmente colocada sobre a etiqueta do sinal. O Jargon File faz um caso que foo possivelmente antecede o FUBAR


isso não explica o porquê

Encontrei muitas referências do primeiro "foo" e depois do "bar" do MIT e também do DEC (ambos em Massachusetts), em seus trabalhos sobre o LISP e o PDP-1 e o Projeto MAC a partir de 1964. É uma boa idéia, mas não consegui encontrar nenhuma referência a um "sinal de foo invertido". Mais aqui: programmers.stackexchange.com/questions/69788/…
Hugo

7

Nos arquivos do jargão http://www.catb.org/jargon/html/F/foo.html

foo: / foo /

  1. interj. Termo de nojo.
  2. [muito comum] Usado muito geralmente como um nome de amostra para absolutamente qualquer coisa, esp. programas e arquivos (especialmente arquivos scratch).
  3. Primeiro na lista padrão de variáveis ​​metassintáticas usadas em exemplos de sintaxe. Veja também bar, baz, qux, quux, garply, waldo, fred, plugh, xyzzy, thud.

bar: / bar /, n.

  1. [muito comum] A segunda variável metassintática, depois de foo e antes de baz. “Suponha que tenhamos duas funções: FOO e BAR. FOO chama BAR ... ”
  2. Muitas vezes anexado a foo para produzir foobar.

5

De acordo com http://en.wikipedia.org/wiki/Foo :

As origens dos termos não são conhecidas com certeza, e várias teorias anedóticas foram avançadas para identificá-las. Foobar pode derivar do acrônimo militar vulgar FUBAR, ou pode ter ganhado popularidade devido ao fato de ser pronunciado o mesmo.


4

Eu apóio o arquivo do jargão sobre Foo Bar.

Posso rastreá-lo pelo menos até 1963, e o número de série 2 do PDP-1, que ficava no segundo andar do prédio 26 do MIT. O Foo e o Foo Bar foram usados ​​lá e, depois de 1964, na sala PDP-6 do projeto MAC.


+1 por testemunhar um dos primeiros usos do Foo Bar :) Como exatamente o Foo e o Foo Bar foram realmente usados ​​lá?
287 Hugo

PS Eu incluí sua cotação na minha resposta grande: programmers.stackexchange.com/questions/69788/...
Hugo

2

Tanto quanto eu sei, foo vem de foobar que é uma alteração de "fubar", um phraase captura militar que significa " F *** ed u p b eyond um ll r eCognition."

Então, novamente, pode haver outras fontes.

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


0

Foo e Bar (também conhecido como FUBAR ... F *** ed além de todo reconhecimento) acaba de ser usado como nomes genéricos padrão para coisas como classes, propriedades, nomes de métodos, etc.

Basicamente, a idéia é transmitir seu código sem o máximo de informações estranhas que possam se afastar de como o código funciona (ou seja, não precisamos saber que sua função se chama AddUser para ver o código e entender o que ele faz se o renomearmos) para Foo ()).


-3

Essas são palavras sem sentido que na maioria dos casos podem ser substituídas por palavras de exemplo mais relevantes. As palavras "foo" e "bar" são frequentemente usadas na programação quando alguém não consegue pensar em um bom exemplo.

Se "foo" e "bar" são derivados do FUBAR, por que eles são usados ​​por tantos profissionais em exemplos de instruções quando os exemplos se assemelham a nada que está sendo buscado além do reconhecimento?

Para mim, o uso comum dessas palavras de maneira inadequada é o que há de tão irreconhecível.


2
Observe que logo abaixo da pergunta há um banner: estamos procurando respostas longas que forneçam alguma explicação e contexto. Não basta dar uma resposta em uma linha; explique por que sua resposta está correta, idealmente com citações. As respostas que não incluem explicações podem ser removidas. Sua resposta oferece pouco em termos de explicação; atualmente é apenas uma opinião.
Martijn Pieters

Existem muitas outras respostas curtas. Por que não apresentar um argumento se você não concorda com o que estou dizendo, em vez de apontar um tecnicismo que não se aplica?
John

edit na rev. 2 tornou essa resposta ainda pior do que era antes (embora fosse difícil imaginar o que poderia ser pior): agora é apenas uma repetição de outra resposta que foi publicada há 4 anos
gnat
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.