# Metaprogramming / Language-Oriented Architecture

> Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or…

Page: Ontology · Lexicon
Canonical: https://banes-lab.com/ontology/lexicon#lex-category-metaprogramming-language-oriented-architecture

Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or contract that carries the same name where one exists, and the layer its category belongs to.

### AST or Data Representation

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that code be represented as a structured syntax tree or data rather than as raw text.

Referenced by
[Code as Data](https://banes-lab.com/records/arch/code-as-data.md)

### Boilerplate Elimination

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to remove repetitive boilerplate by generating it from a single declaration.

Referenced by
[Metaprogramming](https://banes-lab.com/records/arch/metaprogramming.md)

### Build Complexity

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which moving work into the build to run at compile time makes the build harder to set up and reason about.

Referenced by
[Compile-Time Evaluation](https://banes-lab.com/records/arch/compile-time-evaluation.md)

### Code Generation or Interpreters

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that a domain language be backed by a generator or interpreter that executes it.

Referenced by
[Language-Oriented Programming](https://banes-lab.com/records/arch/language-oriented-programming.md)

### Code-as-Data Representation

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that a program's code be representable in the same data structures the language manipulates.

Referenced by
[Homoiconicity](https://banes-lab.com/records/arch/homoiconicity.md)

### Compile-Time Inputs

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that the inputs a computation needs be known at compile time so it can run then.

Referenced by
[Compile-Time Evaluation](https://banes-lab.com/records/arch/compile-time-evaluation.md)

### Diagnostics

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to inspect a running system's own structure and state to diagnose it.

Referenced by
[Introspection](https://banes-lab.com/records/arch/introspection.md)

### Domain Expressiveness

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to express domain rules directly in terms a domain expert recognizes.

Referenced by
[Domain-Specific Language (DSL)](https://banes-lab.com/records/arch/domain-specific-language.md)

### Domain Modeling

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Expressing a problem domain as a first-class language of its own concepts and rules.

Contract
[Domain Modeling](https://banes-lab.com/records/algo/domain-modeling.md)

Referenced by
[Language-Oriented Programming](https://banes-lab.com/records/arch/language-oriented-programming.md)

### Dynamic Optimization/Adaptation

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to generate specialized code at runtime to optimize or adapt to observed conditions.

Referenced by
[Runtime Code Generation](https://banes-lab.com/records/arch/runtime-code-generation.md)

### Early Error Detection

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to catch errors at compile time rather than letting them surface at runtime.

Referenced by
[Compile-Time Evaluation](https://banes-lab.com/records/arch/compile-time-evaluation.md)

### Explicit Handwritten Code

- Kind: [approach](https://banes-lab.com/records/kind/approach.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Writing code out by hand explicitly rather than generating it, favoring directness and debuggability over reuse.

Referenced by
[Metaprogramming](https://banes-lab.com/records/arch/metaprogramming.md)

### Formal Grammar/Semantics

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that a domain language have a defined grammar and semantics rather than an ad-hoc syntax.

Referenced by
[Domain-Specific Language (DSL)](https://banes-lab.com/records/arch/domain-specific-language.md)

### Formal Model

- Kind: [model](https://banes-lab.com/records/kind/model.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
A precise, machine-processable model of a system from which implementations are generated.

Referenced by
[Model-Driven Architecture](https://banes-lab.com/records/arch/model-driven-architecture.md)

### General-Purpose Boilerplate

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Expressing domain logic through verbose general-purpose code and its boilerplate instead of a concise domain notation.

Referenced by
[Domain-Specific Language (DSL)](https://banes-lab.com/records/arch/domain-specific-language.md)

### Generated Implementations

- Kind: [artifact](https://banes-lab.com/records/kind/artifact.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Implementation code produced automatically from a model rather than written by hand.

Referenced by
[Model-Driven Architecture](https://banes-lab.com/records/arch/model-driven-architecture.md)

### Handwritten Divergence

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Hand-editing generated code so it drifts from the model it came from, breaking regeneration.

Referenced by
[Model-Driven Architecture](https://banes-lab.com/records/arch/model-driven-architecture.md)

### High-Level Domain Expression

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to express solutions in high-level domain terms rather than low-level general-purpose code.

Referenced by
[Language-Oriented Programming](https://banes-lab.com/records/arch/language-oriented-programming.md)

### Macro Systems

- Kind: [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
A facility that lets code transform other code at compile time by operating on its data representation.

Referenced by
[Homoiconicity](https://banes-lab.com/records/arch/homoiconicity.md)

### One-Size General-Purpose Code

- Kind: [approach](https://banes-lab.com/records/kind/approach.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Expressing every domain in a single general-purpose language, rather than in domain-specific notations.

Referenced by
[Language-Oriented Programming](https://banes-lab.com/records/arch/language-oriented-programming.md)

### Opaque Runtime

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
A runtime that exposes nothing about its own structure, so its components and state cannot be inspected.

Referenced by
[Introspection](https://banes-lab.com/records/arch/introspection.md)

### Opaque Syntax Trees

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Syntax trees a program cannot inspect or manipulate as data, so code cannot be transformed programmatically.

Referenced by
[Homoiconicity](https://banes-lab.com/records/arch/homoiconicity.md)

### Performance/Safety

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which inspecting and dispatching on types at runtime costs performance and bypasses static safety.

Referenced by
[Reflection](https://banes-lab.com/records/arch/reflection.md)

### Program Transformation

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to analyze and rewrite a program by manipulating its structured representation.

Referenced by
[Code as Data](https://banes-lab.com/records/arch/code-as-data.md)

### Reflection/AST/Code Generation

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that a language expose reflection, syntax trees, or code generation for programs to manipulate themselves.

Referenced by
[Metaprogramming](https://banes-lab.com/records/arch/metaprogramming.md)

### Runtime Dynamic Evaluation

- Kind: [technique](https://banes-lab.com/records/kind/technique.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Evaluating code or expressions dynamically at runtime, trading compile-time checking for runtime flexibility.

Referenced by
[Compile-Time Evaluation](https://banes-lab.com/records/arch/compile-time-evaluation.md)

### Runtime Type Metadata

- Kind: [artifact](https://banes-lab.com/records/kind/artifact.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Type information retained at runtime so a program can inspect the shape of its own values.

Referenced by
[Reflection](https://banes-lab.com/records/arch/reflection.md)

### Safe Generation Boundary

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that runtime code generation be confined to a safe, sandboxed boundary away from untrusted input.

Referenced by
[Runtime Code Generation](https://banes-lab.com/records/arch/runtime-code-generation.md)

### Safety/Debuggability

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which treating code as manipulable data can obscure what runs and make it harder to debug.

Referenced by
[Code as Data](https://banes-lab.com/records/arch/code-as-data.md)

### Security/Debugging

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which generating and running code at runtime widens the attack surface and complicates debugging.

Referenced by
[Runtime Code Generation](https://banes-lab.com/records/arch/runtime-code-generation.md)

### Self-Describing Systems

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which a system carries enough metadata to describe its own structure and capabilities at runtime.

Referenced by
[Introspection](https://banes-lab.com/records/arch/introspection.md)

### String-Based Code Generation

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Building code by concatenating strings, so the result is unchecked, injection-prone, and hard to analyze.

Referenced by
[Code as Data](https://banes-lab.com/records/arch/code-as-data.md)

### Toolchain Complexity

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which building custom languages adds compilers, parsers, and editors to a project's toolchain.

Referenced by
[Language-Oriented Programming](https://banes-lab.com/records/arch/language-oriented-programming.md)

### Tooling/Maintenance

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which owning a custom language burdens a team with building and maintaining its tooling.

Referenced by
[Domain-Specific Language (DSL)](https://banes-lab.com/records/arch/domain-specific-language.md)

### Transformation Rules

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lex-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that explicit rules define how a model maps to generated implementation code.

Referenced by
[Model-Driven Architecture](https://banes-lab.com/records/arch/model-driven-architecture.md)

## Links to

- [constraint](https://banes-lab.com/records/kind/constraint.md)
- [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)
- [Code as Data](https://banes-lab.com/records/arch/code-as-data.md)
- [capability](https://banes-lab.com/records/kind/capability.md)
- [Metaprogramming](https://banes-lab.com/records/arch/metaprogramming.md)
- [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- [Compile-Time Evaluation](https://banes-lab.com/records/arch/compile-time-evaluation.md)
- [Language-Oriented Programming](https://banes-lab.com/records/arch/language-oriented-programming.md)
- [Homoiconicity](https://banes-lab.com/records/arch/homoiconicity.md)
- [Introspection](https://banes-lab.com/records/arch/introspection.md)
- [Domain-Specific Language (DSL)](https://banes-lab.com/records/arch/domain-specific-language.md)
- [activity](https://banes-lab.com/records/kind/activity.md)
- [Domain Modeling](https://banes-lab.com/records/algo/domain-modeling.md)
- [Runtime Code Generation](https://banes-lab.com/records/arch/runtime-code-generation.md)
- [approach](https://banes-lab.com/records/kind/approach.md)
- [model](https://banes-lab.com/records/kind/model.md)
- [Model-Driven Architecture](https://banes-lab.com/records/arch/model-driven-architecture.md)
- [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- [artifact](https://banes-lab.com/records/kind/artifact.md)
- [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- [Reflection](https://banes-lab.com/records/arch/reflection.md)
- [technique](https://banes-lab.com/records/kind/technique.md)
