This is why you should learn C

I do think there are advantages to learning C first over C++ or Java. When you work in languages like Java, C#, and even Python, you immediately start moving away from learning the fundamentals of a programming language and you start learning associated libraries and frameworks. But with C you get a few library calls, you stay focused on the semantics of the language longer, and C often forces you to think harder and deeper about what’s happening under the hood.


C is a middle-level language. When people talk about it you’ll hear phrases like “coding to the metal,” or “coding close to the wire.” C is the language of compilers, interpreters, editors, operating systems and embedded programming. When you learn to program in C you almost have to gain an understanding of how programs execute. You know what things like register, stack, heap, and memory mapped IO mean. You start to think how much better life would have been if you had been born with sixteen fingers.

Why Learn C?

There are an awful lot of programming languages available right now -- everything from the extremely high level (such as Visual Basic) to the low-level power of assembly, and a good variety of specialized options in between (PerlRuby, and Python are good choices for many tasks). Java has also become quite the hot programming language for some tasks, in part because of its large API and in part because the virtual machine provides some elements of security. (Garbage collection is another nice feature and can make programmers much more efficient.) 
Nevertheless, there are some good reasons to learn to program in C. First, age has its advantages: C has been around for 30 years, and there is a ton of source code available. This means there's a lot to learn from, and a lot to use. Moreover, many of the issues with the language have been clearly elucidated -- it's well understood, and you can find a lot of tutorials available. Plus, with C, you get lots of strong opinions mixed with insights that you can understand.

C is a great language for expressing common ideas in programming in a way that most people are comfortable with. Moreover, a lot of the principles used in C -- for instance, argc and argv for command line parameters, as well as loop constructs and variable types -- will show up in a lot of other languages you learn so you'll be able to talk to people even if they don't know C in a way that's common to both of you.

Third, C is reasonably close to the machine. When you're working with pointers, bytes, and individual bits, things like 
optimization techniques start to make a lot more sense. There's also utility in knowing exactly how something works underneath the hood -- this helps a great deal when something you're trying to do in a higher level language seems way slower than expected, or just doesn't work at all. You also tend to get a better picture of advanced topics like exactly how networking works. A higher level language will make it a little bit simpler, but it'll be harder to understand what's going on, and when things stop working, it's much better to know exactly what's going on so you can fix it. Additionally, if you like computer science as a discipline, or just like knowing how things work learning the details of the system is great fun.

In fact, a lot of fun programming is done in C -- for instance, system software and data managers such as 
Berkeley DB. If you want to be able to do more than writing a simple web app, C is a great language. If you want to write a great, fast game, C is again a great choice. You can write an entire OS in C. It'll be much harder to do so in Java, and nearly impossible in a scripting language. And the language, being succinct as C is, will probably make your fun program more elegant looking to boot.
C also happens to be demanding, fastidious, finicky and sometimes downright cryptic. You can easily write hard-to-read, difficult to maintain code in C. But, and this is a key point, you don’t have to. Learning to write maintainable code in C will require (and hopefully instill) coding discipline. In most languages fixing syntax errors can border on the trivial. For instance, Ada’s compiler error messages are so good it might as well have just fixed the code for you. Finding and correcting a missing or additional semicolon in C can sometimes be an epic undertaking. 

C is the mother of all languages and few reasons to consider learning C is that it makes your fundamentals very strong.

Apart from that, C offers a very flexible memory management. Memory is allocated statically, automatically, or dynamically in C programming with the help of malloc and calloc functions. This gives a choice and control to programmers as to when and where to allocate and deallocate memory.

C was designed to implement the Unix OS (Which also forms a base for Linux) and C sits close to the OS which makes it an efficient language because of its efficient system level resource management. Another excellent usage of C is that C programming language is not limited to but used widely in operating systems, language compilers, network drivers, language interpreters, and system utilities areas of development.

Agreed that there are many better programming languages out there now with the advent of technologies - however, C offers some very good features/advantages like: 
1. C is ubiquitous. Whatever the platform, C is probably available. 
2. C is portable. Write a piece of clean C, and it compiles with minimal modifications on other platforms - sometimes it even works out-of-the-box. 
3. Simple! C is really simple to learn and practically does not require any dependencies. A simple PC with the compiler and you are good to go to make programs. 
4. As mentioned earlier since C is widely used for writing drivers, compilers etc, C is versatile! 
5. FREE 
6. Compatible and Powerful.