Сигил (компьютерное программирование) - Sigil (computer programming)

В компьютерное программирование, а сигил (/ˈsɪəl/) - символ, прикрепленный к Переменная имя, показывающее переменную тип данных или же объем, обычно префикс, как в $ foo, куда $ это сигилла.

Сигил, от латинский сигиллум, что означает "маленький знак", означает знак или изображение, предположительно обладающее магической силой.[1] В 1999 году Филип Гвин принял термин "для обозначения забавного персонажа в передней части Perl Переменная."[2]

Исторический контекст

Использование сигил было популяризировано BASIC язык программирования. Самый известный пример сигилы в BASIC - это знак доллара ("$") добавлен к именам всех струны. Многие BASIC диалекты используют другие сигилы (например, "%") для обозначения целые числа и числа с плавающей запятой и их точность, а иногда и другие типы.

Ларри Уолл усыновленный сценарии оболочки использует сигилы для своего Язык программирования Perl.[нужна цитата ] В Perl сигилы не определяют мелкозернистые типы данных, такие как строки и целые числа, но более общие категории скаляры (с префиксом "$"), массивы (используя"@"), хеши (с помощью "%"), и подпрограммы (с помощью "&"). Раку также использует вторичные сигилы или веточки,[3] для обозначения объема переменных. Известные примеры веточек в Раку включают "^", используемый с самопровозглашенными формальными параметрами (" переменные-заполнители "), и".", используемый со средствами доступа к атрибутам объекта (т. е. переменными экземпляра).

В КЛИПЫ, скалярные переменные имеют префикс "?"сигил, в то время как многополевые переменные (например, одноуровневый список) имеют префикс"$?".

В Common Lisp специальные переменные (с динамической областью видимости) обычно окружены * в том, что называется "соглашение о наушниках ". Хотя это всего лишь соглашение и не является обязательным, сам язык принимает эту практику (например, * стандартный вывод *). Точно так же некоторые программисты заключают константы в +.

В CycL, переменные имеют префикс "?"сигил.[4] Точно так же имена констант имеют префикс "#$"(произносится" хэш-доллар ").[5]

В Эликсир, строковые сигилы предоставляются через "~" символ.

В КАРТА (также известный как BIS) именованные переменные имеют префикс «<» и суффикс «>», потому что строки или значения символов не требуют кавычек.

В mIRC скрипт, идентификаторы имеют "$"сигил, в то время как все переменные имеют"%"с префиксом (независимо от локальных или глобальных переменных или типа данных). Двоичные переменные имеют префикс"&".

в МАМПЫ язык программирования, "$«предшествует внутренним именам функций и« именам специальных переменных »(встроенным переменным для доступа к состоянию выполнения)».$ Z"предшествует именам нестандартных встроенных функций".$$"предшествует внешним именам функций. Подпрограммы (используемые для процедур, подпрограмм, функций) и глобальные переменные (хранилище базы данных) имеют префикс каретки (^). На последнее поддерево глобальной переменной можно косвенно ссылаться с помощью символа вставки и последнего индекса; это Общесистемные процедуры и глобальные переменные (хранящиеся в определенных общих базах данных) имеют префикс ^%; они называются «подпрограммами процента» и «глобальными переменными процента».

В Цель-C, строковые литералы, которым предшествует "@"являются экземплярами типа объекта NSString или, поскольку лязгать v3.1 / LLVM v4.0, NSNumber, NSArray или же NSDictionary. Префикс-@ также используется в ключевых словах интерфейс, выполнение, и конец чтобы выразить структуру определений классов. В объявлениях и определениях классов также используется префикс - используется для обозначения методов и переменных-членов, а префикс + указывает элементы класса.

в PHP язык, который во многом был вдохновлен Perl ",$"предшествует любому Переменная имя. Имена без этого префикса считаются константы, функции или же учебный класс имена (или имена интерфейсов или признаков, которые используют то же пространство имен, что и классы).

ПИЛОТ использует "$«для буферов (строковых переменных)»,#"для целочисленных переменных и"*"для программных этикеток.

Python использует "@"префикс для обозначения декоратор.

В Рубин, обычные переменные не имеют сигил, но "$"имеет префикс глобальные переменные, "@"имеет префикс переменные экземпляра, и "@@"имеет префикс переменные класса. Ruby также использует (строго обычные) суффиксные сигилы: "?"указывает на метод предиката, возвращающий (обычно) логический ценить; и "!"указывает на то, что метод может иметь потенциально неожиданный эффект и требует осторожного обращения.

В Схема по соглашению имена процедур, которые всегда возвращают логическое значение, обычно заканчиваются на "?". Точно так же имена процедур, которые хранят значения в частях ранее выделенных объектов Scheme (таких как пары, векторы или строки), обычно заканчиваются на"!".

