Verse ist eine neue Programmiersprache. Bist du also ein erfahrener Programmierer und siehst etwas, das du nicht vollständig verstehst, dann schaue in diesem Glossar nach.
Bist du im Programmieren ein Anfänger, ist dieses Glossar auch für dich bestimmt. Wir haben Definitionen für viele Standard-Programmierbegriffe hinzugefügt, und vielleicht findest du hier genau die Antworten, die du brauchst!
Zahlen und Symbole
A
Abstrakte Klasse
Wenn eine Klasse oder eine Klassenmethode den abstrakten Bezeichner enthält, kannst du keine Instanz der Klasse erstellen. Eine abstrakte Klasse soll als Superklasse verwendet werden, in der einige Mitglieder implementiert oder festgelegt sind, aber nicht alle. Dies wird auch als Basisklasse bezeichnet.
Abstraktion
Ein Programmierprinzip, bei dem unnötige Details vor einem Benutzer verborgen werden, wobei der Benutzer die verborgenen Komplexitäten nicht verstehen muss. Du kannst beispielsweise Geld in einen Verkaufsautomaten stecken und ein Leckerli herausholen, ohne zu verstehen, wie die Mechanik funktioniert.
Zugriffslevel
Die Berechtigungen, die für den Zugriff auf ein Mitglied erforderlich sind. Diese werden mit einem Bezeichner für das Mitglied angegeben.
Zugangsbezeichner
Zugangsbezeichner definieren den Zugriffslevel. Im Folgenden sind alle Zugriffsbezeichner aufgeführt, die du mit Klassen verwenden kannst:
- public: Uneingeschränkter Zugriff.
- intern: Der Zugriff ist auf das aktuelle Modul beschränkt. Dies ist die Standard-Zugang.
- protected: Der Zugriff ist auf die aktuelle Klasse und alle [Subklassen] (subclass-in-verse) beschränkt.
- privat: Der Zugriff ist auf die aktuelle Klasse beschränkt.
Zusatzeffekt
Ein Zusatzeffekt ist ein Effekt, der zu einem exklusiven Effekt hinzugefügt werden kann. Zu den additiven Effekten gehören
suspends
unddecides
.
Agent
Ein Agent kann entweder einen Spieler oder eine KI darstellen.
Algorithmus
Ein Algorithmus ist eine Abfolge von Anweisungen, die geschrieben wurden, um ein Problem zu lösen oder eine Aufgabe zu erfüllen. Stelle es dir wie ein Rezept für ein Gericht vor. Schreibst du Code, der ein Problem löst oder eine Aufgabe erfüllt, ist dieser Code dein Algorithmus.
alternative Ganzzahlen
Siehe hexadezimal.
any
Verse hat einen speziellen Typ,
any
, das ist der Supertyp aller Typen (wodurch alle anderen Typen zu Subtypen vonany
werden). Aus diesem Grund unterstützt es sehr wenige Operationen, da alle Operationen, die es unterstützt, für alle Werte unterstützt werden müssten. Auch wenn er nicht oft verwendet wird, ist es gut, sich dieses Typs bewusst zu sein, da er beim Schreiben von Code auftreten und einen Fehler erzeugen kann. Dieser wird am häufigsten dann verwendet, wenn mehrere verschiedene Ausdrücke ein Ergebnis sein können (wie zum Beispiel die verschiedenen Pfade vonif
) undany
der einzige gemeinsame Supertyp ist.
API
Ein Akronym für Application Programming Interface. Dies sind Bibliotheken, die im Allgemeinen in Gruppen von aufrufbaren Funktionen, Typen und Datenstrukturen gruppiert sind, die es Nutzern ermöglichen, auf Unreal- und Fortnite-Systeme zuzugreifen und mit ihnen zu interagieren.
Archetyp
Ein Archetyp ist eine Instanz einer Klasse, die vollständig definiert ist und über Werte für ihre Felder in einer Klasse verfügt.
Archetyp-Instanziierung
Der Prozess der Erstellung eines Archetyps. Vergleichbar mit einem Constructor, der auch Logik oder andere Funktionen ausführen kann.
Argument
Der Wert, der einem Parameter in einer Funktionssignatur zugewiesen ist und von einem Funktionsaufruf zugeordnet wird.
Array
Ein Array ist ein Container, in dem du Elemente desselben Typs speichern kannst. Die Elemente des Arrays weisen die Reihenfolge auf, in der sie eingefügt wurden. Anhand ihrer Position im Array, ihres Index, kann auf die Elemente zugegriffen werden.
Du kannst ein Array erstellen, indem du das Schlüsselwort
array
gefolgt von{}
verwendest. Zum Beispiel:Players : []player = array{Player1, Player2}
"Weitere Informationen findest du unter Array.
Zuweisungsausdruck
In Verse speichert ein Zuweisungs-Ausdruck einen Wert an einer veränderbaren Stelle, z.B. beim Initialisieren einer Variable oder beim Ändern des Wertes einer Variable.
asynchron
Die Auswertung eines asynchronen Ausdrucks kann Zeit in Anspruch nehmen, muss es aber nicht. Ein asynchroner Ausdruck kann in der aktuellen Simulationsaktualisierung oder in einer späteren abgeschlossen werden. Asynchrone Funktionen, die mit dem Bezeichner
suspends
identifiziert werden, werden auch als Coroutinen bezeichnet. Asynchrone Ausdrücke stehen sofortigen Ausdrücken gegenüber.
asynchroner Kontext
Der Bereich, für den ein asynchronen Ausdruck wie z. B. Coroutine Anruf zulässig ist.
atomar
Eine einzelne, vollständige Codeeinheit, die entweder vollständig ausgeführt wird oder vollständig fehlschlägt, ohne Unterbrechung oder Beobachtung durch anderen Code. Atomarer Code kann nicht unterbrochen werden. Alle benachbarten, sofortigen, non-async Ausdrücke werden als atomar betrachtet - ihr Code wird garantiert ohne Unterbrechung mit demselben Update und ohne Aussetzen oder Kontextwechsel ausgeführt.
Attribut
Bei Attributen handelt es sich um Eigenschaften oder andere Informationen, die Kennungen zugeordnet sind, die in Verse oder einer Anwendung wie UEFN referenziert oder analysiert werden können.
Die Attribut-Syntax verwendet
@
gefolgt vom Schlüsselwort für das Attribut.
B
base-16
Hexadezimal (von hexa-, d. h. sechs, und dezimal, d. h. zehn) oder Basis-16 (häufig abgekürzt zu hex) ist ein Zahlensystem, das 16 Symbole anstelle der bekannteren 10 Symbole der Basis-10 verwendet.
bidirektional
Dies funktioniert in zwei Richtungen.
Bindung
In der Computerprogrammierung bedeutet binden, für eine bestimmte Zeit eine Verbindung zwischen zwei oder mehr Programmierungsobjekten herzustellen.
Blockausdruck
Ein Blockausdruck ist eine Methode, Ausdrücke in einem einzelnen Ausdruck zu gruppieren oder einen Codeblock zu verschachteln. Blockausdrücke verhalten sich ähnlich wie Codeblöcke.
Körper
Ein Block mit seinem eigenen Bereich, der die Teilausdrücke eines Sprachelements definiert, wie z. B. ein Funktions-Hauptteil oder ein Schleifen-Hauptteil. Beispielsweise enthält ein Funktionskörper Ausdrücke, die definieren, was die Funktion tut, und alle Variablen, die in der Funktion deklariert werden, sind lokal zu diesem Funktionskörper.
Boolescher Wert
Siehe Boolesche Logik.
Boolesche Logik
Ein logisches System, bei dem der ausgedrückte Wert entweder True oder False ist, und das häufig verwendet wird, um die Flusssteuerung in Programmiersprachen zu bestimmen. Diese ist nach George Boole (1815–1864) benannt, einem Mathematiker, der maßgeblich zu den Bereichen Logik und Algebra beigetragen hat.
In Verse ist dies der Typ, mit dem True und False als
logic
dargestellt werden. Diese Boolesche Logik wird durch fehlbare Ausdrücke in Fehlerkontexten ausgeführt.
binden
Eine Variable, auf die eine Bindung ausgeführt wurde. Alle Verse-Variablen werden sofort nach der Definition gebunden. Sie können keinen ungebundenen Status aufweisen.
geschweifte Klammern
Siehe Klammern.
Klammern
Klammern werden in Verse verwendet, um verschiedene Informationsarten im Code anzugeben. Verse verwendet vier Klammerarten. Zu ihrer Verwendung gehören unter anderem:
()
Runde Klammern werden verwendet, um Parameter in einer Funktionssignatur und Argumente in einem Funktionsaufruf zu setzen und um Ausdrücke, Tupel und Subklassen zu gruppieren.[]
Klammern (auch eckige Klammern genannt) werden für fehlbare Funktionsaufrufe, type specifiers für arrays und maps und indexing in einem Array verwendet.{}
Geschweifte Klammern werden bei der Archetyp-Instanziierung, der Codeblock-Formatierung und der String-Interpolation verwendet.<>
Spitze Klammern werden verwendet, um Bezeichner an Kennung und Funktionen anzuhängen.
Verzweigungsausdruck
Ein
branch
Ausdruck startet einen Block von einem oder mehreren async Unterausdrücken. Jeder folgende Ausdruck wird sofort ausgeführt.Weitere Informationen findest du unter Gleichzeitigkeit.
break
Ein Ausdruck, der aus der aktuellen
loop
ausbricht
und den nächsten Ausdruck nach dem Schleifenausdruck ausführt. Weitere Informationen findest du unter Loop und Break.
Bug
Ein Bug ist ein Fehler in einem Computerprogramm, der dazu führt, dass es ein falsches oder unerwartetes Ergebnis liefert. Bugs treten zur Laufzeit auf, im Gegensatz zu Compiler-Fehlern, die während der Verse-Kompilierung auftreten. Der Prozess des Identifizierens und Behebens von Bugs wird als Debugging bezeichnet.
bauen
Verse-Code in Befehle kompilieren, die ein Computer ausführen kann.
integriert
In einigen Programmiersprachen ist etwas, das integriert ist, etwas, das du direkt in der Sprache und ihren Standardbibliotheken verwenden kannst.
integrierter Typ
Ein integrierter Typ kann im Gegensatz zu einem zusammengesetzen Typ nicht weiter zerlegt werden.
C
C++
Eine beliebte Programmiersprache, die in vielen verschiedenen Anwendungen verwendet wird, insbesondere in Spiel-Engines wie der Unreal Engine.
Cache
Speichermethode zum Beschleunigen des Datenzugriffs.
Aufruf
Wenn in einem Computerprogramm eine Anweisung vom Programm angefordert wird, wird sie aufgerufen. Der Aufruf ruft (aktiviert) eine bestimmte Funktion auf. Aufrufe können aufgrund von Spielerinteraktionen mit Objekten oder aufgrund von Zeitparametern erfolgen.
Aufrufdiagramm
Eine Liste der Methoden in einem Aufrufstapel mit Informationen zu jedem Aufruf, wie z. B. Ausführungszeit, Zeitstempel und die Kennung für die Funktion.
Aufrufstapel
Der Aufrufstapel ist das, was ein Programm verwendet, um Aufrufe zu verfolgen – welche Funktionen ausgeführt werden, welche beendet sind und welche noch anstehen.
abgebrochen
Der Zustand einer Aufgabe, die vor Fertigstellung beendet wurde.
Case-Ausdruck
Ein Case-Ausdruck kann den Ablauf eines Programms aus einer Liste von Optionen steuern. Weitere Informationen findest du unter Case.
Ceil
Eine mathematische Operation, die einen rational Wert auf die nächste Ganzzahl aufrundet. Vergleiche mit
Floor
.
Änderungsliste
Eine Methode zum Nachverfolgen von Änderungen an einer Datei in Perforce zwischen lokalen Dateien, die auf deinem Computer gespeichert sind, und Dateien, die an den Server gesendet und mit den Quelldateien für das Projekt zusammengeführt werden. Eine Änderungsliste (Changelist) wird auch als CL bezeichnet.
char
Ein Datentyp, der ein einzelnes Zeichen speichert.
Zeichen
In Verse kann sich der Begriff
Zeichen
(„character“) auch auf ein einzelnes typografisches Element in einen String beziehen.
Zeichenkodierung
Die Zeichencodierung ist die Zuordnung zwischen einem Textzeichen und Daten, die der Computer verstehen kann, und wird als Codepunkt bezeichnet.
CI/CD
CI/CD ist Continuous Integration und entweder Continuous Delivery oder Continuous Deployment. CI/CD verbindet Entwicklung und Anwendung durch Automatisierung beim Erstellen, Testen und Bereitstellen von Anwendungen.
Klasse
Eine Klasse ist eine Vorlage zum Erstellen von Objekten mit ähnlichen Verhaltensweisen und Eigenschaften (Variablen und Methoden) und muss instanziert sein, um ein Objekt mit echten Werten zu erstellen. Klassen sind hierarchisch, was bedeutet, dass eine Klasse Informationen von ihren Parents (Superklasse) erben und ihre Informationen mit ihren Children (Subklassen) teilen kann. Klassen können ein vom Benutzer definierter benutzerdefinierter Typ sein. Vergleiche mit Instanz.
Code
Code, manchmal auch Quellcode genannt, sind die von einem Programmierer geschriebenen Anweisungen, die einem Softwareprogramm mitteilen, wie es zu funktionieren hat. Verse-Quellcode kann vom Programmierer gelesen werden, aber nicht vom Computer. Bevor der Computer das Programm lesen oder ausführen kann, muss es in computerausführbare Anweisungen umgewandelt werden, die als Kompilierung bezeichnet werden. Wenn ein Programmierer sagt, dass er codiert, meint er, dass er diese Anweisungen schreibt.
Codeblock
Ein Block oder Codeblock ist eine Gruppe von Ausdrücken, die einen neuen Körper Code einführt. Du kannst auch einen Codeblock haben, der null Ausdrücke enthält, aber dies ist normalerweise ein Platzhalter, der zu einem späteren Zeitpunkt mit Ausdrücken gefüllt wird.
Codeblöcke kommen nach einer Kennung.
Ein Codeblock hat in Verse drei mögliche Formate. Alle diese Formate sind semantisch insofern gleich, als das Format nicht ändert, was der Code tatsächlich tut.
Ein Leerzeichenformat beginnt den Block mit
:
, und jeder Ausdruck folgt in einer eigenen Zeile mit einer Einrückung von vier Leerzeichen:if (test-arg-block): expression1 expression2
Beachte, dass
if (test-arg-block)
nicht Teil des Blocks ist, sondern der Block am Ende dieser Zeile mit:
beginnt. Du kannst auch;
verwenden, um mehrere Ausdrücke in einer einzelnen Zeile zu trennen:if (test-arg-block): expression1; expression2; expression3
In einem mehrzeiligen geschweiften Format wird der Block von
{}
(geschweifte Klammern) umschlossen und die Ausdrücke stehen in neuen Zeilen:if (test-arg-block) { expression1 expression2 }
Wie bei dem Format mit Leerzeichen kannst du auch
;
verwenden, um mehrere Ausdrücke in einer einzelnen Zeile zu trennen.if (test-arg-block) { expression1; expression2 }
Das dritte Format ist das einzeilige geschweifte Format. Auch hier wird der Block von
{}
umschlossen, aber jeder Ausdruck wird durch;
getrennt, anstatt in eine neue Zeile gestellt zu werden. Beachte, dass du die Zeichen{}
nicht in separate Zeilen schreiben musst.if (test-arg-block) {expression1; expression2}
Mehr dazu findest du unter Codeblocks.
Codekommentar
Siehe Kommentar.
Codepunkt
Ein Wert im Codebereich Unicode für Zeichenkodierung.
Codebeispiel
Ein eigenständiges Programm, Modul oder eine Klasse, die ein oder mehrere Konzepte, Klassen, Funktionen oder einen anderen Aspekt einer Programmiersprache demonstriert. Vergleiche mit Codeschnipsel.
Codeschnipsel
Ein Snippet ist ein oft kurzer Code, der normalerweise dazu dient, ein bestimmtes Konzept zu präsentieren oder zu implementieren.
Codeschnipsel sind keine vollständigen, eigenständigen Programme. Codeschnipsel können in Codeblöcke kopiert und eingefügt werden. Vergleiche mit Codebeispiel.
Codeeinheit
Beschreibt die kleinstmögliche Bit-Kombination, die für eine Einheit kodierten Texts stehen kann. UTF-8 verwendet 8 Bits für seine Codeeinheit.
Zwang
Die Umwandlung eines Wertes in verschiedene Daten Typen. Typumwandlungen können implizit oder explizit vorgenommen werden. Implizite Konvertierung. auch Zwang genannt, geschieht automatisch.
Kommentar
Ein vom Programmierer geschriebener Kommentar, der etwas über den Code oder den Grund des Programmierers erklärt, wie etwas programmiert wird. Während der Code selbst das Wie des Programms zeigt, werden normalerweise Kommentare hinzugefügt, um das Warum zu erklären.
Codekommentare können überall im Code erscheinen und mit
#
beginnen. Wenn das Programm ausgeführt wird, werden Codekommentare ignoriert.Du kannst eine einzelne Zeile kommentieren, indem du ein
#
an den Anfang der Zeile setzst. Der Zeilenumbruch am Zeilenende beendet den Kommentar.# Auf diese Weise wird eine einzelne Zeile kommentiert.
Du kannst einen mehrzeiligen Block-Kommentar erstellen, indem du
<#
verwendest, um den Block zu beginnen, und#>
, um ihn zu beenden:<# Du kannst mehrzeilige Kommentare in deinem Code erstellen, indem du die Kommentare wie hier gezeigt beginnst und beendest. #>
Weitere Möglichkeiten zum Hinzufügen von Kommentaren zu deinem Code findest du im Kurzüberblick der Sprache „Verse“.
Commit
Wenn die Auswirkungen von Code auf einen fehlbaren Ausdruck nach dem Erfolg dieses Ausdrucks permanent gemacht werden.
Gängiger Typ
Typen, die integriert sind und häufig verwendet werden. Zu den gängigen Typen gehören
any
,comparable
,float
,int
,logic
,rational
undstring
.
vergleichbar
Ein Typ, der die Operatoren für kleiner als, größer als usw. definiert. Andere Typen können von
comparable
erben und Vergleichsausdrücke ausführen.
Vergleichsausdruck
In Verse bezeichnen Vergleichs-Ausdrücke, wenn du zwei Dinge mit einem der Ungleichungen Operatoren vergleichst:
<
,>
,<=
,.=
,<>
.
kompilieren
Um Programme aus einer menschenlesbaren Sprache in computerausführbare Anweisungen umzuwandeln.
Kompilierzeit
Wenn Quellcode in Maschinenanweisungen umgewandelt wird. Vergleiche mit Laufzeit.
Compiler
Software, die menschenlesbare Programmanweisungen in computerausführbare Befehle umwandelt. Er wird teilweise auch als Parser bezeichnet. Der Zeitraum, zu dem der Compiler ausgeführt wird, wird als Kompilierzeit bezeichnet.
Compiler-Fehler
Ein Compiler-Fehler wird durch fehlerhaften Code verursacht, der durch den Verse-Compiler zur Kompilierzeit erkannt wurde. Vergleiche dies auch mit Bugs, die zur Laufzeit auftreten.
abgeschlossen
Der Zustand einer Aufgabe, die bis zum Abschluss durchlaufen wurde.
Komponente
Eine Funktion oder eine Gruppe verwandter Funktionen in einem Programm, die wiederverwendet werden kann.
zusammengesetzter Typ
Zusammengesetzter Datentyp, manchmal auch compound oder aggregate genannt. Typ aus Feldern oder Elementen (normalerweise benannt) von Primitive- oder anderen Composite-Typen. Er weist normalerweise eine feste Anzahl von Feldern oder Elementen für seine Lebensdauer auf. Verse verwendet derzeit die Composite-Typen „struct“, „class“, „enum“, „interface“ und „module“.
berechnet
Dieser Effekt gibt an, dass eine Funktion denselben Output zurückgibt, wenn wiederholt derselbe Input präsentiert wird.
verketten
Siehe Verkettung.
Verkettung
Verkettung bezeichnet den Vorgang, bei dem ein String an einen anderen String angehängt (hinzugefügt) wird. Du kannst den Operator + verwenden, um Strings zu verketten.
konkrete Klasse
Eine Klasse mit einem konkreten Bezeichner ist eine Möglichkeit, eine Instanz der Klasse mit einem leeren Archetyp zu konstruieren, was bedeutet, dass alle Felder für die Klasse müssen mit einem initialen Wert definiert werden.
gleichzeitig
Mehrere Berechnungen, die im selben effektiven Zeitraum ausgeführt werden, laufen gleichzeitig ab. Das wären überlappende logische Simulationsaktualisierungen, Ticks und Frames, selbst wenn sie möglicherweise über die physische Zeit verteilt sind, wie z. B. auf einem einzelnen Prozessor, und nicht unbedingt parallel.
Bedingung
Eine Bedingung kann das Programm auf True oder False überprüfen. Ein bedingter Ausdruck kann die Bedingung auswerten und als Ergebnis True oder False zurückgeben.
bedingt
Ein Ausdruck, der eine Bedingung auswertet und Anweisungen basierend auf dem Ergebnis der Bedingung ausführt. Ein Beispiel für eine Bedingung ist ein
if
-Ausdruck.
Konstante
Eine Konstante ist ein Ort, an dem ein Wert gespeichert ist und dessen Wert sich während der Laufzeit des Programms nicht ändern kann. Sie wird Konstante genannt, weil sie konstant (unverändert) bleibt.
Die Basis-Syntax für eine Konstante lautet
name : type = value
.name
steht für einen Namen, welcher der Konstante zugewiesen wurde (ihre Kennung).:
gibt an, das nun ein Typ folgt.=
gibt an, dass nun ein Wert folgt. Danach steht der Wert. Zum Beispiel:PlayerSpeed : float = 2.0
Besagt, dass PlayerSpeed einen Wert von 2,0 hat, dargestellt als Dezimalwert, der sich während der Ausführung des Programms nicht ändert.
Konstanten haben stets zugewiesene Werte. Name und Typ sind die Deklaration, und bei der Initialisierung wird der Wert ausgedrückt.
Siehe auch Variable.
Weitere Informationen findest du unter Konstanten und Variablen.
beschränkt
Wenn ein Ausdruck beschränkt ist, hat er festgelegte Grenzen.
Constructor
Ein Constructor ist eine besondere Funktion, die eine Instanz der zugeordneten Klasse erzeugt. Sie kann verwendet werden, um Anfangswerte für das neue Objekt festzulegen.
Du kannst einen Constructor für eine Klasse hinzufügen, indem du dem Funktionsnamen den Bezeichner
constructor
hinzufügst. Anstatt bei der Funktion einen Rückgabetypen anzugeben, wird der Funktion der Klassenname zugeordnet, gefolgt von der Initialisierung von Feldern. Eine Klasse kann mehr als einen Constructor besitzen.
Container
Ein Container ist eine Möglichkeit, Daten in Code zu organisieren. Weitere Informationen findest du unter Containertyp.
Containertyp
Du kannst mehrere Werte zusammen speichern, indem du einen Container-Typ wie Array, Map, Tuple und Option verwendest.
Kontext
Der Code Bereich, der die Lebenszeit verschiedener Sprachelemente und Einschränkungen definiert. Das ist normalerweise der Bereich zwischen Beginn und Ende eines Codeblocks.
Kontextwechsel
Ein Kontextwechsel ist der Vorgang des Speicherns des Zustands eines Prozesses oder Threads, damit er wiederhergestellt und die Ausführung zu einem späteren Zeitpunkt fortgesetzt werden kann, gefolgt von der Wiederherstellung eines anderen, zuvor gespeicherten Zustands.
Vertrag mit dem Flaschengeist
Das Schreiben von Code wird manchmal mit dem Abschluss eines Vertrags mit dem Flaschengeist verglichen, in dem Sinne, dass ein Programm den Anweisungen genau folgt, selbst wenn das Ergebnis nicht genau deinen Erwartungen entspricht. Siehe auch Programm.
Kontrollfluss
Reihenfolge, in der ein Computer Anweisungen ausführt. In Verse gibt es verschiedene Ausdrücke, mit denen du den Ablauf in deinem Programm steuern kannst, beispielsweise Block oder Loop.
konvergiert
Der „kleinste“ Effekt-Satz. Es ist ein Code, der garantiert einen Wert in einer begrenzten Zeit ohne divergieren liefert.
Coroutine
Eine Routine mit einer Lebensdauer, die entweder Arbeit im Laufe der Zeit ausführt oder auf das Eintreten verschiedener Events und Zustände oder eine Kombination aus beidem wartet. Coroutine ist gleichbedeutend mit asynchroner Funktion.
D
Datenelement
Siehe Mitglied.
Datentyp
Siehe Typ.
Debugger
Ein Werkzeug zum Debuggen, mit dem du den Programmzustand bei jedem Ausführungsschritt sehen kannst.
Debuggen
Der Prozess der Identifizierung und Behebung von Fehlern in deinem Code.
decides
Ein Effekt, der angibt, dass die Funktion fehlschlagen kann, und dass das Aufrufen dieser Funktion ein fehlbarer Ausdruck ist. Die Funktionsdefinitionen mit dem Effekt „decides“ müssen auch den Effekt transacts haben, was bedeutet, dass die von dieser Funktion durchgeführten Aktionen zurückgenommen werden können (als ob die Aktionen nie durchgeführt worden wären), wenn irgendwo in der Funktion ein Fehler auftritt.
Entscheidungsausdruck
Ein Entscheidungsausdruck verwendet die Operatoren
not
,and
undor
, um dir die Kontrolle über den Entscheidungsfluss bei Erfolg und Misserfolg zu geben.
Erklärung
Eine Deklaration ist ein Ausdruck, bei dem eine Kennung zusammen mit seinem Typ eingeführt wird. Sie kann implementiert (verwendet) werden und sie kann einen zugewiesenen Wert (initialisiert) haben.
var name : type = expression
ist die Syntax für die Deklaration einer Variable. Zum Beispiel:var PlayerSpeed : float = 2.0
Diese Codezeile deklariert, dass eine als PlayerSpeed benannte Variable einen Float-Wert hat.
In diesem Beispiel ist der letzte Teil,
= 2.0
, die Initialisierung, die von der Deklaration getrennt ist.
deklarative Programmierung
Dieses Programmierparadigma fokussiert sich weniger auf die schrittweise Ausführung eines Programms und mehr auf das gewünschte Endergebnis, indem angegeben wird, was getan werden muss, anstatt wie es gemacht werden muss.
erklären
Du deklarierst eine Variable oder eine Funktion, indem ihre Kennung und Typ angibst. Vergleiche mit initialisieren.
decorate
Beim Schreiben von Code bedeutet "decorate", ein Stück Code mit einem anderen zu umhüllen.
defer
Der
defer
-Ausdruck verzögert die Ausführung von Code, bis der aktuelle Bereich beendet ist. Dieser Ausdruck ist praktisch für Bereinigungsaufgaben, wie das Zurücksetzen von Variablen.
definieren
Siehe Definition.
Definition
Eine Definition liegt vor, wenn eine Kennung implementiert ist oder ihm ein Wert zugewiesen wurde, z. B. eine Funktions- oder eine Klassendefinition. Vergleiche mit Erklärung.
Abhängigkeit
Abhängigkeit bedeutet, dass ein Modul für einige Funktionen von anderen Modulen abhängt.
deterministisch
Ein deterministisches System ist ein System, bei dem der gleiche Anfangszustand oder der gleiche Input immer zu den gleichen Ergebnissen führt.
deterministische Zerstörung
Deterministische Zerstörung, wie sie in einigen Programmiersprachen vorkommt, bedeutet, dass Objekte zerstört werden, wenn ein Programm ihren Bereich verlässt.
Entwickler
In UEFN und Verse werden die Nutzer Entwickler genannt. Dieser Begriff umfasst Creators von Fortnite-Inseln, Künstler und Architekten.
Digest
Eine automatisch generierte Liste aller öffentlichen Symbole, wie Module, Funktionen, Klassen, die der Verse-Compiler verarbeitet hat. Es enthält auch Kommentare. Du kannst eine Digest-Datei lesen, um zu sehen, welche API und Funktionalität sich in einem zugehörigen Modul befinden.
versenden
Versenden heißt, etwas irgendwo hinschicken. In Verse könnte dies beispielsweise darin bestehen, einen Aufruf an eine Funktion zu senden oder ein Event an einen Listener zu senden.
divergieren
Die Ausführung eines Programms wird als divergierend bezeichnet, wenn es nicht wie erwartet beendet (abgeschlossen) wird. Wenn es innerhalb einer endlichen Zeit einen Wert ergibt, ohne zu divergieren, konvergiert er.
doc
Ein generisches Feld für Notizen, das sich in Klassen und Funktionen findet (aber nicht in Funktionsparametern) und hilfreiche Informationen dazu enthält, was das beschriebene Element tut oder wie es zu verwenden ist. Es wird verwendet, um die Seite des Elements in der Verse-API-Referenz zu füllen.
Domäne
Die Domäne ist der Satz von Inputs, die von einem bestimmten Parameter akzeptiert werden. Ein Typ ist eine Möglichkeit, eine Domäne anzugeben, aber die Domäne ist umfassender als der Typ.
dynamische Eingabe
In einer dynamisch typisierten Programmiersprache haben Variablen und Ausdrücke keine zugewiesenen Typen. Das bedeutet, dass es erst zur Laufzeit verifiziert werden kann. Vergleiche mit starker Typ.
E
editierbar
Ein Attribut, das du Code hinzufügen kannst, um die Eigenschaften in UEFN verfügbar zu machen. Das Taggen von Code mit diesem Attribut besteht aus dem Hinzufügen eines
@attribute_name
(in diesem Fall@editable
) vor einem Feld Kennung:@editable PropertyName : type = DefaultValue
"Zum Beispiel ist das string-Feld
GreetingMessage
eine bearbeitbare Eigenschaft mit dem Standardwert""Hallo, Fremder""
:expose_properties := class(creative_device): @editable GreetingMessage : string = "Hallo, Fremder"
Weitere Informationen zur Verwendung findest du unter Anpassen deiner Geräteeigenschaften im Editor.
Effekt
Ein Effekt ist eine Verhaltenskategorie, die eine Funktion aufweisen kann.
Im nachstehenden Beispiel sagt der Code, dass eine Funktion den Namen
IsCriticalHealth
hat und einen Ganzzahl Wert als Input durch denHealth
Parameter nimmt. Als Nächstes sagt er, dass die Effekte, die die Funktion aufweist,decides
undtransacts
sind, was bedeutet, dass die Funktion ein Fehlerkontext ist und seine Maßnahmen zurückgenommen werden können, wenn die Funktion fehlschlägt. Wenn der als Input an die Funktion übergebeneHealth
-Wert größer als 0,0 und kleiner oder gleich 30,0 ist, ist die Funktion erfolgreich. Andernfalls schlägt die Funktion fehl, und der Kontext, der die Funktion aufgerufen hat, muss den Fehler verarbeiten.IsCriticalHealth(Health : float)<decides><transacts> : void = ((Health > 0.0) && (Health <= 30.0))
Weitere Informationen dazu findest du unter Bezeichner und Attribute.
Effekthierarchie
Ein Effekt ist eine Verhaltenskategorie, die eine Funktion aufweisen kann. Die Anwendung exklusiver Effekte auf eine Funktion hat eine Hierarchie, wobei Effekte, die höher in der Hierarchie stehen, zumindest alle Aktionen von Effekten unter ihnen zulassen. Die Hierarchie ist:
Der
transacts
-Effekt enthält Eigenschaften für die unten aufgeführten Effekte, dervaries
-Effekt umfasst diecomputes
- undconverges
-Effekte, aber nichttransacts
, usw.
Element
Ein einzelner Teil in einer größeren Gruppe. Beispielsweise kann ein Array verschiedene Elemente enthalten, die einzeln gespeichert und verwendet werden können.
Emoji
Emojis sind Piktogramme (bildliche Symbole), die typischerweise farbig dargestellt und im Text eingebunden verwendet werden. Sie repräsentieren Dinge wie Gesichter, Wetter, Fahrzeuge und Gebäude, Essen und Trinken, Tiere und Pflanzen oder Symbole, die Emotionen, Gefühle oder Aktivitäten darstellen. Der Standard für Emoji wird vom Unicode-Konsortium festgelegt.
Sowohl Emoji als auch Emojis sind zulässige Pluralformen, je nachdem, wen du fragst. 🤦
leerer Block
Ein Codeblock, der null (keine) Ausdrücke enthält, ist ein leerer Block. Leere Blöcke werden in der Regel nur als Platzhalter verwendet und später mit Code aufgefüllt.
leerer String
Ein String, der keine Zeichen
""
enthält, wird als leerer String bezeichnet.
Aufzählung
Abkürzung von Enumeration (Aufzählung). Typ in Verse, der beispielsweise für Wochentage oder Himmelsrichtungen verwendet werden kann.
enum
ist ein Schlüsselwort.
Gleichheitsausdruck
In Verse bezeichnen Gleichheits-Ausdrücke, wenn du vergleichst, ob zwei Dinge gleich sind, indem du den = Operator verwendest.
Escape-Zeichen
Das Verse-Escape-Zeichen ist der umgekehrte Schrägstrich ( \ ), der eine Escape-Sequenz innerhalb eines String-Literal erstellt. Das wird verwendet, um Steuerzeichen zu ändern, die sonst anders interpretiert würden. Arbeitest du beispielsweise mit einem String und möchtest Zeichen mit vorgegebenen Verwendungszwecken wie { } einfügen, musst du das Escape-Zeichen „\“ vor dem Zeichen in den String einfügen. Das würde dazu führen, dass
"\\{\\}"
im Text als {} dargestellt wird.
auswerten
Auszuwerten bedeutet, einen Ausdruck auszuführen, um einen Wert zu erzeugen.
Event
Ein Event ist eine Aktion oder ein Vorkommen, das identifiziert werden kann. Zum Beispiel hat das Schaltflächengerät das InteractedWithEvent, das auftritt, wenn ein Spieler mit der Schaltfläche interagiert. Durch das Abonnieren eines Event-Handlers kannst du Verhalten für das Auftreten eines bestimmten Events definieren.
exklusiver Effekt
Einige Effekte gelten als exklusive Effekte, denen additive Effekte hinzugefügt werden können, die aber nicht mit anderen exklusiven Effekten verwendet werden können. Zu den exklusiven Effekten gehören
computes
,varies
undtransacts
. Zu den additiven Effekten gehörensuspends
unddecides
.
ausführen
Ein Programm ausführen.
Ausführung
Der Prozess eines Computers, der ein Programm interpretiert und die Anweisungen dieses Programms ausführt.
expose
Eine Eigenschaft wird in UEFN exposed, indem man ihr das
editierbar
Attribut im Verse-Code zuweist. Das bedeutet, dass du die angezeigte Eigenschaft direkt in der UEFN-Schnittstelle bearbeiten kannst. Siehe auch editierbar.
Ausdruck
Ein Ausdruck ist die kleinste Codeeinheit (eine Kombination aus Werten und Funktionen), die bei der Auswertung ein Ergebnis hat.
Das folgende Beispiel ist ein
if ... else
-Ausdruck, d. h. wenn der Wert ein benanntes Kriterium erfüllt, handelt es sich um eine Sache, andernfalls handelt es sich um etwas anderes.if (a > 5): “Big!” else “Small!”
In Verse ist alles ein Ausdruck, von Literalen über Funktionsaufrufe bis zum Steuerungsablauf.
Im Vergleich dazu ist eine Anweisung ein eigenständiger Befehl, der keinen resultierenden Wert hat. In Verse ist alles ein Ausdruck, und es gibt keinen Unterschied zwischen Aussagen und Ausdrücken, die zu einem Wert ausgewertet werden können.
Weitere Informationen findest du unter Ausdrücke.
F
f
Siehe Float.
scheitern
In Verse kann jeder Code, den der Benutzer schreibt, standardmäßig nicht fehlschlagen. Das bedeutet, dass anstelle einer Funktion, die Boolesche Werte oder Optionen zurückgibt,
<decides>
verwendet wird, um entweder einen Wert, void oder scheitern zurückzugeben.
fehlbarer Ausdruck
Ein fehlbarer Ausdruck ist ein Ausdruck, der entweder erfolgreich ist und einen Wert zurückgibt oder aber fehlschlägt und keinen Wert zurückgibt. Beispiele für fehlbare Ausdrücke sind die Indizierung in einem Array, da ein ungültiger Index fehlschlägt, und die Verwendung von Operatoren wie dem Vergleich zweier Werte.
Scheitern
Scheitern ist in Verse mehr als ein einfacher boolescher Wert. Fehler treiben die Ablaufsteuerung an. Ein fehlbarer Ausdruck kann erfolgreich sein und einen Wert liefern oder fehlschlagen und keinen Wert zurückgeben, und fehlbare Ausdrücke sind nur in einem Fehlerkontext erlaubt, im Gegensatz zu anderen Programmiersprachen, in denen der Steuerungsablauf durch boolesche Werte entschieden wird.
Fehlerkontext
Ein Fehlerkontext ist ein Kontext, in dem es zulässig ist, Ausdrücke auszuführen, die fehlschlagen können. Der Kontext definiert, was passiert, wenn der Ausdruck fehlschlägt.
Feld
Siehe Mitglied.
final
Ein Bezeichner kann nur für Klassen und Mitglieder von Klassen verwendet werden:
-
Wenn eine Klasse den
final
-Bezeichner aufweist, kannst du keine Subklasse der Klasse erstellen. -
Wenn ein Feld den
final
-Bezeichner hat, kannst du das Feld nicht in einer Subklasse außer Kraft setzen. -
Wenn eine Methode den
final
-Bezeichner aufweist, kannst du die Methode nicht in einer Subklasse außer Kraft setzen.
-
fire-and-forget
Fire-and-forget bezieht sich auf einen Ausdruck, bei dem es dir egal ist, wann er abgeschlossen wird oder ob er erfolgreich abgeschlossen wird. Das ist äußerst selten.
float
Ein mathematischer Typ, der zum Speichern und Verarbeiten von Gleitkommazahlen verwendet wird. Es ist neben int und rational einer der drei wichtigsten numerischen Typen, die in Verse unterstützt werden.
Fließkommazahl
Ein Begriff, der in verschiedenen Programmiersprachen verwendet wird, um eine Variable mit einem Bruchwert oder eine Zahl zu definieren, die ein Dezimalkomma enthält, wie z. B. 0,5 oder 1,0. Zahlen, die mit einer Float- Variable Erklärung erstellt wurden, haben Ziffern auf beiden Seiten eines Dezimalpunkts.
Boden
Eine mathematische Operation, die einen rational Wert auf die nächste Ganzzahl abrundet. Vergleiche mit
Ceil
.
zum Ausdruck
Ein
for
-Ausdruck, manchmal auch als for-Loop bezeichnet, ist dasselbe wie ein Loop-Ausdruck, außer dassfor
-Ausdrücke beschränkt sind, was bedeutet, dass die Anzahl der Iterationen bekannt ist, bevor diefor
-Loop ausgeführt wird, und Entscheidungen darüber, wann die Loop beendet werden soll, automatisiert sind. Weitere Informationen findest du unter For.
Frame
Ein Frame ist ein vollständig gerendertes Bild (wie auf einem Computermonitor oder Fernsehgerät), das eine Simulation zu einem bestimmten Zeitpunkt darstellt. Der Begriff Frame wird teilweise synonym mit einer Simulationsaktualisierung (oder einem Tick) verwendet, da diese gemeinsam erfolgen, aber neue Frames können mit einer anderen Rate (häufiger oder weniger häufig) als eine Simulationsaktualisierung auftreten. Die Framerate oder kurz fps (frames per second) ist die Anzahl der Bilder, die pro Sekunde erscheinen.
Funktion
Eine Funktion (auch Routine genannt) ist wiederverwendbarer Code, der Anweisungen zum Ausführen einer Aktion oder zum Erstellen eines Outputs je nach Input bereitstellt.
Zum Definieren einer Funktion sind drei Hauptbestandteile erforderlich: ein einzigartiger Name, der als Ergebnis zu erwartende Informationstyp und die Wirkungsweise der Funktion, wenn sie aufgerufen wird.
Dies ist die grundlegende Syntax einer Funktion:
name() : type = codeblock
-
name() und type, getrennt durch Doppelpunkt: Funktionssignatur, die angibt, wie die Funktion aufgerufen und verwendet wird, sowie der Wert des von dir angegebenen Typs, der von der Funktion zurückgegeben werden muss. Dieses Format entspricht der Art, wie Konstanten erstellt werden, außer „()“ nach name, die den Aufruf der Funktion in deinem Code nachahmen.
-
Funktions-Codeblock: Du definierst, was die Funktion tun soll, wenn sie aufgerufen wird, indem du
=codeblock
angibst, wobeicodeblock
eine beliebige Folge von einem oder mehreren Ausdrücken ist. Wenn die Funktion aufgerufen wird, werden die Ausdrücke im Codeblock ausgeführt.
-
Funktionsaufruf
Ein Ausdruck, der eine Funktion auswertet (bekannt als Calling oder Aufruf). Funktionsaufrufe können zwei Formen haben, abhängig davon, ob die Funktion über den
decides
-Effekt verfügt:FunctionName()
undFunctionName[]
. Der Ergebnis-Typ des Funktionsaufrufausdrucks wird in der Funktionssignatur definiert.
Funktionssignatur
Die Funktionssignatur erklärt die Funktionsnamen (Kennung) und den Input (Parameter) und das Output-(Ergebnis) der Funktion. Verse-Funktionen können auch Bezeichner haben, die angeben, wie eine Funktion verwendet oder implementiert werden soll.
funktionale Logikprogrammierung
Die Kombination von [funktionalen](#functionalprogramming] und Logikprogrammierung-Paradigmen in einer einzelnen Sprache.
Funktionale Programmierung
Der Typ der deklarativen Programmierung, die sich auf die Verwendung von Funktionen konzentriert. Die funktionale Programmierung möchte das Testen und Debugging einfacher machen, indem die Nebeneffekte reduziert werden. Ein Beispiel für eine funktionale Programmiersprache ist Haskell.
Zukunft
Eine Aufgabe, deren Ausführung begonnen hat, die jedoch ohne Abbruch angehalten wurde. Sie heißt „future“, weil sie irgendwann in der Zukunft abgeschlossen wird.
G
Spielschleife
Eine Spielschleife ist Code, der wiederholt ausgeführt wird (Loop), um auf Input zu reagieren (normalerweise der Spieler, der mit dem Controller oder der Maus interagiert), um den Spielstatus zu aktualisieren, und Output liefert, der dem Spieler zeigt, dass sich seine Handlung auf den Spielstatus auswirkt, wenn er zum Beispiel eine Taste drückt, die ein Licht einschaltet. Die Schleife endet normalerweise, wenn das Spiel einen [Abschlussstatus](#completed] erreicht, indem der Spieler zum Beispiel ein Ziel erreicht, oder einen Fehlschlagstatus, wenn dem Spieler zum Beispiel die Zeit ausgeht, bevor er das Ziel erreicht.
Spielzustand
Zustand eines Spiels oder einer anderen Simulation. Er besteht aus allen Datenwerten, die das System beschreiben. Konstante und variable Werte bestimmen den Systemzustand.
Generator
Ein Generator erzeugt nacheinander eine Folge von Werten und gibt dem Wert in der Folge einen Namen.
Gruppe
Die Aktion, einen Ausdruck in
()
einzuschließen. Dies gibt explizit die Reihenfolge der Auswertung an. Die Gruppierung kann auch die Lesbarkeit des Codes verbessern.
H
Handler
Ein Handler ist die Funktion die aufgerufen wird, um auf ein gebundenes Event zu reagieren. Beispiel: Wird eine Funktion an das InteractedWithEvent einer Taste gebunden, so wird jedes Mal, wenn ein Spieler mit der Taste interagiert, der mit diesem Event verknüpfte Handler aufgerufen.
hart kodiert
Hart kodierte Daten werden direkt in den Code geschrieben, anstatt die Daten einer Variablen zuzuweisen. Dies macht den Code in der Regel weniger flexibel und schwieriger zu aktualisieren, aber es gibt Fälle, in denen es sinnvoll ist, dies zu tun.
Kopfknoten
Der erste Knoten in einer verknüpften Liste wird Kopfknoten genannt, und der letzte Knoten ist der Endknoten.
hexadezimal
In Verse kannst du anstelle des dezimalen Zahlensystems, das die Basis-10 verwendet, das hexadezimale Zahlensystem (Basis-16) verwenden, um Ganzzahlen darzustellen. Das bedeutet, dass Hexadezimalwerte mit den Ziffern 0–9 und den Buchstaben A–F dargestellt werden. Beispielsweise ist 0x7F dasselbe wie 127 und 0xFACE ist dasselbe wie 64206.
Dies ist eine alternative Darstellungsweise von Ganzzahlen.
Hierarchisch
Klare Ebenen oder Hierarchien von Rang, Wichtigkeit oder Kontrolle haben. Übliche hierarchische Beziehungen sind Parent-/Child-Element oder Superklasse/Subklasse.
I
IDE
Eine integrierte Entwicklungsumgebung (IDE) ist eine Software, die eine Benutzeroberfläche zum Erstellen und Debuggen von Programmen bereitstellt.
Kennung
Eine Kennung ist der Name, den Dinge in einem Programm erhalten, wie etwa Variablen oder Funktionen, um sie eindeutig zu identifizieren.
if-Ausdruck
Mit dem
if
- Ausdruck kannst du Entscheidungen treffen, die den Fluss des Programms ändern. Wie in anderen Programmiersprachen unterstützt derif
-Ausdruck in Verse die bedingte Ausführung, aber in Verse verwenden die Bedingungen Erfolg und Fehlschlag, um die Entscheidung zu treffen.
unmittelbar
Ein unmittelbarer Ausdruck wird ohne Verzögerung ausgewertet, was bedeutet, dass die Auswertung innerhalb der aktuellen Simulationsaktualisierung abgeschlossen wird.
unveränderlich
Nachdem ein Objekt erstellt wurde, kann sein Status nicht geändert werden. Vergleiche mit veränderlich.
Imperative Programmierung
Ein Paradigma, bei dem das Programm explizit beschreibt, wie ein Programm Schritt für Schritt ausgeführt wird. Ein Beispiel für eine imperative Programmiersprache ist C.
Index
Ein Index stellt die Positionen von Elementen in einer Sequenz durch numerische Darstellung dar. Eine Sequenz kann eine Liste, einen String oder eine beliebige Folge von Werten sein.
Indizes verwenden [nullbasierte Zählung] (#zero-based-numbering). Das heißt, die erste Position im Index ist 0 und die fünfte Position wäre 4.
Infer
Es gibt Fälle, in denen du den Typ nicht explizit festlegen musst, z. B. beim Erstellen einer Konstante. Beispielsweise wird in
MyConstant := 0
der Typ für MyConstant als int abgeleitet, da ihm ein Integer-Wert zugewiesen ist. In solchen Fällen wird der Typ abgeleitet.
Infix
Ein Format für einen Operator, bei dem es zwei Operanden gibt und der Operator zwischen den Operanden steht.
Vererbung
In Verse kannst du eine Klasse erstellen, die die Definition einer anderen Klasse erweitert, indem du die Felder und Methoden der anderen Klasse hinzufügst oder änderst. Das wird oft als Subklassenbildung oder Vererbung bezeichnet, da eine Klasse Definitionen von der anderen Klasse erbt.
initialisieren
Um eine Variable zu erstellen, gebe ihre Kennung und Typ an, der als Deklarieren einer Variable bezeichnet wird, und weise der Variablen einen Wert zu, der Initialisierung heißt.
Instanz
Eine Instanz einer Klasse ist ein Objekt. Eine Instanz hat dieselben Verhaltensweisen, die durch ihren Klassentyp definiert sind, jedoch mit echten Werten.
instantiieren
Um eine Instanz oder einen Werts einer Datenstruktur oder eines Datentyps, z. B. einer Klasse oder Struktur, zu erstellen. Siehe auch Archetyp-Instanziierung.
int
Der in Verse verwendete Typ zum Speichern und Verarbeiten von Ganzzahlen wie
1
,-30
und777
. Einint
kann eine positive oder negative Zahl (oder Null) ohne Bruchkomponenten enthalten.
Ganzzahl
Eine Ganzzahl ist eine ganze Zahl (keine Bruchzahl), die positiv, negativ oder null sein kann.
Schnittstelle
Eine Schnittstelle ist ein Typ, der einen Vertrag bereitstellt, wie mit jeder Klasse zu interagieren ist, die die Schnittstelle implementiert. Eine Schnittstelle kann nicht instantiiert werden, aber eine Klasse kann von der Schnittstelle erben und ihre Methoden implementieren.
Interne Klasse
Eine Klasse, die als
epic_internal
gekennzeichnet ist, was bedeutet, dass du keine eigene Instanz der Klasse erstellen kannst. Die APIs können nur für den Zugriff auf ein internes Objekt verwendet werden.
Interpolation
Die Überblendung neuer Werte, die zwischen bekannten Werten liegen.
Interpreter
Ein Programm, das ein Programm Zeile für Zeile analysiert und ausführt.
Aufrufzeit
Die Zeit, die ein Ausdruck benötigt, um zu evaluieren. Ein sofortiger Aufruf nimmt praktisch keine Zeit in Anspruch. Ein asynchroner Ausdruck kann sofort abgeschlossen werden oder latent sein.
aufrufen
Siehe aufrufen.
Is-a-Beziehung
Die Beziehung zwischen einer Parent-Klasse und einer Child-Klasse wird als "is-a"-Beziehung bezeichnet. Die Child-Klasse in einer is-a-Beziehung erbt von der Parent-Klasse.
iterieren
Um Code für jedes Element in einer Sequenz auszuführen.
J
K
Schlüssel-Wert-Paar
Wenn ein Schlüssel einem Wert zugeordnet wird, bilden sie zusammen ein Schlüssel-Wert-Paar. Du kannst den Wert mit der Taste nachschlagen.
Schlüsselwort
Schlüsselwörter sind reservierte Wörter, die für den Compiler eine besondere Bedeutung haben. Beispiele für Schlüsselwörter sind
for
undclass
. Schlüsselwörter können nicht als Kennungen verwendet werden.
L
Lebensspanne
Siehe Lebenszeit.
Lebensdauer
Die Zeit zwischen der Erschaffung eines Objekts und seiner Vernichtung. Synonym für Lebensspanne.
Verknüpfte Liste
Eine lineare Datenstruktur, in der jedes Element einen Verweis auf das nächste Element in der Liste speichert.
Knoten einer verknüpften Liste
Jedes Element in einer verknüpften Liste ist ein Knoten. Ein Knoten ist ein Container, der Daten und einen Verweis auf den nächsten Knoten in der Liste enthält.
literal
Ein fester Wert in der Programmiersprache Verse, z. B. eine Zahl oder ein Zeichen. Beispielsweise ist 1 ein Ganzzahl-Literal.
lokal
Bezieht sich auf eine Konstante oder Variable innerhalb eines Codeblocks. Diese können nicht außerhalb des Codeblocks verwendet werden, in dem sie erstellt wurden. Siehe auch Bereich.
Sprachregion
Beim Programmieren ist eine Sprachregion ein Parametersatz, der Benutzersprache, -region und weitere Aspekte der Benutzeroberfläche definiert. In Verse ist
Sprachregion
spezifisch ein Typ, der den Kontext vorgibt, wannMeldungen
lokalisiert werden sollen, und die Sprache für Texte und Zahlen vorgibt.
Logik
Verse verwendet
logic
als Typ für die Werte der Booleschen Logik:true
undfalse
. Um die Ablaufsteuerung zu bestimmen, verwendet Verse häufig eine Kombination aus Fehlschlagkontexten und fehlbaren Ausdrücken, statt den Status eineslogic
-Typs zu testen.
Logik-Programmierung
Ein Programmierungs-Paradigma, das Boolesche Logik verwendet, um zu steuern, wie Fakten und Regeln zu den Problemen innerhalb des Systems dargestellt oder ausgedrückt werden.
Schleife (Loop)
Eine
loop
wiederholt die Ausdrücke in ihrem Codeblock. Einloop
-Ausdruck wird endlos wiederholt, es sei denn, du verlässt die Schleife (was häufig in der parallelen Programmierung zulässig ist). Zum Beispiel:loop: Sleep(1.0) # Sleep(1.0) wartet 1 Sekunde, bevor mit dem nächsten Ausdruck fortgefahren wird. Platform.Hide() Sleep(1.0) # Sleep(1.0) wartet 1 Sekunde, bevor mit dem nächsten Ausdruck fortgefahren wird. Platform.Show() # Die Schleife startet sofort neu und ruft erneut Sleep(1.0) auf.
Dieser Codeblock wiederholt die vier Ausdrücke für immer: eine Sekunde warten, eine Plattform verschwinden lassen, eine weitere Sekunde warten und die Plattform wieder erscheinen lassen.
Ein Beispiel dafür, wie eine Schleife in der Spieleentwicklung eingesetzt werden kann, findest du unter Verschwindende Plattform in Schleife.
M
Karte
Eine Zuordnung ist ein Container zur Speicherung von Werten, die mit einem anderen Wert verbunden sind, der als Schlüssel-Wert-Paare bezeichnet wird. Schlüssel-Wert-Paare können eine beliebige Kombination von Typen sein, solange der Schlüsseltyp vergleichbar ist. Die Elemente einer Zuordnung haben die Reihenfolge, in der du die Schlüssel-Wert-Paare in die Karte einfügst, und du kannst auf die Elemente über ihre einzigartigen Schlüssel zugreifen. Siehe auch Containertypen.
mathematischer Ausdruck
In Verse ist ein mathematischer Ausdruck ein Ausdruck, der einen der folgenden Operatoren verwendet:
+
,-
,*
oder/
.
Mitglied
Eine benannte Variable oder Funktion, die ein Unterteil einer zusammengesetzten Datenstruktur ist (z. B. eine Verse-Klasse, -Struktur, -Schnittstelle oder -Modul) . Mitgliedervariablen werden häufig als Felder bezeichnet und Mitgliederfunktionen als Methoden
Meldung
Eine
Meldung
in Verse ist ein Typ, der von der Sprachregion unabhängigen Text enthalten kann. Wenn du die Variable einerMeldung
mit dem Wert eines Strings initialisierst, ist der String der Standardtext und die Sprache der Meldung.
Metaverse-Umgebung
Eine beständige und global konsistente Echtzeit-3D-Welt mit einer Laufzeitumgebung, die gleichzeitigen, komplexen, voneinander abhängigen, benutzergeschriebenen Code mit Millionen von gleichzeitig verbundenen Benutzern ausführt.
Methode
Eine Methode ist eine Funktion, die an eine Klasse angehängt ist und nur auf einer Instanz dieser Klasse aufgerufen werden kann.
Modul
Ein Verse Modul ist eine atomare Code-Einheit, die weiter verteilt werden kann und von der du abhängig bist und die sich im Laufe der Zeit weiterentwickeln kann, ohne Abhängigkeiten zu unterbrechen. Du kannst ein Modul in deine Verse-Datei importieren, um Codedefinitionen aus anderen Verse-Dateien zu verwenden.
Weitere Informationen findest du unter Module und Pfade.
veränderlich
Das bezieht sich auf einen Objektzustand, der nach der Erstellung noch geändert werden kann. In Verse ist Veränderlichkeit nur mit Zeigern möglich.
Vergleiche mit unveränderlich.
Mutex
Ein Mutex ist ein Synchronisierungsprimitive, der exklusiven Zugriff auf eine gemeinsame Ressource gewährt, indem nur ein Thread verwendet wird. Siehe auch gegenseitiger Ausschluss.
gegenseitiger Ausschluss
Wenn mehr als ein Prozess auf dasselbe Codesegment zugreift, wird dieses Segment als kritischer Abschnitt bezeichnet. Gegenseitiger Ausschluss ist eine Möglichkeit sicherzustellen, dass nicht zwei Prozesse gleichzeitig auf einen kritischen Abschnitt zugreifen können.
N
NaN
Not a Number: Ein Wert, der keine Nummer darstellt.
native
native
bedeutet, dass die Definitionsdetails eines Elements in C++ implementiert sind. Dieser Bezeichner kann automatisch C++-Definitionen generieren, die dann vom Entwickler verwendet werden können. Dernative
-Bezeichner wird bei Klasse, Interface, Enum, Methode, und Daten verwendet.
nativ aufrufbar
Gibt an, dass eine Instanz-Methode sowohl nativ (in C++ implementiert) ist als auch von anderem C++-Code aufgerufen werden kann. Du siehst, wie dieser Bezeichner für eine Instanzmethode verwendet wird. Dieser Bezeichner wird nicht an Subklassen propagiert, sodass du ihn nicht zu einer Definition hinzufügen musst, wenn du eine Methode überschreibst, die diesen Bezeichner hat.
verschachtelt
Wenn Code verschachtelt ist, ist ein Codeblock in einem anderen Codeblock enthalten, der eine umfassendere Funktion ausführt.
kein Rollback
Dieser Effekt gibt an, dass das veränderbare Lesen und Schreiben von Daten einer Funktion nicht rückgängig gemacht werden kann, was bedeutet, dass die Funktion in einem Fehlerkontext nicht aufgerufen werden kann (wodurch es im Fehlerfall zum Rollback-Verhalten kommt).
Knoten
O
Objekt
Eine Instanz einer Klasse ist ein Objekt. Eine Instanz hat die gleichen Verhaltensweisen, die durch ihre Klassen-Typ definiert sind, aber mit realen Werten.
Die Begriffe Instanz und Objekt sind synonym.
Objektorientierte Programmierung
Objektorientierte Programmierung (OOP) ist ein Programmierparadigma, das auf dem Konzept von Klassen und Objekten beruht.
Open-World-Sprache
Eine Sprache, in der sich voneinander abhängige Module, die von vielen verschiedenen Benutzern und Organisationen geschrieben wurden, im Laufe der Zeit weiterentwickeln können, ohne die Schnittstellenkompatibilität und die dauerhafte Datenkompatibilität zu beeinträchtigen, indem klar definierte Subtypisierungsregeln befolgt werden.
Operand
Die Menge, für die eine Operation ausgeführt wird. Beispielsweise ist im Ausdruck
1 + 2
das+
ein Operator und1
und2
sind beides Operanden.
Operation
Eine Aktion, die von einem Programm ausgeführt wird, um eine bestimmte Aufgabe zu erfüllen. Es gibt vier Standard-Gruppen von Computeroperationen: Input, Verarbeitung, Output und Speicherung. Eine Operation ist eine Art von Ausdruck.
Operator
Ein Symbol, das eine Aktion oder einen Prozess darstellt. Zum Beispiel ist in
1 + 2
das+
der Operator.
Operatorvorrang
Das bezieht sich auf die eingebaute Reihenfolge der Auswertung beim Kombinieren von Operatoren in Verse. Wenn beispielsweise mehrere Operatoren in demselben Ausdruck verwendet werden, ist die Reihenfolge, in der sie ausgewertet werden, von Bedeutung.
Zum Beispiel wird
1 + 2 * 3
nicht zu3 * 3
ausgewertet, da die Multiplikation Vorrang vor der Addition hat.Der Vorrang von Operatoren kann durch Gruppierungs -Ausdrücke außer Kraft gesetzt werden.
Option
In Verse kann eine Option einen oder keinen Wert für einen Typ enthalten.
Reihenfolge der Auswertung
Bezieht sich auf die Operatorpriorität — die Reihenfolge, in der bestimmte Operationen in einem Ausdruck ausgeführt werden sollten.
Überladung
Die Überladung einer Funktion oder eines Operators bedeutet, dass derselbe Funktionsname oder dasselbe Operatorsymbol unterschiedliche Parameter haben kann. Sagst du beispielsweise, dass ein 3D-Vektor gleich einem anderen 3D-Vektor ist, wie (1,2,3), ist das ziemlich klar. Aber du kannst den Gleichheitsoperator verwenden, um zu sagen, dass dein 3D-Vektor einer einzelnen Zahl entspricht, z. B. 1. In diesem Fall wird der 3D-Vektor möglicherweise auf (1,1,1) gesetzt, aber der überladende Teil besteht darin, dass es mehrere „3D-Vektor =“-Operatoren mit unterschiedlichen Parametern gibt. Die Sprache müsste sich den Kontext ansehen, um zu sehen, welcher verwendet werden soll.
Außerkraftsetzen
In Verse können Felder einer Superklasse außer Kraft gesetzt werden, und ihnen können Anfangswerte zugewiesen werden. Zum Beispiel:
tank := class(player_character): StartingShields<override> : int = 100 MaxShields<override> : int = 200 AllowOvershield<override> : logic = true DamageReduction : int = 50 CreateTankPlayerCharacter() : tank = return tank{}
Die Tank-Klasse hat Werte für
StartingShields
,MaxShields
, undAllowOvershield
, die von den Klassen-Standardwerten abweichen.Du kannst auf diese Weise auch Werte für Methoden außer Kraft setzen.
Mehr dazu findest du unter Subklasse.
P
Paradigma
Ein typisches Muster oder Modell für etwas. In der Programmierung ist ein Paradigma eine Art, wie eine Programmiersprache organisiert ist. Es gibt vier wesentliche Paradigmen für Programmiersprachen:
Außerdem gibt es Multi-Paradigmen-Sprachen, wie Verse.
parallel
Mehrere Berechnungen, die im selben physikalischen Zeitraum ausgeführt werden, z. B. auf separaten Prozessoren, sind parallel.
Parameter
Eine Input-Variable, die eine Domäne enthält, wie z. B. Typ, und einen optionalen standardmäßigen Wert, der in einer Funktionssignatur definiert ist, die dann im Körper der Funktion verwendet wird. Vergleiche mit Argument.
analysieren
Analysieren bedeutet in der Informatik, dass eine Reihe von Befehlen – normalerweise ein Programm – in einfacher zu verarbeitende Komponenten getrennt wird, die auf korrekte Syntax analysiert und dann an Tags angehängt werden, die jede Komponente definieren.
Parser
Ein Programm zum Analysieren von Code.
Pfad
Verse-Pfade bieten einen globalen Namensraum zum Identifizieren von Dingen und lehnen sich an die Idee von Webdomains an. Diese Pfade sind dauerhaft, einzigartig und von jedem Verse-Programmierer auffindbar.
Perforce
Perforce (P4) ist ein Software-Tool, das eine Revisionskontrolle (die auch als Quellcodekontrolle oder Versionskontrolle bezeichnet wird) und so auch eine Methode bietet, um Änderungen am Softwarecode nachzuverfolgen und zu verwalten. Das ist praktisch, wenn Programmiererteams an dem gleichen Projekt arbeiten. Wenn jemand einen Fehler macht, können über die Versionskontrolle frühere Versionen des Codes verglichen werden, um das Problem zu finden und zu beheben, ohne die Arbeit aller Beteiligten zu unterbrechen.
Spielbereich
Ein Verse API Modul, mit dem du ein Array von Spielern oder Teams oder das Team für einen bestimmten Spieler abrufen kannst. Außerdem kannst du von Spielern hinzugefügte und von Spielern entfernte Ereignisse abonnieren.
Zeiger
Ein Zeiger ist eine Möglichkeit, auf eine veränderbare „Box“ zu verweisen, die einen bestimmten Wert Typ enthalten kann. Mit einem Zeiger kannst du den spezifischen Wert in diesem Feld ändern. Vergleiche mit Wert.
Zeigervariable
Eine Zeiger-Variable zeigt auf eine Speicherstelle, an der ein Wert gespeichert ist. Nachdem du eine Zeigervariable erstellt hast, kannst du den Speicherort der Zeigervariablen nicht ändern, aber du kannst den an diesem Speicherort gespeicherten Wert ändern.
Abruf
Abrufen bezieht sich auf das aktive Abtasten des Status eines externen Geräts durch ein Client-Programm als synchrone Aktivität. Ein Abruf wird am häufigsten in Bezug auf Input/Output (I/O) verwendet und wird auch als abgefragter I/O oder softwaregesteuerter I/O bezeichnet.
polymorph
Polymorph kommt von poly-, was viele bedeutet, und -morph, was Form bedeutet. Polymorphes Verhalten tritt auf, wenn eine Variable unter verschiedenen Bedingungen unterschiedliche Werte haben kann.
postfix
Ein Format für einen Operator, bei dem es nur einen Operand gibt und der Operator nach dem Operanden steht.
Vorrang
Die Reihenfolge, in der bestimmte Operationen in einem Ausdruck ausgeführt werden müssen.
Prädikat
In Verse ist ein Prädikat etwas, das entweder erfolgreich ist oder fehlschlägt.
Aussetzen
Das Unterbrechen der Ausführung einer Aufgabe mit der Absicht, sie zu einem späteren Zeitpunkt fortzusetzen, wird als Aussetzen bezeichnet. Das wird normalerweise von einem externen Planer ohne Unterstützung oder Mitwirkung durch die Aufgabe durchgeführt.
Präfix
Ein Format für einen Operator, bei dem es nur einen Operand gibt und der Operator vor dem Operanden steht.
primitiver Typ
Ein Primitiv ist ein beliebiger Typ, der nicht aus anderen Typen erstellt wurde. Das bedeutet, dass ein Primitiv kein Komposit ist und nicht weiter zerlegt werden kann. Beispiele für eingebaute primitive Typen sind
void
,logic
,int
,float
,rational
undchar
. Primitive sind in die Verssprache eingebaut.Vergleiche mit Containertyp.
Programm
Ein Programm ist eine Reihe von Anweisungen, die dem Computer mitteilen, wie er etwas tun soll. Die Grundlagen jedes Programms zeigen, wie der Computer Input empfängt und Output zurückgibt.
Ein Programm löst Probleme. Aber Programme sind sehr wörtlich. Es ist so, als würde man einen Vertrag mit einem Flaschengeist abschließen. Der Geist (das Programm) gibt dir genau das, wonach du fragst. Und zwar genau. Fehler treten auf, wenn der Programmierer Annahmen darüber macht, was passieren soll, anstatt genau zu beschreiben, welcher Input empfangen werden kann und welcher Output resultieren wird.
Programmierung
Der Akt des Schreibens von Anweisungen (eines Programms), die vom Computer kompiliert und ausgeführt werden können.
Programmiersprache
Eine formale Sprache, die zum Schreiben von Computerprogrammen verwendet wird. Es gibt viele Programmiersprachen und jede hat ihre eigenen genauen Regeln. Beispiele wären Scratch, eine visuelle Programmiersprache, die zur Entwicklung interaktiver Geschichten, Spiele und Animationen verwendet wird, oder C++, eine textbasierte Sprache, die häufig in der Spieleentwicklung verwendet wird. Verse ist eine Programmiersprache, die von Epic Games für Creators entwickelt wurde, die mehr über die Verwendung von Entwicklungswerkzeugen erfahren möchten.
verbreiten
Verbreiten in einer Funktion ist das, was passiert, wenn der Anrufer sich nicht darum kümmern muss, was im Fall eines Fehlschlags passiert. Beispielsweise könnte eine Funktion mit dem
decides
-Effekt von einer anderen Funktion mit demdecides
-Effekt aufgerufen werden. Was auch immer den Aufrufer angerufen hat, müsste sich dann um den Fehlschlag kümmern.
Eigenschaft
Eine Eigenschaft ist ein Mitglied (Feld), das es ermöglicht, Werte zurückzugeben und verfügbar zu machen.
Pseudocode
Pseudocode ist eine detaillierte Beschreibung in einfacher Sprache (nicht in Programmiersprache), was ein Algorithmus tun soll. Pseudo bedeutet „nicht real“, man könnte Pseudocode also als künstlichen Code bezeichnen. Er ist nützlich, um herauszuarbeiten, was der Zweck eines Algorithmus ist.
Du kannst dir Pseudocode auch als detaillierten Umriss vorstellen. Pseudocode wird normalerweise geschrieben, um einen größeren oder komplexen Teil eines Programms zu planen, bevor echter Code geschrieben wird.
Rein
Erklärt, dass eine Funktion bei gleichem Input immer genau denselben Output liefert und keine Nebeneffekte hat (in veränderbare Variablen schreibt, veränderbare I/O-Effekte hat usw.).
Q
Qualifizieren
Definieren einer Kennung innerhalb eines Bereichs, der es ermöglicht, dass die Kennung „wiederverwendet“ wird. Du könntest beispielsweise eine Konstante mit dem Namen „Katze“ haben. Du könntest denselben Namen für ein Klassen-Feld mit dem Namen „sarah.cat“ verwenden. Beide enthalten „Katze“ im Namen, aber „Sarah.Katze“ wurde qualifiziert.
Abfrage
Abfrageausdrücke verwenden den Operator
?
, um zu prüfen, ob ein logischer oder optionaler Werttrue
ist.
R
race
In einem
race
-Ausdruck werden alle Ausdrücke imrace
-Block gleichzeitig ausgeführt, aber sobald ein Ausdruck abgeschlossen ist, werden die anderen Ausdrücke abgebrochen, und derrace
-Ausdruck gibt die Kontrolle zurück.race
ist ein Strukturierte-Gleichzeitigkeit-Ausdruck.
„race“-Zustand
Ein
race
-Zustand liegt vor, wenn ein Programm versucht, mehrere Operationen zeitgleich auszuführen, die nacheinander ausgeführt werden müssen.
RAII
RAII ist ein Akronym für resource acquision is initialization und beschreibt, wenn ein Objekt Ressourcen nur zwischen Initialisierung und Abschluss erwirbt, um Ressourcen effektiver zu verwalten.
Auslösen
Wenn eine Funktion ein Signal aussendet, löst sie ein Event aus. Die Beteiligten werden benachrichtigt, dass ein Event eingetreten ist, z. B. die Betätigung einer Schaltfläche, und alle Event-Handler werden aufgerufen.
„range“-Ausdruck
„range“-Ausdrücke enthalten alle Zahlen zwischen und einschließlich der beiden angegebenen Werte mit
..
dazwischen, zum Beispiel1..5
. „range“-Ausdrücke können nur an einigen Stellen verwendet werden, z. B. infor
-Ausdrücken.
Rational
Einer der drei numerischen Haupttypen, die in Verse unterstützt werden, zusammen mit
int
undfloat
. Rationale Typen siehst du nur in Ergebnissen einer Ganzzahldivision. Du musst diesen Wert zurück in eine Ganzzahl umwandeln, indem du den Wert mitCeil()
auf- oder mitFloor()
abrundest.
Rationale Zahl
Eine Zahl, die als einfacher Bruch mit zwei Ganzzahlen ausgedrückt werden kann. Zum Beispiel kann 1,75 als 7/4 ausgedrückt werden, aber die Quadratwurzel von 2 (√2) kann nicht als Bruch ausgedrückt werden. Daher wird sie als irrationale Zahl angesehen. Ein weiteres Beispiel für eine irrationale Zahl ist Pi, die mit 3,14159... beginnt und sich unendlich fortsetzt.
Rekursion
Rekursion bedeutet, dass eine Funktion sich selbst aufruft.
Umgestalten
Die Struktur des Codes zu ändern, ohne seine Funktionalität zu verändern. Beispielsweise könnte ein Code-Block, der in einem Programm mehrfach wiederholt wird, stattdessen in einen Funktionsaufruf umgewandelt werden. Refactoring kann die Lesbarkeit des Codes verbessern und die Komplexität des Codes reduzieren, ohne das Verhalten des Codes zu verändern.
REPL
Read-Evaluate-Print Loop oder REPL ist eine Computerumgebung, in der du Code eingeben und ihn lesen und auswerten lassen kannst, um dann die Ergebnisse anzuzeigen. Mit REPL kannst du eine Sprache erkunden und herausfinden, was funktioniert und was nicht, ohne etwas zu beschädigen.
Ergebnis
Wenn ein Ausdruck ausgeführt wird und dann einen Wert ausgibt, ist dieser Wert ein Ergebnis.
return
Ein Ausdruck, der ein Programm anweist, eine Unterroutine zu verlassen und zur Return-Adresse zurückzukehren. Die Return-Adresse ist die Adresse, von der aus die Unterroutine aufgerufen wurde.
Anstatt dich darauf zu verlassen, dass der letzte Ausdruck im Codeblock einer Funktion den richtigen Wert erzeugt, kannst du das Ergebnis mithilfe eines
return
-Ausdrucks auch explizit angeben. Wenn derreturn
-Ausdruck ausgeführt wird, verlässt er sofort den Codeblock der Funktion. Das bedeutet, wenn du denreturn
-Ausdruck vor anderem Code platzierst, wird der folgende Code nicht ausgeführt.
Rollback
Das Programm in einen zuvor definierten Zustand zurückversetzen, normalerweise, um einen fehlbaren Ausdruck zu beheben.
Routine
Siehe Funktion.
Laufzeit
Bezieht sich auf die Zeit, in der das Spiel, die Simulation oder die Anwendung läuft. Vergleichbar mit der Kompilierzeit, die sich auf die für die Kompilierung aufgewendete Zeit bezieht, oder der Entwicklungszeit, die sich auf die für die Entwicklung, Kompilierung und Fehlersuche aufgewendete Zeit bezieht.
Es ist üblich, zwischen Dingen zu unterscheiden, die zur Laufzeit passieren, und Dingen, die zur Kompilierzeit passieren.
rush
Bei einem
rush
-Ausdruck werden alle Ausdrücke imrush
-Block gleichzeitig ausgeführt. Sobald ein Ausdruck abgeschlossen ist, gibt derrush
-Ausdruck die Kontrolle zurück, und die anderen Ausdrücke werden weiter eigenständig ausgeführt.rush
ist ein Strukturierte-Gleichzeitigkeit-Ausdruck.
S
Bereich
Bereich bezieht sich auf den Teil des Programms, in dem die Zuordnung eines Namens zu einem Wert gültig ist und in dem dieser Name verwendet werden kann, um auf den Wert zu verweisen. Beispielsweise existieren alle Konstanten oder Variablen, die du innerhalb einer Funktion erstellst, nur im Kontext der Funktion. Das bedeutet, dass die Lebensdauer von Objekten auf den Bereich beschränkt ist, in dem sie erstellt wurden, und nicht außerhalb dieses Codeblocks verwendet werden kann.
Script
Eine in sich geschlossene Menge von ausführbarem Verse-Code, die einem Objekt zugeordnet ist.
„self“-Variable
Self
ist eine besondere Kennung in Verse, der in einer Klassen-Methode verwendet werden kann, um auf die Instanz der Klasse zu verweisen, in der die Methode aufgerufen wurde. Du kannst auf andere Felder der Instanz verweisen, auf der die Methode aufgerufen wurde, ohneSelf
zu verwenden, aber wenn du auf die Instanz als Ganzes verweisen musst, musst duSelf
verwenden.
Semantischer Fehler
Siehe Compiler-Fehler.
Semaphor
Ein Semaphor entspricht einem Mutex, abgesehen davon, dass ein Mutex andere Threads von verfügbaren Ressourcen ausschließt, während ein Semaphor nur signalisiert, dass die Ressource verwendet wird.
Sequentielle Ausführung
Code wird im Allgemeinen zeilenweise in der Reihenfolge ausgeführt, in der die Ausdrücke erscheinen. Dies wird als sequentielle Ausführung bezeichnet.
set
Ein Schlüsselwort, das verwendet werden kann, um den Wert einer Variable zu ändern, während das Programm ausgeführt wird.
Die Syntax dafür lautet
set name = value
.set
ist das Schlüsselwort,name
ist der Name der Variable, die geändert werden soll, undvalue
ist der Zielwert, in den geändert werden soll.Dies wird als Zuweisung bezeichnet.
Shadowing
Als Shadowing wird bezeichnet, wenn eine Kennung eine andere Kennung verbirgt. Shadowing ist ein Fehler in Verse, der verhindert, dass der Code kompiliert werden kann.
Nebeneffekt
Ein Nebeneffekt tritt auf, wenn Code, wie eine Funktion oder ein Ausdruck, einen Zustand außerhalb seines Bereichs verändert.
Vorzeichenbehaftete Ganzzahl
Eine Vorzeichenbehaftete Ganzzahl ist ein Wert, der eine negative oder positive Zahl, aber auch Null enthalten kann. Sie wird als vorzeichenbehaftete Ganzzahl bezeichnet, weil mit einem „+“- oder „-“-Zeichen ganz links angegeben werden kann, ob die Zahl positiv oder negativ ist. Vorzeichenlose Ganzzahlen können nur positive Zahlen oder Null sein.
Simulation
Ein Simulation ist die Darstellung des Verhaltens oder der Merkmale eines Systems durch Verwendung eines anderen Systems. In Verse wäre dies ein Computerprogramm, das im Verlauf der Zeit ausgeführt wird. Dieser Begriff ist weiter gefasst als Spiel, was ein Simulationstyp ist. Neben Spielen umfassen Simulationen auch Dinge wie interaktive Erfahrung, Kunst, medizinische Visualisierung, architektonische Visualisierung, KI, Fahr-/Flug-/Militärsimulatoren usw. Simulationen können in verschiedenen Medien eingesetzt werden, zum Beispiel als virtuelle Realität (VR) und erweiterte Realität (AR)
Simulationsaktualisierung
Eine sich wiederholende Runde, ein sich wiederholender Schritt oder Inkrement von Logik, Verhalten und anderen Berechnungen für eine Simulation. Dies wird häufig mit Aktualisierung abgekürzt oder synonym mit Tick oder Frame verwendet. Eine Simulationsaktualisierung weist normalerweise eine verstrichene Zeit auf, die konstant oder verschieden sein kann. Dies wird häufig als Deltazeit bezeichnet, die mit dem tatsächlichen Verlauf der Zeit zusammenfallen kann. Zum Beispiel kann eine Simulationsaktualisierung schneller als in Echtzeit erfolgen, genauso schnell oder langsamer.
Eine Simulationsaktualisierung erfolgt häufig 1:1 mit dem Frame-Rendering. Das ist bei Verse standardmäßig so. Eine Simulationsaktualisierung kann aber häufiger oder weniger häufig als ein Frame erfolgen, zum Beispiel wenn ein Online-Game-Client nicht mehr synchron mit dem Server oder den Physiksystemen ist, während mehrere Iterationen der Änderungen auf einem simulierten Objekt erfolgen. Es ist auch möglich, dass eine Simulation überhaupt nicht visuell gerendert wird.
Ausschnitt
Siehe Codeausschnitt.
Spawn-Ausdruck
Ein
spawn
-Ausdruck startet eine „async“-Funktion. Jeder Ausdruck, der auf denspawn
-Ausdruck folgt, wird sofort ausgeführt ohne Rücksicht darauf, ob derspawn
-Ausdruck abgeschlossen wurde. Derspawn
wird unabhängig fortgesetzt, bis er abgeschlossen ist. Der Spawn wird unabhängig fortgesetzt, bis er abgeschlossen ist.
Bezeichner
Ein Bezeichner wendet zusätzliche Informationen auf eine Definition an. Beispiel: Der
decides
-Effektbezeichner bei der Definition einer Funktion markiert die Funktion als fehlbar.Bezeichner fallen in eine von zwei Unterkategorien: Zugangsbezeichner und Effektbezeichner.
Spekulative Ausführung
Verse nutzt Fehlerkontexte, damit du Aktionen ausprobieren kannst, bevor du dich auf sie festlegst. Dies wird als spekulative Ausführung bezeichnet. Wenn ein Ausdruck erfolgreich ist, wird sein Effekt festgelegt, beispielsweise der Wert einer Variable geändert. Wenn der Ausdruck fehlschlägt, wird sein Effekt zurückgenommen, als wäre der Ausdruck nicht verwendet worden.
Splat
Wenn ein Tupel als einzelnes Element bei einer Funktion verwendet wird, ist es so, als wäre die Funktion mit jedem Element des Tupels separat aufgerufen worden. Dies wird als Tupelerweiterung oder Splatting bezeichnet.
Standardbibliothek
Eine Sammlung von Funktionen, Konstanten und anderen in Verse verfügbaren Sprachdefinitionen. Diese Bibliothek stellt Implementierungen für allgemeine Programmieranforderungen bereit. Sie dient als Ressource für Elemente, die Programmierer häufig verwenden, beispielsweise mathematische Funktionen.
Zustand
Ein Zustand ist die Kombination aus ursprünglichen Werten in einem Objekt und den Änderungen, die daran vorgenommen wurden.
Anweisung
Eigenständiger Befehl, der keinen resultierenden Wert hat. Verse verwendet keine Anweisungen. Stattdessen werden Ausdrücke verwendet.
Statische Prüfung
Automatische Prüfung während der Kompilierung, die Bugs anhand der Semantik des Codes erkennen kann.
STM
Abkürzung von „Software Transactional Memory“ (Software-Transaktionsspeicher). Mechanismus zur Steuerung des gleichzeitigen Zugriffs analog zu Datenbanktransaktionen, die bei gleichzeitiger Programmierung den Zugriff auf gemeinsam genutzten Speicher steuern. Verse wird zukünftig STM enthalten, weil dies unter anderem Leistungssteigerungen bei großen verteilten Simulationen bedeutet.
String
Ein String ist ein Literal-Typ in Verse, bei dem alle Zeichen zwischen Anführungszeichen ein String-Literal sind. "Hallo Welt" ist zum Beispiel ein vielbenutzter String. In Verse können Strings Buchstaben, Zahlen, Satzzeichen, Leerzeichen und sogar Emojis enthalten.
Stark typisiert
Eine Programmiersprache ist stark typisiert, wenn jeder Kennung ein Typ zugewiesen ist. Ist der Typ nicht explizit angegeben, wird er abgeleitet. Dies bedeutet, dass die Sprache keine unvorhersehbaren Ergebnisse bei Laufzeit erzeugt, da die Typen der Kennungen und die Auswirkungen von Operationen auf die Typen bekannt sind. Siehe auch statische Prüfung.
struct
Struct, kurz für „Structure“ (Struktur), ist eine Möglichkeit, verschiedene verwandte Variablen zu gruppieren. Die Variablen können jeden beliebigen Typ aufweisen.
struct
ist ein Schlüsselwort in Verse.
Strukturierte Gleichzeitigkeit
Strukturierte Gleichzeitigkeit beschreibt gleichzeitige Vorgänge innerhalb einer Lebensspanne, die auf einen bestimmten gleichzeitigen Befehl und auf den „async“-Kontextbereich beschränkt ist. Es handelt sich um einen strukturierten Kontrollfluss wie
if
,for
oderreturn
, der auf einen zugehörigen Bereich einschränkt.Zu den Strukturierte-Gleichzeitigkeit-Ausdrücken in Verse gehören
sync“](#sync), [
race“,rush“](#rush) und [
branch“.
Subklasse
Eine Klasse, die die Mitglieder (Methoden und Daten) ihrer Superklasse erbt. In Verse kannst du die Klasse mit neuen Mitgliedern oder mit geänderten geerbten Mitgliedern erweitern.
Unterausdruck
Ein Ausdruck, der in einen Codeblock geschachtelt ist.
Untermodul
Ein Verse-Modul, das in einem anderen Verse-Modul enthalten ist. Du kannst es dir wie Ordner und Unterordner vorstellen – jedes Untermodul fügt dem Pfad ein weiteres /NameDesModuls hinzu, wenn es weiter nach unten geht.
Subroutine
Ein Satz von Anweisungen innerhalb eines Computerprogramms, der zur Ausführung einer häufig verwendeten Operation entwickelt wurde. Subroutinen sind mit Funktionen vergleichbar mit dem Unterschied, dass Funktionen Berechnungen ausführen und die Ergebnisse an den Aufrufer zurückgeben. Subroutinen dagegen arbeiten, ohne dem aufrufenden Programm eine Rückmeldung zu geben.
Abonnieren
Das Abonnieren ist eine Möglichkeit, die Funktion anzugeben, die du aufrufen möchtest, wenn ein Ereignis auftritt. Dies wird als Event-Binding bezeichnet. Die verknüpfte Funktion wird als Handler bezeichnet.
Untertyp
Ein Typ, der alle Operationen seines Supertyps unterstützt. Das Schlüsselwort
subtype
kann mit Klammern verwendet werden, um festzulegen, dass ein Typ auf einen bestimmten Typ beschränkt ist. Zum Beispiel verwenden verschiedene Array-Methodensubtype
, um zu definieren, dass alle Elemente des Arrays einen vergleichbaren Supertyp haben müssen, damit die Methode funktioniert.(Input:[]t where t:subtype(comparable)).RemoveFirstElement<public> (ElementToRemove:t)<computes><decides>:[]t RemoveFirstElement
Hierfür müssen die Arrayelemente den Supertyp
comparable
haben, damit er bestimmen kann, ob Elemente in dem Array gleich dem ArgumentElementToRemove
sind.
Erfolg
Wenn ein Ausdruck abgeschlossen wird, ohne fehlzuschlagen, ist er erfolgreich. Siehe auch Fehlerkontext.
Superklasse
Klassen können Werte von einer Superklasse übernehmen, darunter alle Felder der übergeordneten Klasse. Solche Klassen werden als Subklasse der Superklasse bezeichnet.
Supertyp
Ein Supertyp ist ein Typ, der mindestens einen Subtyp hat. Alle Operationen, die vom Supertyp unterstützt werden, müssen auch von seinen Subtypen unterstützt werden. In Verse ist
any
der Supertyp über allen anderen Typen und alle anderen Typen sind Untertypen vonany
. Der Typcomparable
ist ein Supertyp für alle Typen, die in Verse vergleichbar sind, wie zum Beispielint
undfloat
.
Suspends
Ein Effekt, der eine Funktion unterbricht (aussetzt), ohne sie abzubrechen. Ein
suspends
-Ausdruck ermöglicht asynchronen-Funktionen das Aussetzen und kooperative Übertragen der Kontrolle an andere gleichzeitige Ausdrücke, bevor er abgeschlossen ist.Weitere Informationen findest du unter Gleichzeitigkeit.
sync
In einem
sync
-Ausdruck werden alle Ausdrücke imsync
-Block gleichzeitig ausgeführt und müssen abgeschlossen werden, bevor dersync
-Ausdruck die Kontrolle zurückgibt.sync
ist ein Ausdruck für strukturierte Gleichzeitigkeit.
Syntax
Regeln bzw. Grammatik der Programmiersprache.
Vergleiche mit Semantik.
Syntax-Fehler
Siehe Compiler-Fehler.
T
Endknoten
Der erste Knoten in einer verknüpften Liste wird Kopfknoten genannt, und der letzte Knoten ist der Endknoten.
Aufgabe
Eine Aufgabe ist ein Objekt, das verwendet wird, um den Zustand einer aktuell ausgeführten „async“-Funktion darzustellen. Aufgabenobjekte werden verwendet, um zu identifizieren, wo eine „async“-Funktion ausgesetzt wird und welche Werte die lokalen Variablen an diesem Aussetzungspunkt aufweisen.
Thread
Kleinste Verarbeitungseinheit, die in einem Betriebssystem ausgeführt werden kann.
Tick
Siehe Simulationsaktualisierung, was synonym zu Tick und teilweise zu Frame ist.
Kachel
Ein Rasterabschnitt auf einer Oberfläche wie Boden oder Wand.
Zeitablauf
Die Zeitablaufsteuerung ist das Herzstück der Programmiersprache Verse. Sie wird mithilfe von gleichzeitigen Ausdrücken realisiert.
Es handelt sich um eine Art von Steuerungsablauf, doch während es beim Steuerungsablauf um die Reihenfolge der Ausdrücke im Programm geht, nach denen der Computer die Ausdrücke ausführt, steuert der Zeitablauf deren zeitliche Ausführung basierend auf der Verwendung von Gleichzeitigkeitsausdrücken.
Zeitablauf ist ein anderer Ausdruck für Gleichzeitigkeit.
Top-Level-Ausdruck
Ein Ausdruck, der nicht in einen Codeblock geschachtelt ist. Top-Level-Ausdrücke können auch zusammengesetzte Ausdrücke sein, beispielsweise geschachtelte Codeblöcke.
Transacts
Wenn eine Funktion den
transacts
-Effekt aufweist, kann sie Daten lesen und schreiben. Diese Aktionen können zurückgenommen werden, wenn die Funktion außerdem den decides-Effekt aufweist. Dieser Effekt ist ein exklusiver Effekt.Funktionen, bei denen kein exklusiver Effekt angegeben ist, können Daten lesen und schreiben, doch es ist kein Rollback möglich.
Tupel
Ein Tupel ist eine Gruppe von zwei oder mehr Ausdrücken, die wie ein einziger Ausdruck behandelt wird.
Seine Elemente stehen in der Reihenfolge, in der du sie eingefügt hast, und du kannst über ihre Position im Tupel, ihren Index, auf sie zugreifen. Da die Ausdrücke in einem Tupel gruppiert sind, können sie wie ein einziger Ausdruck behandelt werden.
Hinweis: Das Wort Tupel ist eine Rückbildung aus Quadrupel, Quintupel, Sextupel usw. Vergleiche mit Array.
Typ
Der Typ definiert, welche Operationen bei Daten ausgeführt werden können und wie die Daten oder Werte für diesen Typ gespeichert werden. Es gibt allgemeine Typen wie Ganzzahl und String, Composite-Typen und benutzerdefinierte Typen. Siehe auch Primitive-Typ und Containertyp. Das Schlüsselwort
type
kann mit geschweiften Klammern verwendet werden, um einen erwarteten Typ zu definieren. Funktionsdeklarationen und numerische Bereiche werden derzeit als Deklarationen unterstützt. Zum Beispiel verwendet die FunktionSubscribe()
für die Schnittstellesubscribable
das Schlüsselworttype
, um zu definieren, dass seinCallback
-Parameter eine Funktion mit dem Rückgabetypvoid
sein muss.`Subscribe<public>(Callback:type {__(:t):void})<transacts>:cancelable`
Typ-Alias
Ein Typ-Alias ist eine Möglichkeit, einen neuen Namen für einen vorhandenen Typ zu erstellen. Wenn du einen Typ-Alias deklarierst, kannst du Alias-Namen anstelle des vorhandenen Typs verwenden. Ein Typ-Alias erstellt keinen neuen Typ, sondern bietet nur einen neuen Namen für einen vorhandenen Typ.
Typ-Casting
Du kannst eine Klasse in eine ihrer Subklassen konvertieren (Type Casting genannt), indem du die Syntax
NewReference := type_to_cast_to[Reference]
verwendest, wobeitype_to_cast_to
der Typ ist, den du verwenden willst. Dies ist ein fehlbarer Ausdruck, weil die Umwandlung des Typs fehlschlägt, wenn das Objekt nicht in diesen Typ umgewandelt werden kann - zum Beispiel, wenn die Klasse einen anderen Typ hat als die Subklasse.Das folgende Beispiel zeigt, wie du
TaggedDevice
, das den Typcreative_device_base
hat, in einen Typcustomizable_light_device
konvertierst, damit du seine spezifischen Funktionen nutzen kannst. Ist dasTaggedDevice
kein anpassbares Lichtgerät, wird es nichtTurnOn()
aufrufen.if (LightDevice := customizable_light_device[TaggedDevice]): LightDevice.TurnOn()
Typüberprüfung
Die Typüberprüfung wird verwendet, um ein Programm vor der Ausführung zu überprüfen. Sie verifiziert Werte und Syntax. Der Hauptzweck eines Typsystems in einer Programmiersprache besteht darin, die Wahrscheinlichkeit von Bugs im Programm aufgrund von Typfehlern zu verringern.
U
Unicode
Vom Unicode Consortium entwickelter Standard, um sprachen-, plattform- und geräteübergreifend eine vergleichbare Unterstützung für Zeichen bereitzustellen.
einzigartig
Der einzigartige Bezeichner kann auf eine Klasse angewendet werden, um sie zu einer einzigartigen Klasse zu machen. Um eine Instanz einer einzigartigen Klasse zu erstellen, weist Verse der entstehenden Instanz eine einzigartige Identität zu. So können Instanzen von einzigartigen Klassen auf Gleichheit verglichen werden, indem ihre Identitäten verglichen werden. Klassen ohne den „einzigartig“-Bezeichner haben keine solche Identität und können daher nur auf der Grundlage der Werte ihrer Felder auf Gleichheit verglichen werden. Das bedeutet, dass einzigartige Klassen mit den Operatoren „=“ und „<>“ verglichen werden können und Subtypen des Typs „comparable“ sind.
Unstrukturierte Gleichzeitigkeit
Gleichzeitige Ausdrücke mit einer Lebensdauer, die nicht logisch auf einen bestimmten gleichzeitigen Befehl oder „async“-Kontext-Bereich beschränkt ist. Diese Lebensdauer erstreckt sich möglicherweise über den Bereich hinaus, in dem sie ausgeführt wurde. Sie ähnelt dem unstrukturierten Kontrollfluss wie den Befehlen
goto
oderassembly jump
.
UTF-8
Das Zeichenkodierungsschema Unicode ist ein vom Unicode Consortium entwickelter Standard, um sprachen-, plattform- und geräteübergreifend eine vergleichbare Unterstützung für Zeichen bereitzustellen.
Emojis sehen aus wie Bilder oder Symbole, sind aber keine. Es handelt sich um Buchstaben (Zeichen) aus dem Zeichensatz UTF-8 (Unicode).
UTF-8 deckt fast alle Zeichen und Symbole der Welt ab.
V
Wert
Ein Wert ist die Information, mit der dein Programm läuft. Beispiele für Werte sind Zahlen oder Text.
Variable
Ein Wert, der geändert werden kann, während ein Programm ausgeführt wird. Der Wert wird als Variable bezeichnet, weil er variieren kann.
Manchmal bezieht sich der Begriff „Variable“ auf Variablen sowie Konstanten, die jedoch einen wichtigen Unterschied aufweisen: Der Wert einer Konstante kann nicht geändert werden, während ein Programm ausgeführt wird.
Die Basis-Syntax für eine Variable lautet
var name : type = value
.var
ist ein Schlüsselwort, das angibt, dass es sich um eine Variable handelt undname
ist ein Name, welcher der Variablen zugewiesen wird (als Kennung bekannt).:
gibt an, das nun ein Typ folgt.=
gibt an, dass nun ein Wert folgt. Danach steht der Wert. Zum Beispiel:PlayerSpeed : float = 2.0
Besagt, dass PlayerSpeed einen Wert von 2,0 hat, dargestellt als Dezimalwert, der sich während der Ausführung des Programms nicht ändert.
Name und Typ sind die Deklaration, und bei der Initialisierung wird der Wert ausgedrückt. Einer Variable muss kein Wert zugewiesen sein, wenn sie initialisiert wird, aber die Zuweisung ist eine gute Vorgehensweise.
Variablen unterscheiden sich insofern von Konstanten, als ihr Wert jederzeit geändert werden kann. Dies geschieht mithilfe eines Zuweisungsausdrucks.
varies
Dieser Effekt zeigt an, dass gleicher Input in die Funktion möglicherweise nicht immer zu gleichem Output führt. Der
varies
-Effekt zeigt auch an, dass das Verhalten der Funktion bei neuen Versionen ihres Containers nicht unbedingt gleich bleibt.
Ausführlichkeit
Einstellung zum Begrenzen, wie viele zusätzliche Informationen angezeigt werden, wenn ein Protokoll generiert wird.
Verse
Verse ist eine statisch geprüfte Programmiersprache mit einem Schwerpunkt auf Gameplay-Programmierung.
Verse-Explorer
Ein Werkzeug in Unreal Editor für Fortnite (UEFN), das neue Verse-Dateien aus Vorlagen erstellt, deine Dateien mit Untermodulen organisiert und das Umbenennen und Löschen von Dateien unterstützt.
Verse-Pfad
Siehe Pfad.
Visuelle Programmiersprache
Programmiersprachentyp, bei welcher der Programmierer visuelle Elemente verwendet, indem er sie verschiebt und mit anderen Elementen verbindet, um eine bestimmte Abfolge von Programmanweisungen zu erzielen.
Visual Studio Code
Visual Studio Code oder VS-Code ist ein Quellcode-Editor von Microsoft für Windows, Linux und macOS.
void
Void nimmt beliebige Werte an und gibt false zurück. So kann der Körper einer Funktion, die „void“ zurückgibt, implizit einen beliebigen Wert liefern, ohne dass das Ergebnis des letzten Ausdrucks in einem Block umgewandelt werden muss.
VPL
Siehe visuelle Programmiersprache.
W
X
Y
Z
null-basierte Nummerierung
Eine Art der Nummerierung, bei der das erste Element einer Folge als 0 und nicht als 1 eingestuft wird. Das bedeutet, dass die Nullposition in einem Index für 1 steht, die erste Position für 2, und so weiter. Nummerierungsfolgen, die bei 0 beginnen, sind in der mathematischen Notation üblich. In der Programmierung wird die erste Position in einem Array manchmal als nullte Position bezeichnet.