On Sun, Jul 22, 2018 at 3:55 AM Steven D'Aprano <steve@pearwood.info> wrote:
Indeed we do. But we also say:

- we say "+" instead of "add"
- we say "//" instead of "floor division"
- we say "**" instead of "exponentiation"
- we say "&" instead of "bitwise AND"
- we say "f( ... )" instead of "call f with arguments ..." 
[...] 
I don't think that "+" is harder to read than 
"standard_mathematics_operators_numeric_addition"

Please let's drop the argument that + - * / = and ? are the same. They clearly are not. Anybody learned those symbols at elementary schools, all programming languages have them and using math in programming is common enough to justify a symbol over a keyword. "a + b" is literally just an addition and nothing else. The "?" variants have multiple meanings, spellings and implications:

- "a ?? b" means "b is chosen over a if a is None"

- "a ??= b" means "a is set to b if a is None" 

- "a?.b" means "a.b is executed but only if a is not None"

- "a?[2] ?? 3" means "index 2 of list a is picked up if a is not None, else use 3"
 
"a?.b"and "a?[2]" in particular go way beyond the mere "it's not pretty" argument which, I concur, can be subjective, as you don't know where evaluation stops. Even "a ??= b" goes beyond that as it introduces yet another assignment operator (the third, as we now have = and :=). So again, I don't think it's fair to dismiss the whole thing as "it's just another symbol" or "it's like a + b".

As for bitwise operators: they are kinda obscure and low-levelish and when I bump into them I still have to pause to reason what's going on. The difference with ? though is that you basically have no other way to do the same thing. Also they are much more rare and also are present in many other languages since... forever. 

--
Giampaolo - http://grodola.blogspot.com