Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p><strong>C is simple to learn, difficult to master. as a Java programmer the barrier will be memory and structure</strong> .. and undoing the damage Java <em>may have</em> done to the algorithm producing portions of your brain ;)</p> <p>I would recommend getting familiar with the GCC toolchain on your Linux box, through tutorials on the Internet. Then read <a href="http://en.wikipedia.org/wiki/The_C_Programming_Language_(book)" rel="noreferrer">The C Programming Language</a>, and a copy of <a href="http://ladweb.net/" rel="noreferrer">Linux Application Development</a> doesn't hurt. Also, on Linux <a href="http://library.gnome.org/devel/glib/" rel="noreferrer">glib</a> will save you from reinventing the wheel ... but at least try to create your own linked-list, hashmap, graph and other API to learn. Pointer arithmetic, arrays and learning that elements such as structs are just named-offsets in a binary chunk are all important. Spend time with <code>malloc</code> and <code>free</code> and memcheck. With C, your tools and toolchain are very important and the IDE isn't necessarily your friend when learning.</p> <p>I would pick C over C++ as C is a good foundation to get used to the memory management and pointer usage of C.</p> <p>The best thing you can do is <em>apply</em> what you learn to a real project. But be prepared to bash your head against the wall allot in <a href="http://valgrind.org/" rel="noreferrer">Valgrind</a> and <a href="http://www.gnu.org/software/gdb/" rel="noreferrer">GDB</a>. I have been programming C for years, and I am still no C monk.</p> <p>I do agree that C is a great language, it shows up a bad programmer. But remember:</p> <blockquote> <p>Any sufficiently complicated C program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.</p> </blockquote> <p>The moral of which is learn other languages too, rather than just C-derived ones! Consider some Lisp dialect, Erlang (which is cool at the moment), Haskell, etc. They will expand your horizons from the 2x2 cell of Java. Consider looking at <a href="http://mitpress.mit.edu/sicp/" rel="noreferrer">SICP</a> too.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload