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?
c#
syntax
vb.net
visual-basic-6
aaaidan
la source
la source
Réponses:
VB peut être utilisé pour créer des interfaces graphiques (prononcées gluantes) pour suivre les adresses IP. Ceci est souvent utilisé dans la résolution de crimes .
la source
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 ...
la source
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'
My
espace 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 meilleurswitch
dé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.For
en 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:
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.
la source
var
var int x
vient à 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.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:
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:
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 Next
vient à l'esprit comme un moyen pas si bon de contourner les lacunes du manque d'exceptions dans VB dans les jours pré .NET.)la source
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
static
? C ++ le prend également en charge.(object)(expr)
syntaxe Cast de C #object as type
est encore plus confuse et incohérente.with
? Vous pouvez créer des structures arborescentes imbriquées de manière très intuitive, ce qui n'est pas possible en C #.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 .End If
est plus utile que juste}
. LorsqueEnd ...
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é.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:
à
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 On
il est aussi strict que C # mais ne nous permet pas de faire de telles erreurs:la source
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.
la source
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:
À 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.
la source
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.
la source
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.
la source
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.
la source
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.
la source
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.
la source
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.).
la source
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.
la source
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.
la source
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.
la source
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.
la source
Pour n'en nommer que quelques-uns:
la source
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.
la source
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.
la source
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)
la source
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:
Yield
mot - clé, mais il arrivera bientôt à VB.NET avec le nouveau framework async.unsafe
mot-clé. Je ne l'ai jamais trouvé nécessaire, mais il y a sûrement des gens qui l'ont fait.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.dynamic
. Les variables dynamiques existent depuis longtemps dans VB avecOption Compare Off
, mais c'est une portée de fichier, donc ce n'est pas aussi bon quedynamic
parce quedynamic
la portée est limitée à la variable déclarée de cette façon.Function(x)
ouSub(x)
.Certaines fonctionnalités de VB.NET n'ont pas C #:
Select
clause souvent inutile peut être omise des requêtes Linq.Nothing
mot-clé est beaucoup plus utile quenull
dans la mesure où tout (même les types de valeur) peut être défini surNothing
et vous obtenez la valeur par défaut. Il n'y a pas besoin dudefault
mot - clé.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.
la source
AndAlso
[nonobstant le fait que lorsqu'il est parlé, il est plus court que "double-esperluette"], mais ignore le fait qu'unIf-Then/Else/EndIf
prend 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.