Метасинтаксична змінна

Метасинтаксична змінна, метазмінна — це конкретне слово або набір слів, визначений як змінна у інформатиці та, зокрема, в комп’ютерному програмуванні . Ці слова зазвичай зустрічаються у вихідному коді і призначені для зміни або заміни перед використанням у реальному світі. Слова foo і bar є хорошими прикладами, оскільки вони використовуються в понад 330 запитах цільової групи Internet Engineering для коментарів, документах, які визначають основні інтернет-технології, такі як HTTP (веб), TCP/IP та протоколи електронної пошти . [1] [2]

За математичною аналогією метасинтаксична змінна - це слово, яке є змінною для інших слів, так само як в алгебрі літери використовуються як змінні для чисел. [1]

Метасинтаксичні змінні використовуються для іменування сутностей, таких як змінні, функції та команди, точна ідентичність яких не важлива, і служать лише для демонстрації концепції, яка корисна для навчання програмуванню.

Поширені метасинтаксичні змінні ред.

Оскільки англійська мова є основною мовою, або lingua franca, для більшості мов комп’ютерного програмування, ці змінні часто зустрічаються навіть у програмах і прикладах програм, написаних для іншої розмовної аудиторії.

Однак типові назви можуть залежати від субкультури та аудиторії, що склалася навколо даної мови програмування .

Загальне використання ред.

Метасинтаксичні змінні, які зазвичай використовуються в усіх мовах програмування, включають foobar, foo, bar, baz, qux, quux, quuz, corge, grault, garply, waldo, fred, plugh, xyzzy і thud ; кілька з цих слів є посиланнями на гру Colossal Cave Adventure . [1] [3] Wibble, wobble, wubble і flob також використовуються у Великій Британії. [4]

Повне посилання можна знайти в книзі MIT Press під назвою The Hacker's Dictionary .

Японська мова

У японській мові hoge (ほげ) [5] і piyo (ぴよ), а іншими поширеними словами та варіантами є fuga (ふが), hogera (ほげら) і hogehoge (ほげほげ).   Зверніть увагу, що -ra є множинним закінченням в японській мові, а для множини також використовується дублювання. Походження hoge як метасинтаксичної змінної невідоме, але вважається, що воно датується початком 1980-х років. [6]

Французька мова

У Франції широко використовується слово toto, з варіантами tata, titi, tutu як пов’язаними змінними. Одним із поширених джерел використання toto є посилання на стандартний символ, який використовується, щоб розповідати жарти з Tête à Toto .

Приклади використання ред.

 
Знімок екрана метасинтаксичної змінної FOO, призначеної та відтвореної в інтерактивному сеансі оболонки.

 С

У наступному прикладі ім'я функції foo і рядок імені змінної є метасинтаксичними змінними. Рядки, що починаються з "//", є коментарями.

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

  return bar;
}

С++ Прототипи функцій із прикладами різних механізмів передачі аргументів [7]

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

Приклад, що показує можливості перевантаження функцій мови C++

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

Python ред.

Spam, ham і eggs є основними метасинтаксичними змінними, які використовуються в мові програмування Python . [8] Це посилання на відомий комедійний скетч « Спам », написаний Монті Пайтоном, епонімом мови. [9] У наступному прикладі spam, ham і eggs є метасинтаксичними змінними, а рядки, що починаються на #, є коментарями.

# Define a function named spam
def spam():

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

  # Define the variable eggs
  eggs = 1

  return

IETF Запити на коментарі ред.

І RFC IETF, і мови комп’ютерного програмування відображаються у вигляді простого тексту, що робить необхідним розрізняти метасинтаксичні змінні за умовами найменування, оскільки це не буде очевидно з контексту.

Ось приклад з офіційного документа IETF, що пояснює протоколи електронної поштиRFC 772 - цитується в RFC 3092 ):

 All is well; now the recipients can be specified.

     S: MRCP TO:<Foo@Y> <CRLF>
     R: 200 OK

     S: MRCP TO:<Raboof@Y> <CRLF>
     R: 553  No such user here

     S: MRCP TO:<bar@Y> <CRLF>
     R: 200 OK

     S: MRCP TO:<@Y,@X,fubar@Z> <CRLF>
     R: 200 OK

  Note that the failure of "Raboof" has no effect on the storage of
  mail for "Foo", "bar" or the mail to be forwarded to "fubar@Z"
  through host "X".

