Jump to content

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

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

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

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

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

[ редактировать ]

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

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

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

[ редактировать ]

Метасинтаксические переменные, обычно используемые во всех языках программирования, включают foobar , foo , bar , baz , qux , quux , corge , grault , garply , waldo , fred , plugh , xyzzy и thud . [1] [3] Два этих слова, plugh и xyzzy , взяты из игры Colossal Cave Adventure . [4]

Полный справочник можно найти в книге MIT Press под названием «Словарь хакера» .

японский

[ редактировать ]

В японском языке слова хогэ (ほげ) [5] и фуга обычно используются, а другими распространенными словами и вариантами являются piyo , hogera и hogehoge . [6] [ циклическая ссылка ] Происхождение слова «хоге» как метасинтаксической переменной неизвестно, но считается, что оно датируется началом 1980-х годов. [6]

Французский

[ редактировать ]

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

турецкий

[ редактировать ]

В Турции слова hede и hödö (обычно пишутся ходо из- за ограничений именования языков программирования только в ASCII ) являются хорошо известными метасинтаксическими переменными, взятыми из популярных юмористических журналов с карикатурами 90-х годов, таких как LeMan. Слова ничего не означают и специально используются вместо вещей, которые ничего не значат. Эти термины были популяризированы в массах актером и стендап-комиком Джемом Йылмазом в конце 90-х - начале 2000-х годов. [7]

итальянский

[ редактировать ]

В итальянской культуре программирования часто можно встретить имена персонажей Уолта Диснея, используемые в качестве переменных. Эти имена часто появляются в псевдокоде, упоминаются на курсах по разработке программного обеспечения и обычно используются при объяснении алгоритмов коллегам. Среди наиболее часто используемых — «пиппо» (Гуфи), «Плутон» и «паперино» (Дональд Дак). [8]

немецкий

[ редактировать ]

часто встречается В немецкой культуре программирования Klaus в качестве имени класса-заполнителя, поскольку в немецком языке слово «класс» означает «Klasse». [ нужна ссылка ]

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

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

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

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

   return bar;
}

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

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 . [10] Это отсылка к знаменитому комедийному скетчу « Спам » Монти Пайтона , эпонима языка. [11] В следующем примере 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 на комментарии

[ редактировать ]

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

Вот пример из официального документа 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 для них подходит». [12] )

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

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

[ редактировать ]

обычно используется Имя ACME в примерах SQL баз данных и в качестве заполнителя названия компании в целях обучения. Термин «база данных ACME» обычно используется для обозначения набора данных базы данных для обучения или примера, используемого исключительно для обучения или тестирования. ACME также широко используется в документации, в которой показаны примеры использования SQL, что является обычной практикой во многих учебных текстах, а также в технической документации таких компаний, как Microsoft и Oracle . [14] [15] [16]

См. также

[ редактировать ]
  1. ^ Jump up to: Перейти обратно: а б с Истлейк 3-й, Дональд Э.; Манрос, Карл-Один; Рэймонд, Эрик С. Этимология слова «Фу » дои : 10.17487/RFC3092 . РФК 3092 .
  2. ^ «Поиск документов» . Редактор RFC .
  3. ^ Лафлин, Стюарт (18 ноября 2016 г.). «Метасинтаксическая переменная» . программирование@ProgClub (список рассылки). Архивировано из оригинала 2 декабря 2022 года . Проверено 18 ноября 2016 г.
  4. ^ Кроутер, Уилл (11 марта 1977 г.). "адвдат.77-03-11" . Исходный код Colossal Cave Adventure . Деннис Дж. Джерц . Проверено 28 февраля 2024 г.
  5. ^ и использование слова hoge — Англо-японский словарь Weblio Dictionary» . ejje.weblio.jp « Значение
  6. ^ Jump up to: Перейти обратно: а б Метасинтаксические переменные (на японском языке)
  7. ^ Журнал LeMan, выпуск 1376 (на турецком языке). Lm Basin Yayin Ltd.şti.
  8. ^ «Жаргонный файл – метасинтаксическая переменная» . www.catb.org/ .
  9. ^ Монган, Джон; Киндлер, Ной; Жигер, Эрик (2012). Разоблачение собеседований по программированию: секреты получения следующей работы . Джон Уайли и сыновья. п. 242. ИСБН  978-1-118-28720-0 .
  10. ^ «Учебник по Python — документация Python 3.8.1» . docs.python.org .
  11. ^ «Общие часто задаваемые вопросы по Python — документация по Python 3.9.7» . docs.python.org . Фонд программного обеспечения Python. 04.09.2021. Почему он называется Python? Архивировано из оригинала 26 августа 2021 г. Проверено 05 сентября 2021 г.
  12. ^ «Выделение слов и словосочетаний» . Техинфо 4.0. Формат документации GNU . Архивировано из оригинала 6 ноября 2009 г. Проверено 25 ноября 2012 г.
  13. ^ Р.Д. Теннент (2002). Выбор программного обеспечения: практическое введение . Издательство Кембриджского университета. стр. 36–37 и 210. ISBN.  978-0-521-00401-5 .
  14. ^ Кригель, Алекс (2008). Библия SQL . Индианаполис, Индиана: Уайли. ISBN  978-0-470-22906-4 . OCLC   402446308 .
  15. ^ Руэл, Крис (2014). Oracle 12c для чайников (на датском языке). Хобокен, Нью-Джерси: John Wiley & Sons. ISBN  978-1-118-74531-1 . OCLC   870334544 .
  16. ^ «Работа с данными в приложениях ASP.NET Core» . docs.microsoft.com .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e41d06550d2d88a1f08775c1741f97b6__1720582560
URL1:https://arc.ask3.ru/arc/aa/e4/b6/e41d06550d2d88a1f08775c1741f97b6.html
Заголовок, (Title) документа по адресу, URL1:
Metasyntactic variable - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)