Mica ist eine systemnahe Programmiersprache mit klarer, strukturierter Syntax und ausdrücklicher Kontrolle über die Maschine. Die verbindlichen Fachbegriffe des Compilers — Schlüsselwörter, Fehlermeldungen und Bezeichner — sind englisch. Dieses Glossar nennt zu jedem zentralen Begriff die gebräuchliche deutsche Entsprechung und erklärt ihn in einem Satz, damit deutschsprachige Texte über Mica einheitlich und präzise bleiben.

Es ist ein lebendiges Dokument und erscheint zunächst auf Deutsch; weitere Sprachfassungen können folgen.

Ein Hinweis zu mehrdeutigen Übersetzungen. Das englische obligation heißt hier Verpflichtung — nicht „Obligation“, das im Deutschen eine Anleihe aus dem Finanzwesen bezeichnet. Wo ein englischer Begriff im Deutschen leicht in die Irre führt, ist die treffende Entsprechung unten vermerkt.


1 · Sprache und Typsystem

Englisch (Mica)DeutschErläuterung
compilerder Compiler (Übersetzer)Übersetzt Mica-Quelltext bis hinunter zu nativem Maschinencode.
systems programming languagesystemnahe ProgrammierspracheEine Sprache mit direkter, sichtbarer Kontrolle über Speicher und Maschine.
statementdie AnweisungEin ausführbarer Schritt des Programms (z. B. Zuweisung, Schleife).
expressionder AusdruckEine Berechnung, die einen Wert liefert.
declarationdie DeklarationDie Einführung eines Namens (Konstante, Variable, Typ, Funktion).
recordder Verbund (record)Ein zusammengesetzter Typ aus benannten Feldern.
fielddas Feld (eines Verbunds)Ein benannter Bestandteil eines Verbunds.
arraydas Feld / die ReihungEine indizierte Sammlung gleichartiger Elemente fester Größe.
setdie Menge (Mengentyp)Eine mathematische Menge über einem Ordinaltyp; Mitgliedschaft statt Bitmaske.
enumerationdie Aufzählung (Aufzählungstyp)Ein eigener Typ mit benannten, geordneten Werten.
subrangeder Teilbereich(styp)Ein Typ, dessen Werte auf ein Intervall beschränkt sind.
generic / type parameterdas Generikum / der TypparameterEine Prozedur oder Funktion, die über einen Typ parametrisiert ist.
capability constraintdie FähigkeitsbeschränkungDie Anforderung, die ein Typparameter erfüllen muss, benannt durch Fähigkeitswörter (geordnet, numerisch, Gleichheit, …).
ordinal typeder OrdinaltypEin Typ mit endlicher, geordneter, abzählbarer Wertemenge.
domain (of a type)der WertebereichDie Menge der gültigen Werte eines Typs, mit unterer und oberer Grenze.
lower / upper bounddie untere / obere GrenzeDer kleinste bzw. größte Wert eines Wertebereichs.
pointerder ZeigerVerweist auf einen Wert an einer Speicheradresse.
to dereferencedereferenzierenDen Wert lesen oder schreiben, auf den ein Zeiger verweist.
address-ofdie AdressbildungDie Adresse einer Variablen ermitteln.
nildas nil-Literal (Nullzeiger)Ein zuweisbarer, vergleichbarer Zeigerwert, der „auf nichts“ verweist.
short-circuit evaluationdie KurzschlussauswertungDie rechte Seite von and/or wird nur ausgewertet, wenn nötig.
checked arithmeticdie geprüfte ArithmetikEin Modus, der Ganzzahl-Überlauf zur Laufzeit erkennt und meldet.
overflowder ÜberlaufEin Rechenergebnis außerhalb des darstellbaren Bereichs.
signed / unsignedvorzeichenbehaftet / vorzeichenlosGanzzahltypen mit bzw. ohne Vorzeichen.
floating-pointdie GleitkommazahlReelle Zahlen nach IEEE 754.
booleander Wahrheitswert (boolesch)Der Typ mit den Werten falsch und wahr.
stringdie ZeichenketteEine Folge von Zeichen; in Mica standardmäßig UTF-32.
code pointder CodepunktEin einzelnes Unicode-Zeichen (32 Bit).

