Is the C language outdated and obsolete?

Old, sure. Outdated, no. Obsolete, no.

The C language is a very very very (did I say very?) long way from being anywhere near outdated or obsolete. There is a huge demand for C programming in the world of operating systems, embedded systems, compilers, just-in-time compilers, interpreters, device drivers, etc.

Most of the Windows operating system is written in C. Virtually all of the Linux kernel is written in C. Most of OS X is written in C. Kernels for iOS, Android, and Windows Phone are written in C. Most of the code in database products is written in C. Custom in-house animation software is often written in C. A huge percentage of embedded system code is written in C. And there are plenty of applications that are at least partially written in C.

If you have a desktop, laptop, tablet, phone, car, microwave oven, smart TV, DVD player, DVR, cable box, digital watch, router, etc., you are surrounded by systems that are running code that was written in C.

In my consulting practice, I have seen no signs of a decline in demand for C programming. In my training practice, I have seen no evidence of a decline in demand for C training.

Why do we still use C for all these things, even 40+ years after it was initially implemented? C can generate very efficient code (both in terms of speed and machine code size). C is portable, if proper portability discipline is used. C is a small language, is relatively easy to write a compiler for, and has a short learning curve (yes, even with pointers and memory management). When a new CPU or microcontroller architecture becomes available, the first available compiler targeting that architecture is nearly always a C compiler. There are many existing libraries available in C, for a wide variety of tasks. C interfaces easily with most other languages. C is standardized, and the standard continues to evolve. And there are a lot of people who really understand C.

Is C the answer to everything? No. Is it the best language for every possible programming task? No. But C is definitely here to stay. If you decide to learn C, you won’t be wasting your time. Really understanding C, even if you don’t end up using it on your next big project, will help you understand what’s actually going on in the system, and will help you appreciate and understand the abstractions that other languages bring to the table.