No IT sector would be complete without Microsoft’s arrival, and programming is no exception.  Though a relatively new language, c# has made some serious inroads into software development and with Microsoft’s backing is likely to stay around.

Remarkably similar to Java, but with the emphasis on leverage from the C++ world, c# features both a virtual machine, and a windows-centric library of pre-written code to use in your projects.  The virtual machine in this case however only runs on Windows, though there is an independent effort underway by the name of Mono, to convert it to other operating systems.

There is no cross platform design goal; the virtual machine is part of the .net initiative which allows programmers to import code components even if they were written in different programming languages, and use them seamlessly.  C# is merely the most popular of several of these .net languages.  The virtual machine also exists to enhance program security, and allow cross-program communication.

The language itself takes out all of C++’s complexity and then puts much of it back in again under a different name.  Flexibility is traded for amenability, with the result that the more unique and rarely-used features of C++ disappear and the more well-used are tamed.  Ultimately this makes the language more suitable for today’s era with security and error handling much improved though at a small performance cost.

The race to make C# relevant to programmers has lead to two things.  The first is that the plethora of features constantly being added to the language has polluted its elegance somewhat.  The second is that Microsoft has continually enhanced their development tools to cope with the inelegance.  Microsoft’s Visual C# will constantly prompt you with what it thinks you should be typing at any given time, and this is something you will become reliant on. 

There are plenty of resources available for c# programmers, including the usual tutorials, books and articles, though finding information specific to a problem or a more unique case can be a slog.  The future direction of C# is not entirely clear, but in the meantime if you want to develop applications for windows, then you could do a lot worse than a programming language designed seemingly for that task. 

Software:

Microsoft Visual C#.  Windows only.

 

Books:

 

Summary:

Pros Secure.  Rapid development
Cons In the practical sense, windows only.  May end up as a jack of all trades and master of none
Lends itself to Windows application development
Has trouble with Deployment: users need to install a virtual machine.