Почему VB так популярен? [закрыто]


28

Мне Visual Basic кажется неуклюжим, уродливым, подверженным ошибкам и трудным для чтения. Я позволю другим объяснить, почему . Хотя VB.net явно сделал огромный шаг вперед для языка с точки зрения возможностей, я до сих пор не понимаю, почему кто-то выбрал бы кодирование на VB, скажем, на C #.

Тем не менее, я все еще вижу (что, похоже, что), что подавляющее большинство коммерческих веб-приложений из «магазинов MS» построено на VB. Я мог бы исправить это, но VB все еще кажется более популярным, чем он заслуживает.

Может ли кто-нибудь помочь ответить на любой (или все) из следующих вопросов:

  • Я что-то упустил с VB? Это легче учиться или «дружелюбнее», чем C #? Есть ли функции, о которых я не знаю?
  • Почему VB / VB.net так часто используется сегодня, особенно в веб-проектах?

4
Откуда вы знаете, с помощью чего были созданы коммерческие веб-сайты Microsoft?
Самджудсон

30
«Почему VB / VB.net так часто используется сегодня», это немного похоже на вопрос «Почему мулы / грузовики так часто используются сегодня в транспорте?»
Даниэль Даранас

2
Просто для потомков, я стою (смущенно) исправлено. У VB есть сообщество очень лояльных пользователей, что говорит о многом.

5
этот вопрос должен быть удален.

25
Не удаляйте этот вопрос. Это плохо, предвзято и субъективно, но это часто случается и может служить справочным материалом.
Конрад Рудольф

Ответы:


47

VB может использоваться для создания GUI (произносится как Gooey) для отслеживания IP-адресов. Это часто используется в раскрытии преступления .



4
Вау. Только что. Вау. Это сделало мой день совершенно потрясающим.

1
Боже мой, боже мой!

2
Я никогда больше не буду смотреть на CSI так же.
Роберт Харви

3
Увеличьте изображение ....... ок, улучшите.

42

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

Я был программистом на VB много лет, и когда пришел .NET, я все еще работал в VB.NET первые пару лет (на самом деле не видел смысла в C #). Теперь у меня есть несколько лет C #, и я иногда обнаруживаю, что код VB.NET занимает немного больше времени для "декодирования", чем код C #. Возможно, потому что он опирается больше на слова, чем символы для некоторых конструкций ...


5
Вы точно так же описываете мою ситуацию.

6
То же самое и здесь - код VB.NET полон "шума", когда вы смотрите на него с точки зрения синтаксиса в стиле C. Не в обиду ни VB-разработчикам. Просто так, когда вы переходите с C # на VB.

2
согласен, я терпеть не могу VB.NET - синтаксис похож на историю ... и да, мне пришлось использовать его постоянно в течение нескольких месяцев, это сводило меня с ума, я люблю синтаксис C #.
Даль

2
Программисты на C # не обычные люди?
правостороннее

@ Rightfold Нет. Программисты VB.net тоже не нормальные. Программисты VB.net более классные, чем обычные люди, а для C # ... без комментариев. = D VB.net ПРАВИЛА !!!!!!!
Анонимный Пингвин

27

Ниже я только что скопировал свой ответ в другую ветку :

Я развиваюсь как на VB, так и на C # на регулярной основе, большая часть моего заработка связана с C #. Лично я предпочитаю VB для большинства (но не для всех ... лямбд!) Работ. Я не могу назвать каких-либо серьезных преимуществ, кроме тех, что изложил Джон. На самом деле, Херфрид собрал несколько на своем веб-сайте (на немецком языке!), Но они довольно технические.

Что действительно беспокоит меня во всех языках, связанных с Си - это глупый синтаксис. Это чисто культурно, но, как человек, который выполняет большую часть своей профессиональной работы на C ++, и будучи достаточно опытным в этом, я до сих пор абсолютно ненавижу синтаксис. И не только C ++ 'милые маленькие причуды. Нет, весь пакет. Почему брекеты? Почему точка с запятой (возможно, самое глупое решение за всю историю программирования)? Почему глупый синтаксис в стиле C? Почему нет ключевого слова для объявления переменных (на самом деле, это самое глупое решение)?

Есть так много вещей, которые действительно делают меня грустным и злым. В.Б. не святой, его язык имеет огромные недостатки. Но ничто по сравнению с тем, что я сказал выше.

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

Я не предпочитаю VB из-за Myпространства имен, я не предпочитаю его из-за литералов XML, я не предпочитаю его из-за слабой типизации, я не предпочитаю его из-за необязательных параметров или из-за гораздо лучшего switchзаявление. Нет, я предпочитаю это из-за синтаксиса.


Тем не менее, я должен признать, что VB становится все более и более обремененным его синтаксисом. Похоже, что в последнее время это были запросы Linq, параметризованные лямбда-функциями, и я с готовностью признаю, что это упрощает многие вещи. К сожалению, синтаксис VB для лямбд просто слишком громоздок, чтобы конкурировать с C #. Только Parallel.Forпосмотрите, как выглядит раздутый вызов VB по сравнению с C #, где он выглядит естественно. ИМХО, команда разработчиков VB пошла не в том направлении, предпочитая консервативную последовательность, а не читабельность.


Чтобы ответить на ваше субъективное обвинение:

Мне Visual Basic кажется неуклюжим, уродливым, подверженным ошибкам и трудным для чтения.

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

«Неуклюжие, некрасивые ... и трудные для чтения» - все это квалификаторы, которые можно отметить практически на всех языках, с которыми вы не знакомы. Проще говоря: безобразие является прямым следствием вашего незнакомого языка.

Хорошее знание языка означает распознавание шаблонов в коде. Хорошо написанный код будет по virtuel практиков появляется элегантным, в то время как плохие (медленно, подверженные ошибкам) появится код некрасиво. Это так просто.


Последнее замечание: цитируемые вами статьи содержат несколько неточностей и устаревшую информацию. Как единственное оправдание для очень субъективной и эмоциональной дискуссии, они не очень хорошо подходят.


4
Блейк: да, полный балл за Руби. Наконец язык делает это правильно. Python также высоко ценится со мной. Тем не менее, я частично недоволен всеми существующими синтаксисами.
Конрад Рудольф

2
Ruby отстой: P ... теперь, когда я это понял, настоящая причина различий в синтаксисе majoy между скобками на основе ключевых слов сводится к простоте написания парсера. Раньше я был большим фанатом VB (BASIC в целом), но с тех пор, как я перешел на C #, мне гораздо легче и быстрее работать.
Мэтью Уайтед

4
Почему брекеты? Потому что они визуально разграничивают блок кода, если используются правильно. Да, я понимаю, что отступы в VB тоже это делают, но фигурные скобки делают это с большей ясностью IMO. Точки с запятой облегчают работу компилятора (просто спросите об этом команду разработчиков VB). Я нахожу кастинг в C # очень интуитивным и компактным. И это объявление переменной ключевое слово:var
Роберт Харви

1
@ Роберт Харви: 1) VB использует ключевые слова для обозначения блоков, а не отступов. Так много для ясности. 2) Что касается приведения, C ++ правильно решил отказаться от приведения в C-стиле давным-давно, потому что это слишком визуально незаметно ( не очень хорошая вещь; приведение должно выделяться, так как оно вводит измененную семантику и потенциальные недостатки использования типа). 3) Нет. Я имел в виду синтаксический намек, предшествующий каждой декларации. var int xприходит на ум. Все остальные операторы и блоки представлены специальными ключевыми словами, почему не объявления переменных и методов? Тьфу. Непоследовательный и безобразный.
Конрад Рудольф

4
@Konrad: Я признаю, что сначала понадобилось немного привыкнуть. Отчасти философское различие может заключаться в том, что я больше не думаю о своем языке программирования как о варианте английского, как я это делал, когда я привык программировать на VB. Переход на C # сделал язык программирования, который я использую, несколько более символичным (и лаконичным), но не слишком непрозрачным. Эта символика позволила мне мыслить свободнее мыслить более концептуально о таких вещах, как объектная ориентация, передача сообщений и лямбда-выражения.
Роберт Харви

