We couldn’t make a C# course without briefly discussing its history. Even if it’s just to understand where we come from, and some of the peculiarities of the .NET environment.
In the late 90s, Microsoft faced the serious challenge of competing with Java, the language that dominated enterprise application development at that time.
Java, created by Sun Microsystems in 1995, promoted a “write once, run anywhere” philosophy thanks to its use of the Java Virtual Machine (JVM).
Java, as a language, was quite good. But Microsoft’s access to Java was limited due to licensing issues and legal conflicts with Sun Microsystems.
So Microsoft decided to develop its own language, blatantly copying heavily inspired by Java, but designed to integrate with the Windows platform.
Under the guidance of Anders Hejlsberg, a renowned software engineer who had worked on Turbo Pascal and Delphi, the development of a new language that would eventually become C# began.
They named it C# inspired by C and C++. The #
is supposed to represent four +
symbols, two above and two below, suggesting that it is the natural evolution of C++.
The era of .NET Framework
C# was first introduced in 2000 as part of Microsoft’s .NET initiative. The first official version of C# was released in 2002, along with the .NET Framework 1.0.
The .NET platform was an ambitious attempt to create an environment that allowed developers to build applications of all types and run them on different devices and platforms (it was the Java Virtual Machine).
As I said, C# was heavily inspired by Java. (In fact… when it started, I think we all thought “oh my, a poor copy of Java by Microsoft” 😆). But little by little they started to add features, and it gained its own identity.
In 2007, C# 3.0 introduced significant improvements to the language. Additionally, it came with .NET Framework 3.5, which added WFC and WPF technologies. By this point, it was beginning to be a great programming language.
For me, the consolidation of C# was achieved with version 5.0, released in 2012, accompanied by .NET Framework 4.5. For better or worse, it is one of the most used versions (I say “for worse” because many projects never went beyond that).
The era of .NET Core and C# 6.0 and 7.0
The popularity of C# was doing quite well. It was never as popular a language as others (Python, JavaScript, or C++), but it had its niche… it had a decent popularity.
But Microsoft (and developers) had a thorn in our side. No matter what we were told at the beginning, cross-device compatibility was almost nonexistent. C# only worked on Windows.
So Microsoft went a bit crazy and said “let’s make it interesting! 🤡”, let’s break the entire .NET Framework into pieces. (because if something works, why not mess it up).
This led to what I consider one of the biggest blunders of .NET, the launch of .NET Core in 2016. A modular and lightweight version of .NET Framework, designed to run on Windows, Linux, and macOS.
Moreover, .NET Core would be Open Source. It has its repo on GitHub, you have all the code available, and even report bugs or collaborate. A huge and tremendously positive change ❤️❤️.
In short, .NET Core was an important step forward (necessary? probably not) to become a truly cross-platform language. But in return, it complicated… everything, it complicated everything.
But with all its boldness 🥚🥚 they also kept .NET Framework, in parallel with .Core, Standard, Xamarin… a rather confusing idea.
So just a few years later, Microsoft basically had to backtrack and unify what had been separated. 👇
Unification with .NET
In 2020, Microsoft unified .NET Framework, .NET Core, and Xamarin under a single platform. Starting with version .NET 5, there would only be one platform, called .NET (just that, nothing else).
Could they have made it a bit easier with the names? Well… maybe. But at Microsoft, we don’t do things that way!
This version represented a consolidation and simplification of the .NET ecosystem, offering a unified platform for application development across multiple operating systems and devices.
A consolidation that wouldn’t have been necessary if they hadn’t started chopping up the Framework… but well, who knows 🤷
The present and future of .NET
And we arrive at the present, where .NET continues to evolve by leaps and bounds. With the arrival of .NET 6 and .NET 7, Microsoft has continued to improve the performance, compatibility, and ease of use of the framework.
Additionally, new technologies continuously introduced, such as ASP.NET Core, Entity Framework Core, MAUI, or Blazor, have opened up new possibilities and attracted a new generation of developers.
Moreover, it features integration with Azure (Microsoft’s cloud platform), offering a wide range of services and tools that facilitate the deployment and management of cloud applications.
In short, we hope that it has plenty of life left, as it is a great programming language, Open Source, and truly cross-platform.