[HN Gopher] Ask HN: Most interesting, mildly impractical, well-w...
___________________________________________________________________
Ask HN: Most interesting, mildly impractical, well-written books on
software?
Books like nand2tetris, Let Over Lambda, Lisp in Small Pieces,
Hacker's Delight are iconic. They aren't required reading to do
well in software but they are extremely interesting and are fairly
easy to read (they are well edited). What other books are in this
vein? Due to popularity, feel free to skip The Littler
Schemer/MLer, HtDP, SICP, On Lisp, Thinking in Forth. And let's
skip history, biography books like Soul of a New Machine and
Isaacson's Jobs. And again, let's skip books that you might
actually consider required reading for experienced developers.
Author : eatonphil
Score : 67 points
Date : 2021-11-22 14:31 UTC (8 hours ago)
| eatonphil wrote:
| I'll add Shellcoder's Handbook to the list. Great intro to
| compiler/language flaws for programmers who don't know much about
| software security (like me).
| tephra wrote:
| I thought Knuts Literate Programming book (https://www-cs-
| faculty.stanford.edu/~knuth/lp.html) was extremely interesting,
| the paper "the errors of TeX" which is a part of it is one of the
| more interesting papers I've read.
|
| Joe Armstrong used to recommend Algorithms + Data structures =
| Programs
| (https://en.wikipedia.org/wiki/Algorithms_%2B_Data_Structures...)
| but I haven't read it.
|
| Okay I know you said no to the little schemer but you technically
| didn't mention The Reasoned Schemer which is just amazingly fun
| to go through and wrap your head around
| (https://mitpress.mit.edu/books/reasoned-schemer-second-
| editi...). Also see Will Byrds latest strangeloop keynote:
| https://www.youtube.com/watch?v=AffW-7ika0E
| eatonphil wrote:
| > I thought Knuts Literate Programming book (https://www-cs-
| faculty.stanford.edu/~knuth/lp.html) was extremely interesting,
| the paper "the errors of TeX" which is a part of it is one of
| the more interesting papers I've read.
|
| I haven't read any of Knuth's stuff because doesn't having 7
| volumes kinda imply it can't possibly be well edited? Or maybe
| I really do just need to suck it up and read these books. I
| know it's not the same exact book but I took his style to be to
| generate encyclopedic tomes rather than interesting reading.
|
| > Algorithms + Data structures = Programs
|
| Oo a Wirth book. Those are always good.
|
| > I know you said no to the little schemer but you technically
| didn't mention The Reasoned Schemer
|
| Man you're cutting it close there!
| tephra wrote:
| > I haven't read any of Knuth's stuff because doesn't having
| 7 volumes kinda imply it can't possibly be well edited? Or
| maybe I really do just need to suck it up and read these
| books. I know it's not the same exact book but I took his
| style to be to generate encyclopedic tomes rather than
| interesting reading.
|
| Of the Knuth I've read (which includes [a tiny] _some_ of
| AoCP, lets not kid ourselves) I think he is a very good
| writer with great sense of humour between the academicness of
| some of his writing. Take the Surreal Numbers book for
| example.
| eatonphil wrote:
| You've convinced me. I'll have to go for some of his books.
| Worst case I've got some intelligence-signaling
| paperweights.
| [deleted]
| Jtsummers wrote:
| > I haven't read any of Knuth's stuff because doesn't having
| 7 volumes kinda imply it can't possibly be well edited?
|
| That's a very bad assumption in this case. The contents of
| TAOCP are very well edited, just massive in scope and it's
| one man putting it all together. However, those aren't his
| only books. _Concrete Mathematics_ is a completed text that
| expands on, in particular, the math in Chapter 1 of TAOCP.
| _Literate Programming_ is a collection of papers on topics in
| programming, and is the first of eight such books. If you
| want interesting but mildly impractical, check out his
| _Computers & Typesetting_ [0] which includes two books which
| are actually literate programs.
|
| [0] https://www-cs-faculty.stanford.edu/~knuth/abcde.html
| eatonphil wrote:
| Thanks for the suggestions!
| JackFr wrote:
| Just read his introduction to generating pseudo-random
| numbers or his sketch of a proof of Benfords law in
| Seminumerical Algorithms. Excellent stuff.
|
| For moderately impractical, look at tape sorting in Sorting
| and Searching.
| adamkl wrote:
| How about "The Land of Lisp"? [0]
|
| It comes with a bonus music video! [1]
|
| [0] http://landoflisp.com
|
| [1] https://www.youtube.com/watch?v=HM1Zb3xmvMc
| eatonphil wrote:
| That is a pretty fun one indeed. :)
| onemoresoop wrote:
| Simply Scheme[0] as an intro to scheme and a good bridge for
| taking on SICP. It is available for free online. [0]
| https://people.eecs.berkeley.edu/~bh/ss-toc2.html
| eatonphil wrote:
| Neat! I haven't heard of this one.
| adampk wrote:
| Designing Data-Intensive Applications: The Big Ideas Behind
| Reliable, Scalable, and Maintainable Systems
| https://www.amazon.com/Designing-Data-Intensive-Applications...
|
| I surprisingly really enjoyed it. Well written and it pulled back
| the veil on a lot of concepts that I thought were too complex for
| me to understand/enjoy.
| eatonphil wrote:
| I agree it's well written but for me that's way more on the
| side of required reading.
|
| I'm thinking about books you don't _need_ to read but that are
| just really neat or advanced discussions.
| [deleted]
| cloogshicer wrote:
| If you're interested in compilers and programming language
| design, I highly recommend Bob Nystrom's "Crafting Interpreters".
| One of the best written programming books I've read.
|
| Free to read online:
|
| http://craftinginterpreters.com/contents.html
| eatonphil wrote:
| It's been on my list to read for a while! I wonder if it really
| is one of the best books on interpreters or if it just hit the
| right spot of being free online and in a mainstream language
| (i.e. not Haskell, OCaml, or Scheme) and with code you could
| actually run whereas most PL _textbooks_ stay too abstract and
| don't walk you through building a working thing.
| stefanos82 wrote:
| It is by far the best book (website content?) I read around
| compilers.
|
| It's extremely accessible, easy to follow and digest, plus it
| challenges you to experiment to see how things work by adding
| new features or breaking existing ones; fascinating stuff!
|
| Now...if it wasn't the Java part and was fully dedicated in C
| it would be awesome! :-D
| thoughtFrame wrote:
| Somewhat varied but I think some of these may fit your criteria.
|
| Programming Erlang by Joe Armstrong
|
| Communicating Sequential Processes by Hoare
|
| The algorithmic beauty of plants by Prusinkiewicz, Lindenmayer
|
| Network Performance Analysis Using the J Programming Language by
| Alan Holt
|
| Relational Programming in miniKanren by William Byrd
|
| Exercises in Programming Style by Cristina Videira Lopes
|
| edit: also "SAT/SMT by example" by Dennis Yurichev
| eatonphil wrote:
| Nice list! Anything with Hoare has my ear.
| kinbiko wrote:
| Code: The Hidden Language of Computer Hardware and Software
| https://en.wikipedia.org/wiki/Code:_The_Hidden_Language_of_C...
| comes to mind.
| eatonphil wrote:
| Yes that's in the spirit! I personally did not enjoy it though
| because it tried to explain at a level that non-programmers
| could understand so it didn't exactly go fast enough. I got
| bored reading it so I wouldn't recommend it to other
| programmers.
| lghh wrote:
| I feel the opposite. I read it right after taking a computer
| organization class in college. Both Code and the course
| covered very similar topics. I really enjoyed and appreciated
| how clear and concise and friendly of a read it was even more
| after taking the course.
| eatonphil wrote:
| Fair enough!
| rgrmrts wrote:
| I recently added some books by Nils M Holms[0] to my library.
| Given some of the titles you mentioned, I think you might like
| them. I enjoy their writing style.
|
| [0]: https://www.t3x.org/
| eatonphil wrote:
| Yeah! I loved LISP System Implementation.
| itpragmatik wrote:
| Pragmatic Programmer https://pragprog.com/titles/tpp20/the-
| pragmatic-programmer-2...
| eatonphil wrote:
| > And again, let's skip books that you might actually consider
| required reading for experienced developers.
|
| Would be a great suggestion in a generic good books list but
| this one is about books that are not pragmatic!
| linguae wrote:
| For a great introduction to file systems, I highly recommend
| _Practical File System Design with the Be File System_ by Dominic
| Giampaolo, creator of the Be File System who ended up moving to
| Apple and designed Spotlight, the file indexing and search system
| that was introduced in Mac OS X Tiger. It 's very well written
| and you'll learn a lot. When I was hired in 2006 as a summer
| undergraduate research intern at an academic storage systems lab,
| I used this book to study up on file systems design and
| implementation. At the time I haven't even taken an operating
| systems class (I had just completed my freshman year), though I
| already knew a lot about operating systems by reading a lot of
| papers and books on Unix as well as writing C programs that used
| POSIX system calls. This book helped me a lot on my very first
| research project: exploring the use of SQLite as the basis of a
| non-hierarchical file system. That was a fun project that helped
| start my research career.
|
| I still refer to this book from time to time to brush up on file
| system basics.
| Jtsummers wrote:
| _The Psychology of Computer Programming_ by Gerald Weinberg.
| There 's a silver anniversary edition, that's the one to get. It
| has the author's commentary framing each chapter where he
| reflects on the contents.
| DashAnimal wrote:
| Here are the few I've really enjoyed.
|
| _Inside the Machine: An Illustrated Introduction to
| Microprocessors and Computer Architecture_
|
| Explains how Microprocessors operate, going from operands and
| building up a lot of the execution tricks used, all whilst going
| through popular examples of CPUs (thee pentium chips, PowerPCs,
| etc), discussing their history, their specs, their capabilities,
| etc.
|
| _Hardware and Support Support for Virtualization_
|
| This one corners on useful, but it's short and it's free and
| unless you work in virtualization it probably won't be much use
| but I found it helpful in getting a grasp on what is actually
| happening.
|
| ------
|
| Edit: Removed history books but, for anyone interested, the ones
| I listed previously were The Idea Factory, Valley of Genius, and
| Android: The Team that Built the Android OS
| eatonphil wrote:
| > Hardware and Support Support for Virtualization
|
| This whole series is truly awesome.
|
| > Inside the Machine: An Illustrated Introduction to
| Microprocessors and Computer Architecture
|
| I'm always looking for more like nand2tetris or Harris and
| Harris' book on comp arch to suggest. Thank you!
| hyperman1 wrote:
| There was one about Mockingbirds I read a few decades ago. I
| think this is the one:
|
| https://en.wikipedia.org/wiki/To_Mock_a_Mockingbird
|
| Nothing explicit computery or even technical in there. Only all
| kinds of invented birds with specific weird behavior. You need to
| know nothing above what a 10 year old knows (and be interested in
| logic). And yet, when you're at the end, it turns out you know
| what 'Y combinator' actually means.
| eatonphil wrote:
| > And yet, when you're at the end, it turns out you know what
| 'Y combinator' actually means.
|
| Sweet. I just learned about this book earlier today. It's on my
| list now!
| Jtsummers wrote:
| Pretty much everything by Smullyan is interesting (probably
| all, but I haven't read it all yet).
| eatonphil wrote:
| What else have you read of his that you recommend (related or
| not to this thread)?
| carapace wrote:
| "Planet Without Laughter"
|
| > excerpted from This Book Needs No Title: A Budget of
| Living Paradoxes by Raymund Smullyan
|
| https://www-cs-faculty.stanford.edu/~knuth/smullyan.html
| Jtsummers wrote:
| https://en.wikipedia.org/wiki/Raymond_Smullyan
|
| Under "Logic Puzzles", through _To Mock a Mockingbird_
| (about to reread it because I read it years ago and a lot
| of things didn 't stick at that point). I picked up his
| books to flesh out my home library (I'd read some of them
| back in college) and started rereading from the beginning.
| Have a notepad and pencil to help puzzle through the
| problems (or index cards, I have a few stuck in the books).
|
| They span from riddles, to logic puzzles (the classic
| Knight & Knave puzzles), to computation-based puzzles with
| combinators.
| tjr wrote:
| The requirements seem a bit unclear to me, but I'll toss a couple
| of titles into the ring:
|
| _The Inmates Are Running the Asylum_ (Alan Cooper) makes the
| case that user interfaces can and should be easier to understand.
| I think in the years since this book was written, there has been
| much improvement in the UI world overall, but still worth
| thinking about.
|
| _Expert C Programming (Deep C Secrets)_ (Peter van der Linden)
| goes into some fascinating technical (and historical) tidbits
| related to C.
| eatonphil wrote:
| Added both to my personal lists! Thank you!
| markus_zhang wrote:
| Is GEB considered to be one? It's not exactly CS but can be
| related, plus it was very well written.
| eatonphil wrote:
| It's definitely interesting! I don't know if I've ever met
| someone who finished the book though. It's a skewed definition
| maybe, but I don't personally consider things well written if
| it requires inhuman dedication to finish. :D
| atribecalledqst wrote:
| I finished it. But I was in high school and a lot of it
| likely flew over my head.
| jrmiii wrote:
| Based on the prompt, I feel like Why's (Poignant) Guide to Ruby
| would qualify.
|
| https://poignant.guide/
| eatonphil wrote:
| Weird! I like the originality. But does it actually go into
| depth or is it really just a tutorial to Ruby basics? If it's
| ultimately just a guide to Ruby basics I wouldn't include it
| here since I'm thinking of books with some serious technical
| depth/discussion.
| kingkonz1 wrote:
| deleted, misread the question
| eatonphil wrote:
| > And again, let's skip books that you might actually consider
| required reading for experienced developers.
|
| It would be a totally fine suggestion but it's way too
| practical! Let's keep this thread off topic!
| mcphage wrote:
| The Little Book of Semaphores:
| https://greenteapress.com/semaphores/LittleBookOfSemaphores....
|
| It's about multithreading synchronization issues like the Dining
| Philosopher's problem, and it's brief, interesting, and very
| readable.
| eatonphil wrote:
| That looks awesome. Thanks!
| ai_ia wrote:
| When I was learning Racket, I really liked Beautiful Racket[0] by
| Mathew Butterick. The book is accessible, well structured and the
| web design & typography is outstanding (IMHO). The author created
| a Racket Package (Pollen) and used it to write this book. I have
| special admiration for craftsmanship and this book is certainly
| one of them.
|
| [0]: https://beautifulracket.com/
| eatonphil wrote:
| Definite props for beauty.
| jcynix wrote:
| Programming Pearls and More Programming Pearls by Jon Bentley
| contain short articles "in the realm of insight and creativity."
| These articles appeared during the 80s in Communications of the
| ACM, but I think they are still mostly relevant and inspiring
| today.
|
| The second edition from 2000 is online available at
| https://archive.org/details/ProgrammingPearls2ndEditionJonBe...
| mixedCase wrote:
| Type-Driven Development with Idris. If you haven't delved into
| dependent typing before, you absolutely owe it to yourself.
| scruple wrote:
| I think these meet the criteria...
|
| P. J. Plauger's "Programming on Purpose" series of essays.
|
| Purely Functional Data Structures by Chris Okasaki.
|
| I would put both of these alongside Bentley's "Programming
| Pearls" books which I saw mentioned in another comment.
| eatonphil wrote:
| > Purely Functional Data Structures
|
| A classic! Good suggestion.
|
| I'm curious to check out Programming on Purpose.
| jpgvm wrote:
| Learn you a Haskell for Great Good.
|
| Not required reading but entertaining and only somewhat practical
| unless you happen to write Haskell for a living, in which case
| yeah - too bad.
| the_arun wrote:
| "Working Backwards: Insights, Stories, and Secrets from Inside
| Amazon" - https://www.amazon.com/dp/1250267595 by Amazon
| executives. Gives overview of Amazon's core practices that made
| them successful.
| eatonphil wrote:
| I liked this book too! But not at all in the vein I'm talking
| about here. Thinking books that actually talk about
| software/programming in technical depth.
| qorrect wrote:
| I loved that book I'd recommend it to everyone. It's more of
| an Information Theory book than a software development book.
| rglover wrote:
| Not about software per se but The Systems Bible/Systemantics
| (original title) is a good read:
| https://www.amazon.com/SYSTEMANTICS-SYSTEMS-BIBLE-John-Gall-...
| eatonphil wrote:
| Yeah that is a very fun read for sure!
| dSebastien wrote:
| I don't know if mine qualify and how HN feels about self-
| promotion, but I can't resist the opportunity to mention my
| project.
|
| I'm working on a collection of 12 books about software
| development and IT: https://dev-concepts.dev/table-of-contents
|
| I try not to get down to the level of atoms and molecules, but
| I'm going deep down the rabbit hole, and it's quite fun!
| eatonphil wrote:
| Self promotion in general is fine on HN but I think it's pretty
| hard to objectively say anything you write yourself is well
| written!
| mycl wrote:
| _The Art of Prolog_ is now open access:
| https://mitpress.mit.edu/books/art-prolog-second-edition
|
| You could think of it as " _SICP_ for Prolog ".
| eatonphil wrote:
| I own it and have tried to read it but man I have a really hard
| time getting past the first chapter. I think it would be better
| for me to study Prolog first for a while before trying to
| continue reading this. I've always heard good things about it.
| sombremesa wrote:
| Since you want impractical suggestions, you might enjoy "if
| Hemingway wrote JavaScript"
| eatonphil wrote:
| Wow I love both Hemingway and JavaScript. I look forward to
| this book.
| Pelic4n wrote:
| A list of this exact kind of books is presented here:
| https://blog.fogus.me/2015/04/27/six-works-of-computer-scien...
| eatonphil wrote:
| Awesome! Specifically not on my list already there's: Concepts,
| Techniques, and Models of Computer Programming; Smalltalk-80:
| The language and its implementation; The Architecture of
| Symbolic Computers and Project Oberon: The design of an
| operating system and compiler.
|
| This reminds me Niklaus Wirth's Compiler Construction probably
| belongs in this thread.
| mindcrime wrote:
| Maybe _Clever Algorithms: Nature-Inspired Programming Recipes_
| [1]. These techniques might not be useful to everybody, all the
| time, but they can be very handy in places.
|
| Edit:
|
| A couple of other suggestions.
|
| _Managing Gigabytes: Compressing and Indexing Documents and
| Images_ [2]
|
| _Mining of Massive Datasets_ [3]
|
| _Algorithm Design Manual_ [4]
|
| _Network Algorithmics_ [5]
|
| _Neural Network Design_ [6]
|
| I think all of these fall into the category of "Won't be
| applicable to everyone, but can be good for those who need this
| kind of stuff."
|
| [1]: https://github.com/clever-algorithms/CleverAlgorithms
|
| [2]: https://people.eng.unimelb.edu.au/ammoffat/mg/
|
| [3]: http://www.mmds.org/
|
| [4]: https://www.amazon.com/Algorithm-Design-Manual-Steven-
| Skiena...
|
| [5]: https://www.amazon.com/Network-Algorithmics-
| Interdisciplinar...
|
| [6]: https://hagan.okstate.edu/NNDesign.pdf
| eatonphil wrote:
| That looks good! Thanks!
| carapace wrote:
| "The Algorithmic Beauty of Plants"
|
| > ... is a book by Przemyslaw Prusinkiewicz and Aristid
| Lindenmayer. It's notable as it is the first comprehensive volume
| on the computer simulation of certain patterns in nature found in
| plant development (L-systems).
|
| > The book is no longer in print but is available free online.
|
| https://en.wikipedia.org/wiki/The_Algorithmic_Beauty_of_Plan...
|
| http://algorithmicbotany.org/papers/#abop
| guilhermeasg wrote:
| The Feynman Lectures on Computation, Goedel's Proof, maybe
| Crafting Interpreters?
|
| I've been following the development of
| http://browser.engineering/ and it's so much fun to go through.
| Highly recommended!
|
| Mazes for Programmers is on my bookshelf. I've gone through the
| first few chapters coding along in Go and going on weird
| diversions. It's totally pointless, and I love it. There's also
| "The Ray Tracer Challenge" by the same author, which looks
| phenomenal.
| carapace wrote:
| Not quite in the vein, but I think Ted Nelson's "Computer
| Lib/Dream Machines" deserves mention (although it's partly
| history.)
|
| https://computerlibbook.com/
|
| https://en.wikipedia.org/wiki/Computer_Lib/Dream_Machines
|
| https://archive.org/details/computer-lib-dream-machines
|
| - - - -
|
| Also "Scalable Internet Architectures" by Theo Schlossnagle
| eatonphil wrote:
| > Not quite in the vein, but I think Ted Nelson's "Computer
| Lib/Dream Machines" deserves mention (although it's partly
| history.)
|
| That does look very interesting!
| cenazoic wrote:
| Ruby Under the Microscope: http://patshaughnessy.net/ruby-under-
| a-microscope
|
| The CS Detective: https://nostarch.com/csdetective
|
| Mazes for Programmers: http://www.mazesforprogrammers.com/
|
| A Curious Moon: https://bigmachine.io/products/a-curious-moon/
|
| xchg rax,rax: https://www.xorpd.net/pages/xchg_rax/snip_00.html
| eatonphil wrote:
| > xchg rax,rax
|
| Yes!!!
|
| Great list, thanks for sharing.
| pcthrowaway wrote:
| I must be missing something here. Care to explain what this
| is?
| withinboredom wrote:
| Not a book, but I truly enjoy this guy's videos:
| https://youtu.be/h7apO7q16V0. I usually watch them while eating
| lunch. He does a truly fantastic job.
___________________________________________________________________
(page generated 2021-11-22 23:02 UTC)