Why C Programming Is Still Worth Learning

Joel Lee 18-09-2017

In 2016, C was the 9th most active language on GitHub with 202k pull requests in the year. Compare that to the top three languages: JavaScript with 1,604k pull requests, Java with 763k pull requests, and Python with 744 pull requests. Ruby, PHP, C++, and CSS also beat C.


At first glance, it may seem like C has been left in the dust by newer, fresher, more exciting languages — C is 45 years old, after all — but GitHub isn’t exactly the most accurate picture What Is Git & Why You Should Use Version Control If You’re a Developer As web developers, a lot of the time we tend to work on local development sites then just upload everything when we’re done. This is fine when it’s just you and the changes are small,... Read More of the software industry. GitHub has a huge bias toward open source and trendiness.

C is not a dead language. In fact, IEEE Spectrum magazine ranked it as the No. 2 top language in 2017 ahead of Java, C#, and JavaScript. If you were to learn C this year, it would not be a waste of your time or energy. Here are five reasons why.

1. Deeper Understanding of Computers

You might have heard that C is a “lower-level language.” In the context of programming, the “level” is a description of how close you are to the computer’s native instruction set. The lower the level, the closer you are to writing machine code. The higher the level, the more abstraction is done by the language to take you away from writing machine code.

C is a lower-level language with some abstraction. You can write code that’s fairly close to the hardware and directly manipulate memory, whereas in a higher-level language like Java, the language itself handles memory through a garbage collector.

Why C Programming Is Still Worth Learning c programming example code
Image Credit: Casimiro PT via Shutterstock


While this is part of what makes C difficult to learn, it’s also why C programmers tend to be more in tune with how computers work. In order to write good C code, you have to think like a computer thinks: memory management, input/output streams, byte order, etc.

Lower level languages than C do exist (e.g. Assembly), but C is about as low level as you’ll want to go. It retains most of the power and control of lower-level languages, but is abstracted just enough for human-readable code that won’t make you tear your eyeballs out.

2. Pick Up Other Languages Easier

Some programmers like to say that “once you know one programming language, you pretty much know them all.” Though an encouraging sentiment, it’s not quite true — unless you learn C.

The thing is, moving from one language to another is smoothest when you move up in abstraction. Going from a lower-level language like C to a higher-level language like Python is rather easy because Python holds your hand more. But going from Python to C? Not so easy.


Why C Programming Is Still Worth Learning c programming more languages
Image Credit: Sashkin via Shutterstock

Or consider another example. C# is a popular first language for newbies today, especially for those who want to get into game development (because the beloved Unity engine uses C# 5 Free Game Development Software Tools to Make Your Own Games Free game development software is a great way to start video game making. We've compiled the best game software on the market. Read More ). But even though the C# language is highly abstracted and easier to use, newbies often get confused because they don’t understand what’s being abstracted.

By learning C, you’re essentially learning the foundations of modern programming. If you can really understand C, you’ll be able to pick up any other language because nearly every modern language is higher-level than C.

3. Better Appreciation of Other Languages

The low-levelness of C comes at a cost: complexity and tedium.


Think of it like making a ham sandwich. In a higher-level language, you might use a makeSandwich(“ham”) method that produces a ready-to-eat sandwich. In C, you’d have to write your own makeSandwich() function that gathers and prepares all the necessary ingredients, assembles the sandwich, then puts everything back.

Why C Programming Is Still Worth Learning c programming other languages
Image Credit: Zakharchuk via Shutterstock

On the one hand, being able to control every aspect of your sandwich is great. You might even be able to write a faster makeSandwich() that skips certain steps that you don’t care about. But sometimes you just want someone to make you a sandwich, and food made for you often tastes better than food you made yourself.

Most modern languages were born in response to shortcomings in another language: C++ in response to C, Java in response to C++, C# in response to Java, etc. By learning C, you can better understand why certain languages are designed the way they are and better appreciate the convenience offered by higher-level languages.


4. Unconventional Projects and Applications

Most modern programming languages are used for the same three things: business apps, web and mobile apps, and data analysis.

Higher-level languages are great for these because there’s no need to dive into the nitty-gritty details of computer architecture. Instead, rapid development cycles and robust hand-holding reign king — two of the main benefits to using a higher-level language.

Why C Programming Is Still Worth Learning c programming projects applications
Image Credit: Inspiring via Shutterstock

But if you want to develop software that directly interfaces with hardware, you’ll need a lower-level language — and C is the most used. Notable applications include operating systems, programming languages and compilers, embedded systems, game engines, etc.

For example, the Linux kernel is written in C and Assembly. Popular languages like Python, PHP, Perl, and Ruby are implemented in C. Did you know that even C is written in C? And since many embedded systems have strict resource limits, C is often the language of choice because it has very little overhead.

5. Improve Your Job Opportunities

There are two ways to guarantee a job in the software industry:

  1. Specialize in high-demand positions.
  2. Specialize in low-supply positions.

High-demand positions 10 Computer Programming Careers and Jobs That Are in High Demand Looking for a career in programming? Here are just some of the best paying coding jobs that you can apply for today. Read More involve trendy languages that can be used in multiple fields: JavaScript, Python, and Java are the best examples. Low-supply positions tend to involve archaic languages, legacy systems, and not-as-flashy projects. C is popular, but C programmers are dwindling.

Since most coding boot camps Coding Boot Camp for Beginners: Should You Take One? Comprehensive coding boot camps provide an entry into the coding space. Find out what they are, what you'll learn, and if it's the right fit for your programming journey! Read More and online training courses push newbie programmers toward high-demand languages, you could set yourself apart by learning C instead. This can open up many job opportunities that just aren’t available in higher-level languages.

Getting Started With C

C is not easy to learn, especially if it’s your first ever programming language. That’s why we recommend reading these three articles before diving in: questions to ask yourself before learning to code, how to learn programming without the stress, and tricks for mastering a new programming language 7 Useful Tricks for Mastering a New Programming Language It's okay to be overwhelmed when you are learning to code. You'll probably forget things as quickly as you learn them. These tips can help you to better retain all that new information. Read More .

But if you’re serious about learning C, definitely start with C Programming Language, 2nd Edition (often referred to as “K&R”). It’s basically the C programming bible. It’s pretty old, but everything in it still applies to C today. Once you’re through, you can read up on the changes that occurred in the C89, C99, and C11 language revisions.

If you can’t afford that book, then start with The C Book. It’s no longer in print, but still available online in HTML form in its entirety.

What do you think? Is C outdated and useless or should new programmers still learn it before they explore more modern languages? Share your thoughts with us below!

Affiliate Disclosure: By buying the products we recommend, you help keep the site alive. Read more.

Whatsapp Pinterest

Leave a Reply

Your email address will not be published. Required fields are marked *

  1. Jim Buchanan
    December 30, 2017 at 2:56 am

    I learned C easily back in the '80s. I think my advantage was that I knew assembly on several different platforms.

    After the K&R book, I read "Advanced Programming in the Unix environment" by w. Richard Stevens. I'd call it something more modest than Advanced. Perhaps, "Journeyman Programming in the Unix Environment." Well worth reading. If you are going to work in a Linux environment, try it. Not only does it teach the Unix environment, It's all in C, and teaches a lot of it. If you want something truly advanced, try "Expert C Programming: Deep C Secrets" by C.Peter van der Linden. A great book if you're ready for it.

  2. Geert
    September 27, 2017 at 9:24 am

    C is, was and will be the Mother of all Languages. Almost all "abstract" languages are deep down still C, something which many people forget or even don't know or are not aware of...
    I loved C, I love C and I will love C forever, even if I'm mainly writing in another language now...

  3. Jonathan
    September 19, 2017 at 4:14 pm

    Beginners absolutely should not start with C. It's just too low level for those who don't already have a sense of how to program. That said it's not dead yet, and is even required for a few dozen jobs globally so those who want to understand the levels below where they normally work or who want to have one of those rare jobs should absolutely learn C. Just don't expect it to be worth a plugged nickel 99% of the time.

    • Athena
      September 19, 2017 at 10:26 pm

      My school, 42, trains beginners to program in C, so it is definitely possible. That being said, we have a very high drop rate for the first month. Still, a lot of us had no experience and were able to learn a solid foundation.

      • Jonathan
        September 19, 2017 at 11:52 pm

        Two points. First, I said "should not", not "cannot" and that drop rate you mention is a significant reason why. Second, neither C nor C++ gives a person a significantly better foundation than Java, Python, or C#. What C does give you is a better understanding of how physical computers work, something that's value has been decreasing for years with the increasing popularity of all sorts of virtualization. And of course you can fight for one of the relatively few jobs that actually requires working in C, but most business needs don't require C.

  4. Joy Talukdar
    September 19, 2017 at 11:07 am

    The article is very true about its research in C. We newbies are in dillema that C or any other demanding language. But C is a sea of learning programming just like A,B,C before learning words and grammars.

  5. Jeetendra Dhall
    September 19, 2017 at 7:34 am

    Higher level languages provide one or more computational models that map closer to the problem at hand rather than the computer architecture. C++ provides object-oriented, Haskell provides declarative/functional, etc. While we do justice to problem modeling, knowing Computer Architecture is equally, if not more important. A C programmer will more naturally follow an explanation of JVM GC, Virtualization, Reference counting, etc. I am not saying that they will understand better, I am saying it will occur more naturally to them. With renewed focus on GPU/SIMD, knowing MIMD well by using C and having dealt with pointer math, registers, memory hierarchy, kernel objects, etc, the opportunity to think through how the SIMD computation happens can be more rewarding, though it can be counter argued for not requiring to know that level of detail. But then, engineers needed to understsand x86 optimization instructions for a deep learning C++ coded algorithm are in demand.

  6. Vikram Singh
    September 19, 2017 at 7:14 am

    Yes, today's seems most of people don't care about C language. People doesn't go the deep of C. They want to know the only basics. But I thought giving the more time in C by writing program and understand the flow of excution helps the beginner to learn high level language easily in less time. Now there are many language developed for different purpose but C is the mother of all computer languages. So I request all beginners who wish to learn programming language must start with C. At first it's seems complex but keep passions and calm you will pe the master of C.
    Last but not least C is one of the computer language will never dead so make hand with C language.

    • Bhalchandra Gholkar
      September 20, 2017 at 6:48 am

      Well said, Vikram