this post was submitted on 26 Feb 2024
267 points (96.5% liked)

Programming

17688 readers
136 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
 

On the one side I really like c and c++ because they’re fun and have great performance; they don’t feel like your fighting the language and let me feel sort of creative in the way I do things(compared with something like Rust or Swift).

On the other hand, when weighing one’s feelings against the common good, I guess it’s not really a contest. Plus I suspect a lot of my annoyance with languages like rust stems from not being as familiar with the paradigm. What do you all think?

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 20 points 10 months ago (4 children)

What memory-safe systems programming languages are out there, besides Rust?

[–] [email protected] 11 points 10 months ago (2 children)
[–] arendjr 12 points 10 months ago

Zig is better than C, but still a far stretch from the memory safety of Rust: https://www.scattered-thoughts.net/writing/how-safe-is-zig/

[–] [email protected] 6 points 10 months ago
[–] [email protected] 9 points 10 months ago (1 children)
[–] [email protected] 15 points 10 months ago (2 children)

I appreciate your answer, but I mentioned systems programming, because I was more interested in languages that do not rely on a garbage collector.

[–] BatmanAoD 26 points 10 months ago (1 children)

To play devil's advocate, most systems programming can be done even with a garbage collector. Midori was a project to build an operating system on a variant of C#, and although the garbage collector did impose technical difficulties, it wasn't a dealbreaker. Go isn't usable everywhere Rust is, but it can in fact be used for many things that previously would have been considered "systems" niches (which is part of why there was a somewhat prevalent misconception in the early days of Rust that they were similar languages). Prominent D developers have defended D's garbage collector (even though it's technically optional). Bjarne Stroustrup, the creator of C++, used to express great confidence that C++ would one day have a garbage collector.

...but you're right, Rust and its rise in popularity (and, conversely, the C++ community's resistance to adopt anything with garbage collection) have definitely narrowed the common definition of "systems programming" to exclude anything with a "thick" runtime.

[–] [email protected] 4 points 10 months ago

I enjoyed the facts spit above.

[–] [email protected] 5 points 10 months ago

Huh, I totally missed that my bad

[–] [email protected] 2 points 10 months ago (2 children)

Wasn't Go designed to be a memory safe systems programming language? I haven't really used it enough to see if it holds true, though.

[–] arendjr 1 points 10 months ago

Go is almost memory safe, but it does suffer from an issue with its thick pointers (type + address) that can cause race conditions to misrepresent the type of a data structure. This can lead to true segmentation faults and out of bound memory accesses, though it will probably be quite difficult (but not impossible) to exploit them.

[–] [email protected] 0 points 10 months ago (1 children)

I’m very flaky here, as rust is the big one, but I think zig and/or nim might be

[–] arendjr 3 points 10 months ago

Zig is better than C, but still a far stretch from memory safe: https://www.scattered-thoughts.net/writing/how-safe-is-zig/ I think Nim is better because it uses a garbage collector and doesn’t have any pointer arithmetic, but I couldn’t find as much on the topic.