"Barry (work)" wrote:
> 
> ----- Original Message -----
> From: Adam B. Roach <[EMAIL PROTECTED]>
> To: "Barry (work)" <[EMAIL PROTECTED]>
> Cc: <[EMAIL PROTECTED]>
> Sent: Monday, April 24, 2000 3:59 PM
> Subject: Re: Lessons learned...
> 
> > >As a general point, about the need for parsers to be forgiving - there is
> an
> > >argument that 'over-aggressive' parsers are useful because they prevent
> > >unpredictable and potentially serious operational problems
> > >from arising in a complex interworking environment.
> >
> > I'm not sure I agree. Can you give an example of the concern you
> > beleive you're addressing?
> >
> 
> Let's say a forgiving parser in system A passes some crud on to another
> system B. A has no knowledge of how  B will react to anything that is
> outside the spec. 

Well, it will do one of two things:

1. its forgiving, as A is, and accepts the request
2. its strict, and rejects the request

In the case of (1), the request will succeed, and thus A did the right
thing by not rejecting it. In the case of (2), the end result is the
same as if A had rejected the request. So, by passing the requests on
even if they are not perfect, we improve the overall system robustness,
since we have increased the chances of a successful request at no cost.

I think being forgiving regarding syntax (and protocol semantics, too)
is absolutely essential for real interoperability. The simple fact is
that it is humans that are, in the end, implementing these protocols,
with the invariable result of some amount of variability in what is
being done. Being forgiving wherever possible helps us handle the "human
factor" better.

-Jonathan R.
-- 
Jonathan D. Rosenberg                       72 Eagle Rock Ave.
Chief Scientist                             First Floor
dynamicsoft                                 East Hanover, NJ 07936
[EMAIL PROTECTED]                     FAX:   (732) 741-4778
http://www.cs.columbia.edu/~jdrosen         PHONE: (732) 741-7244
http://www.dynamicsoft.com

Reply via email to