¿Cuál es la historia del uso de "foo" y "bar" en ejemplos de código fuente?

60

¿Por qué muchos ejemplos de código, especialmente tutoriales, usan los nombres "Foo" y "Bar" con tanta frecuencia? Es casi un estándar.

Por ejemplo:

void foo(char* bar) {
  printf("%s", bar);
}
usuario15453
fuente
2
Parece que ninguna de las publicaciones de fmsf está a salvo del acoso de RichB.
Sí, le encanta cambiar lo que escribo, estoy empezando a pensar que está obsesionado con eso
44
el "¿por qué foo bar?" título no es muy bueno, en mi humilde opinión
Jeff Atwood
1
He agregado una respuesta con la etimología correcta (es el más popular de una familia de términos de jerga del Ejército de EE. UU. De la Segunda Guerra Mundial) y mi fuente.
Es un meme, una idea comunicable. Es su propia justificación.
Mike Dunlavey

Respuestas:

65

Foo y bar provienen del acrónimo de la Segunda Guerra Mundial del Ejército de EE. UU. FUBAR, "F-ed Up Beyond All Recognition". Toda una familia de estos términos se generalizó durante las campañas del norte de África y Sicilia (1942-43). El excelente Día de batalla de Rick Atkinson : La guerra en Sicilia e Italia, 1943-1944 da una lista de estos. Por ejemplo, un JANFU es un "Ejército Conjunto de la Armada F Up", como el incidente del 11 de julio de 1943 cuando la flota de invasión de la Operación Husky derribó 23 transportes C-47 de la Fuerza Aérea del Ejército que transportaban paracaidistas para reforzar la cabeza de playa.

Actualización: Wikipedia tiene una lista de acrónimos relacionados que incluye algunos de los originales de la Segunda Guerra Mundial enumerados por Atkinson.

Cualquier programador comprenderá la motivación para usar foo y bar para nombrar variables. Ciertamente han sido parte de la cultura C / UNIX desde el principio, y como señala @Walter Mitty, la precedieron.

Actualización (5/10/2009): Aquí está la descripción de Atkinson:

Su penetrante "civilismo" los hizo desconfiar del celo marcial. "No éramos románticos llenos de tonterías de capa y espada", escribió John Mason Brown, un teniente de la Reserva de la Marina que se dirigía a Sicilia. "La última guerra estaba demasiado cerca para eso". La vida militar inflamaba su sensibilidad irónica y su escepticismo. Un solo acrónimo crudo que capturó las bajas expectativas del soldado: SNAFU, "situación normal, todo jodido", se había expandido a un vocabulario de cinismo GI: SUSFU (situación sin cambios, aún jodida); FUMTU (jodido más de lo habitual); JANFU (mierda conjunta Ejército-Marina); JAAFU (coito angloamericano conjunto); FUAFUP (jodido y jodido propiamente dicho); y FUBAR (jodido más allá de todo reconocimiento) [Atkinson, p. 36]

Actualización (23/11/2011): @Hugo tiene una lista fantástica de los antecedentes no militares.

Jim Ferrans
fuente
3
Para agregar a la etimología: "FUBAR puede haber sido influenciado por la palabra alemana furchtbar, que significa terrible. Se pronuncia con un cht suave, y probablemente hizo la transición durante la Segunda Guerra Mundial"
Mark
44
@ Mark, la Wikipedia alemana (de.wikipedia.org/wiki/Fubar), sugiere que esto podría ser una seudoetimología. También señala antecedentes como el letrero "SILENCE IS FOO" en la caricatura de 1938 de Warner Brother "The Daffy Doc".
44
@Jim Ferrans: Si bien FUBAR probablemente influyó en el uso de "bar" con "foo", existe una fuerte evidencia de que "foo" es anterior a la Segunda Guerra Mundial, con referencias al menos a la década de 1930, como indica su comentario. Puede ser bueno mencionar eso en el cuerpo de su respuesta.
Daniel Pryden
Sí, definitivamente es anterior a la Segunda Guerra Mundial. De hecho, he encontrado un artículo del periódico MIT de 1938 que nos dice cuán común era: "Como un improperio, por supuesto," foo! "Tiene una posición definida y probablemente insustituible en nuestro idioma, aunque tememos que el exceso el uso al que está sometido actualmente puede provocar que caiga en un olvido temprano (y, por desgracia, oscuro) ". Vea mi respuesta para más y una referencia de 1937 en el mismo periódico: programmers.stackexchange.com/questions/69788/…
Hugo
59

