Hacker News new | ask | show | jobs
by yagni_dev 1226 days ago
>But as more and more engineers joined us, some shortcomings of C++ came to bite us: unreadable coding style, memory leak, segmentation fault, and more.

- Seasoned devs but they never heard of clang tidy/format - Memory leaks on a new db codebase where each component should have clear ownership of data or pass to the next pipeline/stage - you dont even need smart poirters here, just a half decent design. - I am not even going to mention sanitizers, probably rocket science for them

4 comments

Ownership is great! Which is why you should use a language that actually supports it, instead of one where it is just a semi-enforced convention.
In my experience, segfaults are often a result of using C libraries in C++. In the project I work on, OpenSSL integration supplies a constant trickle of segfaults (it's not my general area, I'm just witnessing those and report to whoever works on it).

This is especially true if you are trying to use those libraries in multi-threaded environment.

Segfaults happen, you run valgrind/asan/tsan etc. As long as the codebase is not horrendous its easy to fix. Third party packages complicate things, have to choose/use wisely/appropriately
In Rust they are really rare. Like vanishingly small numbers of them. C++ definitely. SegFaults happen. Sometimes they are even in prod. Rust not so much.
So far there isn't that much stuff written in Rust, so, any non-trivial Rust program will link with a bunch of non-Rust code. On the project I worked on, we had to link with SPDK for example (a rather big iSCSI server implementation).

C++ has been around for... what?.. 40 odd years? And any non-trivial project still links with C libraries.

I don't see this problem somehow going away in Rust w/o some revolutionary changes in operating systems, which is the major supplier of decrepit but unavoidable libraries you have to link with in order to get anything done.

From what I understood, clangd was not enough to make new developers write good enough code.

The problem was not the seasoned core of developers, but the fresh hires.

Now, this would be an interesting problem. Just as Python has PEP8 and some other programmable coding guidelines, we should have different sets of modern programmable C++ coding guidelines, which can be checked by clangd.

And I mean modern, logical, Rust challenging, C++20 coding guidelines. Something this particular team would follow. Nonsense like Orthodox C++ doesn't cut it.

A glance over their repo and pull request discussions discover everything but the "seasoned" devs, even more so 10+ of them.