Стандартный ML использует префиксную сигилу "'"на переменной, которая ссылается на тип. Если сигил удваивается, он относится к типу, для которого определено равенство."'"символ может также появляться внутри или в конце переменной, и в этом случае он не имеет особого значения.

В Transact-SQL, "@"предшествует имени локальной переменной или параметра. Системные переменные (известные как глобальные переменные) выделяются знаком"@@" префикс.

В Windows PowerShell, который частично был вдохновлен Оболочки Unix и Perl имена переменных начинаются с префикса "$"сигил.

В XSLT, переменные и параметры имеют начало "$"сигил в использовании, хотя когда он определен в <xsl:param> или же <xsl:variable> с "имя", сигил не включен. Что касается XSLT, XQuery использует "$"форма сигилы как в определении, так и в использовании.

В MEL, имена переменных начинаются с префикса "$"чтобы отличать их от функций, команд и других идентификаторов.

Подобные явления

Переменные сценария оболочки

В Unix сценарии оболочки и в таких коммунальных услугах, как Makefiles, "$"- унарный оператор, который переводит имя переменной в ее содержимое. Хотя это может показаться похожим на сигилу, на самом деле это унарный оператор для лексического косвенное обращение, аналогично * оператор разыменования для указателей в C, что заметно по тому факту, что знак доллара опускается при присвоении переменной.

Соглашения об идентификаторах

В Фортран, сигилы не используются, но используются все переменные, начинающиеся с букв I, J, K, L, M и N. целые числа по умолчанию. В документации Fortran это называется «неявная типизация», хотя всегда доступна явная типизация, позволяющая объявить любую переменную с любым типом. (Выбор диапазона I – N соответствует традиционным математические соглашения об именах.)

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

Строппинг

Собственно форма строппинг, использование многих языков в Microsoft .СЕТЬ Инфраструктура общего языка (CLI) требует способа использования переменных на другом языке, которые могут быть ключевыми словами на вызывающем языке. Иногда это делается с помощью префиксов. В C #, любые имена переменных могут иметь префикс "@". Это в основном используется, чтобы разрешить использование имен переменных, которые в противном случае конфликтуют с ключевыми словами.[6] То же самое достигается в VB.Net заключив имя в квадратные скобки, как в [конец].[7]

"@"префикс также может применяться к строковым литералам; см. буквальные аффиксы ниже.

Венгерская нотация

С сигиллами связана Венгерская нотация, а соглашение об именовании для переменных, который определяет тип переменной, добавляя определенные буквенные префиксы к имени переменной. Однако, в отличие от сигил, венгерская нотация не предоставляет компилятору никакой информации; как таковые, явные типы должны быть указаны с избыточностью для переменных (если не используется язык с вывод типа ). Поскольку большинство стандартных компиляторов не предписывают использование префиксов, это допускает пропуски, а также делает код подверженным путанице из-за случайного ошибочного использования.[8]

Буквальные аффиксы

В то время как сигилы применяются к именам (идентификаторам), аналогичные префиксы и суффиксы могут применяться к литералы, особенно целочисленные литералы и строковые литералы, указывая, как следует оценивать литерал, или какой это тип данных. Например, 0x10ULL оценивает значение 16 как длинное целое число без знака в C ++: 0x префикс обозначает шестнадцатеричный, а суффикс ULL указывает беззнаковый длинный длинный. Точно так же префиксы часто используются для обозначения необработанная строка, Такие как r "C: Windows" в Python, который представляет строку со значением C: Windows; как экранированная строка это будет записано как "C: Windows".

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

Аннотации Java

Сравнивать Аннотации Java такие как @Override и @Deprecated.

Путаница

В некоторых случаях один и тот же синтаксис может использоваться для разных целей, что может вызвать путаницу. Например, в C #, "@"префикс" может использоваться либо для перестановки (чтобы разрешить использование зарезервированных слов в качестве идентификаторов), либо как префикс к литералу (чтобы указать необработанная строка ); в этом случае ни одно использование не является сигилой, поскольку оно влияет на синтаксис идентификаторов или семантику литералов, а не на семантику идентификаторов.

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

Рекомендации

  1. ^ "Определение сигилы". Словарь английского языка Коллинза. Получено 22 мая 2012.
  2. ^ Марк Джейсон Доминус (10 ноября 2003 г.). "Re: sigil". PerlMonks. Фонд Perl. Получено 2009-09-12.
  3. ^ "Переменные Perl 6: Twigils", Perl 6 Документация
  4. ^ «Переменные - Cycorp». www.Cyc.com. Получено 31 декабря 2017.
  5. ^ «Константы - Цикорп». www.Cyc.com. Получено 31 декабря 2017.
  6. ^ "Ключевые слова C #". MSDN. Получено 2011-03-23.
  7. ^ "строка (Справочник по C #)". MSDN. Получено 2011-03-23.
  8. ^ Стиль кодирования ядра Linux, Линус Торвальдс