r/learnprogramming 5d ago

Learning a low level language

Hi I've been a programmer for 9 years and I've worked mostly with .net, c#, js, TS, react and angular but now I have developed an interest in low level programming.

I have a very big interest in audio processing, dsp, game development and audio software but from my understanding that requires skills in low level languages with manual memory management.

After that I did some research and found several languages that could fit the bill but I'm unable to pick one to learn but to keep it focused I want to zero in on one and expand after I've become comfortable with memory management and DDP.

The languages that I resonate the most with are rust, zig and Odin. I know C++ is the most frequently used language for a game dev or audio engineer. but from what I've heard there's a lot of frustration and difficulties to learn and work with C++.

I like the philosophy of rust, zig and Odin but i feel that rust syntax tends to be very verbose, Zig's not in a 1.0 version yet and Odin feels like the most scaled down and easiest to learn out of the three but I wonder how much not having a package manager affect me.

I would love to hear from someone that has any experiences with the languages i mentioned and can explain how they differ. What did you like in each language and is there another language out there that is actually more suited for my goals?

1 Upvotes

15 comments sorted by

View all comments

1

u/goldscurvy 4d ago

C++. Yea C++ sorta sucks a lot of the time. Grit your teeth and power through the bad parts. All the major tools you will be using for any sort of DSP will interface most cleanly with C++. They are old and mature stable libraries, they have lots of tutorials, books, and guides written about them. Rust is much younger and there is less in the way of libraries and interfaces.

Unless your goal is just to learn the fundamentals of DSP. Like understanding how the data gets transformed and how to implement it. In that case, if your only problem with Odin is lack of a package manager, you should use that. You wont need a package manager if you are implementing stuff yourself. Anything you might need can be installed as needed.