Hacker News new | ask | show | jobs
by T0T0R0 3613 days ago
Given the world we live in, right now, why does mathematics continue to insist on minified expressions?

Given the option, most development teams would choose to read and write against verbose source code, rather than scrape obfuscated variables and method signatures out of a minified, transpiled, compressed package.

So why do we continue this archaic practice of obscure, inscrutable symbols in mathematics? Cultural inertia?

The cycle of madness must end!

5 comments

Your comment shows a common misunderstanding of what mathematicians are trying to do. Modern mathematical notation is not obfuscated, it is in fact making the object being described much easier to perceive for humans.

Explaining the equation you see in English words is what every physics book does, however the equation itself represents a concept that is not human. It comes from an alien universe of symmetries and relations and we have spent centuries to arrive at the current way of writing these down in a way which makes them easy to work with.

You can formulate the solution to a quadratic equation as:

The negative linear term, added and subtracted from the square root of the quantity which is the difference between the square of the linear term and the product of four times the constant term and the quadratic term, all divided by twice the quadratic term.

Modern mathematicians write:

x = (-b +- sqrt(b^2 - 4ac)) / 2a

The difference is night and day. You cannot remove the essential complexity from a problem. You can only try to get close to its representation.

While this might not be the OP's point, but for me the main problem are the one-character variable names. Generally computer code that just operates on cryptic one-letter variable names, is considered bad code. Yet equations almost always have one letter variables and the worst part of all, their meaning is almost never explained anywhere

Case in point, what are b, a and c? what is their meaning if I have to measure them, what is the device for measuring them or what quantity do they represent?

The point is that variables are evil and arbitrary. So you give them short names to signal that you could replace them with anything else, what matters is how they appear together. Additionally different subfields of mathematics and physics usually adopt naming conventions.
Took me years before thinking of variables that way and mathematical expressions are constraints over sets, formulas expressing relations of interests that way.
>Case in point, what are b, a and c? what is their _meaning_

The "b, a, and c" in the quadratic equation are abstractions. They are placeholders for any number. That math equation is purposely designed to not have any concrete meaning for a,b,c. Therefore, asking for their meaning does't make any sense.

I'll try an analogy. We can give provide analogous "computer equation" for taking the last four characters of a string:

  s2 = Right(s1, 4);
If someone were to ask "what is the _meaning_ of s1?", it would be a nonsensical question. The s1 is a placeholder for any string. The s1 could be a domain name and you want to extract the TLD (".com", ".org", ".edu"). Or the s1 could be a date "mm-dd-yyyy" and you want to extract the "2016" from ""10-31-2016". The s1 could be a placeholder for a thousand unrelated applications.

If you further generalize the "computer equation" to be take the rightmost "x" amount of characters, you'd replace the "4" with "x" like this:

  s2 = Right(s1, x);
... it could trigger confusion as to "what does x _mean_? And what measuring device does it come from?"

The "x" is an abstraction/parameter/argument of any number. That number could be 4, or 40000. (You might be tempted to say, "but I know 'x' stands for the number of characters I want from the string!" If so, by analogy you can also say that "c" in the quadratic equation stands for the number that satisfies the equation when you know "x", "a", and "b" ... which just circles back to each 1-character variable not having a concrete "meaning."

The concrete meaning of "a,b,c" in the quadratic equation depends on whether the equation was modeling something in physics, or engineering, or finance.[1][2]

The concrete meaning of "s1" and "x" in the "computer equation" depends on whether you're parsing logs, decomposing dates, verifying credit card numbers, etc.

The analogy above could have been demonstrated with regex such as "(.+)(.{4})" ... which would trigger questions, *"why do programmers use 1-character symbols such as '.' and '+' instead of "anycharacterm_oneormoretimes_consideredasagroup_then_anycharacters_fourtimes_consideredasagroup" ... etc

tldr: computer programmers also deal with weird-looking "equations" but since they are used to them, they have the background knowledge to decipher them.

[1]https://www.mathsisfun.com/algebra/quadratic-equation-real-w...

[2]https://www.boundless.com/algebra/textbooks/boundless-algebr...

Thank you for the thorough explanation!

I see your point with abstract expressions, but the connection I'm failing to make is - if they are completely abstract, then how can the equation be related to the physical world?

In essence, the equation defines the relations between some values - but if any or some of the values can be replaced by real measurements, then surely the relations between real measurements are not interchangeable?

if they are completely abstract, then how can the equation be related to the physical world?

Math equations do not have to be related to anything in the physical world. It's just that humans have found that some patterns in nature seem to match some equations. Why or how math describes the real world is a deep philosophical question![1]

When G.H. Hardy[2] was exploring certain aspects of number theory and properties of prime numbers, it didn't have any relevance to the real world. 100 years later, we now use the math concepts in public key cryptography.

Does Isaac Newton's "F = ma" of "force = mass times acceleration" describe the "reality" of gravity and how planets move in the solar system? Well -- it does -- and it doesn't. It seemed to match reality well enough to find the planet Neptune -- purely by using math. But Newton's math equations didn't seem to match the "reality" of Mercury's orbit.

Then Einstein came up with another set of math equations that matched the "reality" of Mercury's shifting orbit.[3] But now today's physicists notice that Einstein's formulas don't match the "reality" of galaxies rotating faster than the his formulas predict. Today's physicists are trying to come up with another set of math equations to match that reality (or find the elusive "dark matter" so that Einstein's equations remain unchanged.)

(Einstein's equations do not make Newtons's equations obsolete. Newton's math (that doesn't perfectly match reality) is still good enough to guide Apollo rockets to the Moon and back. It's just not good enough to fully describe how Mercury wiggles around the Sun.)

Math is not reality. Math is its own topic that can stand apart from "physics" or "engineering". (Hence, math is the ultimate abstraction.) It's just sometimes convenient for humans to map some mathematics to some realities. It's often helpful for us to do that. Sometimes it backfires. Some Wall Street guys "mapped" math equations to model the financial behavior of mortgages and they turned out to be wrong.

Put another way: If math is used to model the physical world, it is only an approximation for it.

[1]https://www.google.com/search?q=the+unreasonable+effectivene...

[2]https://en.wikipedia.org/wiki/A_Mathematician%27s_Apology#Cr...

[3]http://physics.stackexchange.com/questions/26408/what-did-ge...

> Math equations do not have to be related to anything in the physical world.

Not to derail this into philosophy, but that position is conjecture. There are people who adopt a position where all mathematical concepts actually derive from physical structures, ie. a kind of mathematical physicalism. These people hold that the reduction of math to the physical may be obscure, like a reduction of economics to physics, but still real.

Though I can't speak for the parent post's author, applying that post's spirit to your example would instead yield, for the quadratic formula:

'The negative linear term, added and subtracted from the square root of the discriminant, all divided by twice the quadratic term'; then before or after this you'd define the discriminant, as it's an illuminating concept in its own right.

I see the target of this wishful thinking a sort-of middle-ground between a formula's derivation/proof and its compact form.

This is rather poetic. There is no difference, mathematical notation is a natural language and initiated mathematicians will read it in sentence form.

Reading is a process of form recognition disconnect from vocalization. On the other hand, language seems to be mostly perceived as vocalisation, because that's the form it's learned from. As anecdotal evidence, tongue is an idiom for language and people have to make an actual effort to read without vocalizatio in order to increase reading-speed.

Note that your literal example does contain a lot more information about context. IE, you even omitted the quadratic equation itself. That shows exactly the problem that I thought the Parent would mean:

I prefer source code in a given language, that's actually compiled and maybe even proven correct, over terse mathematical notation that leaves a lot to context, intuition and shared information. Computability Theory gave rise to Computers, not the other way around.

Your assessment is somewhat unfair and kind of misguided. The differences between math and programming are quite large. I think there are two main reasons for why we have symbols in math and more verbose expressions in programming.

1. Medium. Math is mainly done with pen/pencil on paper, or chalk on a blackboard, or marker on a whiteboard. Programming is mainly done with keyboard on a computer. Those media are quite different. In a way, it's about ease of input - it's easier to write out a longer name with keyboard than with a pen.

2. Nature of the activity. A lot of math boils down to manipulating expressions given rules. It involves a lot of scratch work with a lot of backtracking and trying new things. A lot of programming boils down to easily reading and writing code and reasoning about how things work. Imagine writing "integral from a to b of f(x) dx" or "integral(f(x), x, a, b)" by hand a hundred times vs in an IDE and you'll see what I mean.

That's not how math statements work.

You think mathematicians are minifying/uglifying their 'code' in the same way that one might use switch/case or ternary expressions instead of if/else if/else statements: in the name of concision/premature optimisation.

However, what the mathematical language is really doing is more akin to what jQuery is doing for JavaScript: it wraps low-level, complex and at times verbose mathematical statements into simpler representations.

Minification !== abstraction/syntactic sugar.

A lot of mathematical notation is optimized for hand-written algebra.

One of the main things you "do" with expressions like these is to transform them into equivalent expressions that have some desirable form, or examine special cases that allow simplifications, or examine the result of applying some additional operation.

Compact symbols and single letter variables reduce the amount of writing you need to do for each step of such transformations, but they also make the "structure" of expressions more visually obvious.

Programmers also spend time transforming programs into equivalent programs (aka refactoring), but refactoring isn't quite as important to programmers as algebra is to mathematicians and physicists, so (popular) programming languages don't optimize for it to quite the same degree.

>Given the world we live in, right now, why does mathematics continue to insist on minified expressions?

Because it is concise, precise, and widely accepted.

>Given the option, most development teams would choose to read and write against verbose source code, rather than scrape obfuscated variables and method signatures out of a minified, transpiled, compressed package.

What's your point? Source code is not the same thing as mathematics, not for the majority of software and not for the majority of mathematics as practiced by mathematicians. Verbosity makes sense when your domain involves concrete entities like "customers" and "widgets" and "thermal sensors." When your domain involves abstract entities like "ring homomorphisms" and "clopen sets" and "vector spaces," it doesn't. If you're writing a database, a name like "transaction_mutex" is more descriptive than "m." If you're universally quantifying over the domain of an arbitrary continuous function on the reals, "x" is about as descriptive -- and as conventional -- as any name you can come up with.

As an aside, I really wish we would dispense with the non-word "transpile." We have a word for translating a program from one language to another: compile.

>So why do we continue this archaic practice of obscure, inscrutable symbols in mathematics?

Because it works very well. I'm not sure what else to say. You spend maybe fifteen minutes learning about, say, the symbol "∂" when you're introduced to multivariate calculus, and then for the rest of time you have an extremely concise way of expressing a variety of combinations of partial derivatives that can be understood by anyone who has also been introduced to multivariate calculus.

Don't get me wrong, there are actual problems with mathematical notation -- overloading, "abuse of notation," and as often as not just plain omitting information -- but the use of non-ASCII symbols and short variable names are not among them.