In the philosophy of language and systems design, a key distinction can be drawn between performative commands and descriptive functions. This distinction is useful both in legal or governance frameworks, such as the Hitchhiker Constitution, and in software architecture and domain-specific languages.
## Philosophical Background
**Performative Language**:
In linguistics and philosophy, performative utterances are statements that don’t just describe a reality but actually enact it. For example, when someone says "I hereby declare," "You are under arrest," or "I now pronounce you married," the act of saying it changes the state of the world. In other words, these are commands that perform an action.
**Descriptive Language**:
By contrast, descriptive statements report on facts or states of the world without changing them. Saying "It is raining outside" or "The server is currently down" doesn’t enact any change; it just describes a situation.
## Application in Systems Design
**Commands as Performatives**:
In a software or architectural context—such as in CQRS or Event Sourcing—commands are the equivalent of performative utterances. When you issue a command, you’re not just describing what you want to know—you’re causing a change in the system’s state. This mirrors the legal or governance idea of performative language, where saying or writing something enacts a reality.
**Functions as Descriptions**:
On the other hand, descriptive functions or queries simply retrieve information about the current state of the system. They are akin to descriptive language, offering a report or a snapshot without changing anything.
## Integrating the Distinction into a Domain-Specific Language
In the design of a domain-specific language (DSL) like the one envisioned for the Hitchhiker Constitution, this philosophical distinction can be directly encoded. Commands in the language can be treated as performative actions that change the state of a digital or legal system—much like issuing a blockchain transaction or a legislative act. Functions, meanwhile, remain descriptive tools that allow users to query the system without altering it.
## Conclusion
By acknowledging the distinction between performative commands and descriptive functions, both in philosophy and in system design, we create clearer, more intentional languages and architectures. This approach not only enriches the design of a DSL but also aligns it with a broader tradition of performative language in law, governance, and technology.
## References
- Hitchhiker Constitution
- wikipedia.org
- martinfowler.com ![]()