Transitioning from Python to C, I practiced pointers, malloc, and free based on the basic structure of a linked list to get used to the language. The problems this time weren't too difficult, so I was able to solve all of them. Maybe because of that, I actually became more interested in assembly language and internal structures. I thought it was important to dig into how code utilizes memory at the assembly level and to write code optimized for the CPU.
However, what I overlooked—and was advised on—is that since CPU performance is so good these days, writing highly optimized code is less important than writing code that is easy for others to read and collaborate on. I guess this is where the saying "Code is a book" comes from. I'll be doing a lot of projects in the future, and I should always keep in mind that I won't be working alone.
Of course, I hear companies these days just use AI and don't even look at a single line of code... I don't know. I'll probably use AI when coding in the future too, but I believe having fundamental skills is an absolute must. The fundamentals I believe in mean diving deep down to the operating system level and acquiring a certain level of domain knowledge in the field I want to pursue.
This AI team project involved implementing SQL in C. It was great because I could get a glimpse into the history of how DBMS came to be and how the file structure of an actual C project is organized. Besides this, I'm gradually learning how to analyze open-source code. I want to be able to read through massive codebases fluently as soon as possible..
During a short break, I studied Kotlin for a bit. Thanks to the knowledge I've built up so far, I was able to adapt to a new language quickly, making me feel like my efforts haven't been in vain. Having learned Python and C, which are at opposite ends of the spectrum in terms of convenience, I feel like the gap in between is somewhat being filled.