Pourquoi VB est-il si populaire? [fermé]


28

Pour moi, Visual Basic semble maladroit, laid, sujet aux erreurs et difficile à lire. Je laisserai les autres expliquer pourquoi . Alors que VB.net a clairement été un énorme bond en avant pour le langage en termes de fonctionnalités, je ne comprends toujours pas pourquoi quelqu'un choisirait de coder en VB sur, disons, C #.

Cependant, je vois toujours (ce qui semble être) la grande majorité des applications Web commerciales des "boutiques MS" sont construites en VB. Je pourrais me corriger sur ce point, mais VB semble toujours plus populaire qu'il ne le mérite.

Quelqu'un peut-il aider à répondre à l'une (ou à toutes) ces questions:

  • Suis-je en train de manquer quelque chose avec VB? Est-il plus facile à apprendre ou "plus convivial" que C #? Y a-t-il des fonctionnalités que je ne connais pas?
  • Pourquoi VB / VB.net est-il si fréquemment utilisé aujourd'hui, en particulier dans les projets Web?

4
Comment savez-vous avec quels sites Web Microsoft commerciaux ont été créés?
samjudson

30
"Pourquoi VB / VB.net est-il si fréquemment utilisé aujourd'hui", c'est un peu comme demander "Pourquoi les mules / camions sont-ils si fréquemment utilisés aujourd'hui dans les transports?"
Daniel Daranas

2
Juste pour la postérité, je me tiens (timidement) corrigé. VB a une communauté d'utilisateurs très fidèles, ce qui en dit long.

5
cette question devrait être supprimée.

25
Ne supprimez pas cette question. C'est mauvais et préjugé et subjectif mais cela arrive assez souvent et peut servir de référence.
Konrad Rudolph

Réponses:



42

Je pense que cela dépend d'où tu viens. Au début en tant que programmeur, je pense que VB pourrait être plus facile à lire que C # par exemple, car il repose davantage sur des mots que sur des symboles, ce qui le rend plus facile à comprendre pour les gens ordinaires.

J'étais programmeur VB pendant de nombreuses années et lorsque .NET est arrivé, je travaillais toujours dans VB.NET pendant les deux premières années (je n'ai pas vraiment vu le point avec C #). Maintenant, j'ai quelques années de C # derrière moi et je trouve parfois que le code VB.NET me prend un peu plus de temps pour "décoder" que le code C #. Peut-être parce qu'il s'appuie plus sur des mots que sur des symboles pour certaines constructions ...


5
Vous décrivez exactement ma situation également.

6
Même chose ici - le code VB.NET est plein de "bruit" lorsque vous le regardez du point de vue de la syntaxe de style C. Aucune offense à aucun développeur VB. Exactement ce que vous ressentez lorsque vous passez de C # à VB.

2
d'accord, je ne supporte pas VB.NET - la syntaxe est comme une histoire ... et oui j'ai dû l'utiliser constamment pendant des mois, ça m'a rendu fou, j'adore la syntaxe C #.
Dal

2
Les programmeurs C # ne sont pas des gens ordinaires?
replié à droite le

@rightfold Nope. Les programmeurs VB.net ne sont pas non plus normaux. Les programmeurs VB.net sont plus géniaux que les gens ordinaires et pour C # ... aucun commentaire. = D RÈGLES VB.net !!!!!!!
Anonymous Penguin

27

Ci-dessous, je viens de copier ma réponse dans un autre fil :

Je développe régulièrement en VB et en C #, la plupart de mes revenus ont impliqué C #. Personnellement, je préfère VB pour la plupart (mais pas tous… les lambdas!) Du travail. Je ne peux pas vraiment nommer de gros avantages en dehors de ceux décrits par Jon. En fait, Herfried en a rassemblé quelques-uns sur son site web (en allemand!) Mais ils sont plutôt techniques.

La chose qui me dérange vraiment dans tous les langages liés à C est la syntaxe stupide. C'est purement culturel mais comme quelqu'un qui fait la plupart de son travail professionnel en C ++, et étant assez compétent dans ce domaine, je déteste toujours la syntaxe. Et pas seulement les petites bizarreries de C ++. Non, tout le package. Pourquoi des accolades? Pourquoi les points-virgules (peut-être la décision la plus stupide de toute l'histoire de la programmation)? Pourquoi la stupide syntaxe de cast de style C? Pourquoi est - il pas de mot - clé pour la déclaration variable ( en fait, c'est la décision la plus stupide)?

