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. Il a implémenté la programmation générique longtemps avant Java. 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 avec le nouveau compilateur Roslyn ou autres outils (voir liens plus loin).
Sur .NET vous
pouvez mixer du code C# avec du code d'autres
langages, ils fonctionnent
ensemble en partageant les mêmes objets. De
nombreux langages ont été implémentés dont C++, Pascal, Python, Java, et
même Cobol et Fortran.
De Windows à Linux
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++ et Java
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. Mais il peut aussi être compilé en natif comme C++.
- Les Structs, provenant de C++, sont ici des objets spéciaux passés par valeur.
- Une propriété permet d'utiliser des méthodes comme on utilise des variables.
- Le construct foreach() permet de parcourir le contenu de tableaux.
- Delegate remplace les pointeurs de fonctions du C.
- enum, qui manque à Java.
- La surcharge des opérateurs existe sauf pour "=".
- Il est totalement orienté objet, même les primitives et les constantes sont des objets.
- L'indexer est une méthode invisible pour accéder à un tableau avec sécurité.
- Le langage peut accéder à l'environnement natif, contrairement à Java.
- L'opérateur -> du C++ est remplacé par un point.
- Le mode managed assure la compatibilité pour un programme C++.
- Programmation générique.
- Programmation parallèle.
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.
Visual Studio Community
Un compilateur C# est inclut.
Mono Develop
IDE pour des applications en C# et autres langages spécialisés .NET.
BFlat
Compilateur de C# en code natif, pour Windows, Linux, compatible avec .NET 7. Produit des exécutables.
Roslyn
Code source du compilateur C# de Microsoft, inclut à Visual Studio.
NativeAOT
Runtime pour les applications compilées en natif sur Windows, Macou Linux.