Creo que es la pronunciación fonética de fubar.

Lo que significa:

  • F * cked
  • Arriba
  • Más allá
  • Todas
  • Reparar
FlySwat
fuente
18
Reparación o reconocimiento; P
10
"Ensuciado" se usa a menudo cuando se necesita ser cortés.
30
¿reparar? nah .. reconocimiento
hasen
66
Es "reconocimiento". Vea la cita del Día de Batalla de Rick Atkinson aquí: stackoverflow.com/questions/262271/…
77
Solo una nota de que hay pruebas contundentes (ver RFC 3092, el Archivo Jargon y otras respuestas aquí) de que "foo" se usó como una palabra sin sentido en la década de 1930, mucho antes de que FUBAR entrara en la jerga militar en la era de la Segunda Guerra Mundial.
Daniel Pryden
41

El New Hacker's Dictionary tiene una muy buena entrada en esto, y considero que es un mejor recurso para este tipo de cosas que Wikipedia:

variable metasintáctica /n./

Un nombre usado en ejemplos y entendido para representar cualquier cosa que se esté discutiendo, o cualquier miembro aleatorio de una clase de cosas en discusión. La palabra foo es el ejemplo canónico. Para evitar confusiones, los hackers nunca (bueno, casi nunca) usan 'foo' u otras palabras similares como nombres permanentes para nada. En los nombres de archivo, una convención común es que cualquier nombre de archivo que comience con un nombre de variable metasintáctica es un archivo de borrador que se puede eliminar en cualquier momento.

Hasta cierto punto, la lista de las variables metasintácticas preferidas es una firma cultural. Ocurren tanto en series (utilizadas para grupos relacionados de variables u objetos) como en singletons. Aquí hay algunas firmas comunes:

foo, bar, baz, quux, quuux, quuuux ...:
el uso de MIT / Stanford, ahora se encuentra en todas partes (¡gracias en gran parte a las primeras versiones de este léxico!). En el MIT (pero no en Stanford), baz dejó de usarse durante un tiempo en los años setenta y ochenta. Una mutación reciente común de esta secuencia inserta qux antes de quux.

bazola, ztesch:
Stanford (desde mediados de los 70 en adelante).

foo, bar, thud, gruñido:
Esta serie fue popular en CMU. Otras variables asociadas a CMU incluyen gorp.

foo, bar, fum:
se informa que esta serie es común en XEROX PARC.

Fred, Barney:
Ver la entrada de Fred. Estos tienden a ser británicos.

corge, grault, flarp:
Popular en la Universidad de Rutgers y entre los hackers de GOSMACS.

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

lástima
Berkeley, GeoWorks, Ingres. Pronunciado / shme / con un corto / e /.

Snork
Brown University, principios de los años 70.

foo, bar, zot
Universidad de Tecnología de Helsinki, Finlandia.

blarg, wibble
Nueva Zelanda.

Toto, Titi, Tata, Tutu
Francia.

Pippo, Plutón, Paperino
Italia. Pippo / pee'po / y Paperino / pa-per-ee'-no / son los nombres italianos de Goofy y Donald Duck.

aap, noot, mies
Países Bajos. Estas son las primeras palabras que un niño usa para aprender a deletrear en un tablero de ortografía holandés.

De todos estos, solo 'foo' y 'bar' son universales (y casi igual). Los compuestos foobar y 'foobaz' también disfrutan de una moneda muy amplia.

Algunos términos de la jerga también se usan como nombres metasintácticos; vomitar y murmurar, por ejemplo. Ver también Commonwealth Hackish para la discusión de numerosas variables metasintácticas encontradas en Gran Bretaña y la Commonwealth.

ColinYounger
fuente
Tengo que decir que soy de Nueva Zelanda y nunca he oído hablar de 'blarg' O 'wibble'.
Esa fue una muy buena. Es elaborado Gracias, amigo.
Tarik
Dios mío, mi cuenta QL es qux. Sorprendido ...
@Colin: modifiqué el enlace a un sitio diferente, ya que el existente estaba fuera de línea.
partir de ahí
Encontré algunas otras variables metasintácticas interesantes de un artículo del MIT 1964 sobre LISP (que por supuesto también tenía foo): chi / boston new york / filete de mantequilla de espinaca / foo crock glitch / poot toop / toot toot / isthisatrivialexcercise / ploop flot top / snap crujido pop / uno dos tres / plano sub trilladora. Vea mi respuesta para obtener más información: programmers.stackexchange.com/questions/69788/…
Hugo
25

Wikipedia da esta definición de Variable Metasintáctica :

En informática, los programadores usan variables metasintácticas para describir un nombre de marcador de posición o un término de alias comúnmente usado para denotar el tema en discusión o un miembro arbitrario de una clase de cosas en discusión. El uso de una variable metasintáctica es útil para liberar a un programador de crear una variable con nombre lógico, que a menudo es útil al crear o enseñar ejemplos de un algoritmo. La palabra foo es el principal ejemplo.
El término "variable metasintáctica" se encuentra principalmente en la literatura informal. A veces también se usa como sinónimo de metavariable.
Cualquier símbolo o palabra que no viole las reglas del lenguaje puede usarse como una variable metasintáctica, pero las palabras sin sentido se usan comúnmente. El mismo concepto se emplea en otros campos donde se expresa mediante términos como variable esquemática (ver forma lógica ).
Por analogía matemática: una variable metasintáctica es una palabra que es una variable para otras palabras, tal como en las letras de álgebra se usan como variables para números.

El artículo también da ejemplos comunes de tales variables en diferentes lenguajes de programación:

C
En el siguiente ejemplo del lenguaje de programación C, el nombre de la función foo y la barra de nombre de la variable son ambas variables metasintácticas. Las líneas que comienzan con // son comentarios.

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

   return bar;
}

Pitón

El spam, el jamón y los huevos son las principales variables metasintácticas utilizadas en el lenguaje de programación Python. [5] Esta es una referencia al famoso boceto de comedia, Spam, de Monty Python, el epónimo del lenguaje. [6] En el siguiente ejemplo, el spam, el jamón y los huevos son variables metasintácticas y las líneas que comienzan con # son comentarios.

# Define a function named spam
def spam():

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

    #define the variable eggs
    eggs = 1

    return

Rubí

En el siguiente ejemplo, baz, foo y bar son variables metasintácticas y las líneas que comienzan con # son comentarios.

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

Aquí está la respuesta de wikipedia:

Los términos foobar, foo, bar y baz son nombres comunes de marcadores de posición (también denominados variables metasintácticas) utilizados en la programación de computadoras o en la documentación relacionada con la computadora. Se usan comúnmente para representar valores desconocidos, generalmente cuando se describe un escenario en el que se entiende el propósito de los valores desconocidos, pero sus valores precisos son arbitrarios y sin importancia. Los términos se pueden usar para representar cualquier parte de un sistema o idea complicada, incluidos los datos, las variables, las funciones y los comandos. Las palabras en sí mismas no tienen significado en este uso, y son meramente representaciones lógicas, al igual que las letras x e y se usan en álgebra. Foobar a menudo se usa solo; foo, bar y baz generalmente se usan en ese orden, cuando se necesitan múltiples entidades.

Foo ha ingresado al idioma inglés como un neologismo y es considerado por muchos como el ejemplo canónico de una variable metasintáctica. Eric S. Raymond lo ha llamado un "hackerismo importante" junto con kludge y cruft. [1]

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

Y de RFC 3092:

Cuando se usa en conexión con 'bar', generalmente se remonta al acrónimo del argot del ejército de la era de la Segunda Guerra Mundial FUBAR ('Fucked Up Beyond All Repair'), luego modificado a foobar. Las primeras versiones del archivo Jargon [JARGON] interpretaron este cambio como una bowdlerización de posguerra, pero ahora parece más probable que FUBAR sea en sí mismo un derivado de 'foo' quizás influenciado por el alemán 'furchtbar' (terrible) - 'foobar' puede En realidad ha sido la forma original.

Porque, al parecer, la palabra "foo" en sí tenía una historia inmediata de antes de la guerra en historietas y dibujos animados. En la caricatura de Warner Brothers de 1938 dirigida por Robert Clampett, "The Daffy Doc", una versión muy temprana de Daffy Duck sostiene un cartel que dice "¡EL SILENCIO ES FOO!" ... (recorte)

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

