views:

245

answers:

6

I've only used higher-level languages (Perl, Python, Java) for projects at work and at school, and I've only tinkered with C++ and C enough to fix bugs or add some classes to a project.

I've read The C Programming Language and grok it, and I'm an avid Linux user. I want to immerse myself in C by working on something other than a toy project -- possibly by contributing to something. Suggestions?

+1  A: 

Get involved in an opensource project. Maybe something like Ubuntu. I am sure that they use some C somewhere although my experience with C is zero so you might want to disregard that previous statement. I also want to learn C at some point and that is how I would start.

uriDium
+1  A: 

You might want to take a look at memcached -- the source code is small enough to understand it, but at the same time they work with some pretty hard core pointer stuff.

If you want to develop something from scratch, why not try a distributed and redundant Key value database (ie non relational)? Those would certainly involve some pretty difficult C.

tomjen
A: 

Here is the best way:

  1. Code, Then after you done coding , go and Code. After that , write some code and then code again. Keep on coding until you get tired. Get some rest. Eat something ... Code.. code again , Go read some articles. Code , If its 5 AM , keep coding ... If its 5:10 AM , go rest , wake up , order pizza , drink beer , Now code... When pizza guy arrive , eat pizza, Code...

  2. Go back to 1

  3. When you get to the point that you master C, Hold your head in your hands and go to section 4.

4.And ask yourself the following question : "Why did I spent so much time learning a computer language Instead of going out , hang out with girls , develope my social skills , get some other hobbies , and expand my knowledge to other non-computers areas"

P.S

Someone told me once that it is better to start with section 4.

A: 

Another way would be to get some small programmable device and the development environment (cross-compiler, emulator) and write something to that device. A simple enough CPU with little memory and simple I/O and peripheral interfaces would let you start easily and also teach you stuff that you don't usually learn easily.

I know there are devices like this that don't cost very much, just come up with some interesting application for one such device and start coding! It's also way cooler to make a device like this to work than just get some stuff on the computer's screen.

Makis
A: 

One of the really nice things about using C is that it has a huge base (and has been in use a long while). There are all kinds of projects out there to contribute to because the best way to 'learn' is to write code, and what better way to go about that than contributing to the community?

I might also add that off the 'higher-level' languages you listed, Python has (iirc) a good deal written in C, so even higher-level languages often relate to C.

The bottom line is that there are so many diverse projects out there to contribute to, its all down to what your personal interests are: music? art? composition? high-energy particle physics? theorem-verification? chemistry? circuit modeling? you name it.

ajray
A: 

The best way to learn C is to check the answers of people who have asked exactly the same question on this site.

dreamlax