2 · Speichersicherheit und Heap

Dies ist das Herzstück von Mica 5.0.0: Die Sicherheit der Heap-Speicherverwaltung wird zur Übersetzungszeit durch Flussanalyse bewiesen — ohne automatische Speicherbereinigung, ohne Ausleihprüfer und ohne Lebensdauer-Annotationen.

Englisch (Mica)DeutschErläuterung
heapder Heap (Haldenspeicher)Der Speicher für dynamisch angeforderte Werte mit freier Lebensdauer.
allocationdie Allokation (Speicherreservierung)Das Anfordern einer Speicherzelle auf dem Heap (new).
to free / releasefreigebenEine Speicherzelle wieder verfügbar machen (dispose).
obligationdie VerpflichtungJede Allokation erzeugt eine Verpflichtung, die auf jedem Pfad erfüllt werden muss.
to discharge (an obligation)erfüllen / einlösenEine Verpflichtung einlösen — durch dispose, durch Bindung an einen Eigentümer oder durch Rückgabe.
contractder Vertrag (Speichervertrag)Die Regel, dass jede Verpflichtung auf jedem Pfad eingelöst sein muss; sonst lässt sich das Programm nicht übersetzen.
ownerder EigentümerJede Allokation hat zu jedem Zeitpunkt genau einen Eigentümer; dessen Lebensende gibt den Speicher frei.
ownershipdie EigentümerschaftDie Zuständigkeit für die Freigabe einer Speicherzelle.
owner-boundeigentümergebundenEine Allokation, deren Freigabe an das Lebensende ihres Eigentümers gebunden ist.
lifetimedie LebensdauerDie Zeitspanne, in der eine Speicherzelle gültig benutzt werden darf.
lifetime classdie LebensdauerklasseEine von vier Einstufungen jeder Allokationsstelle (siehe folgende vier Zeilen).
transferredübertragenDie Verpflichtung verlässt die Funktion über den Rückgabewert; der Aufrufer trägt sie weiter.
manual-verifiedmanuell verifiziertEin dispose löst die Verpflichtung auf jedem geprüften Pfad ein — nachweislich leckfrei.
manual-unverifiedmanuell unverifiziertDer Zeiger entzieht sich der Analyse; die Verpflichtung wird benannt, aber nicht erzwungen.
regiondie RegionEin Arena-Speicher je Eigentümer: linear belegt, beim Verlassen des Eigentümers in einem Zug freigegeben.
region allocatorder Regionen-AllokatorDer Allokator, der eine Region umsetzt: belegt durch Vorrücken innerhalb der Region und gibt beim Lebensende des Eigentümers die ganze Region auf einmal frei.
region-based memory managementregionenbasierte SpeicherverwaltungSpeicher in Blöcken anfordern und gesammelt freigeben statt Zelle für Zelle.
obligation analysisdie VerpflichtungsanalyseDie Datenflussanalyse, die jede Allokationsstelle einstuft und Lecks beweist.
garbage collectiondie automatische Speicherbereinigung (Garbage Collection)Laufzeitverfahren, das unerreichbaren Speicher selbsttätig einsammelt — von Mica bewusst nicht verwendet.
borrow checkerder Ausleihprüfer (Borrow-Checker)Rusts typbasierte Lebensdauerprüfung — von Mica durch Flussanalyse ersetzt.
memory leakdas SpeicherleckSpeicher, der reserviert, aber nie freigegeben wird.
silent leakdas stille SpeicherleckEin unbemerktes Leck; in Mica ist ein vollständig verfolgtes Leck nicht ausdrückbar.
use-after-freedie Nutzung nach FreigabeDer fehlerhafte Zugriff auf bereits freigegebenen Speicher.
double-freedie doppelte FreigabeDas fehlerhafte zweifache Freigeben derselben Zelle.
dangling pointerder hängende ZeigerEin Zeiger auf Speicher, der nicht mehr gültig ist.
deferdefer (zurückstellen)Eine Anweisung beim Verlassen der Funktion ausführen — ein Aufräum-Wächter.
escapedas Entweichen (Escape)Ein Zeiger verlässt den verfolgbaren Bereich der Analyse.
provenancedie Herkunft (eines Zeigers)Ob ein Zeiger Mica-eigen oder fremd (aus C) ist; das dispose eines fremden Zeigers ist ein Übersetzungsfehler.
memory narrationdie SpeichererzählungDer Bericht des Compilers je Allokation: Eigentümer, bewiesene Lebensdauerklasse und gewählter Allokator.
allocatorder Allokator (Speicherzuteiler)Die Komponente, die Heap-Speicher tatsächlich bereitstellt.
bump allocator / arenader Bump-Allokator / die ArenaBelegt durch bloßes Vorrücken eines Zeigers; gibt gesammelt frei.
fixed arenadie feste ArenaEin statisch budgetierter Speicherbereich ohne Betriebssystem-Heap — für eingebettete Ziele.
plug-indas Plug-inEin austauschbarer Allokator hinter einer festen Schnittstelle.
compile-time / runtimedie Übersetzungszeit / die LaufzeitWährend der Übersetzung bzw. während der Programmausführung.

3 · Übersetzungspipeline

Englisch (Mica)DeutschErläuterung
scanner / lexerder Scanner (lexikalische Analyse)Zerlegt den Quelltext in Token.
tokendas TokenDie kleinste bedeutungstragende Einheit des Quelltexts.
parserder Parser (Syntaxanalyse)Baut aus den Token den Syntaxbaum auf.
recursive descentder rekursive AbstiegEin gut lesbares Parserverfahren entlang der Grammatik.
abstract syntax tree (AST)der abstrakte Syntaxbaum (AST)Die Baumdarstellung des Programms nach dem Parsen.
semantic analysisdie semantische AnalysePrüft Namen, Typen und Regeln; faltet Konstanten.
passder Durchlauf (Phase)Ein abgegrenzter Analyse- oder Transformationsschritt.
constant foldingdie KonstantenfaltungAuswertung konstanter Ausdrücke bereits zur Übersetzungszeit.
loweringdas Lowering (Absenkung)Überführung in eine maschinennähere Darstellung.
intermediate representation (IR)die ZwischendarstellungEine flache Form zwischen Syntaxbaum und Maschinencode.
three-address codeder Drei-Adress-CodeEine IR-Form mit höchstens drei Operanden je Operation.
SpectraSpectraMicas Zwischensprache: eine typisierte Drei-Adress-Zwischendarstellung.
monomorphizationdie MonomorphisierungWie Generika übersetzt werden: je unterschiedlicher Menge von Typargumenten wird eine konkrete Spezialisierung erzeugt.
string fusiondie Zeichenketten-FusionEine verkettete Konkatenation (s1 + s2 + s3), abgesenkt zu einer einzigen dimensionierten Allokation, ohne Zwischenwerte.
activation record / stack frameder Aktivierungssatz (Stapelrahmen)Der Speicherrahmen eines Funktionsaufrufs.
static linkder statische Link (statische Kette)Der Verweis, über den eine geschachtelte Funktion ihren umgebenden Bereich erreicht.
nested functiondie geschachtelte FunktionEine innerhalb einer anderen Funktion definierte Funktion.
scopeder GültigkeitsbereichDer Programmbereich, in dem ein Name sichtbar ist.

4 · Backend und Codeerzeugung

Englisch (Mica)DeutschErläuterung
control-flow graph (CFG)der KontrollflussgraphDie Darstellung des Programms als Grundblöcke und deren Kanten.
basic blockder Grundblock (Basisblock)Eine geradlinige Befehlsfolge mit einem Eingang und einem Ausgang.
static single assignment (SSA)die statische Einmalzuweisung (SSA)Eine Form, in der jeder Wert genau einmal zugewiesen wird.
dominance / dominatordie Dominanz / der DominatorEin Block dominiert einen anderen, wenn jeder Pfad dorthin über ihn führt.
dominance frontierdie DominanzgrenzeDie Orte, an denen φ-Funktionen platziert werden.
livenessdie Lebendigkeit(sanalyse)Welche Werte an einer Stelle noch benötigt werden.
live rangedas LebendigkeitsintervallDie Spanne, über die ein Wert lebendig ist.
reaching definitionserreichende DefinitionenWelche Zuweisungen eine Stelle erreichen können.
dataflow analysisdie DatenflussanalyseVerfahren, die Programmeigenschaften entlang des Kontrollflusses berechnen.
inliningdas Inlining (Funktionseinbettung)Den Rumpf einer kleinen Funktion an die Aufrufstelle einsetzen.
register allocationdie RegisterzuteilungWerte auf Maschinenregister bzw. Stapelplätze verteilen.
graph coloringdie GraphenfärbungEin Verfahren der Registerzuteilung.
spilldas Auslagern (Spilling)Einen Wert mangels Register in den Stapelspeicher auslagern.
peephole optimizationdie Guckloch-OptimierungLokale Verbesserungen über ein kleines Befehlsfenster.
instruction selectiondie BefehlsauswahlDie Abbildung von IR-Operationen auf Maschinenbefehle.
calling conventiondie AufrufkonventionDie Regeln, wie Argumente und Rückgaben übergeben werden.
ABIdie ABI (binäre Anwendungsschnittstelle)Die binäre Schnittstelle, an die sich übersetzte Programme halten.
executabledie ausführbare DateiEin startfähiges Programm (ELF).
static library / archivedie statische Bibliothek (Archiv)Eine zum Einbinden bestimmte Sammlung übersetzter Einheiten.
shared objectdas Shared Object (dynamische Bibliothek)Eine zur Laufzeit nachladbare Bibliothek.
debug information (DWARF)die Debug-Informationen (DWARF)Daten, die Debugger Quelltext, Typen und Variablen zuordnen lassen.
assembler / linkerder Assembler / der Linker (Binder)Die GNU-Werkzeuge, die Mica zum Erzeugen der Binärdatei nutzt.

5 · Plattform und Interoperabilität

Englisch (Mica)DeutschErläuterung
contractder Vertrag (Bibliotheksvertrag)Eine JSON-Beschreibung einer C-Bibliothek für geprüfte Aufrufe.
interoperabilitydie InteroperabilitätDas reibungslose Zusammenspiel von Mica- und C-Code.
foreign function interface (FFI)die Fremdfunktionsschnittstelle (FFI)Der Zugriff auf Funktionen anderer Sprachen — in Mica über Verträge.
standard librarydie StandardbibliothekDie mitgelieferte Laufzeit- und I/O-Grundausstattung.
format stringdie FormatzeichenketteDie Vorlage für Ein-/Ausgabe; zur Übersetzungszeit geprüft.
type fingerprintder Typ-FingerabdruckEin Prüfwert, der Typabweichungen zwischen Einheiten erkennt.
cross-compilationdie Cross-KompilierungDas Übersetzen für eine andere Zielarchitektur als die des Wirts.
targetdas Ziel (Zielplattform / -architektur)Betriebssystem und Befehlssatz, für die übersetzt wird.
encodingdie KodierungDie Zeichenkodierung des Ziels (UTF-32 oder UTF-8).

6 · Werkzeuge und Qualität

Englisch (Mica)DeutschErläuterung
test harnessder Testrahmen (Test-Framework)Das Werkzeug, das alle Testfälle übersetzt, ausführt und prüft.
test caseder TestfallEin einzelner, durch ein Manifest beschriebener Prüffall.
manifestdas ManifestDie Beschreibung eines Testfalls (Quellen, erwartete Ausgabe).
regression testder RegressionstestEin Test, der ein einmal erreichtes Verhalten dauerhaft absichert.
quality gatedie Qualitätsschranke (Quality Gate)Interne Prüfung, die die eigenen Transformationen des Compilers kontrolliert.
stress testder Belastungstest (Stresstest)Ein Test mit besonders großen Eingaben.
benchmarkder Benchmark (Vergleichsmessung)Eine Messung zur Leistungseinordnung.
retired instructionsabgeschlossene Befehle (retired instructions)Tatsächlich ausgeführte Maschinenbefehle — das deterministische Leistungsmaß.
wall-clock timedie reale Laufzeit (Wall-Clock-Zeit)Die verstrichene Echtzeit einer Ausführung.

Siehe auch: die englische Ausgabe und die vereinfacht-chinesische Ausgabe dieses Glossars sowie das technische Porträt von Mica (englisch).