views:

187

answers:

6

What books and environments would you recommend for a person not new to programming but new to C?

+10  A: 

I recommend The C Programming Language on a Linux box with a basic text editor and gcc.

Andrew Hare
+1. Linux (or other UNIX-like systems) are great for working in C. The C calls to the system are quite simple (if a bit difficult to use sometimes, but that's partially because they're so simple), so it's easy to do real work.
Michael E
+1, though really any POSIX system.
Stephen Canon
+3  A: 

In reality, there's only one book that all C programmers must have on their shelf: The C Programming Language.

As far as environments, it doesn't matter. Standard ANSI C should be pretty much the same on all platforms. There will be differences if you use system calls and such, though. However, you'll just have to compile it for each one.

Thomas Owens
Apparently, this was downvoted. I'm curious as to why.
Thomas Owens
A: 

I agree with Thomas in addition I would recommend Practical C to supplement K&R as some parts have the tendency to be dense.

non sequitor
A: 

Almost certainly you'll be using a C++ compiler even if you start out with just plain C-language. This is a good thing, especially if you set the warning-level to High, because this will find e.g. your accidental type-mismatches because C++ compilers "mangle" the actual names generated by the assembly code to include type-information, which would otherwise drive you crazy with idiotic mistakes. Such type-matches are detected at link-time when the mangled-names don't match.

pngaz
+1  A: 

I concur with the others. K&R is pretty much it.

A bit off topic but... At the beginning, stay away from the complex integrated development environments like KDevelop or Eclipse. You'll spend more time figuring them out than you will learning C. Set yourself a small project and do what you have to do to make it work.

Or, get a life and leave the programming to those of us who have none. ;-)

Dr. Tim
If you already know an IDE, there's no reason not to learn one. And if you don't know an IDE, there's no time like the present to learn one - in the end, you'll be a more efficient developer.
Thomas Owens
A: 

The C Book Is a fine online book. I'd use GCC with any favorite editor (Vim,Emacs...) on Linux, and probably Visual C++ 2008 Express edition, or the full-price Visual Studio, on Windows.

Liran Orevi