Метасинтаксическая переменная - Metasyntactic variable

Метапеременное это конкретное слово или набор слов , определенные в качестве заполнителя в компьютерной науке и , в частности компьютерных программ . Эти слова обычно встречаются в исходном коде и предназначены для изменения или замены перед использованием в реальном мире. Слова foo и bar являются хорошими примерами, поскольку они используются в более чем 330 запросах инженерной группы Интернета на комментарии , документах, которые определяют основополагающие интернет-технологии, такие как HTTP (веб), TCP / IP и протоколы электронной почты .

По математической аналогии , метасинтаксическая переменная является слово , которое является переменной для других слов, так же , как в алгебре буквы используются в качестве переменных для чисел.

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

Общие метасинтаксические переменные

Поскольку английский является основным языком или lingua franca большинства языков программирования, эти переменные часто встречаются даже в программах и примерах программ, написанных для других разговорных аудиторий.

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

Общее использование

Метапеременная обычно используемые во всех языках программирования включают в Foobar , Foo , бар , Баз , QUX , quux , quuz , corge , grault , garply , Вальдо , Фредом , plugh , XYZZY , и глухой звук ; некоторые из этих слов являются отсылками к игре Colossal Cave Adventure . Колебание , колебание , колебание и колебание также используются в Великобритании.

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

Японский

В японском языке обычно используются слова hoge (ほ げ) и piyo (ぴ よ), а другие общие слова и варианты - это фуга (ふ が), hogera (ほ げ ら) и hogehoge (ほ げ ほ げ). Обратите внимание, что -ra - это окончание множественного числа в японском языке, и дублирование также используется для множественного числа. Происхождение хоге как метасинтаксической переменной неизвестно, но считается, что оно датируется началом 1980-х годов.

французкий язык

Во Франции широко используется слово toto с вариантами tata , titi , tutu в качестве связанных заполнителей. Один из часто упоминаемых источников использования toto - это отсылка к стандартному персонажу, используемому для анекдотов с помощью Tête à Toto .

Примеры использования

Image
Снимок экрана метасинтаксической переменной FOO, назначенной и отображаемой в интерактивном сеансе оболочки.

C

В следующем примере имя функции foo и строка имени переменной являются метасинтаксическими переменными. Строки, начинающиеся с //, являются комментариями.

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

   return bar;
}

C ++

Прототипы функций с примерами различных механизмов передачи аргументов :

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

Спам , ветчина и яйца - основные метасинтаксические переменные, используемые в языке программирования Python . Это отсылка к известной комедии « Спам » Монти Пайтона , эпонима языка. В следующем примере спам , ветчина и яйца являются метасинтаксическими переменными, а строки, начинающиеся с символа #, являются комментариями.

# 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 для них подходит. ")

Другой момент, отраженный в приведенном выше примере, - это соглашение о том, что метапеременная должна быть равномерно заменена одним и тем же экземпляром во всех его проявлениях в данной схеме. Это контрастирует с нетерминальными символами в формальных грамматиках, где нетерминалы справа от продукции могут быть заменены различными экземплярами.

Пример данных

SQL

Обычно имя ACME используется в примерах баз данных SQL и в качестве названия компании-заполнителя с целью обучения. Термин «База данных ACME» обычно используется для обозначения набора данных базы данных для обучения или только для примера, используемого исключительно для обучения или тестирования. ACME также часто используется в документации, которая показывает примеры использования SQL, что является обычной практикой во многих учебных текстах, а также в технической документации таких компаний, как Microsoft и Oracle .

Смотрите также

использованная литература

внешние ссылки