13 ms·
A non-standard book list for software developers
- WinterMount223 5y agoGood books but still quite standard. Spivak’s is standard on initial calculus courses at universities. If you really wanted non-standard but relevant authors I would add Feyerabend, Kuhn, Kahneman, Dostoyevsky, Borges, Taleb, Montaigne, Popper, Hofstadter, Don Norman, Alexandrescu. Add something about systems of representation by Kierkegaard or Nietzche or some interpretations by later authors.
- civilized 5y agoThe Calculus pick is completely fungible. There are at least two other popular Calc books that different people would say the exact same things about. Euclid as the ideal place to learn logic seems debatable, although I can't think of a better resource off the top of my head. The Xinu OS and LISP recommendations I've never seen before, so those were potentially valuable for me at least.
- jamjamjamjamjam 5y agoWhat calc books are those? Reading a calculus book is a massive investment because I will be rereading pages. So I’d like to find the best one first
- molteanu 5y agoI, for one, couldn't find a better one at the time I've read it. There are a lot of crappy ones, on the other hand. You are right in affirming that this is a massive investment.
- WinterMount223 5y agoDepends enormously on your level and willingness and dedication. At that level the best ones are Spivak, Apostol, Fichtenholtz, Kudryavtsev.
- molteanu 5y agoJust be careful in mixing the "best one at teaching" with the "best one at the level of detail and correctness". One is good for aha moments, the other for going into research. Depends on your needs. Similar to the question of "what is the best language to learn?". Depends on your needs.
- Turing_Machine 5y agoIf I remember right, Apostol uses a non-standard sequence (integration first, then differentiation). That probably only matters if you might be using a different book for another part of the sequence, though.
- civilized 5y agoI self-taught from an early edition of Stewart and loved it.
- harshreality 5y ago_Calculus Made Easy_ by Thompson (now in a new edition revised by Martin Gardner) was a former classic used by all sorts of people, and Feynman learned calculus from _Calculus for the Practical Man_, which was hardly sophisticated by modern standards. As long as you stick to a book some sizeable number of people think is okay, I don't think it matters that much what you learn from; the important thing is that you work through theorems carefully enough that you really understand them. Whether it's Spivak or Velleman or Thompson or OpenStax or Stewart (only for those who are assigned it, since otherwise there's no reason to spend >=$100 on it—it's not worth the premium) or Ross (his _Elementary Analysis_ book), worry about learning the concepts more than worrying about which book you chose. You can always refer to alternative books or youtube videos if a concept isn't clear in the primary book you chose.
- ivansavz 5y agoOthers have already mentioned the classics, but if you're looking for something more off the beaten path, you can check out my book: No Bullshit Guide to Math & Physics which covers calculus in approx. 150 pages (Chapter 5). You can see an extended preview of it here: https://minireference.com/static/excerpts/noBSmathphys_v5_preview.pdf#page=93 https://minireference.com/static/excerpts/noBSmathphys_v5_pr... And a standalone concept map here: https://minireference.com/static/conceptmaps/math_and_physics_concepts.pdf#page=2 https://minireference.com/static/conceptmaps/math_and_physic... (bottom of the page) Check out the reviews on amazon if you're interested. It hasn't been adopted as the main textbook at any university yet, but many teachers recommend it as supplemental reading for their courses.
- alexsieusahai 5y agoWhat about How To Prove It by Velleman as a substitute?
- zamalek 5y agoWhat book would you recommend for learning practical calculus from? I haven't touched the subject since high school.
- mhh__ 5y agohttps://tutorial.math.lamar.edu/ https://tutorial.math.lamar.edu/ is a good place to find answers to things. I learnt calculus from a copy of a book called "Calculus, A complete course" which I quite liked but have literally never seen anywhere else. The fact I got the book was basically by accident, completely changed my future.
- zamalek 5y agoThank you!
- rramadass 5y agohttps://news.ycombinator.com/item?id=30660126 https://news.ycombinator.com/item?id=30660126
- unfocussed_mike 5y agoHoftstadter is fairly near standard isn't it? Assuming you mean actually reading GEB and not The Mind's I or I Am A Strange Loop. Not generally a course text but very common reading among CS/AI students. Some of whom even read all the way to the end instead of just pretending to! The book I would most recommend software developers read is Mindstorms: Children, Computers and Powerful Ideas by Seymour Papert. It's a lot shorter. And probably more valuable. And one random side recommendation: The Daughter Of Time by Josephine Tey. It's a narrative exploration of how to challenge consensus belief, explore gut instincts and follow research leads, expressed as a perception-challenging historical review of Richard III by a fictional detective. The BBC audio book is worth a go. My copy of this book (which was my mum's copy) is one of the few things I'd rescue from the hypothetical fire. It stays with you.
- Smaug123 5y agoI found Hofstadter's _Le Ton beau de Marot_ fascinating, and also almost nobody has even heard of it!
- unfocussed_mike 5y agoI had not heard of it either. Very interesting. Thanks!
- bear8642 5y agoRemember reading Papert's Mindstorms book and being reminded of the fun you can have with computers, these powerful modelling machines - as Douglas Adams put it too
- yesenadam 5y agoHofstadter's amazing, mind-boggling satirical essay/alternate history A Person Paper on Purity in Language from Metamagical Themas. Much more fun than the title suggests! https://www.cs.virginia.edu/~evans/cs655/readings/purity.html https://www.cs.virginia.edu/~evans/cs655/readings/purity.htm...
- dhosek 5y agoI think Spivak is way less common as an initial calc text than Stewart. Spivak's approach is much more rigorous than most calc textbooks, and is in many ways almost an introduction to real analysis. Note, for example, that Spivak prefers to view the definite integral as the proper form of an integral rather than the typical approach taken by many introductory texts where the integral is viewed as the anti-derivative and then for ∫_a^b f(x)d(x) they just take F(b)-F(a) and call it a day. I would imagine that most introductory calculus students do close to zero proofs with most of the time spent on memorizing the various rubrics for finding derivatives and anti-derivatives. Spivak covers those, but the exercises are at least 50% proofs rather than being 90–100% calculation.
- morelisp 5y agoIt's horribly inaccessible but while we're throwing out truly nonstandard recommendations, and apropos to the connection made elsewhere in this thread between the theory of forms and object-oriented programming, Whitehead's Process and Reality is good for the same reasons OOP sucks.
- Qem 5y agoFor a truly non-standard, very good Calculus book, I recommend Elementary Calculus: An Infinitesimal Approach, by Jerome Keisler. It's available for free at https://people.math.wisc.edu/~keisler/calc.html https://people.math.wisc.edu/~keisler/calc.html
- deleted 5y ago[deleted]
- mumblemumble 5y agoI would suggest Essense of Decision (https://en.wikipedia.org/wiki/Essence_of_Decision https://en.wikipedia.org/wiki/Essence_of_Decision) Because when you're working on a larger software team, or even a small software team within a larger company, understanding how organizations actually understand the world and make decisions is invaluable. A person can drive themself crazy expecting groups of people to behave like a monolithic rational agent.
- ttyprintk 5y agoThanks, with the recent HN ruminations on late Von Neumann strategies this is refreshing.
- thwave 5y ago> Proclus (ca. 335 BC) Proclus, whose quote opens the section on Euclid, lived more than 700 years after this date, well into the 5th century AD. Euclid himself wasn't born till about decade after, in 325 BC.
- molteanu 5y agoThat is true. I've updated the info, though I couldn't quite find the exact date of the publication of "Proclus' Commentary on the First Book of Euclid's Elements". Good catch! Thanks for the heads-up!
- dfaiv 5y agoThis looks great - thank you for sharing. Now, if this (getting rapidly older) software engineer just knew how to find a mid-(late?)-career job change where the interview consisted of geeking out about these books instead of if I know how to reverse a queue with the least amount of memory...
- jrjarrett 5y agoHoly crap, the Comer XINU book is still around. I used that in my undergrad Systems course in the mid ‘80s…
- garren 5y agoThe most recent version targets the beaglebone black and the intel Galileo (now obsolete, although you can still pick them up.) I’ve encountered raspi repos on GitHub as well. I’ve found it to be a great book since it gets you working with hardware very early on.
- zuzuleinen 5y agoJust wanted to thank the author for his project of translating the Lessons In Electronic Circuits in romanian. It was so useful to me when I was a student at UT Cluj. I remember recommending that website to all my peers. Thanks for your amazing effort!
- molteanu 5y agoI was a student at UTCN, as well, and I found it hard to get a decent book on electronics to learn from. I've found the lessons in Electronic Circuits online, used it and then translated it for my fellow engineers, that's how much I liked it. Unfortunately the original website got hacked, so I did my best and recovered the content in its current format. You're welcome! Thanks for your input!
- irutirw222 5y agoI 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.
- molteanu 5y agoYou've missed the whole point.
- AnimalMuppet 5y agoCould you elaborate? "You've missed the whole point" is completely non-helpful.
- molteanu 5y ago@throwaquestion5, thank you!
- throwaquestion5 5y agoQuoting 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.
- deleted 5y ago[deleted]
- electrondood 5y agoIn a similar topic of books about system design, someone on HN recommended A Pattern Language and The Timeless Way of Building by Christopher Alexander et. al. They're not about designing distributed software systems... they're a complete design language for the proper design of a city, from the grossest elements to the most granular. You can flip to a random page and understand what makes a front yard really fulfill its purpose, or you can flip to a different page and learn why some public plazas just don't get used, while others flourish. It's a template system for designing a room, a house, a neighborhood, a city, etc. Makes you think about what a component is, what makes it "good" or "bad" at what it's supposed to do, and what makes it harmoniously integrate with other components.
- blacksmith_tb 5y agoAlexander is fun for sure for thinking about how we got where we are (I suppose if you were able to build your own house it could also be directly used to achieve various goals, which would be fun). Along similar lines I would recommend Donella Meadows' work, for example her essay Leverage Points[1]. 1: https://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/ https://donellameadows.org/archives/leverage-points-places-t...
- bennysomething 5y agoI haven't heard of this book, is it actually about designing cities? I'm probably way off but all I can't think of is that once we started designing cities we built crap. Take the UK for example all its beautiful amazing places were built before we had planning offices. They seem to just have evolved.
- gumby 5y agoNo, houses. Each "chapter" is just a page (well both sides of a leaf), sort of like The Society of Mind. One example is (paraphrased) "find the nicest spot on the property and don't build on it, because then you'll lose it". Another is "corridors are dead spaces; you move through them, and pretty much ignore them, on your way to do something". Not gospel or absolute rules; rather rules of thumb, or ways to talk about and think about what we wanted to accomplish.
- exdsq 5y agoOn the note of Euclid's Elements, I took a short course on Plato's "Theory of Forms" when I was just learning to really code and it's what helped OOP click in my head. It's fun when totally random subjects help you get an insight into one another. https://en.wikipedia.org/wiki/Theory_of_forms https://en.wikipedia.org/wiki/Theory_of_forms
- molteanu 5y agoYes, those Forms have had a lasting impact on Western Philosophy for a long time. I wouldn't be surprised if some of it hasn't had some impact on the OOP thinking, in general, even though indirectly. If you read on Hume and the British Empiricists from the 18th Century, for example, you'd be surprised how many "modern ideas" you find in there. After all, programming languages at large have a long history of philosophical ideas before them. Before they could come into being, that is.
- macrolocal 5y agoAbsolutely this! Some Neoplatonist literature distinguishes between God qua engineer of forms and God qua reifyer of them. And there's object inheritance implicit in their hierarchy of forms/angels, ie. Eriugena's that which creates and is created. Platonism is like ontological OOP. :D
- Banana699 5y agoTo extend and elaborate on the analogy further : Plato's forms is class-based OOP, the bluebrint is categorically different than the objects it generates, it is the sole source of the objects it generates, and it always comes before the objects it generates. It's also a complete description of every single object it generates: there is not a single thing you can do to the generated objects that is not precisely described and predicted by the blueprint*. There's another way : Nominalism, abstract blueprints and concepts don't exist, they are just artificial markers we put on sets of concrete objects to express some degree of similarity. That is, There's no such thing as a 'Tree' in the abstract, there's only the green thing with roots and branches under your house and the green thing with roots and branches under mine, we gave them (and countless other green things with roots and branches) the same name merely to express that we view them as equal under some circumstances, but that name doesn't express anything about the concrete objects themselves, just our brains, each object is completely unique and incomparable to any other in any objective way. Nominalism is similar to prototypical OOP, there is no such thing as a blueprint, concrete objects spring fully-formed into existence directly from the mind of their creator, or they are cloned from other concrete objects. If blueprints exist at all, they are only external descriptions by us observers to denote similarities: that object has x: and y: attributes and that object also has x: and y: attributes (possibly because it's a clone of the first) so they are the same 'type', but those objects don't 'know' they are the same type (well, they do if they're clones, as they point to the same parent, but whatever), and the universe allows any object to grow and shrink and morph independently of any other, similarities are imposed/discovered solely by observation from the outside. *:This principle might be violated in dynamic object systems with sophisticated meta-object protocols, as the blueprint itself is just an object that you can manipulate and mutate at runtime with various things not in the static description.
- faizshah 5y agoAnyone got a non-standard Distributed Systems book pick? Also a non-standard Concurrency book pick?
- molteanu 5y agoOperating Systems: Three Easy Pieces, https://pages.cs.wisc.edu/~remzi/OSTEP/ https://pages.cs.wisc.edu/~remzi/OSTEP/
- activitypea 5y agohttps://teachyourselfcs.com https://teachyourselfcs.com
- faizshah 5y agoThese are some good picks but kind of strange they don’t mention concurrency once on the page.
- faizshah 5y agoGonna throw in one of my own picks for Concurrency, I landed on this book a few months ago called “The Little Book of Semaphores” on synchronization with examples in python: https://greenteapress.com/wp/semaphores/ https://greenteapress.com/wp/semaphores/
- mhh__ 5y agoSlightly left field but Specifying Systems by Lamport?
- rramadass 5y agoFoundations of Multithreaded, Parallel, and Distributed Programming by Gregory Andrews. All the three paradigms of Concurrency are treated clearly within one pair of covers.
- m3047 5y agoSpivak, 2nd Edition, is how I taught myself calculus. Teaching myself calculus was the deal I made so that the head of the university mathematics department would let me take numerical analysis as a nonmatric. I have Pearl's ("fancy curve fitting") _Heuristics_ on my bookshelf as well.
- lutarezj 5y agoI like the list. But, Lisp?
- nomilk 5y agoHas anyone here read LISP in small pieces? I've never used LISP but would still like to read it. Would you recommend it? (it's not cheap, otherwise I'd just buy it without the due diligence)
- ajsnigrutin 5y agoYou can find it on the typical pirate sites (pdf and epub), I haven't been able to find sample chapters elsewhere. Of course, if you like it, buy the original to get the physical book :)
- marai2 5y agoYou can also do an HN search for it. Here is one excerpt from an HN comment: "... So for example, a book like "Lisp in Small Pieces", which taught me the concept of Continuations, was considerably hard on the conceptual side. This also took at least a month of conscious connecting the dots between what was in the text, tail-recursion, and those funny callback functions I've been writing in nodejs, before i "Got it". https://news.ycombinator.com/item?id=2418459 https://news.ycombinator.com/item?id=2418459
- egl2021 5y agoI've read most of it. It's excellent. You have to pay a lot of attention to get anything out of it, much more than is required for SICP, PAIP, or The Little Schemer. You will spend enough time at it that the monetary outlay will be insignificant...
- mbrodersen 5y agoI wouldn’t recommend it unless you are already an expert in Lisp.
- francasso 5y agoIn my opinion it's verbose and more complicated than necessary. If you just want to understand programming language design with a lispy flavor I would suggest Essentials of Programming Languages by Friedman, Wand (not much theory, scheme implementations of everything) and Design Concepts in Programming Languages by Gifford, Turbak, Sheldon (which uses s-exps to represent ASTs, but otherwise is not lisp centric). If you already know some PL theory and don't care too much about lisp, Bob Harper's Practical Foundations for Programming Languages is great, full of interesting topics (but it doesn't hold your hand as much as the previous two)
- deleted 5y ago[deleted]
- master_yoda_1 5y agoI don’t understand why old programmers are so much fascinated by lisp. If it would have been good it would have survived today.
- agumonkey 5y ago'(Quality troll thanks)
- bear8642 5y agoBut it has survived - Clojure, a JVM lisp dialect, flourishes! Feel part of what makes lisp fascinating is its simplicity and power leading to its place as a test bed for ideas such as continuations and Kanren, a new logic programming language.
- inimino 5y ago...posted on a site that was developed on a Lisp dialect.
- musicale 5y ago1. It's all their feeble minds can understand. (This is the answer you were fishing for, yes?) 2. Too many MIT grads were brainwashed by SICP until MIT sensibly switched to Python in 2009. (Unfortunately they probably still secretly teach SICP somewhere.) 3. Lisp/Scheme readily implements "Maxwell's equations of software" which are believed to be important or useful for some reason. /s
- musicale 5y agoI guess someone didn't see the /s or maybe OP was not amused.
- jounker 5y agoIt’s almost like they understand something that you don’t.
- elviejo 5y agoBecause we were educated before "flavor of the month" JavaScript framework... And because if that we can appreciate elegant and practical tools and ideas. See also emacs and vim.
- pjmlp 5y agoIn many universities those books are quite standard on a Computer/Informatics Engineering degree.
- rramadass 5y agoA good non-standard Applied Maths text is : Methods of Mathematics Applied to Calculus, Probability, and Statistics by Richard Hamming.
- jvvw 5y agoI feel like there must be better mathematics books than those two if what you want is a taste of mathematics. What you get from Euclid is the idea of proofs from a set of axioms, but Euclid in the original is quite a painful way to get introduced to that. And I've never understood the obsession with Spivak. Of all the calculus and analysis books I read, it definitely wasn't up there as anything special. Not sure what the best books are these days to give people a flavour of university style mathematics. I quite liked Introductory Algebra and Analysis by Geoff Smith when I was teaching first year mathematics years ago but I assume that was published 25 years ago so I imagine has been superseded.
- jonsen 5y ago> I've never understood the obsession with Spivak Maybe one can be so happy about having made it through such a tough subject that it has to be a good book? I mean, do people normaly study from more than one text?! > ...to give people a flavour of university style mathematics I've just started The Foundations of Mathematics by Ian Stewart & David Tall. So far it's really promising.