Microsoft C#

C#: why this programming language is still so popular and how it is evolving.
The view of Mads Torgersen, Microsoft program manager and lead designer for C#


In this article, based on an interview Mads Torgersen gave to TechRepublic, we take a closer look at C#, a language widely used by developers and also adopted by us at ESSE I SOLUTIONS for most of our IT projects.


Born in 2000, two decades later C# remains one of the most popular and widely used programming languages in the world. Appreciated by millions for its versatility and easy-to-read syntax, it quickly became a reference point for building web and mobile apps, game development, business applications and more. And although it shares a close heritage with Java, C# has largely evolved along its own path, thanks in part to Microsoft's extensive support.

Much of C#'s popularity lies in its tendency to embrace new features quickly. That is the view of Mads Torgersen, Microsoft program manager and lead designer for C#, who says that it is precisely thanks to its forward-looking design that C# has built up a broad user base over the last 20 years.

In his interview with TechRepublic, Torgersen explains that a strong focus on innovation has always been one of the things that sets C# apart. In his view there is a fairly pragmatic balance, with the team concentrating on the scenarios real programmers find themselves in: innovation driven by usefulness rather than elegance, while working hard to keep the language consistent.

Torgersen has been the main orchestrator of C#'s design for the last 15 years and spent four years as an associate professor at Aarhus University in Denmark before leaving academia for industry in 2005. He now leads a team at Microsoft whose role is to coordinate the future direction of C#.

Unlike Torgersen, most members of the C# design team are involved in building and implementing the programming language and tend to work in adjacent areas at Microsoft. Meanwhile, it is Torgersen's job to actually run the C# language design process and maintain the language specification.

He describes meeting quite often, about twice a week for two hours, to make decisions and drive the creative work on how things should be done in the next version of C#. He sees himself as a kind of orchestrator, and as one of the people who does much of the groundwork of bringing in ideas and working out the details.

A million different voices

Although its centre of gravity has always been at Microsoft, C# is an open source programming language and as such follows an open source design process. While this is mainly driven by Microsoft, ideas regularly come from the C# user community.

Torgersen explains that there is one GitHub site dedicated to C# language design and another to its implementation. On the design site there are many interactions with people who are not involved with C# day to day but who, often as users, contribute their ideas to the discussion – and some of the features that make it into C# come precisely from this channel.

But with so many ideas coming from so many directions, how do Torgersen and his team filter out what really matters?

He admits it is a challenge: C# is a big language in terms of usage, with millions of developers and therefore a huge amount of input.

This is where good old-fashioned democracy comes in handy. To help the process, Torgersen and his fellow C# designers have adopted a mechanism whereby each team member assesses the ideas coming in from GitHub and champions those they think should be brought to the table. Decisions are not based only on how much interest each idea receives, but on whether it fits the planned evolution of the language and how widespread similar ideas are in other languages, Torgersen explains.

He describes it as a very debate-oriented approach.

For Torgersen, having a design team is the real key to managing the process and making the right decisions: many perspectives are needed, but also a process for governing the input, so as not to scatter in too many directions.

The team goes round things many times, he says, but it also has a way of reaching agreement and saying "OK, this is what we're doing" – a balance between lots of input and lots of work, with control over how it all comes together, so that the result is designed holistically.

Setting milestones

Although C# may not take first place in terms of popularity (that honour goes to C or JavaScript, depending on which index you look at), it is credited with introducing significant technical changes to the developer landscape with the move to asynchronous programming in the late 2000s and early 2010s, driven largely by core design changes made by Torgersen and his team at Microsoft.

Language support for asynchronous programming suddenly went from being a niche wish to a key requirement for many developers, setting a new industry standard and leading many other major programming languages – including JavaScript – to adopt the model later.

Torgersen sees it as a major turning point, because it helped deal with one of the big shifts in the developer landscape: the move to the cloud and mobile devices.

Suddenly there was a much greater need for programs to communicate between different devices, whether depending on a server in the cloud or between mobile devices and servers. The team solved the problem very successfully, the industry has since adopted its approach, and it is something he is very proud of.

Of course, a lot has happened in the 15 years since Torgersen took over the helm of C# from its creator, Anders Hejlsberg. More recently, the rise of no-code and low-code platforms, particularly during the COVID-19 pandemic, has begun to level the playing field by allowing people with little or no coding ability to create functional apps.

Given the current global shortage of developers, these platforms are simple enough to let even non-programmers develop fully functional applications for business workflows that can be integrated into the company's wider IT infrastructure.

Torgersen says he knows many programmers who look on this with some disdain, but that he really appreciates that it brings more people to be creative with computers.

In his view it makes the whole business of code less esoteric, secretive or cabal-like: less mysterious and more accessible.

Torgersen is also optimistic that low-code platforms, no-code platforms and traditional programming can coexist peacefully, although he acknowledges there is a challenge.

That, he says, has always been the challenge of low-code approaches, even before they were called that: with today's technologies, low-code and no-code configurations inherently introduce some limits on what you can do.

It has always been difficult ground in the past, to the point that he thinks it contributed to the failure of some no-code approaches that had no growth path for when things needed to get a bit smarter – a challenge that has to keep being tackled.

C# 9.0 and beyond

Like all modern programming languages, C# continues to evolve. With C# 9.0 arriving in November, the next update focuses on supporting a "concise and immutable" representation of data shapes.

According to Torgersen, C# 9.0 takes some further steps to make it easier to handle data arriving over the network and to express the right semantics for data, building on what was originally an object-oriented paradigm.

C# 9.0 takes the next step in that direction with a feature called records, Torgersen explains. A record is a reference type that allows a whole object to be immutable and to behave like a value.

For a long time, he explains, the team has found itself borrowing ideas from functional programming to complement object-oriented programming in ways that really help, for example in cloud-oriented programming and data manipulation – and records are a key C# 9.0 feature that will help with that.

Beyond C# 9.0, however, things become more theoretical. Torgersen insists there is no concrete "endgame" for the programming language – or at least, not until it reaches an expiry date that is still unknown.

That day will come, he adds. In his view, some interesting things worth looking at again have to do with software composition – making it easier to combine different pieces of software.

Most programming languages, he says, offer a degree of adaptation that is fine but not quite enough, and he would like more powerful features for adaptation, so that existing software components can be brought into play more effectively.

Can we expect this in C# 10?

Torgersen describes it as a kind of long-term project the team is working on, even while delivering more useful features in the short term.

It would be universal, he says: it would help anyone involved in software development, but especially when bringing different frameworks together and trying to make them cooperate.

Source: https://www.techrepublic.com/article/c-designer-torgersen-why-the-programming-language-is-still-so-popular-and-where-its-going-next/