Most of what you will need to know in the form of reference material
can be found freely available.
As far as learning concepts, you may want to search for free books or
online lecture courses. (MIT has several posted, as may khanacademy.)

Google is your friend--always start there and learn to be resourceful
on your own first. Many help forums, mailing lists, and even some irc
channels get annoyed when asked questions that are "simple" where
"simple" is defined as "the first result of any close search on google
will have the answer".

However, that being said, do search for help forums specific to your
tools, and irc channels (freenode.org has many) where people that are
experts in those tools hang out and are willing to answer even
beginner questions.

As for development environment, I suggest any of:

Eclipse
kdevelop
emacs
vim

For C, I highly recommend getting your own copy of the original
language standard book "The C Programming Language" by Kernigan and
Ritchie. It's actually quite small and a relatively quick read. You
can learn the changes since (such as from the C99 update) from FAQs
online (use google).

As for other requirements, you basically just need gcc, but may
benefit from also learning gdb. There are some decent front ends to
gdb such as the stand-alone DDD or the gui IDEs such as eclipse or
kdevelop that may make using it at first a bit easier.

You may find it useful to spend some time learning make (typical build
tool for C-based projects). I suggest reading the man/info pages. I
also suggest you google for the article "recursive make considered
harmful". That paper has some good pointers on ways to use make more
effectively as your projects grow in size.

Also, if you intend to get into larger projects, (and it's easier to
learn while they are small), I suggest learning an RCS--git is
becoming very popular, and subversion is already--probably good to
know the basics of both. Git provides some more powerful features--I
would recommend learning git first, after which subversion (svn) will
be trivial to learn if you encounter it.

As for learning to program well in C, simply learning the syntax will
not suffice. I recommend getting some books/finding online
references/or classes on:
- data structures
- algorithms
- compilers (grammar, parsing, and compilers)
These cover the big topics that will enable you to solve the majority
of programming problems you may encounter.

Coming from php and web development there may be many concepts in the
above topics that you may not have encountered yet which are essential
to programming efficient solutions in a lower language such as C. BTW,
once you've tackled them, you will have a good foundation to learn
many other languages besides, such as Perl, C#, .Net, Java, and many
others--so it's a great place to start.

/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to