Мне Visual Basic кажется неуклюжим, уродливым, подверженным ошибкам и трудным для чтения. Я позволю другим объяснить, почему . Хотя VB.net явно сделал огромный шаг вперед для языка с точки зрения возможностей, я до сих пор не понимаю, почему кто-то выбрал бы кодирование на VB, скажем, на C #.
Тем не менее, я все еще вижу (что, похоже, что), что подавляющее большинство коммерческих веб-приложений из «магазинов MS» построено на VB. Я мог бы исправить это, но VB все еще кажется более популярным, чем он заслуживает.
Может ли кто-нибудь помочь ответить на любой (или все) из следующих вопросов:
- Я что-то упустил с VB? Это легче учиться или «дружелюбнее», чем C #? Есть ли функции, о которых я не знаю?
- Почему VB / VB.net так часто используется сегодня, особенно в веб-проектах?
c#
syntax
vb.net
visual-basic-6
aaaidan
источник
источник
Ответы:
VB может использоваться для создания GUI (произносится как Gooey) для отслеживания IP-адресов. Это часто используется в раскрытии преступления .
источник
Я думаю, что это зависит от того, откуда вы пришли. Когда я начинал как программист, я думаю, что VB может быть легче читать, чем, например, C #, поскольку он больше полагается на слова, чем на символы, что облегчает восприятие для обычных людей.
Я был программистом на VB много лет, и когда пришел .NET, я все еще работал в VB.NET первые пару лет (на самом деле не видел смысла в C #). Теперь у меня есть несколько лет C #, и я иногда обнаруживаю, что код VB.NET занимает немного больше времени для "декодирования", чем код C #. Возможно, потому что он опирается больше на слова, чем символы для некоторых конструкций ...
источник
Ниже я только что скопировал свой ответ в другую ветку :
Я развиваюсь как на VB, так и на C # на регулярной основе, большая часть моего заработка связана с C #. Лично я предпочитаю VB для большинства (но не для всех ... лямбд!) Работ. Я не могу назвать каких-либо серьезных преимуществ, кроме тех, что изложил Джон. На самом деле, Херфрид собрал несколько на своем веб-сайте (на немецком языке!), Но они довольно технические.
Что действительно беспокоит меня во всех языках, связанных с Си - это глупый синтаксис. Это чисто культурно, но, как человек, который выполняет большую часть своей профессиональной работы на C ++, и будучи достаточно опытным в этом, я до сих пор абсолютно ненавижу синтаксис. И не только C ++ 'милые маленькие причуды. Нет, весь пакет. Почему брекеты? Почему точка с запятой (возможно, самое глупое решение за всю историю программирования)? Почему глупый синтаксис в стиле C? Почему нет ключевого слова для объявления переменных (на самом деле, это самое глупое решение)?
Есть так много вещей, которые действительно делают меня грустным и злым. В.Б. не святой, его язык имеет огромные недостатки. Но ничто по сравнению с тем, что я сказал выше.
Я понимаю, что большинство из этих заявлений нуждаются в обосновании, но я выдвинул это только потому, что мы привыкли к ним. Кроме того, здесь не то место. Достаточно сказать, что синтаксис C #, хотя и является его основным преимуществом по сравнению с VB, также является его основным недостатком.
Я не предпочитаю VB из-за
My
пространства имен, я не предпочитаю его из-за литералов XML, я не предпочитаю его из-за слабой типизации, я не предпочитаю его из-за необязательных параметров или из-за гораздо лучшегоswitch
заявление. Нет, я предпочитаю это из-за синтаксиса.Тем не менее, я должен признать, что VB становится все более и более обремененным его синтаксисом. Похоже, что в последнее время это были запросы Linq, параметризованные лямбда-функциями, и я с готовностью признаю, что это упрощает многие вещи. К сожалению, синтаксис VB для лямбд просто слишком громоздок, чтобы конкурировать с C #. Только
Parallel.For
посмотрите, как выглядит раздутый вызов VB по сравнению с C #, где он выглядит естественно. ИМХО, команда разработчиков VB пошла не в том направлении, предпочитая консервативную последовательность, а не читабельность.Чтобы ответить на ваше субъективное обвинение:
Вы, конечно, вправе так думать, но, как сказал Марк ниже, вам будет трудно спорить об этом объективно. Я определенно могу привести несколько синтаксических элементов языка Си, которые объективно более подвержены ошибкам, чем что-либо существующее в VB. Фактически, синтаксис VB был разработан для явного предотвращения таких ситуаций.
«Неуклюжие, некрасивые ... и трудные для чтения» - все это квалификаторы, которые можно отметить практически на всех языках, с которыми вы не знакомы. Проще говоря: безобразие является прямым следствием вашего незнакомого языка.
Хорошее знание языка означает распознавание шаблонов в коде. Хорошо написанный код будет по virtuel практиков появляется элегантным, в то время как плохие (медленно, подверженные ошибкам) появится код некрасиво. Это так просто.
Последнее замечание: цитируемые вами статьи содержат несколько неточностей и устаревшую информацию. Как единственное оправдание для очень субъективной и эмоциональной дискуссии, они не очень хорошо подходят.
источник
var
var int x
приходит на ум. Все остальные операторы и блоки представлены специальными ключевыми словами, почему не объявления переменных и методов? Тьфу. Непоследовательный и безобразный.Мне английский кажется неуклюжим, уродливым, склонным к ошибкам и трудным для чтения, особенно написанным людьми с плохой грамматикой, плохим написанием, безрассудным пренебрежением к заглавным буквам и пунктуацией и отсутствием чувства, как пространственно и мысленно организовать свои мысли.
Дело не только в том, что Visual Basic трудно читать или неуклюже из-за синтаксиса языка, но обычно так происходит потому, что программист не очень хорошо выражает свои мысли:
Да, это ужасно. Но не так уж сложно написать ужасный код на других языках. Когда написано правильно, это будет иметь большой смысл, даже если код написан на VB:
По крайней мере, это более читабельно и понятно. Это все еще бейсик. Это действительно сводится к способности программиста четко выражать свои намерения, форматируя код в удобной для чтения форме, используя хорошо названные идентификаторы и обращая внимание на написание понятного кода.
Тем не менее, я не особо затрагивал Visual Basic со времен VB3 (отсюда и пример со «старым» синтаксисом), но только то, что язык может подвергаться злоупотреблению, не означает, что его нельзя использовать правильно для написания достаточно надежного кода. , Конечно, могут быть некоторые недостатки, но подходы, разработанные для решения этих проблем, также показывают навыки одного программиста над другим.
(Беспорядочное распыление
On Error Resume Next
приходит на ум как не очень хороший способ обойти недостатки отсутствия исключений в VB еще в до .NET дней.)источник
Большая часть вашей аргументации против VB применима только к VB-Classic (вторая ссылка) или основана на слабых или устаревших аргументах
static
? C ++ тоже поддерживает это.(object)(expr)
-Cast-синтаксис иobject as type
еще более запутанным и противоречивым.with
? Вы можете создавать вложенные древовидные структуры очень интуитивно, что невозможно в C #.WithEvents
) без необходимости инициализации делегатов, обработчиков событий и т. Д. Это делает GUI-программирование на VB намного более удобным и вам не нужно генерировать код события разработчиком .End If
это более полезно, чем просто}
. При наличии сложных синтаксических структур все фигурные скобки просто сбивают с толку, тогда как конкретныйEnd ...
помогает вам определить, какой блок не был закрыт.В целом, есть только несколько объективных различий между VB.NET и C #, кроме синтаксиса. Например: GUI-проектирование намного более эффективно в VB благодаря лучшей системе событий и лучшей IDE, тогда как, например, алгоритмы могут быть лучше выражены в C #, потому что синтаксис является более кратким.
Остальное - это вопрос вашего личного стиля. Программисты C-Style чувствуют себя комфортно с C #, VB (или, может быть, Pascal?) - программисты стиля используют VB.
Но основанный на словах более четкий VB-синтаксис может быть проще для начинающих, чем все символы в C. Сравните:
в
Это не значит, что один язык лучше другого.
Редактировать : -----------------------------------------
К аргументу VB будет склонен к ошибкам. Когда вы используете
Option Strict On
это так же строго, как C #, но не позволяет нам делать такие ошибки:источник
Исторически среда разработки VB была быстрым и эффективным способом создания определенных типов приложений (например, приложений с графическим интерфейсом). Это сделало его очень популярным. Я думаю, что VB был наиболее используемым языком в период своего расцвета (например, VB6).
С такой установленной базой неудивительно, что в ней еще много работы.
источник
Все началось до появления C #
В 1999 году у нас была Visual Studio 5/6. Если вы были независимым поставщиком программного обеспечения или корпорацией, использующей Windows, и вам нужно было написать приложение, которое могло бы, например, отслеживать время, потраченное сотрудником на проекты, у вас было несколько вариантов:
В то время мы были как раз перед тем, как лопнул пузырь Dot-Com, поэтому любой, кто хорошо разбирался в (4) или (5), отправлялся обсуждать опционы на акции в любом удивительном дот-коме, к которому их привлекали.
(3) были проблемы с блокировкой и общей масштабируемостью, но я видел много решений на основе Access, которые могли бы запускать функции поддержки при необходимости.
Это оставляет нас с VB и VC ++:
Редактор форм в VB был в то время превосходным по производительности. Вы можете перетащить свои компоненты - не только кнопки, метки и текстовые поля, но и полный набор инструментов OLE-элементов управления для многократно используемых компонентов, таких как умные таблицы, таблицы Excel или экземпляры IE. Подключение было сделано за кулисами - все было объектно-подобным, и вы просто дважды щелкали мышью, чтобы добавить обработчики событий. Это было намного сложнее в Visual C ++. Как член группы поддержки разработчиков Visual Studio в то время, я помню, как звонки в службу поддержки Visual Basic были в основном о том, какой компонент лучше всего использовать, или как оптимизировать свое приложение определенными способами. Почти никогда не было «как сделать приложение с функциями пользовательского интерфейса X, Y и Z».
Создание богатого пользовательского интерфейса в Visual C ++ было другой проблемой. Хотя визуальные редакторы поддерживали диалоги и формы SDI / MDI, они были довольно ограничены. Поддержка встраивания элементов управления OLE (ActiveX) в MFC или Win32 была черным искусством, хотя и немного проще в ATL. Соединение простых вещей, таких как изменение размера событий или рисование владельца, было довольно болезненным, не говоря уже о точках подключения, необходимых для пользовательских событий в компонентах.
Да, у VC ++ были скорость выполнения, возможность отладки и гибкие параметры каркасов / библиотек / пользовательского интерфейса, но поддержка IDE не могла охватить все это основание, поэтому была решена наиболее распространенные операции с такими вещами, как Wizards, всеобъемлющая иерархия классов MFC и 90-дневный срок. / 2 линии поддержки свободных инцидентов.
IIRC, упаковщик приложений, поставляемый с VB, может упаковать ваше приложение, среду выполнения VB и последние DLL-библиотеки общих элементов управления и предоставить вам автономный установщик EXE, который вы можете положить на компакт-диск и достать для клиентов. Ничего из этого «какие msvcrtXX.dll и mfcxx.dll вы не установили?», Которые мучают разработчиков MFC.
Таким образом, из-за времени выхода на рынок и богатого пользовательского интерфейса у VB очень много последователей.
Когда Visual J ++ и Visual Interdev появились в VS6, стало ясно, что Visual Basic IDE выиграл битву за Visual C ++, что было честно, IMHO. Неудивительно, что в Visual Studio .NET появился VB-подобный редактор форм для нового языка COOL C #.
Новый Java / C / C ++ -подобный язык в сочетании с конструктором пользовательского интерфейса, которым все это время пользовались люди из VB, дал новый путь миграции для людей, написавших на C ++, которые теперь работали с MFC / ATL / Win32. Для людей VB 3/4/5/6, которым не понравилось отсутствие 100% обратной совместимости в VB.net, это дало возможность выучить новый язык в знакомой среде.
Причины, по которым VB был таким всеобъемлющим продуктом, вероятно, имеют какое-то отношение к происхождению Microsoft, причем Basic является их основным продуктом для разработчиков, но у меня пока нет ссылок.
источник
Однако уродливый любой конкретный язык может быть причиной для того, чтобы придерживаться его, как правило, сводится к следующему: очень дорого обходится огромная база кода, а тот факт, что разработчики уже знают этот язык, делает его более дешевым, чем другие языки.
источник
VB.NET легче изучать, вы правы, и в целом это проще, чем C #, по моему мнению. Это первое, почему VB так популярен. Еще один, и самый важный момент, я думаю, состоит в том, что существует огромное количество разработчиков, которые работали с VB 6 и более ранними версиями этого языка, и им легче разрабатывать приложения на VB.net, чем изучать новый язык.
источник
Как уже говорили другие, ваше эстетическое суждение о синтаксисе языка во многом зависит от того, что вы знали раньше. Уже более десяти лет это выглядит как соревнование, похожее на C, с фигурными скобками для «блоков», «->» для косвенного обращения (perl, php), скобками для аргументов вызова функции, // для комментарии и точки с запятой на каждом конце строки. Некоторые люди даже думали, что благодаря этому «уникальному пенсе», если вы знаете язык, вы знаете их все, что действительно смешно. Но это породило у C ++ / Java людей идею единственного правильного синтаксиса, и все остальное пытается клонировать COBOL.
Несколько лет назад я перешел на ruby, а теперь и на python, и больше не могу терпеть уродливые точки с запятой, фигурные скобки и другие бессмысленные символы мусора. Исходный код предназначен для чтения людьми. Когда я попробовал визуальную студию, я выбрал VB вместо C #. Я подозреваю, что некоторые программисты выбрали C # просто для того, чтобы «выглядеть серьезно» с его java-подобным синтаксисом, но давай, те же самые функции есть ... дай глазам отдохнуть.
источник
Что ж, если вы говорите о .NET, я могу подумать об одном очень простом:
Редактор VB.NET в Visual Studio гораздо лучше распознает синтаксические ошибки, чем C #.
В то время как редактор C # получил огромное улучшение в VS2008 SP1, все еще есть некоторые синтаксические ошибки, которые редактор не замечает, пока вы не попытаетесь скомпилировать программу.
источник
Большая часть популярности VB возникла в то время, когда инструменты VB были гораздо более дружественными, чем другие доступные языки. «Классический» VB предлагает простой способ создания приложений для Windows без необходимости изучать API Win32 или заниматься ручным управлением памятью. Барьер для входа для начинающих программистов был намного ниже с VB, чем C ++, поэтому многие люди резали зубы с помощью VB.
Сегодня я думаю, что одним из преимуществ VB перед C # является знакомство с теми, кто работал с VB годами. Другое преимущество состоит в том, что код VB легко читается из-за тенденции использовать ключевые слова вместо символов пунктуации. Как человек, который работает в VB, Java, C, C # и Python, я считаю, что VB - это самый простой язык, к которому можно вернуться при просмотре кода, который я написал несколько лет назад. Синтаксис более многословен, что часто облегчает чтение кода, и Visual Studio всегда отлично справлялась с форматированием VB-кода, чтобы очистить форматирование при вводе, чтобы код был последовательно отформатирован (независимо от неряшливости автора).
В качестве примечания я нахожу, что Python чрезвычайно легко читать и просматривать по тем же причинам. В Python форматирование кода обеспечивается интерпретатором, а не IDE, но конечный результат тот же. Python также предпочитает ключевые слова пунктуации, хотя, возможно, в меньшей степени, чем VB.
источник
Трудно утверждать, что он более или менее подвержен ошибкам, чем любой другой язык. Я также сомневаюсь в том, что «подавляющее большинство коммерческих сетей MS»; из того, что я видел, C # далеко лидирует в разработке .NET (где .NET является флагманским инструментом в стеке MS для вещей, которые не являются драйверами устройств и т. д.).
источник
Одно из преимуществ VB.NET по сравнению с C # (которое исчезнет с C # 4) - это параметры по умолчанию и именованные параметры, что очень удобно при использовании VSTO.
источник
VB / VB.NET относится к категории RAD (Rapid Application Development). Вы можете разрабатывать приложения, просто перетаскивая элементы управления из панели инструментов и используя меньше кода.
источник
Ну, я думаю, вы должны различать классические VB и VB.NET.
Я чувствую, что VB.NET не очень популярен, но Visual Basic "Classic" по-прежнему есть1. Причина в том, что ОЧЕНЬ легко создавать приложения для Windows. Сравните это с приложением Windows на C ++ / Mfc, которое было почти единственной альтернативой в настоящее время.
По той же причине Delphi когда-то была очень популярна.
источник
VB очень многословен и к нему легко привыкнуть по сравнению с C #, который чувствителен к регистру. Для начинающего программиста это лучшая отправная точка.
источник
Назвать несколько:
источник
Я думаю, что отчасти это объясняется тем, что старые программисты asp, входящие в .NET, как и я, уже очень хорошо знакомы с VB, потому что VB-скрипт - это язык ASP, используемый по большей части. Я чувствовал, что писать на VB в .NET меньше времени, потому что я уже знал, как говорить на VB. VB также менее кричащий, чем C #. Я могу читать и писать в обоих, но я предпочитаю VB, потому что с ним легко подружиться, если вы новый программист.
источник
Я работаю в среде, где мы используем оба. Мы перешли на C # в пользу классического ASP и VB. На мой взгляд, между языками нет разрыва. Для большинства проектов вы можете выполнять одинаковую работу с обоими языками. Теперь я разделяю ваше мнение о подверженности ошибкам, и я также считаю, что VB загроможден (без причины).
Как уже упоминали другие, VB очень прост, и исторически вы могли строить проекты очень быстро. Это продолжалось в веб-разработке (которая быстро развивается), но я думаю, что когда люди поймут, что C # так же быстро развивается, VB исчезнет. Еще одна причина, по которой я думаю, что она исчезнет, заключается в том, что все остальное, что вы кодируете (CSS, JavaScript) при создании веб-приложений, больше похоже на C #, чем на VB, поэтому имеет смысл использовать C # даже для начинающих.
источник
Мне лично нравится, как события прикрепляются в vb.net с помощью ключевого слова «дескрипторы» ... IDE / Visual Studio / также более отзывчива при работе с VB и автоматически обрабатывает большинство end-if и тому подобного ... C #, конечно, намного более лаконичен и чист (ИМХО, я довольно много работал с обоими)
источник
Что касается платформы 4.0, то в VB по сравнению с C # не хватает всего нескольких вещей, и наоборот. А именно:
Yield
ключевого слова, но скоро оно появится в VB.NET с новой асинхронной структурой.unsafe
ключевого слова. Я никогда не считал это необходимым, но наверняка есть люди, которые имеют.Dim s = <s>My string... multiple lines...</s>.Value
. Это не красиво, но если вы не разборчивы и действительно хотите многострочные строки, это работает. И вы можете выполнить интерполяцию строк с помощью<%= myVar %>
синтаксиса, что приятно.dynamic
. Динамические переменные уже давно используются в VBOption Compare Off
, но это область действия файла, так что это не так хорошо, какdynamic
потому, чтоdynamic
ограничивает область действия только переменной, объявленной таким образом.Function(x)
илиSub(x)
.В некоторых функциях VB.NET нет C #:
Select
предложение может быть опущено в запросах Linq.Nothing
Ключевое слово гораздо полезнее , чемnull
в том , что все (типах даже значения) может быть установлена ,Nothing
и вы получите по умолчанию. Там нет необходимости дляdefault
ключевого слова.Мой магазин делает MVC3 с Razor, используя VB.NET, и как только вы преодолеете (в основном необоснованные) предубеждения, это на самом деле очень хороший язык для использования. На самом деле это не так многословно, как в C #, как утверждают многие (за исключением лямбда-выражений), и это в значительной степени функция для функции, параллельная C #. Я обнаружил, что большинство людей, которые являются ненавистниками, на самом деле давно не программировали в современном VB.NET.
источник
AndAlso
[не смотря на то, что при разговоре он короче, чем «двойной амперсанд»], но игнорируют тот факт, что anIf-Then/Else/EndIf
занимает три строки плюс контролируемые операторы, тогда как эквивалент C # будет занимать по меньшей мере четыре и, возможно, шесть, в зависимости от условных скобок, если только вы не пишете} else {
одной строкой.