C is a good language to learn. It was designed to do a very different job from most modern languages and the key to understanding it is not to just understand the code, but how this relates to the hardware.
Fundamental C takes an approach that is close to the hardware, introducing addresses, pointers, and how things are represented using binary. An important idea is that everything is a bit pattern and what it means...