For many years, I have tried to be as fluent as possible with the C programming language. Despite being able to code simple routines, as soon as I face a complex task, I fall back to Python.

However, this time, I am taking learning C seriously. In fact, it is not about learning C but also the latest good practices in the language.

Why learning C?

I know, I know…. Why learning C instead of a modern language like Zig, Go or Rust? From my point of view, these are the benefits of learning C:

  • Just basic types, iterations, and functions.
  • Its syntax is simple.
  • Basic types, basic control statements, and functions.
  • It is everywhere.
  • It forces you to understand the basics.

Let’s be honest. How many times have you coded in a C-like way in other programming languages? Yeah, right? C has everything you need.

Well, at least, everything you need to build other things you need.

Why learning C is hard?

Again, because of its simplicity. In fact, the language is so simple that:

  • It does not have a garbage collector
  • It does not have the paradigm of object-oriented programming
  • It does not have an official package manager

This can be frustrating for developers more experienced in other programming languages.

Resources for learning modern C

My journey starts with Modern C, by Jens Gustedt. The goal is to read and solve the challenges proposed in the book.

For the moment, that’s it. I do not want to estress with lots of materials.