Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I think you're misunderstanding the purpose of the terseness of mathematics. The point is to convey the important concepts as cleanly as possible, assuming your reader has a certain level of prerequisite knowledge. The same can be said about code: you assume your reader has a certain level of understanding of the domain that you're modelling through code. The terseness is a virtue, in the sense that only the critical bits of new information need be conveyed. All the prerequisite knowledge is hidden behind abstractions that the reader should be familiar with. Math, and code, is cryptic if one doesn't have the prerequisite knowledge, but this is by design.


>The same can be said about code: you assume your reader has a certain level of understanding of the domain that you're modelling through code.

No, this is not at all the same. Code can be read without understanding everything if it is well documented. Yes, code should be short and simple, too. But not terse and cryptic - and that's what so many math texts do. So yea, cool, you can compress half a page of written English into half a line of mumbo-jumbo. Great. You have gained nothing.

I'm not saying that the half page of written English is better. Not at all. But there's something somewhere between those two where math should be. And not at the cryptic end of the scale.

Take just simple things such as meaningful variable naming. There are tons of good reasons why we do this in programming. I can't count the number of times I've tried to decipher math texts and had to look up over and over and over again what some x or f or lambda or phi is actually supposed to represent. It gets worse when they start making distinctions based on the bloody way a symbol is typeset (x vs x).

It's perfectly fine to do this in quick calculations on paper (just as it is fine to use one character variables in quick one-off scripts). But if you are writing a prolonged mathematical text, then take the time to give variables meaningful names. It's not that hard, and would go a long way for improving readability.


I don't think descriptive variable names would be useful in math. The thing in math is that "x" you see can be repeated 20 times in a set of equations. Having to read "running_total" 20 times instead is a hindrance here rather than a benefit.

The difference between math and code is the number of variables. A piece of code can have an order of magnitude more variables than a set of math equations. But in math, a few variables will usually be repeated many times. You're simply optimizing different usage profiles.

So the benefit in descriptive names in code is being able to distinguish easily the many different variables. The benefit in single letter variable names in math is that you're able to write the information in a more compact, digestible manner.

The reason this latter point is important is for the same reason short, compact programming languages are a boon to comprehension. The faster you can read a set of related items, the more of it is in your working memory at any given time and thus the better you're able to understand it. I fully believe the time it takes to input a chunk of information through your visual system is inversely related to one's understanding of it. To put it another way, working memory's decay function is parameterized by time.


>The benefit in single letter variable names in math is that you're able to write the information in a more compact, digestible manner.

You missed my point entirely. I said that you should not optimize for writing math, you should optimize for reading math. And that's where the same argument as for code holds true as well: It doesn't matter if it takes longer to write, it will be read magnitudes more often, and that is what matters most.

Again, if you're just doing quick calculations on paper or hacking something into your shell/REPL, I really don't care if you use cryptic variable names. I do, too. But I don't want to ever see this in a good program, and I think that it doesn't belong into a good math text, either.

>The reason this latter point is important is for the same reason short, compact programming languages are a boon to comprehension.

And again you missed what I explicitly stated: it's good to write in a concise way, but only as long as it doesn't become cryptic. And I disagree with your belief about information processing. It's better to build semantic relations by having meaningful names than it is to process a lot of information in a short time. It really doesn't matter how fast you are able read something - if it doesn't make sense, you won't understand it.


>You missed my point entirely. I said that you should not optimize for writing math, you should optimize for reading math.

My point is that these goals are nearly one in the same when you get to the high level. Many mathematical relationships are very complex, usually not the step-by-step procedures that is common in code. Thus being able to hold the entire relationship in your head at once is crucial. Single letter names for variables and functions are critical here (for the previously mentioned reason working-memory-decay).

I basically have a bachelors in math, and I could not imagine reading complex equations with full variable names. The hard part is understanding the whole, not remembering what x or i means. If you find an equation cryptic, that just means you don't have the requisite knowledge to really understand it.


