C Programming Language Review

In the past 5 months I learned C (from textbook "C: A Modern Approach") and made a project in it to learn. Here goes my notes and opinion on the language


Not exclusive to C, but program design is hard. Often I'm refactoring entire source files for a new feature, and often I'm caught on a road end without knowing how best to approach a problem. It's what they say, programming is 90% creativity.

Often it leaves you with little to work out a bug, like it's just a Seg Fault and 'se vira'. The best things here are gdb and valgrind, and possibly strace as well but I didn't go or need to go that deep; with gdb you can look up variables, make breakpoints and get backtraces, very cool; with valgrind you can find memory errors like leaks, which makes me wonder what's the purpose of memory safe languages.

I always found the syntax very beautiful, easy to understand. I can understand code by just glazing at it which is not so true in other languages like Python. I think it being non-object-oriented helps into that.

Pointers: we all have been there. Pointers this pointers that. The reality is, although they may seem hard at first, you get the jist of it when working with them. But in the beggining they can be a pain in the ass, transitioning from textbook to the real life. AI chat can help you a lot to understand them. Same goes for memory allocation, the book I read barely delved into memory allocation and I had a hard time with them in the start - the code I originally wrote had bugs on top of bugs, but I eventually fixed them all. Oftentimes you run into allocation bugs that are hard to figure out.

A shit thing about termbox (and I think ncurses as well) is that it changes the terminal output method or something so valgrind or gdb output doesn't carriage return on newlines, only moves the cursor down, so it's kinda hard to read what they say.

It seems that there aren't libraries coverage like there is in modern languages like Python or Rust where you can just download and import them. For terminal control there is the default ncurses and there is termbox only. Most things you have to code everything on your own or find code in repos that does what you want.

The language itself is pretty small compared to Python. With Python there's zillions of features for rare use cases but in C? You can learn 90% of C in 1 month.Although that sentiment could be because I learned C with a textbook, instead of naturally like with Python It's very nice that I can open some random code and read it without not understanding stuff, certainly makes for the readability as well.

Makefiles, on the other hand, are very complicated, with a bunch of weird and rare features, and weird symbols, so they're very hard to read. It works very weirdly with the rules things. Of course, I didn't study Make.

Programming in C I was so efficient. It was easy and straightforward adding new features after I got the rhythm, although maybe that could be the program I was making was straightforward

Rating: 9/10 - I love this language because it makes coding actually fun. I had fun coding although there were the usual moments of grief when I started coding and didn't know much how to solve errors. Due to the language being so old I take a point from it because it doesn't have some functionalities newer languages have. Overall great language and I'm going to be coding in it from now on, or until a modern C replacement comes around (V Lang?)