Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

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

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

Ответ 7

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

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

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

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

Ответ 8

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

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

Ответ 9

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

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