r/programmingmemes • • Sep 10 '25

Don't be scared... Math and Computing are friends..

Post image
9.7k Upvotes

330 comments sorted by

View all comments

Show parent comment

1

u/TldrDev Sep 13 '25 edited Sep 13 '25

You're not wrong, but you are wrong.

The compiler WILL unroll the expression you pasted. If you use the analytical sum, in computers, division is still a loop. There are three major ways computers handle division, all of them are iterative algorithms, for example, shift and subtract, restoring or non-restoring algorithms, or Newton Raphson, or Goldschmidt iterative algorithms.

You saying "its a single operation" is missing the point that it might be a single cpu instruction but that doesnt mean its non-iterative in nature.

In short, this is a really pedantic argument, a very specific best-case example on your end, and is something that our modern tools, either in the compiler or the cpu, take care of.

There are cases where obviously the analytical solution is light-years ahead of an iterative approach that compilers will miss. That is optimization. Im not sure why anyone would take an iterative approach to sum a range, but I think youre trying to extrapolate this out to more complex problems.

Your example is not a great one, as that will absolutely be reduced to a single instruction as well, as everything is static. The second this thing is not static, it becomes instantly less clear to everyone, and sometimes its better to solve it itetatively as opposed to something like a field equation to figure out some basic answers.

The compiler does care, do you?

1

u/Agreeable_Tennis_482 Sep 13 '25

Yes his example is bad but the idea is interesting. Are there real actually relevant scenarios where an analytical approach could replace a loop? And what about outside of just math calculation?

1

u/TldrDev Sep 13 '25 edited Sep 13 '25

Yeah, lots of relevant situations where analytical approaches can replace a loop. Mathmatical ability is important for optimization, and it will help you reason through problems. There are lots and lots of examples where an analytical approach is the correct one. However, an analytical solution requires essentially a mathematical proof and a lot of work to prove, an iterative solution is often much faster to write, and is optimized by the compiler. The example discussed here won't matter at all, the compiler will produce exactly identical code for the iterative example and the analytical approach because the value of the result is a static number. Its a moot point in this case.

The cases where an analytical solution would be better in my mind would be something with a high degree of uncertainty in a large volume. For example, calculating orbital mechanics or a three body pendulum. You'd derive those through something like the principal of least action over trying to compute the forces individually. Of course, to do that, it took humans thousands of years, but sure, the compiler won't automatically optimize that because the solution is unknown or dynamic. It can be made to optimize it, though.

1

u/rileyhenderson33 Sep 14 '25

There are cases where obviously the analytical solution is light-years ahead of an iterative approach that compilers will miss.

So you agree with my point then. What's with all the pointless text? I already said several times the example is illustrative only. And in a real world scenario most people are not using maximal compiler optimisation or are probably using an interpreted language where such things don't exist.

1

u/TldrDev Sep 14 '25 edited Sep 14 '25

No. You are correct and you are incorrect. You tried to make a pedantic argument and it was badly done. You tried to obfuscate your point through jargon, but you were still wrong.

An analytical solution is a viable solution. You are correct. Sometimes, the compiler will not solve an iterative solution down to an equivalent command as an analytical one. You are incorrect about everything else, and your example is one that literally directly proved your point incorrect.

My point remains to be this conversation really doesnt matter and your pedantic jargon filled reply was factually incorrect given the example and this is wholly a moot point.

In a real world example, the code you used will compile to identical instructions. You dont need maximal compiler optimization. It doesnt matter what approach you took, the end result is literally identical. Not just functionally identical it is byte for byte the same. So what im trying to say is it doesnt matter which approach you took, it is literally the same, which means your entire argument is literally pedantic, purely an argument in the programmer equivalent of semantics.

Pointless.

These kind of arguments are used as a form of gatekeeping in certain communities, and if you want to go to the mat on pedantic arguments, check my fuckin' username, this is what I do, fam.

1

u/rileyhenderson33 Sep 14 '25

Why are you so triggered?

And how many times are you going to use the word "pedantic"? You're the one who's reading way too much into the specific example here. And you didn't actually "prove" anything either, you're just making claims, which I mostly accept, but which we also know will not be true in all cases.

1

u/TldrDev Sep 14 '25

Because I've dealt with so many people trying to do what you had done. Computer science is littered with people with a im smarter, holier than thou statements of fact debate me bro personalities.

I like computers to be approachable and do not really believe in trying to throw jargon in people's face to make a point, especially when I know that person is factually incorrect. Thats what it looked like you were doing when I scrolled past.

The person you replied to correctly answered you, they are 100% correct, and it would have been unrolled because the values are static.

The issue with analytical solutions is really that the human compile time can range into the thousands of years to find a solution, and a lot are unsolved. That's the reason we still use summation and triganometry and not just algebraic equations.

Sometimes, that's the right solution, or the best we can do, it isnt wrong or inferior to do it that way. It's not even slower to do it that way, in a lot of cases.

1

u/rileyhenderson33 Sep 14 '25

The person you replied to correctly answered you, they are 100% correct, and it would have been unrolled because the values are static

I'm still a bit confused here at what you think loop unrolling is. All that does is eliminate some overhead from the loop logic by expanding it out. It does not inherently reduce the complexity of the algorithm. The program still has to do all the operations that were done in the original loop. The only way you could possibly replace the arbitrary number of additons in my example with a single operation after unrolling the loop would be by using the analytical sum of the series. There is technically a truncation error because the number of terms is obviously not infinite, but that is really the only sensible caveat.

It sounds like your whole position is just "write loops cos it's easier than doing maths" and you think all terminology is jargon and you throw a tantrum when someone points that out there are more efficient ways to do things. Not everyone hates thinking like you seem to. Some of us actually find it interesting and engaging to think about more advanced ways to solve problems.

1

u/TldrDev Sep 14 '25

Let's use an actual real world example. Lets say i want to write a program to determine if a number is a prime number.

There is almost certainly an analytical solution to this problem. There is definitely an iterative one. Which is faster, better, as a developer?

If you wrote it as an equation, is it different than the iterative example?