Hacker News new | ask | show | jobs
by cameronh90 1017 days ago
As a programmer, I like maths and find it very useful, albeit difficult at times.

However, the naming conventions and syntax overloads/ambiguities really can be a pain as a non-mathematician.

I get it. Everything has warts, and the mathematical syntax is as much for thinking and experimentation as it is for communication, and verbosity hinders understanding. I'm also aware computing has its horrible dark corners. But from the outside, it seems like maths practitioners often oppose any attempts to make it any clearer, even to people in other mathematical subfields.

Papers leave variables undefined because everyone working in that subfield is expected to just know what that variable means in that context, possibly derived from on some book that everyone in that field knows about so nobody feels the need to specify it. I mean just a stupid but simple example, I learnt maths from an applied engineering school so the imaginary unit was j. Always j. Never specified that it could be anything else nor was it ever specified anywhere that j was the imaginary unit. Then I start exploring the topic outside textbooks and everyone's using i. Again, no indication that this is the imaginary unit, it's just a given. Obviously in this particular case it's easy to notice that it's been swapped over, but there are plenty of other much more subtle ambiguities that can make trying to understand anything a real slog.

2 comments

As someone who is currently on a path to self-study maths I understand what you're saying and sympathise. This is my predicament at the moment to a certain extent. And of course it all depends heavily on context- In the context of \frac{\sum^n x_i}{n}, i isn't the imaginary unit, it's the looping variable over the elements of x so we can compute the average, and everyone just knows (or is expected to), just like r^2 means the square of some variable r, or the extent to which one variable is explained by another in a regression etc whereas R^2 means a two-dimensional space over the real numbers.

That said, I think and hope that I may in the future feel differently as my skills improve. My theory is that if everyone always added in that foundational knowledge to each paper etc it would make everything really verbose and make trying to get to the point of what you're saying a real slog for the author and the experienced practitioners. Being able to be consise means you get to the heart of the new stuff quickly without having to slog through a bunch of "C is the set of complex numbers a+bi where a and b are in R and i^2 = -1" first.

>My theory is that if everyone always added in that foundational knowledge to each paper etc

Except once someone did that, you could literally just cite their paper or book.

Software is frankly worse. Take javascript. What does that even mean? ECMAScript, CommonJS, something else? Almost nobody clarifies what they mean precisely when they use an ambiguous, overload term like "javascript".

Does the "es" in ESLint mean it only works for ECMAScript? Or does the "ES" mean something entirely different? The homepage doesn't say. Are eslint, ESLint, and Eslint the same thing? Capitalization usually matters in software after all, but nobody is consistent here, not even eslint.org. Why do are ES6 and ES2015 used interchangeably? That's unnecessarily confusing.

All of this is far more confusing than "i" vs "j" for sqrt(-1).