Daniel A. White
fuente
66
o simplemente podría admitir que proviene de fubar = '"f" más allá de todo reconocimiento'
Jonathan Fingland
44
@ Jonathan Fingland: No, no lo hace. (De hecho, "foo" probablemente sea anterior a "foobar" y "FUBAR".) Consulte RFC 3092 y la entrada del archivo de jerga para "foo".
Daniel Pryden
@Daniel, excelente referencia. Añadido
Jonathan Fingland
19

tl; dr

  • "Foo" y "bar" como las variables metasintácticas fueron popularizadas por MIT y DEC, las primeras referencias están en el trabajo en LISP y PDP-1 y Project MAC desde 1964 en adelante.

  • Muchas de estas personas estaban en el Tech Model Railroad Club del MIT, donde encontramos el primer uso documentado de "foo" en los círculos tecnológicos en 1959 (y una variante en 1958).

  • Tanto "foo" como "bar" (e incluso "baz") eran bien conocidos en la cultura popular, especialmente en los cómics de Smokey Stover y Pogo, que habrán sido leídos por muchos miembros de TMRC.

  • Además, parece probable que el FUBAR militar contribuyó a su popularidad.


El uso de "foo" solitario como una palabra sin sentido está bastante bien documentado en la cultura popular a principios del siglo XX, al igual que el FUBAR militar. (Algunas lecturas de fondo: FOLDOC FOLDOC Jargon File Jargon File Wikipedia RFC3092 )


Bien, entonces encontremos algunas referencias.

¡DETENGA LA PRENSA! Después de publicar esta respuesta, descubrí este artículo perfecto sobre "foo" en la edición del viernes 14 de enero de 1938 de The Tech ("El periódico más antiguo y más grande del MIT y el primer periódico publicado en la web"), Volumen LVII. No. 57, precio tres centavos:

Sobre el fooísmo

The Lounger cree que este asunto del foo-ismo ha sido llevado demasiado lejos por sus defensores equivocados, y por el presente toma su posición contra su abuso. Puede ser que no haya un foo como un viejo foo, y lo somos, pero de todos modos, un foo y su dinero son una fiesta. (Voz de las gradas: "¡No seas tonto!")

Como improperio, por supuesto, "foo!" tiene una posición definida y probablemente insustituible en nuestro idioma, aunque tememos que el uso excesivo al que está sometido actualmente pueda resultar en un olvido temprano (y, por desgracia, oscuro). Decimos por desgracia porque el uso adecuado de la palabra puede dar lugar a incidentes tan felices como los siguientes.

Fue una conferencia de termodinámica de 8.50 del profesor Slater en la sala 6-120. El profesor, después de cubrir la parte frontal de la pizarra, colocó el mango que opera el mecanismo de elevación, mientras se volvía hacia la clase para continuar su discusión. El tablero frontal lentamente, majestuosamente, se levantó, revelando el tablero detrás de él, y en ese tablero, escribe en grande, los símbolos que deletreaban "FOO".

El periódico Tech , un año antes, la Carta al Editor, septiembre de 1937 :

Cuando el tren llega a la estación, los neófitos están tan llenos de historias de la gloria de Phi Omicron Omicron, generalmente conocido como Foo, que son presa fácil.

...

No es que me importe haber perdido a mis primeros cuatro hijos en la Gran Hermandad Universal de Phi Omicron Omicron, pero deseo que mi quinto hijo, mi bebé, al menos sea advertido por adelantado.

Espero que sea tuyo

Madre indignada de cinco.

Y The Tech en diciembre de 1938 :

La tendencia general de pensamiento podría interpretarse mejor a partir de los comentarios realizados al final de las papeletas. Un voto dijo: "No creo que lo que haga sea asunto de Pulver", mientras que otro simplemente agregó un breve "Foo".


El primero documentado "foo" en los círculos tecnológicos es probablemente 1959 's Diccionario de la Lengua TMRC :

FOO: la sílaba sagrada (FOO MANI PADME HUM); ser hablado solo cuando esté inspirado para comunicarse con la Deidad. Nuestra primera obligación es mantener los mostradores de Foo girando.

Estos se explican en FOLDOC . El compilador del diccionario Pete Samson dijo en 2005:

El uso de esta palabra en TMRC es anterior a mi llegada allí. Un contador foo podría simplemente tener luces intermitentes al azar, o podría ser un contador real con una entrada oscura.

Y a partir de 1996 Jargon File 4.0.0 :

Las versiones anteriores de este léxico derivaron 'baz' como una corrupción de barra de Stanford. Sin embargo, Pete Samson (compilador del léxico TMRC) informa que ya estaba vigente cuando se unió a TMRC en 1958. Él dice "Provenía de" Pogo ". Albert the Alligator, molesto o indignado, gritaba '¡Bazz Fazz!' o 'Rowrbazzle!' Se dijo que el diseño del club modelaba los condados (míticos) de Nueva Inglaterra de Rowrfolk y Bassex (Rowrbazzle se mezcló con (Norfolk / Suffolk / Middlesex / Essex) ".

Un año antes del diccionario TMRC, el MIT Voo Doo Gazette de 1958 ("Suplemento de humor de la oficina del decano del MIT") (PDF) menciona a Foocom, en "Las leyes de Murphy y Finagle" de John Banzhaf (un estudiante de ingeniería eléctrica) :

La investigación adicional bajo una subvención conjunta de Foocom y Anarcom amplió la ley para que fuera global y aplicable universalmente: ¡si algo puede salir mal, lo hará!

También MIT Voo Doo (PDF) de 1964 hace referencia al uso de TMRC:

¡Si! Quiero ser un éxito instantáneo y clientes nevados. Envíame un título en: ...

  • Foo Counters

  • Foo Jung


Pero recordemos que esta pregunta se trata de ejemplos de código, así que busquemos "foo", "bar" y "foobar" publicados en el código.

Entonces, el archivo Jargon 4.4.7 dice de "foobar":

Probablemente originalmente propagado a través de los manuales del sistema DEC por Digital Equipment Corporation (DEC) en los años sesenta y principios de los setenta; avistamientos confirmados allí se remontan a 1972.

La primera referencia publicada que puedo encontrar es de febrero de 1964 , pero escrita en junio de 1963, The Programming Language LISP: su Operación y Aplicaciones por Information International, Inc., con muchos autores, pero incluyendo a Timothy P. Hart y Michael Levin:

Por lo tanto, dado que "FOO" es un nombre en sí mismo, "COMITRIN" tratará tanto a "FOO" como a "(FOO)" exactamente de la misma manera.

También incluye otras variables metasintácticas, tales como: FOO CROCK GLITCH / POOT TOOR / ON YOU / SNAP CRACKLE POP / XYZ

Espero que esto sea muy parecido a esta próxima referencia de "foo" del Proyecto MAC del MIT en AIM-064 de enero de 1964 , o Ejercicios LISP de Timothy P. Hart y Michael Levin:

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

Comparte muchas otras variables metasintácticas como: CHI / BOSTON NUEVA YORK / BOTÓN DE ESPINACA / GLITCH DE CROCK FOO / TOOP DE POTO / TOOT TOOT / ISTHISATRIVIALEXCERCISE / PLOOP FLOT TOP / SNAP CRACKLE POP / ONE TWREE THREE / PLANE SUB THRESHER

Para ambos "foo" y "bar" juntos, la referencia más temprana que pude encontrar es del Proyecto MAC del MIT en AIM-098 de junio de 1966 , o PDP-6 LISP por nada menos que Peter Samson:

EXPLODE, como PRIN1, inserta barras, así que (EXPLODE (QUOTE FOO / BAR)) PRIN1 como (FOO // / BAR) o PRINC como (FOO / BAR).


Algunas más recordaciones.

@Walter Mitty recordó en este sitio en 2008:

Secundo el archivo de la jerga con respecto a Foo Bar. Puedo rastrearlo al menos hasta 1963, y el número de serie PDP-1 2, que estaba en el segundo piso del Edificio 26 en el MIT. Allí se utilizaron Foo y Foo Bar, y después de 1964 en la sala PDP-6 del proyecto MAC.

John V. Everett recuerda en 1996:

Cuando me uní a DEC en 1966, foobar ya se usaba comúnmente como un nombre de archivo desechable. Creo que fubar se convirtió en foobar porque el PDP-6 admitía seis nombres de caracteres, aunque siempre asumí que el término migraba a DEC desde el MIT. Había muchos tipos de MIT en DEC en esos días, algunos de los cuales habían trabajado con el CTSS 7090/7094. Como el 709x también era una máquina de 36 bits, foobar puede haber sido utilizado como un nombre de archivo común allí.

Foo y bar también se usaban comúnmente como extensiones de archivo. Dado que los editores de texto de la época operaban en un archivo de entrada y producían un archivo de salida, era común editar de un archivo .foo a un archivo .bar, y viceversa.

También era común usar foo para llenar un búfer al editar con TECO. La cadena de texto para llenar exactamente un bloque de disco fue IFOO $ HXA127GA $$. Casi todos los programadores PDP-6/10 con los que trabajé usaron esta misma cadena de comando.

Daniel PB Smith en 1998:

Dick Gruen tenía un dispositivo en su dormitorio, el conjunto habitual de baterías B, resistencias, condensadores y tubos de neón NE-2, que llamó un "contador de foo". Esto habría sido alrededor de 1964 más o menos.

Robert Schuldenfrei en 1996:

El uso de FOO y BAR como nombres de variables de ejemplo se remonta al menos a 1964 y al IBM 7070. Esto también puede ser más antiguo, pero ahí es donde lo vi por primera vez. Esto fue en Assembler. ¿Cuál sería el equivalente entero FORTRAN? ¿IFOO e IBAR?

Paul M. Wexelblat en 1992:

El primer ensamblador PDP-1 utilizaba dos caracteres para los programadores de símbolos (máquina de 18 bits) que siempre dejaban algunas palabras como espacio de parche para solucionar los problemas. (Salta al espacio de parche, haz un nuevo código, salta hacia atrás) Ese espacio convencionalmente se llamaba FU: que significaba Fxxx Up, el lugar donde arreglaste Fxxx Ups. Cuando se habla, se conoce como espacio FU. Ensambladores posteriores (por ejemplo, MIDAS permitió tres etiquetas char, por lo que FU se convirtió en FOO, y como TODOS los programadores de PDP-1 le dirán que ese fue el espacio FOO.

Bruce B. Reynolds en 1996:

En el lado de IBM de FOO (FU) BAR está el uso del lado de BAR como registro de dirección base; a mediados de la década de 1970, los programadores de CICS tuvieron que preocuparse por los diversos xxxBAR ... Creo que uno de ellos era FRACTBAR ...

Aquí hay un "BAR" de IBM directo de 1955.


Otras referencias tempranas:


No he podido encontrar ninguna referencia a foo bar como "señal de foo invertida" como se sugiere en RFC3092 y en otros lugares.

Aquí hay algunos de los F00 anteriores, pero creo que son coincidencias / falsos positivos:

Hugo
fuente
13

El uso de palabras como "foo" y "bar" te hace concentrarte en el concepto, no en lo que puedes entender según los términos que conoces. Por ejemplo:

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

El código anterior le permite recurrir a su conocimiento de las cosas del mundo real.

Si está tratando de explicar un concepto en el que la parte importante no es lo que se está haciendo (por ejemplo, imprimiendo maullidos o ladridos), sino cómo se está haciendo, entonces elimine las partes que le son familiares:

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

Ahora tiene que concentrarse en lo que realmente está sucediendo, ya no puede adivinar lo que va a suceder.

Entonces, la versión corta es, que foo, bar y similares, se usan para enfatizar conceptos donde el contenido realmente no importa, pero la idea sí.

TofuBeer
fuente
ah, una respuesta real!
nickf
1
Sí, pero ¿por qué Foo and Bar específicamente? ¿Por qué no Lorum e Ipsum?
en.wikipedia.org/wiki/Foo podría ser exacta ...
@TofuBeer Sí, son "variables metasintácticas". @masher ve mi respuesta con muchas referencias de por qué Foo y Bar y no Lorem e Ipsum. programmers.stackexchange.com/questions/69788/… De hecho, hay muchas variables metasintácticas diferentes que se han utilizado a lo largo de los años y en diferentes lugares.
Hugo
7

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

En tecnología, la palabra probablemente se propagó originalmente a través de manuales del sistema por Digital Equipment Corporation en los años sesenta y principios de los setenta. Otra posibilidad es que foobar evolucionó de la electrónica, como una señal foo invertida. Esto se debe a que si una señal digital está activa en baja (por lo que una condición de voltaje negativo o cero representa un "1"), generalmente se coloca una barra horizontal sobre la etiqueta de la señal. The Jargon File presenta un caso que posiblemente sea anterior a FUBAR

Cetra
fuente
esto no explica el por qué
He encontrado muchas referencias del primer "foo" y luego del "bar" del MIT y también del DEC (ambos en Massachusetts), en su trabajo en LISP y PDP-1 y Project MAC desde 1964 en adelante. Es una buena idea, pero no pude encontrar ninguna referencia a una "señal de foo invertida". Más aquí: programmers.stackexchange.com/questions/69788/…
Hugo
7

De los archivos de la jerga http://www.catb.org/jargon/html/F/foo.html

Foo Foo/

  1. interj. Término de asco.
  2. [muy común] Se usa muy generalmente como un nombre de muestra para absolutamente cualquier cosa, especialmente. programas y archivos (especialmente archivos scratch).
  3. Primero en la lista estándar de variables metasintácticas utilizadas en ejemplos de sintaxis. Ver también bar, baz, qux, quux, garply, waldo, fred, plugh, xyzzy, thud.

bar: / bar /, n.

  1. [muy común] La segunda variable metasintáctica, después de foo y antes de baz. “Supongamos que tenemos dos funciones: FOO y BAR. FOO llama BAR ... "
  2. A menudo se adjunta a foo para producir foobar.
jop
fuente
5

De acuerdo con http://en.wikipedia.org/wiki/Foo :

Los orígenes de los términos no se conocen con certeza, y se han avanzado varias teorías anecdóticas para identificarlos. Foobar puede derivar del vulgar acrónimo militar FUBAR, o puede haber ganado popularidad debido al hecho de que se pronuncia igual.

RichieHindle
fuente
4

Secundo el archivo de la jerga con respecto a Foo Bar.

Puedo rastrearlo al menos hasta 1963, y el número de serie PDP-1 2, que estaba en el segundo piso del Edificio 26 en el MIT. Allí se utilizaron Foo y Foo Bar, y después de 1964 en la sala PDP-6 del proyecto MAC.

Walter Mitty
fuente
+1 por presenciar uno de los primeros usos de Foo Bar :) ¿Cómo exactamente se usaron Foo y Foo Bar allí?
Hugo
PD: He incluido su presupuesto en mi gran respuesta: programmers.stackexchange.com/questions/69788/…
Hugo
2

Por lo que yo sé, foo proviene de foobar que es una alteración del "fubar", un phraase retén militar que significa " F *** ed u p b ás allá de un ll r l reconocimiento."

Por otra parte, puede haber otras fuentes.

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

Chris
fuente
0

Foo and Bar (también conocido como FUBAR ... F *** ed Up Beyond All Recognition) acaba de usarse como nombres genéricos estándar para cosas como clases, propiedades, nombres de métodos, etc.

Básicamente, la idea es transmitir su código sin tanta información extraña que pueda alejarse de cómo funciona el código (es decir, no necesitamos saber que su función se llama AddUser para ver el código y comprender qué hace si le cambiamos el nombre) a Foo ()).

