Cold take.
Before I begin, a disclaimer: If anyone wants to learn anything, even if it’s inputting 0s and 1s directly into a machine, that’s perfectly fine with me. Kudos to anyone pursuing that path.
Learning assembly for the sake of understanding debugging is great, but remember—it’s essentially like learning to tinker with memory using a manual (AMD, ARM, etc.). If a new architecture emerges tomorrow, we’ll just have another manual to master.
For beginners, or anyone wanting to revisit memory management, start with C/C++. If you enjoy the challenge, move on to Zig, Rust, or whatever new languages might come along (Carbon, perhaps?).
If someone invents a new language tomorrow and your favorite one becomes obsolete, don’t worry—the effort you put in won’t go to waste. Chances are, you’ve gained a deeper understanding of your computer’s internals.
The truth is, learning any language—whether it’s touted for its superior features, job prospects, or some other appeal—is often influenced by selective information or echo chambers. Nobody knows for certain what the future holds. The next domino effect could be good, bad, ugly, or something else entirely.
Every language has its own unique strengths and legacies, but they also come with hierarchies, internal politics, egos, and decision paralysis.
Flame wars are entertaining to a degree, but fighting over something we don’t fully understand isn’t worth it.