Verse — это новый язык программирования, поэтому если вы опытный программист и встречаете не совсем понятную концепцию, обратитесь к этому глоссарию.
Если вы новичок в программировании, этот глоссарий также будет вам полезен. Мы добавили определения многих ключевых терминов из сферы программирования, и, возможно, вы найдёте здесь ответы на свои вопросы!
- API
Эта аббревиатура от Application Programming Interface (программный интерфейс), который представляет собой библиотеки, обычно группируемые в наборы вызываемых функций, типов и структур данных, предоставляющие пользователям возможность получать доступ и взаимодействовать с системами Unreal и Fortnite.
- async
Для расчёта асинхронного выражения иногда требуется время. Асинхронное выражение может завершиться/не завершиться в текущем обновлении симуляции или завершиться в более позднем обновлении. Асинхронные функции, обозначенные спецификатором
suspends, также называются сопрограммами. Асинхронные выражения противопоставляются непосредственным выражениям.- break
Выражение, которое «прерывает» (break) текущего
циклаи выполняет следующее выражение после выражения loop. Подробнее см. в статье Выражения loop и break.- C++
Популярный язык программирования, используемый в разнообразных приложениях, особенно в игровых движках, таких как Unreal Engine.
- char
Тип данных для хранения одного символа.
- CI/CD
CI/CD — это непрерывная интеграция и либо непрерывная поставка, либо непрерывное развёртывание. CI/CD объединяет процессы разработки и поставки приложений за счёт автоматизации при их создании, тестировании и развёртывании.
- computes
Этот эффект показывает, что функция всякий раз возвращает одни и же выходные данные, если в неё сколько угодно раз передавать одинаковые входные данные.
- decides
Эффект, указывающий на то, что функция может завершиться ошибкой и что вызов этой функции является выражением с неоднозначным результатом. Определения функции с эффектом decides также должны иметь эффект transacts, что означает, что для действий, выполняемых этой функцией, можно выполнить откат, как будто эти действия никогда не выполнялись, если в функции произойдёт ошибка.
- doc
Общее поле для примечания, встречающееся в классах и функциях (но не в параметрах функций), которое содержит полезную информацию о том, что делает описываемый им элемент или как его использовать, и применяется для заполнения страницы этого элемента в справочнике API Verse.
- editable (атрибут)
Атрибут, который можно добавить в код, чтобы вывести свойства в интерфейс UEFN. Пометка кода этим атрибутом заключается в добавлении
@названия_атрибута(в данном случае@editable) перед идентификатором поля:Verse@editable PropertyName : type = DefaultValueНапример, поле string
GreetingMessageявляется редактируемым свойством со значением по умолчанию"Hello, stranger":Verseexpose_properties := class(creative_device): @editable GreetingMessage : string = "Hello, stranger"Подробнее см. в статье Настройка свойств устройства в редакторе.
- f
См. float.
- final
Спецификатор, который можно использовать только для классов и составляющих классов:
Если спецификатор final указан для класса, вы не сможете создать подкласс этого класса.
Если спецификатор final указан для поля, вы не сможете переопределить это поле в подклассе.
Если спецификатор final указан для метода, вы не сможете переопределить метод в подклассе.
- group
Часть выражения, заключённая в скобки
(). Она явно определяет порядок расчёта. Группировка также улучшает читаемость кода.- NaN
Значение, которое представляет собой не число.
- native
Спецификатор
nativeуказывает, что детали определения элемента реализованы на C++. Этот спецификатор может автоматически генерировать определения C++, которые затем может использовать разработчик. Спецификаторnativeиспользуется для класса, интерфейса, типа enum, метода и данных.- native_callable
Указывает на то, что метод экземпляра относится к категории native (т. е. реализован на C++) и может быть вызван кодом C++ из другого места. Вы можете увидеть, что этот спецификатор используется для метода экземпляра. Этот спецификатор не распространяется на подклассы, поэтому его не нужно добавлять к определению при переопределении метода, имеющего этот спецификатор.
- Perforce
Perforce (P4) — это программный инструмент, обеспечивающий контроль версий (также «контроль исходного кода»), который представляет собой способ отслеживания и управления изменениями в программном коде. Этот инструмент полезен для команд программистов, работающих над одним проектом. Если кто-то допускает ошибку, система контроля версий позволяет сравнить код с более ранними версиями, чтобы найти и исправить эту ошибку, не прерывая работу остальных участников.
- pure
Объявляет, что функция всегда будет выдавать идентичный результат при одинаковых входных данных и что она не имеет побочных эффектов (запись в изменяемые переменные, эффекты ввода/вывода и т. д.).
- RAII
RAII — это сокращение от resource acquision is initialization (получение ресурса — это инициализация). Оно описывает ситуацию, когда объект получает ресурсы только на период между инициализацией и уничтожением. По сути, это способ более эффективного управления ресурсами.
- REPL (цикл типа прочитать-вычислить-записать)
Цикл типа прочитать-вычислить-вывести (REPL) представляет собой компьютерную среду, в которой можно вводить код, считывать и рассчитывать его, а затем просматривать результаты. REPL позволяет изучить язык и посмотреть, что и как работает (или не работает), ничего не испортив.
- return
Выражение, которое предписывает программе выйти из подпрограммы и вернуться к адресу возврата. Адрес возврата — это место, откуда была вызвана подпрограмма.
Вместо того чтобы полагаться на последнее выражение в блоке кода функции для получения правильного значения, также можно явно указать результат с помощью выражения
return. При выполнении выражения return происходит немедленный выход из блока кода функции. Это означает, что если выражение return находится перед другим кодом, то следующий за ним код не будет выполнен.- succeed (успешно)
Если выражение завершается без ошибки, считается, что оно выполнилось успешно. См. также Контекст, допускающий неоднозначность.
- suspends
Эффект, который временно останавливает (приостанавливает) функцию, не отменяя её. Выражение
suspendsпозволяет приостановить асинхронные функции и совместно передать управление другим конкурентным выражениям до его завершения.Дополнительную информацию см. в статье Конкурентность.
- transacts
Когда функция имеет эффект
transacts, это означает, что она может читать и записывать данные, но эти действия можно откатить, если функция также имеет эффект decides. Этот эффект является исключительным эффектом.Функция, в которой не указан исключительный эффект, может читать и записывать данные, но не может быть откачена.
- type checker (модуль контроля типов)
Контроль типов используется для проверки программы перед выполнением. При этом проверяются значения типов данных и синтаксис. Основная цель системы типов в языке программирования — снизить вероятность появления ошибок при выполнении программы из-за ошибок типов.
- Unicode
Стандарт кодирования символов, разработанный Unicode Consortium для обеспечения сопоставимой поддержки символов на разных языках, платформах и устройствах.
- unique
Спецификатор unique можно применить к классу, чтобы сделать его уникальным. Чтобы создать экземпляр уникального класса, язык Verse выделяет уникальный идентификатор для полученного экземпляра. Это позволяет определить, одинаковы экземпляры уникальных классов или нет, сравнивая их идентификаторы. Классы без спецификатора unique не имеют таких идентификаторов, поэтому их можно оценивать на эквивалентность только на основе значений их полей. Это означает, что уникальные классы можно сравнивать с помощью операторов = и <> и они являются подтипами типа comparable.
- UTF-8
Схема кодирования символов Unicode — стандарт, разработанный Unicode Consortium для обеспечения сопоставимой поддержки символов на разных языках, платформах и устройствах.
Эмотиконы выглядят как изображения или значки, но таковыми не являются. Это буквы (символы) из набора символов UTF-8 (Unicode).
UTF-8 включает почти все существующие в мире символы и значки.
- varies
Этот эффект указывает на то, что функция при одних и тех же входных данных не всегда возвращает один и тот же результат. Эффект
variesтакже указывает на то, что поведение функции не останется гарантированно неизменным в новых версиях содержащего её пакета.- Verse
Verse — это статически проверяемый язык программирования, ориентированный на разработку игр.
- Verse-устройство (Verse-authored device)
Устройство, используемое в Unreal Редактор для Fortnite (UEFN), которое программируется с помощью Verse.
- Visual Studio Code
Visual Studio Code, также называемый VS Code, — это редактор исходного кода, разработанный компанией Microsoft для Windows, Linux и macOS.
- VPL
- абстрактный класс (abstract class)
Когда класс или метод класса имеет спецификатор abstract, создать экземпляр такого класса нельзя. Абстрактный класс предназначен для использования в качестве суперкласса, в котором реализованы или определены некоторые, но не все, составляющие. Также называется базовым классом.
- абстракция (abstraction)
Это принцип в программировании, когда от пользователя скрываются более сложные детали, поскольку для него нет необходимости в их понимании. К примеру, вы можете купить кофе в автомате, не вникая в принципы его работы.
- агент (agent)
Агент может представлять либо игрока, либо неигрового персонажа (NPC).
- аддитивный эффект (additive effect)
Аддитивный эффект — это эффект, который может быть добавлен к исключительному эффекту. К аддитивным эффектам относятся
suspendsиdecides.- алгоритм (algorithm)
Алгоритм — это последовательность инструкций, написанных для решения проблемы или выполнения задачи. Это как рецепт определённого блюда. Когда вы пишете код, который решает проблему или выполняет задачу, этот код является алгоритмом.
- альтернативные целые числа (alternate integers)
- аргумент (argument)
Значение, присвоенное параметру в сигнатуре функции, по которому осуществляется вызов функции.
- архетип (archetype)
Архетип — это экземпляр класса, который полностью определяется значениями своих полей в классе.
- асинхронный контекст (async context)
Область видимости, в которой разрешено асинхронное выражение, такое как вызов сопрограммы.
- атомарный код (atomic)
Единая законченная единица кода, которая либо выполняется полностью, либо выдаёт ошибку полностью, без прерывания или контроля со стороны другого кода. Атомарный код не может быть прерван. Все смежные, непосредственные, не асинхронныевыражения считаются атомарными — их код гарантированно выполняется без прерывания в одном обновлении без вытеснения или переключения контекста.
- базовый класс
Класс, от которого другие классы являются производными. Класс, который наследуется от базового класса, имеет все составляющие и их функции и может иметь дополнительные свойства, не включённые в базовый класс. Базовый класс также называется родительским классом или суперклассом.
- без отката (no-rollback)
Этот эффект постройки указывает на то, что чтение и запись изменяемых данных функции не могут быть отменены, то есть функция не может быть вызвана в контексте, допускающем ошибки (который откатывается в случае ошибки).
- бесконечная рекурсия (infinite recursion)
Бесконечная рекурсия возникает, когда функция прямо или косвенно вызывает саму себя, в результате чего такие вызовы происходят бесконечно. Вследствие этого программа зависает.
- бесконечное повторение
Блок цикла, который повторяется бесконечно. См. также Выражение loop и Выражение break.
- блок кода (code block)
Блок, или блок кода, — это группа выражений, которая вводит новое тело кода. Также может существовать блок кода, который не содержит выражений. Обычно он заполняется выражениями позже.
Блоки кода указываются после идентификаторов.
В Verse есть три возможных формата блока кода. Все эти форматы семантически идентичны в том смысле, что формат не меняет того, что на самом деле делает код.
Раздельный формат начинается с символа
:, и каждое выражение занимает отдельную строку с отступом в четыре пробела:Verseif (test-arg-block): expression1 expression2Обратите внимание, что
if (test-arg-block)не является частью блока, но блок начинается в конце этой строки с:. Вы также можете использовать;для разделения нескольких выражений в одной строке:Verseif (test-arg-block): expression1; expression2; expression3В многострочном формате со скобками блок заключён в фигурные скобки (
{}), а выражения пишутся с новой строки:Verseif (test-arg-block) { expression1 expression2 }Как и в случае раздельного формата, для разделения нескольких выражений в одной строке также можно использовать
;.Verseif (test-arg-block) { expression1; expression2 }Третий формат — это однострочный формат со скобками. Здесь блок снова заключён в
{}, но каждое выражение отделяется;а не начинается с новой строки. Обратите внимание, что символы{}не обязательно размещать в отдельных строках.Verseif (test-arg-block) {expression1; expression2}Подробнее см. в статье Блоки кода.
- блочное выражение (block expression)
Блочное выражение — это способ группировки выражений в одно выражение или создания вложенного блока кода. Блочные выражения работают так же, как блоки кода.
- будущая (future)
Задача, которая начала выполняться, но была приостановлена без отмены. Эта задача является будущей, потому что она завершится в какой-то момент в будущем.
- булева логика (Boolean logic)
Система логики, в которой выражаемое значение является либо истинным, либо ложным, и которая часто используется для определения контроля исполнения в языках программирования. Она названа в честь Джорджа Буля (1815–1864 гг.), математика, внёсшего ключевой вклад в развитие логики и алгебры.
В Verse это тип
logic, используемый для представления значений true (истина) или false (ложь). Эта булева логика реализуется через выражения с неоднозначным результатом в контекстах, допускающих ошибки.- Булево значение
См.булева логика.
- взаимное исключение (mutual exclusion)
Когда несколько процессов обращаются к одному и тому же сегменту кода, этот сегмент называется критической секцией. Взаимное исключение — это способ гарантировать, что никакие два процесса не смогут получить доступ к критическому участку одновременно.
- визуальный язык программирования (visual programming language)
Тип языка программирования, в котором программист использует визуальные элементы, перетаскивая их и соединяя с другими элементами для получения определённой последовательности программных инструкций.
- вложенный (nested)
Когда код вложен, один блок кода содержится в другом блоке кода, выполняющем более широкую функцию.
- внутренний класс (internal class)
Класс, помеченный как
epic_internal, что означает, что вы не можете создать собственный экземпляр класса. Вы можете только использовать API для доступа к внутреннему объекту.- время жизни (lifetime)
Время между созданием объекта и его уничтожением. Синоним срока жизни.
- время компиляции (compile time)
Когда исходный код преобразуется в машинные инструкции. См. также Среда выполнения.
- время обращения (invocation time)
Время, необходимое для расчета выражения. Вызов с немедленным выполнением практически не занимает времени. Асинхронное выражение может выполняться немедленно, а может быть отложено.
- встроенный (built-in)
В некоторых языках программирования встроенные элементы — это то, что можно использовать непосредственно в языке и его стандартных библиотеках.
- встроенный тип (built-in type)
Встроенный тип не может быть разбит на составляющие, в отличие от составного типа.
- вызов функции
Выражение, которое рассчитывает функцию (также говорят: «вызывает» функцию или «обращается» к ней). Вызов функции может иметь две формы в зависимости от того, имеет ли функция эффект
decides:FunctionName()иFunctionName[]. Тип результата выражения вызова функции определяется в сигнатуре функции.- вызывающий код (caller)
Выражение, которое совершает вызов.
- выполнение (execution)
Процесс интерпретации компьютером программы и исполнения инструкций этой программы.
- Выполняется отладка
Это процесс выявления и устранения ошибок в коде.
- выполнять (execute)
Выполнять программу.
- выражение (expression)
Выражение — это наименьшая единица кода (комбинация значений и функций), которая выдаёт результат при расчёте.
Ниже в качестве примера приведено выражение
if … else, означающее, что, если значение соответствует именованному критерию, это одно, а если нет — другое.Verseif (a > 5): “Big!” else “Small!”В Verse всё является выражениями: от литералов до вызовов функций или контроля исполнения.
Это можно сравнить с оператором, который является отдельной командой, не имеющей результативного значения. В Verse всё является выражениями и нет различия между операторами и выражениями, которые могут рассчитываться с получением значения.
Подробнее см. в статье Выражения.
- выражение branch (branch expression)
Выражение
branchначинает блок из одного или нескольких асинхронных подвыражений. Любое следующее за ним выражение выполняется немедленно.Дополнительную информацию см. в статье Конкурентность.
- выражение case (case expression)
С помощью выражения case можно осуществлять контроль исполнения программы с выбором из списка вариантов. Подробнее см. в статье Case.
- выражение for (for expression)
Выражение
forexpression, иногда называемое циклом for, аналогично выражению loop, за исключением того, что выраженияforявляются ограниченными, то есть количество итераций известно до выполнения циклаfor, и решение о том, когда выйти из цикла, принимается автоматически. Подробнее см. в статье For.- выражение if (if expression)
С помощью выражения
ifможно принимать решения, которые будут влиять на поток выполнения программы. Как и в других языках программирования, выражениеifв Verse поддерживает условные операторы, однако в данном случае в условиях принятия решения учитываются «успех» и «ошибка».- выражение spawn (spawn expression)
Выражение
spawnзапускает асинхронную функцию. Любое выражение, следующее за выражением spawn, выполняется немедленно, не дожидаясь завершения выраженияspawn. Выражениеspawnбудет выполняться независимо до тех пор, пока не завершится.- выражение верхнего уровня (top-level expression)
Выражение верхнего уровня — это выражение, которое не вложено в блок кода. Выражения верхнего уровня также могут быть составными выражениями, например это могут быть вложенные блоки кода.
- выражение диапазона (range expression)
Выражения диапазона содержат все числа между двумя указанными значениями (в том числе и сами эти значения), с
..между значениями; например,1..5. Выражения диапазона можно использовать только в определённых конструкциях, например в выраженияхfor.- выражение принятия решения (decision expression)
В выражениях принятия решений используются операторы
not,andиor, чтобы программист мог контролировать поток решений об успехе и неудаче.- выражение присваивания (assignment expression)
В Verse выражение присваивания сохраняет значение в изменяемом месте, например, при инициализации переменной или изменении значения переменной.
- выражение равенства (equality expression)
В Verse выражения равенства — это сравнение двух элементов с помощью оператора =.
- выражение с неоднозначным результатом (failable expression)
Выражение с неоднозначным результатом — это выражение, которое может либо успешно завершиться и вернуть значение, либо завершиться с ошибкой и не вернуть никакого значения. Примеры выражений с неоднозначным результатом включают индексирование массива, поскольку при неправильном индексе произойдёт ошибка, и использование операторов, например сравнение двух значений.
- выражение сравнения (comparison expression)
В Verse выражения сравнения — это сравнение двух элементов с помощью одного из операторов неравенства:
<,>,<=,>=,<>.- вытеснение (preemption)
Временное прерывание выполняемой задачи с намерением возобновить её позже называется вытеснением. Обычно это делает внешний планировщик без какого-либо содействия или участия со стороны задачи.
- генератор (generator)
Генератор задаёт последовательность значений, по одному за раз, и присваивает названия таким значениям в последовательности.
- Граница
Для UEFN см. информацию в разделе привязки.
В Verse — переменная, для которой выполнено действие привязки. Все переменные в Verse привязываются сразу после их определения — они не могут находиться в непривязанном состоянии.
- граф вызовов (call graph)
Список методов в стеке вызовов с информацией о каждом вызове, такой как время выполнения, временные метки и идентификатор функции.
- дайджест (digest)
Автоматически создаваемый список всех общедоступных символов, таких как модули, функции и классы, которые обработал компилятор Verse. Также включает комментарии. Из файла дайджеста можно узнать, какие API и функции находятся в соответствующем модуле.
- данные
Как правило, под данными понимаются значения, используемые в выражении.
- Двунаправленный
Функционирующий в двух направлениях.
- декорировать (decorate)
В части написания кода «декорировать» означает включить одну часть кода в другую как в контейнер.
- детерминированная (deterministic)
Детерминированной называется система, в которой одно и то же начальное состояние или входные данные всегда приводят к одним и тем же результатам.
- детерминированное уничтожение (deterministic destruction)
Детерминированное уничтожение, встречающееся в некоторых языках программирования, — это уничтожение объектов, когда программа выходит из их области видимости.
- динамический контроль типов (dynamic typing)
В языке программирования с динамическим контролем типов переменные и выражения не имеют назначенных типов. Это означает, что они не могут быть проверены до запуска в среде выполнения. Не путать со строгим контролем типов.
- единица кода (code unit)
Минимальная комбинация битов, представляющая единицу закодированного текста. В UTF-8 используется 8-битная единица кода.
- жёстко заданный
Жёстко заданные данные записываются прямо в код, а не присваиваются какой-либо переменной. Обычно из-за этого код становится менее гибким и его труднее обновлять, но в ряде случаев в этом есть смысл.
- завершено (completed)
Состояние задачи, которая выполнена до конца.
- зависимость
Зависимость — это ситуация, когда модуль зависит от других модулей при выполнении некоторых функций.
- Задать
Ключевое слово, которое можно использовать для изменения значения переменной во время выполнения программы.
Для этого используется следующий синтаксис:
set name = value.set— это ключевое слово,name— название изменяемой переменной, аvalue— значение, которое должно быть присвоено переменной.Это называется присваиванием.
- запрос (query)
В выражениях запроса используется оператор
?, чтобы проверить, содержит ли переменная типа logic или option значениеtrue.- затененение (shadowing)
Затенение — это ситуация, когда идентификатор скрывает другой идентификатор. Затенение является ошибкой в Verse и препятствует компиляции кода.
- Значение
Значение — это информация, которую программа использует для работы. Примерами значений являются числа или текст.
- игровая доска
Поверхность, на которой происходит игра. Обычно этот термин применяется к настольным играм. Однако всё чаще он используется для описания уровней видеоигр. В разработке видеоигр игровую доску можно разделить на области или зоны различной формы, расположения или рельефа. Как и в случае с игровыми досками в настольных играх игроки могут перемещать персонажей или объекты по доске (уровню), чтобы продвигаться дальше по игре.
- игровое пространство (playspace)
Модуль API Verse, который можно использовать для получения массива игроков или команд, либо команды определённого игрока. Этот модуль также позволяет подписаться на события, добавленные и удалённые игроком.
- игровой цикл (game loop)
Игровой цикл — это код, который выполняется многократно (циклически) и реагируя на команды ввода — обычно игрок взаимодействует с помощью контроллера или мыши — обновляет состояния игры, а также выводит информацию о том, что игрок повлиял на состояние игры, например когда он нажал на кнопку которая включает свет. Цикл обычно заканчивается, когда игра достигает состояния успеха (к примеру, когда игрок достигает цели) или состояния неудачи (к примеру, когда истекает время до достижения игроком цели).
- идентификатор (identifier)
Идентификатор — это название, которое присваивается элементам в программе, таким как переменные или функции, для их однозначной идентификации.
- Иерархический
Имеющий чёткие уровни или иерархии рангов, важности или управления. Распространённые иерархические отношения: «родительский/дочерний объект» или «суперкласс/подкласс».
- иерархия эффектов (effect hierarchy)
Эффект — это категория поведения, которое может демонстрировать функция. Применение исключительных эффектов к функции подчиняется иерархии, при этом эффекты выше по иерархии разрешают, как минимум, действие всех эффектов ниже по иерархии. Иерархия выглядит следующим образом:
transactsvariescomputesconverges
Эффект
transactsвключает свойства эффектов ниже, эффектvariesвключает эффектыcomputesиconverges, но неtransacts, и т. д.- императивное программирование (imperative programming)
Парадигма, в которой программа явно описывает, как программа выполняется, шаг за шагом. Язык C является примером императивного языка программирования.
- индекс (index)
Индекс указывает на позицию элемента в последовательности с помощью числа. Последовательность может быть списком, строкой с символами или любой произвольной последовательностью значений.
В индексах используется счёт с нуля. Это означает, что индекс первой позиции равен 0, а индекс пятой позиции равен 4.
- инициализация (initialize)
Чтобы создать переменную, укажите её идентификатор и тип — это называется объявлением переменной — и присвойте переменной значение (это называется инициализацией).
- инструкция (statement)
Отдельная команда, не имеющая результирующего значения. В языке Verse инструкции statement не используются. Вместо них используются выражения.
- интегрированная среда разработки (ИСР)
Интегрированная среда разработки (ИСР) — это программное обеспечение, предоставляющее пользовательский интерфейс для создания и отладки программ.
- интерполяция (interpolation)
Расчёт значений, которые находятся между известными значениями и обеспечивают плавный переход между ними.
- интерпретатор (interpreter)
Программа, которая анализирует и выполняет программу построчно.
- инфиксный (infix)
Формат оператора, когда есть два операнда и оператор находится между операндами.
- исключительный эффект (exclusive effect)
Некоторые эффекты считаются исключительными эффектами, к которым можно добавлять аддитивные эффекты, но которые нельзя использовать с другими исключительными эффектами. К исключительным эффектам относятся
computes,variesиtransacts. К аддитивным эффектам относятсяsuspendsиdecides.- итерация (iterate)
Выполнение кода для каждого элемента в последовательности.
- кадр
Кадр — это одно полностью отрисованное изображение (например, на мониторе компьютера или телевизора), представляющее симуляцию в определённый момент времени. Кадр иногда используют как синоним обновления (или такта) симуляции, поскольку кадры обычно следуют друг за другом синхронно, хотя новые кадры могут появляться с другой частотой (более или менее часто), чем обновление симуляции. Частота кадров, или сокращённо fps (frames per second), — это количество кадров, отображаемое в секунду.
- класс concrete (concrete class)
Класс со спецификатором concrete — это способ создания экземпляра класса с пустым архетипом; это означает, что для всех полей класса должны быть заданы начальные значения.
- клетка
Участок сетки на такой поверхности, как пол или стена.
Способ организации пунктов меню.
Для Verse: участок сетки на такой поверхности, как пол или стена.
- ключевое слово (keyword)
Ключевые слова — это зарезервированные слова, которые имеют особое значение для компилятора. Примерами ключевых слов являются
forиclass. Ключевые слова нельзя использовать в качестве идентификаторов.- код (code)
Код, иногда называемый исходным кодом, — это инструкции, написанные программистом, которые указывают программе, как работать. Исходный код на языке Verse может быть прочитан программистом, но не компьютером. Прежде чем компьютер сможет прочитать или выполнить программу, она должна быть преобразована в исполняемые компьютером инструкции. Это называется компиляцией. Когда программист говорит, что он создаёт код, он имеет в виду, что пишет эти инструкции.
- кодирование символов (character encoding)
Кодирование символов — это сопоставление между текстовым символом и данными, которые может понять компьютер, называемыми кодовой точкой.
- кодовая точка (code point)
Значение в кодовом пространстве Unicode для кодирования символов.
- комментарий (comment)
Комментарий, написанный программистом, который содержит информацию о коде или причину, по которой программист написал именно такой код. Если сам код показывает, как работает программа, комментарии обычно добавляются, чтобы пояснить, почему.
Комментарии к коду могут встречаться в любом месте кода и начинаются с символа
#. Когда программа выполняется, комментарии к коду игнорируются.Можно закомментировать одну строку, поставив
#в начале строки. Переход на новую строку в конце строки завершает комментарий.Verse# A single line is commented this way.Вы можете создать многострочный блочный комментарий, используя
<#в начале блока и#>в конце него:Verse<# You can make multi-line comments in your code by starting and ending the comments as shown here. #>Другие способы добавления комментариев в код см. в разделе Краткий справочник по языку Verse.
- комментарий к коду (code comment)
См. Комментарий.
- Компилировать
Преобразование программы с языка, удобного для восприятия человеком, в инструкции, исполняемые компьютером.
- компилятор (compiler)
Программное обеспечение, которое преобразует понятные для человека программные инструкции в исполняемые компьютером команды; иногда его называют средством синтаксического анализа (парсером). Время исполнения компилятора называется временем компиляции.
- Компонент
Автономная плитка для отрисовки участка рельефа. Иногда компоненты называют ячейками. Также см. World Partition.
Компоненты — это то, что предоставляет данные и задаёт поведение модулей в Scene Graph. Компоненты определяют, что модуль должен делать в сцене.
Компоненты обладают редактируемыми свойствами, которые могут быть физическими, как статичная сетка или система частиц, или логическими, как, например, тег игрового процесса или пользовательский код Verse, который определяет движение платформы. По умолчанию все модули имеют компонент преобразования, указывающий, в какой точке мира должен существовать модуль.
В Verse, функция или группа связанных функций в программе, которые можно использовать повторно.
- конечный узел (tail node)
Первый узел в связном списке называется начальным, а последний — конечным.
- конкатенировать (concatenate)
См. Объединение.
- конкурентный (concurrent)
Несколько вычислений, которые выполняются в один и тот же эффективный период времени, являются конкурентными. Это могут быть перекрывающиеся обновления логической симуляции, такты и кадры, даже если они потенциально распределены по физическому времени, например, выполняются на одном процессоре, и не обязательно параллельны.
- константа (constant)
Константа — это место, где хранится значение, и это значение не может изменяться при работе программы в среде выполнения. Константа так и называется, потому что остаётся постоянной.
Базовый синтаксис для константы:
name : type = value.name— это название, присвоенное константе (известное как идентификатор. Символ:указывает, что дальше следует тип.=говорит, что дальше следует значение. Пример:VersePlayerSpeed : float = 2.0Это выражение говорит о том, что PlayerSpeed имеет значение 2.0, представленное в виде десятичного числа, которое не меняется во время выполнения программы.
Константы всегда имеют присвоенные значения. Название и тип — это объявление, а инициализация — это задание конкретного значения.
См. также Переменная.
Подробнее см. в статье Константы и переменные.
- Контейнер
В UEFN контейнер — это класс, содержащий свойства, которые можно применить к нескольким объектам.
В Verse контейнер — это способ организации данных в коде. Более подробно об этом рассказано в статье контейнерный тип.
- контейнерный тип (container type)
Вы можете хранить несколько значений вместе, используя контейнерный тип, например, array, map, tuple и option.
- контекст
Область видимости кода, определяющая время жизни различных элементов языка и ограничений. Обычно это диапазон между началом и концом блока кода.
- контекст, допускающий ошибки (failure context)
Контекст, допускающий неоднозначность — это контекст, в котором допустимо выполнение выражений с неоднозначным результатом. Данный контекст определяет, что происходит, если выражение завершится с ошибкой.
- контроль времени (time flow)
Участок сетки на такой поверхности, как пол или стена.
Контроль времени лежит в основе языка программирования Verse и осуществляется с помощью конкурентных выражений.
Контроль времени — это тип контроля исполнения, но если контроль выполнения — это порядок, в котором компьютер выполняет инструкции на основе порядка выражений в программе, то контроль времени определяет выполнение во времени, а не в последовательности, с учётом того, как используются конкурентные выражения.
Контроль времени — это ещё один способ описать конкурентность.
- кэш (cache)
Способ хранения данных для ускоренного доступа к ним.
- литерал (literal)
Фиксированное значение в языке программирования Verse, такое как число или символ. Например, 1 — это целочисленный литерал.
- логическое программирование (logic programming)
Парадигма программирования, в которой используется булева логика для управления тем, как представляются или выражаются факты и правила, касающиеся задач в системе.
- локальный (local)
Относится к константам или переменным внутри блока кода. Их нельзя использовать за пределами блока кода, в котором они созданы. См. также Область видимости.
- математическое выражение (math expression)
В Verse математическое выражение — это выражение, в котором используется один из следующих операторов:
+,-,*или/.- метод (method)
Метод — это функция, прикреплённая к классу, которая может быть вызвана только для экземпляра этого класса.
- модуль (module)
Модуль в Verse — это самостоятельный блок кода, который можно использовать в других местах, в том числе для создания зависимостей; он также может изменяться без нарушения зависимостей. Модуль можно импортировать в своей файл Verse, чтобы использовать определения из других файлов Verse.
Подробнее см. в статье Модули и пути.
- мьютекс (mutex)
Мьютекс — это примитив синхронизации, который предоставляет исключительный доступ к общему ресурсу с использованием единственного потока. См. также Взаимное исключение.
- наследование (inheritance)
В Verse вы можете создать класс, который расширяет определение другого класса, добавив или изменив поля и методы другого класса. Это часто называют созданием подкласса или наследованием, потому что один класс наследует определения от другого класса.
- начальный узел (head node)
- неизменяемый (immutable)
После создания объекта его состояние не может быть изменено. См. также Изменяемый.
- непосредственный (immediate)
Выражение с немедленным выполнением рассчитывается без задержки, то есть расчёт завершается в течение текущего обновления симуляции.
- нерегулируемое воспроизведение (fire-and-forget)
Нерегулируемое воспроизведение относится к выражению, в котором не важно, когда оно завершится, или завершится ли оно успешно. Это крайне редкая ситуация.
- неструктурированная конкурентность (unstructured concurrency)
Конкурентные выражения со временем жизни, которое логически не ограничено определённой конкурентной командой или областью видимости асинхронного контекста. Это время жизни потенциально выходит за пределы области видимости, в которой оно выполнялся. Это похоже на неструктурированный контроль исполнения, например с помощью команд
gotoилиassembly jump.- нумерация с нуля (zero-based numbering)
Способ нумерации, при котором первому элементу последовательности присваивается значение 0, а не 1. Это означает, что нулевая позиция индекса — это 1, первая позиция — 2 и т. д. Нумерация последовательностей с нуля широко распространена в математике. В программировании первая позиция в массиве иногда называется нулевой позицией.
- область определения (domain)
Область определения — это множество входных данных, допустимых для определённого параметра. Одним из способов задания области определения является тип, но область определения является более широким понятием, чем тип.
- обновление симуляции (simulation update)
Повторяющийся раунд, шаг или элементарное изменение логики, поведения и других вычислений в рамках симуляции. Этот термин часто сокращают до термина обновление или используют синонимы такт или кадр. Обновление симуляции обычно занимает время, которое может быть постоянным или переменным. Этот интервал часто называют дельтой времени, и он может совпадать/не совпадать с интервалом реального времени. Например, обновление симуляции может происходить быстрее реального времени/с такой же скоростью/медленнее реального времени.
Обновление симуляции часто происходит с шагом 1:1 по отношению к рендерингу кадров — это значение по умолчанию для языка Verse. Однако обновление симуляции может происходить реже или чаще, чем раз за кадр, например, когда клиент онлайн-игры выходит из синхронизации с сервером или системами физики, выполняя несколько итераций изменений симулируемого объекта. Также симуляция может вообще не отрисовываться визуально.
- обработчик (handler)
Обработчик — это функция, которая вызывается в ответ на привязанное событие. Например, если привязать функцию к событию InteractedWithEvent кнопки, это будет означать, что каждый раз, когда игрок будет нажимать на эту кнопку, будет вызываться обработчик, связанный с событием.
- обращение (invoke)
См. Вызов.
- общедоступная составляющая (public member)
Составляющая, которая видна другим модулям.
- общий тип (common type)
Общие типы — это встроенные и часто используемые типы. Общие типы включают в себя типы
any,comparable,float,int,logic,rationalиstring.- объединение (concatenation)
Объединение — это добавление одной строки к другой строке. Для объединения строк можно использовать оператор +.
- Объект
В UEFN объект — это синоним ресурса.
В Verse экземпляр класса является объектом. Экземпляр имеет такое же поведение, которое определено типом его класса, но с реальными значениями.
Термины экземпляр и объект являются синонимами.
- объектно-ориентированное программирование (object-oriented programming)
Объектно-ориентированное программирование (ООП) — это парадигма программирования, которая опирается на концепцию классов и объектов.
- объявить (declare)
При объявлении переменной или функции указываются её идентификатор и тип. См. также Инициализация.
- объявление (declaration)
Объявление — это выражение, в котором вводится идентификатор, а также его тип. Оно может быть реализовано (использовано) или нет, и ему может быть присвоено (инициализировано) значение или нет.
Синтаксис объявления переменной выглядит следующим образом:
var name : type = expression. Пример:Versevar PlayerSpeed : float = 2.0Эта строка кода объявляет, что переменная PlayerSpeed имеет значение типа float.
В этом примере последняя часть,
= 2.0, является инициализацией, которая отделена от объявления.- ограниченное (constrained)
Когда выражение ограничено, оно имеет заданные пределы.
- Округление к большему
Математическая операция, которая округляет значение типа rational до ближайшего целого числа в бóльшую сторону. Не путать с
Floor.- операнд (operand)
Величина, над которой выполняется операция. Например, в выражении
1 + 2знак+является оператором, а1и2являются операндами.- оператор
Символ, представляющий действие или процесс. Например, в выражении
1 + 2,+является оператором.- операция
Действие, производимое программой для выполнения определённой задачи. Существуют четыре основные группы компьютерных операций: ввод, обработка, вывод и хранение. Операция — это тип выражения.
- определение (definition)
Определение — это реализация идентификатора или присвоение ему значения, например определение функции или определение класса. Не путать с объявлением.
- определение типа механизмом вывода типов (infer)
Бывают случаи, когда нет необходимости явно указывать тип, как, например, при создании константы. Например, в
MyConstant := 0, тип MyConstant определяется механизмом вывода типов как int, потому что константе присваивается целочисленное значение. В подобных случаях тип определяется механизмом вывода типов.- определять (define)
См. статью Определение.
- опрос (polling)
Опрос — это активная проверка состояния внешнего устройства клиентской программой в синхронном режиме. Опрос чаще всего используется с операциями ввода/вывода; в этом случае говорят о вводе/выводе по опросу или программно-управляемом вводе/выводе.
- откат (rollback)
Возврат программы в заранее определенное состояние, обычно для восстановления после выполнения выражения с неоднозначным результатом.
- отладчик (debugger)
Инструмент, используемый для отладки, в котором отображается состояние программы на каждом шаге выполнения.
- отменено (canceled)
Выражение, которое совершает вызов.
- отношение is-a (is-a relationship)
Отношение между родительским классом и дочерним классом называется отношением is-a. Дочерний класс в отношении is-a наследует от родительского класса.
- отправлять (dispatch)
Отправлять — значит посылать что-либо куда-либо. В Verse это может быть, например, отправка вызова функции или отправка события слушателю (обработчику события).
- ошибка компилятора (compiler error)
Ошибка компилятора обусловлена неправильным использованием кода, обнаруженным компилятором Verse во время компиляции. Не путать с ошибками при выполнении программы (багами), которые возникают в среде выполнения.
- пара «ключ-значение» (key-value pair)
Если ключ связан со значением, то вместе они представляют собой пару «ключ-значение». Значение можно найти с помощью ключа.
- парадигма (paradigm)
Типовая схема или модель чего-либо. В программировании парадигма — это способ организации языка программирования. Существует четыре основные парадигмы языков программирования:
Императивное
Тип logic
Функциональные
Объектно-ориентированное
Также существуют языки с несколькими парадигмами, такие как Verse.
- параллельные процессы (parallel)
Несколько вычислений, которые выполняются в один и тот же физический период времени, например на отдельных процессорах, являются параллельными.
- параметр (parameter)
Входная переменная, которая включает область определения, такую как тип, и необязательное значение по умолчанию, определённое в сигнатуре функции, которое затем используется в теле функции. См. также Аргумент.
- параметрический тип (parametric type)
- перегрузка (overload)
Перегрузка функции или оператора означает, что одно и то же имя функции или символ оператора может иметь разные параметры. Например, если мы говорим, что один трёхмерный вектор равен другому трёхмерному вектору, например (1,2,3), то это достаточно чёткое высказывание. Но мы можем использовать оператор равенства, чтобы утверждать, что некоторый трёхмерный вектор равен одному числу, например 1. В этом случае, возможно, трёхмерный вектор будет равен (1,1,1), но перегрузка заключается в том, что существует несколько операторов "3D Vector =" с разными параметрами. Язык должен учитывать контекст, чтобы определить, какой из них использовать.
- переключение контекста (context switch)
Переключение контекста — это процесс сохранения состояния процесса или потока, чтобы можно было восстановить его и возобновить выполнение позже, а затем восстановить другое состояние, сохранённое ранее.
- переменная (код)
Это значение, которое может быть изменено во время работы программы. Оно называется переменной, потому что может изменяться.
Иногда термином «переменные» описывают и собственно переменные, и константы, но хотя переменные и константы схожи, у них есть одно важное различие — значение константы нельзя изменить во время выполнения программы.
Базовый синтаксис для переменной:
var name : type = value.var— это ключевое слово, которое указывает, что это переменная, аname— это название, присваиваемое переменной (известное как идентификатор). Символ:указывает, что дальше следует тип. Знак=говорит, что дальше следует значение. Пример:VersePlayerSpeed : float = 2.0Это выражение говорит о том, что PlayerSpeed имеет значение 2.0, представленное в виде десятичного числа, которое не меняется во время выполнения программы.
Название и тип — это объявление, а инициализация — это задание конкретного значения. Переменная не обязательно должна иметь присвоенное значение при инициализации, но рекомендуется его присваивать.
Переменные отличаются от констант тем, что их значения можно изменить в любой момент. Это делается с помощью выражения присваивания.
- переменная self (self variable)
Self— это специальный идентификатор в языке Verse, который можно использовать в методе класса для ссылки на экземпляр класса, для которого вызывается метод. Можно ссылаться на другие поля экземпляра, из которого был вызван метод, без использованияSelf, но если нужно сослаться на экземпляр в целом, то следует использоватьSelf.- переменная-указатель (pointer variable)
Переменная-указатель указывает на место в памяти, в котором хранится значение. После создания переменной-указателя уже не получится изменить место переменной-указателя в памяти, но можно будет изменить значение, хранящееся в этом месте в памяти.
- переопределение (override)
В Verse можно переопределять поля суперкласса и присваивать им начальные значения. Пример:
Versetank := class(player_character): StartingShields<override> : int = 100 MaxShields<override> : int = 200 AllowOvershield<override> : logic = true DamageReduction : int = 50 CreateTankPlayerCharacter() : tank = return tank{}Класс «танк» будет иметь значения полей
StartingShields,MaxShieldsиAllowOvershield, отличающиеся от значений класса по умолчанию.Таким же образом можно переопределить значения методов.
Подробнее см. в статье Подкласс.
- переполнение для типа int (integer overflow)
Переполнение для типа int возникает при попытке сохранения значения, которое слишком велико для типа int.
- перепроектирование (refactor)
Изменение структуры кода с сохранением его функциональности. К примеру, блок кода, который во время выполнения программы вызывается несколько раз, можно реорганизовать и представить в виде вызова функции. Перепроектирование может повысить удобочитаемость кода и упростить его без изменения его поведения.
- Пинг-понг
Попеременное движение вперёд и назад.
- побочный эффект (side effect)
Побочный эффект возникает, когда какой-либо код, например функция или выражение, изменяет какое-либо состояние за пределами своей области видимости.
- подвыражение (subexpression)
- подмодуль (submodule)
Модуль Verse внутри другого модуля Verse. Организация модулей и подмодулей напоминает папки и подпапки в компьютере — каждый подмодуль добавляет свою часть /NameOfModule в общий путь.
- Подписаться
Подписка — это способ указать функцию, которая вы хотите вызвать при возникновении события. Её также можно назвать привязкой к событию. Привязанная функция называется обработчиком.
- подпрограмма (routine)
См. Функция.
- подпрограмма (subroutine)
Набор инструкций в компьютерной программе для выполнения часто используемого набора операций. Подпрограммы похожи на функции, за исключением того, что функция выполняет некоторые вычисления и возвращает результат вызывающему коду. Подпрограммы же выполняют свою работу, не сообщая результат вызывающей программе.
- подтип (subtype)
Тип, который поддерживает все операции своего супертипа. Ключевое слово
subtypeможет использоваться с круглыми скобками, чтобы указать, что тип ограничен конкретным типом. Например, несколько методов массива в Verse используютsubtype, чтобы определить, что для работы метода все элементы массива должны иметь сопоставимый супертип.Verse(Input:[]t where t:subtype(comparable)).RemoveFirstElement<public> (ElementToRemove:t)<computes><decides>:[]t RemoveFirstElementВ этом случае необходимо, чтобы элементы массива имели супертип
comparable. Тогда метод сможет определить, равен ли какой-либо из элементов массива аргументуElementToRemove.- Пол
Математическая операция, которая округляет значение типа rational до ближайшего целого числа вниз. См. также
Ceil.- поле (field)
См. статью Составляющая.
- полиморфный (polymorphic)
Слово полиморфный образовано от поли-, что означает «много», и -морф, что означает «форма». Полиморфное поведение возникает, когда переменная может иметь разные значения в разных условиях.
- порождать (raise)
Когда функция посылает сигнал, она порождает событие. Заинтересованные стороны уведомляются о том, что произошло событие, к примеру взаимодействие с кнопкой, и вызываются все обработчики события.
- порядок расчёта (order of evaluation)
Соответствует приоритету операторов — порядку, в котором в выражении должны выполняться определённые операции.
- последовательное выполнение (sequential execution)
Код обычно выполняется построчно, в порядке следования выражений. Это называется последовательным выполнением.
- постройки
Эффект — это категория поведения, которое может демонстрировать функция.
В примере кода ниже функция
IsCriticalHealthпринимает целочисленное значение в качестве входных данных через параметрHealth. Далее указано, что эффекты, которые демонстрирует функция, этоdecidesиtransacts, что означает, что функция является контекстом, допускающим неоднозначность, и её действия можно откатить в случае выполнения функции с ошибкой. Если значениеHealth, переданное в функцию, больше 0,0 и меньше либо равно 30,0, то функция выполняется успешно. В противном случае функция завершается неудачно и контекст, вызвавший функцию, должен обработать ошибку.VerseIsCriticalHealth(Health : float)<decides><transacts> : void = ((Health > 0.0) && (Health <= 30.0))Подробнее см. в статье Спецификаторы и атрибуты.
- постфикс (postfix)
Формат оператора, когда есть только один операнд и оператор ставится после операнда.
- поток (thread)
Наименьшая единица обработки, которая может быть выполнена в операционной системе.
- предикат (predicate)
В языке Verse предикат — это то, что либо выполняется успешно, либо завершается с ошибкой.
- префикс (prefix)
Формат оператора, когда есть только один операнд и оператор ставится перед операндом.
- приведение типа (coercion)
Преобразование значения в данные другого типа. Преобразования типов могут быть производится неявно или явно. Неявное преобразование. также называемое приведением типа, выполняется автоматически.
- приведение типов (type casting)
Вы можете конвертировать класс в один из его подклассов (т. н. приведение типов), используя синтаксис
NewReference := type_to_cast_to[Reference], гдеtype_to_cast_to— это желаемый тип. Это выражение с неоднозначным результатом, потому что приведение типов не выполнится, если объект невозможно преобразовать в данный тип — например, если типы класса и подкласса отличаются.В следующем примере показано, как преобразовать
TaggedDevice, которое имеет типcreative_device_base, в типcustomizable_light_device, чтобы можно было использовать его отдельные функции. Если устройствоTaggedDeviceне является устройством «Настраиваемое освещение», оно не будет вызыватьTurnOn().Verseif (LightDevice := customizable_light_device[TaggedDevice]): LightDevice.TurnOn()- Привязать
В программировании связать — это создать связь между двумя или более программными объектами на определённое время.
В Fortnite привязка — это связывание функции с каким-либо событием.
В контексте Verse связать — это создать связь между двумя или более программными объектами на определённое время. Например, если привязать функцию к событию
InteractedWithEventкнопки, то каждый раз, когда игрок будет нажимать на эту кнопку, будет вызываться привязанная функция. Сюда также можно отнести привязку переменной к значению или объекту или привязку обработчика к событию.- пример кода (code sample)
Отдельная программа, модуль или класс, демонстрирующие одну или несколько концепций, классов, функций или какой-либо другой аспект языка программирования. См. также Фрагмент кода.
- примитивный тип (primitive type)
Примитивным называется любой тип, который не создаётся из других типов. Это означает, что примитив не является составным и не может быть подвергнут дальнейшей декомпозиции. Примерами встроенных примитивных типов являются
void,logic,int,float,rationalиchar. Примитивы встроены в язык Verse.См. также Контейнерный тип.
- Принять
Фиксация — это запись ряда изменений в коде в систему контроля версий.
В Verse фиксация — это когда эффекты кода выражения c неоднозначным результатом становятся постоянными после успешного выполнения этого выражения.
- приоритет (precedence)
Порядок, в котором определённые операции выполняются в выражении.
- приоритет операторов (operator precedence)
Это понятие относится к встроенному порядку расчёта при сочетании операторов в Verse. Например, если в одном выражении используется несколько операторов, важен порядок их расчёта.
Например,
1 + 2 * 3рассчитывается не как3 * 3, так как умножение имеет приоритет перед сложением.Приоритет операторов можно переопределить с помощью выражений группировки.
- прицел
Область видимости относится к той части программы, в которой действительна связь названия со значением и где это название может использоваться для ссылки на значение. Например, любые константы или переменные, созданные в функции, существуют только в контексте этой функции. Это означает, что время жизни объектов ограничено областью видимости, в которой они созданы, и они не могут использоваться за пределами этого блока кода.
- Проводник Verse
- программа (program)
Программа — это набор инструкций, которые сообщают компьютеру, как выполнить какое-либо действие. Основа любой программы — показать, как компьютер будет получать входные данные и возвращать выходные.
Программа решает задачи. Но компьютер понимает программы предельно буквально. Это очень похоже на сделку с джином. Джинн (программа) даст вам именно то, о чём вы просите. В точности. Ошибки возникают, когда программист делает предположения о том, что должно произойти, вместо того, чтобы точно описать, какие входные данные должны быть предоставлены и какие выходные данные будут результатом.
- программирование (programming)
Написание инструкций (программы), которые могут быть скомпилированы и выполнены компьютером.
- программная ошибка (баг) (bug)
В творческом режиме Fortnite и UEFN — неправильное или неожиданное поведение программы.
В контексте Verse ошибка при выполнении программы или баг — это ошибка в компьютерной программе, которая приводит к неправильному или неожиданному результату. Ошибки при выполнении программы возникают в среде выполнения, в отличие от ошибок компилятора, которые возникают на этапе компиляции Verse. Процесс выявления и устранения ошибок при выполнении программы называется отладкой.
- программная транзакционная память (STM)
Программная транзакционная память (software transactional memory, STM) — это механизм управления конкурентностью, аналогичный транзакциям баз данных для управления доступом к общей памяти в программировании с конкурентными процессами. В конечном счёте, язык Verse будет использовать STM, поскольку это также обеспечивает повышение производительности при больших распределённых симуляциях.
- псевдокод (pseudocode)
Псевдокод — это подробное описание на простом языке (не на языке программирования) того, что должен делать алгоритм. Псевдо означает «ненастоящий» или «нереальный», поэтому можно сказать, что псевдокод — это имитация кода, который, однако, полезен для определения того, что должен делать алгоритм.
Псевдокод также можно рассматривать как высокоуровневое описание. Псевдокод обычно используется для планирования большой или сложной части программы перед написанием реального кода.
- псевдоним типа (type alias)
Псевдоним типа — это способ создать новое название существующего типа. При объявлении псевдонима типа можно использовать псевдоним вместо существующего типа. Псевдоним типа не создаёт новый тип, а лишь позволяет использовать новое имя для существующего типа.
- пустая строка (empty string)
Строка без символов
""называется пустой.- пустой блок (empty block)
Блок кода, в котором нет выражений, является пустым блоком. Пустые блоки обычно используются только в качестве заглушек и заполняются кодом позже.
- путь (path)
Пути в Verse предоставляют глобальное пространство имён для идентификации объектов, а их принцип работы схож с принципом веб-доменов. Пути являются постоянными и уникальными. Доступ к ним может получить любой программист на Verse.
- Путь Verse
См. Путь.
- разработчик
Тот, кто использует инструменты Fortnite для создания (разработки) острова в Fortnite, особенно в UEFN. Этот термин включает в себя разработчиков, художников и архитекторов островов Fortnite.
- раскрытие (expose)
Свойство выводится в UEFN путём присвоения ему атрибута
editableв коде Verse. Открытое свойство можно редактировать непосредственно в интерфейсе UEFN. См. также editable.- распаковка кортежа (splat)
Когда кортеж используется в качестве единственного элемента функции, это выглядит так, как если бы функция вызывалась с каждым из элементов кортежа по отдельности. Это называется развёртыванием или распаковкой кортежа.
- распространение (propagate)
Распространение в функции имеет место, если вызывающий код не должен обрабатывать ситуацию в случае ошибки. Например, функция с эффектом
decidesможет быть вызвана из другой функции с эффектомdecides. Какой бы код не вызвал вызывающий код, ему придётся обработать ошибку.- рассчитать (evaluate)
Рассчитать — значит выполнить выражение для получения значения.
- расходящийся код (diverge)
Считается, что выполнение программы расходится, если она не завершается (не заканчивается), как ожидалось. Если программа выдаёт значение за конечное время без расхождения, то она сходится.
- рациональное число (rational number)
Число, которое можно представить в виде простой дроби с помощью двух целых чисел. Например, 1.75 также можно представить как 7/4, но квадратный корень из 2 (√2) невозможно представить в виде дроби, и поэтому он считается иррациональным числом. Другим примером иррационального числа является число Пи, которое начинается как 3,14159… и продолжается бесконечно.
- региональный стандарт (locale)
В программировании языковой стандарт (locale) — это набор параметров, определяющих язык пользователя, регион и другие аспекты интерфейса. В Verse
locale— это тип, который задаёт контекст, когдасообщениедолжно быть локализовано, и влияет на язык текста и формат чисел в зависимости от языкового стандарта.- режим анимации «Вперёд и назад» (PingPong animation mode)
При достижении последнего опорного кадра анимация воспроизводится в обратном порядке.
- результат (result)
Когда выражение выполняется, а затем выдаёт значение, это значение является результатом.
- рейкастинг
При рейкастинге от объекта в пространстве проводится невидимая линия, чтобы узнать, не сталкивается ли с ним что-либо.
- рекурсия (recursion)
Рекурсия — это когда функция вызывает саму себя.
- с возможностью изменения
Состояние объекта, которое может быть изменено после его создания. В Verse возможность изменения доступна только с указателями.
См. также Неизменяемый.
- сбой (fail)
В Verse любой код, написанный пользователем, по умолчанию не может выдавать сбой. Это означает, что вместо функции, возвращающей логическое значение или значение типа option, она использует
decidesдля того, чтобы вернуть значение, void или завершиться с ошибкой.- сбросить
- свободное свойство
- свойство (property)
Свойство — это составляющая (поле), которая позволяет возвращать значения и выводить их в интерфейс.
- связный список (linked list)
Линейная структура данных, в которой каждый элемент хранит ссылку на следующий элемент в списке.
- сделка с джином (contract with the genie)
Написание кода иногда сравнивают с заключением сделки с джинном в том смысле, что программа в точности будет следовать вашим инструкциям, даже если результат будет не совсем таким, как вы ожидаете. См. также Программа.
- семантика (semantics)
- семантическая ошибка (semantic error)
См. Ошибка компилятора.
- семантический анализ
Также называется контекстно-зависимым анализом. Семантический анализ выполняется компилятором после получения необходимой семантической информации из исходного кода (написанного вами). В ходе этого анализа код проверяется на наличие семантических ошибок и производится контроль типов, например уточняется, есть ли у каждого оператора свой операнд или объявлена ли переменная перед её использованием.
- семафор (semaphore)
Семафор похож на мьютекс, за исключением того, что мьютекс блокирует доступ других потоков к имеющимся ресурсам, а семафор лишь сигнализирует о том, что ресурс используется.
- сериализация
Процесс записи данных в файл сохранения или чтения их из него. Свободное свойство создается со считываемым файлом, содержащим свойство, которого нет в классе или структуре.
- сигнатура функции (function signature)
Сигнатура функции объявляет название функции (идентификатор), а также входные данные (параметры) и выходные данные (результат) функции. Функции Verse также могут иметь спецификаторы, которые указывают, как использовать или реализовывать функцию.
- синтаксис (syntax)
Правила или грамматика языка программирования.
См. также Семантика.
- синтаксическая ошибка (syntax error)
См. Ошибка компилятора.
- синтаксический анализ (parse)
Синтаксический анализ в информатике — это когда строка команд, обычно программа, разделяется на легко обрабатываемые компоненты, которые на предмет корректности синтаксиса, а затем присоединяются к тегам, определяющим каждый такой компонент.
- скобки (brackets)
Скобки используются в Verse для определения различных видов информации в коде. В Verse используются четыре вида скобок. Область их применения:
Круглые скобки
()служат для задания параметров в сигнатуре функции и аргументов в вызове функции, а также для группировки выражений, кортежей и подклассов.Квадратные скобки
[]служат для вызова функций с неоднозначным результатом, указания спецификаторов типов для массивов и ассоциативных массивов, а также для индексирования массивов.Фигурные скобки
{}используются при создании экземпляров архетипов, форматировании блоков кода и интерполяции строк.Угловые скобки
<>используются для добавления спецификаторов к идентификаторам и функциям.
- создание экземпляра (instantiate)
Создание экземпляра чего-либо.
В Verse это процесс создания экземпляра или значения структуры данных или типа, такого как класс или структура. См. также Создание экземпляра архетипа.
- создание экземпляра архетипа (archetype instantiation)
Процесс создания архетипа. Не путать с конструктором, который также может запускать логику или другие функции.
- сообщение
Тип
messageв Verse может содержать текст, не зависящий от языковых настроек. Когда выинициализируете переменную типаmessageзначением типаstring, эта строка определяет текст и язык сообщения по умолчанию.- сопрограмма (coroutine)
Подпрограмма с длительным сроком жизни, которая либо выполняет задачу с течением времени, либо ожидает наступления различных событий и состояний или их комбинации. Сопрограмма является синонимом асинхронной функции.
- составляющая (member)
Именованная переменная или функция, которая является частью составной структуры данных (такой как класс, структура, интерфейс или модуль Verse). Переменные-составляющие часто называются полями, а функции-составляющие — методами.
- составляющая данных (data member)
См. статью Составляющая.
- составной тип (composite type)
Составной тип данных, иногда называемый комбинированным или агрегированным, — это любой тип, который может состоять из полей или элементов (обычно именованных) примитивных типов или других составных типов. Обычно имеет фиксированное число полей или элементов в течение всего срока жизни. В настоящее время в Verse используются следующие составные типы: struct, class, enum, interface и module.
- состояние (state)
Состояние — это комбинация исходных значений объекта, а также любые внесённые изменения.
- состояние игры (game state)
Состояние игры или другой симуляции. Оно включает в себя значения всех данных, описывающих систему. Состояние системы определяется значениями констант и переменных.
- сохранение
Когда данные игрока сохраняются из одного сеанса и загружаются в другом сеансе этой игры, это называется сохраняемостью.
- спекулятивное выполнение (speculative execution)
В Verse можно проверить контекст, допускающий неоднозначность, таким образом, чтобы вы попробовали какие-либо действия без их совершения. Это называется спекулятивным выполнением. При успешном выполнении выражения происходит фиксация эффекта выражения, например изменение значения переменной. Если же выражение выдаёт ошибку, последствия выполнения выражения откатываются, как будто выражение никогда не выполнялось.
- спецификатор (specifier)
Спецификатор применяет дополнительную информацию к определению. Например, спецификатор эффекта
decidesв определении функции помечает функцию как выражение с неоднозначным результатом.Спецификаторы делятся на две подкатегории: спецификаторы обращения и спецификаторы эффектов.
- спецификатор доступа
Спецификаторы доступа определяют уровень доступа. Ниже перечислены все спецификаторы доступа, которые можно использовать с классами:
public: неограниченный доступ.
internal: доступ ограничен текущим модулем. Это доступ по умолчанию.
protected: доступ ограничен текущим классом и любыми подклассами.
private: доступ ограничен текущим классом.
- список изменений (changelist)
Способ отслеживания изменений файлов в Perforce между локальными файлами, хранящимися на компьютере, и файлами, которые передаются на сервер и объединяются с исходными файлами проекта. Список изменений также называется CL.
- Среда выполнения
Означает время, затраченное на работу игры, симуляции или приложения. Не путать со временем компиляции, которое означает время, затраченное на компиляцию, или временем разработки, которое означает время, затраченное на разработку, компиляцию и отладку.
Существуют различия между событиями в среде выполнения и событиями во время компиляции.
- среда метавселенной (metaverse environment)
Постоянный и глобально согласованный трёхмерный мир в реальном времени со средой выполнения, в которой работает сложный взаимозависимый код с конкурентными процессами, написанный пользователями, с миллионами одновременно подключённых пользователей.
- средство синтаксического анализа (parser)
Программа для синтаксического анализа кода.
- срок жизни (lifespan)
См. Время жизни.
- стандартная библиотека (standard library)
Ряд функций, констант и других определений языка, доступных в Verse. Эта библиотека содержит реализации для решения распространённых задач программирования. Это ресурс, содержащий часто используемые программистами фрагменты кода, такие как математические функции.
- статическая проверка (static checking)
Автоматическая проверка во время компиляции, которая способна выявить ошибку на основе семантики кода.
- стек вызовов (call stack)
Стек вызовов — это «журнал», по которому программа отслеживает вызовы, то есть какие функции выполняются, какие завершили работу, а какие ещё будут выполнены.
- строгий контроль типов (strongly-typed)
Язык программирования является языком со строгим контролем типов, в котором каждому идентификатору присваивается тип. Если тип не указан явно, он определяется механизмом вывода типов. Это означает, что язык не будет выдавать непредсказуемых результатов в среде выполнения, поскольку тип этих идентификаторов и то, как операции влияют на данные типы, известны. См. также Статическая проверка.
- структурированная конкурентность (structured concurrency)
Структурированная конкурентность описывает конкурентные операции в пределах срока жизни, который ограничен определённой конкурентной командой и асинхронной областью видимости контекста. Это структурированное средство контроля исполнения, такое как
if,forилиreturn, которое ограничивается соответствующей областью видимости.Выражения со структурированной конкурентностью в Verse:
sync,race,rushиbranch.- суперкласс (superclass)
Классы могут наследоваться от суперкласса, который включает в себя все поля суперкласса в наследующий класс. Такие классы называются подклассом суперкласса.
- супертип (supertype)
Супертип — это тип, который имеет хотя бы один подтип. Любые операции, поддерживаемые супертипом, должны поддерживаться и любыми подтипами. В языке Verse единственным супертипом всех остальных типов является
any, а все остальные типы являются подтипамиany. Типcomparableявляется супертипом всех типов, которые допускают сравнение значений в Verse, напримерintиfloat.- сходящийся код (converges)
«Наименьший» заданный эффект. Это код, который гарантированно выдаёт значение за конечное время без расхождения.
- сценарий (script)
Независимая часть исполняемого кода Verse, связанная с объектом.
- тело
Блок с собственной областью видимости, в котором определены подвыражения языка, например тело функции или тело цикла. Например, тело функции содержит выражения, которые определяют, что делает функция, а любые переменные, объявленные в функции, являются локальными для тела этой функции.
- тик (tick)
См. термин Обновление симуляции, который используется как синоним такта, и иногда кадра.
- тип
Тип определяет, какие операции могут выполняться над данными и как эти данные или значения хранятся для этого типа. Существуют общие типы, такие как int и string, составные типы и пользовательские типы. См. также Примитивный тип и Контейнерный тип. Ключевое слово
typeможно использовать с фигурными скобками, в которых указывается определяемый тип. На данный момент в качестве объявлений поддерживаются объявления функций и числовые диапазоны. Например, в определении функцииSubscribe()для интерфейсаsubscribableиспользуется ключевое словоtype, чтобы указать, что её параметрCallbackдолжен быть функцией с типом возвращаемого значенияvoid.VerseSubscribe<public>(Callback:type {__(:t):void})<transacts>:cancelable- тип данных (data type)
См. статью Тип.
- Узел
В UEFN узел — это основная единица в системе, основанной на графах, которая представляет определённую функцию, операцию или точку данных. В контексте графов узлов, узел — это отдельный компонент, который обрабатывает или маршрутизирует аудиосигналы. Это может быть источник звука, эффект (например, реверберация или задержка), сигнал микшера или выход.
Для Verse, см. Узел связного списка.
- узел связного списка (linked list node)
Каждый элемент связного списка называется узлом. Узел — это контейнер, который содержит некоторые данные и ссылку на следующий узел.
- указатель (pointer)
Указатель — это способ обращения к изменяемому «контейнеру», который может содержать значение определённого типа. С помощью указателя можно изменить заданное значение в этом контейнере. См. также Значение.
- управляющий символ (escape character)
Управляющий символ в языке Verse — это обратный слеш (\), который создаёт управляющую последовательность внутри строкового литерала. Он используется для изменения значения других управляющих символов, которые в противном случае интерпретировались бы по-другому. Например, если вы работаете со строкой и хотите включить в неё символы, которые имеют предопределённое значение, например, { }, нужно поставить управляющий символ "" перед соответствующим символом в строке. В результате
"\\{\\}"будет отображаться в тексте как {}.- уровень детализации (verbosity)
Настройка, ограничивающая объем дополнительной информации, которая отображается при создании журнала.
- уровень доступа (access level)
Права доступа, необходимые для доступа к составляющей. Они задаются с помощью спецификатора составляющей.
- условие (condition)
Условие — это то, что программа может проверить на истинность или ложность. Условное выражение может рассчитывать условие и возвращать результат true (истина) или false (ложь).
- условие race (race condition)
Условие race — это когда программа пытается одновременно выполнить две или более операции, которые должны выполняться последовательно, чтобы завершиться корректно.
- условное (conditional)
Выражение, которое рассчитывает условие и выполняет инструкции на основе результата расчёта условия. Примером условного выражения является выражение
if.- устройство
Устройства — это объекты в Fortnite, которые выполняют определённые задачи, связанные с игровым процессом.
Устройство, как и объект, — это то, что вы можете разместить на своём острове. Устройства отличаются от объектов тем, что их можно использовать для взаимодействия с игроками. Каждое устройство имеет свои функции и умеет что-то делать.
Устройство можно представить как набор игровой механики с определёнными функциями, которые можно настроить с учётом своего игрового процесса. Большинство устройств можно настроить, однако у всех них есть стандартные параметры, которые определяют, как они будут работать, если вы не станете ничего менять.
Это основной строительный блок, используемый в Verse для реализации механики игры. Устройство реализует взаимодействие с игроками для управления игровым процессом.
- уточнение имени (qualify)
Позволяет определить идентификатор в области видимости так, чтобы его можно было использовать повторно. Например, у вас может быть константа с названием "cat". Вы можете использовать то же название для поля класса "sarah.cat". Оба имени включают "cat", но имя "sarah.cat" является уточнённым.
- фигурные скобки (braces)
См. Скобки.
- фрагмент (snippet)
См. Фрагмент кода.
- фрагмент кода (code snippet)
Фрагмент — это некоторый код, часто короткий, который обычно предназначен для демонстрации или реализации определённой концепции.
Фрагменты кода не являются полноценными самостоятельными программами. Фрагменты кода можно копировать в блоки кода. См. также Пример кода.
- функционально-логическое программирование (functional logic programming)
Объединение парадигм функционального и логического программирования в одном языке.
- функциональное программирование (functional programming)
Тип декларативного программирования, который фокусируется на использовании функций. Функциональное программирование направлено на облегчение тестирования и отладки за счёт уменьшения побочных эффектов. Примером функционального языка программирования является Haskell.
- функция (код)
Функция (также называемая подпрограммой) — это повторно используемый код, содержащий инструкции для выполнения действия или получения выходных данных на основе входных данных.
Чтобы определить функцию, нужно указать три ключевые части: уникальное название, тип информации, ожидаемой в качестве результата, и что функция будет делать при вызове.
Базовый синтаксис функции приведён ниже:
Versename() : type = codeblockНазвание() и тип, разделённые двоеточием: это сигнатура функции, то есть то, как функция вызывается и используется, а значение, которое должно быть возвращено функцией, имеет тип, указанный при определении. Этот формат похож на формат определения константы, за исключением () после название, что имитирует вызов функции в коде.
Блок кода функции: вы указываете, что будет делать функция при вызове, определяя
=codeblock, гдеcodeblock— это любая последовательность из одного или нескольких выражений. При каждом вызове функции выполняются выражения, содержащиеся в блоке кода.
- целое число (integer)
Целое число — это число без дробной части, которое может быть положительным, отрицательным числом или нулём.
- целочисленное значение со знаком (signed integer)
Целочисленное значение со знаком — это значение, которое может быть отрицательным, положительным или нулевым. Оно называется числом со знаком, потому что может иметь знак + или – слева, указывающий, является ли число положительным или отрицательным. Беззнаковое целое число может быть только положительным числом или нулём.
- число с плавающей запятой (floating point number)
Термин, используемый в различных языках программирования для определения переменной с дробным значением или числа, содержащего десятичную запятую, например 0,5 или 1,0. Числа, созданные с помощью объявления переменной типа float, содержат цифры по обе стороны от десятичной запятой.
- шестнадцатеричная система (base-16)
Шестнадцатеричная (hexadecimal) система (от hexa, что означает шесть, и decimal, что означает десять), или base-16 (англ.) (часто сокращённо обозначается hex), — это система счисления, в которой используются 16 символов, а не 10, как в более привычной для нас десятичной системе.
- шестнадцатеричные числа (hexadecimal)
В Verse для представления целых чисел можно использовать шестнадцатеричную систему счисления (base-16) вместо десятичной системы, основанной на 10. Это означает, что шестнадцатеричные значения представляются цифрами 0–9 и буквами A–F. К примеру, 0x7F является шестнадцатеричным представлением числа 127, а 0xFACE — числа 64206.
Это альтернативный способ представления целых чисел.
- Экземпляр
Экземпляр — это уникальная копия ресурса. Исходный ресурс определяет свойства по умолчанию для любого создаваемого вами нового экземпляра. Изменения, которые вы вносите в свойства экземпляра, не влияют на исходный ресурс. Например, вы можете изменить внешний вид материала, не изменяя при этом основной материал. Это будет экземпляром материала.
В Verse экземпляр — это создание переменной с указанием её идентификатора и типа, или объявление переменной, с присвоением ей значения, которое называется инициализацией.
- элемент (element)
Отдельная часть более обширной группы. Например, массив может содержать различные элементы, которые можно хранить и использовать по отдельности.
- язык открытого мира (open world language)
Язык, в котором взаимозависимые модули, написанные многими пользователями и организациями, могут развиваться с течением времени без нарушения совместимости интерфейсов и постоянных данных, следуя чётко определённым правилам подтипирования.
- язык программирования (programming language)
Формальный язык, используемый для написания компьютерных программ. Существует множество языков программирования, и у каждого есть свои чёткие правила. В качестве примера можно привести Scratch, визуальный язык программирования, используемый для разработки интерактивных историй, игр и анимации, и C++, текстовый язык, который часто применяется при разработке игр. Verse — это язык программирования, разработанный Epic Games для авторов, которые хотят узнать больше об использовании инструментов разработки.