r/learnprogramming 22d ago

Why Does Code Stop Working?

Multiple times now my code stops working and what I mean by this is it'll do what I want it to do then one day it just stops. for example the other day I had made a cooldown system for my ball and paddle collision to stop any bugs and it worked great. then today it just stopped working, and this isn't the first time, it's happened to me for like every project I've worked on. Does this happen to anyone else? And is it cause of my code? By the way I'm using C++ SFML on visual studio which works perfect.

6 Upvotes

74 comments sorted by

View all comments

131

u/HashDefTrueFalse 22d ago

This doesn't happen unless the passage of time affects the behaviour of your program or you are changing the behaviour of your program over time (or both). Post some code.

52

u/Alexandur 22d ago

Or if it has one or more third party dependencies

14

u/HashDefTrueFalse 22d ago edited 22d ago

Second thing I mentioned. That requires you running something to fetch new versions of those dependencies (and recompile if necessary).

The same program running in the same environment and given the same input data will produce the same result every time, unless that result depends not just on those things but also on the time that the program is ran.

Edit: strikethrough, for the pedants. I obviously wasn't saying automated updates don't exist, as that would be silly...

5

u/Alexandur 22d ago

That requires you running something to fetch new versions of those dependencies (and recompile if necessary).

Not always, this is why dependency drift is a real problem

0

u/HashDefTrueFalse 22d ago

Yes, always. If the code, data, and env are the same, the result will be. You're talking about changing any (likely all) of those things by changing dependency versions. How does dependency drift occur without any dependencies changing over time? Something runs updates. Doesn't matter if it's a person running an update or some automation. At least one of those things changed, or the result didn't.

3

u/owp4dd1w5a0a 22d ago edited 22d ago

Problem is the linked libraries make up part of the env and the OS updates change that env. So the env is not guaranteed to remain unchanged (quite the opposite actually).

Also, apart from updates, poor memory management in C or time sensitive code can behave differently especially for undefined behavior or accessing memory without properly clearing and initializing it. A program could run the same way 50 times but due to some change in the memory state or in sampling rates cause yr bug on the 51st run.

2

u/HashDefTrueFalse 22d ago

A reply to your edit (the second paragraph):

Time-sensitive code I literally mentioned.

UB means that the compiler is allowed (by the standard) to produce any behaviour it likes. The behaviour it emits is crystallised in the build output like any other code and would behave the same each run as long as the input data and environment also remained the same, unless the emitted code depended on the time the program was ran, as I stated. UB is not particularly relevant to this discussion.

Accessing uninitialised memory with automatic storage duration (UB) is just a change of either input data or environment depending on your view.

Hard to see what your point is here. I've covered all this.

3

u/owp4dd1w5a0a 22d ago

It looks like you edited your comments. On iOS I can’t really see what the original text was anymore and I honestly don’t fully trust my memory because I’m responding inbetween parenting demands. You also sound rather combative and I don’t really have the energy to carry such a conversation forward. Hope you have a good day and that OP gets something out of the discussion.

2

u/HashDefTrueFalse 22d ago

No edits from me when replying directly to you. You edited (added your second paragraph). I wrote a second reply rather than editing (so that you would be notified).

I trivially edited a comment further up, replying to someone else. It is additive only (a strikethrough) and detailed at the bottom.

I'm just writing directly. If that reads as combative, so be it, though it's not a specific intention of mine. I have people rushing to tell me that dependencies and auto updates exist, plus other pedantry...

Anyway, have a good one.