C#, le Java de Microsoft

Le langage C# est plus facile d'emploi que C++, mais il requiert le runtime de .NET pour faire tourner les programmes. Vous pouvez convertir votre code C++ sans difficulté.

C# a été conçu par Microsoft en 2000 pour sa nouvelle plateforme .NET comme alternative à Java, s'inspirant (comme lui) de C++, de Java et plusieurs autres langages. Il reprend la plupart des principes de Java, avec une plus nette orientation objet.
Avec le temps il s'est doté de fonctionnalités qui vont bien au-delà de ce que propose Java. Par exemple la programmation générique qui n'a été ajoutée à Java que récemment. Il permet aussi la programmation parallèle, dispose d'un framework de programmation par évènement (dite improprement réactive).

C# peut être compilé en langage binaire sous forme exécutable sur la nouvelle plateforme Rosely.

C# n'est pas le seul langage utilisable sur .NET, de nombreux autres sont également implémentés. Cela inclut C++, Pascal, Python, Java, et même Cobol et Fortran.
Vous pouvez mixer du code C# avec du code d'autres langages sur .NET, ils fonctionnent ensemble en partageant les mêmes objets.

Un langage d'avenir?

L'avenir du langage n'était pas parfaitement défini au delà de Windows jusqu'à l'annonce d'avril 2014. Auparavant on a d'abord pu penser que son implémentation dans Silverlight, considéré comme une plateforme d'avenir pour le Web et les mobiles en ferait un des langages essentiels pour la programmation du futur. Puis Microsoft avec Metro/Modern UI, plateforme pour Windows 8, s'est tourné vers HTML 5 et JavaScript (à coté de XAML et C#).
C# ne semble donc pas être le seul langage considéré par Microsoft pour ses applications immersives.
En outre Microsoft a créé le langage TypeScript doté de classes, interfaces et modules qui est compilé en JavaScript, ce qui renforce l'importance de ce dernier encore.

Mais en 2014, Microsoft annonce que le nouveau compilateur Roslyn est open source ainsi qu'une grande partie des outils .NET, et qu'il sera géré par une fondation indépendante. Cela facilite grandement son utilisation sur toutes les plateformes.
C'est donc un langage d'applications de bureau classique, coté-serveur et aussi pour mobiles, donc universel (il y a même un micro-framework pour les systèmes embarqués).

Caractéristiques et différences avec C++

C# se compile en langage intermediaire, le CIL (Common Intermediate Language), qui est exécuté sur une machine virtuelle, le CLR (Common Language Runtime). Celle-ci est l'implémentation de la CLI, l'infrastructure de langage commune.

La principale différence avec C++ est l'utilisation d'un garbage collector pour gérer la mémoire.

Par rapport à Java, où chaque classe est stockée dans un fichier séparé, cette contrainte n'existe pas pour C#.

Exemple de code C#: Afficher les caractères de deux textes concaténés.

 string s = "demo" + "suffixe";
 foreach (char c in s)
 { 
   System.Console.WriteLine(c); 
 } 

Outils de développement

Microsoft fournit un environnement de développement complet gratuit, Visual Studio Express et il existe plusieurs alternatives open source.

Mono
Compatible .NET avec un compilateur C#.

Visual Studio Express
Un compilateur C# est inclut.

Mono Develop
Un fork de Sharp Develop par Xamarin. N'est pas comparable à Visual Studio mais constitue une alternative à la version Express pour tous les systèmes.

Sharp Develop
IDE pour des applications en C# et autres langages spécialisés .NET.

Dot32
Compile le langage C# en bytecode pour la machine virtuelle Dalvik d'Android. Peut être utile aux entreprises, mais la licence est dissuasive.

Roslyn
Code source du compilateur C# de Microsoft, inclut à Visual Studio.

DotNetNative
Chaîne d'outil pour réaliser des applications natives. Requiert VS.

DuoCode
Compile C# en JavaScript (avec Roslyn et Visual Studio) pour programmer des applications Web.