Hacker News new | ask | show | jobs
by pubby 2157 days ago
Imagine I give you a list of words and ask you to remember them. 5 minutes later, I ask you to give me those words in reverse order. Not too hard, right?

Now imagine if those words I gave you were in Vietnamese, or some language you don't speak. Suddenly the task becomes much more confusing. You aren't remembering a small handful of objects and ideas, but instead trying to juggle the individual syllables in your head.

Math notation sucks because none of it maps to things non-mathematicians know. Every time a new symbol is introduced, whether it be a greek letter or a operator, it's one more mapping your brain has to create to remember it. And on top of this, you also have to remember the English names too. Yes I said names - most math concepts have so many different names it's crazy. Even basic arithmetic can't escape this. There are two names for multiplication (multiply, product) and four common notations for representing it (*, x, ·, and whatever you call it when two variables are next to each other).

5 comments

Now imagine if those words I gave you were in Vietnamese, or some language you don't speak.

Math notation sucks because none of it maps to things non-mathematicians know.

I'm struggling to see how someone could conclude the latter statement from the former. Why is it reasonable for Vietnamese to be unintelligible to non-Vietnamese speakers, yet unreasonable for mathematics to be unintelligible to non-mathematicians?

I would argue that in fact most of mathematical notation happens to be intelligible to non-mathematicians (engineers, scientists, etc.)
I would disagree. Engineers, scientists, etc. have their own notation conventions as well. They may be aware of mathematical notation but only in specific areas of math related to their field (i.e. calculus and linear algebra for Newtonian physics). I would not expect a mechanical engineer to understand the notation used by graph theorists or algebraic geometers.
Neither would I expect this of mathematicians. If you never use graph theory there is no reason to know all the quirks of the domain-specific notation. This would be like expecting any programmer to be familiar with all programming languages.
> Math notation sucks because none of it maps to things non-mathematicians know.

This doesn't mean maths notation sucks any more than vim's user interface sucks because it doesn't make sense to non-vim-users.

Mathematical notation presumably mostly makes perfect sense to the kind of people who deal with mathematical notation all day long.

The question is if we should optimize for pencil efficiency or education. To me, it's obvious: I've met way more people interesting in learning math than performing it, so we try to make notation as clear and possible.

Vim, like math notation, is optimized for efficiency. That's great for power users, but it's not what you would use if you wanted to teach someone how to word process.

