The Importance Of The C Programming Language in 2018

Since the 1970’s many programming languages have made their way to the fingertips of computer programmers. While these languages are good and helpful, they leave those who learn a high-level language first, with many gaps in their knowledge. So, for example, if you learn Javascript first, you will be lost when someone tells you about a language that implements type-casting. This is just a minor example, but they can increase ten-fold when your gaps leave you looking for another tool to implement something that C could do easily. So, while people stray away from learning C in the 21st century, learning C can increase your programming game tenfold, for the following reasons.

C doesn’t hold your hand

C is a language that comes with minimal built-in functions. While Python users are using the hash function, C users must implement this function on their own, with their own code, instead of using a different library. This makes C faster, and less CPU intensive, compared to Python which implements a whole library that’s 1000’s of lines of code for a simple hash function. C doesn’t hold your hand, and because of that, it makes you a better programmer because you must understand the function you are writing fully, in order for it to work.

When you learn C, you learn pretty much all other languages

C is so great, that many of the trendy languages used today are written on top of C. For example, Objective-C which is the language of choice for iOS development is an extension of C. PHP, the most popular language for backend web developers, is written in C. Some other’s written in C are Javascript, Go, and Python. So learning how to use C will make learning these other languages a breeze.

All modern operating systems are built on C

Mac, Windows, and Linux all utilize the C programming languages for the majority of its features. This is because it’s so light-weight yet powerful, that it allows for complex operations like generating graphics on the screen or encrypting large files. So if you are an avid Linux user, and want to make your own distribution, knowing C is a must.

C forces you to know. There is no “black box”

To use C correctly, you must know exactly what you’re making the computer do. Programming register addresses is totally normal for C users, where as other languages use functions that are sort of like a black box… “Something goes in, and something comes out” C users must know the architecture of a computer’s hardware to utilize it efficiently, while high-level languages figure out all that information for you… causing new developers to become ignorant and naive to what they are doing.

There are many reasons to learn C, not just the ones listed above. Most C programmers can run circles around those who just learn a simple high-level language. The best book to learn about C will be listed below.

 

You Might Also Like

11 Replies to “The Importance Of The C Programming Language in 2018”

  1. DO NOT LEARN C. it is an ancient language that was only designed to begin with. If you must work with something closer to the machine model, learn Rust. Seriously, I’ve been paid to do C for 30 years. There are far better choices for literally every purpose

  2. “So learning how to use C will make learning these other languages a breeze.”

    This claim is absurd. A languages implementation has nothing to do with learning the semantics of said language.

  3. Hmm, by this logic (taken to the extreme) everyone should learn how to make logic gates since that is what is actually doing the work in the hardware under the hood of the programming languages and operating systems… learning C will not mean you have learned PHP or Python or any other language, any more than learning latin will mean you have learned Italian, Spanish, French and Portuguese. There are (a few, but not a lot of) good reasons to learn to program in C, but this is not one of them!

  4. As a full time C dev I almost completely agree: to be a C dev means to use libraries. They might not be as uniform or accessible as in Python, but not using them is a terrible idea.

  5. I’m sure this is an exaggeration: I agree about C let you learn many things in a deeper level than interpreted languages like C# or scripts like JavaScript. But, as you ever say, C doesn’t provide hashing functions just like many other things that are simply missing. Also, if you develop an unmanaged program in C, you won’t be able to use DLLs. Instead, you’ll have to manually link libraries, and this is very bad when you use tens of libraries… And this will happen if you’re writing a good but large program! Furthermore, hashing functions is very important to implement, for example, an hashtable, which let you save very, very much time in comparison with binary search or whatever. When a developer create a language, it isn’t for simplifying your life and making programs heavier, but for optimizing things, instead! The missing of classes in C, makes you ending up with terrible ideas, such as the handles of Windows’ window, that makes the Windows’ UI very slow! The presence of many features in the core library of a higher-level language is not bad at all! It is necessary to avoid you to do all the work, and you shouldn’t do it all by yourself. People has worked hard along the time to make things running faster and removing bugs, and if you try to recreate all those things because you can’t reuse them in C, you’ll simply develop worth ones, because you have to minimize the time as you can on doing your job! You can’t stuck on reprogramming things without a very good reason, like you cannot avoid using classes, objects and so on, and this require many knowledge too! With the actual hardware, it doesn’t matter at all if you calculate the hash for an instance of object, like it doesn’t make sense to say that Python is slower because its core library is larger. The count of lines doesn’t influence the performances during the runtime. You said very strange things that aren’t true! Knowing C#, for example, requires you to know how CLR works, type-casting, P/Invoke for Windows’ kernel interoperability, assemblies loading, classes, overriding, attributes and many other things C doesn’t ever include! C isn’t better nor more complicated only because you should know how CPU pipeline is managed, how instructions are performed and some dumb concept like the difference between pointers and references. You cannot say that higher-level programmers have many gaps in their knowledge, because this means that either you don’t know high-level languages or you don’t know them as you could. I can guarantee you that programming on Java or C# is very more complicated that programming in C, and I know all these languages, so I’m not kidding you at all! You have to study something about programming on actual years and understand that humans aren’t perfect. This means that if you have to manually manage the heap memory object deletion, you’ll probably end up with memory leaks ever if you’re an experienced programmer. Just consider Adobe programs, which after some time they’re opened start consuming excessive RAM until the CPU works hard to ever still write a large amount of data in the memory without deleting. Garbage collector is done for optimizing things, and it’s very important to understand this! And anyway, it’s not simple to work around the problem when you’re encountering a Garbage collector bug which deletes an object you’re still using because its thread isn’t synchronized with all the threads that set a reference for that object in the meantime!
    I suggest you to think before acting.

  6. very nice article. all the useful information is there. but it’s a pity to see such an article contains spelling mistakes. some may argue this is not the point, but just as mastering the basics makes you a better programmer, so does mastering an international language such as English makes you a better journalist.
    there are editing tools that will check your text for you. this is the digital era, please use them.

  7. Why we should learn C?
    C is the base language of “Open Source & Free Softwares” and especially GNU/Linux system, The Developement and Power of these type of Softwares are mainly depend on “Free C-experts Comunity”; Many high level languages like Python, Ruby, … were first appeared from this “Comunity” and being powered by C, and the Intention behind most of these Works was/is “Just For Fun”, in a creative way that evolved people do works, not for survival or prestige or money but just for work itself and fun. Big and major companies like … regard GNU/Linux Comunity and it’s Free Software Philosophy as a dangerous Freedom for their satanic authorities in the digital world and for the beautiful Jails of … which are well designed both for programmers and people useing them. They wish to minimize this “Free C-experts Comunity” by pushing programmers to some other non-influential and non-free languages and keeping them in such a level which outside these Jails they would have no expert knowledge, They throw down behind them the ladder by which they rises, and keeps others down. So don’t listen to them saying C is old and ancient language, C is hard language to learn and program with, C is useless … and twaddles like these, that is false propaganda for building mis-understanding attitudes regarding C in programmers mind. Learn C to improve yourself and could help Free Software Comunity and finally to break the Jails. And learn It because “C” is the language of “Freedom & independence” in Digital World.

  8. Hello there,

    My name is Aly and I would like to know if you would have any interest to have your website here at mufasa.gq promoted as a resource on our blog alychidesign.com ?

    We are in the midst of updating our broken link resources to include current and up to date resources for our readers. Our resource links are manually approved allowing us to mark a link as a do-follow link as well
    .
    If you may be interested please in being included as a resource on our blog, please let me know.

    Thanks,
    Aly

Leave a Reply

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