El Diccionario para nuevos hackers tiene una muy buena entrada sobre 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 como 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 borrador que puede ser eliminado 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 como 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 las décadas de 1970 y 1980. 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, grunt:
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:
Vea la entrada de fred. Suelen 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).
shme
Berkeley, GeoWorks, Ingres. Pronunciado / shme / con una / e / corta.
Snorkel en Brown University, principios de la década de 1970.
foo, bar, zot de la Universidad Tecnológica 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 usó para aprender a deletrear en un tablero de ortografía holandés.
De todos estos, solo «foo» y «bar» son universales (y baz casi). Los compuestos foobar y `foobaz» también gozan de una amplia difusión.
Algunos términos de la jerga también se utilizan como nombres metasintácticos; barf y mumble, por ejemplo. Ver también Commonwealth Hackish para una discusión de numerosas variables metasintácticas encontradas en Great Gran Bretaña y la Commonwealth.
Comentarios
Wikipedia da esta definición de Variable Metasintáctica :
En ciencias de la computación, 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 la creación de una variable con un nombre lógico, que a menudo es útil al crear o enseñar ejemplos de un algoritmo. La palabra foo es el ejemplo principal.
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 comúnmente se usan palabras sin sentido. El mismo concepto se emplea en otros campos donde se expresa mediante términos como variable esquemática (consulte forma lógica ).
Por analogía matemática: una variable metasintáctica es una palabra que es variable para otras palabras, al igual que en álgebra las letras se usan como variables para números.
El artículo también brinda 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 variable son 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; }
Python
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 sketch de comedia, Spam, de Monty Python, el epónimo del lenguaje. [6] En el siguiente ejemplo, spam, jamón y 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
Ruby
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
tl; dr
-
«Foo «y» bar «como 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 por los cómics de Smokey Stover y Pogo, que habrán sido leído 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 antecedentes: FOLDOC FOLDOC Archivo de jerga Archivo de jerga Wikipedia RFC3092 )
Bien, busquemos algunas referencias.
¡DETENGA DE PRESIONAR! Después de publicar esta respuesta, descubrí este artículo perfecto sobre «foo» en la edición 1938 del viernes 14 de enero de The Tech (el periódico más antiguo y más grande del «MIT» & el primer periódico publicado en la web «), volumen LVII. No. 57, precio tres centavos:
Sobre el foo-ism
The Lounger cree que este negocio del Foo-ism ha sido llevado demasiado lejos por sus defensores equivocados, y por la presente y de inmediato toma su posición contra su abuso. Puede ser que no haya foo como un viejo foo, y lo somos, pero de todos modos, un foo y su dinero son una fiesta. (Voz desde 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 en la actualidad bien puede resultar en su caída en un temprano (y, ay, un oscuro) olvido. Decimos ay porque el uso adecuado de la palabra puede resultar en incidentes tan felices como los siguientes.
Fue una conferencia de termodinámica de 8.50 por el profesor Slater en el salón 6 a 120. El profesor, después de cubrir la parte frontal de la pizarra, colocó la manija que opera el mecanismo de elevación, volviéndose mientras tanto hacia la clase para continuar su discusión. El tablero delantero se levantó lentamente, majestuosamente, revelando el tablero detrás de él, y en ese tablero, escrito en grande, los símbolos que deletreaban «FOO»!
El periódico The Tech , un año antes, la carta al editor, septiembre 1937 :
Para 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 por la Gran y Universal Hermandad de Phi Omicron Omicron, pero sí Deseo que mi quinto hijo, mi bebé, al menos sea advertido con anticipación.
Ojalá tuya,
Madre indignada de cinco.
Y The Tech en diciembre de 1938 :
La mejor manera de interpretar la tendencia general de pensamiento es a partir de los comentarios hechos al final de las papeletas. Un voto decía: «No creo que lo que hago sea asunto de Pulver», mientras que otro simplemente agregó un breve «Foo».
El primer «foo» documentado en los círculos tecnológicos es probablemente 1959 «s Diccionario de la lengua TMRC :
FOO: la sílaba sagrada (FOO MANI PADME HUM); para ser hablado solo cuando está bajo inspiración para comunicarse con la Deidad.Nuestra primera obligación es mantener girando los contadores de Foo.
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 de foo simplemente podría tener luces intermitentes al azar , o podría ser un contador real con una entrada oscura.
Y desde 1996 «s Archivo de jerga 4.0.0 :
Las versiones anteriores de este léxico derivaban «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. Dice «Vino de» Pogo «. Albert el Cocodrilo, cuando estaba molesto o indignado, gritaba» ¡Bazz Fazz! «O «¡Rowrbazzle!» Se decía que el diseño del club modelaba los (míticos) condados de Rowrfolk y Bassex de Nueva Inglaterra (Rowrbazzle se mezclaba con (Norfolk / Suffolk / Middlesex / Essex) «.
Un año antes del diccionario TMRC, 1958 «s MIT Voo Doo Gazette (» Suplemento de humor del MIT Deans «office») (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 expandió la ley para abarcar todo y aplicar universalmente: si algo puede salir mal, ¡saldrá mal!
También 1964 » s MIT Voo Doo (PDF) hace referencia al uso de TMRC:
¡Sí! Quiero ser un éxito inmediato y clientes de nieve. Envíame un título en: …
Pero recordemos que esta pregunta es sobre ejemplos de código, así que busquemos «foo», «bar» y «foobar» publicados en código.
Entonces, Archivo de jerga 4.4.7 dice de «foobar»:
Probablemente se propagó originalmente a través de manuales de sistemas 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 escrito en junio de 1963, El lenguaje de programación LISP: su funcionamiento y aplicaciones por Information International, Inc. , con muchos autores, pero incluidos Timothy P. Hart y Michael Levin:
Por lo tanto, dado que «FOO» es un nombre en sí mismo, «COMITRIN» tratar tanto «FOO» como «(FOO)» exactamente de la misma manera.
También incluye otras variables metasintácticas 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 enero 1964 «s AIM-064, o Ejercicios LISP de Timothy P. Hart y Michael Levin:
coche [((FOO. CROCK). GLITCH)]
Comparte muchas otras variables metasintácticas como: CHI / BOSTON NEW YORK / SPINACH BUTTER STEAK / FOO CROCK GLITCH / POOT TOOP / TOOT TOOT / ISTHISATRIVIALEXCERCISE / PLOOP FLOT TOP / SNAP CRACKLE POP / ONE TWO THREE / PLANE SUB THRESHER
Para «foo» y «bar» juntos, la primera referencia que pude encontrar es del Proyecto MAC del MIT en junio 1966 «s AIM-098, o PDP-6 LISP por nada menos que Peter Samson:
EXPLODE, como PRIN1, inserta barras, así que (EXPLODE (QUOTE FOO / BAR)) PRIN1 «s como (FOO // / BAR) o PRINC «s como (FOO / BAR).
Algunas recuperaciones más.
@Walter Mitty recordó en este sitio en 2008:
Secundo la jerga archivo relativo a Foo Bar. Puedo rastrearlo al menos hasta 1963, y el número de serie 2 del PDP-1, que estaba en el segundo piso del Edificio 26 en el MIT. Foo y Foo Bar se utilizaron allí, 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 lanzamiento. nombre de archivo ausente. Creo que fubar se convirtió en foobar porque el PDP-6 admitía nombres de seis caracteres, aunque siempre asumí que el término migró a DEC desde MIT. Había muchos tipos de MIT en DEC en aquellos días, algunos de los cuales habían trabajado con el CTSS 7090/7094.Dado que el 709x también era una máquina de 36 bits, es posible que foobar se haya usado 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 editar use foo para llenar un búfer cuando edite con TECO. La cadena de texto para llenar exactamente un bloque de disco era IFOO $ HXA127GA $$. Casi todos los programadores de PDP-6/10 con los que trabajé utilizaron esta misma cadena de comandos.
Daniel PB Smith en 1998:
Dick Gruen tenía un dispositivo en su dormitorio, el conjunto habitual de batería B, resistencias, condensadores y tubos de neón NE-2, al que llamó» 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 ejemplos de nombres de variables se remonta al menos a 1964 y al IBM 7070. Este 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 de FORTRAN? ¿IFOO e IBAR?
Paul M. Wexelblat en 1992:
El primer ensamblador PDP-1 usaba dos caracteres para símbolos (máquina de 18 bits). Los programadores siempre dejaban unas pocas palabras como espacio de parche para solucionar problemas. (Saltar al espacio de parche, hacer un nuevo código, saltar 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 de caracteres, por lo que FU se convirtió en FOO, y como TODOS los programadores de PDP-1 le dirán que era FOO espacio.
Bruce B. Reynolds en 1996:
En el lado de IBM de FOO (FU) BAR es el uso del lado BAR como Registro de direcciones base; a mediados de 1970, los programadores de CICS tenían que preocuparse por los varios xxxBAR … Creo que uno de ellos era FRACTBAR …
Aquí» un IBM «BAR» 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 incluso anteriores, pero creo que» son coincidencias / falsos positivos:
El uso de palabras como «foo» y «bar» hace que te concentres en el concepto no en lo que puede captar basado en los términos que conoce. 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 (imprimir miau o ladrido, por ejemplo) sino cómo se está haciendo, entonces elimine las partes con las que está familiarizado, ayuda:
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 debes concentrarte en lo que realmente está sucediendo, ya no puedes 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í.
Comentarios
- ¡ah, una respuesta real!
- Sí, pero ¿por qué Foo y Bar específicamente? ¿Por qué no Lorum e Ipsum?
- en.wikipedia.org/wiki/Foo podría ser precisa …
- @TofuBeer Sí, ' re " variables metasintácticas ". @masher ve mi respuesta con muchas referencias sobre por qué Foo y Bar y no Lorem e Ipsum. programmers.stackexchange.com/questions/69788/… De hecho, hay muchas variables metasintácticas diferentes que tienen se ha utilizado a lo largo de los años y en diferentes lugares.