Una variable metasintáctica es una palabra o conjunto de palabras específicas que se identifican como marcadores de posición en informática y, en particular, en programación . Estas palabras se encuentran comúnmente en el código fuente y están destinadas a ser modificadas o sustituidas antes de su uso en el mundo real. Por ejemplo, «foo» y «bar» se utilizan en más de 330 solicitudes de comentarios del Grupo de Trabajo de Ingeniería de Internet ( IETF ), los documentos que definen tecnologías fundamentales de internet como HTTP (web), TCP/IP y los protocolos de correo electrónico . [ 1 ] [ 2 ]
Por analogía matemática , una variable metasintáctica es una palabra que es una variable para otras palabras, al igual que en álgebra las letras se usan como variables para los números . [ 1 ]
Las variables metasintácticas se utilizan para nombrar entidades como variables, funciones y comandos cuya identidad exacta no es importante y sirven únicamente para demostrar un concepto, lo cual resulta útil para la enseñanza de la programación.
Variables metasintácticas comunes
Dado que el inglés es el idioma fundamental o lengua franca de la mayoría de los lenguajes de programación informática, es común encontrar variables que tienen su origen en el inglés incluso en programas y ejemplos de programas escritos para audiencias que hablan otros idiomas.
Las variables utilizadas en un contexto particular pueden depender de las subculturas que se desarrollan en torno a los lenguajes de programación .
Uso general
Las variables metasintácticas utilizadas comúnmente en todos los lenguajes de programación incluyen foobar , foo , bar , baz , qux , quux , corge , grault , garply , waldo , fred , plugh , xyzzy y thud . [ 1 ] [ 3 ] Dos de estas palabras, plugh y xyzzy , se tomaron del juego Colossal Cave Adventure . [ 4 ]
Una referencia más completa se puede encontrar en The Hacker's Dictionary de MIT Press .
japonés
En japonés, las palabras hoge (ほげ) [ 5 ] y fuga (ふが) se usan comúnmente, mientras que otras palabras y variantes comunes son piyo (ぴよ), hogera (ほげら) y hogehoge (ほげほげ). [ 6 ] Se desconoce el origen de hoge como variable metasintáctica, pero se cree que data de principios de la década de 1980. [ 6 ]
Francés
En Francia, la palabra toto es de uso común, con variantes como tata , titi y tutu como sinónimos. Una fuente frecuentemente citada para el uso de toto es la referencia al personaje estereotípico que se usa para contar chistes con Tête à Toto .
turco
En Turquía , las palabras hede y hödö (generalmente escritas hodo debido a las restricciones de nomenclatura ASCII de los lenguajes de programación) son variables metasintácticas bien conocidas que provienen de populares revistas de historietas humorísticas de los años 90 como LeMan. Estas palabras no tienen significado y se usan precisamente por eso. El actor y comediante Cem Yılmaz popularizó aún más estos términos a finales de los 90 y principios de los 2000. [ 7 ]
italiano
En la cultura de programación italiana, es común encontrar nombres de personajes de Walt Disney (tal como aparecen en las versiones italianas de los programas) utilizados como variables. Estos nombres suelen aparecer en pseudocódigo, se mencionan en clases de ingeniería de software y se emplean habitualmente al explicar algoritmos a compañeros. Entre los más utilizados se encuentran "Pippo" (Goofy), "Pluto" y "Paperino" (Pato Donald). [ 8 ]
Ejemplos de uso

