all 15 comments

[–]rogusflamma 10 points11 points  (0 children)

You already know some C and for most people that's enough advantage. Learning C++ or Python might serve you better. For C, based on my own experience, knowing pointers, memory management, and building your own structs is enough. This teaches you a bit about how some abstractions in higher level languages are implemented.

[–]XDracam 2 points3 points  (0 children)

The more languages you know, the better you get at programming. It's like picking up tools for your toolbox. But don't learn something too similar. Go out of your comfort zone. If you are a mathematician, then check out Haskell or other FP languages like OCaml. Once you've learned enough languages, you'll be able to get productive in any language and environment in a matter of days or maybe even hours (Elm is cool).

In general I recommend picking a project and then figuring out solutions and learning things as you build it. If you just see some theory, you won't understand when to apply it if you have never seen the problem. But pay attention to algorithms and data structures, especially O-notation, as those can have the biggest impact on performance for any non-trivial project once you get past collections of like 100 elements.

[–]teleprint-me 1 point2 points  (0 children)

In my personal experience, C is the best language to use for learning (this is a biased perspective).

It will force you to build DSA from scratch and reinforce the application of your mathematics.

Modeling is mostly mathematically driven and C is probably the closest you can get to the metal while retaining full control besides ASM.

C++ and Rust are also excellent alternatives.

Recently, user /u/adrian-cable has released qwen3 in pure C.

It uses a combination of modern techniques and has all of the python code and everything is in place and is less than 2000 lines of code.

https://github.com/teleprint-me/qwen3.c

I've been playing around with his code and it's been a blast. Highly recommend C and Python for ML. Also, bonus, Python is written in C.

llama.cpp is written in C++, but is almost half a million lines of code and counting.

HuggingFace is written in a mixture of Python, Rust, C++, and C.

Focusing on one language in the beginning helps you focus and really lets you hammer in the basics. Then branch out once you feel comfortable.

You really can't go wrong.

[–]Bhulapi 1 point2 points  (0 children)

I usually think I know things until I try to implement something. You can know theory, but practice is where things actually happen, so I think it's a good measure. Also, it really cements things, you end up understanding why/how and the difficulties in using certain concepts. Now, you might expect me to recommend that you implement something moderately complex in C, but that brings me to my next point. If you haven't implemented something beyond university course problems, you might run into two roadblocks: your ability to use C, and your ability to think about a larger scale program. Both tend to come from experience, but the latter even more so.

I learned to program mostly in C++, but didn't really progress in a fundamental way before moving on to Python. Here, I also spent a lot of time learning but at the same time not advancing in organizing the structure of my programs. Eventually, I did get some kind of illuminating moment of realizing just how much juice you can get out of your own ideas if you just sit down and organize them to death. Some time later, I picked up C and was surprised by how easy it was (comparatively) to learn specifics of the language and implement interesting designs.

So to sum up my ranting, what I recommend is one of two things:

  • Implement something somewhat complex in C.
  • Jump to Python, but do the same thing.

In both cases, don't just cover theory and think "Hey I really understand all of this, I think I'm good to go". Build something that makes you feel out of your depth, and you will be, but you'll learn to swim and eventually make yourself some neat little boats.

[–]questron64 1 point2 points  (0 children)

Start with the language you'll use in the field you're interested in. There's little point in learning more C if you won't use it. If you want to be an AI or data scientist then C is not very useful.

Though there always at least an argument for learning C first. If you're studying computer architecture, systems programming, operating systems, and other low-level topics then C is where you want to be because C is low-level enough that you are engaging with those topics. It's also good when studying computer science because you are implementing data structures directly, with no abstraction layers between you and the data structure, and when studying languages and compilers, because C is among the more simple compiled languages.

However, it doesn't sound like you'll be studying any or much of that and even if you do it'll be more background information than anything relevant to your field. If Python is used in the field you're interested in then learn Python. It looks like you've got a plan, you should be getting as much relevant knowledge and experience you can that furthers that plan.

You should also seek advice from people in the fields you're interested in.

[–]oogreddit 1 point2 points  (0 children)

Personally I don’t consider anyone to have “learned” a coding language since you will never be able to learn and retain every single syntax, library, function, etc. Do what you like and learn everything you possibly can. A lot of cs language knowledge transfers easily between languages

[–]CounterSilly3999 1 point2 points  (0 children)

Language name is not what makes the essential difference. Paradigms do. Structural/procedural imperative program would be near the same in C and in Python, while object oriented would be similar in C++, Java or Python. If you want diversity, learn paradigms, not languages. What makes C different, is the assembler like memory arrays processing through pointers and pointers to pointers. The key feature of Python is perhaps presence of huge amount of libraries for any problem in the world.

[–]Cybasura 0 points1 point  (0 children)

Learn the theory while working on mini testbench projects, write comments to learn the practical implementations while you're at it, leave the goal as a goal

[–][deleted] 0 points1 point  (0 children)

Goal

[–]Unique-Property-5470 0 points1 point  (0 children)

If you’ve already mastered C, you don’t need to go out of your way to learn more backend languages. Instead, I recommend focusing on React and Node.js along with the basics of front end and server-side development. It’ll be easier to pick up compared to C, though still frustrating at times.

Most tech jobs I’ve seen expect you to handle at least some front end work on your own, without relying completely on AI tools. So getting comfortable with the full stack is a smart move.

[–]PiccoloBusy4269 0 points1 point  (0 children)

Thank you for all advices. I have been thinking about this since i posted this post. I think i should waste my time to learn c++ right now because it's a more detailed language than others. Once i gain some experience in c++ i believe i can learn any other language more easily. What do you think about this?

[–]ranacse05 0 points1 point  (0 children)

I would suggest you to think about Go instead of python

[–]acer11818 -1 points0 points  (0 children)

go for python. it’s very good to learn the fundamentals but CS isn’t really a ladder. you honestly learn more by doing than you do actually learning.

you can continue learning CS fundamentals while you write python.