Verse는 새로운 프로그래밍 언어 입니다. 숙련된 프로그래머이지만 이해가 되지 않는 부분이 있다면 이 용어집을 참고하세요.
여기에는 기본적인 프로그래밍 용어에 대한 정의도 다수 추가되어 있어 프로그래밍 입문자 인 경우에도 유용하게 활용할 수 있습니다.
숫자와 기호
A
abstract class(추상 클래스)
클래스 또는 클래스 메서드에 추상 지정자가 있는 경우 클래스의 인스턴스를 생성할 수 없습니다. 추상 클래스는 수퍼클래스 용도로 만들어졌으며, 일부 멤버가 구현되거나 지정되지만 모두 구현되거나 지정되지는 않습니다. 베이스 클래스(base class) 라고도 부릅니다.
abstraction(추상화)
사용자가 이면의 복잡한 내용을 이해할 필요가 없는 경우 불필요한 세부 내용을 숨긴다는 프로그래밍 원칙입니다. 예를 들어 자동판매기에 돈을 넣고 간식을 사 먹기 위해 자동판매기의 작동 메커니즘까지 이해할 필요는 없다는 의미입니다.
additive effect(애디티브 이펙트)
애디티브 이펙트 는 익스클루시브 이펙트에 추가할 수 있는 이펙트입니다. 애디티브 이펙트는
suspends
및decides
를 포함합니다.
agent(에이전트)
에이전트는 플레이어 또는 AI를 나타낼 수 있습니다.
algorithm(알고리즘)
알고리즘은 문제를 해결하거나 작업을 완료하기 위해 작성된 일련의 인스트럭션으로, 음식 조리법 같은 것이라고 생각하면 이해하기가 쉽습니다. 문제를 해결하거나 작업을 완료하기 위해 코드를 작성할 때 해당 코드가 알고리즘이 됩니다.
alternate integers(대체 integer)
16진법을 참고하세요.
any
Verse에는 특수한 타입이 있는데,
any
는 모든 타입의 수퍼타입입니다. 즉, 다른 모든 타입은any
의 서브타입입니다. 따라서any
가 지원하는 모든 연산이 모든 값에 대해 지원되어야 하므로,any
는 매우 제한된 수의 연산만 지원합니다. 많이 사용되지는 않지만, 오류를 생성하는 코드를 작성할 때 나타날 수 있기 때문에 이 타입이 있다는 점은 알아두는 것이 좋습니다. 오류가 가장 자주 발생하는 경우는 여러 표현식이 결과로 나타날 수 있으며(예:if
의 여러 경로)any
가 결과 사이의 유일한 공통 수퍼타입일 때입니다.
API
Application Programming Interface의 약어로, 일반적으로 사용자가 언리얼 엔진 및 포트나이트의 시스템에 액세스하고 시스템과 상호작용할 수 있도록 호출 가능한 함수, 타입, 데이터 구조로 그룹화한 라이브러리입니다.
array(배열)
배열은 동일한 타입의 엘리먼트를 저장할 수 있는 컨테이너입니다. 배열의 엘리먼트는 배열에 삽입한 순서를 따르며, 인덱스를 호출하여 해당 배열의 위치를 기준으로 엘리먼트에 액세스할 수 있습니다.
배열은 키워드
array
다음에{}
를 입력하여 생성할 수 있습니다. 예를 들면 다음과 같습니다.Players : []player = array{Player1, Player2}
자세한 내용은 배열을 참고하세요.
async(비동기화)
비동기화 표현식은 평가하는 데 시간이 걸릴 가능성이 있지만 반드시 그런 것은 아닙니다. 비동기화 표현식은 현재 또는 이후의 시뮬레이션 업데이트에서 완료되거나 완료되지 않을 수 있습니다.
suspends
지정자로 식별되는 비동기화 함수는 동시 실행 루틴이라고도 합니다. 비동기화 표현식은 즉시 표현식과 대비됩니다.
atomic(아토믹)
다른 코드의 개입 또는 관찰 없이 완전히 실행하거나 실패하는 코드의 단일 완성 단위입니다. 아토믹 코드는 중단될 수 없습니다. 인접한 비동기가 아닌 즉시 표현식은 모두 아토믹으로 간주됩니다. 즉 코드가 선점 또는 컨텍스트 전환 없이 동일한 업데이트 내에서 중단되지 않고 확실하게 실행됩니다.
어트리뷰트
어트리뷰트는 Verse 또는 UEFN 같은 애플리케이션에서 참조 또는 분석할 수 있는 식별자와 관련된 프로퍼티 또는 기타 정보입니다.
B
base-16(16진수)
6이라는 의미의 hexa- 와 10이라는 의미의 decimal 을 결합한 Hexadecimal(줄여서 Hex )을 의미하는 16진수는 자릿수에 10개 심볼을 사용하는 10진법과 달리 16개 심볼을 사용합니다.
bidirectional(양방향)
두 방향으로 기능합니다.
bind(바인딩)
컴퓨터 프로그래밍에서 바인딩 한다는 말은 특정한 기간 동안 두 개 이상의 프로그래밍 오브젝트 간에 연결을 생성한다는 의미입니다.
block expression(블록 표현식)
블록 표현식은 여러 표현식을 단일 표현식으로 그룹화하거나 코드 블록을 중첩하는 방식입니다. 블록 표현식은 코드 블록과 유사한 방식으로 작동합니다.
body(바디)
자체 스코프를 갖추고 함수 바디 또는 루프 바디 같은 언어 엘리먼트의 하위 표현식을 정의하는 블록입니다. 예를 들어 함수 바디에는 함수의 역할을 정의하는 표현식이 포함되고, 해당 함수에서 선언된 모든 변수는 해당 함수 바디에 대해 로컬이 됩니다.
Boolean(부울)
부울 로직을 참고하세요.
Boolean logic(부울 로직)
표현된 값이 참인지 또는 거짓인지 구분하는 로직 시스템이며, 프로그래밍 언어에서 플로 컨트롤을 정하기 위해 자주 사용합니다. 로직과 대수 분야에서 핵심적인 기여를 한 수학자인 조지 부울(George Boole, 1815~1864)의 이름을 따서 명명되었습니다.
Verse에서 참과 거짓을 나타내는 데 사용하는 타입은
logic
입니다. 이 부울 로직은 실패 컨텍스트에서 실패 가능 표현식을 통해 실행됩니다.
braces(중괄호)
괄호를 참고하세요.
brackets(괄호)
괄호는 Verse에서 다양한 유형의 코드 정보를 지정하는 데 사용됩니다. Verse는 4가지의 괄호 세트를 사용합니다. 괄호의 용도는 다음을 포함하지만 이에 국한되지 않습니다.
branch expression(branch 표현식)
branch
표현식은 하나 이상의 비동기화 서브표현식 블록을 시작합니다. 그 뒤에 따라오는 표현식은 모두 즉시 실행됩니다.자세한 내용은 동시성을 참고하세요.
bug(버그)
버그는 컴퓨터 프로그램이 부정확하거나 예상되지 않은 결과를 도출하도록 만드는 오류입니다. 버그는 런타임 중에 발생하는 반면, 컴파일러 오류는 Verse 컴파일 타임 중에 발생합니다. 버그 식별 및 제거 프로세스는 디버깅이라고 합니다.
built-in(내장)
프로그래밍 언어에서 '내장'이란 해당 언어 및 표준 라이브러리에서 직접 사용할 수 있다는 의미입니다.
C
C++
언리얼 엔진과 같은 게임 엔진을 비롯한 다양한 애플리케이션에서 사용되는 대중적인 프로그래밍 언어입니다.
cache(캐시)
데이터를 더 빠르게 액세스할 수 있도록 저장하는 방식입니다.
call(호출)
컴퓨터 프로그램에서 인스트럭션이 프로그램에 의해 요청될 때 이를 호출 된다고 합니다. 호출은 특정 함수를 인보크 (활성화)합니다. 호출은 플레이어와 오브젝트 간 상호작용 또는 시간 파라미터로 인해 발생할 수 있습니다.
call stack(콜 스택)
콜 스택은 프로그램에서 호출을 트래킹하기 위해 사용되는 것으로, 어떤 함수가 실행 중인지, 실행이 완료되었는지, 어떤 것이 실행될 예정인지 등을 파악합니다.
case expression(case 표현식)
case 표현식은 옵션 목록을 사용하여 프로그램의 플로를 제어할 수 있습니다. 자세한 내용은 case를 참고하세요.
changelist(체인지리스트)
컴퓨터에 저장된 로컬 파일과 서버에 제출하여 프로젝트 소스 파일에 병합되는 파일 간의 Perforce 내 파일 변경 사항을 트래킹하는 방식입니다. 줄여서 CL이라고도 합니다.
char
단일 문자를 저장하는 데이터 타입입니다.
character(문자)
Verse에서 문자란 string 내 단일 타이포그래피 엘리먼트를 가리키기도 합니다.
character encoding(문자 인코딩)
문자 인코딩이란 컴퓨터가 이해할 수 있는 텍스트 문자-데이터 간 매핑을 가리키며, 코드 포인트라고도 합니다.
CI/CD
CI/CD는 'Continuous Integration'과 'Continuous Delivery' 또는 'Continuous Deployment'의 약어입니다. CI/CD는 애플리케이션의 빌드, 테스트, 디플로이를 자동화하여 개발과 애플리케이션을 이어줍니다.
class(클래스)
클래스는 유사한 행동과 프로퍼티(변수 및 메서드)를 갖춘 오브젝트를 생성하기 위한 템플릿으로, 인스턴스화를 통해 실제 값을 가진 오브젝트로 생성되어야 합니다. 클래스는 계층형입니다. 즉, 정보를 부모 클래스(수퍼클래스)에서 상속받아 자손 클래스(서브클래스)와 공유할 수 있습니다. 클래스는 사용자에 의해 정의되는 커스텀 타입이 될 수 있습니다. 인스턴스와 비교됩니다.
code(코드)
코드는 소스 코드라고도 부르며, 프로그래머가 소프트웨어 프로그램에 작동 방식을 알려 주기 위해 작성한 인스트럭션입니다. Verse 소스 코드는 프로그래머가 읽을 수 있지만 컴퓨터는 읽을 수 없습니다. 프로그램은 컴퓨터가 읽거나 실행하기 전에 컴퓨터에서 실행 가능한 인스트럭션으로 변환해야 하는데, 이를 컴파일한다고 합니다. 프로그래머가 코딩한다고 하는 것은 이러한 인스트럭션을 작성한다는 것을 의미합니다.
code block(코드 블록)
블록 또는 코드 블록 은 새로운 코드 바디가 시작되는 표현식 그룹입니다. 코드 블록에 표현식이 전혀 포함되지 않는 경우도 있을 수 있지만, 이 경우 보통 나중에 표현식을 채워 넣을 자리표시자로 사용됩니다.
코드 블록은 식별자 뒤에 따라옵니다.
Verse의 코드 블록은 세 가지 포맷을 가집니다. 이러한 포맷은 모두 시맨틱상으로는 해당 포맷이 코드의 실제 역할을 변경하지 않는다는 점에서 동일합니다.
공백 삽입 포맷 은
:
으로 블록을 시작하며, 각 표현식은 공백 4개를 들여 쓴 줄로 이어집니다.if (test-arg-block): expression1 expression2
if (test-arg-block)
은 블록의 일부가 아니며, 해당 줄 끝의:
에서부터 블록이 시작됩니다.;
을 사용하여 한 줄 내의 여러 표현식을 구분할 수도 있습니다.if (test-arg-block): expression1; expression2; expression3
중괄호를 사용한 여러 줄 포맷 에서는 블록이
{}
로 감싸지며, 표현식은 새 줄에 작성됩니다.if (test-arg-block) { expression1 expression2 }
공백 삽입 포맷에서와 같이
;
을 사용하여 한 줄 내에서 여러 표현식을 구분할 수도 있습니다.if (test-arg-block) { expression1; expression2 }
세 번째 포맷은 중괄호를 사용한 한 줄 포맷 입니다. 마찬가지로 블록이
{}
로 감싸지지만, 각 표현식은 새 줄에 작성되는 것이 아니라;
으로 구분됩니다. 따라서{}
기호를 다른 줄에 쓸 필요가 없습니다.if (test-arg-block) {expression1; expression2}
자세한 내용은 코드 블록을 참고하세요.
code comment(코드 코멘트)
코멘트를 참고하세요.
code sample(코드 샘플)
하나 이상의 개념, 클래스, 함수 또는 프로그래밍 언어의 다른 측면을 보여주는 독립형 프로그램, 모듈 또는 클래스입니다. 코드 스니펫과 비교됩니다.
code snippet(코드 스니펫)
스니펫은 특정 개념을 표현하거나 구현하기 위한 코드로, 일반적으로 길이가 짧습니다.
코드 스니펫은 완전한 독립형 프로그램이 아닙니다. 코드 스니펫은 코드 블록에 복사하여 붙여넣을 수 있습니다. 코드 샘플과 비교됩니다.
code unit(코드 유닛)
인코딩된 텍스트 유닛 하나를 표시할 수 있는 최소 비트 조합입니다. UTF-8은 8비트 코드 유닛을 사용합니다.
coercion(강제)
한 값을 다른 데이터 타입으로 변환하는 것을 가리킵니다. 타입 변환은 명시적 또는 묵시적으로 수행할 수 있습니다. 묵시적 변환은 강제한다고도 하며, 자동으로 이뤄집니다.
comment(코멘트)
프로그래머가 자신의 코드 또는 프로그램을 작성한 방식에 대한 이유를 설명하기 위해 작성하는 코멘트입니다. 코드 자체가 프로그램의 작동 방식 을 설명한다면 코멘트는 보통 그 이유 를 설명하기 위해 추가됩니다.
코드 코멘트는 코드 어디서든
#
뒤에 작성할 수 있습니다. 프로그램이 실행될 때 코드 코멘트는 무시됩니다.코멘트는 줄 맨 앞에
#
을 붙여 한 줄 로 작성할 수 있습니다. 코멘트를 끝내려면 줄 끝에서 리턴 키를 누르면 됩니다.# 한 줄 코멘트는 이렇게 작성합니다.
여러 줄 블록 코멘트를 작성할 수도 있습니다. 이 경우
<#
으로 블록을 ` 시작하여#>
로 끝내면 됩니다.<# 이 메시지와 같은 형식으로 코멘트를 시작하고 종료하면 코드에 여러 줄의 코멘트를 추가할 수 있습니다. #>
코드에 코멘트를 추가하는 다른 방법을 확인하려면 Verse 언어 퀵 레퍼런스를 참고하세요.
commit(커밋)
실패 가능 표현식 성공 이후 해당 표현식의 코드 효과가 영구적으로 남는 것을 말합니다.
common type(일반 타입)
일반 타입은 내장되었으면서 자주 사용되는 타입입니다. 일반 타입에는
any
,comparable
,float
,int
,logic
,rational
,string
이 포함됩니다.
comparison expression(비교 표현식)
Verse의 비교 표현식은 부등 연산자 중 하나를 사용하여 두 요소를 비교합니다. 이러한 연산자로는
<
,>
,<=
,.=
,<>
등이 있습니다.
compile(컴파일)
인간이 읽을 수 있는 언어에서 컴퓨터가 실행 가능한 인스트럭션으로 프로그램을 변환하는 것을 가리킵니다.
compile time(컴파일 타임)
소스 코드가 머신 인스트럭션으로 변환되는 시점입니다. 런타임과 비교됩니다.
compiler(컴파일러)
사람이 읽을 수 있는 프로그램 인스트럭션을 컴퓨터가 실행할 수 있는 인스트럭션으로 변환하는 소프트웨어이며, 파서 라고도 합니다. 컴파일러가 실행되는 시간은 컴파일 타임이라고 합니다.
completed(완료됨)
작업이 완료된 스테이트입니다.
component(컴포넌트)
재사용 가능한 프로그램의 함수 또는 관련 함수 그룹입니다.
composite type(복합 타입)
복합 데이터 타입은 경우에 따라 혼합(compound) 또는 집산(aggregate) 이라고도 하며, 프리미티브 타입 또는 기타 컴포짓 타입의 일반적으로 명명된 필드 또는 엘리먼트로 구성할 수 있는 모든 타입을 가리킵니다. 일반적으로 수명 동안 고정된 수의 필드 또는 엘리먼트를 갖습니다. Verse에서는 현재 복합 타입으로 구조체, 클래스, 열거형, 인터페이스, 모듈을 사용합니다.
concatenate(연결)
연결을 참고하세요.
concrete class(구상 클래스)
구상 지정자를 갖춘 클래스는 빈 아키타입을 갖춘 클래스의 인스턴스를 구현하는 한 방식으로, 클래스의 모든 필드가 초기 값으로 정의되어야 한다는 걸 의미합니다.
concurrent(동시적)
동일한 유효 시간에 다수의 계산이 실행되는 것을 가리켜 '동시적'이라고 합니다. 이 경우 단일 프로세서에서와 같이 물리적인 시간에 걸쳐 잠재적으로 확산되거나 병렬로 수행될 필요가 없다고 하더라도 로직 시뮬레이션 업데이트, 틱, 프레임이 오버랩될 수 있습니다.
condition(조건)
조건은 프로그램이 참인지 또는 거짓인지 확인합니다. 조건부 표현식은 조건을 평가하고 그 결과를 true 또는 false로 반환합니다.
constant(상수)
상수는 값이 저장되는 위치이며, 상수 값은 프로그램의 런타임 동안 변경할 수 없습니다. 상수 라고 부르는 이유도 항상 똑같이 유지되기 때문입니다.
상수의 기본 구문은
name : type = value
입니다.name
은 상수에 할당할 이름으로, 식별자라고도 합니다.:
뒤에는 타입이 옵니다.=
뒤에는 값이 옵니다. 예를 들면 다음과 같습니다.PlayerSpeed : float = 2.0
위 예시는 PlayerSpeed라는 상수의 값이 2.0이며, 프로그램이 실행되는 동안 변경되지 않는 10진수로 표시된다는 것을 나타냅니다.
상수는 항상 할당된 값을 갖습니다. 이름과 타입은 선언이고, 값은 초기화에서 표현됩니다.
변수와 비교됩니다.
자세한 내용은 상수와 변수를 참고하세요.
constrained(컨스트레인)
표현식이 컨스트레인되었다는 것은 설정된 제한이 있다는 것을 의미합니다.
constructor(생성자)
생성자는 관련 클래스의 인스턴스를 생성하는 특수 함수입니다. 새로운 오브젝트의 초기 값을 설정하는 데 사용될 수 있습니다.
함수 이름에
constructor
지정자를 추가하면 클래스에 대한 생성자를 추가할 수 있습니다. 함수의 반환 타입을 지정하지 않고 함수가 클래스 이름에 할당되며, 그다음에는 모든 필드의 초기화가 옵니다. 클래스는 생성자를 여러 개 가질 수 있습니다.
container(컨테이너)
컨테이너는 코드에서 데이터를 정리하는 방식입니다. 자세한 내용은 컨테이너 타입을 참고하세요.
context switch(컨텍스트 전환)
컨텍스트 전환은 프로세스 또는 스레드의 스테이트를 저장하여 나중에 복원 또는 실행할 수 있도록 하고, 이전에 저장된 다른 스테이트를 복원할 수 있도록 하는 프로세스입니다.
contract with the genie(지니와의 계약)
코드를 작성하는 일은 경우에 따라 결과가 예상한 것과 정확하게 일치하지 않는 경우에도 프로그램 자체는 인스트럭션을 정확하게 따른다는 점에서 지니와의 계약 에 비교되고는 합니다. 프로그램도 참고하세요.
control flow(컨트롤 플로)
컴퓨터가 인스트럭션을 실행하는 순서입니다. Verse는 프로그램 내에서 이 플로를 제어하는 데 사용할 수 있는 다양한 표현식을 제공하며 여기에는 블록 또는 루프 표현식 등이 있습니다.
coroutine(동시실행루틴)
시간 경과에 따라 작업을 수행하거나, 다양한 이벤트 및 스테이트 또는 둘의 조합이 발생하기까지 대기하는 일정 시간 동안 지속되는 수명을 갖춘 루틴입니다. 동시 실행 루틴 은 비동기화 함수와 같은 뜻입니다.
D
data member(데이터 멤버)
멤버를 참고하세요.
data type(데이터 타입)
타입을 참고하세요.
debugger(디버거)
디버깅에 사용되는 툴입니다. 프로그램 스테이트의 각 실행 단계를 확인할 수 있습니다.
debugging(디버깅)
코드에 있는 오류를 찾아내어 해결하는 프로세스입니다.
decides
함수가 실패할 수 있으며 이 함수의 호출은 실패 가능 표현식임을 나타내는 이펙트입니다. decides 이펙트를 갖춘 함수 정의는 반드시 transacts 이펙트도 갖춰야 합니다. 즉, 이 함수에 의해 수행되는 액션은 함수 내 어디서든 실패가 있을 경우 마치 아무 작업도 수행하지 않았던 것처럼 롤백할 수 있습니다.
decision expression(결정 표현식)
결정 표현식은 연산자
not,
and,
or
를 사용하여 성공 및 실패 결정 플로를 제어할 수 있게 합니다.
declaration(선언)
선언은 식별자를 해당 타입과 함께 도입하는 표현식입니다. 선언은 구현(사용)되거나 구현(사용)되지 않을 수 있고, 여기에 값이 할당(초기화)될 수도 있고 할당되지 않을 수도 있습니다.
var name : type = expression
은 변수의 선언에 대한 구문입니다. 예를 들면 다음과 같습니다.var PlayerSpeed : float = 2.0
이 코드 줄은 PlayerSpeed라는 이름의 변수가 float 값임을 선언합니다.
이 예시에서 마지막 부분인
= 2.0
은 초기화로, 선언에서 분리되어 있습니다.
declarative programming(선언형 프로그래밍)
이 프로그래밍 패러다임은 프로그램의 단계별 실행에 집중하기보다는 작업을 어떻게 하는지보다 무엇 을 해야 하는지를 구체적으로 지정함으로써 원하는 최종 결과의 도출에 초점을 맞춥니다.
decorate(데코레이션)
코드 작성 시 데코레이션은 코드 조각을 다른 코드 조각과 래핑하는 것을 의미합니다.
define(정의)
정의를 참고하세요.
dependency(종속성)
종속성이란 한 모듈이 해당 기능에 있어서 다른 모듈에 종속되는 것을 가리킵니다.
deterministic(결정론적)
결정론적 시스템이란 동일한 초기 스테이트 또는 입력이 언제나 동일한 결과를 만드는 시스템을 가리킵니다.
deterministic destruction(결정론적 소멸)
일부 프로그래밍 언어에서 사용되는 결정론적 소멸이라는 용어는 프로그램이 자체 스코프에서 나갈 때 오브젝트가 소멸되는 것을 가리킵니다.
developer(개발자)
UEFN과 Verse에서 사용자는 개발자 로 불립니다. 이 용어에는 포트나이트 아일랜드 크리에이터, 아티스트, 아키텍트가 포함됩니다.
digest(다이제스트)
모듈, 함수, 클래스와 같이 Verse 컴파일러에서 처리한 모든 퍼블릭 심볼의 자동 생성된 목록을 가리킵니다. 여기에는 코멘트도 포함됩니다. 다이제스트 파일을 읽어보면 연관된 모듈에 어떤 API 및 기능이 있는지 확인할 수 있습니다.
dispatch(디스패치)
디스패치란 무언가를 어딘가로 전송하는 것을 가리킵니다. 예를 들어 Verse에서는 호출을 함수로 디스패치하거나 이벤트를 리스너로 디스패치할 수 있습니다.
doc
클래스 및 함수에 있지만 함수 파라미터에는 없는 일반적인 메모 필드입니다. 설명하는 대상 엘리먼트의 역할이나 사용 방법에 관한 유용한 정보가 기재되며, Verse API 레퍼런스에서 엘리먼트의 페이지를 채우는 데 사용됩니다.
domain(도메인)
도메인은 특정 파라미터에 의해 수락된 일련의 입력입니다. 타입은 도메인을 지정하는 한 가지 방법이지만, 도메인은 타입보다 포괄적입니다.
dynamic typing(다이내믹 타입)
다이내믹 타입 프로그래밍 언어에서는 변수와 표현식에 타입이 할당되지 않습니다. 이는 런타임까지는 검증될 수 없다는 것을 의미합니다. 엄격한 타입과 비교됩니다.
E
editable(편집 가능)
코드에 추가하면 프로퍼티를 UEFN에 노출시킬 수 있는 어트리뷰트입니다. 이 어트리뷰트를 갖춘 태깅 코드는
@attribute_name
즉 아래의 경우에는@editable
을 식별자 필드 앞에 추가하는 방식으로 구성됩니다.@editable PropertyName : type = DefaultValue
예를 들어 string 필드
GreetingMessage
는 디폴트값이"Hello, stranger"
인 편집 가능한 프로퍼티입니다.expose_properties := class(creative_device): @editable GreetingMessage : string = "Hello, stranger"
이것을 사용하는 방법에 대한 자세한 내용은 에디터에서 장치 프로퍼티 커스터마이징을 참고하세요.
effect(이펙트)
이펙트란 함수가 표시할 수 있는 행동의 카테고리입니다.
아래 예시 코드의 경우 함수의 이름은
IsCriticalHealth
이고,Health
파라미터를 통해 integer 값을 입력으로 취합니다. 그다음으로 함수가 표시하는 이펙트는decides
와transacts
이며, 이는 해당 함수가 실패 컨텍스트이고 함수가 실패할 경우 해당 액션은 롤백될 수 있음을 알 수 있습니다. 함수에 입력으로 전달되는Health
값이 0.0보다 크고 30.0보다 작거나 같다면 함수는 성공합니다. 그렇지 않으면 함수가 실패하며, 이 함수를 호출했던 컨텍스트는 실패를 처리해야 합니다.IsCriticalHealth(Health : float)<decides><transacts> : void = ((Health > 0.0) && (Health <= 30.0))
자세한 내용은 지정자와 어트리뷰트를 참고하세요.
effect hierarchy(이펙트 계층구조)
이펙트란 함수가 표시할 수 있는 행동의 카테고리입니다. 함수에 대한 익스클루시브 이펙트 적용에는 계층구조가 존재하며, 계층구조에서 위에 있는 이펙트는 아래에 있는 이펙트의 모든 행동을 보장합니다. 다음과 같은 계층구조를 가정해 볼 수 있습니다.
이 경우,
transacts
이펙트는 아래에 있는 이펙트의 모든 프로퍼티를 포함하므로varies
의computes
와converges
이펙트를 포함하지만,transacts
의 이펙트는 포함하지 않습니다.
emoji(이모지)
이모지는 보통 텍스트 줄 내에서 사용되고 다채로운 형태로 표현되는 픽토그래프(그림 기호)입니다. 이모지는 얼굴, 날씨, 차량, 건물, 음식, 음료, 동식물, 감정, 느낌, 활동 등을 나타냅니다. 이모지의 표준은 유니코드 컨소시엄에서 규정합니다.
영어 복수형은 경우에 따라 emoji 및 emojis 모두 허용됩니다.
empty string(빈 string)
""
같이 아무 캐릭터도 포함하지 않는 string을 빈 string이라고 합니다.
enum(열거형)
enumeration 의 약어로, 일련의 요소를 명명 또는 나열하는 것을 의미하며, 요일이나 나침반 방향 등에 사용되는 Verse 타입입니다.
enum
은 키워드입니다.
escape character(이스케이프 문자)
Verse의 이스케이프 문자는 백슬래시() 이며, string 리터럴 내에 이스케이프 시퀀스를 생성합니다. 이외에는 다르게 해석되는 제어 문자를 변경하는 데 사용됩니다. 예를 들어 string에 { }처럼 용도가 미리 정해진 문자를 포함해야 하는 경우, string 내의 해당 문자 앞에 이스케이프 문자 '' 를 추가해야 합니다. 그러면 텍스트에서
'\\{\\}'
가 {}로 렌더링 됩니다.
event(이벤트)
이벤트는 식별할 수 있는 액션 또는 현상입니다. 예를 들어 버튼 장치에는 플레이어가 버튼과 상호작용할 때마다 트리거되는 InteractedWithEvent가 있습니다. 이벤트 핸들러로 등록하면 특정한 이벤트가 발생할 때마다 행동을 정의할 수 있습니다.
exclusive effect(익스클루시브 이펙트)
일부 이펙트는 익스클루시브 이펙트 로 간주되며, 애디티브 이펙트를 추가할 수는 있지만 다른 익스클루시브 이펙트와는 함께 사용할 수 없습니다. 익스클루시브 이펙트에는
computes
,varies
,transacts
가 포함되며, 애디티브 이펙트에는suspends
,decides
가 포함됩니다.
execute(실행)
프로그램을 실행하는 일입니다.
execution(실행)
컴퓨터가 프로그램을 해석하여 해당 프로그램에서 인스트럭션을 수행하는 프로세스입니다.
expose(노출)
UEFN에서 프로퍼티가 Verse 코드의
editable
어트리뷰트에 할당되면 노출 됩니다. 노출된 프로퍼티는 UEFN 인터페이스에서 직접 편집 가능합니다. 편집 가능도 참조하세요.
expression(표현식)
표현식이란 평가했을 때 결과가 도출되는 코드(값과 함수의 조합)의 최소 단위입니다.
아래 예시는
if ... else
표현식으로, 지정된 기준을 값이 충족할 경우와 그렇지 못할 경우 각각 다른 결과가 도출됩니다.if (a > 5): “Big!” else “Small!”
Verse에서는 리터럴부터 함수 호출 또는 컨트롤 플로까지 모두 표현식입니다.
명령문의 경우에는 독립형 명령이며 결괏값을 가지지 않습니다. Verse에서는 모든 것이 표현식이며, 값을 평가할 수 있는 명령문과 표현식 간에 구분이 없습니다.
자세한 내용은 표현식을 참고하세요.
F
f
float를 참고하세요.
fail(실패)
Verse에서는 기본적으로 사용자가 작성하는 모든 코드는 실패할 수 없습니다. 이는 함수가 부울 또는 옵션을 반환하지 않고,
<decides>
를 사용하여 값, void 또는 실패를 반환한다는 것을 의미합니다.
failable expression(실패 가능 표현식)
실패 가능 표현식은 성공하여 값을 생성할 수도, 실패하여 아무 값도 생성하지 못할 수도 있는 표현식입니다. 실패 가능 표현식의 예로는 배열에 대한 인덱싱이 있습니다. 유효하지 않은 인덱스는 실패하기 때문입니다. 또한 두 가지 값을 비교하는 것 등의 연산자도 예로 들 수 있습니다.
failure(실패)
Verse에서 실패는 단순한 부울 값 이상의 의미를 갖습니다. 실패는 컨트롤 플로를 구동합니다. 실패 가능 표현식은 성공하여 값을 도출하거나 실패하여 아무 값도 반환하지 않을 수 있으며, 다른 프로그래밍 언어와 달리 실패 가능 표현식은 컨트롤 플로가 부울 값을 통해 결정되는 실패 컨텍스트에서만 허용됩니다.
failure context(실패 컨텍스트)
실패 컨텍스트는 실패할 수도 있는 표현식을 실행하는 것이 허용되는 컨텍스트입니다. 이 컨텍스트는 표현식이 실패할 경우 어떤 일이 발생할지 정의합니다.
field(필드)
멤버를 참고하세요.
final
fire-and-forget(파이어 앤 포겟)
파이어 앤 포겟이란 완료되는 시점이나 성공적으로 완료되는지 여부를 상관하지 않아도 되는 표현식을 가리킵니다. 이런 표현식은 매우 드물게 사용됩니다.
부동 소수점 숫자
다양한 프로그래밍 언어에서 분수 값이나 0.5 또는 1.0처럼 소수점을 갖는 숫자를 포함하는 변수를 정의하는 데 사용하는 용어입니다. float 변수 선언을 사용하여 생성된 숫자는 소수점 양옆에 숫자가 표기됩니다.
for expression(for 표현식)
for
표현식은 경우에 따라 for 루프 라고도 하며, loop 표현식과 같지만for
표현식은 컨스트레인되는 점만 다릅니다. 즉,for
루프가 실행되기 전에 반복작업 횟수가 확인되며 루프의 종료 시점이 자동으로 결정됩니다. 자세한 내용은 for를 참고하세요.
frame(프레임)
프레임은 컴퓨터 모니터나 TV에서 완전히 렌더링된 이미지이며, 모든 시점의 시뮬레이션을 나타냅니다. 프레임은 보통 단계적이기 때문에 시뮬레이션 업데이트(또는 틱)와 같은 뜻으로 사용되기도 하지만, 새로운 프레임은 시뮬레이션 업데이트와 다른 속도(더 높거나 낮은 빈도)로 발생할 수 있습니다. 프레임 레이트 또는 초당 프레임(frames per second, fps)이란 초당 표시되는 프레임의 수를 말합니다.
function(함수)
루틴 이라고도 하는 함수 는 재사용 가능한 코드로, 액션을 수행하거나 입력에 기반하여 출력을 생성하는 인스트럭션을 제공합니다.
함수를 정의하려면 고유한 이름, 결과로 예상되는 정보의 타입, 호출 시 함수가 수행할 기능의 세 가지 핵심 부분을 제공해야 합니다.
함수의 기본 구문은 다음과 같습니다.
name() : type = codeblock
function call(함수 호출)
함수를 평가하는 표현식으로, 호출 또는 인보크한다고 합니다. 함수 호출은 함수에
decides
이펙트가 있는지 여부에 따라FunctionName()
및FunctionName[]
과 같은 두 가지 형태를 가질 수 있습니다. 함수 호출 표현식의 결과 타입은 함수 시그니처에서 정의됩니다.
function signature(함수 시그니처)
함수 시그니처는 함수 이름(식별자), 함수의 입력(파라미터), 출력(결과)을 선언합니다. Verse 함수는 함수의 사용 또는 구현 방식을 지정하는 지정자도 가질 수 있습니다.
functional programming(함수 프로그래밍)
함수의 사용에 초점을 맞춘 선언형 프로그래밍의 한 유형입니다. 함수 프로그래밍의 목표는 부작용을 줄임으로써 테스트와 디버깅을 더 수월하게 하는 것입니다. 함수 프로그래밍 언어의 한 가지 예로는 Haskell을 들 수 있습니다.
future(퓨처)
실행이 시작되었지만 취소되지 않고 중단된 작업입니다. 미래의 어느 시점에는 완료되므로 퓨처라고 합니다.
G
game loop(게임 루프)
게임 루프는 플레이어가 컨트롤러 또는 마우스와 상호작용하여 발생하는 입력에 반응하여 반복적으로 실행되는(루프) 코드입니다. 반복적으로 게임 스테이트를 업데이트하며, 예를 들어 플레이어가 버튼을 눌러서 불을 켜는 행동처럼 게임 상태에 영향을 주는 경우 이를 플레이어에게 보여주는 출력을 제공합니다. 일반적으로 플레이어가 목표에 도달하는 등 게임이 완료 상태에 도달하거나 플레이어가 목표에 도달하기 전에 제한 시간이 경과하여 실패 상태에 도달하면 루프가 종료됩니다.
game state(게임 스테이트)
게임 또는 기타 시뮬레이션의 스테이트입니다. 시스템을 설명하는 모든 데이터 값으로 구성됩니다. 상수 및 변수 값이 시스템 스테이트를 결정합니다.
generator(제너레이터)
제너레이터는 값 시퀀스를 한 번에 하나씩 생성하고, 시퀀스에 포함된 값에 이름을 부여합니다.
H
handler(핸들러)
핸들러는 바인딩된 이벤트에 반응하여 호출되는 함수입니다. 예를 들어 함수를 버튼의 InteractedWithEvent 에 바인딩하면 플레이어가 해당 버튼과 상호작용할 때마다 해당 이벤트와 연관된 핸들러가 호출됩니다.
hard-coded(하드 코딩)
하드 코딩된 데이터는 변수에 할당되지 않고 코드에 직접 기록됩니다. 이 경우 코드의 유연성이 떨어지고 업데이트가 어려워지지만, 하드 코딩이 필요한 경우가 있습니다.
hexadecimal(16진법)
Verse에서는 10진법 대신 16진법 숫자 체계를 사용하여 integer를 표시할 수 있습니다. 여기서 16진수 값은 숫자 0~9와 알파벳 A~F로 표현됩니다. 예를 들어 0x7F는 127과 같은 값이고, 0xFACE는 64206와 같은 값입니다.
16진법은 integer를 표현하는 또 다른 방법입니다.
hierarchical(계층형)
등급, 중요도 또는 제어 측면에서 명확한 레벨 또는 계층구조를 갖는 것을 가리킵니다. 일반적인 계층형 관계로는 부모/자손 또는 클래스/서브클래스가 있습니다.
I
IDE
'Integrated Development Environment(통합 개발 환경)'의 약어로, 프로그램 개발 및 디버깅을 위한 유저 인터페이스를 제공하는 소프트웨어입니다.
if expression(if 표현식)
if
표현식을 사용하면 프로그램의 플로를 변경하는 결정을 내릴 수 있습니다. 다른 프로그래밍 언어와 마찬가지로 Verse의if
표현식도 조건부 실행을 지원하지만 Verse에서는 조건이 성공과 실패를 통해 결정을 주도합니다.
immediate(즉시)
즉시 표현식은 딜레이 없이 평가를 수행합니다. 즉, 평가가 현재 시뮬레이션 업데이트 내에서 완료됩니다.
imperative programming(명령형 프로그래밍)
프로그램이 실행되는 방법을 프로그램에서 단계별로 설명하는 패러다임입니다. 명령형 프로그래밍 언어의 한 가지 예로는 C를 들 수 있습니다.
index(인덱스)
인덱스는 항목의 시퀀스 내 위치를 숫자로 나타냅니다. 시퀀스는 목록, 문자 string 또는 임의의 값 시퀀스가 될 수 있습니다.
인덱스는 제로 베이스 카운팅을 사용합니다. 즉 인덱스의 첫 번째 위치는 0, 다섯 번째 위치는 4입니다.
infer(추론)
상수를 생성할 때와 같이 타입을 명시적으로 지정할 필요가 없는 경우가 있습니다. 예를 들어
MyConstant := 0
에서는 할당된 값이 integer이므로 MyConstant의 타입도 integer로 추론됩니다. 이런 경우에 타입이 추론된다고 합니다.
inheritance(상속)
Verse에서는 다른 클래스의 필드 및 메서드를 추가 또는 수정하여 또 다른 클래스의 정의를 확장하는 클래스를 생성할 수 있습니다. 한 클래스가 다른 클래스에서 정의를 상속하기 때문에 이것을 보통 서브클래스 또는 상속 이라고 부릅니다.
instantiate(인스턴스화)
데이터 구조체의 인스턴스 또는 값이나 클래스 또는 구조체 같은 타입을 생성하는 것을 가리킵니다. 아키타입 인스턴스화도 참고하세요.
integer
integer란 소수 자리가 없는 정수를 가리키며 양수, 음수, 0이 될 수 있습니다.
interface(인터페이스)
인터페이스란 일종의 타입으로, 해당 인터페이스를 구현하는 클래스와의 상호작용 방식에 대한 계약을 제공합니다. 인터페이스는 인스턴스화될 수 없지만, 클래스는 인터페이스에서 상속하고 인터페이스의 메서드를 구현할 수 있습니다.
내부 클래스
epic_internal
로 표시된 클래스로, 클래스의 인스턴스를 만들 수 없다는 뜻입니다. API를 통해서만 내부 오브젝트에 액세스할 수 있습니다.
interpolation(보간)
알려진 값 사이에 배치할 새 값을 블렌딩하는 것을 가리킵니다.
interpreter(인터프리터)
프로그램을 줄 단위로 분석 및 실행하는 프로그램입니다.
invocation time(인보크 시간)
표현식을 평가하는 데 걸리는 시간입니다. 즉시 호출은 사실상 시간이 걸리지 않습니다. 비동기화 표현식은 즉시 완료될 수도, 지연을 두고 완료될 수도 있습니다.
invoke(인보크)
호출을 참고하세요.
is-a relationship(is-a 관계)
부모 클래스와 자손 클래스 간의 관계를 'is-a' 관계 라고 합니다. is-a 관계에 있는 자손 클래스는 부모 클래스에서 상속합니다.
iterate(반복작업)
시퀀스에 포함되는 각 엘리먼트에 대해 코드를 실행하는 것입니다.
J
K
key-value pair(키-값 쌍)
키가 값에 연결되는 경우 둘을 합쳐 키-값 쌍이라고 합니다. 이때 해당 키를 사용하여 값을 조회할 수 있습니다.
L
lifespan(수명)
수명을 참고하세요.
lifetime(수명)
오브젝트의 생성과 소멸 사이에 걸리는 시간으로, 'lifespan'이라고도 합니다.
linked list(연결된 목록)
각 엘리먼트가 목록의 다음 엘리먼트에 대한 레퍼런스를 저장하는 선형 데이터 구조입니다.
linked list node(연결된 목록 노드)
연결된 목록의 각 엘리먼트를 노드라고 합니다. 노드는 일부 데이터와 목록 내 다음 노드에 대한 레퍼런스를 저장하는 컨테이너입니다.
literal(리터럴)
Verse 프로그래밍 언어에서 숫자 또는 문자 같은 고정된 값입니다. 예를 들어 1은 integer 리터럴입니다.
locale
프로그래밍에서 로캘(locale) 이란 사용자의 언어, 지역, 유저 인터페이스의 다양한 부분을 정의하는 파라미터의 집합입니다. Verse에서
locale
은 구체적으로message
를 현지화해야 할 때 컨텍스트를 설정하는 타입으로, 로캘에 기반하는 텍스트와 숫자의 언어에 영향을 미칩니다.
logic
Verse에서는
logic
을 부울 로직 값의 타입인true
와false
로 사용합니다. Verse에서는 플로 컨트롤을 정하기 위해logic
타입의 스테이트를 테스트하기보다 실패 컨텍스트와 실패 가능 표현식의 조합을 사용하곤 합니다.
loop(루프)
loop
는 코드 블록 내에서 표현식을 반복합니다.loop
표현식은 루프를 나갈 때까지 영원히 반복됩니다. 동시 프로그래밍에서는 이를 수용 가능할 때가 있습니다. 예를 들면 다음과 같습니다.loop: Sleep(1.0) # Sleep(1.0)은 다음 표현식으로 진행하기 전에 1초 대기합니다. Platform.Hide() Sleep(1.0) # Sleep(1.0)은 다음 표현식으로 진행하기 전에 1초 대기합니다. Platform.Show() # Sleep(1.0)을 다시 호출하면서 루프가 즉시 재시작합니다.
이 코드 블록은 네 개의 표현식을 영원히 반복합니다. 1초 대기했다가 플랫폼을 사라지게 하고, 1초 더 대기했다가 플랫폼을 다시 표시합니다.
루프가 게임 개발에서 사용되는 사례는 루프로 사라지는 플랫폼을 참고하세요.
M
map(맵)
맵은 다른 값과 관련된 값, 즉 키-값 쌍을 저장할 수 있는 컨테이너입니다. 키-값 쌍은 키 타입이 comparable인 한 어떤 타입의 조합이든 될 수 있습니다. 맵의 엘리먼트는 맵에 키-값 쌍을 삽입한 순서를 따르며, 해당하는 고유 키로 엘리먼트에 액세스할 수 있습니다. 컨테이너 타입도 참고하세요.
member(멤버)
Verse의 클래스, 구조체, 인터페이스 또는 모듈처럼 복합 데이터 구조의 하위 파트인 명명된 변수 또는 함수입니다. 멤버 변수는 필드 라고도 부르며, 멤버 함수는 메서드 라고도 부릅니다.
message
Verse에서
message
는 locale에 독립적인 텍스트를 포함할 수 있는 타입입니다.string
값으로message
변수를 초기화할 때 이 스트링은 해당 메시지에 대해 디폴트 텍스트 및 언어가 됩니다.
metaverse environment(메타버스 환경)
지속적이며 전 세계적으로 일관된 리얼타임 3D 월드를 가리킵니다. 수백만 명의 사용자가 동시에 연결되고, 복잡하고 상호 의존적인 사용자 작성 코드가 동시에 실행되는 런타임 환경입니다.
module(모듈)
Verse 모듈 은 재배포되거나 다른 코드가 종속될 수 있는 아토믹 유닛 코드로, 시간 경과에 따라 종속성을 유지하면서 확장할 수 있습니다. Verse 파일에 모듈을 임포트하여 다른 Verse 파일의 코드 정의를 사용할 수도 있습니다.
자세한 내용은 모듈과 경로를 참고하세요.
mutual exclusion(상호 배타성)
여러 프로세스가 동일한 코드 세그먼트에 액세스하려고 할 때 해당 세그먼트는 중요 섹션 이 됩니다. 상호 배타성은 두 개의 프로세스가 중요 섹션에 동시에 액세스하지 못하도록 방지합니다.
N
NaN
값이 숫자가 아님(Not a Number)을 나타냅니다.
native(네이티브)
native
는 엘리먼트의 정의 세부 사항이 C++로 구현되었다는 것을 나타냅니다. 이 지정자는 개발자가 사용할 수 있는 C++ 정의를 자동으로 생성할 수 있습니다.native
지정자는 클래스, 인터페이스, 열거형, 메서드, 데이터에서 사용됩니다.
native_callable
인스턴스 메서드가 C++로 구현된 네이티브면서 다른 C++ 코드로 호출될 수 있다는 것을 나타냅니다. 이 지정자는 인스턴스 메서드에서 사용됩니다. 이 지정자는 서브클래스로 전파되지 않으므로, 이 지정자가 있는 메서드를 오버라이드할 때 정의에 추가하지 않아도 됩니다.
nested(중첩)
코드가 중첩되어 있다는 것은 한 코드 블록이 더 넓은 기능을 수행하는 다른 코드 블록 내에 포함되어 있다는 것을 의미합니다.
no-rollback
이 이펙트는 함수의 변경 가능 데이터 읽기 및 쓰기가 실행 취소될 수 없다는 것을 나타냅니다. 즉, 해당 함수는 실패 이벤트에서 롤백 행동을 가진 실패 컨텍스트에서 호출될 수 없습니다.
node(노드)
연결된 목록 노드를 참조하세요.
O
object(오브젝트)
클래스의 인스턴스는 오브젝트입니다. 인스턴스는 해당 클래스 타입으로 정의되는 동일한 행동을 갖지만 실제 값이 있습니다.
인스턴스 와 오브젝트 는 의미가 동일한 용어입니다.
object-oriented programming(오브젝트 지향 프로그래밍)
오브젝트 지향 프로그래밍, 즉 OOP는 클래스 및 오브젝트 개념에 의존하는 프로그래밍 패러다임입니다.
open world language(오픈 월드 언어)
명확하게 정의된 하위 타입 규칙에 따라 인터페이스 호환성 및 지속적인 데이터 호환성을 손상시키지 않고 다양한 사용자 및 조직이 작성한 상호 종속 모듈이 시간 경과에 따라 확장할 수 있도록 지원하는 언어입니다.
operand(피연산자)
연산이 수행되는 수입니다. 예를 들어
1 + 2
표현식에서는+
가 연산자이고1
과2
가 피연산자입니다.
operation(연산)
프로그램에서 특정 작업을 완료하기 위해 수행하는 행동입니다. 컴퓨터 연산의 네 가지 기본 그룹은 입력, 처리, 출력, 저장입니다. 연산은 표현식의 한 유형이기도 합니다.
operator(연산자)
동작 또는 프로세스를 나타내는 기호입니다. 예를 들어
1 + 2
에서는+
가 연산자입니다.
operator precedence(연산자 우선순위)
Verse에서 여러 연산자가 나오는 경우 따라야 하는 내장된 평가 순서를 가리킵니다. 예를 들어 동일한 표현식에서 여러 연산자가 사용되는 경우, 평가 순서가 중요해집니다.
예를 들어
1 + 2 * 3
은3 * 3
으로 평가되지 않습니다. 덧셈보다 곱셈의 우선순위가 높기 때문입니다.
option(옵션)
Verse에서 옵션은 타입에 대해 값을 하나 포함하거나 아무 값도 포함하지 않을 수 있습니다.
overload(오버로드)
함수 또는 연산자를 오버로드한다는 것은 동일한 함수명 또는 연산자 기호가 서로 다른 파라미터를 가질 수 있다는 것을 의미합니다. 예를 들어 한 3D 벡터가 다른 3D 벡터와 (1,2,3) 등으로 같다고 한다면 이 진술은 매우 명확합니다. 하지만 등호 연산자를 사용하여 3D 벡터가 1과 같은 단일 숫자라고 알려줄 수도 있습니다. 이 경우 3D 벡터는 (1,1,1)로 설정될 수 있지만, 파트를 오버로드하면 서로 다른 파라미터를 갖춘 '3D Vector =' 연산자가 다수 존재하게 됩니다. 이 경우 프로그래밍 언어에서는 어떤 것을 사용해야 할지 컨텍스트를 살펴봐야 합니다.
override(오버라이드)
Verse에서는 수퍼클래스에서 필드를 오버라이드 하여 초기 값을 할당할 수 있습니다. 예를 들면 다음과 같습니다.
tank := class(player_character): StartingShields<override> : int = 100 MaxShields<override> : int = 200 AllowOvershield<override> : logic = true DamageReduction : int = 50 CreateTankPlayerCharacter() : tank = return tank{}
위의 예시에서
tank
클래스는 디폴트 클래스 값과 구분되는StartingShields
,MaxShields
,AllowOvershield
값을 가지게 됩니다.메서드 값도 동일한 방식으로 오버라이드할 수 있습니다.
자세한 내용은 서브클래스를 참고하세요.
P
paradigm(패러다임)
무언가의 전형적인 패턴 또는 모델입니다. 프로그래밍에서 패러다임은 프로그래밍 언어가 조직되는 방식입니다. 프로그래밍 언어의 네 가지 주요 패러다임은 다음과 같습니다.
Verse처럼 여러 패러다임에 해당하는 언어도 있습니다.
parallel(병렬)
동일한 물리적 시간의 기간 동안 여러 계산이 별도의 프로세서에서 실행되거나 해서 동시에 실행되는 것을 가리켜 병렬이라고 합니다.
parse(파싱)
컴퓨터 공학에서 파싱이란 일련의 명령, 일반적으로는 프로그램을 비교적 쉽게 처리할 수 있는 컴포넌트로 분리하여 올바른 구문에 대하여 분석한 다음 각 컴포넌트를 정의하는 태그에 어태치하는 것을 가리킵니다.
parser(파서)
코드를 파싱하는 프로그램입니다.
path(경로)
Verse 경로는 웹 도메인의 개념에서 차용한 것으로, 다양한 요소를 식별하기 위한 글로벌 네임스페이스를 제공합니다. 이 경로는 지속적이고 고유하며 모든 Verse 프로그래머가 검색할 수 있습니다.
Perforce
Perforce(P4)는 리비전 관리 (소스 코드 관리 또는 버전 관리라고도 부름)를 제공하는 소프트웨어 툴입니다. 소프트웨어 코드의 변경 사항을 추적하고 관리할 수 있습니다. 여러 프로그래머가 팀을 이뤄 같은 프로젝트를 진행할 때 유용합니다. 누군가 실수하더라도 다른 모든 사람의 작업을 방해하지 않고 버전 관리를 통해 코드의 이전 버전과 비교하여 문제를 찾고 정정할 수 있기 때문입니다.
playspace(플레이스페이스)
플레이어나 팀 또는 특정 플레이어의 팀 배열을 가져오는 데 사용할 수 있는 Verse API 모듈입니다. 플레이어 추가 또는 플레이어 제거 이벤트를 등록하게 해 줍니다.
pointer(포인터)
포인터는 지정된 값 타입을 보유할 수 있는 변경 가능 '박스'를 레퍼런스할 수 있게 해 줍니다. 포인터로는 해당 박스의 특정 값을 변경할 수 있습니다. 값과 비교됩니다.
pointer variable(포인터 변수)
포인터 변수는 값이 저장된 메모리 위치를 가리킵니다. 포인터 변수를 생성한 후에는 포인터 변수의 메모리 위치를 변경할 수 없지만 해당 메모리 위치에 저장된 값을 변경할 수는 있습니다.
polling(폴링)
폴링은 클라이언트 프로그램이 동기화된 작업을 통해 외부 장치의 상태를 능동적으로 샘플링하는 것을 가리킵니다. 입력/출력(I/O) 측면에서 가장 흔히 사용되며, 폴링된 I/O 또는 소프트웨어 기반 I/O라고도 합니다.
polymorphic(다형성)
다형성(Polymorphic) 은 많다는 의미의 poly- 와 형태를 의미하는 -morph 를 결합한 말입니다. 다형성 행동은 한 변수가 서로 다른 조건에서 서로 다른 값을 가질 수 있을 때 발생합니다.
predicate(술어)
Verse에서 술어는 성공 또는 실패 여부를 결정합니다.
preemption(선점)
나중에 재개하기 위해 실행 중인 작업을 임시로 중단하는 것을 선점 이라고 합니다. 일반적으로는 작업의 도움이나 협력 없이 외부 스케줄러에 의해 수행됩니다.
primitive type(프리미티브 타입)
프리미티브는 다른 타입에서 생성되지 않은 모든 타입입니다. 즉, 프리미티브는 복합이 아니며 더 이상 분해할 수 없습니다. 내장 프리미티브 타입에는
void
,logic
,int
,float
,rational
,char
등이 있습니다. 프리미티브는 Verse 언어에 내장되어 있습니다.컨테이너 타입과 비교됩니다.
program(프로그램)
프로그램은 컴퓨터에 무언가를 어떻게 수행해야 할지 지시하는 인스트럭션 세트입니다. 모든 프로그램의 기본은 입력을 받고 출력을 반환하는 방식을 컴퓨터에 알려주는 것입니다.
프로그램은 문제를 해결합니다. 하지만 프로그램은 매우 직설적이기 때문에 지니와 계약을 맺는 것과 같습니다. 지니인 프로그램은 사용자의 요청을 정확히 들어줍니다. 완전히 정확히요. 프로그래머가 수신될 수 있는 입력과 그로 인한 출력을 정확하게 설명하지 못하고 일어날 일을 가정할 때 오류가 발생합니다.
programming language(프로그래밍 언어)
컴퓨터 프로그램을 작성하는 데 사용되는 형식 언어입니다. 프로그래밍 언어는 그 수가 많으며 자체 규칙도 갖추고 있습니다. 예를 들어 시각적 프로그래밍 언어인 Scratch는 인터랙티브 스토리, 게임 및 애니메이션 개발에 사용되며, 텍스트 기반 언어인 C++는 게임 개발에 흔히 사용됩니다. Verse는 개발 툴을 사용하는 방법을 배워보려는 크리에이터를 위해 에픽게임즈에서 개발한 프로그래밍 언어입니다.
propagate(전파)
함수에서 전파는 실패 시에 일어나는 일을 호출자가 처리할 필요가 없는 경우에 발생합니다. 예를 들어
decides
이펙트를 갖춘 함수는decides
이펙트를 갖춘 다른 함수에 의해 호출될 수 있습니다. 이 경우 호출자를 호출한 함수는 실패를 처리해야 합니다.
pseudocode(의사코드)
의사코드(pseudocode)는 알고리즘의 역할에 대해 프로그래밍 언어가 아닌 쉬운 말로 작성한 자세한 설명을 가리킵니다. 의사(pseudo-) 라는 말은 진짜가 아니라는 의미이므로, 의사코드는 곧 코드를 모방하는 가짜 코드라고도 할 수 있습니다. 의사코드는 알고리즘이 해야 할 일을 파악하는 데 유용합니다.
대략적인 개요라고 생각해도 좋습니다. 일반적으로 의사코드는 실제 코드를 작성하기 전에 프로그램의 큰 부분이나 복잡한 부분의 계획을 수립할 때 작성합니다.
pure(순수)
동일한 입력이 주어지면 함수에서 항상 정확히 동일한 출력을 제공하며, 부작용(변경 가능 변수에 대한 쓰기, 입출력 이펙트 등)이 없다고 선언합니다.
Q
qualify(한정)
식별자의 '재사용'을 허용하는 스코프 내에서 식별자를 정의합니다. 예를 들어 'cat'으로 명명된 상수가 있다고 가정할 경우, 'sarah.cat'으로 명명된 클래스 필드에 동일한 이름을 사용할 수 있습니다. 둘 모두 이름에 'cat'이 포함되지만, 'sarah.cat'은 한정된 것입니다.
R
race
race
표현식에서는race
블록 내의 모든 표현식이 동시에 실행되지만, 표현식 하나가 완료되는 즉시 나머지 표현식이 모두 취소되고race
표현식은 제어를 양도합니다.race
는 구조적 동시성 표현식입니다.
race condition(경합 조건)
경합 조건은 순서대로 수행해야 올바르게 완료되는 두 개 이상의 작업을 프로그램이 동시에 수행하려고 시도할 때 발생합니다.
RAII
RAII는 Resource Acquision Is Initialization 의 약어로, 리소스를 보다 효과적으로 관리하기 위해 오브젝트가 초기화와 종료(finalization) 사이에만 리소스를 획득하는 것을 가리킵니다.
raise(발생)
함수가 신호를 발신(emit)하면 이벤트가 발생됩니다. 버튼 상호작용 등 이벤트 발생 시 영향을 받는 요소가 알림을 받으며 모든 이벤트 핸들러가 호출됩니다.
range expression(범위 표현식)
범위 표현식은 두 지정 값과 그 사이의 모든 숫자를 포함하며,
..
를 활용하여1..5
와 같이 표기합니다. 범위 표현식은 특정 위치, 예를 들어for
표현식 등에서만 사용할 수 있습니다.
rational
int
및float
와 함께 Verse에서 지원되는 세 가지 주요 숫자 타입 중 하나입니다. rational 타입은 integer 나눗셈의 결과로만 표시되며,Ceil()
를 사용하여 값을 올리거나Floor()
를 사용하여 값을 내려서 값을 integer로 다시 변환해야 합니다.
rational number(유리수)
두 개의 integer를 사용하여 단순한 분수로 표시할 수 있는 숫자입니다. 예를 들면 1.75는 7/4로 표시할 수 있지만, 2(√2)의 제곱근은 분수로 표시할 수 없으며, 따라서 이는 무리수로 간주됩니다. 3.14159로 시작되며 숫자가 무한으로 나열되는 원주율도 무리수의 한 예입니다.
recursion(재귀)
재귀는 함수가 스스로를 호출하는 것을 가리킵니다.
refactor(리팩터)
함수 기능을 변경하지 않고 코드의 구조를 변경하는 것을 리팩토링이라고 합니다. 예를 들어, 프로그램 전체에서 여러 번 반복되는 코드 블록을 함수 호출로 리팩토링할 수 있습니다. 리팩토링은 코드의 가독성을 높이고 복잡성을 줄이는데 도움이 되며, 코드의 동작 방식을 변경하지 않습니다.
REPL
'Read-Evaluate-Print Loop'의 약어인 REPL은 코드를 입력하고 읽어 평가를 거친 뒤 그 결과를 확인할 수 있는 컴퓨터 환경입니다. REPL을 활용하면 모든 것을 그대로 유지하면서 언어를 살펴보고 작동 원리 또는 실패 원리를 확인할 수 있습니다.
return
프로그램이 서브루틴을 떠나 반환 어드레스로 돌아가도록 지시하는 표현식입니다. 반환 어드레스는 서브루틴이 호출된 곳입니다.
함수 코드 블록의 마지막 표현식에서 적절한 값을 생성하는 대신,
return
표현식을 사용하여 명시적으로 결과를 지정할 수도 있습니다. return 표현식이 실행되면 함수의 코드 블록에서 즉시 빠져나옵니다. 즉, return 표현식을 다른 코드 앞에 배치한 경우 그 뒤의 코드는 실행되지 않습니다.
routine(루틴)
함수를 참고하세요.
runtime(런타임)
게임, 시뮬레이션, 애플리케이션을 실행하는 데 소요되는 시간을 가리킵니다. 컴파일에 소요되는 시간을 가리키는 컴파일 타임이나 개발, 컴파일, 디버깅에 소요되는 시간을 가리키는 개발 타임과 비교됩니다.
런타임에 발생하는 사항과 컴파일 타임에 발생하는 사항의 차이는 구별하는 것이 일반적입니다.
rush
rush
표현식에서는 rush 블록 내의 모든 표현식이 동시에 실행되지만, 표현식 하나가 완료되자마자 rush 표현식은 제어를 양도하고 다른 표현식은 독립적으로 계속 실행됩니다.rush
는 구조적 동시성 표현식입니다.
S
scope(스코프)
스코프 는 프로그램에서 이름과 값의 연관성이 유효하고 해당 값을 레퍼런스하는 데 그 이름을 사용할 수 있는 부분을 가리킵니다. 예를 들어 함수 내에서 생성하는 상수 또는 변수는 해당 함수의 컨텍스트 내에서만 존재합니다. 즉, 오브젝트의 수명은 해당 오브젝트가 생성된 스코프 내로 제한되며 코드 블록 밖에서는 사용될 수 없습니다.
self variable(self 변수)
Self
는 Verse의 특수 식별자로, 클래스 메서드에서 해당 메서드가 호출되는 클래스의 인스턴스를 레퍼런스하도록 사용될 수 있습니다.Self
를 사용하지 않고 메서드가 호출된 인스턴스의 다른 필드를 레퍼런스할 수도 있지만 인스턴스 전체를 레퍼런스하려면 반드시Self
를 사용해야 합니다.
semantic error(시맨틱 오류)
컴파일러 오류를 참고하세요.
semaphore(세마포어)
세마포어는 뮤텍스와 비슷하지만, 뮤텍스가 가용 리소스에서 다른 스레드를 잠그는 반면, 세마포어는 해당 리소스가 현재 사용 중이라는 신호만 보낸다는 점이 다릅니다.
set
프로그램이 실행되는 동안 변수 값을 변경하는 데 사용할 수 있는 키워드로,
set name = value
구문을 사용합니다.set
는 키워드이고,name
은 변경할 변수의 이름이며,value
는 변경된 결과입니다.이것을 대입이라고 합니다.
signed integer(부호 있는 integer)
부호 있는 integer란 양수, 음수, 0을 포함할 수 있는 값입니다. 부호 있는 integer라고 부르는 이유는 그 수가 양수인지 음수인지를 나타내기 위해 맨 왼쪽에 + 또는 - 부호를 사용할 수 있기 때문입니다. 부호 없는 integer는 양수 또는 0만 될 수 있습니다.
simulation(시뮬레이션)
시뮬레이션은 다른 시스템을 사용하여 한 시스템의 행동 또는 특징을 나타냅니다. Verse에서는 시간의 흐름에 따라 실행되는 컴퓨터 프로그램입니다. 이 용어는 시뮬레이션의 한 유형인 게임 보다 포괄적입니다. 시뮬레이션에는 게임 외에도 인터랙티브 경험, 예술, 의료 시각화, 건축 시각화, AI, 운전/비행/군사 시뮬레이션 등이 있습니다. 시뮬레이션은 가상현실(Virtual Reality, VR) 및 증강현실(Augmented Reality, AR)과 같은 다양한 매체에서 사용할 수 있습니다.
simulation update(시뮬레이션 업데이트)
시뮬레이션에 반복적으로 발생하는 로직, 행동, 기타 계산의 라운드, 단계, 증가입니다. 종종 업데이트 라고 줄여 부르며, 틱 또는 프레임 과 동의어로 사용되기도 합니다. 일반적으로 시뮬레이션 업데이트에는 상수 또는 변수일 수 있는 경과 시간이 있습니다. 이를 종종 델타 타임(delta time) 이라고 부르며, 실제로 경과된 시간과는 일치할 수도 있고 일치하지 않을 수도 있습니다. 예를 들어 시뮬레이션 업데이트는 실시간에 비해 빠르거나, 느리거나, 실시간과 같은 속도일 수 있습니다.
시뮬레이션 업데이트는 프레임 렌더링과 1:1 단계로 대응되는 경향이 강하며, Verse에서는 이것이 디폴트입니다. 하지만 시뮬레이션 업데이트는 프레임보다 빈도가 높거나 낮을 수 있습니다. 시뮬레이션된 오브젝트의 변경을 여러 번 반복작업하는 중에 온라인 게임 클라이언트가 서버 또는 피직스 시스템과 동기화되지 않는 경우를 예로 들 수 있습니다. 또한 시뮬레이션이 시각적으로 전혀 렌더링되지 않는 경우도 있습니다.
snippet(스니펫)
코드 스니펫을 참고하세요.
spawn expression(spawn 표현식)
spawn
표현식은 비동기화 함수를 시작합니다. 생성을 따라오는 표현식은spawn
표현식의 완료를 기다리지 않고 즉시 실행합니다.spawn
은 완료될 때까지 독립적으로 계속됩니다.
speculative execution(추측 실행)
Verse는 실패 컨텍스트를 활용하여 커밋하지 않고도 액션을 시도해볼 수 있게 해줍니다. 이것을 추측 실행 이라고 합니다. 표현식이 성공하면 변수 값이 변경되는 것과 같은 표현식의 이펙트가 커밋됩니다. 표현식이 실패하면 해당 표현식이 아예 없었던 것처럼 표현식 이펙트가 롤백됩니다.
splat(스플랫)
튜플이 함수의 단일 엘리먼트로 사용되는 경우에는 해당 함수가 튜플의 각 엘리먼트와 함께 개별적으로 호출된 것처럼 보이게 됩니다. 이를 가리켜 튜플 확장 또는 스플랫이라고 부릅니다.
standard library(표준 라이브러리)
Verse에서 사용할 수 있는 일련의 함수, 상수 및 기타 언어 정의입니다. 이 라이브러리는 일반적인 프로그래밍 요구 사항에 대한 구현을 제공합니다. 수학 함수처럼 프로그래머가 자주 사용하는 리소스입니다.
statement(명령문)
결괏값을 갖지 않는 독립형 명령문입니다. Verse는 명령문을 사용하지 않습니다. 대신 표현식을 사용합니다.
STM
Software Transactional Memory(STM)는 동시 프로그래밍에서 공유 메모리에 대한 액세스를 제어하기 위한 용도의 데이터베이스 트랜잭션과 유사한 동시성 제어 메커니즘입니다. 궁극적으로 Verse는 STM에 초점을 맞추게 될 것으로 예상됩니다. 여러 이유가 있지만, 특히 STM은 대규모 배포 시뮬레이션의 퍼포먼스를 향상하기 때문입니다.
string
string은 Verse의 리터럴 타입으로, 두 따옴표 사이의 모든 문자는 string 리터럴이 됩니다. 예를 들어 “Hello world”는 일반 string입니다. Verse의 string에는 글자, 숫자, 구두점, 공백 및 이모지까지 포함될 수 있습니다.
strongly-typed(엄격한 타입)
프로그래밍 언어에서 특정 타입이 모든 식별자에 할당된 경우 이를 엄격한 타입이라고 합니다. 타입이 명시적으로 제공되지 않은 경우 추론됩니다. 즉, 이러한 식별자의 타입이 무엇이고 연산이 해당 타입에 어떤 영향을 미치는지 알고 있기 때문에 런타임 중에 언어가 예측할 수 없는 결과를 생성하지 않는다는 의미입니다. 정적 체크도 참고하세요.
struct(구조체)
구조체는 다수의 관련 변수를 한데 묶는 방법으로 생각하면 이해하기가 쉽습니다. 이때 해당 변수들은 어떤 타입도 될 수 있습니다.
struct
는 Verse의 키워드입니다.
structured concurrency(구조적 동시성)
구조적 동시성은 특정한 동시 명령 및 비동기화 컨텍스트 스코프 내에 제한되어 일정 수명 동안 진행되는 동시 연산입니다. 이것은 연관 스코프 내로 제한하는
if,
for,
return
같이 구조화된 컨트롤 플로입니다.
subclass(서브클래스)
수퍼클래스(부모 클래스)의 멤버(메서드 및 데이터)를 상속하는 클래스입니다. Verse에서는 새 멤버 또는 수정된 상속 멤버로 클래스를 확장할 수 있습니다.
submodule(서브모듈)
다른 Verse 모듈 내에 포함되어 있는 Verse 모듈입니다. 폴더와 하위 폴더로 생각하면 이해하기가 쉽습니다. 각 서브모듈은 하위로 내려갈수록 또 다른 '/모듈명'을 계속 추가합니다.
subroutine(서브루틴)
자주 사용되는 연산을 수행하도록 설계된 컴퓨터 프로그램 내 일련의 인스트럭션입니다. 서브루틴은 함수와 유사하지만, 함수는 일종의 계산을 수행하고 그 결과를 호출자에 반환한다는 점이 다릅니다. 서브루틴은 호출 프로그램에 보고하지 않고 작업을 수행합니다.
subtype(서브타입)
해당하는 수퍼타입의 모든 연산을 지원하는 타입입니다.
subtype
키워드는 소괄호와 사용하여 한 타입이 특정 타입에 제한된다는 것을 명시할 수 있습니다. 예를 들어, 몇 가지 Verse 배열 메서드는subtype
을 사용하여, 해당 메서드가 작동하기 위해서는 배열의 모든 엘리먼트가 comparable 수퍼타입을 갖고 있어야 한다고 지정합니다.(Input:[]t where t:subtype(comparable)).RemoveFirstElement<public> (ElementToRemove:t)<computes><decides>:[]t RemoveFirstElement
이 경우 배열 엘리먼트가 배열의 엘리먼트 중
ElementToRemove
실행인자와 같은 엘리먼트가 있는지 판단할 수 있도록comparable
수퍼타입을 가져야 합니다.
superclass(수퍼클래스)
클래스는 수퍼클래스 에서 상속할 수 있으며, 여기에는 상속하는 클래스에 있는 수퍼클래스의 모든 필드가 포함됩니다. 이 같은 클래스를 수퍼클래스의 서브클래스라고 표현합니다.
supertype(수퍼타입)
수퍼타입은 최소 하나 이상의 서브타입이 있는 타입입니다. 수퍼타입이 지원하는 모든 연산은 모든 서브타입에서 지원되어야 합니다. Verse에서는
any
가 다른 모든 타입의 수퍼타입이며, 다른 모든 타입은any
의 서브타입입니다.comparable
타입은int
및float
처럼 Verse에서 비교 가능한 모든 타입의 수퍼타입입니다.
suspends
함수를 취소하지 않고 일시적으로 멈추는, 즉 정지시키는 이펙트입니다.
suspends
표현식으로는 비동기화 함수를 정지하고 다른 동시 표현식이 완료되기 전에 여기에 제어를 이전할 수 있습니다.자세한 내용은 동시성을 참고하세요.
syntax(구문)
프로그래밍 언어의 규칙 또는 문법입니다.
시맨틱과 비교됩니다.
syntax error(구문 오류)
컴파일러 오류를 참고하세요.
T
task(작업)
작업은 현재 실행중인 비동기화 함수의 스테이트를 나타내는 데 사용되는 오브젝트입니다. 작업 오브젝트는 비동기화 함수가 정지된 위치 및 해당 위치의 로컬 변수의 값을 식별하는 데 사용됩니다.
thread(스레드)
운영 체제에서 수행할 수 있는 최소 처리 단위입니다.
tick(틱)
틱의 동의어로 사용되고 가끔은 프레임의 동의어로도 사용되는 시뮬레이션 업데이트를 참고하세요.
tile(타일)
바닥 또는 벽과 같은 표면의 그리드 섹션입니다.
time flow(타임 플로)
타임 플로 컨트롤은 Verse 프로그래밍 언어의 핵심이며, 동시 표현식으로 구현됩니다.
타임 플로는 플로 컨트롤의 일종이지만 컨트롤 플로에서 프로그램에 제시된 순서에 따라 컴퓨터가 인스트럭션을 실행하는 데 반해, 타임 플로에서는 동시성 표현식이 사용된 방식을 기반으로 순서가 아닌 시간에 따라 실행을 제어합니다.
타임 플로는 동시성과 연관된 또 다른 방식입니다.
top-level expression(최상위 표현식)
최상위 표현식은 코드 블록 내에 중첩되지 않은 표현식입니다. 최상위 표현식은 중첩된 코드 블록 같은 복합 표현식이 될 수도 있습니다.
transacts
함수에
transacts
이펙트가 있다면 해당 함수는 데이터를 읽고 쓸 수 있다는 의미가 되지만, 이러한 액션은 함수에 decides 이펙트가 있는 경우 롤백할 수 있습니다. 이 이펙트는 익스클루시브 이펙트입니다.지정된 익스클루시브 이펙트가 없는 함수는 데이터를 읽고 쓸 수 있지만 롤백할 수 없습니다.
tuple(튜플)
튜플 은 단일 표현식처럼 취급되는 표현식 두 개 이상을 하나로 그룹화한 것입니다.
튜플의 엘리먼트는 튜플에 삽입한 순서를 따르며, 인덱스를 호출하여 튜플 내 위치를 기준으로 엘리먼트에 액세스할 수 있습니다. 튜플의 표현식은 그룹화되어 있기 때문에 단일 표현식으로 취급됩니다.
참고: 튜플(tuple) 이라는 단어는 quadruple(4배), quintuple(5배), sextuple(6배)와 같은 영단어의 역성어입니다. 배열과 비교해 보세요.
type(타입)
타입은 데이터에서 어떤 연산이 수행될 수 있는지, 그리고 해당 데이터 또는 값이 해당 타입에 대해 저장되는 방식을 정의합니다. integer와 string 같은 일반 타입, 복합 타입 및 커스텀 타입이 있습니다. 프리미티브 타입과 컨테이너 타입도 참고하세요.
type
키워드는 중괄호와 사용하여 예상 타입을 정의할 수 있습니다. 현재 함수 선언 및 숫자 범위가 선언으로 지원됩니다. 예를 들어,subscribable
인터페이스에 대한Subscribe()
함수는type
키워드를 사용하여Callback
파라미터가void
리턴 타입을 가진 함수가 되도록 정의합니다.`Subscribe<public>(Callback:type {__(:t):void})<transacts>:cancelable`
type alias(타입 에일리어스)
타입 에일리어스는 기존 타입에 새 이름을 부여하는 방식입니다. 타입 에일리어스를 선언하면 기존 타입의 이름 대신 에일리어스된 이름을 사용할 수 있습니다. 타입 에일리어스가 새 타입을 생성하는 것은 아니며, 기존 타입에 새 이름을 제공하는 역할만 합니다.
type casting(타입 형변환)
NewReference := type_to_cast_to[Reference]
구문을 사용하여 클래스를 서브클래스 중 하나로 변환할 수 있으며, 이를 타입 형변환 이라고 합니다. 여기서type_to_cast_to
는 사용할 타입입니다. 타입 형변환은 실패 가능 표현식입니다. 오브젝트를 해당 타입으로 변환할 수 없으면 형변환이 실패하기 때문입니다. 예를 들어 클래스가 서브클래스와 다른 타입인 경우가 이에 해당합니다.다음 예시에서는
creative_device_base
타입을 갖는TaggedDevice
를 특정 함수를 사용하기 위해customizable_light_device
타입으로 변합니다.TaggedDevice
가 커스터마이징 가능한 라이트 장치가 아닌 경우TurnOn()
을 호출하지 않습니다.if (LightDevice := customizable_light_device[TaggedDevice]): LightDevice.TurnOn()
type checker(타입 체커)
타입 체크는 실행 전에 프로그램을 체크하는 데 사용되며, 데이터 타입 값과 구문을 검증합니다. 프로그래밍 언어에서 타입 시스템의 주요 목적은 바로 타입 오류로 인한 프로그램의 버그 발생 가능성을 낮추는 것입니다.
U
unicode(유니코드)
유니코드 컨소시엄(Unicode Consortium)에서 개발한 문자 인코딩 표준으로, 다양한 언어, 플랫폼 및 디바이스에서 문자와 관련한 지원을 제공합니다.
unique(고유)
고유 지정자를 클래스에 적용하면 고유 클래스로 만들 수 있습니다. 고유 클래스의 인스턴스를 생성하기 위해 Verse는 결과 인스턴스에 고유 ID를 할당합니다. 이렇게 하면 ID를 비교함으로써 고유 클래스의 인스턴스가 동등한지 비교할 수 있습니다. unique 지정자가 없는 클래스에는 이러한 ID가 없으므로 필드 값에 기반해서만 동등한지 비교할 수 있습니다. 즉, 고유 클래스는
=
및<>
연산으로 비교되며, comparable 타입의 서브타입입니다.
unstructured concurrency(비구조적 동시성)
특정한 동시 명령 또는 비동기화 컨텍스트 스코프로 논리적으로 제한되지 않는 수명을 가진 동시 표현식입니다. 이 수명은 잠재적으로 실행된 스코프를 넘어 확장될 수 있습니다. 이것은
goto
또는assembly jump
명령처럼 비구조적 플로 컨트롤과 유사합니다.
UTF-8
유니코드 문자 인코딩 방식으로, 다양한 언어, 플랫폼 및 디바이스에서 문자와 관련한 지원을 제공하기 위해 유니코드 컨소시엄에서 개발한 표준입니다.
이모지는 이미지 또는 아이콘처럼 보이지만 사실은 UTF-8 문자 세트에서 제공되는 글자(문자)입니다.
UTF-8에는 전 세계 거의 모든 문자와 기호가 있습니다.
V
value(값)
값은 프로그램이 작동하기 위해 사용하는 정보입니다. 값의 예시로는 숫자 또는 텍스트가 있습니다.
variable(변수)
프로그램이 실행 중인 동안 변경될 수 있는 값을 가리킵니다. 변경될 수 있기 때문에 변수라고 부릅니다.
경우에 따라 '변수'라는 용어가 변수와 상수를 통칭할 때도 있지만, 변수와 상수는 서로 비슷하면서도 한 가지 중요한 차이점이 있습니다. 바로 상수 값은 프로그램 실행 중에 변경할 수 없다는 점입니다.
변수의 기본 구문은
var name : type = value
입니다.var
는 이것이 변수라는 것을 나타내는 키워드이고,Name
은 이 변수에 할당한 이름, 즉 식별자입니다.:
뒤에는 타입이 옵니다.=
뒤에는 값이 옵니다. 예를 들면 다음과 같습니다.PlayerSpeed : float = 2.0
위 예시는 PlayerSpeed라는 상수의 값이 2.0이며, 프로그램이 실행되는 동안 변경되지 않는 10진수로 표시된다는 것을 나타냅니다.
이름과 타입은 선언이고, 값은 초기화에서 표현됩니다. 변수가 초기화 시점에 할당 값을 가질 필요는 없지만, 그래도 값을 할당하는 것이 좋습니다.
변수는 언제든지 값을 변경할 수 있다는 점에서 상수와 다릅니다. 이러한 변경은 대입 표현식을 통해 이루어집니다.
varies
이 이펙트는 함수에 동일한 입력을 제공하더라도 항상 동일한 출력을 반환하지는 않는다는 것을 나타냅니다. 또한
varies
이펙트는 함수 행동이 포함하는 패키지의 새 버전과 동일하게 유지된다는 보장이 없다는 점도 나타냅니다.
verbosity(상세도)
로그가 생성될 때 표시되는 추가 정보의 양을 제한하는 세팅입니다.
Verse
Verse는 게임플레이 프로그래밍에 중점을 둔 정적 체크 프로그래밍 언어입니다.
Verse Explorer(Verse 익스플로러)
포트나이트 언리얼 에디터(Unreal Editor for Fortnite, UEFN)의 툴로, 템플릿으로 새 Verse 파일을 생성하고, 서브모듈로 파일을 정리하고, 파일의 이름 변경 및 삭제를 지원합니다.
Verse path(Verse 경로)
경로를 참고하세요.
verse-authored device(Verse로 제작된 장치)
포트나이트 언리얼 에디터(UEFN) 에서 사용하기 위해 Verse에서 직접 프로그래밍된 장치입니다.
visual programming language(비주얼 프로그래밍 언어)
프로그래머가 시각적 요소를 드래그하여 다른 엘리먼트와 연결하는 방식으로 사용하여 특정 프로그램 인스트럭션의 시퀀스를 완성할 수 있도록 해주는 프로그래밍 언어입니다.
Visual Studio Code
Visual Studio Code는 VS Code라고도 하며, Microsoft에서 Windows, Linux, macOS용으로 제작한 소스 코드 에디터입니다.
void
void는 아무 값이나 취하여 false을 반환합니다. 이에 따라 void를 반환하는 함수의 바디는 블록에서 이전 표현식의 결과를 변환하지 않아도 어떤 값이든 묵시적으로 생성할 수 있습니다.
VPL
비주얼 프로그래밍 언어를 참고하세요.