Eine metasyntaktische Variable ist ein bestimmtes Wort oder eine Wortgruppe, die in der Informatik und insbesondere in der Programmierung als Platzhalter dient . Diese Wörter finden sich häufig im Quellcode und sind dazu bestimmt, vor ihrer Verwendung in der Praxis geändert oder ersetzt zu werden. Beispielsweise werden „foo“ und „bar“ in über 330 ITF-Kommentaren (Internet Engineering Task Force Requests for Comments) verwendet – Dokumente, die grundlegende Internettechnologien wie HTTP (Web), TCP/IP und E-Mail- Protokolle definieren . [ 1 ] [ 2 ]

In mathematischer Analogie ist eine metasyntaktische Variable ein Wort, das als Variable für andere Wörter dient, genau wie in der Algebra Buchstaben als Variablen für Zahlen verwendet werden . [ 1 ]

Metasyntaktische Variablen werden verwendet, um Entitäten wie Variablen, Funktionen und Befehle zu benennen , deren genaue Identität unwichtig ist und die lediglich dazu dienen, ein Konzept zu veranschaulichen, was für die Vermittlung von Programmierkenntnissen nützlich ist.

Gemeinsame metasyntaktische Variablen

Da Englisch die Grundlage oder Lingua franca der meisten Computerprogrammiersprachen ist, sind Variablen englischen Ursprungs häufig auch in Programmen und Programmbeispielen zu finden, die für andere gesprochene Sprachen geschrieben wurden.

Die in einem bestimmten Kontext verwendeten Variablen können von Subkulturen abhängen, die sich um Programmiersprachen herum entwickeln .

Allgemeine Verwendung

Zu den in allen Programmiersprachen gebräuchlichen metasyntaktischen Variablen gehören foobar , foo , bar , baz , qux , quux , corge , grault , garply , waldo , fred , plugh , xyzzy und thud . [ 1 ] [ 3 ] Zwei dieser Wörter, plugh und xyzzy , stammen aus dem Spiel Colossal Cave Adventure . [ 4 ]

Eine ausführlichere Referenz findet sich im Hacker's Dictionary des MIT Press .

japanisch

Im Japanischen werden häufig die Wörter hoge (ほげ) [ 5 ] und fuga (ふが) verwendet, weitere gebräuchliche Wörter und Varianten sind piyo (ぴよ), hogera (ほげら) und hogehoge (ほげほげ). [ 6 ] Der Ursprung von hoge als metasyntaktische Variable ist nicht bekannt, es wird jedoch angenommen, dass er auf die frühen 1980er Jahre zurückgeht. [ 6 ]

Französisch

In Frankreich ist das Wort „toto“ weit verbreitet, wobei Varianten wie „tata“ , „titi“ und „tutu“ als verwandte Platzhalter dienen. Eine häufig angeführte Erklärung für die Verwendung von „toto“ ist der Bezug auf die Witzfigur „Tête à Toto“ .

Türkisch

In der Türkei sind die Wörter „hede“ und „hödö“ ( aufgrund der ASCII -basierten Namenskonventionen von Programmiersprachen meist „hodo“ geschrieben ) bekannte metasyntaktische Variablen, die aus populären humoristischen Comic-Magazinen der 90er-Jahre wie „LeMan“ stammen. Die Wörter haben keine Bedeutung und werden genau aus diesem Grund verwendet. Die Begriffe wurden Ende der 90er- und Anfang der 2000er-Jahre durch den Schauspieler und Stand-up-Comedian Cem Yılmaz einem breiteren Publikum bekannt. [ 7 ]

Italienisch

In der italienischen Softwareentwicklungskultur ist es üblich, Namen von Walt-Disney-Figuren (aus den italienischen Versionen der Serien) als Variablen zu verwenden. Diese Namen tauchen häufig in Pseudocode auf, werden in Software-Engineering-Kursen erwähnt und dienen oft dazu, Kollegen Algorithmen zu erklären. Zu den am häufigsten verwendeten gehören „pippo“ (Goofy), „pluto“ und „paperino“ (Donald Duck). [ 8 ]

Anwendungsbeispiele

Ein Screenshot einer metasyntaktischen Variable FOO, die in einer interaktiven Shell-Sitzung zugewiesen und ausgegeben wird.

C

Im folgenden Beispiel sind sowohl der Funktionsname fooals auch der Variablenname barmetasyntaktische Variablen. Zeilen, die mit einem Punkt beginnen, //sind Kommentare.

// Die Funktion namens foo int foo ( void ) { // Deklariere die Variable bar und setze den Wert auf 1 int bar = 1 ;return bar ; }

C++

Funktionsprototypen mit Beispielen für verschiedene Mechanismen zur Argumentübergabe : [ 9 ]

void Foo ( Fruit bar ); void Foo ( Fruit * bar ); void Foo ( const Fruit & bar );

Beispiel zur Veranschaulichung der Funktionsüberladungsmöglichkeiten der C++-Sprache

void Foo ( int bar ); void Foo ( int bar , int baz ); void Foo ( int bar , int baz , int qux );

Python

Spam , Schinken und Eier sind die wichtigsten metasyntaktischen Variablen der Programmiersprache Python . [ 10 ] Dies ist eine Anspielung auf den berühmten Comedy-Sketch „ Spam “ von Monty Python , dem Namensgeber der Sprache. [ 11 ] Im folgenden Beispiel sind spamSpam, Schinken hamund eggsEier metasyntaktische Variablen, und Zeilen, die mit einem Kommentar beginnen, #sind Kommentare.

# Definiere eine Funktion namens spam def spam ():# Definiere die Variable ham ham = "Hello World!"# Definiere die Variable eggs eggs = 1zurückkehren

