unknownuserunknownlocation

  • 8 Posts
  • 846 Comments
Joined 1 year ago
cake
Cake day: August 1st, 2025

help-circle







  • Honestly, I’m glad to have them, it can make a number of things simpler. For instance, a program I wrote had a number of duration fields that had to be stored in XML files and updated every once in a while. It was something that had to occur very often in the code: add a value to the duration, set that value in the XML data, and save the XML file. So I created a class that stored the date/time value and a pointer the XML element (it could be assumed that nothing else would be changing the value in the XML file and if it did, then that change should be overwritten) and overloaded the += operator (among others), so then all I needed was to create the DurationField object, and then I could go durationFieldX += time2 - time1 for instance. I could abstract all the logic away and make it very clear and easy to write. Could I have made it so that I have to to durationFieldX.add(time2 - time1)? Of course I could have. But IMO that variant is less neat and less readable.






  • I’m sort of surprised there’s no conscious effort to counter that. In other areas where automation has taken over they will ensure that people can still do the work manually. I visited an automated metro system a while ago, and they explained that even though certain lines are GoA 4 (in other words so highly automated they don’t need staff on board anymore), they still have people operating the trains manually every once in a while, specifically so that they don’t forget how to do it if need be, and that the new recruits can learn as well.






  • Agree on that. It cuts both ways. On the one hand, it gives you access to a fuckton of libraries so that you can chose the one that best fits your use case. On the other hand a lot of those libraries don’t use modern C++. And I haven’t even started on things like the win32 API, which is essentially a C library masquerading as a C++ API.

    That’s essentially the thing with C++: when you’re chosing which library to use, the level of C++ should be a factor in the decision making process, along with things like performance and functionality. And if I do end up using a library that was written for an old C++ version, I create wrappers for the things I use the most to bring it to the level of C++ I’m working with. Sometimes it’s also interesting purely from a learning perspective. That’s what I did for a lot of the win32 APIs I worked with.

    You mentioned tutorials - I learned C++ from learncpp.com, and I couldn’t recommend it more. It does a really good job at going deep into the technical stuff, but also understanding and using the most modern features of the language, as well as best practices.