do
En el siguiente ejemplo, tanto el nombre de la función foocomo el nombre de la variable barson variables metasintácticas. Las líneas que comienzan con //son comentarios.
// La función llamada foo int foo ( void ) { // Declarar la variable bar y establecer su valor en 1 int bar = 1 ;devolver barra ; }C++
Prototipos de funciones con ejemplos de diferentes mecanismos de paso de argumentos : [ 9 ]
void Foo ( Fruit bar ); void Foo ( Fruit * bar ); void Foo ( const Fruit & bar );Ejemplo que muestra las capacidades de sobrecarga de funciones del lenguaje C++.
void Foo ( int bar ); void Foo ( int bar , int baz ); void Foo ( int bar , int baz , int qux );Pitón
Spam , ham y eggs son las principales variables metasintácticas utilizadas en el lenguaje de programación Python . [ 10 ] Esto es una referencia al famoso sketch cómico " Spam ", de Monty Python , epónimo del lenguaje. [ 11 ] En el siguiente ejemplo spam, ham, y eggsson variables metasintácticas y las líneas que comienzan con #son comentarios.
# Definir una función llamada spam def spam ():# Definir la variable ham ham = "¡Hola Mundo!"# Definir la variable huevos huevos = 1devolverSolicitudes de comentarios del IETF
Tanto los RFC de la IETF como los lenguajes de programación informática se presentan en texto plano , lo que hace necesario distinguir las variables metasintácticas mediante una convención de nomenclatura, ya que no resultaría obvio a partir del contexto.
Aquí hay un ejemplo del documento oficial de la IETF que explica los protocolos de correo electrónico (de RFC 772, citado en RFC 3092):
Todo está bien; ahora se pueden especificar los destinatarios. S: MRCP A:<Foo@Y> <CRLF> R: 200 OK S: MRCP PARA: <Raboof@Y> <CRLF> R: 553 No existe tal usuario aquí S: MRCP A:<bar@Y> <CRLF> R: 200 OK S: MRCP A:<@Y,@X,fubar@Z> <CRLF> R: 200 OK Tenga en cuenta que el fallo de "Raboof" no afecta al almacenamiento de correo para "Foo", "bar" o el correo para ser reenviado a "fubar@Z" a través del host "X".
(La documentación de texinfo enfatiza la distinción entre metavariables y variables simples utilizadas en un lenguaje de programación que se documenta en un archivo texinfo de la siguiente manera: "Utilice el comando @var para indicar variables metasintácticas. Una variable metasintáctica es algo que representa otro fragmento de texto. Por ejemplo, debe usar una variable metasintáctica en la documentación de una función para describir los argumentos que se le pasan. No utilice @var para los nombres de variables específicas en lenguajes de programación. Estos son nombres específicos de un programa, por lo que @code es correcto para ellos." [ 12 ] )
Otro aspecto que se refleja en el ejemplo anterior es la convención de que una metavariable debe sustituirse uniformemente por la misma instancia en todas sus apariciones en un esquema dado. Esto contrasta con los símbolos no terminales en las gramáticas formales, donde los no terminales a la derecha de una producción pueden sustituirse por diferentes instancias. [ 13 ]
Datos de ejemplo
SQL
Es común usar el nombre ACME en bases de datos SQL de ejemplo y como nombre de empresa provisional con fines didácticos. El término «Base de datos ACME» se usa comúnmente para referirse a un conjunto de datos de base de datos de ejemplo o de entrenamiento, utilizado exclusivamente para capacitación o pruebas. ACME también se usa comúnmente en la documentación que muestra ejemplos de uso de SQL, una práctica común en muchos textos educativos, así como en la documentación técnica de empresas como Microsoft y Oracle . [ 14 ] [ 15 ] [ 16 ]
Véase también
Referencias
- 1 2 3 Eastlake 3rd, Donald E.; Manros, Carl-Uno; Raymond, Eric S. Etimología de "Foo" . IETF . doi : 10.17487/RFC3092 . RFC 3092 .
- ↑ "Recuperación de documentos" . Editor RFC .
- ↑ Laughlin, Stuart (18 de noviembre de 2016). "Variable metasintáctica" . programming@ProgClub (Lista de correo). Archivado del original el 2 de diciembre de 2022. Recuperado el 18 de noviembre de 2016 .
- ↑ Crowther, Will (1977-03-11). "advdat.77-03-11" . Código fuente de Colossal Cave Adventure . Dennis G. Jerz . Recuperado el 28 de febrero de 2024 .
- ^ "hogeの意味・使い方 - 英和辞典 Weblio 辞書" . ejje.weblio.jp .
- 1 2メタ構文変数(en japonés)
- ^ LeMan Dergisi 1376. Sayı (en turco). Lm Cuenca Yayin Ltd.şti.
- ↑ "El archivo de jerga - variable metasintáctica" . www.catb.org/ .
- ↑ Mongan, John; Kindler, Noah; Giguere, Eric (2012). Programming Interviews Exposed: Secrets to Landing Your Next Job . John Wiley & Sons. p. 242. ISBN 978-1-118-28720-0.
- ↑ "El tutorial de Python — Documentación de Python 3.8.1" . docs.python.org .
- ↑ "Preguntas frecuentes generales sobre Python — Documentación de Python 3.9.7" . docs.python.org . Python Software Foundation. 4 de septiembre de 2021. ¿Por qué se llama Python? Archivado del original el 26 de agosto de 2021. Consultado el 5 de septiembre de 2021 .
- ↑ "Marcando palabras y frases" . Texinfo 4.0. El formato de documentación GNU . Archivado del original el 6 de noviembre de 2009. Consultado el 25 de noviembre de 2012 .
- ↑ RD Tennent (2002). Especificación de software: una introducción práctica . Cambridge University Press. págs. 36-37 y 210. ISBN 978-0-521-00401-5.
- ↑ Kriegel, Alex (2008). SQL bible . Indianápolis, Indiana: Wiley. ISBN 978-0-470-22906-4OCLC 402446308
- ↑ Ruel, Chris (2014). Oracle 12c para principiantes (en danés). Hoboken, NJ: John Wiley & Sons. ISBN 978-1-118-74531-1OCLC 870334544
- ↑ "Trabajar con datos en aplicaciones ASP.NET Core" . docs.microsoft.com . 25 de abril de 2023.
Enlaces externos
- Definición de variable metasintáctica , con ejemplos.
- Ejemplos de variables metasintácticas utilizadas en Commonwealth Hackish , como wombat .
- Variable "foo" y otras peculiaridades de la programación
- Marcadores de posición
- Metalogic
- Variable (informática)
- Sintaxis (lógica)