I’ve been working with a Javascript (+ TypeScript) + Java + SQL stack for the last 10 years.
For 2024 I’d like to learn a new programming language, just for fun. I don’t have any particular goals in mind, I just want to learn something new. If I can use it later professionally that’d be cool, but if not that’s okay too.
Requirements:
- Runs on linux
- Not interested in languages created by Google or Apple
- No “joke languages”, please
Thank you very much!
EDIT: I ended up ordering the paperback version of the Rust book. Maybe one day I’ll contribute to the Lemmy code base or something :P Thank you all for the replies!!!
Id suggest rust, gets you a step closer to the hardware and a bit of a different paradigm than Java while still feeling high level.
Rust is definitely something I’ve been keeping an eye on. The syntax looks a bit scary, to be honest, but looks very versatile.
I’ll second Rust, it’s so fresh and versatile! You can go from super low level stuff all the way to things like web frameworks with WebAssembly and whatnot.
The memory model is definitely a unique beast but I’ve found it gave me some insight on how it all actually works behind the scenes and I appreciate the strictly enforced correctness too.
I’m a Rust noob. At first it’s daunting and nothing will compile. But it’s getting easier and I feel like getting over that initial difficulty is mainly a matter of internalizing a few basic rules, after which it feels more natural. So from what I’ve seen so far, I wouldn’t rate Rust as especially difficult. It certainly feels easier than C++.
For a really challenging language I’d suggest Haskell. That one nearly broke my brain because thinking functionally is really very different if you’re used to more procedural languages. Rust, it seems, teaches you new discipline, but Haskell teaches you a different way of thinking.
Anyway, that’s how it feels as a relative noob in both.
Except that actually doing anything with hardware is “unsafe.”
Well, yeah, because doing things with hardware is just always unsafe in that sense, no matter if you’re implementing it in Rust or C or Assembly. As long as you know what you’re doing (and the hardware manufacturer did, too), it’s not actually unsafe.
Rust just decided to isolate the code parts where you need to be extra smart like that, whereas in C or Assembly, you might need to be extra smart throughout the entire code base.
Obviously, no sane C programmer would just randomly start scrubbing memory addresses in UI code, but it’s still just helpful to have the naughty code clearly indicated.
Hardware is inherently unsafe.