|
Broadly I agree; also I'm no maths professor. But the talking as if understanding can't be helped by programming, seems wrong to me, if only because I've been doing it all my life. Maybe we have different definitions of deep and shallow, but you can memorize a formula with no understanding. Playing around with it with a program, and seeing what happens, you get a hands-on experience that no amount of ..abstract generality can replace. I keep reading about how the great mathematicians have gotten their results not by doing mysterious genius things only they can, but by getting their hands dirty, playing around with base and border cases, seeing what happens with pencil and paper, in a way identical to mucking around with programs. To give a couple of concrete examples: I wrote a program that had planets orbiting a central mass, and playing around with it I gained for the first time a gut understanding of orbiting, and how natural it is in 3D space - it's something that just doesn't happen in the normal human environment. Fiddling around with fractal formulae, seeing what happens. Drawing the distributions of prime numbers, prime pairs etc. On and on, I could give hundreds of examples, you get the idea. Sure, it would be silly trying to recreate 2000 years of mathematical progress on your own without reading textbooks, but exploring, getting a feel for things, learning for yourself, is an important part too, to say the least. And one equally deserving the name 'learning', if not more. Read Oakeshott's essay Rationalism in Politics for the best explanation I've seen for this modern affliction where only things that can be explicitly written down are counted as knowledge. (It's super-enlightening - I was embarrassed how much I learned from it, always a good sign. I even learned a lot about piano teaching—my day job at the time—from reading it.) |
That’s not really correct. I think we’re talking about two different things. I’m not stating that you can learn mathematics without actively doing it. I’m stating that programming is a poor medium with which to actively do mathematics until you’ve already learned it. Active learning is absolutely important, which is why solving problems is important. But those problems rarely take a form that are straigtforward to implement in code.
The reason is because the broader theory of mathematics does not translate into code without significant difficulty. You can do computation of particular formulas by implementing them in code, but it would be strange to e.g. reason about what a field is by writing code to generate an array of numbers that technically adheres to the field axioms for addition and multiplication. You can do it, and it would help you a lot for operations over fields, but that isn’t going to help you prove that the set of all rational numbers is a field. You’re already past that if you’re implementing the code, because the computer is implicitly accepting that all xy and x + y are in Q if x and y are in Q.
I’m a fan of using something like SageMath or Mathematica in a learning environment for computational math homework. But I honestly can’t imagine learning from a textbook and following along by writing code. The code is very useful for deriving insights about what something is, but it’s not as useful for insights about why something is.