Il y a tellement de choses qui me rendent vraiment triste et en colère. VB n'est pas un saint, son langage présente d'énormes inconvénients. Mais rien par rapport à ce que j'ai dit plus haut.

Je me rends compte que la plupart de ces déclarations doivent être justifiées, mais j’avance que ce n’est que parce que nous nous y sommes habitués. De plus, ce n'est pas le bon endroit. Il suffit de dire que la syntaxe de C #, tout en étant son principal avantage sur VB, est également son principal inconvénient.

Je ne préfère pas VB à cause de l' Myespace de noms, je ne le préfère pas à cause des littéraux XML, je ne le préfère pas à cause d'un typage faible, je ne le préfère pas à cause de paramètres optionnels, ou à cause du bien meilleur switchdéclaration. Non, je le préfère à cause de la syntaxe.


Cela dit, je dois admettre que VB devient de plus en plus encombré par sa syntaxe. Le dernier battage médiatique semble être les requêtes Linq paramétrées avec des fonctions lambda et j'admets facilement que cela rend beaucoup de choses plus simples. Malheureusement, la syntaxe de VB pour les lambdas est tout simplement trop lourde pour rivaliser avec C #. Considérez à quel point un appel est gonflé Parallel.Foren VB - par rapport à C #, où il semble naturel. À mon humble avis, l'équipe de conception VB est allée dans la mauvaise direction, privilégiant la cohérence conservatrice à la lisibilité.


Pour répondre à votre accusation subjective:

Pour moi, Visual Basic semble maladroit, laid, sujet aux erreurs et difficile à lire.

Vous avez certainement le droit de le penser, mais comme Marc l'a dit ci-dessous, vous aurez du mal à argumenter cela objectivement. Je peux certainement citer un certain nombre d'éléments de syntaxe C qui sont objectivement plus sujets aux erreurs que tout ce qui existe dans VB. En fait, la syntaxe VB a été développée pour empêcher explicitement de telles situations.

«Maladroit, laid… et difficile à lire» sont tous des qualificatifs qui peuvent être étiquetés dans presque toutes les langues que vous ne connaissez pas. Autrement dit: la laideur est une conséquence directe de votre méconnaissance de la langue.

Bien connaître une langue signifie reconnaître les modèles dans le code. Un code bien écrit apparaîtra virtuellement élégant, tandis qu'un mauvais code (lent, sujet aux erreurs) apparaîtra laid. C'est aussi simple que ça.


Une dernière remarque: les articles que vous citez contiennent plusieurs inexactitudes et informations obsolètes. Comme seule justification d'une discussion hautement subjective et émotionnelle, ils ne sont pas très bien adaptés.


4
Blake: oui, plein de points pour Ruby. Enfin une langue qui le fait bien. Python obtient également de bons résultats avec moi. Pourtant, je suis partiellement insatisfait de toutes les syntaxes existantes.
Konrad Rudolph

2
Ruby craint: P ... maintenant que j'ai éliminé cela ... la vraie raison des différences de syntaxe majoyes entre les mots-clés basés sur les accolades se résume à la facilité d'écriture de l'analyseur. J'étais un grand fan de VB (BASIC en général) mais depuis que je suis passé en C #, je trouve que c'est beaucoup plus facile et plus rapide de travailler.
Matthew Whited

4
Pourquoi des accolades? Parce qu'ils délimitent visuellement un bloc de code, s'ils sont utilisés correctement. Oui, je réalise que l'indentation dans VB le fait aussi, mais les accolades le font avec une plus grande clarté IMO. Les points-virgules facilitent les choses pour le compilateur (demandez simplement à l'équipe du compilateur VB à ce sujet). Je trouve le casting en C # très intuitif et compact. Et il y a un mot clé de déclaration de variable:var
Robert Harvey

1
@Robert Harvey: 1) VB utilise des mots clés pour désigner les blocs, pas l'indentation. Voilà pour la clarté. 2) Concernant le casting, C ++ a correctement choisi de déprécier le casting de style C il y a longtemps car il est trop peu visible visuellement (ce n'est pas une bonne chose; un casting doit se démarquer, car il introduit une sémantique modifiée et des faiblesses potentielles de l'utilisation du type). 3) Non. Je voulais dire un indice syntaxique précédant chaque déclaration. var int xvient à l'esprit. Toutes les autres instructions et blocs sont introduits par des mots clés dédiés, pourquoi pas des déclarations de variables et de méthodes? Fie. Incohérent et laid.
Konrad Rudolph

4
@ Konrad: Je dois admettre qu'il a fallu un peu de temps pour s'y habituer au début. Une partie de la différence philosophique peut être que je ne considère plus mon langage de programmation comme une variante de l'anglais, comme je le faisais lorsque je programmais en VB. Le passage en C # a rendu le langage de programmation que j'utilise un peu plus symbolique (et succinct), sans être trop opaque. Ce symbolisme m'a donné la liberté mentale de penser de manière plus conceptuelle à des choses comme l'orientation d'objet, la transmission de messages et les lambdas.
Robert Harvey

15

Pour moi, Visual Basic semble maladroit, laid, sujet aux erreurs et difficile à lire.

Pour moi, l'anglais semble maladroit, laid, sujet aux erreurs et difficile à lire, surtout écrit par des gens qui ont une grammaire médiocre, une mauvaise orthographe, un mépris insouciant pour la capitalisation et la ponctuation, et aucun sens de la façon d'organiser spatialement et mentalement leurs pensées.

Ce n'est pas seulement que Visual Basic est difficile à lire ou maladroit à cause de la syntaxe du langage, mais c'est généralement le cas parce que le programmeur n'est pas vraiment bon pour exprimer ses propres pensées:

If blah = 10 Then If stuff = "foo" Then t = 1 + k: s = 42: dostuff21

C'est horrible. Mais il n'est pas non plus particulièrement difficile d'écrire du code horrible dans d'autres langues. Une fois écrit correctement, cela aurait beaucoup de sens même si le code est écrit en VB:

If SelectedType = 10 And UserName = "Foo" Then
    CurrentUsers = CurrentUsers + 1
    UserConnectionID = 42
    PerformUserOperation
End If

Au moins, c'est plus lisible et compréhensible. C'est toujours BASIC. Cela revient vraiment à la capacité du programmeur d'exprimer clairement ses intentions en formatant le code d'une manière facile à lire, en utilisant des identificateurs bien nommés et en prêtant attention à l'écriture de code compréhensible.

Cela dit, je n'ai pas beaucoup touché à Visual Basic depuis les jours VB3 (d'où l'exemple de la "vieille" syntaxe), mais ce n'est pas parce qu'un langage peut être abusé qu'il ne peut pas être utilisé correctement pour écrire du code assez robuste. . Bien sûr, il peut y avoir des lacunes, mais les approches conçues pour contourner ces problèmes montrent également les compétences d'un programmeur par rapport à un autre.

(La pulvérisation sans discernement On Error Resume Nextvient à l'esprit comme un moyen pas si bon de contourner les lacunes du manque d'exceptions dans VB dans les jours pré .NET.)


13

La plupart de vos arguments contre VB ne s'appliquent qu'à VB-Classic (deuxième lien) ou sont basés sur des arguments faibles ou obsolètes

  • Même dans VBC, vous n'utiliserez pas GoSub ... Retour etc.
  • Qu'est-ce qui ne va pas static? C ++ le prend également en charge.
  • VB10 introduit la continuation de ligne implicite (vous n'avez même pas besoin d'une sémicole redondante comme C #)
  • Les différentes fonctions de conversion existent également en C ++ et C #. La (object)(expr)syntaxe Cast de C # object as typeest encore plus confuse et incohérente.
  • Qu'est-ce qui ne va pas with? Vous pouvez créer des structures arborescentes imbriquées de manière très intuitive, ce qui n'est pas possible en C #.
  • La gestion des événements en VB est beaucoup plus élégante qu'en C #. Vous pouvez introduire et les événements de la poignée par un seul mot clé ( WithEvents) sans avoir à initialiser les délégués, eventhandler-procs etc. Cela rend l' interface graphique de programmation en VB beaucoup plus confortable et vous n'avez pas besoin de générer de code d'événement par le concepteur .
  • Les paramètres facultatifs sont introduits dans le nouveau C # - Par conséquent, ils semblent être bons.
  • VB.NET a deux opérateurs stricts et booléen raccourci.
  • Vous ne vérifier les erreurs de syntaxe au moment de la compilation , sauf si vous exécutez VB comme un langage de script.
  • End Ifest plus utile que juste }. Lorsque End ...vous avez des structures syntaxiques complexes, toutes les accolades sont juste déroutantes tandis qu'un béton vous aide à déterminer quel bloc n'a pas été fermé.
  • Littéraux XML - Le script XML fait désormais partie du code, entièrement pris en charge par intellisense.

Dans l'ensemble, il y a juste quelques différences objectives entre VB.NET et C # en dehors de la syntaxe. EG: La conception graphique est beaucoup plus efficace en VB grâce à un meilleur système d'événements et un meilleur IDE alors que par exemple les algorithmes peuvent être mieux exprimés en C # car la syntaxe est concise.

Le reste n'est qu'une question de style personnel. Les programmeurs de style C se sentent à l'aise avec C #, VB (ou peut-être Pascal?) - Les programmeurs de style utilisent VB.

Mais la syntaxe VB basée sur des mots et plus explicite peut être plus facile à lire pour les débutants que tous les symboles en C. Comparez:

If (a < 15) Xor (b = 2) And Not Condition Then

à

if ((a < 15) ^ (b == 2) && !Condition())

Cela ne signifie pas qu'une langue est meilleure qu'une autre.

Modifier : -----------------------------------------

Pour l'argument VB serait sujet à erreur. Lorsque vous l'utilisez, Option Strict Onil est aussi strict que C # mais ne nous permet pas de faire de telles erreurs:

// VB would initialize with zero (C/C++ doesn't)
int countZeros;
// No confusion with loop bounds with For x = 1 To Length
for (int i = 1; i <= length; i++) {
    // Never confusing == with = 
    if (data[i] = 0) 
        countZeros++;
}

1
C # donnerait une erreur de compilation pour ne pas initialiser countZeros (dans la portée locale) et pour affecter une valeur aux données [i] dans l'instruction if. Je sais que vous avez fait référence à c / c ++ dans votre commentaire, mais je pense que l'OP comparait VB à C # :)

1
À mon avis, le VB10 bat le temps en C # 10!
Shimmy

J'aime tous les langages: LISP, C, VB, PHP, vous l'appelez.
systemovich

+1 et j'ajouterais que la déclaration Switch de VB n'est pas inutile comme celle de C #.
Joel Brown

12

Historiquement, l'environnement de développement VB était un moyen rapide et efficace de créer certains types d'applications (par exemple, les applications GUI). Cela a conduit à ce que ce soit un choix très populaire. Je pense que VB était le langage le plus utilisé à son apogée (par exemple VB6).

Avec ce type de base installée, il n'est pas surprenant qu'il y ait encore beaucoup de travail en cours.


2
+1 afaics VB6 et en particulier VS IDE ont fourni une barrière d'entrée (très) faible qui a créé une génération de nouveaux codeurs, avec tous les problèmes et les possibilités qui s'y trouvent

7

Tout a commencé avant que C # n'existe

En ~ 1999, nous avions Visual Studio 5/6. Si vous étiez un fournisseur de logiciels indépendant ou une entreprise utilisant Windows et que vous aviez besoin d'une application écrite qui pourrait, par exemple, suivre le temps passé par un employé sur des projets, vous aviez quelques options:

  1. Formulaires en Visual Basic.
  2. MFC, ATL ou Win32 dans Visual C ++.
  3. Formulaires dans Access 97/2000.
  4. Site Web ASP.
  5. Applet Java.

À l'époque, nous étions juste avant l'éclatement de la bulle Dot-Com, donc tous ceux qui étaient bons avec (4) ou (5) sont partis négocier des options d'achat d'actions à n'importe quel incroyable dot-com qui les attirait.

(3) avait des problèmes avec le verrouillage et l'évolutivité globale, mais j'ai vu beaucoup de solutions pilotées par Access qui permettraient d'exécuter des fonctions de support selon les besoins.

Cela nous laisse donc avec VB et VC ++:

L'éditeur de formulaires dans VB était, à l'époque, excellent pour la productivité. Vous pouvez glisser-déposer vos composants - pas seulement des boutons, des étiquettes et des zones de texte, mais la boîte à outils complète des «contrôles OLE» de composants réutilisables comme des grilles intelligentes, des feuilles Excel ou des instances IE. Le câblage a été fait dans les coulisses - tout ressemblait à un objet et vous venez de double-cliquer sur des choses pour ajouter des gestionnaires d'événements. Cela a été beaucoup plus difficile dans Visual C ++. En tant que membre de l'équipe de support de développeur Visual Studio à l'époque, je me souviens comment les appels de support Visual Basic étaient principalement sur le composant qui était le mieux à utiliser ou comment optimiser leur application de certaines manières. Ce n'était presque jamais «comment créer une application avec les fonctionnalités d'interface utilisateur X, Y et Z».

La création d'une interface utilisateur riche en Visual C ++ était un défi différent. Bien que Visual Editor prenne en charge les boîtes de dialogue et les formulaires SDI / MDI, il était assez limité. La prise en charge de l'intégration de contrôles OLE (ActiveX) dans MFC ou Win32 était un art noir, bien qu'un peu plus facile dans ATL. Le câblage de choses simples comme redimensionner des événements ou dessiner par le propriétaire était assez pénible, sans parler des points de connexion requis pour les événements personnalisés dans les composants.

Oui, VC ++ avait la vitesse d'exécution, la capacité de débogage et les options de frameworks / bibliothèques / UI flexibles, mais le support IDE ne pouvait pas couvrir tout ce terrain, donc a abordé les opérations les plus courantes avec des choses comme des assistants, des hiérarchies de classes MFC complètes et 90 jours / 2 lignes d'assistance gratuites.

IIRC, le packager d'application fourni avec VB, peut emballer votre application, le runtime VB et les dernières DLL de contrôles communs et vous fournir un programme d'installation EXE autonome que vous pouvez mettre sur un CD et remettre aux clients. Rien de tout cela "quels msvcrtXX.dll et mfcxx.dll avez-vous installé?", Ce qui a tourmenté les développeurs MFC.

Ainsi, pour des raisons de temps de mise sur le marché et d'interface utilisateur riche, VB a obtenu un très grand succès.

Lorsque Visual J ++ et Visual Interdev ont frappé dans VS6, il était clair que l'IDE Visual Basic avait remporté une bataille contre celui de Visual C ++, qui était juste à mon humble avis. Il n'était pas du tout surprenant que Visual Studio .NET disposait d'un éditeur de formulaires de type VB pour le nouveau langage COOL C #.

Le nouveau langage de type Java / C / C ++ couplé avec le concepteur d'interface utilisateur apprécié par les personnes VB pendant tout ce temps a donné un nouveau chemin de migration pour les personnes C ++ qui ont maintenant terminé avec MFC / ATL / Win32. Pour les personnes VB 3/4/5/6 qui n'aimaient pas le manque de compatibilité à 100% en arrière dans VB.net, cela a offert l'occasion d'apprendre une nouvelle langue dans un environnement familier.


Les raisons pour lesquelles VB était un produit si complet ont probablement quelque chose à voir avec les origines de Microsoft, Basic étant leur produit phare pour les développeurs, mais je n'ai pas de citations pour le moment.


6

Quelle que soit la laideur d'un langage donné, les raisons pour lesquelles il faut s'y limiter se résument généralement à: il est très coûteux de supprimer une énorme base de code et le fait que les développeurs connaissent déjà le langage, le rend moins cher à utiliser que les autres langages.


6

VB.NET est plus facile à apprendre, vous avez raison, et c'est plus facile dans l'ensemble que C #, à mon avis. C'est le premier point pourquoi VB est si populaire. Un autre, et le point le plus important, je pense, est qu'il existe une énorme communauté de développeurs qui ont travaillé avec VB 6 et des versions antérieures de ce langage et il est plus facile pour eux de développer des applications avec VB.net que d'apprendre un nouveau langage.


6

Comme d'autres l'ont dit, votre jugement esthétique sur la syntaxe du langage dépend fortement de ce que vous saviez auparavant. Depuis plus d'une décennie, il semble que ce soit un concours de type C, avec des accolades pour les "blocs", "->" pour l'indirection (perl, php), des parenthèses pour les arguments d'appel de fonction, // pour commentaires et un point-virgule à chaque extrémité de la ligne. Certaines personnes ont même pensé que grâce à cette «pensée unique», si vous connaissez une langue, vous les connaissez toutes, ce qui est en effet ridicule. Mais cela a inculqué l'idée parmi les gens C ++ / Java qui est la seule esthétique de syntaxe correcte et tout le reste essaie de cloner COBOL.

Il y a quelques années, je suis passé au rubis, et maintenant au python, et je ne supporte plus les points-virgules laids, les accolades et autres personnages inutiles. Le code source est destiné à être lu par les humains. Quand j'ai essayé le visual studio, j'ai choisi VB plutôt que C #. Je soupçonne que certains programmeurs ont choisi C # juste pour "avoir l'air sérieux" avec sa syntaxe de type java, mais allez, les mêmes fonctionnalités sont là ... donnez un peu de repos à vos yeux.


4

Eh bien, si vous parlez de .NET, il y en a un très facile auquel je peux penser:

L'éditeur de VB.NET dans Visual Studio est bien meilleur pour détecter les erreurs de syntaxe que C #.

Alors que l'éditeur de C # a obtenu une énorme amélioration dans VS2008 SP1, il y a encore quelques erreurs de syntaxe que l'éditeur ne détecte pas jusqu'à ce que vous tentiez de compiler le programme.


Cette compilation en arrière-plan est exactement ce qui a rendu l'édition de grands projets VB dans VS2005 très très lente. En tout cas, c'est à ça que sert ReSharper;)
Lucas

Ce n'est pas seulement la compilation en arrière-plan, les outils de formatage automatique et de nettoyage de code corrigent beaucoup de choses avant même de quitter le bloc pour déclencher la compilation. C'est un énorme gain de temps en vb par rapport à c #
Bill

4

Une grande partie de la popularité de VB est née à une époque où l'outillage de VB était beaucoup plus convivial que les autres langues disponibles. Le VB "classique" offrait un moyen facile de créer des applications Windows sans avoir à apprendre les tripes de l'API Win32 ou à s'embêter avec la gestion manuelle de la mémoire. La barrière à l'entrée pour les programmeurs débutants était beaucoup plus faible avec VB qu'avec C ++, donc beaucoup de gens se sont fait des dents avec VB.

Ces jours-ci, je pense que l'un des avantages de VB par rapport à C # est la familiarité de ceux qui ont travaillé avec VB au fil des ans. Un autre avantage est que le code VB est facile à lire en raison de la tendance à utiliser des mots clés au lieu des symboles de ponctuation. En tant que personne travaillant en VB, Java, C, C # et Python, je trouve que VB est le langage le plus facile à utiliser lors de l'examen du code que j'ai écrit il y a des années. La syntaxe est plus verbeuse, ce qui facilite souvent la lecture du code, et Visual Studio a toujours fait un excellent travail de mise en forme du code VB pour nettoyer la mise en forme lors de la frappe afin que le code soit mis en forme de manière cohérente (indépendamment de la négligence de l'auteur).

En remarque, je trouve que Python est extrêmement facile à lire et à réviser pour des raisons similaires. En Python, la mise en forme du code est appliquée par l'interpréteur plutôt que par l'EDI, mais le résultat final est le même. Python privilégie également les mots-clés à la ponctuation, mais sans doute moins que VB.


3

Il serait difficile de prétendre qu'il est plus ou moins "sujet aux erreurs" que n'importe quelle autre langue. Je doute également de la question de «la grande majorité du Web MS commercial»; d'après ce que j'ai vu, C # prend de loin les devants pour le développement .NET (avec .NET étant l'outil phare dans la pile MS pour les choses qui ne sont pas des pilotes de périphériques, etc.).


3

Un avantage de VB.NET par rapport à C # (qui disparaîtra avec C # 4), ce sont les paramètres par défaut et nommés, une très bonne chose à avoir lors de l'utilisation de VSTO.


Et, d'ailleurs, "dynamique" - donnant à C # quelque chose de comparable aux liaisons tardives / d'expédition existantes des VB.
Marc Gravell

1
Ce soi-disant avantage a toujours été problématique pour moi - ma lecture est que C # a des surcharges qui sont un moyen plus sûr d'obtenir le même résultat pratique.

2
L'inconvénient des surcharges est qu'elles sont plus difficiles à comprendre et déroutantes à maintenir lorsque vous souhaitez définir quelques valeurs par défaut. Vous pouvez vous retrouver avec des chaînes complexes de surcharges qui se compilent en appels de méthode imbriqués au lieu d'être directement résolues dans la méthode par le compilateur.
Matthew Whited,

3

VB / VB.NET appartient à la catégorie RAD (Rapid Application Development). Vous pouvez développer des applications avec simplement des contrôles par glisser-déposer à partir de la boîte à outils et moins de code.


Vous pourriez dire la même chose du combo ASP.net + C #, non?

Oui, la plupart des langages basés sur Visual Studio le font.

Eh bien, à l'âge de VB (pas .net), il n'y avait pas de C # etc. Donc, VB était la seule GRANDE chose à l'époque. Les utilisateurs VB ultérieurs ont migré vers VB.NET. VB <> VB.NET quand même.

3

Eh bien, je pense que vous devez faire la différence entre VB classique et VB.NET.

Je pense que VB.NET n'est pas très populaire, mais Visual Basic "Classic" l'est toujours1 La raison en est qu'il est TRÈS facile de créer une application Windows. Comparez cela à une application Windows en C ++ / Mfc, qui était presque la seule alternative à l'époque.

Pour la même raison, Delphi était très populaire il était une fois.


Je suis d'accord que VB.net n'est pas aussi populaire que le VB classique. Certains développeurs qui n'ont pas pu migrer leur base de code vers VB.net peuvent avoir opté pour C # à la place.
JBRWilkinson

3

VB est très verbeux et facile à utiliser par rapport à C # qui est sensible à la casse. Pour un programmeur débutant, c'est le meilleur point de départ.


3

Pour n'en nommer que quelques-uns:

  • facilité d'utilisation
  • nom familier (basique était l'un des premiers langages de programmation informatique populaires)
  • ne sous-estimez pas le marketing Microsoft

3

Je pense qu'une partie de la raison est parce que les anciens programmeurs asp entrant dans .NET comme je l'ai fait sont déjà très familiers avec VB parce que le script VB est le langage ASP classique utilisé pour la plupart. Je ressentais moins de temps à écrire en VB dans .NET car je savais déjà parler VB. VB est également moins un crybaby que C #. Je peux lire / écrire dans les deux mais je préfère VB car il est facile de se faire des amis si vous êtes un nouveau programmeur.


2

Je travaille dans un environnement où nous utilisons les deux. Nous sommes passés au C # en faveur des ASP et VB classiques. À mon avis, il n'y a pas de rupture entre les langues. Pour la plupart des projets, vous pouvez effectuer le même travail avec les deux langues. Maintenant, je partage votre avis sur les erreurs et je trouve également que VB est encombré (sans raison).

Comme d'autres l'ont mentionné, VB est très simple et, historiquement, vous pouviez créer des projets très rapidement. Cela a continué dans le développement Web (qui est développé rapidement), mais je pense que lorsque les gens se rendront compte que C # est tout aussi rapide, VB disparaîtra. Une autre raison pour laquelle je pense que cela disparaîtra est que tout le reste que vous codez (CSS, JavaScript) lors de la création d'applications Web ressemble plus à C # qu'à VB, il est donc logique d'utiliser C #, même pour les débutants.


2

Personnellement, j'aime la façon dont les événements sont attachés dans vb.net avec le mot clé 'handles' ... L'IDE / Visual Studio / est également plus réactif lorsqu'il s'agit de VB et gère automatiquement la plupart des if-end et autres ... C # est bien sûr beaucoup plus concis et propre (à mon humble avis, j'ai beaucoup travaillé avec les deux)


Je préfère m'abonner aux événements moi-même, pas tous les trucs magiques en coulisse qui se passent avec "Handles" et le concepteur VS.
Lucas

2

Depuis le framework 4.0, il n'y a qu'une petite poignée de choses qui manquent à VB par rapport à C #, et l'inverse est également vrai. À savoir:

  1. Le plus notable est que VB.NET n'a pas le Yieldmot - clé, mais il arrivera bientôt à VB.NET avec le nouveau framework async.
  2. Il n'y a pas de unsafemot-clé. Je ne l'ai jamais trouvé nécessaire, mais il y a sûrement des gens qui l'ont fait.
  3. Il n'y a pas de chaînes multi-lignes. Les chaînes multilignes sont accomplies en utilisant les opérateurs + (ou hérités &) sur les lignes. Ou alors , ils peuvent être réalisés en utilisant la syntaxe XML littérale: Dim s = <s>My string... multiple lines...</s>.Value. Ce n'est pas joli, mais si vous n'êtes pas pointilleux et que vous voulez vraiment des chaînes multi-lignes, cela fonctionne. Et, vous pouvez faire une interpolation de chaîne avec elle en utilisant une <%= myVar %>syntaxe qui est agréable.
  4. Il n'y a pas d'équivalent de portée variable de dynamic. Les variables dynamiques existent depuis longtemps dans VB avec Option Compare Off, mais c'est une portée de fichier, donc ce n'est pas aussi bon que dynamicparce que dynamicla portée est limitée à la variable déclarée de cette façon.
  5. VB n'a pas de syntaxe lambda laconique. Les lambdas sont là, mais vous devez utiliser Function(x)ou Sub(x).

Certaines fonctionnalités de VB.NET n'ont pas C #:

  1. Les littéraux XML, qui sont pratiques pour toutes sortes de choses, pas seulement XML.
  2. L'insensibilité à la casse dans une langue est le miaulement du chat. Peu d'autres langues le permettent, mais quelle différence cela fait dans la vitesse de codage de ne jamais avoir à appuyer sur la touche Maj lorsque vous tapez et que votre code se formate automatiquement comme vous le souhaitez.
  3. La Selectclause souvent inutile peut être omise des requêtes Linq.
  4. Le Nothingmot-clé est beaucoup plus utile que nulldans la mesure où tout (même les types de valeur) peut être défini sur Nothinget vous obtenez la valeur par défaut. Il n'y a pas besoin du defaultmot - clé.
  5. VB.NET est constamment compilé dans Visual Studio afin que vous voyiez immédiatement les erreurs. Ne pas frapper CTRL-SHIFT-B toute la journée comme en C #.

Ma boutique fait MVC3 avec Razor en utilisant VB.NET et une fois que vous avez surmonté les préjugés (pour la plupart infondés), c'est en fait un langage très agréable à utiliser. Ce n'est pas vraiment plus verbeux que C # comme beaucoup le prétendent (sauf dans le cas des lambdas), et c'est à peu près parallèle fonctionnalité par fonctionnalité avec C #. J'ai constaté que la plupart des gens qui haïssent n'ont pas vraiment codé dans VB.NET moderne depuis longtemps.


Quant à moi, VB.NET est trop verbeux. Vous devez imprimer manuellement beaucoup de code passe-partout, et ReSharper n'aide pas, en fait. Je code en C # / VB.NET en parallèle depuis 3 ans déjà.
Hedin

VB est en effet verbeux horizontalement en raison des mots-clés plus longs. Bien que vous ne les tapiez pas souvent, car l'IDE les met pour vous. Mais IMHO C # est souvent verbeux verticalement en raison des accolades. Quelques autres avantages de VB: évitez de débattre du style d'accolade car il n'y a qu'un seul style dans VB; (la langue pénètre dans la joue) évitez de développer l'auriculaire droit surmusclé en raison du typage sans fin du point-virgule et du passe-partout.
MarkJ

1
@MarkJ: Je trouve intéressant la façon dont les partisans de C # critiquent AndAlso[nonobstant le fait que lorsqu'il est parlé, il est plus court que "double-esperluette"], mais ignore le fait qu'un If-Then/Else/EndIfprend trois lignes plus les déclarations contrôlées, tandis que l'équivalent C # prendrait au moins quatre et éventuellement six, selon les conventions d'accolade, à moins que l'on n'écrive } else {sur une seule ligne.
supercat
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.