Developpez.com - Rubrique .NET

Le Club des Développeurs et IT Pro

Le débat fait toujours rage : Que choisir pour développer avec DotNET ? C#

VB.NET, C++, Delphi ?

Le 2003-02-14 15:31:02, par Louis-Guillaume Morand, Rédacteur
Mise à jour 09/08/2013

Ce sondage a été renouvelé pour 2013. Venez participer, cela se passe ici :
Quel est le meilleur langage pour .NET selon vous ?


Allons y lançons le débat. Quel est le meilleur langage pour .NET ?
C# ,VB.NET , C++ ou Delphi ?

Pourquoi avez vous choisi l'un ou l'autre ?
Pour quelles raisons ?
Pour quels besoins ?
Quelles sont vos expériences positives ou négatives concernant ces 2 langages ?
Quels sont leurs forces et leur faiblesses ?
Qu'est ce qui est présent ou absent dans l'un ou l'autre et inversement ?
Vers lequel de ces deux langages se tourner selon que lon est un développeur VB, ou C++, Delphi ou autre ?

Nous ferons surement un article qui synthétisera tout ça !

Merci d'avance pour vos avis.

475 commentaires
  • calagan99
    Modérateur
    Pour ma part, j'ai tout juste deux années d'expérience professionnelle, exclusivement sur du DotNet.
    J'ai passé ma première année sur du VB.Net et la seconde sur de C#.

    Aujourd'hui, je reste sur C# et je ne ferais pas demi-tour sauf si une opportunité vraiment intéressante m'était proposée.

    Néanmoins, j'ai commencé le dotnet (et la programmation) avec VB.Net et j'ai vraiment apprécié ce côté verbeux que beaucoup de personnes décrient. Alors que je débutais, l'abondance de mots-clés, la gestion simpliste des évènements (dans VS, dans l'aspx d'une page, clic sur la DDL des contôles, clic la DDL des évènements liés et hop on retrouve son évènement côté .vb), les structures conditionnelles, le côté laxiste du langage m'ont aidé.
    Plus dure a été la chute lorsque je suis passé à C#...
    J'y est découvert beaucoup plus de rigueur, une gestion des évènements sans raccourcis, etc. Je m'y suis finalement vite fait car je connaissais le framework et n'avait qu'à apprendre la syntaxe du langage, mais je pense que j'aurais autrement plus galéré si j'avais débuté par du C#.

    Je ne regrette pas mon choix et j'apprécie aujourd'hui beaucoup plus de développer en C# mais je ne dénigre pas VB car pour ma part il m'a vraiment été utile.
  • DrQ
    Membre expérimenté
    Je n'ai pas poussé les deux langages, donc difficile à dire. De ce que j'ai pu lire et voir, le C# reste en globalité le langage .NET mais il faut savoir que des fonctionnalités VB.NET n'existe pas en C# entre autre la fonction Redim et Redim Preserve mais qui peut être remplacée par la création d'un tableau plus grand puis une copie grâce à la méthode Array.Copy

    Pour les opérations basiques, VB.NET a l'air plus rapide sur des entiers et longs que C#. Par contre pourles flottants C# est plus rapide. Donc l'un ou l'autre difficile de choisir.

    Pour ma part je programme en C# car le module de génération de documentation est très pratique ainsi que l'auto-complétion pour la doc avec les ///. L'autre raison est que je maintiens des programmes VB6. Donc pour éviter de me mélanger les possibilités de VB6 et VB.NET je programme en C#.
  • Nightfall
    Rédacteur
    C# est un langage neuf, conçu pour .Net. Il n'a pas un long passé comme VB, et ses concepteurs ont donc pu partir sur des bases saines.

    La syntaxe de C# est très proche de celle de C++ et Java. Donc un programmeur C++ ou Java préfèrera C# à VB.Net. Et un programmeur qui ne connait pas C++ ou Java pourra apprendre plus facilement ces deux langages s'il connait déjà C#.

    C# permet d'écrire du code non managé, et supporte la surcharge des opérateurs. Pas VB.Net.

    Et même si j'aime bien la syntaxe de VB, celle de C# est un peu moins lourde.
  • busy999
    Membre du Club
    Je comence en c#, mais je trouve que le vb n'est pas assez strict
  • DrQ
    Membre expérimenté
    Qu'appelles tu moins strict ? Peux être plus précis et donner des exemples ?
  • Manu_Just
    Membre à l'essai
    Pour ma part, j'ai appris VB sur le tas, apres avoir étudier C++ et Java, utilisant du javascript coté client, je trouve la syntaxe VB assez furstrante, c'est une des raisons pour lesquels je passe à C#, la syntaxe étant très "classique" (== syntaxe C, reprise dans de nombreux langages) je ne mélange pas les pinceaux passant d'un langage a un autre (cela pet toutefois aussi êtresource d'erreur).

    Les possibilités de documentations de C# semblent également très interressantes, mais je ne les ai pas encore testés.
  • neo.51
    Expert éminent
    J'ai fais beaucoup de VB.NET et un peu de C#.

    VB.NET m'a séduit car j'avais déjà fais du VB6 et que la syntaxe de VB.NET reste trés proche du BASIC. Je trouve donc la syntaxe plus simple. Je regrette par contre qu'on ne puisse pas documenter ses classes comme en C# mais des projets open source sont en cours pour palier ce "manque". Au niveau des performence je pense qu'il n'y a pas vraiment des grosses différences. En effet, avec .NET que l'on fasse du C# ou du VB.NET, tout est compilé en CLR. Les différences de performances seraient donc dues au compilateur qui suivant le langage génére un CLR plus ou moins optimisé. Dans certain cas C#, une procédure en C# sera plus rapide à l'execfution, dans d'autre ce sera la procédure en VB.NET, mais aucunne différence de performance trés significative et globalement, un programme entier en C# ou en VB.NET sera aussi rapide à l'exécution.

    Par contre, il y a un point qui pour moi est trés important qui n'a pas été abordé. VB.NET est un langage propriétaire de microsoft donc tous les outils pour programmer en VB.NET seront fournis par microsoft et donc par conséquent pour .NET.

    Le C# lui a des spécifications publiques : http://www.ecma.ch/publications/standards/ECMA-334.HTM

    Chacun peu donc faire son compilateur C#. Borland va même faire un EDI pour le C# : http://www.developpez.net/forums/vie...ic.php?t=57410

    Cet EDI pourra utilisé le framework .NET mais aussi des classe de l'EDI de borland. Ce que je veux dire c'est que le C# dépasse largement les frontières du framework.NET : vu que les spécifications sont publiques rien ne vous empèche d'utiliser un framework "maison" avec C#. C'est un peu ce qui se passe avec le projet go-mono qui est un framework qui ressemble au framework .NET de linux.

    Pour conclure je dirais :
    Si vous ne faites et voulez faire que du .NET
    Si vous venez de VB6 ou un autre langage BASIC, orientez vous vers VB.NET.
    Si vous vennez de java ou de C++ orientez vous vers C#.

    Par contre, à l'avenir d'autre solutions que le framework .NET vont voir le jours pour C#...

    wait and see
  • leduke
    Membre chevronné
    J'ai une préférence pour le C# car j'ai beaucoup pratiqué le C++, sa syntaxe m'est dons assez familière.

    Le débat est vaste et je crois qu'il n'y a pas de réponse dans l'absolu. Le choix dépend surtout du vécu de chacun. Les utilisateurs de Visual Basic vont forcément se tourner vers VB .Net en pensant que l'apprentissage en sera facilité. Pour ma part, je n'en suis pas convaincu, VB .Net est tout de même trés différent de Visual Basic. Les utilisateurs de Java et de C++ vont plutôt utiliser C#.

    Pour ce qui est des performances, tu as très bien répondu globalement les performances doivent être similaires.
  • Vincent_Moreira
    Nouveau Candidat au Club
    En fait, quelque soit le language utilisé ( vb.net, c#,c++ ) sous une plaforme .net auront des performence absolument IDENTIQUE pour la simple raison que le code assembleur produit est exactement identique.

    Evidement pour arriver à ca, certaine caractéristique des languages ont été zappé ( comme l'héritage multiple en c++ ) afin d'arriver à une total compatibilité.

    il y a néanmoins une question que je me pose, combien de temps cela prend il pour compiler un projet ?

    Sur d'autre compilateur, la compilation de projet conséquent prenait du temps. Dans le .net, il y a une couche suplémentaire qui est la traduction du code en common language.

    est ce que cela ralenti énormément la compilation ?
  • DrQ
    Membre expérimenté
    Envoyé par Vincent_Moreira
    En fait, quelque soit le language utilisé ( vb.net, c#,c++ ) sous une plaforme .net auront des performence absolument IDENTIQUE pour la simple raison que le code assembleur produit est exactement identique.
    Nop, le compilateur VB.NET et différent de celui de C#, et quelques différences de performances sont visibles mais rares. L'exemple le plus flagrant c'est les entiers (long) et les flottants (double). Dans les deux langages on n'a pas le même temps pour effectuer des calculs sur ces deux types de données.