# Language-Oriented Programming

> An approach in which each problem domain gets its own language, with a type checker and an evaluator, and solutions are written in it.

Record: `architecture:language-oriented-programming`
Kind: approach
Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)
Severity: contextual
Scope: domain, platform, code generation
Canonical: https://banes-lab.com/ontology#architecture-language-oriented-programming

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Domain-Specific Language (DSL)](https://banes-lab.com/records/architecture/domain-specific-language.md) and before [Model-Driven Architecture](https://banes-lab.com/records/architecture/model-driven-architecture.md).

## Repair

- Refactored by: Consolidate DSL, Add Tooling
- Detected by: multiple inconsistent rule/config syntaxes
- Violated by: proliferation of informal unvalidated DSLs
- Measured by: language consistency/tooling
- Enforced by: grammar/schema validation

## Requires

- [DSLs](https://banes-lab.com/records/lexicon/dsls.md)
- [Code Generation or Interpreters](https://banes-lab.com/records/lexicon/code-generation-or-interpreters.md)

## Reinforces

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

## Enables

- [High-Level Domain Expression](https://banes-lab.com/records/lexicon/high-level-domain-expression.md)

## In tension with

- [Toolchain Complexity](https://banes-lab.com/records/lexicon/toolchain-complexity.md)
- [One-Size General-Purpose Code](https://banes-lab.com/records/lexicon/one-size-general-purpose-code.md)

## Tensions

- [Language-Oriented Programming / Toolchain Complexity](https://banes-lab.com/records/tension/language-oriented-programming-toolchain-complexity.md)
- [Language-Oriented Programming / One-Size General-Purpose Code](https://banes-lab.com/records/tension/language-oriented-programming-one-size-general-purpose-code.md)

## Severity

- [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)

## Category

- [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/records/architecture-category/metaprogramming-language-oriented-architecture.md)

## Linked from

- [Core Vocabulary](https://banes-lab.com/ontology/lexicon/lexicon-category-core-vocabulary.md)
- [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
