
Ask HN: If you would have to choose one book what would it be? - oscardelben
There are many wonderful programming books that I would like to read and understand. Here are some examples:<p>* PAIP (Paradigms of artificial intelligence programming)
* SICP (I read this but didn't complete ALL the exercises)
* TAOCP
* Others?<p>The problem is that each of these books would take me months to go through, but that's ok for me because I know that the benefits are enormous.<p>My question is: which one would you study first? Are there any other books that I should read first? My goals with programming is to create web and desktop (mac, iphone) apps if that's relevant.
======
edw519
_My goals with programming is to create web and desktop (mac, iphone) apps if
that's relevant._

Then you have it backwards. You should be building, not reading.

Slow way: Read book --> apply what you learn

Fast way: Write code --> Get stuck --> Find a book

I know this is not intuitive, but trust me, it works much better. We all love
the feeling of cracking open a fresh new book (or pdf) and bathing ourselves
in all this newfound knowledge. But this method is not very efficient. Much of
what you read you will never use and much of what you need you will never read
about, no matter what the book is.

Better to pick a project and just start building it. Come up for air every
once in a while and consult whatever book fills in what you need to know to
build your project. True learning comes from building, not reading. This
method takes the best of both worlds and gets you to your stated goal much
quicker.

~~~
oscardelben
Thank you, that does make sense to me indeed. I'll stick with your advice.

------
rsaarelm
Given your goals, you might want start by reading books like The Pragmatic
Programmer and Code Complete cover-to-cover, and taking it easier with the
theory books. You want your basic software development skills to be solid
before you start going into proving algorithm complexities.

Beyond that, off the top of my head the number one theory book for working
programmers would be Introduction to Algorithms by Cormen, Leiserson, Rivest
and the new guy.

------
michael_dorfman
First of all, if SICP would take you months to go through, TAOCP will take you
years-- let's not kid ourselves.

That being said: I'd definitely start with SICP, for one reason: the video
lectures, available at [http://groups.csail.mit.edu/mac/classes/6.001/abelson-
sussma...](http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-
lectures/)

They'll take you about 20 hours to go through, and as far as I am concerned,
are the best introduction to Computer Science you can get in that short a
time-frame.

------
buro9
Programming Pearls by Jon Bentley ( <http://www.cs.bell-
labs.com/cm/cs/pearls/> ) is a pretty easy read and introduces the reader to
algorithms quite nicely. There's a few important takeaways from it in how to
approach problems, and it's almost universally applicable (even though almost
everyone reels at being presented with Visual Basic in the example code).

------
arethuza
I'm probably showing my age, but to me the all time classics are:

<http://en.wikipedia.org/wiki/The_Mythical_Man-Month>

[http://en.wikipedia.org/wiki/The_C_Programming_Language_%28b...](http://en.wikipedia.org/wiki/The_C_Programming_Language_%28book%29)

~~~
oscardelben
I've read the mythical man month already. I've not yet read the C programming
language though.

~~~
DrJokepu
The sooner you learn C the better. It (along with assembly) really helps to
develop an understanding of how computers really work on a low level, which
will be important later when you will try to write efficient code in high
level or functional programming languages.

It's _always_ important to understand what's going on under the hood, even if
you don't need to open it.

------
auxbuss
Fowler's, Working Effectively With Legacy Code.

It'll teach you how to write maintainable code.

~~~
againanewacount
Don't go down this road. Do you want to be knee-deep in legacy code? Better go
out and build your own stuff. Forget about the TAOCP, it really is overrated.
Cormen is more recent and to the point. But don't read it cover to cover, but
consult it when you need it. Furthermore, read the Dragon book (first one is
enough) on compiler construction. Finally, learn to program in Standard ML,
for example via the book by Larry Paulson (ML for the working programmer).
That should be enough for the basic theory. If you got the above stuff under
your belt, then this will take you pretty far. For the rest, rely on your mind
and logic and feeling for elegance.

------
hotmind
I've never read a book that made programming as simple as "Absolute Beginner's
Guide to C".

Although this may not be down your alley, it's perfect for anyone new to
programming in general.

