How learning C programming made me appreciate my code much more

After completing an immersive Software Engineering bootcamp geared towards project building, an overall scope of frontend/backend frameworks and fundamental Object Oriented Programming, I decided to dive deeper into the crux of computer science and where it derives from.

Naturally the first topic that was introduced to me was C programming. Now, learning C after practicing languages such as JavaScript and Rails seemed nothing short of never ending.

C programming is often referred to as a structural programming language. This is because unlike nowaday languages, in order to go about and solve a problem, C divides the problem into smaller structural blocks — each of which handles a different responsibility. These responsibilities include decision making blocks (switch cases and if-else blocks), repetitive blocks (for loops, while loops, etc) and actual functions (that take up the procedure to solve the problem).

As you can expect, C programming comes with several benefits because as the coder you are able to understand every step within solving the problem and also how long computer science has come in order to make programming more accessible. This can be greatly helpful to a new programmer because it will not require the knowledge of complex design concepts to start a new program.

Learning c programming also enabled me to obtain a better understanding of machine level hardware and the impact of instances such as a memory leak. C compilers, manual memory allocation, direct connect to machine level hardware all make the C language an ideal choice to begin scripting applications.

Although the C language is segregated into several components results in a deeper understanding of what our code is usually doing ‘under the hood’, it can hinder efficacy if certain methods/steps are missed. It can become exceptionally hectic when data and methods cannot be bound together because concepts such as inheritance and polymorphism do not exist. Although possible, structured programming languages like C are not the language of choice (opposed to object oriented programming languages) when it comes to building complex projects involving gaming applications or even front end business applications that require more functionality for user experience then simpler applications.

All in all, learning C after building several projects using object oriented programming languages, felt like I was in control of all the low level details of an application just as much as the high level functionality. Another plus point, was the normal use of pointers and linked lists in C; giving me a chance to practice different data structures and realize they are most useful.

Bottom line: every line of code that is written is an opportunity to make a mistake. The time required to write and debug a program is almost exactly proportional to the number of lines of code. Writing in a detailed, verbose language like C will definitely increase the time in debugging but provide a solid understanding of fundamental computer science disciplines.