In my previous post, I’ve very briefly covered the history in the evolution of the C-esque languages, and concluded with the release of C# by Microsoft in the late 1990s.
C#, is and was, a direct consequence of the design and popularity of Java. As with Java, C# was released as part of the .NET framework – probably the largest codebase library ever released. And Microsoft also improved their development suite – Visual Studio .NET being the flagship.
Any two developers can engage in an endless discourse as to why one language is superior to another, but I’d like to address three very specific reasons why C# is simply awesome.
Firstly, the Visual Studio environment is hands-down the best development platform that exists today, period. Anyone who has used Eclipse and Visual Studio, if they are honest, will confirm the elegance, features, and power of VS. As someone who immensely enjoyed coding in C using xemacs, I became a true believer in C#/.NET when I started using Visual Studio. From a purist point of view, it is entirely true that MonoDevelop could be used instead of Visual Studio to write in C#, and that therefore this is not a particular advantage. However, I am particularly referencing the majority of C# developers who use VS.
Secondly, C# had incorporated, especially in version 3.0, a duo of extraordinarily powerful features: lambda expressions and LINQ that I simply refuse to give up in any other language. The simplicity and declarative nature of afforded by the combination of both these features has completely changed my programming style. This is particularly relevant when dealing with “big data” and analytics, which are my specialties (especially as it pertains to the capital markets).
Thirdly, C# has extensive support for build in parallelism. From PLINQ to the Task Parallel Library, I can maximize the resources available on my machine in an extraordinarily facilitated way. I don’t need to manually develop my own parallel/distributed framework, or use third-party add-ons (that may or may not be maintained frequently). Microsoft has made life much easier for developers who rely on taking full advantage of all their cores, and I commend them for this.
Finally, C# is very much a growing language. The most recent introduction of the Async framework in version 5.0 is a game changer. In a world where any sizable software system is virtually guaranteed to be asynchronous in nature, the inclusion of power built-in language support is a another incredibly effective gift from Microsoft. Just two keywords: await and async will completely change the way that a developer can process multiple, complex data streams or queries in real-time. And all this for free.
At the end of the day, it’s not going to be one specific feature or theoretical characteristic of a language that will render it an exceptional framework. It is rather the utility, the practicality of being able to simply get things done that will measure the success of a language or platform. As a front-line developer working under rigorous deadlines and having to maintain large scale systems, this is the simplest yet most profound reason for using a particular framework.
It is completely understandable that different developers will feel extremely comfortable with other platforms, operating systems, and languages, but in these two brief discussions I really wanted to explain why I feel that C# is awesome.
So I urge developers, even those who are not using the Microsoft stack, to consider Mono and C# to get a feel for how powerful the language is and how much built-in support facilitates getting your work done quickly and correctly.