We couldn’t do 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 1990s, 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 philosophy of “write once, run anywhere” thanks to its use of the Java Virtual Machine (JVM).
Java, as a language, was very good. But Microsoft’s access to Java was limited due to licensing issues and legal conflicts with Sun Microsystems.
So Microsoft took the plunge to develop its own language, blatantly copying heavily inspired by Java, but designed to integrate with the Windows platform.
Under the direction 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, implying 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 kinds 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 boy, a poor man’s copy of Java by Microsoft” 😆). But little by little, they began to add features, and it gained its own identity.
In 2007, C# 3.0 introduced significant improvements to the language. Additionally, it came alongside .NET Framework 3.5, which added WFC and WPF technologies. By this time, it was starting to become a great programming language.
For me, the consolidation of C# was reached 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 as other languages (Python, JavaScript, or C++), but it had its niche… it had decent popularity.
But Microsoft (and developers) had a lingering issue. No matter how much they had told us at the beginning, cross-device compatibility was almost non-existent. C# only worked on Windows.
So Microsoft lost the plot and said, “let’s make it crazy! 🤡”, let’s split the entire .NET Framework into chunks. (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.
Additionally, .NET Core would be Open Source. It has its repo on GitHub, you have all the code available, and even can report bugs or collaborate. A huge and terribly 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 their audacity 🥚🥚 they also maintained .NET Framework, in parallel with .Core, Standard, Xamarin… a crazy idea.
So just a few years later, basically Microsoft had to backtrack and reunify what was separated. 👇
Unification with .NET
In 2020, Microsoft unified .NET Framework, .NET Core, and Xamarin under a single platform. So starting with version .NET 5, there would only be one platform, called .NET (just that, nothing behind it).
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, what do I know 🤷
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 usability of the framework.
Moreover, new technologies like ASP.NET Core, Entity Framework Core, MAUI, or Blazor have opened new possibilities and attracted a new generation of developers.
Additionally, it features integration with Azure (Microsoft’s cloud platform), offering a wide range of services and tools that facilitate the deployment and management of applications in the cloud.
In short, we hope it has many more years ahead, as it is a great programming language, Open Source, and truly cross-platform.