Плюсы и минусы VB & VBA?

19

На другом связанном с программированием веб-сайте я увидел эту строку в чьей-то подписи. Это не первый раз, когда я видел такие чувства, хотя это самый жесткий:

"Люди, которые работают в VB или любом варианте это не программисты, они цирковые шимпанзе бросали фекалии в IDE..."

VBA - мой хлеб и масло, и я могу автоматизировать с ним немало вещей. Да, я знаю, что ему не хватает польского языка и некоторой функциональности, но почему так много негатива к нему? С другой стороны, на каких других языках нет VB?

  • 6
    это действительно забавное утверждение. я обязательно буду использовать его в следующий раз в споре о превосходстве моего любимого языка над языком X (замена VB на X)
  • 0
    Я должен добавить, что я пытаюсь стандартизировать мой код. У меня есть свои собственные процедурные библиотеки, и я даже регулярно пересматриваю свой существующий код, чтобы посмотреть, сделал ли я какие-либо WTF 6 месяцев назад. На самом деле, сейчас я реорганизую некоторый код в Access и ищу повторяющиеся блоки для устранения. Что еще я могу сделать? (Это не был риторический вопрос. Я честно спрашиваю).
Показать ещё 4 комментария
Теги:

9 ответов

34
Лучший ответ

VB6, VBScript и VBA имеют репутацию, потому что они просто не являются промышленными языками. В частности:

  • Нет ООП. Конечно, у вас есть классы и модули, но нет наследования. VB не является языком низкого уровня, ему нужны реальные объекты.
  • Нет первоклассных функций, поэтому вы даже не можете имитировать ООП или полиморфизм.
  • Отсутствие хорошо развитой библиотеки классов. VB6 имеет небольшую библиотеку встроенных функций, и почти все другие функции делегируются вызовам Windows или (обычно дорогим) сторонним компонентам.
  • Отвратительная обработка ошибок. ON ERROR RESUME NEXT - это оспа на планете.
  • Хотя это не ошибка языка, VBA заслужил плохую репутацию в связи с MSAccess.

Конечно, VB на самом деле не был индустриальным языком, поэтому, возможно, ничто из упомянутого выше не является действительно правильной критикой языка вообще. К счастью, VB.NET и последние версии VBA исправляют все выше, поэтому VB.NET находится на одном уровне с любым другим "серьезным" языком на рынке.


[анекдот]

В защиту VB я нахожу, что большинство людей критикуют язык, чтобы согласиться с статус-кво, а не потому, что они действительно использовали его.

Несколько лет назад, в чате, я столкнулся с молодыми пеленками неофита против разработчика VB6 для использования такого дерьмового языка. Я невинно спросил: "Что случилось с VB".

Первое, что он сказал, было "Потому что это язык WINDOWS!" Поэтому я отметил, что Borland Delphi - это язык только для Windows *, но я никогда не слышал, чтобы кто-то злобствовал по этой причине. (* Был продукт под названием Kylix, который перекрестно компилируется в Linux, но его дорогой, багги и прекращено. Его было время, поскольку я использовал Delphi, но в последний раз я слышал, что он еще не готов для Linux.)

Итак, он сказал: "У него УЖАСНЫЙ СИНТАКС!" Это действительно причина, по которой люди ненавидят этот язык? Я бы сказал, что Perl, Lisp, а С++ хуже на глазах, чем VB.

Затем он говорит: "Слишком легко учиться!" Хорошо, я бы подумал, что это точка в пользу языка. Я никогда не буду писать GUI вручную, если у меня есть дизайнер перетаскивания. Что еще вы получили?

Итак, наконец, схватившись за соломинку, он комментирует: "У нее нет функций манипуляции строкой". Left, Right, Mid, Replace, InStr и Trim. QED noob.

