views:

445

answers:

9

I am using only C for 5 years. So I am sure that I know C grammar, but I have no idea how to advance programming skills.

There are many books for modern languages (such as C++, Java) to study programming skills like the refactoring or pattern, software architecture. But no book is written with C language. The book author say that his/her book is not language-dependent, but I don't think so.

How can I advance my programming skills? I have to study modern language and read the books? Are there books about software design or programming skill written with C?

+2  A: 

Try some ACM programming contest problems using C (acm.uva.es) . Try to code data structures and aim for maximum efficiency - meaning least use of resources to accomplish the objective.

Stellios
+5  A: 

I don't believe anybody who only knows one programming language (whatever language that is) should be able call themselves a much of a programmer. You should try to become at least familiar with as many languages as possible (you can then "specialise" in one or two if you like) but to limit yourself to just one is doing yourself a disservice, IMO.

So go out and learn Java, C#, Lisp, Haskell, Python, Perl, Lua, SQL, Javascript... the list of possibilities is endless, really.

Dean Harding
Someone who only paints is not an artist?
JTA
Of course not, but someone who only paints in *red* is not an artist.
Dean Harding
@codeka: I'm not so sure that's true these days. A lot of stuff passes as art.
dreamlax
@dreamlax: heh, that's quite possible...
Dean Harding
Suggestions: can call themselves a programmer -> can call themselves a **great** programmer. Or expert on software.
Brian R. Bondy
@Brian: OK, I changed the wording a bit, since I can see it might be a bit offensive to people who *do* only know one language :)
Dean Harding
+1  A: 

It seems that your goal is:

How can I advance my programming skills?

Yet you are asking only for something very specific:

But no book is written with C language

In my opinion, the most important programming skills are language independent.

I would like to suggest that you open your mind to other possibilities other than C.

Why are you limiting yourself to only C? If the answer is because you spent 5 years already into it, let me make you feel better by saying those are not wasted years.

Are there books about software design or programming skill written with C?

Certainly there are.


I would highly suggest though that you ask yourself where you want to be as a software developer in a few years, then post a new question asking how you can get there describing exactly what there is. Depending on what exactly you want, we can help guide you on the right track.

Also C++ and Java are not considered the most modern languages these days either.

Brian R. Bondy
A: 

A really good book I just found (through Stack Overflow) on C is Expert C, which delves into real detail on the C language. That being said, if you're interested in learning general programming techniques (rather than just advanced C), I'd recommend learning another language, such as Python or Java, since it's much easier to grasp concepts such as algorithms, data structures, and design patterns in higher-level languages.

eman
A: 

If you want to advance while still staying close to c probably try c++ and python or ruby.

That should give you some different angles on programming. Higher level languages provide data structures and algorithms so you don't have to worry implementing them like you would in c. That means you are able to focus on solving problems instead of wiring linked list or implementing sort.

There are many interesting books about programming, you have to look past 'programming language' book. Look around web for blogs about software development.

If you know what domain you want to focus on try to create your own application.

Btw 5 years is okay, you should be able to start from scratch and end up with fully functional software.

As others suggested try some online coding competition or look for example questions and try to implement them.

Since you are here check out http://www.joelonsoftware.com/

stefanB
A: 

first of all please go and read http://norvig.com/21-days.html article.

Upul
It's great. I very appreciate.
gurugio
A: 

I think you have to program some projects from your own idea, or you can take help from internet, which can enhance your programming level.

Arman
A: 

Even when you're working as a "hardware device and firmware developer", learning other languages and tools can be very useful. Reading about different build tools such as GNU Automake or CMake, automated unit testing and pragmatic programming will help you progress in and still be useful when you only use C.

Frank
A: 

One excellent book on "advanced" C programming is Peter van der Linden's Expert C Programming.

You even get an appendix with funny interview stories :)!

mgv