5 ms·
I for one welcome the new features! I don't think it's too hard to learn a few new things every 3 years.
by foota 3y ago
I for one welcome the new features! I don't think it's too hard to learn a few new things every 3 years.
- rightbyte 3y agoYou have to think about newbies too. Python has made the same mistake as C++, but worse. At least C++ is not pretending to be user friendly. "Modern" C++ was a mountain to climb for me. I think I will not even try to catch up on modules, contracts and what not. I'd rather go back to C for personal projects. I just don't have the stamina for another big C++ language change. And they add up.
- nazgulsenpai 3y agoWhile I don't follow Python development super closely, as a scripting language it is still pretty simple and user friendly. I'm sure once the complexity rises... well, the complexity rises.
- rightbyte 3y agoYe sure. My point is that Python is harder than it could be. Not that it is harder to use or learn than C++. It is like the language design now is centered around those with 10 year plus experience in the language. I firmly remember how hard it was to understand each concept as a newbie. And all the additions since I started out must be insanely confusing now.
- 59nadir 3y agoIt's not only about newbies in the end. When I started learning C++ back in ~2000 the semi-joke was that "C++ takes about 10 years to learn". The language is far bigger now, with more things you either need to know to cut out or somehow just not learn, but then you need to learn it if you end up working with code that uses it, etc.. This stuff, to use properly, usually comes with a list of "dos and don'ts" in C++ so it's not feasible to just on-demand learn the additions to the language and call it a day.
- MrJohz 3y agoBut newbies typically don't need to learn the whole mountain. * Some new features are typically added to handle very specific cases that will rarely be encountered but can't be easily handled by existing mechanisms. These are typically used by library authors to make an API clearer or easier to use, and new developers won't need to interact with them at all. * Some new features are added to replace existing features either partially or entirely (because the old feature had issues, or a better way of handling it was found). In that case, new developers just don't need to learn the old feature at all, or if they do, they can learn it later as a more advanced technique. I don't know a huge amount of C++, and I haven't been following Python much recently, but to use some examples from Rust: * GATs and a lot of the newer trait features are very much in the former category. Very few Rust developers will be directly using the new tools, but library authors can use them to create easier-to-use APIs which benefit everyone. * The `try` mechanism is often simpler to learn than all the Result/Option combinators, which drastically reduces the amount a new developer needs to know about to get started. You'll still probably need those combinators later, but you can now get started without them. There are definitely some features that don't fit clearly into these two categories, and add a kind of overall complexity to the language. But I think a lot of people look at a big list of features and think "but that will be so much to learn", forgetting that (a) you probably don't need to learn a lot of it until you're already very advanced, and (b) a lot of it will be making other parts of the language obsolete and overall simpler.
- strus 3y ago> In that case, new developers just don't need to learn the old feature at all That's not true if you want to be a professional C++ dev - you will encounter projects stuck in older standards, or legacy code written in the age of old standard. In practice you need to know everything from C++98 to the newest.
- 59nadir 3y agoIn a non-trivial amount of cases I think this incessant adding of features to paper over old mistakes or fill gaps is actually counter-productive and turns into users having to learn several things instead of the intended situation where you end up just learning the new thing. I've done 7-8 years of C++ and there was definitely a moment where I could work on pretty much any C++ code base in the world at least somewhat comfortably, but I wouldn't take a C++ contract now and then ramp up to it because there's absolutely no telling which C++ this contract would entail and which landmines it has as a result. Languages that are much more clear about what they support and what they don't support don't have this ambiguous language profile that constantly-appended-to languages have, because they've ended up taking a stance on what they actually do and as a result it's much easier to simply work with what's there. Rust is doomed to be in the former camp but luckily we have much more sensible alternatives to both C++ and Rust nowadays that look to be much more of a known quantity at some point. Edit: I also think it gives a language a special kind of funk where it's fairly obvious that certain things were just not all in all a great choice; you end up needing extra features that really only exist because you have other features and so on. `Pin`[0] in Rust comes to mind; it's something that has no intrinsic value and only exists to paper over the mistake of moving around memory magically. 0 - https://doc.rust-lang.org/std/pin/index.html https://doc.rust-lang.org/std/pin/index.html
- NooneAtAll3 3y agoit feels like the problem isn't number of features, but quality of learning material... what ways are there to learn/teach latest c++? I can only come up with conferences' recordings
- nickelpro 3y agoI don't understand this complaint even a little bit. Don't use features you don't want. If you want anything from C++ use just that. No one is going to put a gun to your head and make you #include <concepts> when all you wanted was C with Classes.
- meribold 3y agoThat only works as long as you're the sole developer working on a project. When enough programmers work on a project, each using their preferred subset of C++, the whole language ends up being used (including C). Refusing to learn features beyond one's preferred subset usually isn't a tenable position.
- nickelpro 3y agoMore complaints I don't understand. Of course you have to learn whatever language/tools/features your company uses. That's got nothing to do with C++. If the company doesn't want certain features to be used, it will ban them. Plenty of places have blanket bans on the STL.
- maratc 3y agoThe main issue with C++ cannot be resolved by an addition of any new feature.
- danq_ 3y agoArguably the features in themselves are the main issue with C++.
- rewmie 3y ago> I don't think it's too hard to learn a few new things every 3 years. Do you think that in software development circles backwards incompatible changes only happen each 3 years?