Метапеременное это конкретное слово или набор слов , определенные в качестве заполнителя в компьютерной науке и , в частности компьютерных программ . Эти слова обычно встречаются в исходном коде и предназначены для изменения или замены перед использованием в реальном мире. Слова foo и bar являются хорошими примерами, поскольку они используются в более чем 330 запросах инженерной группы Интернета на комментарии , документах, которые определяют основополагающие интернет-технологии, такие как HTTP (веб-сайты), TCP / IP и протоколы электронной почты . [1] [2]
По математической аналогии метасинтаксическая переменная - это слово, которое является переменной для других слов, точно так же, как в алгебре буквы используются как переменные для чисел. [1]
Метасинтаксические переменные используются для именования таких объектов, как переменные, функции и команды, точная идентичность которых не важна, и служат только для демонстрации концепции, которая полезна для обучения программированию.
Общие метасинтаксические переменные [ править ]
Поскольку английский является основным языком или лингва-франка большинства языков программирования, эти переменные часто встречаются даже в программах и примерах программ, написанных для других языковых аудиторий.
Однако типичные имена могут зависеть от субкультуры, которая сложилась вокруг данного языка программирования .
Общее использование [ править ]
Метапеременная обычно используемые во всех языках программирования включают в Foobar , Foo , бар , Баз , QUX , quux , quuz , corge , grault , garply , Вальдо , Фредом , plugh , XYZZY , и глухой звук ; некоторые из этих слов являются отсылками к игре Colossal Cave Adventure . [1] [3] Колебание , колебание , колебание и колебаниетакже используются в Великобритании. [4]
Полную справку можно найти в книге MIT Press под названием The Hacker's Dictionary .
Японский [ править ]
В японском языке обычно используются слова hoge (ほ げ) [5] и piyo (ぴ よ), а другие общие слова и варианты - это фуга (ふ が), hogera (ほ げ ら) и hogehoge (ほ げ ほ げ). [6] [ круговая ссылка ] Обратите внимание, что -ra является окончанием множественного числа в японском языке, и дублирование также используется для множественного числа. Происхождение хоге как метасинтаксической переменной неизвестно, но считается, что оно датируется началом 1980-х годов. [6]
Французский [ править ]
Во Франции широко используется слово toto с вариантами tata , titi , tutu в качестве связанных заполнителей. Один из часто упоминаемых источников использования toto - это отсылка к стандартному персонажу, который используется для анекдотов с помощью Tête à Toto .
Примеры использования [ править ]
C [ править ]
В следующем примере имя функции foo и строка имени переменной являются метасинтаксическими переменными. Строки, начинающиеся с //, являются комментариями.
// Функция с именем foo int foo ( void ) { // Объявить переменную bar и установить значение 1 int bar = 1 ; возвратный бар ; }
C ++ [ править ]
Прототипы функций с примерами различных механизмов передачи аргументов : [7]
void Foo ( фруктовый батончик ); 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 . [8] Это отсылка к известной комедии « Спам » Монти Пайтон , эпониму языка. [9] В следующем примере спам , ветчина и яйца являются метасинтаксическими переменными, а строки, начинающиеся с #, являются комментариями.
# Определите функцию с именем spam def spam (): # Определите переменную ham ham = "Hello World!" # Определяем переменную яйца egg = 1 возвращаться
Запросы IETF на комментарии [ править ]
И RFC IETF, и языки компьютерного программирования представлены в виде простого текста , поэтому необходимо различать метасинтаксические переменные по соглашению об именах, поскольку это не будет очевидно из контекста.
Вот пример из официального документа IETF, объясняющего протоколы электронной почты (из RFC 772 - цитируется в RFC 3092):
Все хорошо; теперь можно указать получателей. S: MRCP Кому: <Foo @ Y> <CRLF> R: 200 ОК S: MRCP Кому: <Raboof @ Y> <CRLF> R: 553 Такого пользователя здесь нет S: MRCP К: <bar @ Y> <CRLF> R: 200 ОК S: MRCP TO: <@ Y, @ X, fubar @ Z> <CRLF> R: 200 ОК Обратите внимание, что отказ "Raboof" не влияет на хранение письмо для "Foo", "bar" или письмо, которое будет отправлено на "fubar @ Z" через хост «X».
(В документации для texinfo подчеркивается различие между метапеременными и простыми переменными, используемыми в языке программирования, которые документируются в каком-либо файле texinfo следующим образом: «Используйте команду @var для обозначения метасинтаксических переменных. Метасинтаксическая переменная - это то, что обозначает другой фрагмент текста. Например, вы должны использовать метасинтаксическую переменную в документации функции для описания аргументов, которые передаются этой функции. Не используйте @var для имен конкретных переменных в языках программирования. Это конкретные имена из программы, поэтому @code для них правильный. " [10] )
Другой момент, отраженный в приведенном выше примере, - это соглашение о том, что метапеременная должна быть равномерно заменена одним и тем же экземпляром во всех его проявлениях в данной схеме. Это контрастирует с нетерминальными символами в формальных грамматиках, где нетерминалы справа от продукции могут быть заменены различными экземплярами. [11]
Пример данных [ править ]
SQL [ править ]
Обычно имя ACME используется в примерах баз данных SQL и в качестве названия компании-заполнителя с целью обучения. Термин «База данных ACME» обычно используется для обозначения набора данных базы данных для обучения или только для примера, используемого исключительно для обучения или тестирования. ACME также часто используется в документации, которая показывает примеры использования SQL, что является обычной практикой во многих учебных текстах, а также в технической документации таких компаний, как Microsoft и Oracle . [12] [13] [14]
См. Также [ править ]
- Метапеременная (логика)
- xyzzy
- Алиса и Боб
- Джон Доу
- Fnord
- Свободные переменные и связанные переменные
- Гаджет
- Lorem ipsum
- Одноразовое слово
- Имя заполнителя
- Виджет
- Смурф
Ссылки [ править ]
- ^ a b c Истлейк 3-й, Дональд Э .; Манрос, Карл-Уно; Раймонд, Эрик С. Этимология «Foo» . DOI : 10,17487 / RFC3092 . RFC 3092 .
- ^ "Получение документа" . Редактор RFC .
- ↑ Лафлин, Стюарт (18 ноября 2016 г.). «Метасинтаксическая переменная» . программирование @ ProgClub (Список рассылки) . Проверено 18 ноября, 2016 .
- ^ колебание . (nd). Файл жаргона 4.4.7. Получено 23 февраля 2010 г. из [1]
- ^ "hoge の 意味 ・ 使 い 方 - 英 和 辞典 WEBLIO 辞書" . ejje.weblio.jp .
- ^ a b メ タ 構 文 変 数 (на японском языке)
- ^ Монган, Джон; Киндлер, Ной; Жигер, Эрик (2012). Разоблаченные собеседования по программированию: секреты вашей следующей работы . Джон Вили и сыновья. п. 242. ISBN. 978-1-118-28720-0.
- ^ «Учебное пособие по Python - документация по Python 3.8.1» . docs.python.org .
- ^ Общие вопросы по Python
- ^ «Обозначение слов и фраз» . Texinfo 4.0. Формат документации GNU . Архивировано из оригинала на 2009-11-06 . Проверено 25 ноября 2012 .
- ^ RD Tennent (2002). Определение программного обеспечения: практическое введение . Издательство Кембриджского университета. С. 36–37 и 210. ISBN 978-0-521-00401-5.
- ^ Кригель, Алекс (2008). Библия SQL . Индианаполис, Индиана: Wiley. ISBN 978-0-470-22906-4. OCLC 402446308 .
- ^ Руэль, Крис (2014). Oracle 12c для чайников (на датском). Хобокен, Нью-Джерси: Джон Уайли и сыновья. ISBN 978-1-118-74531-1. OCLC 870334544 .
- ^ https://docs.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/work-with-data-in-asp-net-core-apps
Внешние ссылки [ править ]
- Определение метасинтаксической переменной с примерами.
- Примеры метасинтаксических переменных, используемых в Commonwealth Hackish , таких как вомбат .
- Переменная "foo" и другие странности программирования