4 ms·
I could not disagree more with that post. Mathematical notation is to Python what English would be to Assembly Language: it is a high-level notation, designed
by aroberge 14y ago
I could not disagree more with that post. Mathematical notation is to Python what English would be to Assembly Language: it is a high-level notation, designed see the forest rather than getting lost in the trees.
Take Maxwell's equations for example. After learning vector calculus and becoming familiar with its notation, you notice how much meaning you can extract at a quick glance from the four Maxwell's equations expressed in differential form. The purpose is not to obfuscate the meaning (like the author implies when he mentions the Obfuscated C contest) but rather to reveal/encapsulate as much information as possible in a way that is easy to understand at a glance. You want to know what would happen if magnetic monopoles existed? Easy to do by just adding a few extra terms that are obvious by symmetry of the equations.
And, if you go beyond vector calculus, you can see an even clearer picture by writing
F = dA (equivalent to the usual two homogeneous Maxwell Equations)
d*F = *J (equivalent to the remaining two)
- gnaritas 14y ago> Mathematical notation is to Python what English would be to Assembly Language Which is often the problem, it looks specific, but it really isn't; it's full of implicit assumptions about what the reader should know. It's not executable, because it's a language designed for being written by hand rather than executed by a computer. However, the teaching of math would greatly benefit from an explicit executable form that makes no assumptions, i.e. a programming language. Gerry Sussman makes this case, he's pretty convincing.
- john_b 14y agoYou think that people learning math will find it less confusing if they have no context (which, in mathematics, is largely equivalent to "assumptions") for what they are learning and have to build their mathematical knowledge from first principles? Or am I misunderstanding your post?
- gnaritas 14y agoI don't think anything, I was recalling what I heard Sussman say at a conference, which he makes clear in http://en.wikipedia.org/wiki/SICM http://en.wikipedia.org/wiki/SICM. Though I saw him a good 8 years after the book, so I'm sure he'd grown some new opinions. He is of the opinion that if you can't write the algorithm, you don't understand it; forcing students to write the algorithm aids in teaching them a real understanding. He spent quite a bit of time complaining about the vagueness of mathematical notation due to its implicit assumptions for the purposes of teaching and the superiority of executable code for the task. On a side note, the speech was aimed at both engineers and programmers and the audience was a mix of both. He did a wow demo with a circuit on the overview, calculating all the voltages and resistances on the fly from chosen starting values that made all the programmers smile really big and all the engineers jaws drop. Everyone was impressed because he flew through it, but the programmers much less so because what he did was just how a programmer thinks, albeit it very fast. He was demonstrating to the engineers the benefits of thinking like a programmer. As he is both and teaches both, he clearly connected some dots that they generally don't.
- btilly 14y agoHe is of the opinion that if you can't write the algorithm, you don't understand it; forcing students to write the algorithm aids in teaching them a real understanding. Absolutely. I had memorized the notation for derivatives. Until I was able to realize how the notation tied to finite numerical approximations, I never really understood it. If you don't know what I'm talking about, the right way to approximate (d^2/dx^2)(f(x)) is to write an operator d defined as d(f)(x) = f(x + dx) - f(x). And now your numerical approximation for the second derivative is (d(d(f))/(dx * dx))(x). Now replace your d operator with the much better d(f)(x) = f(x + dx/2) - f(x - dx/2), and see how good your numerical approximations become! The notation actually means something. When we switched from infinitesmals to limits, we lost sight of that. When you try to write the algorithm, you're going to be reminded of its meaning, fast.
- gnaritas 14y ago> When you try to write the algorithm, you're going to be reminded of its meaning, fast. Exactly, and forced to replace implicit assumptions with explicit instructions to make it work.
- Osmium 14y ago> However, the teaching of math would greatly benefit from an explicit executable form that makes no assumptions I'm skeptical of this logic. I think nobody would be able to learn mathematics if they had to keep it all in their head at once. "Unobfuscated" maths, i.e. maths that has every single logical deduction written out from first principles so that you can (to use your words) "execute it", would be impossible to understand because, fundamentally, we are not computers. Instead we learn some, we internalise it, and then we can appreciate the new notation that encapsulates what we have learnt before without exposing us to the underlying complexity that we simply don't need to solve higher problems. Mathematics is beautiful. If anything, it's programming languages that have the catching up to do. Edit: more generally, the blog post seems to be a case of "when all you have is a hammer, everything looks like a nail" -- if you spend all day programming, then it might make sense to try and relate mathematics back to something you're more comfortable with. That doesn't mean that it's the most sensible way for everyone else to learn mathematics.
- gnaritas 14y ago> I'm skeptical of this logic. I think nobody would be able to learn mathematics if they had to keep it all in their head at once. That's what functions are for. > Instead we learn some, we internalise it, and then we can appreciate the new notation Those new notations are functions, simplified abstractions of more complex processes that allow us to think in larger concepts and not sweat the details. > Mathematics is beautiful. If anything, it's programming languages that have the catching up to do. Perhaps, perhaps not.
- ryankey 14y agoProgramming languages aren't explicit executable forms, they are abstractions. Unless you are working with machine code or assembly, you're getting the abstract ideas which get expanded by the compiler. What it sounds like you're advocating is to write out 3+3+3+3+3 instead of 3*5 (the latter is assuming).
- gnaritas 14y agoThey're executable abstractions, thus they are explicit. And no, that's not what I'm advocating at all. There is no assumption in 3 * 5; * is a defined function, if you need to know how it works you can look. What's important is that it's computable. Notation often isn't, too many implicit assumptions that rely on a trained eye to execute correctly.
- trhtrsh 14y agoWhat's that, we should write math in a language that computers can understand? Knuth did that: \frac{\frac{1}{x}+\frac{1}{y}}{y-z} And thank Don, he made the computer output something human readable.
- dbaupp 14y agoIt would be very tricky to make a computer understand what a TeX equation actually means in general, rather than just know how to typeset it. e.g. f(d) = \int_0^1 g(y) d y dy (Meaning integral of (g(y)dy) w.r.t. y)
- darkxanthos 14y ago1. I came into this thread expecting to find a math expert of some sort defending their "programming language". Thank you for not letting me down! 2. It depends on context. The people writing and manipulating mathematical formulae LOVE the short hand I'm sure... but for consumers of the information perhaps it's less than ideal.
- dubya 14y agoThis thread would be more informative if the post author had said _what_ he was trying to read. Most math is written to communicate with other mathematicians, so if he grabbed some random paper off of ArXiv then it's not at all surprising he found it hard to read. It also makes a difference if he's trying to actually learn about a subject, or just to apply some formulas without necessarily understanding him. Math is written differently for specialist and beginner audiences, with the very terse "CRC Handbook of X" off on some other axis.
- forrestthewoods 14y agoI couldn't possibly disagree more with your post. :) The language of math requires exact precision which makes extracting what the series of abstract symbols "mean" incredibly difficult. Trying to learn new mathematical concepts from wikipedia is damn near impossible. Here are two examples. b-spline: http://en.wikipedia.org/wiki/B-spline http://en.wikipedia.org/wiki/B-spline spherical harmonics: http://en.wikipedia.org/wiki/Spherical_harmonics http://en.wikipedia.org/wiki/Spherical_harmonics Trying to figure out what those walls of symbols mean requires quite a lot of focus. Dig up source code for either and it's orders of magnitude easier to understand. The images for spherical harmonics conveys more meaning and understanding in a fraction of a second than spending 3 hours with a piece of paper and the equations would. The language of math sucks.
- Someone 14y agoFor the sake of an argument, let's assume you are right, and the language of math sucks. Then, we have had centuries of mathematicians inventing ever changing notations and ending up with a notation that sucks. If so, those mathematicians must be extremely stupid. Surely persons of average intelligence must be able to come up with better notations, and find proofs for stuff that is out of reach of those morons? I do not rule out that notation can be improved. After all, it took millennia to move from Greek and Roman arithmetic systems to Arabic notation. There is no reason to assume we have reached a global optimum. However, I also find it unlikely that mathematical notations truly are stupid. Your argument is like someone complaining about the difficulty of discriminating between "37" and "73" because it is way easier to see the difference between 37 and 73 scratches in a piece of wood.
- Negitivefrags 14y agoIt's not that mathematicians are stupid, they just that they have backwards compatibility problems. The notation of mathematics is centuries old. It's very hard to take notation away from the set that must be learned, but easy to invent more. Eventually old constructs can fall out of favor, but that is a long and slow process.
- 14y ago