Want to learn C? Get a grip on the basic programming concepts from scratch with Learn C from Scratch. Now for free!
If you’re involved in programming at all, you’ve heard of C.
Created by Dennis Ritchie at Bell Labs between 1969 and 1973, C has been around the block. It was the first general-purpose programming language to have an extensive user base and libraries.
C’s age does become apparent when applied to, say, front-end web development or building complex web apps. But there certainly is a niche that C will always occupy. (We’ll get into that in a bit.)
Even if you specialize in a different programming language, you most likely know a lot about C. It has been described as the “lingua franca” of programming languages.
Lingua franca: A language that is adopted as a common language between speakers whose native languages are different.
Python (a fully object-oriented high-level programming language) is based on C. Almost all abstract languages are still C, deep down. There’s a reason why C is often the first language you learn when you’re getting your CS degree.
C is considered a middle-level programming language. For most people, it’s the closest you’ll get to writing machine code (without actually writing machine code). You can program a system, then turn around and design an application that runs on that system. This sandwiches C in between assembly language, and more high-level languages like Java.
It’s easy to think C is old, outdated, or easily replaceable by some newer, trendier language. But now is actually the best time to get a good knowledge of C under your belt.
Look at the nearest gadget to you right now. It’s most likely powered by C. Your operating system is most certainly written — at least in part — in C. So are the drivers.
As the “Internet of Things” (IoT) continues to take prevalence in the world, a lot of it is powered by C. Firmware is inside everything nowadays. The portability of C means there are C compilers available for most hardware you can find.
It’s not just hardware either. Anything that handles huge amounts of data or requires optimal performance is usually written in C , due to its remarkably small runtime. The world’s most popular databases, like Oracle, MySQL, MS SQL Server, and PostgreSQL, are coded in C. Ditto for Apache and nginx servers.
Today’s blockbuster 3D movies are created with apps written in C (since they have to do many calculations per second, and need to run as fast as possible).
According to the TIOBE Index, C was showing a steady decline in popularity for years. In 2017 it shot up to #2, right behind Java, and has stayed there ever since.
One major reason why is because the automotive industry has latched onto C to build its self-driving car systems. All processing in autonomous vehicles is done in real-time and sometimes even in parallel architectures.
Since there’s so much C in the world, most newer languages have some way to interface with C. Its ABI is one of the easiest to interface with. Just the sheer amount of code out there written in C proves there will be a demand for C programmers for many years to come.
Replacing a system in C for an alternative would be much too costly, even for the most forward-thinking organizations. Theoretically, you could replace C with C++, or Go, or Rust, but there just isn’t enough of an incentive to switch.
Even if you’re a front-end developer, or more versed in object-oriented programming languages like Java/Python, there is still benefit to getting some C under your belts. Some reasons:
You want a deeper understanding of machines.
The lower the level of language you use, the closer you are to writing machine code. With C, you’re writing close to the hardware AND directly manipulating memory. Understanding how memory allocation works, or how C uses registers to hold data, can give you an extra edge in writing quality code (even if you don’t use C).
You’re a beginning programmer and want to pick up multiple languages more quickly.
Moving from one programming language to the next is a lot more smooth when you move up in abstraction. Highly abstracted languages are harder to learn if you don’t understand what’s being abstracted! With C, you learn the foundations of modern programming, and then work up from there.
You want more job opportunities in a growing field.
IoT is the future. You’ll continue to see an increasing demand for C programmers who can work with embedded technology. At the same time, there’s a low supply of C programmers right now. You don’t see a lot of boot camps or online courses for C, in the same way you do for Java, Python and the like. So, get in there on the ground floor.
Is C poised to enjoy a second wind? Or do you think differently? Comment below with any questions, comments, suggestions, etc.
Check out this free, accessible course that will teach you C from scratch with hands-on practice and real-world problems. No subscription fees, no stress, no hassle. Learn C from Scratch