Re: Drop $position callback…

On Mon, Mar 10, 2025 at 2:13 AM Norm Tovey-Walsh <norm@saxonica.com> wrote:

> Hi folks,
>

Hi folks,



>
> We had a long discussion about PR #1735 last week. We seem to have several
> folks in favor of dropping the $position argument and several folks in
> favor of keeping it.
>
> I’m going to put it on the agenda, but unless someone has a new argument
> that they think will be persuasive (one way or the other), I don’t think
> there’s much value in spending a lot more time discussing it.
>
>

KISS - it is that simple. KISS is a long established design principle,
meaning "*Keep it simple, stupid*", and it has been adhered to since 1960
in critical designs and software applications by the US Navy, the United
States Air Force, etc. It is meant to save lives - literally.

It has many variants that many different people came up with independently,
such as:


   - Occam's razor <https://en.wikipedia.org/wiki/Occam%27s_razor>;
   - "Simplicity is the ultimate sophistication";
   - Shakespeare <https://en.wikipedia.org/wiki/Shakespeare>'s "Brevity is
   the soul of wit";
   - Mies van der Rohe
<https://en.wikipedia.org/wiki/Mies_van_der_Rohe>'s "Less
   is more <https://en.wikipedia.org/wiki/Less_is_more_(architecture)>";
   - Bjarne Stroustrup <https://en.wikipedia.org/wiki/Bjarne_Stroustrup>'s
   "Make Simple Tasks Simple!";
   - Dr. Seuss <https://en.wikipedia.org/wiki/Dr._Seuss>'s ode to brevity:
   "So the writer who breeds more words than he needs, is making a chore for
   the reader who reads";
   - Johan Cruyff <https://en.wikipedia.org/wiki/Johan_Cruyff>'s "Playing
   football is very simple but playing simple football is the hardest thing
   there is";
   - Antoine de Saint-Exupéry
   <https://en.wikipedia.org/wiki/Antoine_de_Saint-Exup%C3%A9ry>'s "It
   seems that perfection is reached not when there is nothing left to add, but
   when there is nothing left to take away";
   - Colin Chapman <https://en.wikipedia.org/wiki/Colin_Chapman>, the
   founder of Lotus Cars <https://en.wikipedia.org/wiki/Lotus_Cars>, urged
   his designers to "Simplify, then add lightness";
   - Attributed to Albert Einstein
   <https://en.wikipedia.org/wiki/Albert_Einstein>, although this may be an
   editor's paraphrase of a lecture he gave,[10]
   <https://en.wikipedia.org/wiki/KISS_principle#cite_note-10> "Make
   everything as simple as possible, but not simpler";
   - Steve Jobs <https://en.wikipedia.org/wiki/Steve_Jobs>'s "Simplify,
   Simplify, Simplify",[11]
   <https://en.wikipedia.org/wiki/KISS_principle#cite_note-11>[12]
   <https://en.wikipedia.org/wiki/KISS_principle#cite_note-12> which
   simplified Henry David Thoreau
   <https://en.wikipedia.org/wiki/Henry_David_Thoreau>'s quote "Simplify,
   simplify, simplify" for emphasis;
   - Northcote Parkinson
   <https://en.wikipedia.org/wiki/C._Northcote_Parkinson>, British academic
   and sometimes military officer and military critic, expressed this idea as
   "Parkinson's Third Law" (c. 1957): "Expansion means complexity and
   complexity, decay; or to put it even more plainly—the more complex, the
   sooner dead";

Heath Robinson <https://en.wikipedia.org/wiki/Heath_Robinson> contraptions
and Rube Goldberg's machines
<https://en.wikipedia.org/wiki/Rube_Goldberg_machine>, intentionally
overly-complex solutions to simple tasks or problems, are humorous examples
of "non-KISS" solutions.

Let us turn to our concrete case. Compare just the formal definitions of
fn:fold-left in its *current form
<https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-fold-left>*in
the Spec and as proposed by Michael Kay in

Here are the screenshots side by side - current
<https://qt4cg.org/specifications/xpath-functions-40/Overview.html#func-fold-left>
:

[image: image.png]

and *proposed
<https://qt4cg.org/pr/1735/xpath-functions-40/Overview.html#func-fold-left>*
:
[image: image.png]

As they say, "*A picture is worth a thousand words*" ... As above ...

Is this monstrous jump in complexity (more than 3 times higher!)  really
justified?
Will a soldier in the field, which we - developers all are, have the time
and concentration to understand from the above code what the function is
doing, and even more importantly why is it so complicated and when to use
the "action" that accepts a positional argument? Most would probably
decide: "*This is too-complicated, I will try to avoid it. They really blew
it up with XPath 4*."

It is up to you to decide, folks, but *avoiding KISS is not something to be
proud of*.

Thanks,
Dimitre.

Some languages provide position arguments, some don’t. We aren’t “copying
> JavaScript” if we keep them, nor are we “copying C#” if we drop them. Some
> people think they’re valuable and convenient, some think they’re complex
> and confusing.
>
> I prefer it when discussions lead to unanimity or near unanimity, but with
> my chair’s hat pulled down firmly over my ears, I think the position we’re
> in is this: we have a status quo draft and this is a proposal to change the
> status quo. If there are still several members of the CG who are opposed to
> the change, then I think the PR will have to be abandoned in favor of the
> status quo.
>
> If you have new, persuasive arguments, prepare to make them. (Better yet,
> make them now, in email, persuade your peers that you’re right, and we can
> resolve this quickly tomorrow, without acrimony.)
>
>                                         Be seeing you,
>                                           norm
>
> --
> Norm Tovey-Walsh
> Saxonica
>
>

Received on Monday, 10 March 2025 15:38:09 UTC