15

Мне Visual Basic кажется неуклюжим, уродливым, подверженным ошибкам и трудным для чтения.

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

Дело не только в том, что Visual Basic трудно читать или неуклюже из-за синтаксиса языка, но обычно так происходит потому, что программист не очень хорошо выражает свои мысли:

If blah = 10 Then If stuff = "foo" Then t = 1 + k: s = 42: dostuff21

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

If SelectedType = 10 And UserName = "Foo" Then
    CurrentUsers = CurrentUsers + 1
    UserConnectionID = 42
    PerformUserOperation
End If

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

Тем не менее, я не особо затрагивал Visual Basic со времен VB3 (отсюда и пример со «старым» синтаксисом), но только то, что язык может подвергаться злоупотреблению, не означает, что его нельзя использовать правильно для написания достаточно надежного кода. , Конечно, могут быть некоторые недостатки, но подходы, разработанные для решения этих проблем, также показывают навыки одного программиста над другим.

(Беспорядочное распыление On Error Resume Nextприходит на ум как не очень хороший способ обойти недостатки отсутствия исключений в VB еще в до .NET дней.)


13

Большая часть вашей аргументации против VB применима только к VB-Classic (вторая ссылка) или основана на слабых или устаревших аргументах

  • Даже в VBC вы не будете использовать GoSub ... Возврат и т. Д.
  • Что не так с static? C ++ тоже поддерживает это.
  • VB10 вводит неявное продолжение строки (вам даже не нужна избыточная точка с запятой, такая как C #)
  • Различные функции приведения также существуют в C ++ и C #. C # (object)(expr)-Cast-синтаксис и object as typeеще более запутанным и противоречивым.
  • Что плохого with? Вы можете создавать вложенные древовидные структуры очень интуитивно, что невозможно в C #.
  • Обработка событий в VB намного элегантнее, чем в C #. Вы можете вводить и обрабатывать события одним ключевым словом ( WithEvents) без необходимости инициализации делегатов, обработчиков событий и т. Д. Это делает GUI-программирование на VB намного более удобным и вам не нужно генерировать код события разработчиком .
  • Необязательные параметры вводятся в новый C # - следовательно, они кажутся хорошими.
  • В VB.NET есть как строгие, так и сокращенно-логические операторы.
  • Вы же проверить на наличие синтаксических ошибок во время компиляции , если не запускать VB как скрипт-язык.
  • End Ifэто более полезно, чем просто }. При наличии сложных синтаксических структур все фигурные скобки просто сбивают с толку, тогда как конкретный End ...помогает вам определить, какой блок не был закрыт.
  • Литералы XML - XML-скрипт теперь является частью кода, полностью поддерживаемого Intellisense.

В целом, есть только несколько объективных различий между VB.NET и C #, кроме синтаксиса. Например: GUI-проектирование намного более эффективно в VB благодаря лучшей системе событий и лучшей IDE, тогда как, например, алгоритмы могут быть лучше выражены в C #, потому что синтаксис является более кратким.

Остальное - это вопрос вашего личного стиля. Программисты C-Style чувствуют себя комфортно с C #, VB (или, может быть, Pascal?) - программисты стиля используют VB.

Но основанный на словах более четкий VB-синтаксис может быть проще для начинающих, чем все символы в C. Сравните:

If (a < 15) Xor (b = 2) And Not Condition Then

в

if ((a < 15) ^ (b == 2) && !Condition())

Это не значит, что один язык лучше другого.

Редактировать : -----------------------------------------

К аргументу VB будет склонен к ошибкам. Когда вы используете Option Strict Onэто так же строго, как C #, но не позволяет нам делать такие ошибки:

// VB would initialize with zero (C/C++ doesn't)
int countZeros;
// No confusion with loop bounds with For x = 1 To Length
for (int i = 1; i <= length; i++) {
    // Never confusing == with = 
    if (data[i] = 0) 
        countZeros++;
}

1
C # выдаст ошибку компиляции, если не инициализировать countZeros (в локальной области) и назначить значение data [i] в ​​операторе if. Я знаю, что вы ссылались на c / c ++ в своем комментарии, но я полагаю, что OP сравнивал VB с C # :)

1
На мой взгляд, VB10 бьет C # 10 большое время!
Шимми

Мне нравятся все языки: LISP, C, VB, PHP, вы называете это.
Системович

+1, и я бы добавил, что оператор Switch VB не бесполезен, как C #.
Джоэл Браун

12

Исторически среда разработки VB была быстрым и эффективным способом создания определенных типов приложений (например, приложений с графическим интерфейсом). Это сделало его очень популярным. Я думаю, что VB был наиболее используемым языком в период своего расцвета (например, VB6).

С такой установленной базой неудивительно, что в ней еще много работы.


2
+1 afaics VB6 и особенно VS IDE обеспечили (очень) низкий барьер для входа, что создало поколение новых кодеров, со всеми проблемами и возможностями в этом

7

Все началось до появления C #

В 1999 году у нас была Visual Studio 5/6. Если вы были независимым поставщиком программного обеспечения или корпорацией, использующей Windows, и вам нужно было написать приложение, которое могло бы, например, отслеживать время, потраченное сотрудником на проекты, у вас было несколько вариантов:

  1. Формы в Visual Basic.
  2. MFC, ATL или Win32 в Visual C ++.
  3. Формы в Access 97/2000.
  4. Веб-сайт ASP.
  5. Java-апплет.

В то время мы были как раз перед тем, как лопнул пузырь 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 является их основным продуктом для разработчиков, но у меня пока нет ссылок.


6

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


6

VB.NET легче изучать, вы правы, и в целом это проще, чем C #, по моему мнению. Это первое, почему VB так популярен. Еще один, и самый важный момент, я думаю, состоит в том, что существует огромное количество разработчиков, которые работали с VB 6 и более ранними версиями этого языка, и им легче разрабатывать приложения на VB.net, чем изучать новый язык.


6

Как уже говорили другие, ваше эстетическое суждение о синтаксисе языка во многом зависит от того, что вы знали раньше. Уже более десяти лет это выглядит как соревнование, похожее на C, с фигурными скобками для «блоков», «->» для косвенного обращения (perl, php), скобками для аргументов вызова функции, // для комментарии и точки с запятой на каждом конце строки. Некоторые люди даже думали, что благодаря этому «уникальному пенсе», если вы знаете язык, вы знаете их все, что действительно смешно. Но это породило у C ++ / Java людей идею единственного правильного синтаксиса, и все остальное пытается клонировать COBOL.

Несколько лет назад я перешел на ruby, а теперь и на python, и больше не могу терпеть уродливые точки с запятой, фигурные скобки и другие бессмысленные символы мусора. Исходный код предназначен для чтения людьми. Когда я попробовал визуальную студию, я выбрал VB вместо C #. Я подозреваю, что некоторые программисты выбрали C # просто для того, чтобы «выглядеть серьезно» с его java-подобным синтаксисом, но давай, те же самые функции есть ... дай глазам отдохнуть.


4

Что ж, если вы говорите о .NET, я могу подумать об одном очень простом:

Редактор VB.NET в Visual Studio гораздо лучше распознает синтаксические ошибки, чем C #.

В то время как редактор C # получил огромное улучшение в VS2008 SP1, все еще есть некоторые синтаксические ошибки, которые редактор не замечает, пока вы не попытаетесь скомпилировать программу.


Эта фоновая компиляция как раз и сделала редактирование больших проектов VB в VS2005 очень медленным. В любом случае, для этого и существует ReSharper;)
Лукас

Это не просто фоновая компиляция, инструменты автоформатирования и очистки кода исправляют многие вещи, прежде чем вы даже отойдете от блока, чтобы запустить компиляцию. Это ОГРОМНАЯ экономия времени в VB по сравнению с C #
Билл

4

Большая часть популярности 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.


3

Трудно утверждать, что он более или менее подвержен ошибкам, чем любой другой язык. Я также сомневаюсь в том, что «подавляющее большинство коммерческих сетей MS»; из того, что я видел, C # далеко лидирует в разработке .NET (где .NET является флагманским инструментом в стеке MS для вещей, которые не являются драйверами устройств и т. д.).


3

Одно из преимуществ VB.NET по сравнению с C # (которое исчезнет с C # 4) - это параметры по умолчанию и именованные параметры, что очень удобно при использовании VSTO.


И, в этом отношении, «динамический» - предоставление C # чего-то сравнимого с существующими поздними / диспетчерскими привязками VB.
Марк Гравелл

1
Это так называемое преимущество всегда было проблематичным для меня - я читал, что C # имеет перегрузки, которые являются более безопасным способом достижения того же практического результата.

2
Недостатком перегрузок является то, что они сложнее и сложнее поддерживать, когда вы просто хотите установить несколько значений по умолчанию. Вы можете получить сложные цепочки перегрузок, которые компилятор превращает во вложенные вызовы методов, вместо того, чтобы напрямую разрешать его компилятором.
Мэтью Уайтед

3

VB / VB.NET относится к категории RAD (Rapid Application Development). Вы можете разрабатывать приложения, просто перетаскивая элементы управления из панели инструментов и используя меньше кода.


То же самое можно сказать о комбо ASP.net + C #, нет?

Да, большинство языков Visual Studio.

Ну, в возрасте VB (не .net) не было C # и т. Д. Так что VB был единственной БОЛЬШОЙ вещью того времени. Позже пользователи VB перешли на VB.NET. VB <> VB.NET в любом случае.

3

Ну, я думаю, вы должны различать классические VB и VB.NET.

Я чувствую, что VB.NET не очень популярен, но Visual Basic "Classic" по-прежнему есть1. Причина в том, что ОЧЕНЬ легко создавать приложения для Windows. Сравните это с приложением Windows на C ++ / Mfc, которое было почти единственной альтернативой в настоящее время.

По той же причине Delphi когда-то была очень популярна.


Я согласен, что VB.net не так популярен, как классический VB. Некоторые разработчики, которые не смогли перенести свою кодовую базу на VB.net, могли перейти на C #.
Дж.Б. Уилкинсон

3

VB очень многословен и к нему легко привыкнуть по сравнению с C #, который чувствителен к регистру. Для начинающего программиста это лучшая отправная точка.


3

Назвать несколько:

  • простота использования
  • знакомое имя (основной был одним из первых популярных языков программирования)
  • не стоит недооценивать маркетинг Microsoft

3

Я думаю, что отчасти это объясняется тем, что старые программисты asp, входящие в .NET, как и я, уже очень хорошо знакомы с VB, потому что VB-скрипт - это язык ASP, используемый по большей части. Я чувствовал, что писать на VB в .NET меньше времени, потому что я уже знал, как говорить на VB. VB также менее кричащий, чем C #. Я могу читать и писать в обоих, но я предпочитаю VB, потому что с ним легко подружиться, если вы новый программист.


2

Я работаю в среде, где мы используем оба. Мы перешли на C # в пользу классического ASP и VB. На мой взгляд, между языками нет разрыва. Для большинства проектов вы можете выполнять одинаковую работу с обоими языками. Теперь я разделяю ваше мнение о подверженности ошибкам, и я также считаю, что VB загроможден (без причины).

Как уже упоминали другие, VB очень прост, и исторически вы могли строить проекты очень быстро. Это продолжалось в веб-разработке (которая быстро развивается), но я думаю, что когда люди поймут, что C # так же быстро развивается, VB исчезнет. Еще одна причина, по которой я думаю, что она исчезнет, ​​заключается в том, что все остальное, что вы кодируете (CSS, JavaScript) при создании веб-приложений, больше похоже на C #, чем на VB, поэтому имеет смысл использовать C # даже для начинающих.


2

Мне лично нравится, как события прикрепляются в vb.net с помощью ключевого слова «дескрипторы» ... IDE / Visual Studio / также более отзывчива при работе с VB и автоматически обрабатывает большинство end-if и тому подобного ... C #, конечно, намного более лаконичен и чист (ИМХО, я довольно много работал с обоими)


Я предпочитаю подписываться на события самостоятельно, а не на все магические закулисные вещи, которые происходят с «Ручками» и дизайнером VS.
Лукас

2

Что касается платформы 4.0, то в VB по сравнению с C # не хватает всего нескольких вещей, и наоборот. А именно:

  1. Наиболее примечательным является то, что VB.NET не имеет Yieldключевого слова, но скоро оно появится в VB.NET с новой асинхронной структурой.
  2. Там нет unsafeключевого слова. Я никогда не считал это необходимым, но наверняка есть люди, которые имеют.
  3. Здесь нет многострочных строк. Многострочные строки выполняются с помощью операторов + (или устаревших &) между строками. Или они могут быть выполнены с помощью XML - синтаксис литерала: Dim s = <s>My string... multiple lines...</s>.Value. Это не красиво, но если вы не разборчивы и действительно хотите многострочные строки, это работает. И вы можете выполнить интерполяцию строк с помощью <%= myVar %>синтаксиса, что приятно.
  4. Не существует переменного эквивалента в области видимости dynamic. Динамические переменные уже давно используются в VB Option Compare Off, но это область действия файла, так что это не так хорошо, как dynamicпотому, что dynamicограничивает область действия только переменной, объявленной таким образом.
  5. В VB отсутствует краткий лямбда-синтаксис. Лямбды есть, но вы должны использовать Function(x)или Sub(x).

В некоторых функциях VB.NET нет C #:

  1. Литералы XML, которые удобны для всех видов вещей, а не только для XML.
  2. Нечувствительность к регистру в языке - мяу кошки. Не многие другие языки допускают это, но какая разница в скорости кодирования: никогда не приходится нажимать клавишу Shift при наборе текста, а ваш код просто автоматически форматируется так, как вы этого хотите.
  3. Часто ненужное Selectпредложение может быть опущено в запросах Linq.
  4. NothingКлючевое слово гораздо полезнее , чем nullв том , что все (типах даже значения) может быть установлена , Nothingи вы получите по умолчанию. Там нет необходимости для defaultключевого слова.
  5. VB.NET постоянно компилируется в Visual Studio, поэтому вы сразу видите ошибки. Не нажимайте CTRL-SHIFT-B весь день, как в C #.

Мой магазин делает MVC3 с Razor, используя VB.NET, и как только вы преодолеете (в основном необоснованные) предубеждения, это на самом деле очень хороший язык для использования. На самом деле это не так многословно, как в C #, как утверждают многие (за исключением лямбда-выражений), и это в значительной степени функция для функции, параллельная C #. Я обнаружил, что большинство людей, которые являются ненавистниками, на самом деле давно не программировали в современном VB.NET.


Что касается меня, VB.NET слишком многословен. Вы должны вручную напечатать много шаблонного кода, и ReSharper на самом деле не помогает. Я кодирую в C # / VB.NET в Paraller уже 3 года.
Хедин

VB действительно многословен из-за более длинных ключевых слов. Хотя вы не часто их набираете, потому что IDE вставляет их для вас. Но IMHO C # часто вертикально многословен из-за фигурных скобок. Некоторые другие преимущества VB: избегайте обсуждения стиля скобок, потому что в VB только один стиль; (язык уходит в щеку) избегайте раздувания правого мизинца из-за бесконечного ввода точки с запятой и фигурной скобки.
MarkJ

1
@MarkJ: Мне интересно, как сторонники C # критикуют AndAlso[не смотря на то, что при разговоре он короче, чем «двойной амперсанд»], но игнорируют тот факт, что an If-Then/Else/EndIfзанимает три строки плюс контролируемые операторы, тогда как эквивалент C # будет занимать по меньшей мере четыре и, возможно, шесть, в зависимости от условных скобок, если только вы не пишете } else {одной строкой.
суперкат
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.