C programming and relevancy
The C language is likely to remain with us for the foreseeable future. Here are a few interesting points about the C language that I was able to find while reading some posts on the topic. Links to original posts included.
Another useful advantage of the C language:
C vs. Assembly
In theory, I am a proponent of assembly language. In reality, I have reached a point in my life at which assembly language is a threat to both my financial security and my sanity. Writing firmware in assembly is slow and error-prone, and maintaining an adequate level of organization in long, complex programs is hopelessly difficult.
However, I will certainly insist that you cannot really understand high-level languages if you don’t understand assembly. If you’ve never had the opportunity to gain some solid experience with assembly language, you should at least familiarize yourself with some of the basic concepts before you dive into C. The articles listed above in the Supporting Information section are a good place to start.
It is important for C programmers to become familiar with other areas of knowledge.
The embedded software education gap
At the same time that C becomes increasingly important to the world, fewer learn how to use that language in school. This is part of a larger “education gap” affecting all organizations that make embedded systems. American institutions of higher learning largely fail to teach the practical skills necessary to design and implement reliable embedded software. From the importance of C's volatile keyword to reentrancy to task prioritization within real-time operating systems to state machine implementation, the trustworthy development processes and firmware architectures for embedded software must be learned on the job.
C programming is likely to remain prevalent in the production of embedded systems:
Solutions needed
If you accept from the evidence I've presented here that C shall remain important for the foreseeable future and that embedded software is of ever-increasing importance, then you'll begin to see trouble brewing. Although they are smart and talented computer scientists, my younger friends don't know how to competently program in C. And they don't care to learn.But someone must write the world's ever-increasing quantity of embedded software. New languages could help, but will never be retrofitted onto all the decades-old CPU architectures we'll continue to use for decades to come. As turnover is inevitable, our field needs to attract a younger generation of C programmers.