Метасинтаксическая переменная
— Метасинтаксическая переменная это определенное слово или набор слов, идентифицируемых как заполнитель в информатике и, в частности, в компьютерном программировании . Эти слова обычно встречаются в исходном коде и предназначены для изменения или замены перед реальным использованием. Например, 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
и имя переменной 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]
Пример данных
[ редактировать ]SQL
[ редактировать ]обычно используется Имя ACME в примерах SQL баз данных и в качестве заполнителя названия компании в целях обучения. Термин «база данных ACME» обычно используется для обозначения набора данных базы данных для обучения или примера, используемого исключительно для обучения или тестирования. ACME также широко используется в документации, в которой показаны примеры использования SQL, что является обычной практикой во многих учебных текстах, а также в технической документации таких компаний, как Microsoft и Oracle . [14] [15] [16]
См. также
[ редактировать ]- Метапеременная (логика)
- киззи
- Алиса и Боб
- Джон Доу
- Фнорд
- Свободные переменные и связанные переменные
- Гаджет
- Очень хорошо сделано
- Одноразовое слово
- Имя заполнителя
- Виджет
- Смурф
Ссылки
[ редактировать ]- ^ Jump up to: Перейти обратно: а б с Истлейк 3-й, Дональд Э.; Манрос, Карл-Один; Рэймонд, Эрик С. Этимология слова «Фу » дои : 10.17487/RFC3092 . РФК 3092 .
- ^ «Поиск документов» . Редактор RFC .
- ^ Лафлин, Стюарт (18 ноября 2016 г.). «Метасинтаксическая переменная» . программирование@ProgClub (список рассылки). Архивировано из оригинала 2 декабря 2022 года . Проверено 18 ноября 2016 г.
- ^ Кроутер, Уилл (11 марта 1977 г.). "адвдат.77-03-11" . Исходный код Colossal Cave Adventure . Деннис Дж. Джерц . Проверено 28 февраля 2024 г.
- ^ и использование слова hoge — Англо-японский словарь Weblio Dictionary» . ejje.weblio.jp « Значение
- ^ Jump up to: Перейти обратно: а б Метасинтаксические переменные (на японском языке)
- ^ Журнал LeMan, выпуск 1376 (на турецком языке). Lm Basin Yayin Ltd.şti.
- ^ «Жаргонный файл – метасинтаксическая переменная» . www.catb.org/ .
- ^ Монган, Джон; Киндлер, Ной; Жигер, Эрик (2012). Разоблачение собеседований по программированию: секреты получения следующей работы . Джон Уайли и сыновья. п. 242. ИСБН 978-1-118-28720-0 .
- ^ «Учебник по Python — документация Python 3.8.1» . docs.python.org .
- ^ «Общие часто задаваемые вопросы по Python — документация по Python 3.9.7» . docs.python.org . Фонд программного обеспечения Python. 04.09.2021. Почему он называется Python? Архивировано из оригинала 26 августа 2021 г. Проверено 05 сентября 2021 г.
- ^ «Выделение слов и словосочетаний» . Техинфо 4.0. Формат документации GNU . Архивировано из оригинала 6 ноября 2009 г. Проверено 25 ноября 2012 г.
- ^ Р.Д. Теннент (2002). Выбор программного обеспечения: практическое введение . Издательство Кембриджского университета. стр. 36–37 и 210. ISBN. 978-0-521-00401-5 .
- ^ Кригель, Алекс (2008). Библия SQL . Индианаполис, Индиана: Уайли. ISBN 978-0-470-22906-4 . OCLC 402446308 .
- ^ Руэл, Крис (2014). Oracle 12c для чайников (на датском языке). Хобокен, Нью-Джерси: John Wiley & Sons. ISBN 978-1-118-74531-1 . OCLC 870334544 .
- ^ «Работа с данными в приложениях ASP.NET Core» . docs.microsoft.com .
Внешние ссылки
[ редактировать ]- Определение метасинтаксической переменной с примерами.
- Примеры метасинтаксических переменных, используемых в Commonwealth Hackish , таких как wombat .
- Переменная «foo» и другие странности программирования