Les avantages et les inconvénients de VB & VBA?

sur un autre site lié à la programmation, j'ai vu cette ligne dans la signature de quelqu'un. Ce n'est pas la première fois que je vois de tels sentiments, bien que ce soit le plus dur:

<!-Personnes qui travaillent en VB ou une variante ce ne sont pas des programmeurs, ils sont des chimpanzés de cirque qui jettent des excréments IDE..."

VBA est mon gagne-pain et je peux automatiser pas mal de choses avec elle. Oui, je sais qu'il manque de vernis et de fonctionnalité, mais pourquoi beaucoup de négativité envers elle? D'un autre côté, qu'est-ce que les autres langues ont que VB n'a pas?

20
demandé sur Joel Coehoorn 2009-08-28 23:34:39

9 réponses

VB6, VBScript, et VBA ont la réputation parce qu'ils ne sont tout simplement pas des langues de force industrielle. Notamment:

  • No OOP. Bien sûr, vous avez des cours et des modules, mais pas d'héritage. VB n'est pas un langage de bas niveau, il a besoin d'objets réels.
  • pas de fonctions de première classe, donc vous ne pouvez même pas simuler OOP ou polymorphisme.
  • Manque d'une bibliothèque de classe. VB6 a une petite bibliothèque de fonctions intégrées, et presque toutes les autres fonctionnalités sont délégué à des appels Windows ou (généralement coûteux) des composants tiers.
  • mauvaise gestion des erreurs. Sur la reprise D'erreur suivant est une variole sur la planète.
  • bien que ce ne soit pas la faute de la langue, VBA a gagné une mauvaise réputation en association avec MSAccess.

bien sûr, VB n'était pas vraiment but pour être un langage de force industrielle, donc peut-être que rien de ce qui est mentionné ci-dessus n'est vraiment une critique correcte de la langue. Heureusement VB.NET et les dernières versions de VBA corriger tout ci-dessus, donc VB.NET est au même niveau que n'importe quel autre langage "sérieux" sur le marché.


[anecdote]

en défense de VB, je trouve que la plupart des gens critiquent le langage juste pour accepter le statu quo, pas parce qu'ils l'ont réellement utilisé.

il y a quelques années, dans un salon de discussion, j'ai rencontré young neophyte railing contre un développeur VB6 pour avoir utilisé un langage aussi merdique. J'ai innocemment demandé "quel est le problème avec VB".

la première chose qu'il a dit était "parce que C'est un langage WINDOWS!"J'ai donc souligné que Borland Delphi est une langue Windows only*, mais je n'ai jamais entendu personne la calomnier pour cette raison. (*Il y avait un produit appelé Kylix qui se compile à Linux, mais son coûteux, buggy, et discontinué. Cela fait longtemps que je n'ai pas utilisé Delphi, mais aux dernières nouvelles, il n'est toujours pas prêt pour Linux.)

alors, il a dit "il a une syntaxe HORRIBLE!"Est-ce vraiment la raison les gens détestent ce langage? Je dirais que Perl, Lisp, et C++ sont pires sur les yeux que VB.

Ensuite, il dit "c'est trop facile à apprendre!"Eh bien, je considère qu'un point en faveur de la langue. Je n'écrirai jamais un GUI à la main si j'ai un designer drag-and-drop à ma disposition. T'as quoi d'autre?

alors, finalement, s'agrippant à des pailles, il commente: "il l'a fait... pas de fonctions de manipulation de chaîne". Gauche, droite, milieu, remplacer, InStr et couper. QED noob.

fait intéressant, VB dispose de fonctionnalités trouvées quelques langages "hacker", à savoir les variantes de types de données et duck typing. Code compilé effectué raisonnablement bien, interop entre COM et natif windows DLLs était facile, et l'éditeur GUI a essentiellement mis la barre pour tout développement RAD futur.

[/anecdote]

34
répondu Juliet 2009-08-28 20:35:44

Lire certains de Articles de Joel Spolsky et vous vous sentirez mieux sur vous-même. De son article Travail sur CityDesk, la troisième Partie:

Visual Basic est une façon extrêmement productive d'écrire du code, en particulier du code GUI. Vous voulez du texte en gras sur une boîte de dialogue? C'est un clic en VB. Maintenant, essayez de le faire en MFC. Vous devez créer un contrôle subclassed, c'est un gros gâchis, vous devez tout savoir sur les LOGFONTS et fenêtres subclassing et un tas de d'autres choses et vous avez besoin d'environ trois lignes de code une fois que vous avez la classe de magie.

mais beaucoup de programmes VB sont des spaghettis, soit parce qu'ils sont faits en un coup rapide et sale, soit parce qu'ils sont écrits par des programmeurs sans formation en programmation orientée objet, ou même en programmation structurée.

ce que je me suis demandé, c'est ce qui se passe si on prend des programmeurs C++ de premier ordre qui rêvent de pointeurs, et qu'on les laisse coder en VB. Ce que j'ai découvert à Fog Creek c'est qu'ils sont devenus des machines de codage super efficaces. Le code semble assez bon, il est orienté objet et robuste, mais vous ne perdez pas de temps à utiliser des outils qui sont à un niveau inférieur à ce dont vous avez besoin. J'ai passé des années à écrire du code pour C++ / MFC et des années à écrire du code dans Visual Basic, et laissez-moi vous dire, VB est beaucoup plus productif.

