Si vous vous intéressez aussi au langage et à la plate-forme .Net, visitez mon blog

Présentation

Le C# (prononcez (transcription française) sicharpe, et pas saidièse, merci ;-)) est un langage moderne, élégant, bien pensé, multi-plateformes, orienté-objet et incompris par trop de monde (mais tant que Miguel de Icaza a compris, c'est bon... ;-)) crée par Microsoft, une petite start-up qui a fait quelques produits ayant eu un certain succès, comme Windows ou Office. Il allie la modernité d'un langage jeune (première "version finale" en 2001) au confort des langages qu'on connait déjà bien (C, C++, Java). Pour vous donner un ordre d'idée, j'ai mis 3 minutes à apprendre Java depuis PHP, et faire la transition vers C# s'est fait très naturellement, et avec beaucoup de plaisir.

C# est facile d'accès, même pour un débutant, et c'est mon langage de programmation préféré... du moins à ce jour (j'écris cela en octobre 2007). Aux gens du monde libre (dont je considère faire partie), je dis que c'est un standard (standardisé par l'ECMA, une institution Européenne), et à ceux qui pensent que Java est plus fiable ou plus pérenne, je suggère de lire la suite


Avantages

C# est rempli de petites fonctionnalités originales, qui le rendent très agréable à utiliser.

  • Il propose la création de classes partielles (avec le mot clé partial), ce qui permet de séparer une classe en plusieurs fichiers, ou en plusieurs parties d'un même fichier. Ceci est pratique quand plusieurs développeurs travaillent sur une même énorme classe (bien qu'une trop énorme classe ne soit pas une bonne idée selon moi)
  • Il a des possibilités d'introspection. C'est un concept difficile à expliquer pour moi qui ne suis pas experte dans le domaine, mais il est en quelque sorte capable de regarder sa propre mécanique, c'est très utile, et ça permet de pouvoir afficher la documentation qui est directement dans le code source, par exemple.
  • En parlant de documentation, C# utilise un modèle merveilleux pour cela : du XML. Au lieu d'utiliser une syntaxe pas très jolie à mon goût (celle de JavaDoc, PHPDoc et d'autres), C# se base sur des tags XML, ce qui permet de s'y retrouver et de générer facilement une documentation automatique. De plus, si on utilise un éditeur de code supportant ces fonctions et que les développeurs des librairies que l'on utilise ont fait l'effort de documenter leur code, cela permet d'accéder précisément à l'explication de chaque paramètre d'une méthode afin de vraiment guider l'utilisateur : programmer avec un seul écran devient une chose possible (plus besoin d'un deuxième écran pour afficher les documentations, sauf dans les cas vraiment complèxes)
  • C# est, à l'instar de Java, compilé en bytecode puis interprété par une machine virtuelle, ce qui permet une portabilité binaire entre les systèmes d'exploitation, et non pas simplement une portabilité au niveau du code source. Ainsi, un logiciel compilé sous Windows pourra être exécuté (sous certaines conditions) sous Linux, Solaris ou BSD.
  • C# rend facile la création d'évenements déclenchables (un objet A rappelle un ensemble B d'autres objets quand quelque chose se produit dans A, et chaque objet de B réagit comme il le veut.)


Exemple de programme

using System; // indique que l'on va utiliser la librairie System.
namespace ProgrammeExemple // c'est l'élement racine de la hiérarchie de notre programme
{
class ClasseExemple
{
private int argument;
public int Argument {
get {
return argument;
}
}
public ClasseExemple() // c'est le constructeur de la classe, qui effectue des actions quand un objet est crée
{
Console.WriteLine("Une instance de la classe ClasseExemple a été créée ! Coucou :)");
}

public void Methode(int parametre) // on déclare une méthode d'objet prenant un paramètre
{
Console.WriteLine("Hello, je suis la méthode Methode, et vous m'avez passé le paramètre " + parametre);
argument = parametre; }

public static void Main(String[] args)
{
Console.WriteLine("Le programme démarre");
ClasseExemple e = new ClasseExemple();
e.Methode(5);
Console.WriteLine("Le champ Argument de la classe ClasseExemple vaut maintenant " + e.Argument);
Console.WriteLine("Le programme est terminé !");
}
}
}

Ce programme minimal va vous dire "Le programme démarre", puis un objet de la classe ClasseExemple va vous saluer, puis sa méthode Methode va vous signaler que vous lui avez passé le paramètre 5. C'est plutôt simple, non ? Supprimez le namespace, remplacez Console.WriteLine par System.out.println, supprimez la majuscule aux méthodes, ajoutez de moches méthodes get...() et set...() et vous récupérez Java ;-). (mais C# est mieux à l'usage sur de gros projets, son expressivité est meilleure)


En savoir plus

Je vous conseille d'aller faire un tour sur le site de la documentation de Microsoft, sur Wikipedia et de lire, si vous ne l'avez pas déjà fait, mon explication personnelle sur l'orienté-objet si vous avez l'impression que je vous ai parlé chinois (wo shuo hanyu, yeshi wo hanyu shi huei de hanyu, "comme vous pouvez le voir")