I think one of the important things to consider is that
choosing a language is much less important than just writing (good) code. By this, I mean that so long as you're writing code, and you're actively making an effort to make it good code, then the language doesn't matter. One caveate is if
that language allows you to be lazy about your code, then
maybe shop around if it doesn't keep you from writing your best code. I
personally feel like this applies to Perl, PHP and Javascript, but there are plenty of people out there who would do a good job of countering that opinion.
If you went for C#, C++, Java, Haskell, Rust, Typescript, Elixer, Kotlin, you won't be making any mistakes.
I do think that C is very important, regardless. It's is a great language for also learning the fundamentals underlying how a language interacts with the machine. Even if you end up writing your OS in C++ or Rust, have a solid C foundation goes a long way to informing you of important understandings that these langs can abstract away. I would say that C only becomes irrelevant if you only ever write browser front-end code. Even if you never do away with a garbage collector, a bit of experience with C gives you a phenomenal amount of contextual awareness of the underlying system.
Seahorse wrote:
kzinti wrote:
I'd say C# is probably what you want to look at next. But really it depends on what kind of software you want to build. If you want to do OS Dev, then C or C++ would be better.
I think games will be fun to make so that's one of C# (or Java) things. I do want to try OS Dev one of these days though. Would learning in a specific order really be necessary?
No order needed. The better question to go by, I think, would be "what are the different languages like in terms of experience writing them?".
C: Asks you to do just about everything, with special mention to memory management. Feels like you're working directly with the physical machine sometimes. Feels slow to make something
C++: much faster to build something, but a massively sprawling eco-system, and different conventions (eg. what defines 'modern' C++?).
Java, and I'm assuming C# as well: frees you up to not worry about memory management. Features get written faster. Feel tied to the IDE
You get the idea.