Fog Creek Software
Discussion Board




Proficiency in C

How long until someone becomes proficient in C?

I know how to write software. For the past 5 years I worked in Perl and PHP during the madness days, I tortured myself with J2EE and I've done my fair shair of VB 6./SQL Server.

Now, I might be facing Good Ol' C on Unix, How long do you reckon it'll take me to become comfortable with it?

For starters I'm going through all the exercises on the K&R book.

Spike Jonze
Tuesday, May 25, 2004

2-3 projects.  Your first one will probably look like PHP in C syntax.  By the second you will think you understand pointers, but really don't.  Hopefully by the thirst you do understand pointers.

Snotnose
Tuesday, May 25, 2004

Oh, a couple of years, to becoma a wizard you need about 10 years.

MyNameIsSecret();
Tuesday, May 25, 2004

Ten years in C or programming in general?
http://www.norvig.com/21-days.html

RP
Tuesday, May 25, 2004

I just wrapped up a 9-week course and I can now cobble together some not-so basic programs, but it's obvious I will need to do 2-3 major, non-trivial projects before you can claim expertice or facility.

Sassy
Tuesday, May 25, 2004

So, my 5 years of expertise make me less of a programmer than you with your 9 week course?

Spike Jonze
Tuesday, May 25, 2004

Come on guys, make love, not war.

RP
Tuesday, May 25, 2004

uhhh, wha?  I'm not saying anything about you at all, really.

Sassy
Tuesday, May 25, 2004

You won't get "comfortable" with it, but you will become reasonably proficient with it the moment you grok pointers and memory management and string goofiness.  If you're relatively smart, figure on it taking a few weeks or so to get to that point.

It'll be primitive compared to what you're used to, and somewhat painful because of that.  Which means that once you leave C and return to a more modern language you will appreciate things like garbage collection and native string types.

Should be working
Tuesday, May 25, 2004

I think it took Dennis Ritchie about three or four weeks to become proficient, but then he was mostly writing the compiler at the time.

Don't confuse languages and their dialects for developing software.  Proficiency in software development is about understanding the problem domain and applying the right tools under the prevailing circumstances to get a reasonable and acceptable result.

That might take you a few days, or twenty years, depends on the individual, the support structures around them and the problem domains they work within.

There are no instantaneous answers.

Simon Lucy
Tuesday, May 25, 2004

What is Proficiency in C?  I can programming in C pretty well, but mostly network sockets, and some general topics.  If you ask me to do some GUI, I can do it in TK, but not any C-related library.  I don't know much about thread programming.  Does that make me less proficient than the next guy next to me who programs numeric processing? No, cause I can do network coding better than him.

Unix2M$
Tuesday, May 25, 2004

Do you have a mentor? I feel like I learn a lot faster when someone much experienced than me is here to teach me one on one.

Anonymouche
Tuesday, May 25, 2004

to be proficient in [insert language here] requires at least 5 to 10 years.  I don't think it matters which language you choose.  The all have issues.

Zekaric
Tuesday, May 25, 2004

A couple of good books you'll need, after K&R:

1.  Plum, Thomas: Reliable Data Structures in C.  This is one of the best resources for explaining some of the arcane stdlib approaches, and getting Reliable 'C' programs.  It refers to his earlier book, which you can safely ignore -- all the good stuff is in this one.

2.  Stevens: Advanced Programming in the Unix Environment. -- All the goodies about interfacing to Unix, with networking too.

AllanL5
Tuesday, May 25, 2004

While on the books subject: do read an excellent (IMHO) "Expert C Programming (Deep C Secrets)" by Peter Van der Linden.

If you grok pointers, you might get "comfortable" in a couple of month. You will unlikely become proficient until  you do it for a couple of years though. 

Employed Russian
Wednesday, May 26, 2004

strange, I come at this from a different angle completely.

When I think about programs, I think about their structure.  I only then think about their implementation.  I can generally solve the problem in any particular (non-functional lol) language even if I aren't too familiar with it.

Programming is about logic and structure, not about language implementation details.

Again, I tend to stick to fairly straightforward c and c++, even though I am familiar with the complex stuff (in those particular languages).  It helps everyone - including me - maintain the code.

I only need to understand complicated language 'features' when looking at other people's code.  And then I reckon mostly those 'features' are inefficient (both in grokking and execution).

i like i
Wednesday, May 26, 2004

You know you're talking to a C programmer when he calls it "non-functional" instead of "dysfunctional".

Wally
Thursday, May 27, 2004

*  Recent Topics

*  Fog Creek Home