Sorry, if all you have left is the (very typical) argument of "if you think that way you just don't understand it", then I'll consider this discussion over. I have no interest in hearing endless appeals to tradition. I'm sure people made similar arguments for GOTO back in the day. Good thing we moved on.


I would like to think my argument is far more nuanced than you're giving it credit. This isn't an appeal to tradition; I'm making an argument that explains why traditionally math has stayed with the "cryptic" notation rather than descriptive variable names.

You're completely ignoring the working memory argument I'm making. A large part of math is pattern matching: recognizing a common relationship between variables (a common pattern or "theme") and investigating that relationship further. This ability is critical to mathematical ability. Visual compactness is crucial here. Using descriptive names will completely bog down your visual system with reading words rather than identifying patterns.

Pattern matching is a critical skill when one becomes an expert in any field; in math its of utmost importance. Math is optimized for reading by other experts who have those same visual patterns committed to memory. This is the optimal approach for the work's target audience. Yes, it makes advanced math largely inaccessible to outsiders, but that's a part of the trade off.


>You're completely ignoring the working memory argument I'm making.

I'm not ignoring it. I said I don't buy it. I generally don't believe that you need visual compactness to to point of being cryptic to make use of pattern matching. I'm not saying this is necessarily easy. Neither is choosing good variable names in programming, especially at high abstraction levels. But that's no excuse for not doing it.

The other thing is that mathematicians will finally have to accept that they aren't the only ones who need math. It's not, for the most part, a "field for experts" (to paraphrase you) which only those who are willing to become experts at it are allowed to understand. It's a beautiful science with lots of appliance in almost every other field. But it's inaccessible as hell in large parts due to mathematicians with your attitude.

I strongly believe that math can be made more accessible and more "user-friendly" for people who aren't experts at it. It will be hard to do that without sacrificing its tremendous power and flexibility (which I am totally against in software, as well). But it must (and will) eventually be done.

Take note, by the way, that the accessibility problem is less and less important the more specialized the math you are doing becomes. I don't really care if some hyper-abstract field of math that a few dozen people in the world are even able to grasp the basics of is arcane and cryptic. That's something only experts will care for and if they are fine with their niche field being overly cryptic, so be it. What I'm concerned about is math in general.

I firmly agree with the position that math should not be taught as an appliance, because that is missing the point. However, it's downright fatuous to ignore the fact that math has appliances, and that therefore, a lot of people will have to learn a subset of it. To excuse bad practices which have survived by virtue of no one questioning them with nothing but "it's optimized for edge cases (experts)" is a cop-out. It ignores the problem.

I also find it funny that I already met with such vehement opposition for just proposing meaningful variable and function names. That was just an example. There are a lot more problems to be solved. Stuff like "this is trivial" or "left as an exercise" as a way to avoid writing out cumbersome, but nonetheless important (for non-experts) parts, the general terseness of mathematical texts, including the parts in plain English. I could probably find more.

Let me conclude with this: Math as a whole has accessibility problems, just like a lot of CS and computer stuff. Flat out ignoring them or even asserting "it must be this way" is incredibly ignorant. And we need dialogue to do this - not condescending "there is no problem" rebuttals.


You make a lot of points that I agree with. I just don't think your solution is the right one. Math, when it comes to writing proofs and peer review, should absolutely be optimized for other experts. Whatever makes communicating ideas precisely among themselves is what's important here. I don't see the benefit of changing this process so those of us as outsiders can take a peek.

But as you said, there is a very large part of math that deals with applying these concepts and communicating them to non-mathematicians. The way we go about this is definitely in need of a do-over. Finding more intuitive ways to communicate these ideas is critical a critical part of this (possibly including more descriptive variable names). But, I think there will always be an inherent chasm between the math experts and those who are using the results they discover. An example is the difference between the calculus track of courses that every science major takes, and say, abstract algebra. The math that mathematicians do and the math that the rest of us learn will always be vastly different. It's just the nature of the beast.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: