it-swarm-fr.com

Vb.net vs c # débat

J'ai été dans des lieux de travail où, au début d'un projet, la question "Devrions-nous utiliser VB.NET ou C #" a été soulevée.

Certes, il est probablement moins courant de devoir faire cette décision maintenant qu'au début de .NET, compte tenu de la tendance à la convergence des langues, mais il peut toujours être un débat animé.

Donc, entre vb.net et c #, quelle langue préférez-vous et pourquoi?

17
Damovisa

Je préfère c # sur vb.net parce que

  • il est plus facile de trouver des programmeurs/emplois:

alt text

  • il est plus facile de trouver de l'aide:

alt text

(de Stackoverflow)

29
hyperslug

Je déteste vb.net. Les jours que je passais toujours en utilisant sont les jours que je regrette. Cela dit, mes goûts font partie de ma situation et de ma expérience et n'ont pas nécessairement aucune pertinence pour ce que vous faites ...

Je pense que c'est important, lors de la comparaison des langues en constante évolution, telles que c # et vb.net, de regarder en arrière leur histoire et de voir comment ils sont arrivés à leur état actuel:

Les avantages originaux de base sur les micro-ordinateurs comprenaient la taille et la simplicité (petite syntaxe facile à analyser réalisée pour les petits interprètes et les interprètes rapides et la salle de gauche en mémoire pour le programme et les données réels), un environnement interactif qui a permis une expérimentation et une syntaxe Les symboles et les structures de TERSE éperinés pour une syntaxe raisonnablement claire en forme d'anglais. Il était mal adapté aux grands programmes structurés et tendamment à encourager le code des spaghettis. Néanmoins, sa disponibilité et sa simplicité ont fait un excellent choix pour une introduction à la programmation.

QuickBasic a mis à jour la syntaxe pour permettre de grands programmes plus structurés et une compilation supplémentaire pour une exécution plus rapide.

VisualBasic a fourni un constructeur de formulaire puissant et facile à utiliser pour permettre une construction rapide des applications de l'interface graphique, tout en adoptant la syntaxe QB pour une utilisation dans la script de ces UIS. Il a fonctionné mieux lorsqu'il est utilisé pour créer des UIS pour une logique de bas niveau fournie sous forme de composants pré-construits (généralement écrit dans une autre langue). Au fil du temps, la syntaxe est devenue de plus en plus grande et incompatible à mesure que de nouvelles caractéristiques ont été classées. L'accent mis sur l'établissement d'une interface utilisateur d'abord puis de remplir des bits de script a bien fonctionné pour les petites applications centrées sur l'interface utilisateur, mais a eu tendance à encourager la programmation de pâte à copier et une variation de code Spaghetti tout en décourageant la réutilisation, les structures de données complexes et séparation des préoccupations. Dans l'esprit de nombreux, "Code VB" est devenu synonyme de "grande boule de boue"; "Programmer VB" avec "Hack inexpérimenté".

VB.NET est une langue de type VB sur la plate-forme .NET, une tentative (pas entièrement réussie) pour nettoyer et moderniser la syntaxe surprogrammée VB. Il n'était pas parfaitement compatible avec le code existant VB et n'a fait aucun effort pour fournir une compatibilité avec VB formulaires (sans doute la partie la plus importante de VB). Cela a laissé de nombreux propriétaires de produits VB avec le choix désagréable de réécrire efficacement leurs applications dans VB.NET (traitant des incompatibilités subtiles dans toutes les routines qui n'étaient pas examinées soigneusement) ou en fait = réécrire leurs applications en C # (traitant d'une syntaxe inconnue En plus de la nouvelle bibliothèque d'exécution et concepteur de formulaires). La plupart des utilisateurs VB.NET étaient des utilisateurs VB qui sont bloqués avec elle pour la syntaxe seule, beaucoup l'utilisent comme une béquille en apprentissant C #. En conséquence, il a immédiatement pris une réputation de refuge pour les programmeurs qui étaient restés coincés de leur manière, peu disposés ou incapables d'étendre ou d'améliorer leurs compétences.

À ce stade, VB.NET continue d'évoluer, de perdre progressez des bagages tout en ramassant une nouvelle et intéressante syntaxe (LINQ, XML littéraux). Néanmoins, il conserve presque aucun des avantages originaux de base: c'est une langue large et complexe avec une courbe d'apprentissage assez escarpée et une opportunité limitée pour une expérimentation interactive.

  • Pour les anciens programmeurs qui l'ont frappé au cours des 30 dernières années, ce n'est pas un mauvais choix, à condition qu'ils ne se limitent pas à elle.
  • Pour les nouveaux programmeurs, la ressemblance de plus en plus vague des programmes VB à l'anglais ne vaut guère la peine de nouer des hochettes bizarres à la compatibilité et à la stigmatisation sociale.
  • Pour les nouveaux Projets, vb.net est un choix étrange, sauf si le projet est fortement impliqué dans l'une des rares tâches que la langue est optimisée pour: Intégration avec des composants COM malped (bureau ... ) (Bien que C # 4.0 réduit considérablement cet avantage), ou en ligne XML génération.
27
Shog9

Je connais des deux, mais j'ai fait beaucoup de mes premiers programmes de programmation dans VB4, VB5 et VB6. Maintenant que les deux langues de .net ont traversé quelques itérations et convergèrent un peu dans leurs capacités, je pense que le débat est carrément idiot, beaucoup semblable à "Quelle est votre couleur préférée".

Personnellement, j'aime les deux pour des raisons différentes.

vb.net
Beaucoup de gens parlent de la manière dont la syntaxe C # est plus intuitive, mais qui est très subjective et basée sur ce que vous avez commencé à savoir. Je dirais que si vous étiez complètement objectif, la syntaxe VB.NET est probablement plus intuitive si vous ne présumez pas de connaissances antérieures dans une autre langue. Par exemple, étant donné le même programme en C # et VB.NET que vous pensez être plus déchiffré à une personne qui n'a aucune connaissance de la programmation. Cela me semble assez clair.

L'autre chose qui est agréable à propos de cette syntaxe, c'est que c'est beaucoup plus explicite sur les structures de fermeture (fin de la fin, de la fin, XXe X) par rapport au modèle de bracketing. Il rend le code un peu plus lisible et permet souvent au compilateur d'être plus précis dans quel numéro de ligne provoque exactement des erreurs de compilation. Si vous êtes déjà allé sur une chasse de support/semi-côlon manquant à cause d'une erreur de compilateur 50 lignes du problème, vous savez ce que je veux dire.

En outre, dans la colonne Win VB.NET à mon avis est absence de ==/= comme comparateur/opérateurs d'affectation. Les rares avantages d'avoir un opérateur distinct pour chacun ne vont jamais compenser tout le (parfois) difficile à découvrir des faiblesses que cela aide à créer.

Enfin, je déteste la sensibilité des cas dans la programmation des langues. L'une des plaintes concernant VB est-elle qu'elle a tellement de bagages, mais c # portait l'albatros de la sensibilité du cas de C. Je n'ai jamais été dans une situation où je voulais deux identifiants dans la même portée Ne différer que par le cas. Cela fait simplement un travail chargé et me ralentit. vb.net obtient quelques points sur C # à cet égard de moi.

C #
Les programmeurs aiment être concis, c'est pourquoi je pense qu'ils favorisent généralement cette syntaxe. Cela a juste un certain appel esthétique. Cependant, à partir d'une perspective complètement pratique, j'aime bien parce que c'est tellement similaire à des langues comme Java, JavaScript et C++.

Depuis que je fais de nombreux développements Web nécessitant une programmation par le serveur et le client, je trouve plus facile à basculer mentalement entre C # et JavaScript, car je suis souvent nécessaire de le faire.

Aussi j'aime bien le fait que, pour la plupart, que si je devais jamais faire la transition à faire Java ou C++, j'aurais un peu d'une tête de départ si j'utilisais le plus c # du temps.

20
JohnFx

Je préfère la syntaxe de support des langues de style C à la syntaxe plus "verbeuse" des langues de style de base.

Mon introduction à la programmation était avec Turbo Pascal. (Le peu de programmation de base que j'ai faite sur le Commodore 64, en tant qu'enfant, ne compte pas vraiment.) Après avoir appris Java Je n'ai jamais regardé en arrière et que vous avez préféré la syntaxe de style C.

19
George Marian

Ils sont fonctionnellement les mêmes, il n'y a rien que vous puissiez faire dans un seul, vous ne pouvez pas faire dans l'autre, et pour que le futur Microsoft a promis que les équipes de langue développeront les deux uniformément, il est donc probable que l'équivalence est peu probable.

Les différences sont maintenant purement culturelles et personnelles. Cet article est une lecture intéressante sur les différences entre les cultures des programmeurs utilisant c # et vb.net

[Remarque: bien que je suis moi-même, la conclusion de l'article lié ne reflète pas nécessairement mon opinion personnelle, c'est une approche alternative intéressante dans le débat]

11
Simon P Stevens

Je suis venu à .Net de C et C++ (avec un peu de Java, Ada et Pascal jeté dans) alors c # était la progression naturelle pour moi.

Si un emploi est arrivé cela nécessitait vb.net, je ne le ferais certainement pas.

8
ChrisF

J'ai fait beaucoup de travail avec vb.net, mais je comprends assez C # pour obtenir le gist de ce qui se passe dans le code. Ma préférence actuelle est VB.NET parce que je le connais le plus (évidemment), mais je n'ai pas vraiment de préférence entre la syntaxe de base Verbose et la syntaxe de style C, les deux sont très lisibles et compréhensibles pour moi.

La plupart des antécédents de programmation de mes collègues sont COBOL et VB6, donc vb.net était le choix de langue plus confortable .NET pour nous en équipe. Nous n'avions pas une raison solide pour que nous ayons fait apprendre C # une exigence puisqu'elles sont fonctionnellement identiques.

Cela dit, l'apprentissage C # est très définitivement sur ma liste de choses à faire.

6
user95

En plus des autres réponses publiées ici, je choisirais C # Over VB car c # Les programmeurs sont payés plus. Plus d'expérience avec c # = plus $$ :)

Je sais que les deux langues sont presque identiques et c'est vraiment facile à basculer entre les deux, mais je pense que lorsque la direction regarde une bande d'accolades et de semi-colons, ils acceptent le fait que nous faisons quelque chose qu'ils ne peuvent pas faire, où avec vb. NET Ils pourraient le regarder et aller "Oh, ce ne doit pas être si difficile à faire si je peux le comprendre".

5
Rachel

C # parce que je peux basculer entre elle et Java avec un effort minimal

Vb.net est une syntaxe entièrement différente. C #, étant similaire à Java et d'autres langues me donne une meilleure position pour s'adapter rapidement à de nouvelles choses. Puisque la sortie de C # et VB.Net est pratiquement interchangeable, il est logique de passer avec C # . De plus, si le code de votre entreprise est en C #, vous êtes plus susceptible de pouvoir former A Java Developer Comment le code C # que A Java Developer VB. Il n'y a que des avantages subtils, mais subtils reste un avantage.

4
Ryan Hayes

Être un peu plus dev (est 59 " un peu " plus?), J'appris de base d'abord sur un Commodore VIC-20, moi-même enseigné Turbo Pascal (v1!), Je suis allé à apprendre COBOL à l'université, et a passé 14 ans de développement sur IBM mainframes, avec de brèves diversions écrire une des applications de taille moyenne dans l'Apocalypse BASIC (une variante de PICK BASIC) et quelques utilitaires dans Modula-2, avant Esquive vers VB5 et VB6. Et puis est venu .NET.

En raison de mon expérience de base, je pensais que je devrais commencer avec VB.NET, pour constater que je continué à essayer de faire les choses comme " vieux " et il me rend dingue (ok, plus noix ). Etant donné que je l'avais fait un peu de travail en C, je pensais que je donnerais C # un tourbillon de voir comment cela allait. Et OMG, qui était comme sortant d'un tunnel sombre en plein jour! Totalement inattendu. Et je l'habitude de faire déprécier des bruits au sujet de C étant une langue " écriture seule " - " si difficile à comprendre qu'un programmeur C ne pouvait pas comprendre ce que son propre code a fait 6 mois après qu'il a écrite ", une observation faite par romancier semi-célèbre que je pensais sondé mignon à l'époque.

Ainsi, en vertu d'être un peu familier avec C, C # était plus facile pour moi, paradoxalement, d'apprendre la programmation .NET dans que le beaucoup plus devrait-être familier paradigme de base. Je aime toujours VB6, mais suis venu à l'amour C #. Le meilleur langage de programmation sur la planète.

3
Cyberherbalist

Je développe dans Visual Basic .NET depuis 2001 et j'adore ça et je le déteste !!!

L'ordre de présentation de ces points est basé sur l'ordre dans lequel il est venu à mon esprit ...

Dans VB.net avec Visual Studio, il y a une pause de ligne visuelle entre chaque méthode, une propriété. Pour beaucoup de gens, ce n'est pas une bonne raison de préférer VB.NET sur C #, mais je ne comprends pas pourquoi l'équipe C # chez Microsoft ne l'a pas implémentées. Il existe un complément qui dessine cette ligne en C # mais Microsoft pour avoir une équipe C # et une équipe de base visuelle qui ne se parlent pas.

Dans VB.NET, lorsque vous créez une WINFORM, vous avez deux Combobox dans Visual Studio en haut de l'éditeur et vous pouvez générer automatiquement un événement automatiquement lors de la sélection d'un événement sur la droite ComboBox. Lorsque vous attachez des dizaines d'événements chaque jour, il peut être très encombrant de ne pas avoir cette fonctionnalité. Avec C #, vous avez un petit bouton en haut de la grille de la propriété pouvant générer un événement, mais ce n'est pas rapide comme dans vb.net. De plus, si vous attachez un événement de contrôle en C # et supprimez la commande sur le formulaire, le délégué créé sur le code généré automatiquement pour gérer l'événement doit être supprimé manuellement. Merci encore Microsoft.

Dans VB.NET, lorsque vous essayez de modifier une méthode contenant une requête LINQ sans modifier la requête elle-même, aucun problème, mais en C #, tout le code de méthode est verrouillé. Si vous avez beaucoup de requêtes Linq ou de Lambda Expression, la fonctionnalité Edit et Continuez sera rapidement une bonne chose ancienne. Ok, un peu d'exagération ... mais :)

Dans VB.net, lorsque vous créez un nom de méthode et appuyez sur Entrée, le "Sub SUB" sera automatiquement créé. En C #, faites-le vous-même. OK, si vous avez installé Resharper ou Devexpress, ce sera mieux, mais pourquoi toutes ces petites mais de grandes fonctionnalités n'ont pas été mises en œuvre dans C #.

Dans VB.net, lorsque vous avez des erreurs sur votre code, les erreurs sont automatiquement affichées et lorsque vous le corrigez, ces erreurs sont supprimées de la pile en temps réel. En C #, vous devez construire votre projet pour vous rendre compte que vous avez corrigé avec succès ou non les erreurs spécifiées. Pourquoi l'équipe C # n'a pas mis une option pour vérifier dans une erreur en temps réel comme dans vb.net. Avec une grande solution, aucune vérification de l'erreur en temps réel ne peut être une très bonne optimisation des performances, mais j'aime voir une pile d'erreur de désapprouver que je le corrige.

Comme une autre personne a mentionné, je pense qu'il est plus facile de lire la condition VB.NET si..end si, sélectionnez case ... Fin Sélectionnez mais avec le support de peinture de DevExpress, oubliez ce que j'ai dit.

Avec VB.NET, il existe de nombreux bugs dans Visual Studio. Juste pour en parler un dans Visual Studio 2010, les IntelliSens ne filtrent pas correctement l'énumération si vous avez le mode "commun" activé au lieu de "tous".

Avec VB.NET, vous êtes perçu comme un gars factice parce que statiquement, des programmeurs plus mauvais utilisent VB.NET au lieu de C # car c # est plus difficile d'apprendre et de promouvoir de meilleures pratiques de programmation.

Comme d'autres disait, le programmeur C # a une meilleure chance d'avoir un bon travail avec plus d'argent.

Dans la tête du client, vb.net = gars qui programment dans son sous-sol avec un bol des spaghettis du code. C # = wow, vous êtes très intelligent. Le fait est que ce n'est pas parce que vous programmez dans C #, que vous faites un bon programme mais que vous êtes statiquement, oui.

Avec tous ces points, j'ai choisi de convertir tout mon code VB en C #. Je programme avec toutes les meilleures pratiques d'objet orienté, modèle de conception, code de nettoyage avec des normes et une syntaxe stricte et je peux programmer comme celle-ci pendant 50 ans mais des yeux de la communauté, je ne suis pas un bon programmeur. Je vais convertir mon code en C # sans d'autres meilleures pratiques et je serai une autre personne; Un grand gars qui vous devez respecter ..... :( Quelle blague ... !!! Mais c'est la réalité.

3
Samuel

Mettre mes préférences personnelles de côté. Comme quelqu'un qui a recrutement (et essayant d'être recruté) ces derniers temps, lorsque nous avions ce débat au bureau, le consensus général était que nous devions chercher à passer à C # de VB.

Pourquoi? Parce que c # était plus répandu sur le marché (autour de nous quand même), nous permettant de recruter plus facilement et de recruter plus facilement.

On dirait que c'est parti du cercle complet; Les gens apprennent C # parce que les recruteurs le veulent, car il y a plus de candidats.

3
Stu Pegg

Voici une façon de le regarder: entre SO et Codépex, quelle langue est plus populaire? C # ou vb.net?

Parfois, après le troupeau est une bonne chose parce que c'est le troupeau qui va être capable de vous aider quand vous en avez besoin. Par défaut, c # sera plus rapide que vb.net. Je crois utiliser l'option stricte pourrait l'égaliser cependant. La dernière fois que j'ai comparé l'IL entre les deux, la sécurité du type de VB.NET a abouti à ajouter environ 15% de plus à l'IL. Cela se traduit par des frais généraux supplémentaires. Et ... donné des langues qui font fondamentalement la même chose, je vais prendre le plus rapide. Ma commodité ne devrait pas remplacer l'expérience de mon utilisateur en général.

2
MIA

J'aime dire que la seule raison de base est toujours populaire, c'est que c'était le premier produit de Microsoft, et ils le poussent dans nos gorges au cours des 35 dernières années. Il aurait dû être mort il y a longtemps.

Avec cela, j'ai travaillé sur deux projets de Sizeable .NET et les deux ont été faites avec vb.net - bien qu'il y ait un peu de C # parce que la traduction était une chienne ou la construction n'existait pas dans VB.NET. Le seul avantage que je vois avec VB.NET est que l'éditeur Visual Studio est beaucoup plus amical (dans mon expérience de toute façon) qu'elle ne l'est avec C # - IntelliSense semble mieux, et donc la mise au point automatique (note que depuis que je n'ai pas utilisé c # Autant, je peux simplement manquer quelque chose dans la configuration de l'IDE ...)

Un inconvénient majeur dans VB.NET est qu'ils ont apporté une grande partie de la merde VB6-ERA dans .NET 1.X pour faciliter la conversion du code VB6. Ce genre de choses est toujours là et les codeurs VB6 codent du nouveau code en utilisant ces ... "Extensions" plutôt que d'utiliser les classes/méthodes plus neutres. Je ne sais pas combien de fois j'ai demandé à mon patron pourquoi il a toujours utilisé cette merde. "Mais ... ça marche ..." Droite. Hey, j'aime chienne.

Lors de la recherche d'aide sur le Web, j'ai trouvé la grande majorité des solutions étaient en C # - Consultez les forums MSDN, divers blogs, etc. Les livres ont tendance à se concentrer sur C #, et s'il y a un VB Version, elle vient généralement en mois plus tard (par exemple, Pro Linq .... de APRY.)

Beaucoup de langues partagent l'ascendance C, qui fait basculer entre C, C++, C #, Java, PHP et quelques autres plus faciles. PHP est un peu d'étirement ici, mais il a beaucoup de constructions de type C. Vb? Eh bien, c'est à peu près sa propre petite chose et c'est ça.

Un chef de projet de mon organisation m'a récemment dit que de plus en plus de nouveaux projets sont développés en utilisant C # au lieu de VB - enfin. Lorsque .NET a été introduit dans notre organisation, ils sont plus ou moins officiellement allés avec vb.net à cause de tout le codage VB6 qui se passait déjà. Les pouvoirs qui seront plus tard admis à moi que ce n'était pas leur meilleur mouvement.

Comme quelqu'un d'autre en avant l'a souligné, je ne dirais pas non à un projet VB.NET, mais j'espère toujours que cela sera lentement éradiqué du développement plus récent sur mon lieu de travail.

2
MetalMikester

je préfère VB .NET sur c #,

  • (97) ...
  • (98) Parce que j'ai appris VB avant même que je connaisse même sur C #.
  • (99) Parce que j'ai déjà acheté un tome de 10 000 pages sur VB .NET.
  • (100) parce que VB n'a pas d'accolades.
  • (101) Parce que tout le monde déteste VB.
1
systemovich

VB La langue est plus facile à lire pour les débutants, ils ont tendance à écrire leur première, deuxième et troisième application et nous savons tous ce que nos premières applications sont codées de manière terriblement.

Les programmeurs de C++, Java et etc ont déménagé à C # tandis que les développeurs VB.NET proviennent de VBA, VB et fond de base, programmeurs non traditionnels essentiels.

1
Nickz

Eh bien, aujourd'hui, il n'ya guère de raisons pour utiliser vb.net. Au début, il s'agissait simplement d'un moyen de donner dedans VB programmeurs une syntaxe familière, mais était essentiellement un remappage de base de base en C #. Donc, son seul avantage réel est une syntaxe plus familière, et sa La syntaxe de base est également sa seule limite seulement.

Au fil du temps, les deux langues ont évolué à côté, la seule différence significative est l'espace de noms my pseudo.

Je conseillerais chaque programmeur .NET qui n'est pas familier à C # pour l'apprendre, car la communauté est assez grande et la syntaxe de type C est commune à la plupart des langues les plus utilisées.

1
Wizard79

Il semble y avoir plus d'échantillons de code C # en ligne que les échantillons VB.net. Pas comme tout ce qu'il est difficile de convertir l'une à l'autre, mais pourquoi déranger si vous n'êtes pas obligé.

1
patrick

C #. C'est juste parce que j'ai fait C et Java, alors je sens que c # est plus lisible pour moi. C # est pour moi, car vb.net est pour l'ancien VB programmeurs.

0
tia