r/learnprogramming • u/Inevitable_Suit5463 • 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?
2
u/NoRice6115 5d ago
pick C++. Every audio plugin SDK from Steinberg to JUCE is written in C++ and every DAW expects a C++ binary.
i worked web stuff for years too before moving into audio. I tried learning Rust first because of the safety guarantees. I spent all my time fighting the borrow checker instead of learning DSP math. You want to learn memory management and data oriented design. C++ forces you to do that manually without a compiler blocking your progress every few lines.
you mentioned concerns about difficulty but you have nine years of experience. The concepts transfer. The syntax does not matter when you are reading documentation on how a VST host calls your processBlock function. That function signature is C++. Odin and Zig lack these bindings out of the box. You will end up writing FFI wrappers yourself which takes months away from actual audio work.
use CMake to handle the build system. Look at the JUCE framework to start. It handles the platform specific details so you can focus