We're trying to derive that a^x = b^(x * log_b(a)).
Or in verbose descriptive terms, oldBase `exponentiate` oldExponent = newBase `exponentiate` ( oldExponent `multiply` inverseExponentiationInNewBase (oldBase) ).
We could maybe argue about the verbosity and clarity of each statement, but I think math's notation shines when you compare derivations instead of statements:
a^x
= b^( log_b(a^x) )
= b^( ln(a^x)/ln(b) )
= b^( x * ln(a)/ln(b) )
= b^( x * log_b(a) )
or with descriptive names (apologies to readers on mobile): oldBase `exponentiate` oldExponent
= newBase `exponentiate` ( inverseExponentiationInNewBase(oldBase `exponentiate` oldExponent) )
= newBase `exponentiate` ( inverseNaturalExponentiation(oldBase `exponentiate` oldExponent) `divide` inverseNaturalExponentiation(newBase) )
= newBase `exponentiate` ( oldExponent `multiply` inverseNaturalExponentiation (oldBase) `divide` inverseNaturalExponentiation(newBase) )
= newBase `exponentiate` ( oldExponent `multiply` inverseExponentiationInNewBase (oldBase) )
If I were doing it by hand, I know I'd screw it up with long stuff to copy. Remember accidentally dropping negative signs in school? Hell, I'm still not really sure I got the second version right. By hand, I'd also get super frustrated and impatient writing sooo much.This is a ridiculous over the top example, since I'm avoiding using everyday symbols like * and / and ^ and log, but for working mathematicians and applied mathematicians, their notation is just as familiar to them and I'm sure it'd be equally annoying to write out descriptively as it is for us to write out basic math symbols descriptively.
Programming notations are to be written and read. Math notation is to be manipulated.
But there are alternative ways of describing that derivation that are not as symbol-manipulation heavy; you would certainly not communicate this proof in words to another mathematician — or to a non-mathematician — by simply reading your derivation (or your alternate, verbose derivation) symbol by symbol. Instead you would more likely rely on the meanings of the symbols.
Even in your verbose derivation, however, it’s worth noting that your new names capture the fact that b^x and log_b(x) are inverses, a key piece that someone unfamiliar with logarithms and their relationship to exponentiation now has a hope to understand.
Because it is better communicated in notation than in words.
Also, no better notation could help you understand most modern mathematics. There's no better choice of symbols or names that will help you understand Galois theory. You simply need to understand high-school algebra, then group theory, then Galois theory.
This probably isn't completely true—as will be clear to anyone, even a subject expert, who tries to go back and read the original papers. At least part of this is due to fads in notation—in my field, I can easily read the papers of people who do similar work to mine, and struggle with the papers of those who don't, even when they're talking about exactly the same thing—but some of it must be due to genuine improvement.
Being able to recognize things like "oh, that's a polynomial!" is extremely useful, especially in the context of learning new math rather than a more applied context. And I think it would be extremely hard to spot an opportunity to do integration by parts when working with Java-style verbose variable names.
Imagine you would write the code on paper by hand and have to repeat some long var or function name all the time . Even with IDEs I see programming languages using shorter keywords like "var","const","int" then the full word.
Because you are agains single letter symbols let me know what are your suggestions for PI, or X(in polynomials or equations) and show me a screenshot on how some real world physics equation solving would look like with camel case named symbols.
Sure, you could write
-CoefficientInFrontOfXToTheOne/2
But then each row of your calculation will need line breaks and will be hard to understand. It will take forever to write and it will take forever to read. No thank you.
Now, formalising that above sentence even with symbols is quite difficult.
Maybe the overuse of opaque names leads to self-selection of who becomes a mathematician?
Single-letter non-descriptive variable and functions names would “make sense” to programmers who use it all day long too — but that alone doesn’t make it a good idea.