<=====------======------==[ Learning C ]==------======------=====> First of all, apologies for the sheer length of my first post. They probably won't all be that long, it's just that ~ATH had a lot to explain to be able to say anything about it. I expect largely most of my posts here will be considerably less thought- out. In any case: C. C is a language I was somewhat afraid of for a long time, as I'm sure many people have been. For someone who learned programming via Java in high school (and had not done a lot since then), jumping right into C seemed like a lot to handle, what with manual memory allocation and The Stack and pointers and other things I didn't understand. What I also didn't understand is that C is actually incredibly simple, which makes it really nice to learn, in a sense. The language itself has very few features to remember and those that are there are very intuitive and logical to anyone who's programmed in popular languages, since those languages all inherited their features from C. What make C complicated when you're learning is when you want to copy a string and suddenly you find yourself reading up on the last half-century of discourse about strcpy vs strncpy vs strlcpy vs snprintf and why actually they all suck and you should probably just write your own wrapper around memcpy if you want to copy a string that bad. But I digress. C is nice because I can trace exactly what my code is doing on a machine level as I write it, which is great for simply learning to think about that when programming more often. It's also great for teaching me about the 50 million ways one can process strings unsafely and incorrectly, of which I'm sure I am on my way to doing them all. Writing a whole bunch of buggy code is my favorite thing about C so far, because each time I do I learn something. Usually the thing that I learn is that null-terminated strings are evil, but still. It's really fun to think through the most simple, basic way to solve a problem. I've been going through K.N. King's book on C as my primary resource in learning, and applying it through old Advent of Code puzzles and some messing around with a Raspberry Pi Pico (which has been an excellent playground for getting closer to the metal, so to speak). It's been a fun way to learn, although I definitely feel like I need a real project to work on to solidify things. Every time I think about this my brain jumps to writing a compiler but that may be slightly insane to attempt where I'm at. But then again, what better way to learn than by pushing through tasks beyond your skill level? I'm not sure I have anything particularly unique to say about this, to be honest. C is a cool language. It's a great learning experience. It's powered everything ever for decades. You can look at assembly, which really would be more interesting if I could read assembly (I do want to learn ARM assembly and/or 6502 assembly one of these days). I am definitely more interested in programming and computers than I used to be. I've found in general that the more I understand what's happening under the hood, I become more enchanted, not less. Computers aren't magic, and that's the exact reason why they rule. ruleofsix 2024/09/06 <=====------======------======------======------======------=====>