I start my programming from Java, and learned PHP. Also, because of the work, I learned Objective-C. But most of the programmer learn from C. So, is this necessary for a programmer to learn C? If yes, how important it is? Please drop your comments, thanks.

marked as duplicate by Mark Trapp Oct 23 '11 at 10:35

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

1

Given you can program, learning a new programming language does not take years. It for sure can help you with something. Plus you never know what you miss until you really learn it!
–
Erica XuOct 23 '11 at 9:48

8 Answers
8

Necessary is probably not the correct word. However, the languages you are familiar with probably come from C (I think Java and PHP do, but I'm not positive) and C is a great language if you are interested in systems/low level programming. It would probably be beneficial.

I've been programming for a very long time (yes I remember a time before PC's) and have a lot of different languages that I have worked on.

Each language tends to borrow from the ones before and for that reason alone knowing your way around a few of the "root" languages can give you insight into why things are the way they are (uncluttered by more modern methods), in the same way as fixing a Model-T will tell you more about engines than fixing a Ferrari.

However, while my knowledge of assembly language gives me the odd clue as to why some things work the way the do (or more often why they don't work), would I learn assembly language now if I was starting out again? No, my time is more valuable than that.

And while C is more common than assembly language, the same applies. Unless you plan to work in C or have a lot of spare time, I would say your time would be better spent in more modern languages. The more of them you know, the more you will "see" the common roots, with the added benefit of making yourself more marketable in the current workplace.

I believe that is is very important to know at least one native compiled language for every programmer who writes desktop applications (and for system programmers of course). And most native APIs are in C++ or C.

If you know only languages such as Java or python you will do well most of time but as soon as you need some obscure not-often-used function (optimisation, some kind of hooks, integration with platform for better UX etc.) you will find yourself in a trap.

It's probably very rarely needed if you are writing web sites/services/servers/enterprise apps. The thing is I can't imagine myself writing only such (web) applications. It's probably only me but I find system programming, desktop apps, web apps and services and scripts all interesting and don't want to restrict myself to specific area.

The reason why "most of the programmer learn from C" is that it is taught in most colleges as the (one of the) first programming language(s), along with some LISP variant.

I was taught C as the first language in my degree, without LISP. So if you asked about my first language, I would have said C, but without any bearing on the kind or level of programming I have (which I think has a lot of scope for improvement).

C is the lingua franca of programming languages. A programmer not knowing C is much like a scientist not knowing english. Sooner or later you are going to run into a piece of C-code, in the form of an API, code sample, some legacy code, or having to write a kernel module for Linux.

No, not at all. Youll spend your time learning techniques that are totally redundant- like that terrible GOTO-cleanup. The thing is that even if you have to use a native language, you can still use C++, so there are some language features that, in the vast majority case, you'll simply never have to do without.