Hacker News new | ask | show | jobs
by taeric 2039 days ago
It is kinda ironic, in that one of my favorite math papers is Polya's On Picture Writing. Which seems to imply that math with pictures should work fine.

I can't disagree with you, though. Curious what makes it fine there, but bad here.

1 comments

Both have the same problem and Polya mentions it in his paper. Both are to various degrees incompatible with technology (printing press, keyboards, teletypes, text mode screens, CLI, screen readers, etc.).

The reason the printing press became so revolutionary in latin alphabet using countries even though paper, printing and movable type were invented in China, is because it is very easy to make a machine that uses it. The English alphabet is more or less a common denominator of all other latin alphabet-based languages. Any non-latin/greek/cyrillic script is very hard to adapt to the various forms of technology throughout history.

But both papers illustrate a very real problem. Mathematical notation is horribly, infuriatingly, idiotically overloaded. And, no, context is not enough to divine the meaning. There are plenty of examples where a symbol is used for multiple meanings in the same paper or the same lesson.

My opinion is that the cause of all these problems is a very brain dead decision in math to allow adjacency of symbols to signify multiplication. This results in no longer being able to use multiple character names for things (variables, constants, etc.). And this is crippling. It results in the use of modified characters as symbols, use of characters from other languages as symbols and now the proposal of use of emoji as symbols. Because why not, emoji are plentiful and are now easier to input, store and display than ever.

The same issue (diversity of names) was solved by almost all by having mandatory separator characters(space, tab, comma, semicolon, etc) that are not allowed in names. Imagine a programing language where it is impossible to tell at first glance the meaning of something like "TotalWeight". Is it one variable? Is it Total * Weight? Is it TotalW * eight? Is it Total * W * eight? Is it T * o * t * a * l * W * e * i * g * h * t? We can rewrite this last one as aeghilo(t^2)TW . This is mathematical notation. And it will not change because it is entrenched.

This argument falls by simple counter example: cos, sin, log are all multi character names that are routinely used with no significant syntax confusion without having to use explicit multiplication indicators. So longer names are routinely used despite apparent impossibility due to multiplication confusion.

No, notation is terse for other reasons. Largely driven by the very common practice of writing it by hand. If you give your new object a long name and use that very name as a symbol you'll quickly discover that others who are interested will just abbreviate it to a letter to save effort writing it.

And in programming we generally frown uppon global use single letter identifiers. There are of course exceptions (jQuery comes to mind).

That is why we have aliasing in most shell languages or the using directive in C# and C++, or try-with-resources in Java. Aliasing is there when you need it but it is only used locally.

In math it kind of is the default. Trigonomerty is the exception.

Nobody really programs by hand, so I'm not sure what that remark aims towards? The practice of maths and programming are so different I don't know where you think there is any clarity gained from direct comparison.
I think there is clarity to be gained from the history of programming. Programming went from very very hard (punch cards) to write to very easy to write (intelisense). And we also went from code being mostly written to code being mostly read.

With each step there was a move to either make best practices more verbose or terser. Verboseness has been a solution to defects. Better languages have been a solution to verboseness. For example: when typing bugs became common, hungarian notation became a best practice. The noise was an acceptable tradeoff. When better type checking became available, hungarian notation was abandoned because it produced noise. The compiler already did al the work for you. Improvements in the tools happened at the same time as improvements in the language.

All of this was motivated by growing code complexity resulting in increasing team sizes.

Math is also growing in complexity and collaboration is increasingly digital. But so far, I have only seen tool improvements, the language has mostly been stuck. If the language does not evolve tools will evolve much much slower.

Nobody programs by hand ANY MORE. Everybody did in the age of punchcards.
I'm going to be honest, there is a reason mathematicans drop multiplication (or in general, the most important operator in whatever you are working on), because it would double the size of basically everything you write.

In group and semi-groups, where there is only one operator, it would just produce "visual noise", but introducing a * between every pair of things you write down. I have done this in beginner classes, but it rapidly gets boring.

While I understand how it makes it harder to read for non-experts, when you are writing maths, and maths papers, as a job you don't want to double the size of everything and scatter *s around for no reason.

The best parallel I can think of (this isn't good, sorry) would be like attaching the type of every variable to every place you use it -- this would technically make it easier to follow a snippet of code, but create lots of visual noise.

> The best parallel I can think of (this isn't good, sorry) would be like attaching the type of every variable to every place you use it -- this would technically make it easier to follow a snippet of code, but create lots of visual noise.

At some point we did this very thing and it was the recommended way to write code. And it did indeed create a lot of noise. My understanding of how we moved on from that is that namespacing, aliasing, and in general better code structure started being used. Things are no longer global. How do you make parts of mathematical proofs non-global to the entire proof?

https://en.wikipedia.org/wiki/Hungarian_notation

Honestly, I think we could, and should, do much better.

If people generally moved on from LaTeX (which is a whole other argument, and one I've had, and lost, on several occasions) to something with more semantic content, it would be much easier to make papers where it was easy to change the style of formatting, make it clear which symbols are "the same", etc.

> which is a whole other argument, and one I've had, and lost, on several occasions

Care to link to it if it's available? I am curious to read that debate.

Nothing concrete, I occasionally moan about it on Twitter and here, and in person, for example here:

https://news.ycombinator.com/item?id=17856184

Ironically, given some of the discussion we've been having, the biggest problem with LaTeX is that it is, once compiled into a PDF, extremely non-accessible and that's very hard to fix (to really understand why it's hard to fix, you need to look at how LaTeX works inside, it's a rewriting system and at no point has anything like a semantic description of the maths).