Hacker News new | ask | show | jobs
by kragen 3575 days ago
I think you didn't understand what I wrote. I wasn't arguing for fumbling in the dark. My example of a ray-tracer is, I'm pretty sure, not something you can do by trial and error. I was arguing that the mathematical theory you need for the DSP things you mentioned isn't, mostly, the (integral and differential) calculus. There's a lot of mathematical theory you do need, but the calculus isn't it.

I totally agree that (integral and differential) calculus is a massive mental productivity booster. I'm not very convinced of the utility of schooling in acquiring that ability, because I've known far too many people who passed their calculus classes and then forgot everything, probably because they stopped using it. I've forgotten a substantial amount of calculus myself due to disuse. But I agree that schooling can work.

But I wasn't arguing against schooling, even though our current methods of schooling are clearly achieving very poor results, because they're clearly a lot better than nothing.

I was arguing that, for programming, the schooling should be directed at the things that increase your power the most. Two semesters of proving limits and finding closed-form integrals of algebraic expressions aren't it. Hopefully those classes will teach you about parametric functions, Newton's method, and Taylor series, but you can get through those classes without ever hearing about vectors (much less vector spaces and the meaning of linearity), Lambertian reflection, Nyquist frequencies, Fourier transforms, convolution, difference equations, recurrence relations, probability distributions, GF(2ⁿ) and GF(2)ⁿ, lattices (in the order-theory sense), numerical approximation with Chebyshev polynomials, coding theory, or even asymptotic notation.

In many cases, understanding the continuous case of a problem is easier than understanding the discrete case; but in other cases, the discrete case is easier, and trying to understand it as an approximation to the continuous case can be actively misleading. You may end up doing scale-space representation of signals with a sampled Gaussian, for example, or trying to use the Laplace transform instead of the Z-transform on discrete signals.

If you really want to get into arguing by way of stupid metaphors, I'd say that when you're climbing the wall of a canyon, a lightweight kayak will be of minimal help, though it may shield you from the occasional falling rock.

But I don't know, maybe you've had different experiences where itnegral and differential calculus were a lot more valuable than the stuff I mentioned above.

1 comments

Might be we have different chunking. In my preconceptions calculus is the first necessary stepping stone to the other stuff you mentioned. I have no idea how to approach Fourier transform conceptually for example than by the calculus route since the integral form is always introduced first. It's true linear algebra and calculus don't often meet at first - until one needs to do coordinate tranforms from e.g. spherical coordinates to cartesian.

It's true I don't need that suff in my daily work that much. But I recognise a lot of problems I might meet are trivial with some applied calculus. Like the newton iteration, which you mentioned.

http://www.dspguide.com/ch8/1.htm talks about the discrete Fourier transform, which decomposes a discrete (periodic) signal into a sum of a discrete set of sinusoids. The Fourier transform is actually a case where the continuous case is misleading — in the continuous case, you unavoidably have the Gibbs phenomenon, a complication which disappears completely in the discrete case, and the argument for this is a great deal simpler than the analogous reasoning for analytic signals. And even if you show that, for example, sinusoids of different frequencies are orthogonal in the continuous case, it doesn't immediately follow that this is true of the sampled versions of those same signals — and in fact it isn't true in general, only in some special cases. You can show by a simple counting argument that no other sampled sinusoids are orthogonal to the basis functions of a DFT, for example. Showing that the DFT basis is orthogonal is more difficult!

You definitely don't need calculus to transform between spherical and Cartesian coordinates. I mean I'm pretty sure Descartes did that half a century before calculus was invented. You do need trigonometry, which is about a thousand years older.

Newton iteration is a bit dangerous; it can give you an arbitrary answer, and it may not converge. In cases where you think you might need Newton iteration, I'd like to suggest that you try interval arithmetic (see http://canonical.org/~kragen/sw/aspmisc/intervalgraph), which is guaranteed to converge and will give you all the answers but is too slow in high dimensionality, or gradient descent, which does kind of require that you know calculus to understand and works in more cases than Newton iteration, although more slowly.