IETF-Anfragen für Kommentare

Sowohl die IETF RFCs als auch Computerprogrammiersprachen werden im Klartext dargestellt , weshalb es notwendig ist, metasyntaktische Variablen durch eine Namenskonvention zu unterscheiden, da dies aus dem Kontext nicht ersichtlich wäre.

Hier ein Beispiel aus dem offiziellen IETF- Dokument zur Erläuterung der E-Mail- Protokolle (aus RFC 772 – zitiert in RFC 3092):

Alles ist gut; jetzt können die Empfänger angegeben werden. S: MRCP TO:<Foo@Y> <CRLF> R: 200 OK S: MRCP TO:<Raboof@Y> <CRLF> R: 553 Kein solcher Benutzer hier S: MRCP TO:<bar@Y> <CRLF> R: 200 OK S: MRCP TO:<@Y,@X,fubar@Z> <CRLF> R: 200 OK Beachten Sie, dass das Versagen von "Raboof" keinen Einfluss auf die Speicherung hat. E-Mails für "Foo", "bar" oder die E-Mails, die an "fubar@Z" weitergeleitet werden sollen über Host "X". 

(Die Dokumentation zu texinfo betont den Unterschied zwischen Metavariablen und einfachen Variablen, die in einer Programmiersprache verwendet werden, die in einer texinfo-Datei dokumentiert ist: „Verwenden Sie den Befehl @var, um metasyntaktische Variablen zu kennzeichnen. Eine metasyntaktische Variable steht für einen anderen Textabschnitt. Beispielsweise sollten Sie in der Dokumentation einer Funktion eine metasyntaktische Variable verwenden, um die an diese Funktion übergebenen Argumente zu beschreiben. Verwenden Sie @var nicht für die Namen einzelner Variablen in Programmiersprachen. Dies sind spezifische Namen aus einem Programm, daher ist @code für sie korrekt.“ [ 12 ] )

Ein weiterer Punkt, der sich im obigen Beispiel widerspiegelt, ist die Konvention, dass eine Metavariable in allen ihren Vorkommen in einem gegebenen Schema einheitlich durch dieselbe Instanz ersetzt wird. Dies steht im Gegensatz zu Nichtterminalsymbolen in formalen Grammatiken, wo die Nichtterminale auf der rechten Seite einer Produktionsregel durch verschiedene Instanzen ersetzt werden können. [ 13 ]

Beispieldaten

SQL

Der Name ACME wird häufig in Beispieldatenbanken für SQL und als Platzhalter für Firmennamen zu Schulungszwecken verwendet. Die Bezeichnung „ACME-Datenbank“ steht üblicherweise für einen Datensatz, der ausschließlich zu Schulungs- oder Testzwecken dient. ACME wird auch häufig in Dokumentationen verwendet, die Anwendungsbeispiele für SQL enthalten – eine gängige Praxis in vielen Lehrbüchern sowie in der technischen Dokumentation von Unternehmen wie Microsoft und Oracle . [ 14 ] [ 15 ] [ 16 ]

Siehe auch

Referenzen

  1. ^ a b c Eastlake 3rd, Donald E.; Manros, Carl-Uno; Raymond, Eric S. Etymologie von "Foo" . IETF . doi : 10.17487/RFC3092 . RFC 3092 .
  2. ^ „Dokumentenabruf“ . RFC-Editor .
  3. ^ Laughlin, Stuart (18. November 2016). „Metasyntaktische Variable“ . programming@ProgClub (Mailingliste). Archiviert vom Original am 2. Dezember 2022. Abgerufen am 18. November 2016 .
  4. ^ Crowther, Will (11.03.1977). "advdat.77-03-11" . Quellcode von Colossal Cave Adventure . Dennis G. Jerz . Abgerufen am 28.02.2024 .
  5. ^ „Hogeの意味・使い方 – 英和辞典 Weblio 辞書“ . ejje.weblio.jp .
  6. ^ a bメタ構文変数(auf Japanisch)
  7. ^ LeMan Dergisi 1376. Sayı (auf Türkisch). Lm Basin Yayin Ltd.şti.
  8. ^ „The Jargon File – metasyntaktische Variable“ . www.catb.org/ .
  9. ^ Mongan, John; Kindler, Noah; Giguere, Eric (2012). Programmier-Interviews entlarvt: Geheimnisse für Ihren nächsten Job . John Wiley & Sons. S. 242. ISBN 978-1-118-28720-0Die
  10. ^ „Das Python-Tutorial – Python 3.8.1-Dokumentation“ . docs.python.org .
  11. ^ „Allgemeine Python-FAQ – Python 3.9.7-Dokumentation“ . docs.python.org . Python Software Foundation. 04.09.2021. Warum heißt es Python? Archiviert vom Original am 26.08.2021 . Abgerufen am 05.09.2021 .
  12. ^ „Markierung von Wörtern und Phrasen“ . Texinfo 4.0. Das GNU-Dokumentationsformat . Archiviert vom Original am 06.11.2009 . Abgerufen am 25.11.2012 .
  13. ^ R. D. Tennent (2002). Specifying Software: A Hands-On Introduction . Cambridge University Press. S. 36–37 und 210. ISBN 978-0-521-00401-5Die
  14. Kriegel , Alex (2008). SQL Bible . Indianapolis, Ind.: Wiley. ISBN 978-0-470-22906-4OCLC  402446308 .​
  15. ^ Ruel, Chris (2014). Oracle 12c für Dummies (in Dänisch). Hoboken, NJ: John Wiley & Sons. ISBN 978-1-118-74531-1OCLC  870334544 .​
  16. ^ „Arbeiten mit Daten in ASP.NET Core-Anwendungen“ . docs.microsoft.com . 25. April 2023.