this post was submitted on 06 Apr 2024
23 points (100.0% liked)

C++

1763 readers
1 users here now

The center for all discussion and news regarding C++.

Rules

founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] 5C5C5C@programming.dev 5 points 7 months ago (1 children)

The only way to fix C++ is if you're willing to break backwards compatibility and invent C++2.0.

But that already exists, and it's called Rust.

[–] wosrediinanatour@mastodon.social 1 points 7 months ago (1 children)

@5C5C5C @SuperFola You don't have to fix C++. Just use the appropriate level of abstraction. Else be happy that there is backward compatibility.

[–] 5C5C5C@programming.dev 2 points 7 months ago* (last edited 7 months ago)

I've tried what you're suggesting in order to write highly concurrent multi-threaded applications. I've used frameworks that are supposed to handle all the details of concurrency and synchronization for you. Inevitably they have flaws in their implementations where either the framework itself exhibits UB/data races/deadlocks, or else the design makes it far too easy to write your own UB/data races/deadlocks.

The worst part is that these problems usually don't show themselves until your software has been running in production for thousands of hours, and then reproducing the problem to try to debug it is effectively impossible. I've had cases where I resort to building my C++ application in release with debug symbols and then run it inside of gdb in production. I haven't benchmarked the effect of running it in gdb, but I have to imagine it kills much of the value of even using a high performance language.

Now I exclusively use Rust for any new development, and it's never delivered any unwelcome surprises to me after deploying.