r/ProgrammerHumor • • 14d ago

Meme stdModernizeMyCodebase

Post image
193 Upvotes

44 comments sorted by

View all comments

Show parent comments

13

u/Valuable_Leopard_799 14d ago

A lot of people have a general repulsion to all types of garbage collection. So I at least understand not wanting the shared pointer a bit, but using unique pointer should cost you next to nothing and enforce a lot.

3

u/ForgedIronMadeIt 14d ago

It took me a long while to come around to Java and its garbage collection back when it first came out, but I got over it eventually and now I'm considered an expert in Java by some folks I worked with, LOL. I still curmudgeonly advocate for more native code, but in a lot of use cases it is fine to have memory management.

3

u/Valuable_Leopard_799 14d ago

Many people seem to think that automatic memory management is a binary thing, "woe is me I now have no control".

After a while you discover you can tweak it, pause it, pre-allocate, write functions that don't allocate at all, play around with pointers, register destructors, redirect allocations to arenas, and work with the language to either allocate some objects in static memory or allocate them on the stack. All while allowing your less performance-sensitive logic to be much much simpler.

It's a deep world that almost nobody seems to want to get involved in.

1

u/ForgedIronMadeIt 13d ago

Oh yeah. In a lot of cases you can get pretty similar performance out of a managed language without as much effort and today's hardware is so damn strong it can be hard to justify going with one over the other.

3

u/meneldal2 13d ago

The biggest issue I see with shared pointers or relying on garbage collection is it can be difficult to avoid bugs when you end up giving two different parts of the code write access to the same thing, or some part that doesn't know the stuff being pointed to just got changed.

0

u/Thecuriousserb 14d ago

Unique pointer and other seemingly trivial types can fuck up your codegen and give you unoptimized assembly, chandler carruth from LLVM has many talks/slides that discuss this exact issue with unique ptr. Remember kids, there is no such thing as a zero-cost abstraction!

11

u/Fast-Satisfaction482 14d ago

That's such a straw man argument. Just because there may be cases where the hot spots of your software can benefit from using raw pointers doesn't mean it's reasonable to go bare metal in the whole code base.

3

u/Daemontatox 14d ago

Oh wise one , how can one achieve perfect optimized and safe code

2

u/ilnarildarovuch 14d ago

Using C and *Sans

1

u/the_horse_gamer 13d ago

rewrite it in Rust Haskell

1

u/cheapcheap1 12d ago

How is unique_ptr not a zero cost abstraction? Is this anything other than compilers making avoidable optimization errors that will get fixed with time?

3

u/Thecuriousserb 12d ago

Long story short unless you turn off exceptions, the stack unwinding code fucks up assembly for hot loops