4 ms·
I tend to agree with the result, despite having spend much of the late 1990s-2000's writing C++ code. By 2011, I considered myself pretty close to language lawy
by StillBored 3y ago
I tend to agree with the result, despite having spend much of the late 1990s-2000's writing C++ code. By 2011, I considered myself pretty close to language lawyer levels since I had made an explicit effort to dig into the dark areas of the spec I didn't personally use much in the late 2000's. Then c++11 came out, and that reset my ability to understand feature interaction by 5+ years. Then before I got comfortable with the changes, it changed again, and again. And not in insignificant ways.
These days I don't write much C++ code (regressed to largely C), and when someone asks me how proficient I place myself at a 4 out of 10, and then explain how the spec has changed faster than I think most people can actually absorb it unless its their full time job to sit on the standards committee. So I don't believe anyone who gives a themselves a score over 6 unless their job actually required a deep level of standards understanding (ex: compiler developers).
OTOH, all that doesn't mean my actual C++ style has changed much. I still use C++ as a C with objects, only now some of the restrictions of the past have reasonable workarounds. So the idea that only beginners treat it as a C with objects language is a misleading statement. Sure I can create all kinds of fancy language constructs, but I only use things like template meta programming in toy projects or various other features, but the results are frequently setup as "C" language extensions (aka here is a matrix class where the matrix T can be a bignum/etc) which happen to look more like a C compiler with some extra features for manipulating matrix's.
A lot of the problems (ex threading is hard) come from the fact that its far to easy to dig a comprehension hole that even the initial programmer cannot get themselves out of. Hence projects like firefox/thunderbird from ~15 years ago where the C++ code was hacked together in a style that needed to be cleaned up but never was, leading to piles of hidden bugs, and problems where newer/stricter compilers would simply refuse to compile the code due to undefined behavior on ever 10th line.
- chrsig 3y ago> These days I don't write much C++ code (regressed to largely C), and when someone asks me how proficient I place myself at a 4 out of 10, and then explain how the spec has changed faster than I think most people can actually absorb it unless its their full time job to sit on the standards committee. So I don't believe anyone who gives a themselves a score over 6 unless their job actually required a deep level of standards understanding (ex: compiler developers). I generally factor in a ~5 year adoption period for newer standards as not only compiler adoption completes, but as distributions pick up newer compiler versions and make them the default. So right now, I'd consider c++17 the expected standard for people to generally be comfortable and competent with.