Jump to content

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

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

Сигил , от латинского sigillum , что означает «маленький знак», означает знак или изображение, предположительно обладающее магической силой . [1] Сигиллы можно использовать для разделения и разграничения пространств имен , обладающих разными свойствами или поведением.

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

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

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

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

Использование сигила в некоторых языках

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

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

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

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

В Elixir символы предоставляются через " ~", за которым следует буква, обозначающая тип символа, а затем разделители. Например, ~r(foo) является регулярным выражением «foo». Другие символы включают в себя ~s для струн и ~D для свиданий. Программисты также могут создавать свои собственные символы. [5]

В эзотерическом языке INTERCAL переменные представляют собой 16-битный целочисленный идентификатор с префиксом « ." (называемый "спот") для 16-битных значений, " :" (так называемый "twospot") для 32-битных значений, " ," ("хвост") для массивов 16-битных значений и " ;"("гибрид") для массивов 32-битных значений. [6] Более поздний CLC-Intercal добавил: « @" ("водоворот") для переменной, которая не может содержать никакого значения (используется для классов ) и " _"используется для хранения измененного компилятора . [7]

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

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

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

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

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

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

Python использует " __Префикс « dunder » для «частных» атрибутов .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Строппинг

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

На самом деле это форма ограничения : использование многих языков в Microsoft .NET Common Language Infrastructure (CLI) требует способа использования переменных на другом языке, которые могут быть ключевыми словами на вызывающем языке. Иногда это делается с помощью префиксов. В C# любые имена переменных могут иметь префикс " @". В основном это используется для разрешения использования имен переменных, которые в противном случае конфликтовали бы с ключевыми словами. [9] То же самое достигается в VB.Net , заключая имя в квадратные скобки, как в [end]. [10]

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

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

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

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

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

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

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

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

Java-аннотации

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

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

Путаница

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

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

См. также

[ редактировать ]
  1. ^ «Определение сигилы» . Словарь английского языка Коллинза . Проверено 22 мая 2012 г.
  2. ^ «Переменные Perl 6: Twigils» , Документация Perl 6.
  3. ^ «Переменные – Сайкорп» . www.Cyc.com . Проверено 31 декабря 2017 г.
  4. ^ «Константы – Сайкорп» . www.Cyc.com . Проверено 31 декабря 2017 г.
  5. ^ «Начало работы: сигилы» . Эликсир . Проверено 18 января 2022 г.
  6. ^ «Обновленное руководство по эксплуатации C-INTERCAL 0.29» . catb.org . Проверено 30 июня 2022 г.
  7. ^ «Справочник CLC-INTERCAL» . oshaboy.github.io . Проверено 30 июня 2022 г.
  8. ^ Блэк, Дэвид А. (15 августа 2007 г.). «Методы взрыва, или Опасность, Уилл Рубист!» . Архивировано из оригинала 22 мая 2016 года.
  9. ^ «Ключевые слова C#» . MSDN . Проверено 23 марта 2011 г.
  10. ^ "строка (Справочник по C#)" . MSDN . Проверено 23 марта 2011 г.
  11. ^ Стиль кодирования ядра Linux , Линус Торвальдс.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f20074bc9c87af5896cef6c54f99efc7__1719722940
URL1:https://arc.ask3.ru/arc/aa/f2/c7/f20074bc9c87af5896cef6c54f99efc7.html
Заголовок, (Title) документа по адресу, URL1:
Sigil (computer programming) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)