> The ambiguity produced by stack effects is also paralleled in most infix procedural languages. C++ recognizes 18 levels of operator precedence
Yes, but all of those operators are binary operators, instead of let-me-look-at-the-documentation-ary, lots of those precedence rules are drilled into people at a young age, and lots of developers compulsively wrap them in parentheses anyway, just to make their intent absolutely clear.
All of that is very different from the experience of a concatenative language.
Although I think you're right that there is less variation, they are not all binary. -, +, & and * all have unary and binary variants, while !, --, ++, ~, new, delete and delete[] are always unary, and of course the ternary operator is always ternary.
Yes, but all of those operators are binary operators, instead of let-me-look-at-the-documentation-ary, lots of those precedence rules are drilled into people at a young age, and lots of developers compulsively wrap them in parentheses anyway, just to make their intent absolutely clear.
All of that is very different from the experience of a concatenative language.