Any recommeneded texts on programming

A good book saves the time of trying to sort through huge amounts of internet resources to separate the useful information from the useless and the harmful.
I for one am not smart enough to discover things like, say, red-black trees on my own from trial and error. Or even if I thought that I could, why spend years figuring out foundations that other people have already discovered and published?
gazto
That was a bad analogy.
I find it stupid that people ask for books when they have the Internet at the reach of their finger tips.


Not necessarily, I know someone who programs software for controlling a laser that is used to kill cancer. If there is a bug in the code, someone dies. To be able to write code of such quality and correctness, it helps to read some books to get some really intelligent folks' views on how to solve different problems in a fast and clean way that you might not come up with on your own. And the Internet doesn't contain as many well curated sources of knowledge, which is a good replacement for the best books.
The same could be said about books, some are bad and inadvisable.
The laser programmer mention is a "moving the goal post" fallacy. We were talking about programmers in general and all of a sudden you come up with highly critical programming jobs that do not represent the majority of programming jobs.
Beginners should be concerned with understanding the basic principles of computer programming and not killing cancer cells through it.

Edited by Carlos Gabriel Hasbun Comandari on
Here is Casey expressing the same idea I was suggesting:

http://youtu.be/uxbJo5DDpWY?t=48m34s

48:34 up to 50:30

Edited by Carlos Gabriel Hasbun Comandari on
To get this thread back on the topic of texts on programming, I'm currently reading through Alexander Stepanov's new release From Mathematics to Generic Programming, and I think that at least where I'm at in it so far, it's a gentler introduction to a number of ideas than his other book Elements of Programming, so, I'm giving it a tentative recommendation as a nice supplement alongside K&R or the giant C++ Primer by Lippman et al.
Not a specific recommendation but: http://hackershelf.com has links to a number of freely available texts and some relate to c/c++/game programming.
And I do like "The C Programming Language by Brian Kernighan and Dennis Ritchie.
That's the K&R which is mentioned a lot.
Oh thanks for pointing out hackershelf, that's where I found the online version of another thing worth recommending for programmers at more advanced levels, Michael Abrash's Graphics Programming Black Book.
https://github.com/jagregory/abrash-black-book
Here though is a cleaned up electronic version of the book I found somewhere else, in multiple formats.

Edited by Dustin P. W. Henry on Reason: clarity
Since we're going to be writing the renderer from scratch, the Graphics Gems series (especially volumes I and II) would be great. The Gems books are collections of useful, loosely-related graphics techniques, and they were current in the pre-GL / DirectX era when folks did all the cool stuff by hand. If you're remotely interested in graphics hacking, these are fun. You can find them in many Uni libraries, and used copies are still easily found online for very reasonable prices. I spent at most 30 USD obtaining all 5 volumes a few years back.
Well, this is pretty much all you'll ever need:

AutoIconicity
To get this thread back on the topic of texts on programming, I'm currently reading through Alexander Stepanov's new release From Mathematics to Generic Programming, and I think that at least where I'm at in it so far, it's a gentler introduction to a number of ideas than his other book Elements of Programming, so, I'm giving it a tentative recommendation as a nice supplement alongside K&R or the giant C++ Primer by Lippman et al.


Do you find the "From Mathematics to Generic Programming"-book valuable even if I own and have read and digested Elements of Programming? I feel tempted to buy it.
Learning to program is definitely a "learn by doing" activity just like mathematics is a "learn by doing" activity. In fact I would say that, unless you are blessed to have a skilled mentor at hand, the only way to learn either is to (1) learn the theory, (2) do it yourself, (3) see how others have done it and (4) repeat.

There are many problems with skipping (1). The most obvious is all the time you will waste rediscovering/reinventing things but that is not the only problem. I've had to clean up lots of bugs associated with undefined behavior (C & C++ has a scary amount, see Deep C (and C++), for example) when porting code bases - not fun.

To answer the original question, if you want a gentle approach "Head First C" is pretty good for what it covers. Also, "C: A Reference Manual (5th Edition)" is very good once you've gotten your feet wet.

The ideal way to get the most out of "Handmade Hero" would be to look at the outline for each day's talk and then try to implement those things yourself first (set a time limit, say 1 hour) and then see how Casey does it. Obviously that takes a lot of time but you get out what you put in.
Uberstedt

Do you find the "From Mathematics to Generic Programming"-book valuable even if I own and have read and digested Elements of Programming? I feel tempted to buy it.

I don't have my copy of Elements of Programming readily available to compare the content side by side, but I would say that if you know that material and have a good mathematical background, then the newer book probably doesn't have much to offer you.
I'm going to throw a really weird one out there, but I think it's 100% in the spirit of HH. I'd recommend finding a copy of Using 6502 Assembly Language by Randy Hyde. True, unless you plan to port HH to your aging Apple II, or NES, or C64, this book isn't exactly an obvious choice. But it hails from an era where the machine was still completely understandable, all the way down the the timing of each and every instruction. You could get to know all 64k memory locations personally ;). And don't let the assembly part keep you from giving it a look -- this machine was meant to be coded in assembly, unlike our pals x86 and x86_64.

It's written with a complete beginner in mind, and is really refreshing, even if you have some solid years of hacking under your belt. If we end up doing "let's see what the compiler did for us here" in the stream, being familiar with writing code in one full, simple ISA will probably help you follow along. If nothing else, if will help you mentally boil modern machines down to their ancestors, and that's useful.