I am learning C in 2020 – Beginner – why I am learning C programming in 2020

Better understanding of what goes on when coding

After learning the basics of javascript and working on beginner level projects, I soon realized that I never knew what was going on behind the scenes. For instance what happens when my JS file is compiled? What does it actually mean to compile or execute a file ? Although these terms do ring a couple of bells in my head, they were really never fully understood . Especially since I never bothered to know them in detail. Do you know what happens when you open a text file? I didn’t. What about when an email is sent? That I didn’t know as well. However, I still knew what library to use in order to open a file or send an email in Nodejs without understanding what went down under the covers.

Data types and memory

If you are coming from the world of javascript or python, you are most likely already acquainted with the data types called integers, strings, objects and arrays. But do you know that in the background they can be further broken down ? For example, integers can be floats, double, int or longs based on the length of the integer or/and the absence/presence of a decimal. Also did you know the type of number, whether int or float, influences the way it is stored in memory ? Even the storage areas for constant variables versus modifiable variables differ. Have you ever wondered how the computer keeps track of the elements in an array? These are questions that were somewhat answered during my exploration of the c language. I understand one could also learn of these in the basics of computer programming, however a non computer science degree holder, such as myself, does not have such privilege.

Better understanding of pointers

During the early days of my learning web development, I stumbled across the well acclaimed CS50 course by David Malan. Few clicks and views into it and I heard the word “pointers”. Although I never finished the course, that term was successfully imprinted in my brain but never clicked. So I looked for answers, C programming saved the day. I was able to understand the different types of pointers ,when and how to use pointers.

Learn how to build projects outside web development

To be honest, at the moment, when it comes to software development, the only softwares I can create from the ground up are web related softwares e.g. websites, webapps, chrome extensions etc. Since other projects such as networking or image processing related projects can be built with c I was further convinced to delve into it .