¿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);
}
terminology
history
variables
usuario15453
fuente
fuente
Respuestas:
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:
Actualización (23/11/2011): @Hugo tiene una lista fantástica de los antecedentes no militares.
fuente
Creo que es la pronunciación fonética de fubar.
Lo que significa:
fuente
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:
fuente
Wikipedia da esta definición de Variable Metasintáctica :
El artículo también da ejemplos comunes de tales variables en diferentes lenguajes de programación:
fuente
Aquí está la respuesta de wikipedia:
http://en.wikipedia.org/wiki/Foo
Y de RFC 3092:
http://www.faqs.org/rfcs/rfc3092.html
fuente
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:
El periódico Tech , un año antes, la Carta al Editor, septiembre de 1937 :
Y The Tech en diciembre de 1938 :
El primero documentado "foo" en los círculos tecnológicos es probablemente 1959 's Diccionario de la Lengua TMRC :
Estos se explican en FOLDOC . El compilador del diccionario Pete Samson dijo en 2005:
Y a partir de 1996 Jargon File 4.0.0 :
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) :
También MIT Voo Doo (PDF) de 1964 hace referencia al uso de TMRC:
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":
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:
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:
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:
Algunas más recordaciones.
@Walter Mitty recordó en este sitio en 2008:
John V. Everett recuerda en 1996:
Daniel PB Smith en 1998:
Robert Schuldenfrei en 1996:
Paul M. Wexelblat en 1992:
Bruce B. Reynolds en 1996:
Aquí hay un "BAR" de IBM directo de 1955.
Otras referencias tempranas:
1967 foo bar MIT AIM-127
1967 foo bar MIT AIM-127a
1965 foo MIT Tech Engineering News
1968 foo baz DEC
1971 FOO BAR UCLA-NMC RFC269
1972 FOO MIT AI
1972 FOO MIT AI HAKMEM ( escaneo PDF )
1972 FOO DEC
1973 FOO DEC
1973 foo bar Consejo Conjunto Internacional sobre Inteligencia Artificial
1975 foo bar Consejo Conjunto Internacional sobre Inteligencia Artificial
1977 Foobar
1978 Foobar
1978 Moby Foobar en Software Wars
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:
1959 "FOO 31 IBM-704 Bettis Plant utiliza una técnica de mínimos cuadrados" Comisión de Energía Atómica de los EE. UU.
1960 FOO (FO Out, F1, F2, FOO, FOI) "Computadora digital e ingeniería de control"
1967 FOO?
fuente
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:
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:
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í.
fuente
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
fuente
De los archivos de la jerga http://www.catb.org/jargon/html/F/foo.html
Foo Foo/
bar: / bar /, n.
fuente
De acuerdo con http://en.wikipedia.org/wiki/Foo :
fuente
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.
fuente
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
fuente
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 ()).
fuente
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.
fuente