Is it worth for a C++ programmer to start learning C now

On the one hand, along with technology progress, modern devices with higher and more powerful equipment are being come out and it opens room for C++ and Qt and let them be used in embedded programming more than before.

On the other hand based on the TIOBE index, C is the most used language based on what has been heard. So still C++ may or may not be used instead of C in all cases.

Even thought the differences between the two languages are precious few items, is it yet worth for a C++ programmer to start learning C (for the purpose of embedded programming) now, please?




IMO there is no one correct answer for this question, there are too many variables.

For example, does your embedded system have an operating system?

Does your embedded system have a C++ compiler available?

Does your embedded system have very limited resources that could be problematic?

And finally does your company management limit the choices of languages, operating systems, etc?

Do you need to write any code in C? That is, you are employed or in some other way obligated to write some C code?

If yes, then you need to learn it (and in particular, how to think in it).

If not, then you're learning for the fun of it and the intellectual satisfaction, in which case sure, do it if it's fun.
Is it worth learning pure C? For the little that my opinion is worth, Yes.

I agree with the points made by jlb but my conclusion would be that you don't know for sure that you will not need it so you would likely be better off learning it now while you can take your time.
OK, if I want to learn C, whilst I'm a very good C++ programmer, I normally won't go into a way that is reading a thick book called supposedly "how to learn C"!
Is there any concise way (whether it's a tut or video series, or practically start coding in C) to learn it quickly, please?

Well if you are really a very good C++ programmer you should already have most of the basics down. Probably the biggest things you'll need to work on are the C string functions, C stdio functions, pointers, pointers and more pointers. Also dynamic memory allocation if applicable, but on embedded systems dynamic memory usually a last resort since it can be a source of crashes.

The following might be a good book for you..

Effective C: An Introduction to Professional C Programming
by Robert C. Seacord
https://nostarch.com/Effective_C
Even if you have no concrete objective in mind learning, and learning well, C wouldn't hurt. Having and demonstrating knowledge of the intricacies of C & C++ would entice a lot of prospective employers vs. a prospect who knows only one or the other.
Even thought the differences between the two languages are precious few items, is it yet worth for a C++ programmer to start learning C (for the purpose of embedded programming) now, please?

Separate from the reality of industrial use, my position is that C++ has largely met its original design goals. One of those goals was to improve upon C.

There is sufficient room (i.e., space and time budget) for C++ in nearly every case where C is an option. That's the truth, although things are often perceived differently by the C community. C++ separates nicely from its standard library.
Last edited on
are you seeing a lot of job opportunities where C is a 'good to have'? Most of what I see is IT and more IT, and cloud IT followed by C#. Its been a while since I saw someone asking specifically for C ...

A lot of embedded systems do speak it. If that is where you want to work, yes, its worth a bit of time. Many such systems speak one-off dialects due to their constraints, esp the very small systems.
Last edited on
I think even a pure C++ programmer would eventually need to learn a bit of C;
just enough to be able to interface with / use C APIs and C libraries.

Re. embedded programming and C++, Stroustrup gives a good overview in chapter 25 'Embedded Systems Programming' of his book 'Programming: Principles and Practice Using C++'
The main language issues addressed are resource management, memory management, pointer and array use, and bit manipulation
I think C basics are the foundation of c plus plus. There are a lot of things which C++ inherited from C.
Registered users can post here. Sign in or register to post.