From: Peter W. <pwo...@qu...> - 2003-10-22 17:12:38
|
> > Normally it is not considered necessary to define elementary > > theoretical words before using them, but in this case we could > > perhaps make an exception because of the potential confusion > > with "that other kind of graph". > > That's why I think YAML shouldn't use "graph." If you have to > have a whole thing where you explain why you're using a certain > term and what it means exactly, it's the wrong term in the first > place. The meaning of the term should become apparent immediately > in a brief explanation. Look at these two examples: > > To provide interoperability between various languages, platforms, > and applications, this specification defines an abstraction called > a YAML graph. A YAML graph models native data structures of=20 > modern programming languages, including strings, arrays, hashes, > and user-defined types. > > This means virtually nothing unless you've spent a lot of time in > the yaml-core mailing list or you have someone willing to stop > and spend a couple (of) minutes explaining to you what a graph is. I think a good way to satisfy both the hardcode CS/math geeks while informing a broader audience would be to insert a sentence (after "called a YAML graph") which says (succinctly) what the "nodes" are *and* what the "edges" are. People who already know what a "graph" is will now understand the abstraction, and people who forgot what a graph is will remember (or maybe even learn) when you describe the nodes and edges. For example, a "call graph" can be described like so: it has nodes (representing routines) and directed edges, and an edge from node A to node B means that routine A calls routine B. You don't need a Ph.D. to understand that! > A YAML "node" models native data structures common to modern > programming languages, such as strings, arrays, associative > hashes, and user-defined data types. YAML nodes are grouped into > "sets" which may arrange nodes according to a particular > specification or arbitrarily. Here you've explained what a node is, but I still won't understand what you're talking about until you tell me what it means for a "set" to "arrange" its nodes. What's missing is a succinct (and *accurate*, though not necessarily *precise*) description of the relationship between the nodes. Cheers, and good luck with the spec! Peter Wolfenden |
From: Paul H. <nk...@um...> - 2003-10-23 03:58:10
|
(...delurking...) On Tue, 21 Oct 2003 03:13:30 -0400, "Robin G." <gr...@pr...> wrote: > Data in a set of YAML nodes are not meaningfully related to each > other, unless > so dictated by a specification above the YAML level, and therefore they > cannot, in any way, be thought of as a graph. Further, a graph would > be the > analysis of the data set, not the data set itself. What you call a set of YAML nodes *does* have structure at the YAML parser/loader/etc. level. Otherwise these two thingummies would be equivalent: --- foo: [ 1, 2, 3 ] ... foo: [ 3, 1, 2 ] ... Or do you mean "set" in a generic sense? Also, if the word "graph" ends up in the spec, I suggest that the word "directed" appear directly in front of it (at least when it's first used) so people who aren't familiar with the computer science use of "graph" won't be misled. They may be confused, but at least they'll know why -- they don't know what a directed graph is. Google, for example, can help with this. :-) Paul. P.S.: Hmm, you know, I rather like the term "thingummy". Let's use that. P.P.S.: Just kidding! :-) (...relurking...) -- Paul Hoffman :: Taubman Medical Library :: Univ. of Michigan nk...@um... :: nk...@nk... :: http://www.nkuitse.com/ |
From: Robin G. <gr...@pr...> - 2003-10-23 17:55:29
|
On Wed, 22 Oct 2003, Paul Hoffman wrote: > (...delurking...) > > On Tue, 21 Oct 2003 03:13:30 -0400, "Robin G." <gr...@pr...> > wrote: > > > Data in a set of YAML nodes are not meaningfully related to each > > other, unless No I didn't write that - Sean did! Please don't misattribute quotes! :) -- Robin |
From: Paul H. <nk...@um...> - 2003-10-23 19:31:34
|
On Thursday, October 23, 2003, at 12:05 AM, Clark C. Evans wrote (offlist): > Paul, I think it was Sean whom you are quoting. Yea? Yep. Oops. On Thursday, October 23, 2003, at 01:44 PM, Robin G. wrote: > On Wed, 22 Oct 2003, Paul Hoffman wrote: >> (...delurking...) >> >> On Tue, 21 Oct 2003 03:13:30 -0400, "Robin G." <gr...@pr...> >> wrote: >> >>> Data in a set of YAML nodes are not meaningfully related to each >>> other, unless > > No I didn't write that - Sean did! Please don't misattribute quotes! :) > -- > Robin Sorry. My bad. I get the digest version and was overobsessed with getting the subject line and quoted-message *times* right. :-( ObYAML: I use YAML for everything I can now (disclaimer: hammer, nails, yadda yadda). For example, I'm working on a Web app that uses a database with 28 tables; the table defs and data are in YAML and I use the Template Toolkit and some Perl scripts to generate the SQL files (CREATE TABLE, COPY, etc.) as well as the app's big, hairy, incredibly repetitive makefile. Long live YAML! Paul. -- Paul Hoffman :: Taubman Medical Library :: Univ. of Michigan nk...@um... :: nk...@nk... :: http://www.nkuitse.com/ |
From: Sean O'D. <se...@ce...> - 2003-10-23 19:51:18
|
On Thursday 23 October 2003 12:30 pm, Paul Hoffman wrote: > > ObYAML: I use YAML for everything I can now (disclaimer: hammer, nails, > yadda yadda). For example, I'm working on a Web app that uses a > database with 28 tables; the table defs and data are in YAML and I use > the Template Toolkit and some Perl scripts to generate the SQL files > (CREATE TABLE, COPY, etc.) as well as the app's big, hairy, incredibly > repetitive makefile. Long live YAML! Oh yeah, me too...I use YAML for *everything* I can. I even have a wrapper for all my Ruby scripts that catches any errors at the highest level and spits out the error in YAML format to stderr; it makes parsing from calling scripts SO much easier and informative. I even have a test suite that I'm very close to releasing for Ruby that does mostly what Test::Unit does, except it's like 10000x easier to work with, and calls tests in the order you give, not alphabetically, and ALL output from the tests are in YAML; errors, warnings, a summary, etc. Even regular stdout output made from tests are captured and placed into the YAML output tree as a child node of the test which produced the output, so really, anything that happens goes into the final YAML report. It's very cool, if I do say so myself ;D. YAML is just *so* useful. Sean O'Dell |
From: why t. l. s. <yam...@wh...> - 2003-10-23 20:17:04
|
On Thursday 23 October 2003 01:46 pm, Sean O'Dell wrote: > > ... I even have a test suite that I'm > very close to releasing for Ruby that does mostly what Test::Unit does, > except it's like 10000x easier to work with, and calls tests in the ord= er > you give, not alphabetically, and ALL output from the tests are in YAML= ; > errors, warnings, a summary, etc... Yeah, let's get this out in the open soon. I want a whiff of this module= =2E Here's the advantage I see: Formatting unit testing results for the web. = I've=20 long wanted to get results of our YamlTestingSuite posted so users could=20 compare compatibility of implementations. Also, it'd be great to have a standard format for reporting results of=20 testing. _why |
From: Sean O'D. <se...@ce...> - 2003-10-25 02:36:15
|
On Wednesday 22 October 2003 05:40 am, Paul Hoffman wrote: > (...delurking...) > > On Tue, 21 Oct 2003 03:13:30 -0400, "Robin G." <gr...@pr...> > > Or do you mean "set" in a generic sense? Well, as I read the CS use of graph, it pretty much means *any* group of data with connected nodes, regardless of relationship or order. I'm leaning away from "set" because of this, and more towards "structure." > Also, if the word "graph" ends up in the spec, I suggest that the word > "directed" appear directly in front of it (at least when it's first > used) so people who aren't familiar with the computer science use of > "graph" won't be misled. They may be confused, but at least they'll > know why -- they don't know what a directed graph is. Google, for > example, can help with this. :-) In CS, you say "edge" where I am sure most programmers are already familiar with the term "link" such as in a "linked list." A linked list is a graph, and how the list is linked might cause it to be called any sort of graph, it really depends; directed, complete, multi, etc. However, in practice, it's just called a "linked list." Arrays are arrays, not a directed graph; hashes are hashes, not simple graphs and so on. Anyway, is it not legal YAML to just have one vertice, alone and unconnected to anything? For example: --- foo Isn't that legal YAML? A single vertice cannot be a graph, as I understand the term. It must be paired with another. I just learned the CS definition, so I could be wrong, but it seems this is the case. I think "structure" is far more appropriate. For one thing, even if the above *is* a graph, YAML refines the concept and I think it's too primitive a term. For another, if you are familiar with C structures and how perl, ruby and other programming languages can construct static data structures made up of strings, hashes and arrays, you know how close YAML is to these data structures. Lastly though, I think since XML has its own refinement of the graph concept, and it's so different from YAML, that we shouldn't adopt their use of the term. YAML is just so much more structured. Sean O'Dell |
From: Oren Ben-K. <or...@be...> - 2003-10-25 08:35:39
|
Sean O'Dell wrote: > Anyway, is it not legal YAML to just have one vertice, alone > and unconnected to anything? For example: > > --- > foo > > Isn't that legal YAML? It is. > A single vertice cannot be a graph, as I understand > the term. It must be paired with another. I just learned > the CS definition, > so I could be wrong, but it seems this is the case. You are :-) The CS definition is Graph ::= tuple(V, E) where E is subset of V x V There's no requirement that |V| > 1 or that |E| > 0. A graph with a single vertex is still a graph. Admittedly a trivial one. > I think "structure" is far more appropriate. For one thing, > even if the above > *is* a graph, YAML refines the concept and I think it's too > primitive a term. You can write any (rooted, connected, directed) graph as a YAML document. You can write any unconnected (multi-rooted, directed) graph as a YAML stream. So YAML doesn't really refine the CS concept much, in the sense of using a specific subset of it. I agree with Paul that the word "directed" should appear somewhere in the spec to clarify our use of the term. Probably "rooted" as well. > For another, if you are familiar with C structures and how > perl, ruby and > other programming languages can construct static data > structures made up of > strings, hashes and arrays, you know how close YAML is to these data > structures. The motivation of using the CS term "graph" is to allow the very large body of graph theory to be applied to YAML documents. This may seem at first to be of little interest to an application or even tool writers. However, the spec must provide a single, clear, unambiguous semantics for YAML documents or different applications and tools will quickly diverge. Using the well-defined CS concept of a graph we are able to provide such a semantics. The wording then goes on to make this semantics as accessible as possible to the practice-minded application/tool writer. It is possible for a reader to simply skip the "CS theory" parts of the spec and concentrate on the "practical" parts - the map/seq/scalar concepts and the syntax. As you point out, these are very familiar to every programmer. > Lastly though, I think since XML has its own > refinement of the > graph concept, and it's so different from YAML, that we > shouldn't adopt their > use of the term. YAML is just so much more structured. Serializing a generic graph into XML is such a PITA that entire specifications have been devoted to the subject. In contrast, serializing such a graph to YAML is trivial. I'd say XML should drop their use of the term, not YAML :-) Have fun, Oren Ben-Kiki |
From: Sean O'D. <se...@ce...> - 2003-10-26 19:24:42
|
On Wednesday 22 October 2003 08:32 am, you wrote: > (offlist) > > Sean, > > Your feedback has been very helpful, and I am taking it into > consideration with the upcoming fixes to the model section; > in particular some of your phrasing is good. As I said on the > list, I would be thrilled if you started a YAML tutorial, and > I'm sure all of us would provide feedback for such a thing. > > In any case, I *need* to focus on getting the spec out by > the end of the month -- so I'll be a bit more silent, don't > take this as a lack of approval; only a signifier that I'm > human and only have so many cycles per day. If I do make > further posts, what I'm looking for now are particular > sentances that you just can't live with, etc., not entire > paragraph rewrites. (although the rewrites you did provide > were helpful in showing your thouht pattern) You know what? Darn it, I have been meaning to overhaul my web site expressly for the purpose of doing things like this (posting tutorials) so I'm just going to get it done and do a YAML tutorial. I can post my YAML syntax highlighter for SciTE there as well; perhaps you could post a link to it. I already know the basics with YAML, but if you could, send me one paragraph that says what is what using the final terminology and I'll run with it. I can turn out a series that will probably be pretty darn suitable. Just the final terminology is all I need to know, really. Sean O'Dell |
From: Joseph R. <ros...@co...> - 2003-10-22 19:06:18
|
Another way to do this (it is a hyper text, after all) is to link to the NIST definition: http://www.nist.gov/dads/HTML/graph.html -- that's where I turn as a self-educated computer programmer when I'm trying to grok a data structure or algorithm I'm unfamiliar with. -Joe On Wednesday, October 22, 2003, at 09:49 AM, Peter Wolfenden wrote: >>> Normally it is not considered necessary to define elementary >>> theoretical words before using them, but in this case we could >>> perhaps make an exception because of the potential confusion >>> with "that other kind of graph". >> >> That's why I think YAML shouldn't use "graph." If you have to >> have a whole thing where you explain why you're using a certain >> term and what it means exactly, it's the wrong term in the first >> place. The meaning of the term should become apparent immediately >> in a brief explanation. Look at these two examples: >> >> To provide interoperability between various languages, platforms, >> and applications, this specification defines an abstraction called >> a YAML graph. A YAML graph models native data structures of >> modern programming languages, including strings, arrays, hashes, >> and user-defined types. >> >> This means virtually nothing unless you've spent a lot of time in >> the yaml-core mailing list or you have someone willing to stop >> and spend a couple (of) minutes explaining to you what a graph is. > > I think a good way to satisfy both the hardcode CS/math geeks while > informing a broader audience would be to insert a sentence (after > "called a YAML graph") which says (succinctly) what the "nodes" are > *and* what the "edges" are. People who already know what a "graph" > is will now understand the abstraction, and people who forgot what > a graph is will remember (or maybe even learn) when you describe > the nodes and edges. > > For example, a "call graph" can be described like so: it has nodes > (representing routines) and directed edges, and an edge from node > A to node B means that routine A calls routine B. You don't need > a Ph.D. to understand that! > >> A YAML "node" models native data structures common to modern >> programming languages, such as strings, arrays, associative >> hashes, and user-defined data types. YAML nodes are grouped into >> "sets" which may arrange nodes according to a particular >> specification or arbitrarily. > > Here you've explained what a node is, but I still won't understand > what you're talking about until you tell me what it means for a > "set" to "arrange" its nodes. What's missing is a succinct (and > *accurate*, though not necessarily *precise*) description of the > relationship between the nodes. > > Cheers, and good luck with the spec! > > Peter Wolfenden > > > ------------------------------------------------------- > This SF.net email is sponsored by OSDN developer relations > Here's your chance to show off your extensive product knowledge > We want to know what you know. Tell us and you have a chance to win > $100 > http://www.zoomerang.com/survey.zgi?HRPT1X3RYQNC5V4MLNSV3E54 > _______________________________________________ > Yaml-core mailing list > Yam...@li... > https://lists.sourceforge.net/lists/listinfo/yaml-core > > |