On Feb 18, 2008 11:40 PM, Andrew Lentvorski <[EMAIL PROTECTED]> wrote: > Bob La Quey wrote: > > On Feb 18, 2008 4:02 PM, Andrew Lentvorski <[EMAIL PROTECTED]> wrote: > > > >> Well, part of it is the fact that most XML libraries in C and Java > >> eventually flip themselves inside out in order to be iterative to avoid > >> stack faults. > > > > Really? Color me mildly skeptical.
> > How deep are these > > XML structures anyway? Can you give me an example? I guess I should have indicated my sarcasm :( > www.slashdot.org -> view page source > > So, assuming that slashdot is probably well behaved, there's your > minimum depth for site. I looked and counted: about 8 or 9 levels. It isn ot like 100's or anything of that sort. I suppose some folks compile with small stacks. > However, you don't want *any* site to be able to crash your application > by simply nesting elements sufficiently deeply. Uh, then limit the recursion in the code. > >> Suddenly, you can't access things in a recursive fashion > >> and have to start doing things like callbacks, iterators, etc. > > > > There are a_lot_ of reasons to want to access things in > > other than recursive fashion. That is a main reason why > > we traverse stuctures, like XML structures. > > I can come up with reasons, but I think you are being kind. > > I would argue that we traverse structures iteratively rather than > recursively because the languages in use to this point make iterative > easier than recursive. Not necessarily. Often we simply want to map things onto other structures. Sometimes that is easier to do recursively sometimes in some other way. Lots of code gets written that traverses XML in essentially a pattern matching mode without much reference to the tree structure. Certainly that is a natural way for a lot of the Perl guys to do things. > Without closures/continuations, there is no way to suspend the "stack" > information from a recursive set of calls to be resumed later (C, C++, > Java, for example). Well it has been a while but what about jump, setjump in C? > When you have closures/continuations, suddenly you > get recursive solutions popping up. Witness the number of "yield"-based > XML traversal solutions in Python (yield is a weak continuation construct). OK. I will have to explore this. > To be fair, though, lots of the junk in the SAX way of traversing XML is > to deal with the fact that XML "nodes" are polymorphic while the > implementation language is statically typed. Agree that the nodes are polymorphic but I do _not_ see what that has to do with static typing. Please explain. Maybe what you are saying is that if a node were a single data type then compile time checking could be imposed? BobLQ BobLQ -- [email protected] http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg
