- From: Bullard, Claude L \(Len\) <len.bullard@intergraph.com>
- Date: Tue, 7 Feb 2006 16:25:42 -0600
- To: "Dan Connolly" <connolly@w3.org>
- Cc: <www-tag@w3.org>
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