26 août 2010

Article

Technologies de l'information

VB.NET affronte C#.NET : et le gagnant est…

« Mon langage est meilleur que le tien! »

Cette phrase a probablement été dite la première fois quand on a mis au point le deuxième langage informatique. Le désaccord entre les partisans de différents langages est aussi véhément que la rivalité Canadiens - Nordiques.

Auparavant, ce type de discorde faisait se confronter des partisans d’environnements différents : Sun (Java) contre Microsoft ou Oracle contre SQL Server. Mais, depuis 2002, on a vu fuser une nouvelle batterie d’arguments en provenance de deux camps logeant tous deux chez un même fournisseur, en l’occurrence Microsoft : Visual Basic contre C Sharp, VB.NET contre C#.NET.

Lequel est le meilleur ? Aucun des deux.

En fait, il existe un COBOL.NET1 qui est aussi « bon » que nos deux concurrents. Un langage moderne, ça ne fait pas grand-chose à priori. C’est simplement un outil qui sert à déclarer des variables et des constantes, des routines (méthodes, procédures), des structures de décision ou des boucles. Un If en COBOL, en C++, en VB ou en C#, ça fait la même chose. Si le même If est plus rapide dans un langage que dans un autre, ce n’est pas en raison d’une fonction du langage mais plutôt grâce à une différence de qualité du compilateur.

Le gagnant est le suffixe accroché au nom de tous ces langages.

Le .NET framework2 est un environnement d’exécution d’applications grandement inspiré de Java mais optimisé pour Windows. Un petit système d’exploitation à l’intérieur du système d’exploitation. Il agit un peu comme les premières versions de Windows qui donnaient l’impression d’être un système d’exploitation alors qu’elles n’étaient que de grosses applications MS-DOS.

Le framework comprend une collection de plus de 7 000 classes qui remplacent les commandes des langages de programmation traditionnels. Ce sont ces classes qui font le travail, que vous accédiez à une base de données SQL ou à un simple fichier texte. Pour la majorité des programmeurs, utiliser un langage signifie simplement faire fonctionner ces classes.

Comme les classes fournies par le framework sont les mêmes pour tous les langages – et que le mécanisme d’accès à ces classes est commun – on ne peut plus dire qu’un langage est meilleur qu’un autre. Une String VB et une string C# et une variable Date VB et une DateTime C#. Elles ont simplement une syntaxe différente. Les deux exemples de code suivants activent la même classe StreamReader et le code résultant est donc le même :

VB

    Dim fichier As StreamReader
Dim ligne As String

fichier = New StreamReader("Toto.txt")

While Not fichier.EndOfStream
ligne = fichier.ReadLine
End While

C#

    StreamReader fichier;
string ligne;

fichier = new StreamReader("Toto.txt");

while (!fichier.EndOfStream)
{ ligne = fichier.ReadLine(); }


La seule différence est la syntaxe. Certains programmeurs préfèrent le code plus « humain » de VB, d’autres préfèrent la syntaxe plus concise de C#. Certains considèrent que la sensibilité à la casse de C# est un atout tandis que les amateurs de VB trouvent que c’est une nuisance superflue.

De version en version (aux deux ans en moyenne), les deux langages s’échangent des éléments qui leurs sont propres. VB a eu les types anonymes en 2008 alors qu’ils sont apparus en 2005 en C#. Ce dernier langage a hérité en 2010 des paramètres optionnels et des types dynamiques, lesquels ont toujours existé en VB. Et ce commerce de bonnes idées tire à sa fin. Microsoft a annoncé qu’à partir de la prochaine version du framework, les deux langages évolueraient en parallèle. Rien ne sera ajouté à l’un sans qu’il ne le soit aussi à l’autre.

Préférez-vous vivre en appartement ou dans une maison, avec .NET ou avec Java? C’est une question ouverte au débat. Préférer le bleu ou le vert, VB ou C#, n’est qu’une question de goût qui n’a rien à voir avec la qualité ni avec la pertinence de l’un ou de l’autre.

Il faut avouer qu’à l’installation, Visual Basic souffre d’un gros handicap par rapport à C# : par défaut, les options de compilation y sont réglées pour simplifier la migration des anciennes applications VB classiques et pour rendre .NET plus accessible aux amateurs. Mais il suffit d’une ou deux minutes pour changer la configuration et faire de VB un langage aussi robuste que le C#.

Ce sera le sujet de notre prochaine chronique.

Cours de programmation VB.NET :

Programmation Visual Basic .NET (MN204)

Visual Basic .NET avancé : Programmation objet (MN308)

Cours de programmation C# .NET :

Initiation à la programmation C# (MN105)

ProgrammationC# .NET (MN201)

Programmation avancée C# : LINQ, collections, génériques et métaprogrammation (DE205)


1 - Un grand nombre de fournisseurs indépendants ont développé des langages pouvant être compilés pour l’environnement .NET.

2 - Microsoft ne traduit pas le terme dans sa documentation en français.

© Jacques Bourgeois, Tous droits réservés. 

 

Jacques Bourgeois a formé plus de 4500 personnes au Québec depuis 1994. S'est intéressé à la programmation objet dès le début des années 90, et aux technologies .NET dès le début des années 2000. Jacques Bourgeois est un programmeur d'expérience qui s'est intéressé à la programmation objet dès le début des années 90. Il possède plus d'une vingtaine d'années d'expérience dans le développement et la maintenance d'applications Visual Basic, Access et SQL Server, dans un environnement .NET depuis près de 15 ans.