Description
Dear Microsoft,
I have been a professional developer since 2006 and have been working for the same company since then. Starting with C/C++ (MFC), the main application was later extended with .NET applications, which are still maintained today and have thousands of users. These .NET parts are mostly written in Visual Basic and are based on WinForms (together with third-party tools from DevExpress, probably the most stable duo ever created). In the meantime, various web services (WCF and ASP.NET) have also been developed.
In 2017, there was a small shock with the release from Microsoft that Visual Basic will not receive the same updates as C#. With various other releases (including support for Visual Basic and .NET 5+), the shock was eventually overcome. In the meantime, we have even written a .NET 5/6/7 web service in Visual Basic (although there is still no template available in Visual Studio for this purpose). The project has several libraries and hundreds of classes in them. The only thing missing were the opportunities with Entity Framework, which is why there is a project for this in C#.
Are extensions also changes?
First of all: We are happy that Visual Basic does not have all the same changes as C#. With certain extensions in C#, we wonder who needs this? Or what is it for when you can write something abbreviated and save 1 second of typing effort, but then need several minutes to understand the code again half a year later. In our opinion, this has little to do with professional programming, considering how often you have to take over, read, understand, and expand other programmers' code.
Back to the question: Are extensions also changes? We believe that extensions are not the same as changes. We don't want breaking changes to Visual Basic. We also don't need new spellings for existing features, such as a new Select statement. We don't need primary constructors either. No file access modifier. No abbreviations for string manipulations. No minimal APIs. The list could almost go on indefinitely, and many new C# features would be included in it.
What we miss are simple features or keywords that are not covered in the current version of Visual Basic. To be specific, these are the following points:
- Init Properties
- Required Properties
- Records
- Inline variable declarations
As you can see, it is a very manageable list. Other Visual Basic developers will have some additional points, but we believe we all agree on what Visual Basic stands for. In our opinion, this does not change the syntax, it simply extends it. And in a tolerable way for all Visual Basic programmers (from beginner to professional). Nobody is forced to use these things. It also does not make the language itself more complicated; it simply simplifies the lives of professional Visual Basic developers.
Our suggestions
We have different ideas on how Visual Basic could be continued in a reasonable framework.
- One idea would be for Microsoft to accept pull requests from the community for Visual Basic, with Microsoft continuing to lead.
- Another idea would be an annual survey by Microsoft among Visual Basic developers on which features from C# should be adopted in Visual Basic. The selection could already be filtered reasonably so that a few features can be selected at the end. A democratic process.
- Another idea would be for Microsoft to determine on its own which features (and no, none is not an option 😉) make sense in Visual Basic, taking into account all use cases and effort.
Microsoft also employs newer developers for whom such implementations would be excellent. They don't have to reinvent the wheel, but they have a certain template with C#. In addition, with "LangVersion" in the .vbproj file, everything is prepared to move forward with Visual Basic securely into the future.
A few words about Visual Studio
The specified strategy for Visual Basic in 2023 states:
We will continue to improve the Visual Studio experience for Visual Basic developers, such as providing analyzers, code fixes, and IDE productivity features.
That's great to hear, but in our opinion, it doesn't quite correspond to reality. For example, we miss IntelliCode (whole line completions). Also, and often opened as an issue (and closed every time), we miss a template for ASP.NET Core Webservice for Visual Basic. What has improved a lot lately (thanks!) are issues that concern refactoring or working in the IDE. There was a time when almost all issues regarding Visual Basic were directly closed, even if it didn't require any language change.
Summary
We hope it's clear from this text that Visual Basic shouldn't become a clone of C#. We also understand that Visual Basic is not supported in certain project types (Xamarin/MAUI, Blazor, ...), even if we would love it. Microsoft and Visual Basic should focus on project types where Visual Basic is strong (WinForms, web services, Windows services, ...). Nevertheless, we believe that certain features would make Visual Basic even stronger, without introducing the unnecessary complexity of C# in recent years from our perspective. We would like to thank Microsoft, especially the WinForms team, for supporting and maintaining Visual Basic for such a long time. Each of us can also program in C#, but we often choose Visual Basic because it is easier, clearer, and more understandable. It is the old, experienced, and smaller brother of C#, which does not tolerate every quirk, but in our opinion, still deserves to be maintained even in old age.
Best regards,
some professional Visual Basic programmers
Notes:
- This text was translated with ChatGPT, by the way a cool tool also for Visual Basic programmers
- This text reflects our feelings and experience and can be discussed. It is not a text that will be seen and supported by all Visual Basic programmers, which is also completely legitimate.