Live data from Hacker News

A non-standard book list for software developers

mihaiolteanu.me

61–70 of 112 posts

Re: A non-standard book list for software developers

#61

Good 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.

It'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.

Re: A non-standard book list for software developers

#62

Good 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.

For 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

Re: A non-standard book list for software developers

#63

Anyone got a non-standard Distributed Systems book pick? Also a non-standard Concurrency book pick?

https://teachyourselfcs.com

These are some good picks but kind of strange they don’t mention concurrency once on the page.

Re: A non-standard book list for software developers

#64
post #59

Has 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)

You 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

Re: A non-standard book list for software developers

#65
post #59

Has 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)

I'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...

Re: A non-standard book list for software developers

#67

Good 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.

The 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.

What about How To Prove It by Velleman as a substitute?

Re: A non-standard book list for software developers

#68

In 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…

https://dreamsongs.com/Files/PatternsOfSoftware.pdf is a great read that cites Alexander's work and talks about how that influenced OO design. Very accessible too

Re: A non-standard book list for software developers

#70
post #28

On 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

To 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.

Post reply on HN