There are legions of VB programmers out there, you just don't hear from them. The ones I worked with a decade ago were not the types to wind up on HN, to read programming blogs, or to engage with the wider programming community. They were only really interested in programming to the extent that they used it to do a job (they were "Morts" [1]).
Mind you I don't think there's anything wrong with that as an attitude. Anyway, Microsoft puts resources into it because they probably have zillions of paying customers using it.
I am still a Classic Visual BASIC (VB 6.0) programmer.
Microsoft made it so VB 6.0 needed the Microsoft Java Runtime to install and it works with Windows 95 to XP, but in Vista and above it has problems installing. There are ways you can trick it to install but in the long run it is not worth it as it causes OS instability.
I got an XP Pro Virtual Machine in Virtualbox that I develop VB 6.0 apps inside of. GIT only works with XP and up, so Windows 2000 and under are out of the question. (Something about IPV6 support in the Git app and the first Windows to support that was XP so it fails in earlier Windows) So if you want to do legacy Windows programming and use Git, XP is your best choice. Visual Sourcesafe never seemed to work properly and I always had coworkers and management get in and scramble the files by accessing them directly on the NT Server or whatever and load them in MS-Word or MS-Frontpage that changed the formatting and then they saved bypassing source control. At least in Visual Sourcesafe 6 this was true, and I believe that Git is much better.
Since 1983 I have learned over 37 different programming languages on many different platforms. I only did Visual BASIC programming from 1995-2002 because in my area the IT shops were Microsoft shops and management decided to use Visual BASIC. While I knew Non-Microsoft languages, management never wanted me to use them.
I ended up on disability in 2003, and by that time Visual BASIC evolved into VB.Net influenced by Java and took a turn for the worse. Then Visual C# got used because it is more like Java than VB.Net is, and the high schools and colleges teach C# and Java so these new programmers learn it.
In high school I learned Pascal, in college I learned Pre-ANSI C, COBOL, FORTRAN, Ada, X86 Assembly, and others.\
Around 1995 I was learning Java and JavaScript. Then later Python and a few others. But on my spare time at home, because my managers didn't want me to use them.
I just recently took a Ruby on Rails MOOC and passed it with 100% on each programming assignment. I used to do VBScript ASP 3.0 programming. ASP.Net changed all of that apparently.
So yes I am one of the legions of VB programmers out there, got forced into disability, too old to work in my 40s (They only want young people), and read Hacker News because my interests are scattered all over the place in learning stuff.
The die hard Visual BASIC only programmers were the ones I had a coworkers who I had to hand-hold and teach Visual BASIC to them. Most earned university degrees but had no idea how to program. They secret handshaked their way to a job, while I had to pass tests and show code. I super debugged their code, and their code was sloppy and crashed systems and servers. They moved on without me into the Dotnet era and Visual C# and stick to Microsoft websites for their news using Bing as a search engine. They find me on social networks and ask me to apply for my old job so I could help them, but I cannot go back, I can only go forward. Work on my side-projects and do it as a hobby until I can get off disability one day.
There is a fantastic 2010 blogpost[1] from the Visual Studio Languages Product Manager that explains the rationale for supporting VB.NET as well as C#, as well as the strategy for doing so.
Of interest: he states that both languages have (had?) "roughly equal adoption".
Even worse, they refuse to put a lot of resources into F#, which C# is only starting to catch up to. Even if MS just said F# was first class and on par with C# it'd make a huge impact. But they're too something, I dunno what, to admit that publicly and tell users it's OK to move. So F#, despite being a superior approach for essentially every user, keeps its niche status.
And there's an even larger number who don't hate curly brackets, but are forced to deal with Begin/End's because the large company they work for is so inertia-bound to VB.
At my previous employer, I had to use VB.NET and you honestly forget about it after a couple of weeks, especially since both languages are mostly on par today ...
I have to switch between both at my job, and hardly ever notice when I do. Sometimes I'll start to write an If wrong and get squiggly red lines, but that's about it.
Visual Studio is busted for VB.NET - Snippets are unusable. There goes a quarter of your productivity.
It's death by a thousand cuts with VB.Net - You can have namespaces, but oh - VS won't put them in your code automatically like it does for C#. VB.NET also has a mismatch with the .NET framework compared to C# which has "static class" instead of "Module". When forced to use a Module in VB.NET, every function is hoisted into the global scope (and all you wanted to do was make some extension methods).
I use both languages, and like them both just fine. Your complaints are a matter of having a preference for the C# paradigm over the VB one.
Snippets: In what way are snippets unusable? Hold down the Ctrl, then type KX.
Namespaces: VB is sneaky. Right-mouse-click on the project (in the Solution Explorer), select Properties, go into the Application tab. The equivalent to the automatically inserted namespace is the "Root namespace" field.
You're probably also not happy about the case-insensitivity, lack of implicit interface implementation, or the use of keywords over braces to make code blocks, among other things. Whatever, but I use both, and at the end of the day I don't find VB more verbose than C# overall, or C# less friendly.
Each have quirks that make them a mixed blessing. One can easily google on "c# vs vb syntax" and get plenty of articles on the strengths and challenges of each.
You forgot the last step - after you hit those keys you must still type or choose the snippet list. Compare to C# where the workflow is much more streamlined - I just type the name of the snippet and intellisense shows the list of snippets (as I'm typing). Huge difference.
> The equivalent to the automatically inserted namespace is the "Root namespace" field.
No, it's not. If I add a folder in C# (again, where the workflow is much more streamlined) - it automatically becomes a namespace. 99% of the time this is what I want. In VB.NET, when I add a class to a folder, it does not automatically use the folder name as the namespace. Instead, I have to open each file and add the namespace myself.
> Members of a Module can still be qualified with the Module name - it's just optional when there's no ambiguity. BTW, "Extension Methods" are available in VB since VS2008.
There is no concept of a "Module" in the .NET framework. That's a VB.NET thing and that's why I say that C# is more in line with the .NET framework. The framework has static classes, C# has static classes, VB.NET has...no static classes.
I know that VB.NET has extension methods, what I said was that you're forced to put them in a "Module", which means that every extension method now shows up globally. Meanwhile in C#, the more streamlined language, things work the way you'd expect: Extension methods only show up on the class-instances that you're extending.
> Each have quirks that make them a mixed blessing.
Right, but one has way more quirks. One of them adds a layer on top of the .NET framework that invents concepts that don't exist in .NET and one has more complexity and kruft than the other. That one is VB.NET.
One more example for the road: In C#, when I have my cursor on a method and I hit F12/Go to definition...I am taken to the actual definition of the code where I can see attributes on the method as well as the actual declaration. Do the same in VB.NET and it takes you to the Object Browser where you can't see any of that. So yeah - I'm sticking with my conclusion that Visual Studio is busted for VB.NET.
This might be in jest, but I've seen something close to this. I do a lot of work in C# and a number of years ago I had two different roles approach me to work in VB.NET and it was > 10% premium over the C# equivalent market rate - the megacorps struggled to get people to switch so threw money at anyone with a whiff of interest and talent.
C++/C#/F#/MSSQL/PowerShell is all they really need to concentrate on.