Rule of least power
# Rule of least power

In programming, the rule of least power is a design principle that "suggests choosing the least powerful [computer] language suitable for a given purpose". Stated alternatively, given a choice among computer languages, classes of which range from descriptive (or declarative) to procedural, the less procedural, more descriptive the language one chooses, the more one can do with the data stored in that language.

This rule is an application of the principle of least privilege to protocol design. The Rule of Least Power is an example in context of the centuries older principle known as Occam's razor in philosophy. In particular, arguments for and against the Rule of Least Power are subject to the same analysis as for Occam's razor.

## Rationale

Originally proposed as an axiom of good design, the term is an extension of the KISS principle applied to choosing among a range of languages ranging from

* the plainly descriptive ones (such as the content of most databases, or progressive enhancement on the web),
* logical languages of limited propositional logic (such as access control lists),
* declarative languages on the verge of being Turing-complete,
* those that are in fact Turing-complete though one is led not to use them that way (XSLT, SQL),
* those that are functional and Turing-complete general-purpose programming languages, to
* those that are "unashamedly imperative".

As explained by Tim Berners-Lee:

