I try to write with my eventual successor(s) in mind. No matter how well-documented a vast library of reusable code is, it’s still opaque if you don’t know, understand or like the language, the design or the style of the author. The irrational view that programming in Basic warps your mind and gives you cooties nevertheless exists and is widespread. We are herd animals. A code base in a longstanding mainstream language provides political and social cover (and, sadly, motivates too many people).
It’s like the old saying from back in the 1980s, “no one ever got fired for recommending IBM”. That IBM was a ponderous dinosaur was beside the point. For a long time, it was unassailable to use their technology at least in businesses over a certain size. Similarly if you are using the top 5 or “hottest” languages and stacks of the moment, no one will resist working with them out of sheer FOMO if nothing else.
Developers like to think they are mavericks and iconoclasts, but in truth way too many are closet conformists. It’s one thing to dress sloppy or have a neck beard but it’s another to (GASP!) program in (YUCK!) Basic. Even when they are bucking mainstream trends by, say, using a functional language, it still has to be HOT and POPULAR and have some sort of bandwagon effect going for it. Basic lacks that, ever since probably around the year 2005 if not earlier. And even then it was more of a semi-professional “citizen programmer” bandwagon.
I would personally love for this to not be true. I have a soft spot in my heart for products like VB.NET, PureBasic, even the XBase language family (I used to be a FoxPro influencer before Dave traded Fox Software for his Stradivarius collection) and products like Lianja, etc., I tend to irrationally root for. But they are all struggling niches sustained by small dev teams or even single developers. And sometimes they make rather stupid decisions, for example Lianja has sidelined its roadmap that has been promising C# would be a supported language for years now, in favor of chasing the “AI” fad.
All in all, while the C language family isn’t perfect, it’s where the best work is being done to push the frontier of what’s possible forward, and seems the most long term stable and supported in an industry known for constant churn. So for that and reasons of my clients all seeming to be Microsoft shops, C# is the logical choice and there’s no compelling reasons, at least in line of business software, why I would do some portion of any greenfield work in Basic or anything else. Maybe I would do low level multi-threaded stuff another way, but I don’t even need much of that. I stick to synchronous code to the fullest possible extent because there lies the lowest cognitive burden, the fewest side effects, the easiest debugging and the cleanest code. I have a few lock() {} critical sections in code that might be called simultaneously by our front end that has to share class instances and that’s about it. C#’s (really .NET’s) guarantee of separate stack frames for each method call suffices for everything else.