Интересно, что у VB есть функции, которые обнаруживают некоторые "хакерские" языки, а именно вариантные типы данных и утиную типизацию. Скомпилированный код выполнялся достаточно хорошо, взаимодействие между COM и родными DLL файлами Windows было легким, и редактор GUI в основном устанавливал планку для всей будущей разработки RAD.

[/анекдот]

  • 2
    Если не указано иное, все экземпляры VB относятся к VB6.
  • 2
    Пятно о намерениях В.Б.
Показать ещё 3 комментария
23

Прочитайте некоторые статьи Джоэл Спольски, и вы будете чувствовать себя лучше о себе. Из его статьи Работа над CityDesk, часть третья:

Visual Basic - чрезвычайно эффективный способ написания кода, особенно кода GUI. Хотите полужирный текст в диалоговом окне? Это один клик в VB. Теперь попробуйте сделать это в MFC. Вам нужно создать подклассовый элемент управления, это большой беспорядок, вы должны знать все о подклассе Windows и подкатегории Windows, а также о множестве других вещей, и вам понадобится около трех строк кода, если у вас есть волшебный класс.

Но многие программы VB являются спагетти, потому что они сделаны как быстрые и грязные одноразовые, или потому, что они написаны программистами-хаками без обучения объектно-ориентированному программированию или даже структурированному программированию.

Я задавался вопросом, что произойдет, если вы возьмете первоклассных программистов на C++, которые мечтают в указателях, и пусть они кодируются в VB. То, что я обнаружил в Fog Creek, было то, что они стали суперэффективными машинами кодирования. Код выглядит довольно хорошо, он объектно-ориентированный и надежный, но вы не тратите время на использование инструментов, которые находятся на уровне ниже, чем вам нужно. Я много лет писал код для С++/MFC и много лет писал код на Visual Basic, и позвольте мне сказать вам, VB намного эффективнее.

Эта простота привлекает много новых программистов. Говорить, что есть много плохих программистов, использующих Visual Basic, не означает, что Visual Basic - плохой язык; это просто означает, что Visual Basic доступен для плохих программистов (новых программистов AKA).

  • 2
    Есть старая цитата, которая (иногда) относится к VB ... «если вы сделаете это настолько простым, что любой идиот сможет его использовать, то его будут использовать только идиоты». VB не очень хороший язык, но настоящая ошибка в том, что его слишком легко изучать, и слишком много идиотов называют себя «профессиональными» разработчиками VB.
21

Я работаю в месте, где весь код - С#, а не VB.NET. Один из разработчиков написал большую часть кода. Вы знаете, как он достиг этого подвига? Легко: он скопирован и вставлен повсюду. Данный метод может иметь от нескольких до нескольких сотен копий всей системы.

Хорошие разработчики могут быть хороши на любом языке. Crappy разработчики могут быть дерьмовыми на любом языке.

  • 5
    Я работал в магазине в Линкольне, где лучший программист компании использовал исключительно VB.NET - ему даже удалось поработать над некоторыми концепциями высокоуровневого функционального программирования в своем коде. Худшее приложение было C #, написанное некоторыми очень неопытными (или, возможно, злонамеренными) оффшорными разработчиками.
8

Также следует отметить, что VB, VBA и VB.NET - это все три разных языка, хотя они могут иметь схожий синтаксис. Нет никакой реальной разницы между VB.NET и С# (помимо ключевых слов/синтаксиса), поэтому мы не должны комментировать VB (6 и раньше) и VBA в VB.NET.

Реальная проблема, с которой многие программисты имеют "VB" (просто сказать все 3 языка), действительно больше о тех, кто ее использует. Большую часть времени программисты "VB" имеют меньше формального образования и пишут код sloppier. Это не верно для всех программистов "VB" (и это не значит, что там нет неаккуратного кода, написанного на С++, Java, С# и т.д.). Это просто типичное ожидание того, что тот, кто не использует VB, слышит о программах VB.

  • 1
    Есть некоторое важное различие между VB.Net и C #, но +1, потому что VB.Net определенно выше vb6 или vba.
  • 3
    VB .NET определенно отличается от VB и VBA. Но различия между VB и VBA крайне незначительны.
Показать ещё 3 комментария
4

Мех, это просто религиозные фанатики.

Нет ни одного истинного языка, и большинство опытных людей не только знают это, но и сразу признают эти утверждения как яркий признак неопытности.

  • 0
    Аминь, но я все еще люблю свой VB.NET. НО, что еще важнее, Я АБСОЛЮТНО ЛЮБЛЮ .NET Framework!
2

Мне не нравится этот язык, но в основном потому, что я работал с vb-подобным языком, который лишил абсолютно ничего, что можно было бы считать преимуществом и принудительным "передовым опытом", которое действительно не имело смысла.

Самая большая проблема, с которой я сталкиваюсь в VB, заключается в том, что существует почти прямая дорожка от бескомпромиссного не-программиста → часть времени. Сценарий Excel/Access → VBA "гуру" → VB "программист" → ведущий программист на большинстве важный проект в компании.

Честно говоря, я бы не поверила, если бы я не видел, чтобы кто-то следовал этому пути прямо перед моими глазами. Я даже пытался наставлять парня так, чтобы он был знаком с ООП, обработкой ошибок на основе исключений и т.д., Но он просто вырыл голову в песок и написал все процедурно, потому что это всегда сработало для него.

У меня была возможность работать с VB.Net, и до тех пор, пока я рассматривал его как объект, выделенный другим .Net langauge и VB во-вторых, это было не так уж плохо. Тем не менее, это никогда не будет моим первым выбором для нового проекта.

2

Среднее качество разработчика, по-видимому, обратно пропорционально популярности языка * простота использования языка. VB очень прост и широко используется.

Это потому, что A) есть спрос на кодировщики на популярных языках, поэтому каждый работодатель должен либо понизить свои стандарты, либо повысить зарплату, либо пойти без разработчиков. B) люди без подсказки могут по-прежнему казаться умеренно продуктивными в простых в использовании языках. Существует достаточно библиотек и инструментов графического интерфейса, которые могут соединить все, что может показаться полезным, даже если он заполняет мусор под капотом.

В VB не используется ничего неправильного, если они используются в доменах, для которых они предназначены, людьми, которые знают, что они делают. То же самое можно сказать и о любом инструменте/языке.

1

Я посещу SO между написанием кода VBScript, и это утверждение действительно верно для меня - я в настоящее время цирк. Если вы ничего не знаете, VB и его варианты кажутся отличными языками.

По моему мнению, причиной негатива является одно основное утверждение - On Error Resume Next. Это делает плохой код особенностью языка. Если бы у этого не было этого, у него не было бы плохой рекламы...

  • 0
    (Оригинальный постер здесь). Как я уже сказал, VBA - это мой хлеб, но я почти никогда не использую его, за исключением самых тривиальных случаев (например, попытка создать папку, которая уже существует). Я согласен, однако, что отсутствие формальной обработки ошибок раздражает.
  • 0
    Прямо сейчас VBScript - мой ... и тот факт, что On Error Resume Next находится в коде, который я поддерживаю, просто ошеломляет. Я часто слышу "это работает большую часть времени", и они не могут понять, почему это терпит неудачу, когда это происходит - интересно, почему ... вы намеренно пропускаете любую ошибку !!
0

Большинство разработчиков, которых я знаю, в какой-то момент работали с разработчиком VB или разработчиком с тяжелым фоном VB, который просто не имел понятия. К сожалению, как и в большинстве вещей, все, что мы помним, - это что-то плохое. Поэтому мы связываем VB с плохим программированием.

Конечно, это не так, что все программисты VB являются плохими разработчиками. Но когда у всех есть истории о "Этот старый парень из VB, с которым я работал". Стереотип распространяется.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню