For several reasons, the temptation to abandon C and move to a more modern programming language is quite strong. First, entry-level engineers, who are often highly valued by tech companies, have practically no experience with C. University curricula today focus on teaching modern languages like Python or C++. Getting them up to speed and experienced can require significant investments of money and time, which few companies are willing to make.
Next, despite its popularity, the C programming language is outdated. C doesn’t support modern programming concepts such as classes and inheritance. If you compare the feature sets of modern languages like C++, Python, and Rust, C starts to look like a dinosaur! The last time new features were added to the C standard was in 2011! The 2017 standard version contained only technical corrections and clarifications, and the upcoming standard version, expected in 2023, probably won’t rock the boat either.
Abandoning C still sounds tempting, but there are a few problems with simply dropping C. First, C is a great language for low-level procedural applications that run close to the hardware. It’s compact and efficient. Second, senior engineers are entrenched in the language. They’re at a point where they’ve used it for decades and have practically no interest in learning and switching to a more modern language. Finally, so many legacy libraries and codebases use C that we can’t just abandon it. The cost of porting legacy code would be too high!
Looks like we’re in a bit of a bind! As an industry, we need to abandon C to use more modern languages and techniques, but the time and cost of making changes, along with the volume of legacy code we have to maintain, often get in the way of dropping C. The need for more modern technologies, while keeping the advantages we get from C, may push us away from using one dominant language and make us rely on several languages to get the job done.
Using other languages to support C may already be happening. For example, the table below shows the rankings of several languages in the TIOBE Index in 1. In the past, one or two languages dominated computer science. Today, all four leading languages have a rating of around 10%. You could say this points to the end of a single dominant language. Instead, developers will use several languages to achieve their goals.
Take a closer look inside the industry, and this is already happening. There are companies moving to C++ that still have numerous C libraries. Companies trying Rust but relying on their tried-and-true C libraries as part of the build, and vice versa. Unfortunately, or perhaps fortunately, depending on your point of view, this means C will continue to remain a dominant language for the foreseeable future.
Is it time for C to retire? It’s a simple but complicated question. You could say yes, but it depends on what you’re doing. You might not want to use C++ or another language with a 8-bit microcontroller. If you’re working with cutting-edge 32-bit microcontrollers, using machine learning, or developing connected devices, a language other than C will give you the extra tools you need to succeed.
The time and cost of switching languages may be too high. A subjective rule of thumb is: if it’s a new design, start with a modern language. If it’s a legacy design, use the legacy code and write new code in a modern language.