Cette simplicité attire beaucoup de nouveaux programmeurs. Dire qu'il y a beaucoup de mauvais programmeurs utilisant Visual Basic ne ne signifie pas Visual Basic est un mauvais langage; il signifie simplement que Visual Basic est accessible aux mauvais programmeurs (AKA nouveaux programmeurs).

25
répondu Andrew Keeton 2009-08-28 19:45:50

je travaille dans un endroit où tout le code est C#, pas VB .NET. Un développeur a écrit la plupart du code. Tu sais comment il a réussi cet exploit? Facile: il a copié et collé partout. Une méthode peut avoir n'importe où de quelques centaines de copies à travers le système.

les bons développeurs peuvent être bons dans n'importe quelle langue. Les développeurs merdiques peuvent être merdiques dans n'importe quelle langue.

21
répondu Ryan Lundy 2009-08-28 20:32:00

aussi juste pour noter que VB, VBA, et VB.NET sont les trois langues différentes même si elles peuvent partager une syntaxe similaire. Il n'y a pas de différence entre VB.NET et C# (en plus des mots-clés/syntaxe), donc nous ne devrions pas associer VB (6 et avant) et VBA avec VB.NET.

le vrai problème que beaucoup de programmeurs ont avec" VB " (juste dire les 3 langues) est vraiment plus sur les gens qui l'utilisent. La plupart du temps, les programmeurs "VB" ont moins d'éducation formelle et écrivent code bâclé. Ce n'est pas vrai pour tous les programmeurs "VB" (et cela ne veut pas dire qu'il n'y a pas de code négligé écrit en C++, Java, C#, etc.). C'est juste l'attente typique que quelqu'un qui n'utilise pas VB a quand ils entendent parler des programmes VB.

8
répondu Jim W 2009-08-28 19:55:03

Meh, ce sont juste des bigots religieux.

il n'y a pas un seul vrai langage, et les gens les plus expérimentés non seulement le savent, mais reconnaissent instantanément ces déclarations comme un signe flagrant d'inexpérience.

5
répondu Brian MacKay 2009-08-28 19:51:10

la qualité moyenne des développeurs semble être inversement proportionnelle à la popularité de la langue * facilité d'utilisation de la langue. VB est très facile, et est/a été largement utilisé.

C'est parce que A) il y a une demande pour des codeurs dans les langues populaires, de sorte que chaque employeur doit soit baisser leurs normes, augmenter leur salaire ou aller sans développeurs. B) les personnes sans indice peuvent encore paraître modérément productives dans des langues faciles à utiliser. Il y a assez de bibliothèques et d'outils GUI qu'ils peuvent gifler ensemble quelque chose qui semble utile, même si c'est des ordures sous le capot.

il n'y a rien d'intrinsèquement mauvais avec VB lorsqu'il est utilisé dans les domaines auxquels il était destiné, par des gens qui savent ce qu'ils font. Le même est vrai pour presque n'importe quel outil/langage.

2
répondu patros 2009-08-28 20:01:56

Je n'aime pas le langage, mais c'est surtout parce que j'ai travaillé avec un langage VB qui s'est dépouillé absolument cela pourrait être considéré comme un avantage et forcé "meilleures pratiques" qui n'a vraiment pas de sens.

le plus gros problème que j'ai avec VB est qu'il y a une piste presque directe de clueless non-programmeur - > part time Excel / Access scripter - > VBA "guru" - > VB "programmeur" - > programmeur principal sur le projet le plus important dans le entreprise.

honnêtement, Je ne l'aurais pas cru si je n'avais pas vu quelqu'un Suivre ce chemin juste devant mes yeux. J'ai même essayé d'encadrer le gars pour qu'il soit familier avec L'OOP, la gestion des erreurs basée sur les exceptions, etc. mais il a juste creusé sa tête dans le sable et a tout écrit procéduralement parce que cela avait toujours fonctionné pour lui.

j'ai eu la chance de travailler avec VB.Net et aussi longtemps que je l'ai traité comme un objet orienté. Net langauge premier et VB second it n'était pas si mal. Il ne sera jamais mon premier choix pour un nouveau projet.

2
répondu greg 2009-08-28 20:54:43

je suis en visite donc entre l'écriture de code VBScript et cette déclaration sonne vraiment vrai pour moi -- je suis actuellement un chimpanzé de cirque. Si vous ne savez rien d'autre, VB et ses variantes semblent être de grandes langues.

à mon avis, la raison de la négativité est un énoncé de base -- sur la reprise D'erreur suivant. Ceci fait du mauvais code une caractéristique de la langue. S'il n'avait pas ça, il n'aurait pas eu la mauvaise publicité...

1
répondu Austin Salonen 2009-08-28 19:42:49

la plupart de tous les développeurs que je connais ont travaillé à un moment ou à un autre avec un développeur VB, ou un développeur avec un arrière-plan VB lourd qui n'avait tout simplement pas une idée. Malheureusement, comme pour la plupart des choses, tout ce dont nous nous souvenons, c'est des mauvaises choses. On associe donc VB à une mauvaise programmation.

il n'est certainement pas vrai que tous les programmeurs VB soient de mauvais développeurs. Mais quand tout le monde a des histoires à propos de "ce vieux VB avec qui je travaillais."Le stéréotype est répandu.

0
répondu Matthew Vines 2009-08-28 19:42:39