5 ms·
> 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 o
by 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.
- aroberge 14y agoThat is fine for you, not everyone needs to know about Wiener path integral formulation of quantum mechanics ... which is based on functions that are almost continuous everywhere but nowhere differentiable (the set of functions that are differentiable and with which you are familiar is a set of measure zero i.e. it is comparable to using only integers instead of real numbers). The limit process, which you discard as not meaning anything, is essential to understand the Wiener path integral formalism. Fortunately, mathematicians and physicists did not "lose sight of that" ... and are able to go beyond what your limited understanding would limit you to. I don't mean this in a deragotary way - you obviously don't need to understand at a deeper level than you do; few people do ... but to those that need this deeper level, the mathematical formalism that you dismiss is, in fact, essential. Edit: my apology for making an unwarranted assumption about what your level of understanding is.
- 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)