I tried to use C++ in 1991 but the Borland Turbo C++ compiler was too buggy, so we used C instead. By 1996 C++ was “ready for primetime” on IBM-compatible PCs (yes, they still called them that, sometimes in 1996) and I switched - for 30 years.
I just spent 10 days building a proof of concept in Python, all the “common wisdom” says that was the fast way to get it done. Now that the prototype is done and the (initial) user feedback is addressed, I’m running a port to something better for lightweight, performant, easy deployment… sadly, C++ isn’t even on the radar for potential targets - top 3 candidates were Go, Rust and C#. I can’t abide the C# ecosystem, and Rust is just a little too rigid and immature for my tastes, so here we Go… anticipated to take 50% longer to port from Python than the Python took to develop in the first place… we shall see…
My perception is one of a treadmill. My fellow developers in C# are much more frequently analyzing migration from one incarnation to the next, updating and installing their license files, evaluating compatibility between versions, and generally spinning their wheels on things not required for getting work done on other platforms.
Back in the day, I was getting a new “99% compatible” DOS version every 6 months (until we transitioned to the PharLap 32 bit extender, got more memory to work with AND stopped the perpetual upgrade treadmill.)
That “99% compatible” thing means: in a 10,000 LOC codebase, you’ve got 100 things to fix before it works on the new DOS.
I really liked working with Qt from 2006-2024 or so, the only major break was 4-5 (must admit, I never migrated to 6, and nobody forced me to…) and the migration from 4-5 was less painful than a DOS version bump. Also, Qt fully insulated our code from garbage changes happening at lower layers.
Most of my version-upgrade woes seem comparatively recent, lol
Nullable contexts. It’s “easy” to update this with a setting in your project file! … but it adds warnings to basically every file in the project :( You could break it up by adding a preprocessor directive, but it still added a lot of noise at the time.
File-scoped namespaces. I like this feature for new code, but OUCH does it mess up code reviews when it’s an incidental change. I really grew to love Github’s “ignore whitespace” setting in the PR diff view because of this.
Migrating from 4.6 to .NET Core. There were a few times when a deploy just … stopped. It worked on our desktops, and it worked on our test server, but the prod deploy just choked. We might have finally gotten a clue about what was wrong from the event viewer, but it’s been a while. I do recall that our usual troubleshooting path was useless in this case!
Yeah, I’ve had to do that a few times lately. Really tweaked me when gcc transitioned things from warnings to errors.
Migrating from 4.6 to .NET Core.
Are we on .NET 7? No, only 8 is available here without unreasonable effort to backdate. Does the .NET 7 code run in 8 without mods? Yes, but that doesn’t change the hassle of talking endlessly about it.
I tried to use C++ in 1991 but the Borland Turbo C++ compiler was too buggy, so we used C instead. By 1996 C++ was “ready for primetime” on IBM-compatible PCs (yes, they still called them that, sometimes in 1996) and I switched - for 30 years.
I just spent 10 days building a proof of concept in Python, all the “common wisdom” says that was the fast way to get it done. Now that the prototype is done and the (initial) user feedback is addressed, I’m running a port to something better for lightweight, performant, easy deployment… sadly, C++ isn’t even on the radar for potential targets - top 3 candidates were Go, Rust and C#. I can’t abide the C# ecosystem, and Rust is just a little too rigid and immature for my tastes, so here we Go… anticipated to take 50% longer to port from Python than the Python took to develop in the first place… we shall see…
Why not? I like working in C#, so I’m curious what about the ecosystem bothers you.
My perception is one of a treadmill. My fellow developers in C# are much more frequently analyzing migration from one incarnation to the next, updating and installing their license files, evaluating compatibility between versions, and generally spinning their wheels on things not required for getting work done on other platforms.
Yeah, fair. New versions release every year. It’s usually good stuff, but it does add some toil to existing codebases.
Back in the day, I was getting a new “99% compatible” DOS version every 6 months (until we transitioned to the PharLap 32 bit extender, got more memory to work with AND stopped the perpetual upgrade treadmill.)
That “99% compatible” thing means: in a 10,000 LOC codebase, you’ve got 100 things to fix before it works on the new DOS.
I really liked working with Qt from 2006-2024 or so, the only major break was 4-5 (must admit, I never migrated to 6, and nobody forced me to…) and the migration from 4-5 was less painful than a DOS version bump. Also, Qt fully insulated our code from garbage changes happening at lower layers.
Most of my version-upgrade woes seem comparatively recent, lol
Yeah, I’ve had to do that a few times lately. Really tweaked me when gcc transitioned things from warnings to errors.
Are we on .NET 7? No, only 8 is available here without unreasonable effort to backdate. Does the .NET 7 code run in 8 without mods? Yes, but that doesn’t change the hassle of talking endlessly about it.
No. We weren’t. This one was about a decade ago, around the time they first released .NET Core.
Eh…ideally you’d have the conversation once, around what upgrade strategy to use, then execute on it. Upgrade yearly vs. ride out LTS windows. Etc.