RE: Principle of Least Power (was Re: Agenda of 7 February 2006 T AG teleconference)

Thanks Dan.  Certainly there are some examples as you point out.
I cut the cc list in deference to those who don't want to 
read your tutoring of my lack of understanding this.

So the range is from simple declaration to Turing complete. Is 
that the only razor?

"you typically cannot determine what a program in a Turing-complete 
language will do without actually running it."  

That is pretty good but you can't determine what you can't determine
without 
running it either.  As you point out, in the simple cases you know but 
there is no demarcation that says 'beyond this thar be monsters'.

Given the broad range, it might be useful to have a list of features 
of not-quite Turing complete languages beyond regexps.  Is that what 
Henry is asking for? 

Wouldn't it be just as useful to isolate out the declarative features?  
For example, the oft quoted comparison of C structs with XML element
declarations 
vs declaring a C++ object.  IOW, separation of powers is useful 
in meeting this goal as in the RDF vs Java applet example for 
weather (presentation vs calculation vs getData).

I dunno.  I am a little suspicious of the application of the principle 
even if it appears reasonable on the surface because it's equivalent
with 
'do the simplest thing that can possibly work' and 'separate
presentation 
from formatting" which leads to 'keep the business objects out of the 
client' which leads to 'loose coupling' and the 'don't pass a type 
if you can pass a string' idea which some think a step too far.

How does one know when to step up to more power?  When it isn't 
the simplest thing that could possibly work?  If you can't know 
without running it, the principle is equivalent to 'start simple 
and run it until it quits working' but that isn't the same as 
'stay simple so others can use it in ways you don't know about 
because they haven't run it yet'.  Feels weird.

I suppose that it being a 'best practice principle' it can be 
mushy at the edges.

If you had to write RDF for the languages that start from 
declarative to Turing complete, could that be more than 
"is one, isn't one"?  In other words, if a machine had 
to apply the principle, could it?

len


From: www-tag-request@w3.org [mailto:www-tag-request@w3.org]On Behalf Of
Dan Connolly

On Tue, 2006-02-07 at 13:43 -0600, Bullard, Claude L (Len) wrote:
> I wish there were language comparisons that grounded this 
> principle in examples.

The draft gives a number of examples, no?

"A bug-free regular expression processor, for example, is by definition
free of many security exposures that are inherent in the more general
runtime one might use for a language like C++."
"HTML for example, is intentionally designed not to be a full
programming language ..."
 -- http://www.w3.org/2001/tag/doc/leastPower.html


>   To repeat from XML-Dev:
> 
> When selecting a language, how does one know when it has the 'least
power'?
> 
> o  Is Assembler less or more powerful than C?
> 
> o  Is C less or more powerful than C++?
> 
> o  Is Lisp less or more powerful than Prolog?

Those are all turing-complete; equally expressive.

> o  Is RDF less or more powerful than Conceptual Graphs?

Pretty close... I think CGs have universal quantification
where RDF does not; I'd have to double-check.

> o  Are Conceptual Graphs more or less powerful than Topic Maps?

My repeated attempts to ask that Topic Maps be specified
w.r.t. traditional structures so that I could make such
a comparison have yielded unsatisfactory results.
I don't know what the expressive capability of Topic Maps is.

> o  Are DTDs less or more powerful than Schematron?

Schematron is turing-complete, as I understand. DTDs are not.

> A principle or axiom is of no value without the rules for applying it.

> At least some examples?
> 
> len

-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/
D3C2 887B 0F92 6005 C541  0875 0F91 96DE 6E52 C29E

Received on Tuesday, 7 February 2006 22:25:52 UTC