Mads Torgersen (Mads Torgersen), who has been involved in the development of .NET-languages at Microsoft for more than 11 years, shared a description of the principles that guide his team in making decisions about the development of each language. Hand over to Madsu.

For more than eleven years, I have been working in the .NET programming languages at Microsoft, and all this time, developing languages, we tried first to take into account the interests of developers. Thanks to the open source revolution (with respect to not only the .NET programming languages, but the entire
.NET stack ), dialogue with developers was drastically improved, and this, in my opinion, helped us make a better choice. However, it was not always possible for us to share with you exactly how we made these decisions. This is our strategy for the development of programming languages: the concept of each .NET language and plans for its development.
In this article I would like to highlight in detail the principles that we adhere to when making decisions regarding each language. Consider this as a general overview, not a development plan.
')
C #
C # is used by millions of people.
According to a survey of developers at
Stack Overflow , C # was recognized as one of the most popular programming languages in 2016. By popularity, it was bypassed only by Java and, of course, by JavaScript (SQL is not considered as a programming language, but we will not argue about this). These results could have been affected by the level of popularity of the Stack Overflow site in different language communities, but without a doubt, C # is one of the most common programming languages. It is widely used in various directions: games on the Unity engine, mobile applications in Xamarin, web applications in ASP.NET, business applications in Windows, microservices .NET Core in Linux on
Azure and Amazon Web Services (AWS), and much more .
Also interesting is the fact that in
another survey on Stack Overflow about the 10 most favorite languages and technologies from the previous survey included only C # and Python.
After so many years, people continue to love C #! Why? All this time we have developed it with pragmatism and our own style, solving new problems and without changing the very essence of the language. C # is considered a powerful, efficient, and easy-to-use language. It is usually associated with .NET, since they have no future without each other.
C # Development Strategy
We will continue to develop C # in order to “keep up” with the growing needs of developers and maintain our leading position. We will actively introduce innovations, while trying to maintain a special “spirit”. Given the diverse audience of developers, we will pay particular attention to improving productivity and improving the language, which will be useful for most of you. We will continue to expand the ecosystem and strengthen its role in determining the direction of the development of the C # language, while maintaining full control over the design solutions to ensure continued consistency.
Every next version of C # contains significant improvements: universal templates in C # 2.0, LINQ and a large number of functional improvements in C # 3.0, the dynamic type in C # 4.0, async in C # 5.0 and a whole set of small but useful functions in C # 6.0. Many features have been added to adapt to new use cases, and since version C # 5.0, special attention has been paid to connected devices and services, the speed of such connections and the processing of data flows through them. There is no exception and a new version of C # 7.0, the main innovations of which are the tuples and pattern matching, allowing you to convert and simplify work with data flow and control in the code.
Starting in C # 6.0, we started sharing the notes of language developers on GitHub. Increasingly, new features appear in the dialogue with the community, sometimes it comes to the fact that Microsoft is perceived as one of the “contributors”.
The description of the C # language development process is published on GitHub in the
dotnet / csharplang section , and the discussion takes place on the
csharplang mailing
list .
Visual basic
Visual Basic is used by hundreds of thousands of people.
Most of them use WinForms to create business applications for Windows, and some very skillfully use the capabilities of ASP.NET web forms to create websites. Most of them also use C #. For many developers, this is due to language requirements in the various projects they are working on. However, going beyond the basic uses of Visual Basic, many do not hesitate to switch to C #, even if you can use Visual Basic. The ecosystem, examples, and community for C # are often larger.
In Visual Studio, we see an interesting trend: the percentage of using Visual Basic among new developers is twice as high as among all developers. This suggests that Visual Basic continues to play the role of a high-quality and accessible language for learning about programming and is suitable for those who master both the platform and development in general.
Stack Overflow respondents did not like Visual Basic: it won first place in the list of languages that users would prefer to find a replacement for. I think this should be treated with some skepticism. First, the number of these people may include VB6 developers who cannot be blamed for wanting to move forward. In addition, Stack Overflow is not the main habitat of Visual Basic developers, so if you decide to take a survey, it is most likely because you have already visited Stack Overflow, being a fan of another programming language. Finally, a deeper look at these results shows that most Visual Basic developers would prefer to switch to C #, which may indicate their desire to focus their development in the .NET domain on one language, rather than simply abandoning Visual Basic.
In view of the foregoing, such statistics makes you wonder. It seems that many of those who use Visual Basic feel lagging or doubt the future of the language. Let's use the opportunity to deal with this issue!
Visual Basic Development Strategy
We will support Visual Basic as a simple and accessible language. We will do everything necessary to ensure that it remains one of the main languages of the .NET environment: for example, if adding some new features in C # changes any API, then using this API in Visual Basic should look just as natural. Given that many developers use both Visual Basic and C #, we will keep the principle of using cross-language tools. We will focus on releasing updates in areas that are popular for Visual Basic and usage scenarios.
This is a departure from the
joint development strategy that we followed in 2010, when C # and Visual Basic followed the general course. Following the rapidly evolving C # is not only a losing strategy for Visual Basic, but also adversely affects the simplicity and accessibility, which are its key advantages.
In Visual Studio 2015, Visual Basic 14 and C # 6.0 basically continued to develop together and had many common improvements: operators with the condition NULL (?.), NameOf, and so on. At the same time, in both languages some specific disadvantages for each of them were eliminated. For example, multiline string literals appeared in Visual Basic, comments after an implicit continuation of a string, and much more. At the same time, functions and properties in the body of expressions (expression-bodied members), as well as other features that have no place in Visual Basic, appeared in C #.
In VB 15 some of the new features of C # 7.0 will appear. Tuples are useful not only on their own, but also because they provide compatibility, as they will be used in API signatures. However, Visual Basic 15 will not have such features as the is expression, out-variables, and local functions that do more harm, such as worsening the readability of the language.
The description of the development process of the Visual Basic language is published on GitHub in the
dotnet / vblang section , the discussion takes place in the
vblang mailing
list .
The Visual Basic development strategy is described in more detail in
this article .
F #
F # language is used by tens of thousands of people.
It is rapidly developing and demonstrates the prospects for further growth. Being a universal language, it has a rather wide application, but its use is especially important in cloud and web services, tools and utilities, analytical workloads and data processing.
F # has taken a high position in the
ranking of favorite programming languages: people just love to work in it! Although F # has fantastic tools compared to most other languages on this list, it still has less application experience than C # and Visual Basic. Many innovations greatly contribute to the progress of the language. More and more developers for the .NET environment (both inside and outside Microsoft) consider F # to be a programming language that needs to be considered and mastered.
F # has an incredibly interested community, which plays a very important role in its development and continuous improvement, not least thanks to the fully open language development process. It is the absolute leader among open source .NET languages, a significant contribution to its development is carried out outside of Microsoft.
F # Development Strategy
We will support and encourage active community participation in the development of F #, while continuing to create the necessary infrastructure and tools for further contributions from the developer community. We will make F # a functional programming language with the best tools on the market, we will improve the language itself and the capabilities of the toolkit, remove obstacles to community participation and solve problematic issues in order to reduce the gap between C # and Visual Basic. As new features of the C # language appear, we will ensure their compatibility with F #. F # will continue to target platforms important to its community.
Based on the powerful functional legacy of the ML family of languages and deep integration with the .NET platform, F # has gained a number of innovative features. Type providers, active templates, and computational expressions offer tremendous opportunities for those who are ready to step forward and master this language. F # most needs to eliminate barriers to its adoption at all levels.
F # 4.1 contains a significant improvement in the toolkit in Visual Studio due to integration with the abstraction of the Roslyn editor workspace, the focus on .NET Core and .NET Standard, as well as improved compiler error messages. Much of the optimization of the Visual Studio toolkit (including improved error messages) is the result of the active participation of the F # community. In the future, we intend to work with the F # community as well as with other Microsoft specialists in order to provide F # with the best-in-class tools and make it a functional programming language with the best tools on the market.
The description of the F # language can be found in the
repository with offers on GitHub and
RFC .
Conclusion
I hope that I managed to shed light on our decision-making system for .NET programming languages. I would like that whenever we make a certain choice, you understand what the reason for such a decision is. When there is a misunderstanding, there are unwarranted fear or speculation. In addition, you need to make business decisions that are highly dependent on how well you understand our intentions.
Good luck in your development!
If you see an inaccuracy of the translation, please report this to private messages.