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 ]

Более полную ссылку можно найти в The Hacker's Dictionary от 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 ]

немецкий

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

часто встречается В немецкой культуре программирования личное имя Клаус в качестве имени-заполнителя для класса; оно звучит похоже на «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. ^ Перейти обратно: а б с Истлейк 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. ^ Dictionary . «Значение и использование слова hoge — Англо-японский словарь Weblio »
  6. ^ Перейти обратно: а б Метасинтаксические переменные (на японском языке)
  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
Номер скриншота №: e608f69790eef5b4e634af4acca14b0b__1723560240
URL1:https://arc.ask3.ru/arc/aa/e6/0b/e608f69790eef5b4e634af4acca14b0b.html
Заголовок, (Title) документа по адресу, URL1:
Metasyntactic variable - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)