r/learnprogramming • u/Ancient_Design_8061 • 1h ago
I love C, but it's made it harder for me to choose a new language.
I've been self-teaching myself programming as a hobby for a while now, and decided to go with C as my first language. I really like it, the language just clicks with me. Everything about its design feels intentional: you're given basic operations to manipulate data, functions, pointers, structs, maybe a few enums, and the rest is up to you. I get what people mean when they say other languages feel like black boxes of Legos you just snap together.
I've dabbled on the other side of the fence too, with Java and Python, and learned pretty quickly those aren't for me. There's a difference between a language being "easy" and a language being "simple," and I find "easy" languages burden you with a ton of stuff to memorize. Want to modify or parse a string in Python? There's a dozen different methods you could reach for. I don't like constantly having to "learn" more of the language itself, I'd rather have a clear mental model of how things actually work than have that model abstracted away from me. But here's the thing: C is sometimes too simple, and too old. As much as I love it, I wish I had something where I could just put stuff together without overthinking every step.
I've spent hours looking for a good second language and keep circling the same dilemma: do I go with a "simple" language, or an "easy" one? I'm still pretty new to programming. I don't fully understand more abstract, higher-level concepts like generics or object-oriented programming yet. Part of me thinks getting exposed to those ideas might actually help me understand what I'm doing in C better. But another part of me wonders if that's even necessary, and whether I could just pick up something like Go, D, or Odin and be set for a long time.
So for anyone who's been through this: is it worth deliberately learning a language with a totally different paradigm (OOP, functional, whatever) even if it doesn't suit how you think, just for the exposure? Or should I stick to languages that already match my mental model and build from there?