Is C still useful to learn today

Is it still worth learning the C programming language these days, or should you learn C ++ directly?

I deliberately do not vote and I will not give you an answer to your question. Just a few pointers:

You should get rid of the idea that C has something to do with C ++. Historically they are somehow connected with each other, but now there are so many and huge differences that C and C ++ should be viewed as completely independent and incompatible languages. The inventor of C ++ - Bjarne Stroustrupp - sees it that way along with many others from the C ++ standardization committee - such as Herb Sutter - by the way.

C ++ masters a large part of the C syntax, the reverse cannot necessarily be said. But above all, the concepts and approaches to programming are COMPLETELY different!

Even the smallest possible program (apart from a few spaces) looks like this in C:

... in C ++ however like this:

You cannot program in C as you can in C ++, and vice versa, the same applies. Nonetheless, many beginners do, and it is the best feature for recognizing beginner code.

Professionally and privately I like to develop in both languages, but never mix them and have a completely different style or an incompatible approach for both languages.

If I want to write something lean without dependencies with maximum portability, then I use C89. Even if the newer standards such as C99 and especially C11 offer wonderful features, it often makes sense to lend a hand for various reasons. But of course not always. With enough experience you simply know when to use what best.

If, on the other hand, I write something larger, in which modern concepts are to be implemented, and what should be as efficient as possible with the resources, then I use C ++ 17. Functionalities of C ++ 11 and C ++ 14 are also extremely important and correct, but with C ++ I don't want to develop any more without some C ++ 17 features.

As you can see, I use the oldest standard for C, but the latest for C ++. Over the years, this has emerged as the optimal approach for me. But here too, of course, the following applies again: You have to weigh up in each individual case whether C ++ 11 or C99 is perhaps more suitable. Of course, it always depends on the project.

In any case, you should think of C and C ++ as completely independent programming languages ​​that have absolutely nothing to do with each other. There will hardly be a task longer than 2 lines that can be solved identically in C and C ++. As I said, beginners still often do this because they don't know any better, but as an experienced developer you should bring enough knowledge with you to be able to know and use the differences.

C is much more manageable in scope than C ++, and C ++ is probably one of the most feature-rich languages ​​you can find. In addition, the standard library of C ++ is many times larger than the rather slim one of C.

That means, for beginners, C is probably easier at the beginning, since you will come into contact with basic cross-language concepts such as conditions, loops, and that sort of thing.

But if you learn C ++ afterwards, you have to completely rethink in some cases, especially with topics such as error handling, program flow, and much more.

But the order is ultimately up to you. :)