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) | Deutsch | Erläuterung |
|---|---|---|
| compiler | der Compiler (Übersetzer) | Übersetzt Mica-Quelltext bis hinunter zu nativem Maschinencode. |
| systems programming language | systemnahe Programmiersprache | Eine Sprache mit direkter, sichtbarer Kontrolle über Speicher und Maschine. |
| statement | die Anweisung | Ein ausführbarer Schritt des Programms (z. B. Zuweisung, Schleife). |
| expression | der Ausdruck | Eine Berechnung, die einen Wert liefert. |
| declaration | die Deklaration | Die Einführung eines Namens (Konstante, Variable, Typ, Funktion). |
| record | der Verbund (record) | Ein zusammengesetzter Typ aus benannten Feldern. |
| field | das Feld (eines Verbunds) | Ein benannter Bestandteil eines Verbunds. |
| array | das Feld / die Reihung | Eine indizierte Sammlung gleichartiger Elemente fester Größe. |
| set | die Menge (Mengentyp) | Eine mathematische Menge über einem Ordinaltyp; Mitgliedschaft statt Bitmaske. |
| enumeration | die Aufzählung (Aufzählungstyp) | Ein eigener Typ mit benannten, geordneten Werten. |
| subrange | der Teilbereich(styp) | Ein Typ, dessen Werte auf ein Intervall beschränkt sind. |
| generic / type parameter | das Generikum / der Typparameter | Eine Prozedur oder Funktion, die über einen Typ parametrisiert ist. |
| capability constraint | die Fähigkeitsbeschränkung | Die Anforderung, die ein Typparameter erfüllen muss, benannt durch Fähigkeitswörter (geordnet, numerisch, Gleichheit, …). |
| ordinal type | der Ordinaltyp | Ein Typ mit endlicher, geordneter, abzählbarer Wertemenge. |
| domain (of a type) | der Wertebereich | Die Menge der gültigen Werte eines Typs, mit unterer und oberer Grenze. |
| lower / upper bound | die untere / obere Grenze | Der kleinste bzw. größte Wert eines Wertebereichs. |
| pointer | der Zeiger | Verweist auf einen Wert an einer Speicheradresse. |
| to dereference | dereferenzieren | Den Wert lesen oder schreiben, auf den ein Zeiger verweist. |
| address-of | die Adressbildung | Die Adresse einer Variablen ermitteln. |
| nil | das nil-Literal (Nullzeiger) | Ein zuweisbarer, vergleichbarer Zeigerwert, der „auf nichts“ verweist. |
| short-circuit evaluation | die Kurzschlussauswertung | Die rechte Seite von and/or wird nur ausgewertet, wenn nötig. |
| checked arithmetic | die geprüfte Arithmetik | Ein Modus, der Ganzzahl-Überlauf zur Laufzeit erkennt und meldet. |
| overflow | der Überlauf | Ein Rechenergebnis außerhalb des darstellbaren Bereichs. |
| signed / unsigned | vorzeichenbehaftet / vorzeichenlos | Ganzzahltypen mit bzw. ohne Vorzeichen. |
| floating-point | die Gleitkommazahl | Reelle Zahlen nach IEEE 754. |
| boolean | der Wahrheitswert (boolesch) | Der Typ mit den Werten falsch und wahr. |
| string | die Zeichenkette | Eine Folge von Zeichen; in Mica standardmäßig UTF-32. |
| code point | der Codepunkt | Ein einzelnes Unicode-Zeichen (32 Bit). |
| vector / matrix | der Vektor / die Matrix | Die mathematischen Werttypen mit Form im Typ: vector[N] of T, matrix[R, C] of T; ein Produkt, dessen Dimensionen nicht zusammenpassen, wird zur Übersetzungszeit abgelehnt. |
| dynamic array | das dynamische Array | Das wachsende Array unter der Wertregel: Append und Length, und eine Zuweisung, die kopiert — kein Aufgerufener kann die Liste des Aufrufers wachsen lassen. |
| span | die Spanne (Sichtfenster) | Die geliehene Sicht auf eine Sequenz: an einem sichtbaren Span gebildet und nie länger lebend als der Speicher, den sie benennt. |
| sequence families | die Sequenzfamilien | Die vier Gestalten einer Elementfolge — festes Array, Vektor und Matrix, dynamisches Array, Spanne — unter einem gemeinsamen Lesevokabular. |
| wide integer | die breite Ganzzahl | Die Familie fester Breiten jenseits von 64 Bit, int[N] / uint[N], veröffentlicht als int128 bis uint256; konvertiert nur über die 64-Bit-Brücke. |
| bigint | die unbeschränkte Ganzzahl | Die unbegrenzte Ganzzahl der Einheit integers: Verb-Arithmetik, keine Promotion, kein Cast. |
| residency | die Residenz | Wo der Speicher eines Tensors liegt: on gpu behält den Typ und verlegt den Wert auf das Gerät; Übergänge sind die sichtbaren ToDevice / ToHost. |
2 · Speichersicherheit und Heap
Dies ist das Herzstück von Mica: Die Sicherheit der Heap-Speicherverwaltung wird zur Übersetzungszeit durch Flussanalyse bewiesen — ohne automatische Speicherbereinigung, ohne Ausleihprüfer und ohne Lebensdauer-Annotationen.
| Englisch (Mica) | Deutsch | Erläuterung |
|---|---|---|
| heap | der Heap (Haldenspeicher) | Der Speicher für dynamisch angeforderte Werte mit freier Lebensdauer. |
| allocation | die Allokation (Speicherreservierung) | Das Anfordern einer Speicherzelle auf dem Heap (new). |
| to free / release | freigeben | Eine Speicherzelle wieder verfügbar machen (dispose). |
| obligation | die Verpflichtung | Jede Allokation erzeugt eine Verpflichtung, die auf jedem Pfad erfüllt werden muss. |
| to discharge (an obligation) | erfüllen / einlösen | Eine Verpflichtung einlösen — durch dispose, durch Bindung an einen Eigentümer oder durch Rückgabe. |
| contract | der Vertrag (Speichervertrag) | Die Regel, dass jede Verpflichtung auf jedem Pfad eingelöst sein muss; sonst lässt sich das Programm nicht übersetzen. |
| owner | der Eigentümer | Jede Allokation hat zu jedem Zeitpunkt genau einen Eigentümer; dessen Lebensende gibt den Speicher frei. |
| ownership | die Eigentümerschaft | Die Zuständigkeit für die Freigabe einer Speicherzelle. |
| owner-bound | eigentümergebunden | Eine Allokation, deren Freigabe an das Lebensende ihres Eigentümers gebunden ist. |
| lifetime | die Lebensdauer | Die Zeitspanne, in der eine Speicherzelle gültig benutzt werden darf. |
| lifetime class | die Lebensdauerklasse | Eine von vier Einstufungen jeder Allokationsstelle (siehe folgende vier Zeilen). |
| transferred | übertragen | Die Verpflichtung verlässt die Funktion über den Rückgabewert; der Aufrufer trägt sie weiter. |
| manual-verified | manuell verifiziert | Ein dispose löst die Verpflichtung auf jedem geprüften Pfad ein — nachweislich leckfrei. |
| manual-unverified | manuell unverifiziert | Der Zeiger entzieht sich der Analyse; die Verpflichtung wird benannt, aber nicht erzwungen. |
| region | die Region | Ein Arena-Speicher je Eigentümer: linear belegt, beim Verlassen des Eigentümers in einem Zug freigegeben. |
| region allocator | der Regionen-Allokator | Der 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 management | regionenbasierte Speicherverwaltung | Speicher in Blöcken anfordern und gesammelt freigeben statt Zelle für Zelle. |
| obligation analysis | die Verpflichtungsanalyse | Die Datenflussanalyse, die jede Allokationsstelle einstuft und Lecks beweist. |
| garbage collection | die automatische Speicherbereinigung (Garbage Collection) | Laufzeitverfahren, das unerreichbaren Speicher selbsttätig einsammelt — von Mica bewusst nicht verwendet. |
| borrow checker | der Ausleihprüfer (Borrow-Checker) | Rusts typbasierte Lebensdauerprüfung — von Mica durch Flussanalyse ersetzt. |
| memory leak | das Speicherleck | Speicher, der reserviert, aber nie freigegeben wird. |
| silent leak | das stille Speicherleck | Ein unbemerktes Leck; in Mica ist ein vollständig verfolgtes Leck nicht ausdrückbar. |
| use-after-free | die Nutzung nach Freigabe | Der fehlerhafte Zugriff auf bereits freigegebenen Speicher. |
| double-free | die doppelte Freigabe | Das fehlerhafte zweifache Freigeben derselben Zelle. |
| dangling pointer | der hängende Zeiger | Ein Zeiger auf Speicher, der nicht mehr gültig ist. |
| defer | defer (zurückstellen) | Eine Anweisung beim Verlassen der Funktion ausführen — ein Aufräum-Wächter. |
| escape | das Entweichen (Escape) | Ein Zeiger verlässt den verfolgbaren Bereich der Analyse. |
| provenance | die Herkunft (eines Zeigers) | Ob ein Zeiger Mica-eigen oder fremd (aus C) ist; das dispose eines fremden Zeigers ist ein Übersetzungsfehler. |
| memory narration | die Speichererzählung | Der Bericht des Compilers je Allokation: Eigentümer, bewiesene Lebensdauerklasse und gewählter Allokator. |
| allocator | der Allokator (Speicherzuteiler) | Die Komponente, die Heap-Speicher tatsächlich bereitstellt. |
| bump allocator / arena | der Bump-Allokator / die Arena | Belegt durch bloßes Vorrücken eines Zeigers; gibt gesammelt frei. |
| fixed arena | die feste Arena | Ein statisch budgetierter Speicherbereich ohne Betriebssystem-Heap — für eingebettete Ziele. |
| plug-in | das Plug-in | Ein austauschbarer Allokator hinter einer festen Schnittstelle. |
| compile-time / runtime | die Übersetzungszeit / die Laufzeit | Während der Übersetzung bzw. während der Programmausführung. |
| memory class | die Speicherklasse | Die Entscheidung beim Linken, woher der Speicher kommt: der Betriebssystem-Heap oder eine feste Arena — dieselbe Quelle dient beiden. |
| fixed arena | die feste Arena | Ein fester Block für jede Anforderung, mit einem Budget, das an einer benannten Zeile laut scheitert, statt zu wachsen. |
3 · Nebenläufigkeit und Ströme
| Englisch (Mica) | Deutsch | Erläuterung |
|---|---|---|
| task | die Aufgabe (Task) | Eine nebenläufige Aktivität, gestartet in einem concurrent-Block, dessen end jede gestartete Aufgabe wieder einsammelt. |
| task tree | der Aufgabenbaum | Der Baum der laufenden Aufgaben, der der Gültigkeitsbaum ist: ein endender Bereich nimmt seine Aufgaben mit. |
| carrier | der Träger | Ein Betriebssystem-Thread, der Aufgaben trägt; wie viele es sind, ist eine Bauentscheidung, und Ergebnisse hängen nicht davon ab. |
| synchronized | synchronisiert | Das eine Schlüsselwort, unter dem geteilter Zustand berührt werden darf; eine unmarkierte Berührung ist ein Übersetzungsfehler. |
| generator | der Generator | Ein Rumpf, der Werte einzeln erzeugt und dazwischen pausiert; seine Instanz lässt sich benennen, anhalten und fortsetzen. |
| stream | der Strom | Das typisierte Förderband zwischen Erzeugern und Verbrauchern: gezogen aus einem Generator oder geschoben über einen begrenzten Ring. |
| bounded ring | der begrenzte Ring | Der Puffer fester Kapazität hinter einem geschobenen Strom, an dem sich Zusammen- und Auffächern ohne Sperre im Anwendungscode treffen. |
| select | die Auswahl (select) | Die Anweisung, die auf mehrere Stromarme zugleich wartet, mit optionalem Zeitüberschreitungsarm. |
| concurrent | der Nebenläufigkeitsblock | Der Block, der einen Aufgabenbereich öffnet; sein end ist der Beitritt, dem keine Aufgabe entkommt. |
| schedule | das Einplanen | Die Anweisung, die innerhalb eines concurrent-Blocks eine Aufgabe startet. |
| Yield | das Abgeben | Der kooperative Unterbrechungspunkt: die laufende Aufgabe gibt dem Planer Gelegenheit, ihre Geschwister laufen zu lassen. |
| cancellation | der Abbruch | Ein scheiterndes Geschwister bricht die Überlebenden des Bereichs ab; die anstehende Markierung wird am Unterbrechungspunkt zugestellt und führt den Rumpf auf seinen frühen Ausstieg, defer eingeschlossen. |
4 · Übersetzungspipeline
| Englisch (Mica) | Deutsch | Erläuterung |
|---|---|---|
| scanner / lexer | der Scanner (lexikalische Analyse) | Zerlegt den Quelltext in Token. |
| token | das Token | Die kleinste bedeutungstragende Einheit des Quelltexts. |
| parser | der Parser (Syntaxanalyse) | Baut aus den Token den Syntaxbaum auf. |
| recursive descent | der rekursive Abstieg | Ein gut lesbares Parserverfahren entlang der Grammatik. |
| abstract syntax tree (AST) | der abstrakte Syntaxbaum (AST) | Die Baumdarstellung des Programms nach dem Parsen. |
| semantic analysis | die semantische Analyse | Prüft Namen, Typen und Regeln; faltet Konstanten. |
| pass | der Durchlauf (Phase) | Ein abgegrenzter Analyse- oder Transformationsschritt. |
| constant folding | die Konstantenfaltung | Auswertung konstanter Ausdrücke bereits zur Übersetzungszeit. |
| lowering | das Lowering (Absenkung) | Überführung in eine maschinennähere Darstellung. |
| intermediate representation (IR) | die Zwischendarstellung | Eine flache Form zwischen Syntaxbaum und Maschinencode. |
| three-address code | der Drei-Adress-Code | Eine IR-Form mit höchstens drei Operanden je Operation. |
| Spectra | Spectra | Micas Zwischensprache: eine typisierte Drei-Adress-Zwischendarstellung. |
| monomorphization | die Monomorphisierung | Wie Generika übersetzt werden: je unterschiedlicher Menge von Typargumenten wird eine konkrete Spezialisierung erzeugt. |
| string fusion | die Zeichenketten-Fusion | Eine verkettete Konkatenation (s1 + s2 + s3), abgesenkt zu einer einzigen dimensionierten Allokation, ohne Zwischenwerte. |
| activation record / stack frame | der Aktivierungssatz (Stapelrahmen) | Der Speicherrahmen eines Funktionsaufrufs. |
| static link | der statische Link (statische Kette) | Der Verweis, über den eine geschachtelte Funktion ihren umgebenden Bereich erreicht. |
| nested function | die geschachtelte Funktion | Eine innerhalb einer anderen Funktion definierte Funktion. |
| scope | der Gültigkeitsbereich | Der Programmbereich, in dem ein Name sichtbar ist. |
5 · Backend und Codeerzeugung
| Englisch (Mica) | Deutsch | Erläuterung |
|---|---|---|
| control-flow graph (CFG) | der Kontrollflussgraph | Die Darstellung des Programms als Grundblöcke und deren Kanten. |
| basic block | der 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 / dominator | die Dominanz / der Dominator | Ein Block dominiert einen anderen, wenn jeder Pfad dorthin über ihn führt. |
| dominance frontier | die Dominanzgrenze | Die Orte, an denen φ-Funktionen platziert werden. |
| liveness | die Lebendigkeit(sanalyse) | Welche Werte an einer Stelle noch benötigt werden. |
| live range | das Lebendigkeitsintervall | Die Spanne, über die ein Wert lebendig ist. |
| reaching definitions | erreichende Definitionen | Welche Zuweisungen eine Stelle erreichen können. |
| dataflow analysis | die Datenflussanalyse | Verfahren, die Programmeigenschaften entlang des Kontrollflusses berechnen. |
| inlining | das Inlining (Funktionseinbettung) | Den Rumpf einer kleinen Funktion an die Aufrufstelle einsetzen. |
| register allocation | die Registerzuteilung | Werte auf Maschinenregister bzw. Stapelplätze verteilen. |
| graph coloring | die Graphenfärbung | Ein Verfahren der Registerzuteilung. |
| spill | das Auslagern (Spilling) | Einen Wert mangels Register in den Stapelspeicher auslagern. |
| peephole optimization | die Guckloch-Optimierung | Lokale Verbesserungen über ein kleines Befehlsfenster. |
| instruction selection | die Befehlsauswahl | Die Abbildung von IR-Operationen auf Maschinenbefehle. |
| calling convention | die Aufrufkonvention | Die Regeln, wie Argumente und Rückgaben übergeben werden. |
| ABI | die ABI (binäre Anwendungsschnittstelle) | Die binäre Schnittstelle, an die sich übersetzte Programme halten. |
| executable | die ausführbare Datei | Ein startfähiges Programm (ELF). |
| static library / archive | die statische Bibliothek (Archiv) | Eine zum Einbinden bestimmte Sammlung übersetzter Einheiten. |
| shared object | das 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 / linker | der Assembler / der Linker (Binder) | Die GNU-Werkzeuge, die Mica zum Erzeugen der Binärdatei nutzt. |
6 · Plattform und C-Grenze
| Englisch (Mica) | Deutsch | Erläuterung |
|---|---|---|
| contract | der Vertrag (Bibliotheksvertrag) | Eine JSON-Beschreibung einer C-Bibliothek für geprüfte Aufrufe. |
| C ABI | die C-ABI | Die Aufruf- und Layoutkonvention, über die Mica- und C-Code einander linken und aufrufen. |
| foreign function interface (FFI) | die Fremdfunktionsschnittstelle (FFI) | Der Zugriff auf Funktionen anderer Sprachen — in Mica über Verträge. |
| standard library | die Standardbibliothek | Die mitgelieferte Laufzeit- und I/O-Grundausstattung. |
| format string | die Formatzeichenkette | Die Vorlage für Ein-/Ausgabe; zur Übersetzungszeit geprüft. |
| type fingerprint | der Typ-Fingerabdruck | Ein Prüfwert, der Typabweichungen zwischen Einheiten erkennt. |
| cross-compilation | die Cross-Kompilierung | Das Übersetzen für eine andere Zielarchitektur als die des Wirts. |
| target | das Ziel (Zielplattform / -architektur) | Betriebssystem und Befehlssatz, für die übersetzt wird. |
| encoding | die Kodierung | Die Zeichenkodierung des Ziels (UTF-32 oder UTF-8). |
7 · Werkzeuge und Qualität
| Englisch (Mica) | Deutsch | Erläuterung |
|---|---|---|
| test harness | der Testrahmen (Test-Framework) | Das Werkzeug, das alle Testfälle übersetzt, ausführt und prüft. |
| test case | der Testfall | Ein einzelner, durch ein Manifest beschriebener Prüffall. |
| manifest | das Manifest | Die Beschreibung eines Testfalls (Quellen, erwartete Ausgabe). |
| regression test | der Regressionstest | Ein Test, der ein einmal erreichtes Verhalten dauerhaft absichert. |
| quality gate | die Qualitätsschranke (Quality Gate) | Interne Prüfung, die die eigenen Transformationen des Compilers kontrolliert. |
| stress test | der Belastungstest (Stresstest) | Ein Test mit besonders großen Eingaben. |
| benchmark | der Benchmark (Vergleichsmessung) | Eine Messung zur Leistungseinordnung. |
| retired instructions | abgeschlossene Befehle (retired instructions) | Tatsächlich ausgeführte Maschinenbefehle — das deterministische Leistungsmaß. |
| wall-clock time | die 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).
8 · Maschinelles Lernen in der Sprache
| Term | Deutscher Begriff | Bedeutung |
|---|---|---|
| autograd | das Autograd | Differenzieren durch Aufzeichnen: das Programm rechnet vorwärts, während das Band mitschreibt, und ein Rückwärtslauf weist jedem Regler seine Verantwortung zu. |
| tracked value | der verfolgte Wert | Der Autograd-Regler: ein Paar aus Wert und Bandknoten-Id, deklariert als tracked. |
| tape | das Band (Aufzeichnungsfenster) | Das Aufzeichnungsfenster: Operationen auf verfolgten Werten innerhalb von tape … end schreiben in ein Transkript pro Programm. |
| Backward / Gradient | der Rückwärtslauf / der Gradient | Der Rückwärtslauf über ein geschlossenes Bandfenster und danach das Ablesen der Verantwortung eines Reglers. |
| recorded verb | das aufgezeichnete Verb | Eine Tensor-Operation, die beim Ausführen ihre Rückwärtsregel an das Band anhängt — Tanh, Softmax, das Matrixprodukt und ihre Familie. |
| device residency | die Geräteresidenz | Tensordaten auf der GPU: die Platzierung ist eine Übersetzungszeit-Tatsache, und eine Operation, die stillschweigend zwischen Host und Gerät pendeln würde, übersetzt nicht. |
| layer verbs | die Schichtverben | Das kuratierte Gerätevokabular — RowSoftmax, LayerNorm, CrossEntropy, AdamStep, TanhMap — als Gerätekerne hinter derselben Quellschreibweise wie auf dem Host. |
| formula tier | die Formelebene | Griechische Buchstaben, tiefgestellte Bezeichner und die Operatoren × und · als gewöhnliche Mica-Schreibweisen, damit numerischer Quelltext wie seine Notation liest. |