(Документація для texinfo підкреслює відмінність між метазмінними і простими змінними, які використовуються в мові програмування, задокументовані в якомусь файлі texinfo як: «Використовуйте команду @var для вказівки метасинтаксичних змінних. Метасинтаксична змінна — це щось, що означає інший фрагмент тексту. Наприклад, ви повинні використовувати метасинтаксичну змінну в документації функції для опису аргументів, які передаються цій функції. Не використовуйте @var для імен певних змінних у мовах програмування. Це конкретні назви програми, тому @code підходить для них.» [10] )

Інший момент, відображений у наведеному вище прикладі, — це умова, що метазмінна має бути рівномірно замінена одним і тим же екземпляром у всіх його проявах у даній схемі. Це на відміну від нетермінальних символів у формальних граматиках, де нетермінальні символи праворуч від продукції можуть бути замінені різними екземплярами. [11]

Приклад даних ред.

SQL ред.

Зазвичай ім’я ACME використовується в прикладі баз даних SQL і як змінна для назви компанії з метою навчання. Термін «база даних ACME» зазвичай використовується для позначення навчального або прикладного набору даних бази даних, що використовуються виключно для навчання або тестування. ACME також зазвичай використовується в документації, яка показує приклади використання SQL, звичайну практику в багатьох навчальних текстах, а також технічній документації таких компаній, як Microsoft і Oracle . [12] [13] [14]

Див. також ред.

Примітки ред.

  1. а б в [[[:Шаблон:Cite IETF/makelink]] Etymology of "Foo"]. doi:10.17487/RFC3092. Шаблон:Cite IETF/doctypes.
  2. Document Retrieval. RFC Editor. Архів оригіналу за 19 грудня 2021. Процитовано 13 грудня 2021.
  3. Laughlin, Stuart (18 листопада 2016). Metasyntactic variable (Список розсилки). Архів оригіналу за 2 травня 2021. Процитовано 13 грудня 2021.
  4. wibble. (n.d.). Jargon File 4.4.7. Retrieved February 23, 2010, from
  5. hogeの意味・使い方 - 英和辞典 Weblio 辞書. ejje.weblio.jp. Архів оригіналу за 13 грудня 2021. Процитовано 13 грудня 2021.
  6. メタ構文変数 (яп.)
  7. Mongan, John; Kindler, Noah; Giguere, Eric (2012). Programming Interviews Exposed: Secrets to Landing Your Next Job. John Wiley & Sons. с. 242. ISBN 978-1-118-28720-0. Архів оригіналу за 13 грудня 2021. Процитовано 13 грудня 2021.
  8. The Python Tutorial — Python 3.8.1 documentation. docs.python.org. Архів оригіналу за 13 травня 2022. Процитовано 13 грудня 2021.
  9. General Python FAQ — Python 3.9.7 documentation. docs.python.org. Python Software Foundation. 4 вересня 2021. Why is it called Python?. Архів оригіналу за 26 серпня 2021. Процитовано 5 вересня 2021.
  10. Marking Words and Phrases. Texinfo 4.0. The GNU Documentation Format. Архів оригіналу за 6 листопада 2009. Процитовано 25 листопада 2012.
  11. R. D. Tennent (2002). Specifying Software: A Hands-On Introduction. Cambridge University Press. с. 36–37 and 210. ISBN 978-0-521-00401-5.
  12. Kriegel, Alex (2008). SQL bible. Wiley. ISBN 978-0-470-22906-4. OCLC 402446308.
  13. Ruel, Chris (2014). Oracle 12c for dummies (дан.). John Wiley & Sons. ISBN 978-1-118-74531-1. OCLC 870334544.
  14. Work with data in ASP.NET Core Apps. docs.microsoft.com. Архів оригіналу за 13 грудня 2021. Процитовано 13 грудня 2021.

Посилання ред.