Metaprogramming / Language-Oriented Architecture
Kind: category
Record: architecture-category:metaprogramming-language-oriented-architecture
Canonical: Ontology
The Metaprogramming / Language-Oriented Architecture category holds 10 architecture principles.
Listed in Principle categories, after Metadata / Self-Description / Declarative Systems and before Model Architecture.
Principle
- Homoiconicity
- Code as Data
- Metaprogramming
- Reflection
- Introspection
- Compile-Time Evaluation
- Runtime Code Generation
- Domain-Specific Language (DSL)
- Language-Oriented Programming
- Model-Driven Architecture
Layer
Linked from
Metaprogramming / Language-Oriented Architecture
Every principle in this category is listed as a record. Each record carries its kind, its severity, the scopes it applies at and the layer it lives in, then the edge relations that join it to other records, the records that point back at it, the contracts that answer to it and the tensions it takes part in. The descriptors say how it is violated, detected, measured, repaired and enforced. Where the record carries one, an exemplar shows the shape before and after the principle is applied.
Relations diagram
flowchart LR
n_homoiconicity["Homoiconicity"]
n_code_as_data["Code as Data"]
n_metaprogramming["Metaprogramming"]
n_reflection["Reflection"]
n_introspection["Introspection"]
n_compile_time_evaluation["Compile-Time Evaluation"]
n_runtime_code_generation["Runtime Code Generation"]
n_domain_specific_language["Domain-Specific Language (DSL)"]
n_language_oriented_programming["Language-Oriented Programming"]
n_model_driven_architecture["Model-Driven Architecture"]
n_homoiconicity --> n_metaprogramming
n_code_as_data --> n_homoiconicity
n_reflection --> n_introspectionHomoiconicity
- Kind: quality-attribute
- Category: Metaprogramming / Language-Oriented Architecture
- Severity: contextual
- Scope: language, metaprogramming
- Layer: Declarative Core
Code as Data
- Kind: principle
- Category: Metaprogramming / Language-Oriented Architecture
- Severity: contextual
- Scope: language, compiler, runtime
- Layer: Declarative Core
Metaprogramming
- Kind: technique
- Category: Metaprogramming / Language-Oriented Architecture
- Severity: contextual
- Scope: compile-time, runtime, framework
- Layer: Declarative Core
Reflection
- Kind: mechanism
- Category: Metaprogramming / Language-Oriented Architecture
- Severity: contextual
- Scope: runtime, metadata, framework
- Layer: Declarative Core
Introspection
- Kind: mechanism
- Category: Metaprogramming / Language-Oriented Architecture
- Severity: contextual
- Scope: runtime, metadata
- Layer: Declarative Core
Compile-Time Evaluation
- Kind: mechanism
- Category: Metaprogramming / Language-Oriented Architecture
- Severity: contextual
- Scope: compiler, build
- Layer: Declarative Core
Runtime Code Generation
- Kind: mechanism
- Category: Metaprogramming / Language-Oriented Architecture
- Severity: discouraged
- Scope: runtime, framework
- Layer: Declarative Core
Domain-Specific Language (DSL)
- Kind: pattern
- Category: Metaprogramming / Language-Oriented Architecture
- Severity: contextual
- Scope: domain, configuration, rules
- Layer: Declarative Core
Language-Oriented Programming
- Kind: approach
- Category: Metaprogramming / Language-Oriented Architecture
- Severity: contextual
- Scope: domain, platform, code generation
- Layer: Declarative Core
Model-Driven Architecture
- Kind: approach
- Category: Metaprogramming / Language-Oriented Architecture
- Severity: contextual
- Scope: system, code generation, domain model
- Aliases: MDA
- Layer: Declarative Core