(BTW, try imaging Vim where each file mandates its own special keybindings. That's math notation for ya.)

Vim, like math notation, is optimized for efficiency. That's great for power users, but it's not what you would use if you wanted to teach someone how to word process.

Vim is a text editor, not a word processor. Additionally, Vim is a tool designed for power users. Mathematical notation is also meant for power users. When we teach mathematics, we introduce the notation gradually, so students have time to pick it up. This is a process which takes decades from Kindergarten through PhD. Just as a Vim user would scoff at being forced to write in Notepad, a mathematics PhD would scoff at being forced to express their ideas in Kindergarten-level mathematical notation.

try imaging Vim where each file mandates its own special keybindings. That's math notation for ya.

That's how Emacs works, and how Vim works when you install filetype-specific plugins.

I'm a power user (been programming for 30 years) and I refuse to use vim keybindings.

I have too many things to remember, and there are plenty of options that give me equal power but don't demand that investment from me.

Math isn't like that - I do more math than the average person and I hate having to decipher the annotation. The number of times I've tried to work out if this sigma is the same as the sigma in this other paper frustrates me enormously.

Or the paper that used a accuracy^bar metric as their primary reporting metric, and we couldn't get near it until we found an obscure footnote in an appendix that explained the ^bar metrics were temporally averaged at test time around a known labelled standard (ie, test data was used to optimise the performance).

Mathematics is more general and applicable than Vim, I'll give you that. I wasn't the one who brought in the Vim analogy, however.

It seems like your complaints are with academic papers, not with mathematical notation specifically. This is a problem that is universal to academic papers. Try reading a critical theory paper, for example, and you'll find it's extremely dense with critical theory jargon the authors don't bother explaining at all.

The problem with academic papers is that they aren't intended for a general audience. The authors of papers are often operating in subfields that are so small that they've actually met most of the other people who will be reading their papers. In that situation, conventions and jargon arise naturally among colleagues. Variable names form a part of these conventions such that, in a more common example, sigma will mean standard deviation among statisticians but mean singular value among linear algebraists.

The other problem with academic papers is that the authors generally don't care about reproducibility, consistency, clarity, pedagogy, or even intelligibility. They're optimizing for quantity of papers published, not quality. As long as their expert peer reviewers understand and give the green light for publication, that's good enough.

To be honest I think my (and most people on this thread) real complaint isn't with notation per-say (as in Euclidean vs Hilbert notation etc, as discussed by Tao).

It's really about the lazy habits of many who work at the intersection of math and computer science, and use maths to express themselves without defining things.

> The other problem with academic papers is that the authors generally don't care about reproducibility, consistency, clarity, pedagogy, or even intelligibility. They're optimizing for quantity of papers published, not quality. As long as their expert peer reviewers understand and give the green light for publication, that's good enough.

Having worked around this field, I think this (common) perception of publishing doesn't quite capture what is happening. Peer review isn't anything like code review, and software engineers (separate from computer scientists and mathematicians) think that it is.

You say "I've met way more people interesting in learning math than performing it", but I have found it downright impossible to learn mathematics without performing it. And I daresay this is true of most people -- a well-known feeling amongst mathematics graduate students is to read a chapter of a text, think we have understood it, then turn to the very first exercise and get completely stumped and have to backtrack.

A lot of mathematics is optimised for pencil efficiency for a reason, and it's not at odds with learning mathematics.

> I've met way more people interesting in learning math than performing it, so we try to make notation as clear and possible.

That is like trying to learn an instrument by looking at it but never touching it. Notation like other tools is made to useful. Also if you never played an instrument you would think they are each their own little completely different world. That's totally wrong for ya.

> This doesn't mean maths notation sucks any more than vim's user interface sucks because it doesn't make sense to non-vim-users.

I think this nails it perfectly. There are plenty of good programmers who refuse to use vim. In math those people can't operate.

> Mathematical notation presumably mostly makes perfect sense to the kind of people who deal with mathematical notation all day long.

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.

If your job consisted of calculating with sequences of changes of programs, with no copy paste available, you'd probably feel differently. For example, a fairly roundabout derivation of a change of base for logarithms (pretending we forget log(a^x) = x log(a) for arbitrary base):

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.

Every domain — every language — has its basic jargon, and algebra is no exception. I’m not suggesting that mathematicians simply replace every symbol with a word that hints at meaning; that’s too literal an interpretation of what I wrote. “exponentiate” is no more descriptive than “^”.

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.

I think most people who wanted to communicate this proof in person would say 'let's find a whiteboard, or do you have some paper'? And then proceed to write down the first version of the proof.

Because it is better communicated in notation than in words.

I'm both a programmer and a mathematician. Mathematics is written in English (or another human language) plus added symbols. The symbols are what we refer to as the notation. It's not comparable to programming language. Here the words are equal to the symbols.

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.

> 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.

Yes, you're right. I should have said, there's no better choice of symbols that will remove the huge set of prerequisites you need to first understand. There isn't as large of a tower of abstractions to understand most codebases.
but put it the other way: can you contrive some extremely bad notation to make it harder to understand Galois theory?
Opaque names have the advantage that they don't trigger any potentially misleading associations and they emphasize the abstract nature of what is being discussed. A variable named x could be anything, even something that the mathematician/programmer didn't anticipate.
I agree with this. Additionally, I think a lot of detractors of single-letter variable names don't realize that it is often the case that the structure of the equation/expression is what's interesting, not what any individual variable represents. That structure is most visible and apparent when the variables don't take up any more space than the operators.

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.

>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.

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.

Go back a few centuries and you get long form Latin instead. Or go back much further and you will find the quadratic formula described as taking the number that the second term is increased by, diminishing it by half and then.... . Basically an essay just to say -q/2.

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.

Mathematicians will never agree to write dblEulerConstant instead of e.
And, issues about the length of the name aside, we shouldn't! `e` isn't a double or any other standard numeric type. It is an infinite-precision number.
I know what you mean, and a number that is not infinitely precise is an interval (i.e. a set of numbers). e is a number that is quite hard to pin on the imaginary number line, because the chances of hitting it with a pin is virtually zero. But the same argument can be made about the number 2 or 3. Those are just notations to abstract ideas, even though it is easier to formulate analogies for some of those numbers.

Now, formalising that above sentence even with symbols is quite difficult.

The frustration is inarguably real, but...

Programming language syntax sucks because none of it maps to things that non-programmers know. Every time a new token is introduced, whether it be an ascii symbol or a word it's one more mapping your brain has to create to remember it. And on top of this you have to remember how these actually execute too. Yes I said execute - most programming concepts have so many implementations it's crazy. Even basic conditionals can't escape this. There are several tokens for if-statements (if, guard, case, (^:), etc.) and countless common implentations (gcc, ghc, guile, J, and whatever actual processors end up doing).

Deep, complex things are hard, my friend. The pain is real; the payoff is totally worth it though.

Except it's much easier to look up definition and examples for these tokens, without going so deep into the rabbit-hole.
Sure, but my point was that good notation takes advantage of the wealth of pre-existing plumbing that exists in our brain.

I think a good example is: https://xkcd.com/936/

"Correct Horse Battery Staple" is easier to remember than "Tl)7x" because the latter maps into plumbing we already have. Likewise, print "Hello world" is easier to remember than printf("Hello World"), which is easier to remember than std::cout << "Hello world"; This is why we recommend beginners start with a language like Python or BASIC and not C++.

Also, my point wasn't about ideas, but rather the notation used to represent these ideas. For example, you might not be able to read "Ăn quả nhớ kẻ trồng cây", but if I tell you it means "When eating a fruit, think of the person who planted the tree" you understand the idea. Notation is just a means of transferring ideas. Having deep complex ideas is not an excuse for poor notation.

I dropped out of college at 19 and attempted to return at 21. My first math course back was discrete math and my teacher was a grad student who very clearly had no interest in teaching and was only there in order to subsidize his "real work". Keep in mind this is a large public university charging $40k/year. Going into his office hours was like going to another country, because his only method to explain math was really really advanced level math notation. He became visible frustrated that I didn't pick up on his notation. I wish I could say that was my only teacher who has no business teaching.

I dropped out again and haven't looked back. That system wasn't for me and didn't care about my success or its ability to transfer knowledge.

In many university mathematics curriculums, discrete math is the course used to transition students from the computation-oriented mindset (instilled in them by high school and early undergraduate courses up through calculus) to the more abstract and proof-oriented mindset. Thus, teaching you to use that "really really advanced level math notation" is often one of the primary goals of the course, even if it seems like unnecessary overkill at the time. If you refuse to learn it, you're setting yourself up for failure in any future math course that uses that notation as the starting point for building new concepts and abstractions.
We were never taught the notations, he would just pull out dozens of glyphs from his vast experience in mathematics - not the standard notations you might find in a text book. I won't deny that I could've researched these topics deeply in my own time enough to keep up with the graduate student, but I myself had no interest in being a graduate math student just to pass the course.
I'm sorry you had that experience. No student deserves to be treated the way you were treated.

Mathematics is a deep subject. It requires many hours of study over decades to develop. Students who are struggling deserve to have a patient teacher explain things to them in terms they already understand. Not every student has this experience, however. I have tutored a number of my peers in undergrad and they have complained of similar treatment from professors or TAs. I do my best to help them and make sure they really understand the topics they're studying.

> Keep in mind this is a large public university charging $40k/year.

Funny enough, that grad student was almost certainly making less than that. Universities are screwed up.

Another useful realization, after a witty quote attributed to Einstein, is to consider that as much trouble as you (the GP) were having with math, the grad student was having much more.
It will not help you, but generally, you should go to a university with an intent to learn, not to be taught.
In addition, the same notation is often overloaded in new domains, where the association with the prior domain is metaphorical, or even simply allegorical.

As a novice programmer, it took years to get out of the habit of using non-descriptive single-letter variable and function names. It’s a terrible habit, and makes code incomprehensible — and programmers know it.

Math, as taught to kids, is full of single-letter variable names (or worse, as you point out, using non-Roman letters and other symbols) that are devoid of any hints to the uninitiated of what their meaning might be.

I wonder what it would be like if math were taught with descriptive names — starting with the basics, for functions and variables, and used those names consistently.

Would it be more verbose? Absolutely — but I’m pretty sure it would also be a huge kindness to learners.

But Math is taught gradually, introducing concepts in child-friendly ways, and moving up towards "adult" notation.

Note that if you programmed in FP languages, you'd have to unlearn the "descriptive variable names" thing you were taught. Once you deal with abstractions, names cease to be meaningful. If the most you can say about a parameter to a higher order function is that it is "a function", then "f" is the best name for it. Some very good programmers argue that long/descriptive names often obscure the shape of an abstraction.

> If the most you can say about a parameter to a higher order function is that it is "a function", then "f" is the best name for it

Of course. But even in FP languages you don’t name all your functions “f”! At some level of abstraction, sure, you use “i” for index variables, etc., but once you back out of that low level, you are going to be naming things that are less abstract.

Agreed. I'd say Math is a lot like the abstract parts of FP, and so short variable names make sense there, just like they do in higher order FP functions. Choosing "more descriptive" names risks locking you into a specific metaphor and prevents you from seeing the big picture, which seems doubly dangerous in Math.
Are you sure it’s not the opposite? Plenty of students can solve a set of equations. But when you start asking them about trains speeding in the night...
I think this is actually proof that students are treating math as a set of rules applied to a process, and not having any real understanding of how the variables and equations they’re mechanistically applying rules to have any connection to the real world.

If they did, it would be a lot easier to talk about trains speeding through the night!

Trains are how the courses try to help folks move from blind processes to understanding.

A person can wonder if it would be better to start with understanding. (Personally, I only briefly taught that age but my oracle for how to teach it, Mr Barton, does say that experience shows you have to have down the class's ability to mechanically solve before you introduce the trains. The other order, apparently, doesn't work when you try it with actual students in practice.)

> Math, as taught to kids, is full of single-letter variable names (or worse, as you point out, using non-Roman letters and other symbols) that are devoid of any hints to the uninitiated of what their meaning might be.

Any time a new symbol is used in a text, it will typically be introduced. The phrase "Let A be the subgraph composed of G" for example defines A in relation to G. Typically, the author will also define their notation at the start of a paper with: "A graph G is defined as the set of edges E and vertices V such that...". To be frank, I always see math papers and communications written in this style.

More often than not, I think folks just say "SINGLE VARIABLE NAMES BAD. MATH HAVE SINGLE VARIABLE NAMES". It's really dense. In any given math paper, the author typically defines any such variables. And if those definitions don't make sense, it's because the underlying mathematical objects are beyond you, and you need further background.

> More often than not, I think folks just say "SINGLE VARIABLE NAMES BAD. MATH HAVE SINGLE VARIABLE NAMES". It's really dense. In any given math paper, the author typically defines any such variables. And if those definitions don't make sense, it's because the underlying mathematical objects are beyond you, and you need further background

Yes, that’s my point.

Imagine learning a foreign language by being given a dictionary and a set of grammar rules. Is that enough to learn the language? Not really. You’d be missing idioms, patterns of speech, common phrases & compositions - the same is true in math.

If you already halfway understand the language, then yes, you can do with a reference / definitions and rules for application — but even then, understanding how to use them is not trivial.

Also, you are talking about “texts”, but there are plenty of domains in which conference and journal papers assume a certain set of notation, and that notation is not defined, nor even consistent; you need to be well-read in the field to even have a hope of understanding what’s going on. AI/robotics comes to mind, but ML in general is sometimes guilty of this.