Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What Programming Book would you buy right now (if it existed)
32 points by plinkplonk on April 7, 2009 | hide | past | favorite | 52 comments
Whacked from reddit (http://www.reddit.com/r/programming/comments/8aixn/programming_books_that_you_would_buy_right_now_if/?sort=new), but I would love to hear HN users's opinions.

I would buy "Inside The Python VM", (replace Python with Erlang or Lua or V8) and "A Hacker's Guide to Hadoop Internals"

Software engineering in functional languages. Pretty much every programming book I have read found about functional languages has been about learning a language with examples that are less than a page. I am curious what thought patterns and structures you use to build something larger.


I came across a blog excerpt from this book that looked pretty neat. It isn't out yet but could be good.

"I came across a blog excerpt from this book that looked pretty neat. "


has the table of contents. I am not sure if it has any insights on functional programming in the large, but it does look neat.

Found the blog post I was referring to:


Also has a link to buy a pre-release version of the book

"The definitive guide to dealing with Huge MySQL databases"

it's called don't use mysql for that. (sorry i'm a trolling postgres user, please don't mark me below -1)

in a non trolling way, I'd like to see a PostgreSQL for MySQL, SQL Server, and Oracle users.

Why's (Poignant) Guide to C.

Typeset in lovely, 50-column ASCII.

You might also be interested in "The Little DOer", Friedman and Felleisen's guide to imperative programming with the Algol family of programming languages :-P

Wow, good one. I'd never even thought of that, perhaps I'd finally learn C...

'The Design and Implementation of Virtual Machines' or 'Theoretical Computer Science by Example'.

> 'The Design and Implementation of Virtual Machines'

Oh that book already does in fact already exist, and it's amazing:


It's not a programming book but... "The Dream Machine: J.C.R. Licklider and the Revolution That Made Computing Personal"

It's an awesome book about the history of computing, human-computer interaction, and all sorts of things you're familiar with but may never have known where they came from or how they evolved.


Programming Clojure (http://www.pragprog.com/titles/shcloj/programming-clojure) - it semi-exists - presently only available as pdf beta book.

The book appears to be very close to release. I've been downloading each release for the past few months and the latest one is great. It was also a nice surprise to see that in addition to PDF the latest update is also available in epub and mobi (compatible with Kindle) formats.

Programming Collective Stupidity: Harnessing the Ignorance of Crowds

"How to Determine Exactly What Users Really Need"

(All programming becomes much simpler after that.)

They exist in the consultingware/project management mold. http://www.amazon.com/Mastering-Requirements-Process-Suzanne... is an example.

I'm taking the bait. I'll either love this book or hate it. Either way, it's on the way from Amazon. I'll let you know later. Thanks, ibsulon.

"Indie MMOs for Small, Distributed Teams"

I wouldn't even mind if it took longer than 21 days.

Real programming in Prolog. Eiffel system programming. Lua system programming.

I've found books for prolog, but they all start off with logic programming. It's kind of weird, or is it just me? And the other 2 I've not really seen any decent books for them. Unless I'm wrong? (A subtle cry for help.)

"How to/not to become a religious zealot of your favorite language"

I'm guessing that will be a favourite to recommend to others, too :)

Some of the suggestions I liked from the reddit discussion ( direct quotes, see http://www.reddit.com/r/programming/comments/8aixn/programmi... for the full list)

- Plan 9 Unleashed.Or perhaps "Distributed computing with Inferno and Limbo"

- a book like Gödel, Escher, Bach: Eternal Golden Braid that explores Church/Lambda Calculus; Curry-Howard

Isomorphism; and Category Theory and Monads. ... "Oleg, Toulouse-Lautrec and Rachmaninoff: On Type Reasoning".

- The Complete Lisp Machine."

An in-depth historical and technical guide, with classic papers, discussion, circuit schematics. Features not only the MIT/Symbolics/TI family, but the nearly-forgotten Xerox PARC systems. Chapters with deep commentary on the design decisions by the original designers.

- The Implementation of Functional Programming Languages, 2nd Edition, by Simon Peyton-Jones

- Retro Game Programming for the iPhone & iPod touch

- series of books on specific kinds of general purpose applications and a discussion of their design and implementation techniques.

For example, the first book could be about writing a graphical word processor. It would explain some data structures for representing text content, lines, paragraphs and the like with the tradeoffs between them. Then explains layout engines, using state machines to model GUI interaction, designing file formats, and other pure gold of programming :)

Then it would be littered with case studies of both commercial & open source applications and a huge bibliography referring to important related books and research papers, preferably with commentary.

- Programming Factor, Real World Factor and Filthy Rich Client in Factor.

- Well Explained Solutions To Difficult Graph Problems Done In MapReduce

Non-trivial Recommendation Engines With Practical Concerns Highlighted And Straightened Out

- Core GNUstep Programming. - - A revised, modern version of Lisp in small pieces

- Programming in Octave - Twisted Network Programming, or any decent intermediate/advanced book on Twisted.

- The Complete Haskell. An encyclopedic work that spans the full range from category theory to network programming, everyday scripting, and distributed systems. Not for Java programmers; this book doesn't skimp on the theory as Real World Haskell does -- you'll learn to recognize the algebraic patterns that allow Haskell experts to distill out an Applicative, a Monad, or an Arrow from a collection of functions. Sample code (available on the Web site) includes a persistent distributed MUD server, a set of statistical logs analysis tools, an email spam filter, and a compiler for GoatC, a small imperative language.

yeah, those ones.

Especially a decent book on Factor, I'm trying to learn it form the documentation but apparently I'm not trying hard enough.

oh and, "The Life and Adventures of Chris Double", that crazy bastard seems to show up in my google searches for everything sooner or later. TraceMonkey internals, NDS homebrew, dylan, factor! Is there anything he can't do?


Relevance of Knowledge for Programmers.

Would give a reasonably detailed, comprehensive overview of all the timeless theory and techniques (CS theory, math, design, etc), where they come from and what they're actually useful for.

So many projects are made much harder because a fundamental bit of theory has to be rederived from first principles for lack of knowledge...

Imagine someone who never heard of a graph:

"Okay, now I know I need a structure that's a bit like a tree except each node can have multiple parents... Now, how do I find the shortest path between two nodes?..."

"How to break the iPhone app store rules and still get your app accepted (every time)".

Anything on Tokyo Cabinet / Tokyo Tyrant

"Writing a Compiler in 24 Hours"

The closest I've ever seen would be: "Understanding and Writing Compilers: A Do It Yourself Guide"

Possibly/probably hopelessly dated now, but since you can download a free copy from http://en.wikipedia.org/wiki/Richard_Bornat what do you have to lose?

Write algol languages with sexp syntax and you pretty much cut your compiler hacking in half (just focus on semantic analysis and code generation.)

You can further cheat and write a short and tidy attribute grammar for a tiny block-structured and well documented dialect like Oberon, and your grammar will be 1:1 translation from production rules straight to assembly language. No optimization, and certainly no intermediate representation. What you're left with is a clone of the first Turbo C without dynamic memory allocation (just static allocation with a strict stack discipline)

Then you can run around and say you're a compiler hacker. That's how I started :-P

How would an algol language with sexp syntax differ from scheme?

It wouldn't have any of the following:

First class continuations.

First class lexical closures.

Automatic garbage collection.

An explicit Eval function.

Explicit READER and PRINTER functions for builtin parsing and serialization of code and data (not sure if Scheme requires these, but they make a lisp Lisp)

A full numeric tower.

Hygienic macros (or any macro for that matter; CPP doesn't count)

Symbols as datatypes.

An interactive REPL.

Tail-call elimination.

Variable-argument procedures (with no kludges; va_list, va_start, va_end is not the way to do it.)

Delayed evaluation constructs.

Multiple-value returns.

Quoted forms (a sexp syntax does not necessarily mean QUOTE is available.)

We Lisp2 hackers might pick on Scheme for its Algolishness, but that doesn't make it any less of an excellent language. Scheme is a purists wet-dream come true and a fine Lisp dialect, albeit an algolish one ;-)

A book on learning x86 assembly on recent processors.

"Thinking in MapReduce"

"The Java Environment for Java Haters": covering the JVM, the better web and GUI environments, essential legacy libraries, tools, and whatever else is worth carrying over as Clojure and Scala gain traction.

Right now I wish I knew of a Pickaxe for Python.

Also, I want a MacRuby book.

On a slightly related note, how does the Kindle do with programming books? I am thinking about picking one up to use primarily as a reference screen.

if the rumored 8x11 "textbook" model kindle comes out, i think it'll be perfect. as it is now, its not too great. i thought it would be an ideal technical library, but don't expect to get a lot out of code examples or images. the readability of the code examples varies depending on their visual treatment and the language, with the less verbose languages with subtle design (i.e. no darker background, giant Courier New, etc) being most readable.

My fictional choice would be "The Oracle Optimizer: A Treatise"

Database related books tend to be too high level and never dig down deep enough.

I would highly recommend Expert Oracle One-On-One. It contains everything you need to know to use oracle to the fullest extent.


Calling Useful Java Libraries from Clojure for People who have Traditionally Despised Java And Know Nothing About It.

Coders At Work (http://www.codersatwork.com)

- a book on learning to trust your intuition, with good and bad programming and architecture examples

- a functional language cookbook... like erlang or haskell cookbook

- a book comparing cultural differences between countries in the work and education worlds

Norvig's Paradigms in AI book - http://norvig.com/paip.html

I would love a book on advanced XNA. Everything around at the moment is for beginner to intermediate.

a book on postgresql 8.3 (or the to be released 8.4) with some good strong chapters on various PL languages. I'm thinking one on PL/Perl a few on PL/pgSQL, one on PL/SQL, one on SQL/PSM (maybe). several on the rest of Postgres.

P=NP: An Illustrated Guide

Twittering for dummies

"Become a R0ck$tar programmer in 21 hours".

On Clojure


Get with the times

You're at -8 because you forgot the trailing slash.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact