this post was submitted on 15 Aug 2024
690 points (98.5% liked)

Programmer Humor

19463 readers
376 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
 

Which will probably be never.

you are viewing a single comment's thread
view the rest of the comments
[–] nexussapphire@lemm.ee 2 points 2 months ago (2 children)

I forgot to assign a variable, now it crashes %5 of the time. It's wild how c doesn't default variables to null or something.

[–] Endmaker@ani.social 14 points 2 months ago* (last edited 2 months ago) (1 children)

default variables to null or something

That is such a bad idea. Better to have the compiler warn you about it like in Rust, or have the linter / IDE highlight it.

[–] nexussapphire@lemm.ee 1 points 2 months ago (1 children)

If it's going to compile without any warnings I'd rather the app crash rather than continue execution with rogue values as it does now.

There is so much room for things like corrupted files or undocumented behavior until it crashes. Without the compiler babysitting you it's a lot easier to find broken variables when they don't point to garbage.

[–] zaphod@sopuli.xyz 3 points 2 months ago (1 children)

Just enable all compiler warnings (and disable the ones you don't care about), a good C compiler can tell you about using unassigned variables.

[–] nexussapphire@lemm.ee 1 points 2 months ago* (last edited 2 months ago)

Still learning, they just covered compiler flags in cs. They didn't go into detail yet though.

Edit: I've used python for years and they have something equally dumb. You can have a function in a massive application that is broken and the moment it's called, the application crashes.

At any other point the application will just run as if nothing is wrong even though python evaluates everything at runtime. I'm sure they can't do much because the initial launch would be slow.

[–] CodeMonkey@programming.dev 9 points 2 months ago* (last edited 2 months ago) (2 children)

C does exactly what you tell it, no more. Why waste cycles setting a variable to a zero state when a correct program will set it to whatever initial state it expects? It is not user friendly, but it is performant.

[–] marcos@lemmy.world 7 points 2 months ago (1 children)

Except that this is wrong. C is free to do all kinds of things you didn't ask it to, and will often initialize your variables without you writing it.

[–] nexussapphire@lemm.ee 1 points 2 months ago (1 children)

Machine code would be a better example of what he's talking about imo. Not an expert or anything of course.

[–] marcos@lemmy.world 3 points 2 months ago (1 children)

Odds are that your computer doesn't export any language where it will do exactly as you say (amd64 machine code certainly won't execute exactly as written). And how much difference it makes varies from one language to another.

But the specific example from the OP, of uninitialized variables, is one of those cases where the C spec famously goes completely out of line and says your code can do whatever, run with a random value, fail, initialize it, format your hard drive, make a transaction on your bank account... whatever.

[–] Hack3900@lemy.lol 2 points 2 months ago

Coding in C but if I don't initialize a Variable the compiler formats my drive! (Not Clickbait)

[–] nexussapphire@lemm.ee 1 points 2 months ago

It wouldn't be that much processing compared to the rest of the app. It would lot more efficient than running an effectively infinite loop or arithmetic on an arbitrarily large number as a result of an unsigned variables.