> Commutative: a b + == b a +
> Associative: a b c + + == a b + c +
> ...Maybe infix notations is preferred because it aligns more closely to natural language grammar (for some languages)
> Commutative: a b + b a + ==
> Associative: a b c + + a b + c + ==
> ...
As expressions getting larger and larger the operands are getting farther away from their operators. RPN is great for computers to read and maybe humans to write (RPN calculators). Not so much for humans to read.I’ve recently started to work with a program that uses Reverse Polish (postfix) notation [1] to implement mathematical equations and I find it very hard to make sense of the equations from the syntax. I hadn’t previously been aware that there were other alternatives to infix notation.
or
bind bind bind function1 function2 function3 function4 -- Throw parentheses at random until it compiles
It's very easy to see why people prefer the operators.
Java was designed during a time when operator overloading was considered abysmal language design.
But that was mostly due to the experiences collected with C++ (or maybe also Perl?).
This combined with relaxed method name restrictions allow you to do "operator overloading" in quite a sane way and allow you to write bigint + 1 or set contains element.
Kotlin is a bit more conservative and only translated the built-in operators to fixed methods: + to the plus method etc.
Perl didn't even have objects before that.
So no it wasn't from experience with Perl.