Reasons to learn CC has a significant amount of software written in it, including the Linux kernel. Learn C if you ever want to hack on the kernel, any UNIX-based operating system, device drivers, or other embedded / firmware / device-level software.
It has two major compilers (gcc and clang), with gcc being the oldest and most popular and clang being younger but built on a better technical foundation. This is in addition to a high volume of static and dynamic analysis tools. Learn C if you like languages with lots of tool support available.
C is very good for writing simple single-threaded programs that go fast with low memory overhead. Learn and use C when you want more explicit control over your program's memory usage and the operations it performs, e.g., for implementing searching and sorting algorithms.
Learn C if you ever want to do any kind of reverse engineering or executable binary analysis. It's likely the thing you'll be analyzing will have been written in C or something similar.
Learn C if you want to get a good software engineering job. There are lots of opportunities for both maintaining old C code and writing new C code.
Things that aren't reasons to learn CPlenty of people might disagree with me on these, but I feel like there's a lot of misconceptions about what C is good for and what it isn't good for. Here's some things that it's not so great for.
Don't learn C for writing performant programs. Earlier I mentioned that C is good for writing simple programs with low memory overhead and great single-threaded performance. Anything more complex than this starts to get nontrivial very fast. This is because C has generally poor and difficult to use concurrency tools (complicated multithreading, synchronization, and atomic primitives that take a lot of effort to use correctly).
Don't learn C for writing anything complex that also needs to be correct. Proving the correctness of a C program is more or less impossible without first writing it in a second, more formal language. C is also full of undefined behavior, which is pretty easy to avoid, but you have to know what to look out for.
Don't learn C if your real goal is to learn C++. Just learn C++ in that case. C and C++ are different languages with very different best practices.
Don't learn C to make it easier to learn other languages later. IMO
Post too long. Click here to view the full text.