Director of Avenga Labs
In the space of enterprise application software development the dominating force is Java and Python but C# has always had a steady high place in the ranking.
In the current Tiobe index, C# is at number 5. But after we remove C and C++ as lower level programming languages, C# is in the third position in enterprise applications development. Compared to Java its market share is four times less, but given the size of the market it’s still a huge chunk of applications and a large developer community. Currently, it is estimated that there are over 6 million C# developers.
C# was created 20 years ago in 2000. It’s role was to be a lightweight replacement for C++ in which to write base libraries for the Microsoft dotnet framework. It has been the most popular programming language for DotNet platform since then.
In the Windows ecosystem, it quickly won the hearts and minds of the developers and became the primary language for creating business applications and almost immediately replacing C++ and Visual Basic for web backends. It was the perfect middle ground because it was easy to learn for C++ developers, had fast performance and it was enjoyable coding with the great help of Microsoft Visual Studio.
It’s still quite a popular opinion that C# was supposed to be just a clone of Java programming language. Microsoft attempted to marry Java with its Windows ecosystem but failed to do so. So there was a kind of conspiracy theory, that Microsoft created a Java clone which it could control.
In fact, even the name suggests otherwise, C, then C++, then C++++ and when four plus signs are combined it looks like ‘#’, therefore C#.
What happened later showed its independence from Java. Starting from version 2.0, C# moved in a different direction (generics and other dynamic elements, functional elements) and much faster than Java. There were times when Java developers envied the new functionalities of the C# language and its runtime, as they were introduced much faster than in Java. For instance, lambda expressions were years ahead of Java. However, with Java 8 the gap was significantly reduced.
Now I’d say that both languages borrow from each other and refine their existing and new features while attempting to maintain compatibility with the vast amounts of code.
Many Java developers liked the language but despised the ‘dark side’ nature of Microsoft at the time. Proprietary language, proprietary runtime, proprietary IDE (Visual Studio), and a proprietary database (SQL Server) was all evidence for open source fans that it was something that made them want to keep a safe distance from the ‘evil empire’ from Seattle.
It changed, when the C# language and dotnet runtime were open sourced. In a shocking move, which completely changed the perception of Microsoft as a company, the source code was available as well as the potential change to influence the language and runtime environment.
In my opinion it’s the best of two worlds. It is a powerful and innovative company backing the project up, plus the vibrant community with the open source spirit.
It’s however still a popular misconception about C# and DotNet, that they are proprietary technologies and that it’s better to stay away from them. These old truths, which are now false, are the reasons for its reduced popularity outside of the Microsoft community.
→ Explore Inner source – open source spirit in enterprise
The next important change was DotNet core and the availability of DotNet on the most popular by far operating system, Linux. It opened up the entire world for C# as well.
There’s a little confusion about this as there is still a classical DotNet Framework for Windows Servers, but its popularity is declining compared to DotNet Core. Right now they have almost equal market shares.
Developers are more eager to migrate to newer versions of the C# programming language than to switch from the DotNet classic to the DotNet core runtimes. It will take a little bit more time for the transition to DotNet core.
Runtimes and applications can run well in containers, so the universe of Docker and Kubernetes is open for C# developers both for Linux and Windows operating systems.
C# was created as a universal language for building any type of application (desktop, server APIs), however its position and popularity is very strong in gaming development.
Two of the most popular game development environments, Unity and CryEngine, use C# as its primary language.
Despite some efforts to change the sad picture, C# is very unpopular for data science applications and solutions. It’s very niche in this area, where Python dominates with R, Julia and Matlab.
It’s hard to blame C# as language for that, almost the same situation applies to Java.
Xamarin seemed to be a very good choice for mobile applications as it reduces the number of code and maintains high performance. But now the world is moving in different directions, like native versions of popular web frameworks and, of course, Flutter.
→ Explore Avenga Mobile App software development expertise
Still it’s an important application for the C# language.
Software developers wanting something fresh and new are more likely to try Go than switch to C#. The mindshare of the latest and hottest is more about Go and Rust, than the very modern, but aging C#.
C# developers are enjoying the new capabilities of the language, making it even better and reducing the temptation to move somewhere else.
C# 9 is to be released in November 2020 and introduces other modern concepts such as records, with-expressions, improved patterns matching, improved target typing and covariant returns.
C# was already a multi paradigm language, combining object oriented programming principles, dynamic programming, asynchronous programming and functional programming. It makes it very versatile for many applications.
Its trademark philosophy is to embrace changes and improvements quickly, which makes it very attractive to developers.
Another big plus is the feedback from the developers themselves and the well structured development process of the language that is both innovative and safe at the same time.
There’s a separate GitHub repository for the development of the language, ideas and discussions. According to the language development leaders, there’s a vast amount of feedback to be analyzed and taken into account.
DotNet developers have other language choices, but C# is by far the most preferred language and there are reasons for that. It will continue to be the top language of the DotNet platform and its fate depends heavily on the popularity of DotNet.
High popularity of the Microsoft Azure public cloud and hybrid clouds make DotNet and C# a very attractive choice as well.
Even those who are not fans of either C# or DotNet admit its popularity will continue to thrive in the gaming development community.
Our .Net community loves to create business applications, mobile apps and AR experiences using C#. We see a bright future for DotNet and that means C# with a focus on fast delivery of meaningful results to your digital initiatives.
Everything that stops developing, goes into oblivion. If the programming language covers all the needs of the growing number of people without compromising the requisites of the existing users, while expanding the scope and introducing new but time-tested approaches, it becomes a notable aspect for your choice of tool for communication between people and the machines.
Over all these years, C# has not lost its readability and verbosity while adding more and more concise structures and tools. The open-source movement increased the community population. New unique features and best practices from other languages/technologies/paradigms without loss of pithiness will increase the number of occupied brains.
Everything changes, even the post of Evil Corp. We are purely subjective in our tastes, but the fact is that C# can be a chance to be a native speaker with bi(multi-)lingual perception of the world.