Earlier quoted context omitted.
> mathematics is orders of magnitude more intensive and difficult than most programming But what level of programming and mathematics are you comparing here though? because college-level algebra and calculus is really not that hard imho (once it "clicks" for you, but it's the same for programming), and if we are comparing math as in what you see in a BSc/Msc of Mathematics (or research-level) then I agree it's hard b…
I would hard disagree that undergrad level Analysis or even just the trickier corners of vector calculus are within the bounds of what programmers can easily pick up without dedicated and guided study. Everybody's gangster until they have to parameterize some bullshit helical structure in R3. Comparable levels of programming, what we expect of CS juniors, are regularly picked up by "the guy who is good with Excel" in…
The Mathematical Hacker (2012)
111–120 of 186 posts
Re: The Mathematical Hacker (2012)
#112Earlier quoted context omitted.
Never mind calculus; a non-trivial fraction of the U.S. population has trouble learning elementary algebra . The fact that the U.S. K-12 educational system is notoriously a failure compared to otherwise similar countries should not be used to draw inferences about the inherent worth of any particular subject. Not least because that same system also often fails to teach functional literacy, or any amount of basic fact…
Then why do all New England states outcompete most European countries? Why is most STEM research produced in Eastern Europe, the US, or China? This really depends on what metrics you are using and has infinite room for gaming. US undergrads (both native and foreign born) absolutely crush all of these nondescript places you are suggesting are better, and graduate programs make the gap even wider. A non trivial fractio…
Re: The Mathematical Hacker (2012)
#113To me, the key leap of understanding in a mathematics education is realizing that mathematical proof isn't about clever, convincing arguments that have a high probability of being true. Mathematical proofs are truth preserving operations that require you to understand and document all the assumptions needed to guarantee that truth is preserved throughout. It's about understanding exactly what you know and, more importantly, what you don't know but that you need to be true in order to guarantee truth. And "guarantee" here does not mean "very very very high probability." It means "exactly zero exceptions, given that the explicitly documented assumptions hold." A mathematics education goes on to give lots of practice identifying these assumptions in various ways and in various domains.
This line of thinking has served me well as an engineer. I almost never go as far as formal methods or using full mathematical rigor. But I do try to understand the assumptions I'm making and whether those assumptions are likely to hold in the application domain. For example...
I assume reading from disk repeatedly (vs. preloading into RAM) is fast enough for my use case, but I need to test that assumption. Write a quick test... it's fast enough on my laptop's SSD. But I'm going to deploy to spinning disks and I'm doing a lot of seeking - better test there as well. Nope, too slow. If build a simple index of the data, is it fast enough? Write a quick test... yep, so I don't need to deal with cache eviction strategies. Oh, but I'm assuming the tests I wrote are representative, so I need to give myself a couple of orders of magnitude of headroom to be pretty sure.
This is not mathematical rigor, but it's leveraging a lot of that kind of thinking. My entire design/code/debug lifecycle is constructed around identifying and testing assumptions like this.
When I realized this came from my background in math, I started trying to figure out how some of the people around me were doing things when they had little or no math background (i.e., not enough to have a ton of practice comprehensively identifying assumptions). Some had come to a very similar process, just not through math (many with graduate degrees in biology or experimental physics also had a pretty direct route to similar enough thinking). Some were much more intuitive about things - I don't think I could develop anything that way, but they were very good at their job. I think this is part of why UI/UX work was always so frustrating for me - the assumptions run so deep that simplifying through intuition is constant, and testing (e.g., through user facing experiments) is expensive.
I'd love to see deeper studies into the range of cognitive practices employed by various software engineers and how that differs across educational backgrounds and application domains. How does that differ from graphic designers, accountants, EEs, mechanical engineers, etc?
Re: The Mathematical Hacker (2012)
#114Earlier quoted context omitted.
> mathematics is orders of magnitude more intensive and difficult than most programming But what level of programming and mathematics are you comparing here though? because college-level algebra and calculus is really not that hard imho (once it "clicks" for you, but it's the same for programming), and if we are comparing math as in what you see in a BSc/Msc of Mathematics (or research-level) then I agree it's hard b…
I would hard disagree that undergrad level Analysis or even just the trickier corners of vector calculus are within the bounds of what programmers can easily pick up without dedicated and guided study. Everybody's gangster until they have to parameterize some bullshit helical structure in R3. Comparable levels of programming, what we expect of CS juniors, are regularly picked up by "the guy who is good with Excel" in…
What if we had something similar for mathematics?
Rapid feedback, error messages, maybe even linters and highlighting for the "mathematical syntax".
I've though about this before and I think tools like this could unlock math for a lot of people, and also increase the effectiveness of professional mathematicians.
When learning math / seeing other learning math I've noticed that simple errors such as typos often slow down or hinder understanding of the subject.
Re: The Mathematical Hacker (2012)
#115Earlier quoted context omitted.
> I wouldn't even begin to understand how to self-teach myself Stokes Theorem or some shit Input it into a proof assistant, and rely on the same sort of feedback "does the computer accept your proof, or get stuck". The hard job of formalizing stuff for this purpose has seen significant progress, e.g. by the Lean mathlib project.
Self teach Stokes Theorem by inputting it into a proof assistant? Are you serious? That is very inefficient; the OP was talking about learning the kind of vector calculus taught in first calculus sequence. I think just watching a short YouTube video and doing a few exercises will work and is a proven method. Proofs of theirebs are very often much more complicated than applying them (understatement intended).
Re: The Mathematical Hacker (2012)
#116I basically hate math discussions on HN. Why? Because it seems like there's two (at least) "camps" in terms of how they interpret what "math" even means. And the various camps constantly talk around each other, with neither camp seeming to realize that they're arguing about completely different things. So they keep arguing, nobody gets anywhere, and the whole thing is largely a cluster-fuck. So what do I mean by "cam…
1 · those who see mathematics as a particular subject area, body of knowledge, or set of topics, with limited applicability to programming (which, given that definition of mathematics, I think is true)
2 · those who also see mathematics as a particular subject, but with almost unlimited applicability (which I think is false, except maybe on a technicality)
3 · those who see mathematics as all-encompassing and including every kind of careful thinking or precise action (which I don't think really matches serious use of the term, nor is a useful definition)
4 · those who see mathematics as a particular set of skills which are most commonly applied to the topics that people we call "mathematicians" study but are also applicable to many other problems (this is the camp I happen to be in)
So for me, at least, mathematics is primarily a way of thinking and playing. (More specifically, a collection of methods for problem-posing and problem-solving that are rooted in formal logic and equivalences / transformations of representation.) Mathematical training and experience with proofs helped me cultivate that, but studying at university isn't the only way.
I once asked my first mathematics professor whether I could call myself a mathematician even though I was just a first-year student; they replied that anybody who does mathematics is a mathematician. That idea has really stuck with me. Although it's helpful to have jargon and wonderful to have mathematical tradition, anyone can do mathematics and be a mathematician, regardless of age and background – the capacity is the common heritage of humankind, like the capacity for art or language. And like art, it can be directed toward any goal or be an end unto itself.
[I've never agreed with the opinion that mathematics exists for the sake of physics or real-world problem solving, but enough people I respect hold that opinion that I'm wary of dismissing it.]
Now to the matter at hand – does mathematics (sense 4) help with programming? For me, absolutely and without question. It's perhaps the most important set of skills I use while programming (but not the only one).
edit: I distinguish computer science (a branch of mathematics that professional mathematicians study) from programming (designing correct programs) from coding (communicating programs to a computer so that they can be run), and I assume that programming and (to a lesser degree) coding are mostly what people are talking about here.
Re: The Mathematical Hacker (2012)
#117Earlier quoted context omitted.
Self teach Stokes Theorem by inputting it into a proof assistant? Are you serious? That is very inefficient; the OP was talking about learning the kind of vector calculus taught in first calculus sequence. I think just watching a short YouTube video and doing a few exercises will work and is a proven method. Proofs of theirebs are very often much more complicated than applying them (understatement intended).
If you don't understand the proof of any theorem, you haven't really "learned" it in any real sense. Wrt. doing computational exercises in vector calculus, that requires knowing the "rules of the game" which is also something that you can test precisely in a proof assistant.
Second, even if you wanted to understand the proof of a theorem, doing it with a proof assistant is an atrocious way to go about it.
Re: The Mathematical Hacker (2012)
#118Earlier quoted context omitted.
I see someone disagreed with me. Not sure about what, but just in case I will show how to derive a formula for Fibonacci using the above. You be the judge if it belongs in a LISP programming textbook, even though this particular result is very elementary. Recurrence relation for Fibonacci is F_k = F_(k-1) + F_(k-2) for k=> 2 with F_0 = F_1 = 1. Also, t^2 - t - 1 = 0 implies t = (1 + sqrt(5))/2, (1 - sqrt(5))/2. Both…
I don't think anyone finds recurrence relations, closed form expressions, or their derivation controversial or disagreeable in any way. On the other hand, the implication that Lisp textbooks -- or other language texts that use fibonacci or like examples for recursion examples -- shouldn't be using simple recursive definitions as an illustration if there exists a closed form may well raise some eyebrows. What do you w…
I didn't imply that. I think the author laments the lack of math in LISP programming books beyond a couple of cliched examples he gave, well the "simple recursive definitions". He is not saying you shouldn't be using them, he is saying that is not adequate. That's too little. He is saying LISPers should go beyond that. My point was that you can definitely go above and beyond that into the math territory complete with coherent body of theory(a bundle of theorems and their proofs), but that will take you way off course. Especially, given that regular math textbooks contain all the relevant info. I am not even arguing the rest of what you said.
Re: The Mathematical Hacker (2012)
#119In Steve Yegge’s linked post: > Math is a lot easier to pick up after you know how to program. In fact, if you're a halfway decent programmer, you'll find it's almost a snap. This couldn’t be more wrong. Mathematics is the hardest thing I have ever done. I’m sorry, but mathematics is orders of magnitude more intensive and difficult than most programming. A simple fact that shows this is the amount of programmers who…
Math hard. Can confirm. Starwind have math degree. Starwind much better at programming than Starwind ever was at math.
Re: The Mathematical Hacker (2012)
#120Earlier quoted context omitted.
Then why do all New England states outcompete most European countries? Why is most STEM research produced in Eastern Europe, the US, or China? This really depends on what metrics you are using and has infinite room for gaming. US undergrads (both native and foreign born) absolutely crush all of these nondescript places you are suggesting are better, and graduate programs make the gap even wider. A non trivial fractio…
New England is mostly sanely governed, it shouldn’t be used as a stand in for the rest of the country. The US was a neat idea we had but it went a little off-kilter around the second half of Pennsylvania.
After you pull out HPYSM, these are not ridiculous rankings either.
Georgia Institute of Technology is 38th in the world by research impact, with the top ten or twenty being your standard prestige universities. (Elsevier)
If the US is so bad, why is a poorer southern state competitive with far more prestigious institutions from other countries you would perceive as better?
This is ahead of University of Tokyo, Urbana Champaign, etc.