Hacker News new | ask | show | jobs
by irutirw222 1563 days ago
I can't comment on the compsci books (they do seem interesting), but I can comment on the mathematical ones where I have expertise:

- Using Euclid is manifestly a really bad idea, since his way of formalizing geometry is not the sharpest. Mathematical logic has developed since Euclid published his book thousands of years ago and Euclidean geometry has been re-formalized a number of times to really flesh out the theory behind it (where the word theory is a precisely defined mathematical word), the most well known being oerhaps the one by Hilbert (still 100 years old).

- Motivating Spivak with "the most important thing to learn is the method. That is, to develop a method for thinking, based on demonstration following a fixed and known set of starting-points or axioms ...". This can be actually said of any mathematical theory (here I use the word 'theory' in its colloquial meaning). Studying calculus in particular makes little sens for compsci. Rather, graph theory or abstract algebra might be more worthwhile to learn - basically any subject that touches theoretical computer science significantly.

7 comments

They don't recommending Euclid as a way to learn geometry, they recommend him because his book has been the foundation of the scientific dialog for the last several millennia. Regardless of whether his formalization of geometry is the most up-to-date, every subsequent mathematician and logician has been building on The Elements. That fact alone makes it valuable to read, not as a way to learn geometry, but as a way to understand where we came from.
There's a little story told about the philosopher Thomas Hobbes, by John Aubrey:

"He was (vide his life) 40 yeares old before he looked on geometry; which happened accidentally. Being in a gentleman's library in ..., Euclid's Elements lay open, and 'twas the 47 El. libri I[Pythagorean theorem]. He read the proposition. 'By G--,' sayd he, 'this is impossible!' So he reads the demonstration of it, which referred him back to such a proposition; which proposition he read. That referred him back to another, which he also read. Et sic deinceps, that at last he was demonstratively convinced of that trueth. This made him in love with geometry."

Reading all of Euclid's Elements is a big undertaking, though I think you can get a sufficient taste and appreciation of iron-clad logical reasoning and demonstration from going through some subset of it. Perhaps working through a single proposition back through its base propositions, definitions, common notions, and postulates will be enough to alter your thinking and at least see what's possible. Unlike the author I can't tell from discussion sampling if people are ignorant of Euclid, but I have been frustrated by 1-on-1 failures to win arguments by mathematical proof (e.g. that 0.999.... = 1) and such an unwillingness to accept such things shows a profound disconnect in how we look at the world. Reading Euclid may help that.

On the other hand, lots of software developers are exposed to proofs as part of their formal education (those who received one), so how much Euclid can add here is questionable, vs. actually putting proofs into practice by learning things like TLA+, or learning about probabilistic inference which is more needed outside crisp and clear worlds like Euclidean geometry. Personally I'd sooner have software developers take a few minutes to learn and reflect on Chesterton's Fence, than working through examples of geometry proofs, and maybe some can learn to reduce their bad habit of sloppily "reconstructing things from first principles" (where "first" is frequently "first thought of").

Then you, as Moicanu below, didn't understood my point: You learn less from the Elements than from later, curated sources. Analogously, no one would advocate reading Newton's Principia to "understand where we came from". You would first learn the theory (geometry resp physics) with up-to-date sources, then read a commentary of the original (which is often longer than the original), and only then you'd be able to get something out of reading a translation of the original.

Thus, by reading the original works you will confuse yourself with the obscure notation you will encounter, semi-circular arguments and other problems (both the Elements and the Principia are riddled with problems), which actually have prompted many many scholarly works commenting and fixing these.

I've read the 'original' Elements, indeed. Apart from the geometric figures which were not even available in the original form of the manuscript, but added later as an aid, there is no obscure notation whatsoever. Indeed, there is no notation at all. It's all prose.
If you want to read it more as a historical piece of art I wouldn't object; if you want to actually get some mathematical insight out of it on the other hand, this would be a good starting point:

https://math.stackexchange.com/questions/845288/has-any-erro...

One of missing pieces in education is surfacing problems, deadends and struggles of different sorts. Shame because it’s such an insightful part, often allows grasping underlying reason for why things are the way they are.
Nicely said.
>Studying calculus in particular makes little sens for compsci.

yeah it makes little sense if you don't want to be able to write programs that solve the world's major problems

so if you are content with writing cat picture apps, skip calculus

We were just talking about this over lunch yesterday (software engineers at a medical device company). I won’t dismiss calculus, but it was generally agreed that linear algebra and statistics were most important, at least for what we’re doing.
Must be something common about medical devices. When not doing linear algebra and stats, I need optimizations from the wheelhouses of linear programming and numerical analysis.
Although for statistics (and probability as well), Calculus has a way of sneaking in there.
not sure why anyone downvoted this, because in my stats for engineers class we were doing double integrals
Also I'm not so bearish on letting people choose not to be smarter.

I think society is better off giving people the best means to achieve the intellectual goal they want, rather than forcing a greater number to learn beyond what they are compelled to. The kind of people I enjoy talking to are all the kind of people who would learn this stuff anyway as a matter of habit. My bookshelf is not full because of a state mandate.

You need a lot more than calculus to actually be useful at doing that though, unless you mean just throwing AI at the problem.

If you want to write a CFD solver then you need a lot more than just blindly learnt calculus. If you want to blow up the world using fuzzily applied financial models then you might not.... (you do actually)

i'm learning ML now from an accomplished researcher

to understand the courses we need stats, linear, and some calc 3

Having an understanding of mathematical foundations and proofs can be very beneficial to software developers; but I agree there are much better books than the ones suggested here. "Elements" is an historically important book (arguably the most important in math), but like you said is fairly outdated. Real Analysis is critical for higher level maths and theoretical computer science and does have some value even in software development. But with books like Spivak's Calculus you spend more time memorizing definitions and theorems than abstract thinking or problem solving.

Some better math books that I would recommend off the top-of-my-head:

* "How to Solve it" by George Polya - A great book on breaking down complex problems.

* "Mathematical Logic" by Stephen Kleene - A much more contemporary math book on building axiomatic theories from scratch.

* "Godel, Escher, Bach" by Douglas Hofstadter - Also about mathematical foundations but for a much broader audience.

I agree that for anyone wanting to improve "logical thinking" these books are a good start. In particular the last one is recommended, if you want to start having doubts about logic itself and the limits of logical reasoning ;)
If one wanted to read all three of those, what order would you recommend?
I am a big proponent of first principles learning but learning a completely adjacent field to be a better developer is like in fhe Karate Kid when he learns to block punches by sanding a deck. Even if the skill transfers its massively less efficient than just practicing the thing you want to get good at.
> Studying calculus in particular makes little sens for compsci. Rather, graph theory or abstract algebra might be more worthwhile to learn - basically any subject that touches theoretical computer science significantly.

Unless of course you have any interest in machine learning.

i think if one were looking for a more philosophical approach to calculus, apostol would be a good choice.

i personally have found calculus to be useful in a fair number of domains i find interesting. anywhere computers process signals from the physical world, it tends to show up, whether it be sound, vision, or other signal types entirely.

not to say that graph theory and abstract algebra aren't important (especially in things like discrete algorithms or cryptography) just rather if you want to build systems that interface with the physical world, you need the original language of physics as well as all the linear systems and sampling theory to go with it.

You've missed the whole point.
Could you elaborate? "You've missed the whole point" is completely non-helpful.
Quoting the article first paragraph I think is the best response

"I view the field of software development as a big logical system with highly interconnected and complex parts. Understanding such a big systems naturally requires having an excellent grasp on the tools used to build them. And the most fundamental one is logic itself. What follows from what, what are the starting-points or the elementary parts, what are the ways of composing these into more complex ones, ways to spot complete non-sense in the system and how to decompose the complex parts back to more fundamental ones to check their consistency and truth. The following book list contain titles that are all playing fields for one to start experimenting with such systems and gain the required confidence that one can master them. "

The recommendation are from that point of view and the authors selection from book he actually read and consider good for it.

Standards of rigor evolve with time and the level of rigor in the Elements is abysmal compared to today.
@throwaquestion5, thank you!