TheTXI
fuente
-3

Estas son palabras sin sentido que en la mayoría de los casos se pueden sustituir con palabras de ejemplo más relevantes. Las palabras "foo" y "bar" se usan con frecuencia en la programación cuando alguien no puede pensar en un buen ejemplo.

Si "foo" y "bar" se derivan de FUBAR, ¿por qué son utilizados por tantos profesionales en ejemplos de instrucción cuando los ejemplos no se parecen a nada más allá del reconocimiento?

Para mí, el uso común de estas palabras de manera inapropiada es lo que está más allá del reconocimiento.

John
fuente
2
Tenga en cuenta que justo debajo de la pregunta hay un banner: estamos buscando respuestas largas que brinden alguna explicación y contexto. No solo dé una respuesta de una línea; explica por qué tu respuesta es correcta, idealmente con citas. Las respuestas que no incluyen explicaciones pueden eliminarse. Su respuesta ofrece poco en el sentido de una explicación; Actualmente es simplemente una opinión.
Martijn Pieters
Hay muchas otras respuestas cortas. ¿Por qué no presentar un argumento si no está de acuerdo con lo que digo en lugar de señalar un tecnicismo que no se aplica?
John
edit en rev 2 hizo que esta respuesta fuera aún peor de lo que era antes (aunque era difícil imaginar qué podría ser peor): ahora es solo una repetición de otra respuesta que se publicó hace 4 años
mosquito