this post was submitted on 05 Aug 2024
940 points (97.5% liked)

Programmer Humor

19171 readers
1402 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
940
Evolution of C (programming.dev)
submitted 1 month ago* (last edited 1 month ago) by JPDev@programming.dev to c/programmer_humor@programming.dev
 
you are viewing a single comment's thread
view the rest of the comments
[–] RacoonVegetable@reddthat.com 87 points 1 month ago (3 children)
[–] ssm@lemmy.sdf.org 76 points 1 month ago (1 children)
[–] CanadaPlus@lemmy.sdf.org 14 points 1 month ago (1 children)
[–] ZILtoid1991@lemmy.world 8 points 1 month ago (2 children)

Issue is, Rust is not a drop-in replacement for C. The memory safety features are just one part, and since Rust is also a "weakly" functional language, thus its prefered to write such code with it.

[–] sukhmel@programming.dev 7 points 1 month ago (2 children)

Anything that is drop-in replacement for C (or C++ for that matter) is going to be awful because of the same compatibility burden, imo

[–] ZILtoid1991@lemmy.world 2 points 1 month ago

D is a mostly drop-in replacement (type renaming and such needed though), and it doesn't have that issue. D even has a mode called BetterC, where the D standard library and the garbage collector is left out.

[–] fermuch@lemmy.ml 1 points 1 month ago (2 children)
[–] ZILtoid1991@lemmy.world 3 points 1 month ago (1 children)

Oh boy, Zig is just uglier C++ with memory safety, and it still has those awful header files...

[–] CanadaPlus@lemmy.sdf.org 0 points 1 month ago (1 children)

IIRC it's garbage collected, so really it's just a version of Java.

[–] qaz@lemmy.world 2 points 1 month ago* (last edited 1 month ago) (1 children)
[–] CanadaPlus@lemmy.sdf.org 1 points 1 month ago* (last edited 1 month ago)

Apparently, I do not RC. I might have been thinking of Nim. A quick search indicates it's not memory-safe, though. It has a few helpful features to keep errors under control, but that's it.

[–] sukhmel@programming.dev 1 points 1 month ago

I was planning to check it out, but don't have any experience yet. I thought it is more of a replacement than drop-in replacement, I may have been wrong

[–] CanadaPlus@lemmy.sdf.org 3 points 1 month ago (2 children)

Yeah, it's not a small change. If there was a simpler way to make C memory-safe, it would have been done decades ago. It's just a different language too, which is fair given how much younger it is.

[–] ssm@lemmy.sdf.org 1 points 1 month ago* (last edited 1 month ago) (1 children)

If there was a simpler way to make C memory-safe, it would have been done decades ago.

We've had compile time sanitizers (-fsanitize=blah in gcc/clang) and runtime sanitizers (valgrind) for ages. I don't know how they stack up against rust's compile time sanitizers, but it's something.

[–] CanadaPlus@lemmy.sdf.org 1 points 1 month ago* (last edited 1 month ago)

About how an Excel spreadsheet with no formulas stacks up against a corporate accounting suite. Valgrind is how you find the bleeding once you inevitably introduce a memory bug. I don't understand all the fsanitize options, but I'm guessing they aren't a blanket solution, exactly because memory bugs have still been inevitable.

This thread is making me wonder how many people actually understand what Rust does. It rigorously prevents any form of memory error at all in normal code, and unsafe blocks, where needed, tend to be tiny. It makes C segmentation faults look just as goofy as JavaScript type errors.

[–] ZILtoid1991@lemmy.world 1 points 1 month ago (1 children)

D kind of did that (C pointers are still an option, alongside with the preferred dynamic arrays, which has the memory safety features), and once I've seen a C compiler fork that retroactively added D-style memory safety features, although they also very much insisted on the "const by default" mantra.

[–] CanadaPlus@lemmy.sdf.org 2 points 1 month ago

I think this is one of those things where there's no "kind of". Pointers were added for a reason, you're probably not going to implement a database very well without them. If you use them, at some scale you're inevitably going to have memory bugs. Technically, if you were to only use hardcoded printfs, C is memory safe too.

[–] 30p87 66 points 1 month ago (1 children)
[–] PlexSheep@infosec.pub 1 points 1 month ago (1 children)

It's not that bad, besides who cares with machines being as fast as they are nowadays?

[–] 30p87 3 points 1 month ago

I care, when I need to compile a lot of stuff multiple times on not-as-fast machines. I'll create a private repo powered by my workstation just for this. For C stuff I don't need to, because I can just use my workstations power via distcc.

[–] JackbyDev@programming.dev 5 points 1 month ago

I once saw an issue someone made for some database and said that they were learning Rust and if the database was rewritten in Rust then they could help contribute!