This document is also available in these non-normative formats: XML.
Copyright © 2005 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use, and software licensing rules apply.
When designing computer systems, one is often faced with a choice between using a more or less powerful language for publishing information, for expressing constraints, or for solving some problem. This finding explains the Principle of Least Power, which suggests choosing the least powerful powerful language suitable for a given purpose.
This document is an editors' copy that has no official standing.
This document is a first draft of a proposed finding. It has been produced by the W3C Technical Architecture Group (TAG). The text of this finding was adapted from Principle of Least Power in [Axioms].
Additional TAG findings, both accepted and in draft state, may also be available. The TAG may incorporate this and other findings into future versions of the [AWWW]. Please send comments on this finding to the publicly archived TAG mailing list www-tag@w3.org (archive).
The terms MUST, SHOULD, and SHOULD NOT are used in this document in accordance with [RFC 2119].
1 The Principle of Least Power
2 Web Technologies and the Principle of Least Power
3 To Do Before Publishing Finding
4 References
Computer languages range from the plainly descriptive (such as Dublin Core metadata, or the content of most databases, or HTML), through logical languages with limited propositional logic (such as access control lists, or conneg content negotiation), through declarative languages that verge on the Turing Complete (PDF), through those which are in fact Turing Complete though one is led not to use them that way (XSLT, SQL), through those that are functional and Turing complete (Haskell), to those which are unashamedly procedural (Java, Javascript, C).
When publishing information or programs on the Web, the choice of language is important. The low power end of the scale is typically simpler to design, implement and use, but the high power end of the scale has all the attraction of being an open-ended hook into which anything can be placed: a door to uses bounded only by the imagination of the programmer. Computer Science in the 1960s through 1980s spent a lot of effort making languages which were as powerful as possible. Nowadays we have to appreciate the reasons for picking not the most powerful solution but the least powerful. The reason for this is that the less powerful the language, the more you can do with the data stored in that language. If you write it in a simple declarative from, anyone can write a program to analyze it in many ways.
The World Wide Web is unique in its ability to promote information reuse on a global scale. Information published on the Web can be flexibly combined with other information, read by a broad range of software tools, and browsed by human users of the Web. For such reuse to succeed, the broadest possible range of tools must be capable of understanding the data on the Web, and the relationships among that data. By expressing constraints, relationships and processing instructions in less powerful languages, one increases the flexibility with which information can be reused.
Good Practice: Use the least powerful language suitable for expressing information, constraints or programs on the World Wide Web.
HTML is designed not to be a full programming language so that many different things can be done with an HTML document: software can present the document in various styles, extract tables of contents, index it, and so on.
The Semantic Web is an attempt, largely, to map large quantities of existing data onto a common language so that the data can be analyzed in ways never dreamed of by its creators. If, for example, a web page with weather data has RDF describing that data, a user can retrieve it as a table, perhaps average it, plot it, deduce things from it in combination with other information. At the other end of the scale is the weather information portrayed by an ingeniously written Java applet. While the applet might provide a very cool user interface, the program cannot be analyzed at all. A search engine finding the page will have no idea of what the weather data is or what it is about. Thus, the only way to find out what a Java applet means is to set it running in front of a person.
Thus, HTML and the Semantic Web are examples of technologies designed with "least power" in mind. Web resources that use HTML and the Semantic Web are more likely to be reused in flexible ways than those expressed in more powerful languages.
The following should be considered before we publish.
Is it a principle? Roy suggests "no". Should the GPN stay? Is the title OK?
Tim BL to review.
Elliotte Rusty Harold. says he's not sure whether SQL is Turing Complete. John Hanna answers that some dialects are, but the ANSI version isn't (or at one point wasn't).
Added reference to functional languages and Haskell OK?
New 3rd paragraph on "reuse on the Web" OK?
Existence and wording of GPN OK?
Separation of and minor rewording of section 2 OK? (Tim had everything in one section.)
Decide editor list. [12/06/2005: Dan suggests it's more accurate to include Noah as an editor, at least as long as the draft has text that Tim hasn't seen or approved. Noah has been added for now; we can revert to Tim-only if most of the final texts proves to be his.
Use RFC2119 uppercase terms? If not, remove from intro and bibref. I'm leaning against [NRM]
Tim's original claims the Java applet "can't be analysed at all". I've kept that for now, but it seems a bit strong. [NRM]
Current text notes that PLP is enunciated in a document dated 1998. The actual label on the document is " Date: 1998, last change: $Date: 2005/12/20 15:40:28 $ " and Roy suggests that PLP in particular was added in a 2002 update. Need to get the date straight.
Editorial: "the attraction of being an open-ended hook into which anything can be placed" Mixed metaphor? Can you place something into a hook?