Чому VB настільки популярний? [зачинено]


28

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

Однак я все ще бачу (як здається) переважна більшість комерційних веб-додатків від "MS магазинів" побудовані у VB. Я міг би виправити це, але VB все ще здається популярнішим, ніж заслуговує.

Чи може хто-небудь допомогти відповісти на будь-яке (або всі) з цих питань:

  • Я щось пропускаю з VB? Чи легше вчитися, чи "дружніше", ніж C #? Чи є функції, про які я не знаю?
  • Чому VB / VB.net так часто використовується сьогодні, особливо у веб-проектах?

4
Як ви знаєте, для чого були побудовані комерційні веб-сайти Microsoft?
samjudson

30
"Чому VB / VB.net сьогодні так часто використовується?" Це трохи схоже на запитання "Чому мули / вантажівки так часто використовуються сьогодні для транспортування?"
Даніель Даранас

2
Тільки для нащадків я стою (по-дурному) виправлений. VB має спільноту дуже лояльних користувачів, що говорить дуже багато.

5
це питання слід видалити.

25
Не видаляйте це запитання. Це погано, упереджено і суб'єктивно, але досить часто трапляється і може слугувати орієнтиром.
Конрад Рудольф

Відповіді:


47

VB можна використовувати для створення GUI (вимовляється gooey) для відстеження IP-адрес. Це часто використовується при розкритті злочинів .



4
Ого. Просто. Ого. Це просто зробило мій день абсолютно приголомшливим.

1
omg wow ... omg wow.

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

3
Збільшити ....... нормально покращити.

42

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

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


5
Ви точно так само описуєте мою ситуацію.

6
Те саме тут - код VB.NET сповнений "шуму", коли дивишся на нього з точки зору синтаксису стилю С. Не ображайте жодних VB-розробників. Так само, як це відчуваєш, коли їдеш з C # до VB.

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

2
Програмісти на C # не звичайні люди?
праворуч

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

27

Нижче я просто скопіював свою відповідь на іншу тему :

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

Те, що нас справді клопоче про всі мови, пов'язані з С, - це дурний синтаксис. Це суто культурно, але як хтось, хто більшу частину своєї професійної роботи займається C ++, і, маючи досить досвідчений досвід, я все ще ненавиджу синтаксис. І не тільки C ++ 'милі маленькі примхи. Ні, весь пакет. Чому брекети? Чому крапки з комою (мабуть, найглухіше рішення за всю історію програмування)? Чому дурний синтаксис в стилі C? Чому не існує ключового слова для змінної декларації (насправді це найглупіше рішення)?

Просто так багато речей, що насправді мене сумно і сердито. VB не святий, його мова має величезні недоліки. Але нічого в порівнянні з тим, що я говорив вище.

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

Я не віддаю перевагу VB через Myпростору імен, я не віддаю перевагу через XML-літерали, я не віддаю перевагу через слабке введення тексту, я не віддаю перевагу через необов’язкові параметри або через набагато краще switchзаява. Ні, я вважаю за краще це через синтаксис.


Це означає, що я маю визнати, що VB все більше обтяжується своїм синтаксисом. Здається, останнім шумом є запити Linq, параметризовані лямбда-функціями, і я легко визнаю, що це робить багато речей простішими. На жаль, синтаксис VB для лямбдів просто занадто громіздкий, щоб конкурувати з C #. Поміркуйте, як Parallel.Forвиглядає роздутий дзвінок у VB - порівняно з C #, де це виглядає природно. IMHO, команда дизайнерів VB пішла в неправильному напрямку, віддаючи перевагу консервативній послідовності щодо читабельності.


Щоб відповісти на ваше суб'єктивне звинувачення:

Мені Visual Basic здається незграбним, некрасивим, схильним до помилок і важко читати.

Ви, звичайно, маєте право так думати, але, як Марк сказав нижче, вам буде складно аргументувати це об’єктивно. Я, безумовно, можу навести декілька елементів синтаксису С, які об'єктивно більш схильні до помилок, ніж усе, що існує у VB. Насправді, синтаксис VB був розроблений для явного запобігання подібним засіданням.

"Незграбні, некрасиві ... і важко читати" - всі класи, які можна позначати майже на всіх мовах, які вам не знайомі. Простіше кажучи: потворність - це прямий наслідок вашої незнайомості мови.

Добре знати мову означає розпізнавати шаблони в коді. Добре написаний код буде по virtuel практиків з'являється елегантним, в той час як погані (повільно, схильні до помилок) з'явиться код некрасиво. Це так просто.


Останнє зауваження: цитовані вами статті містять кілька неточностей та застарілої інформації. Як єдине виправдання високо суб'єктивної та емоційної дискусії вони не дуже підходять.


4
Блейк: так, повні бали за Рубі. Нарешті мова, яка робить це правильно. Python також набирає високий бал зі мною. Все-таки я частково незадоволений усіма існуючими синтаксисами.
Конрад Рудольф

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

4
Чому брекети? Оскільки вони візуально розмежовують блок коду, якщо його правильно використовувати. Так, я розумію, що відступ у VB теж робить це, але дужки роблять це з більшою чіткістю IMO. Точки з комою полегшують компілятор (просто запитайте про це компілятор VB). Я вважаю, що кастинг на C # дуже інтуїтивний та компактний. І є ключове слово із змінною декларацією:var
Роберт Харві

1
@Robert Harvey: 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 # 's (object)(expr)-Cast-Syntax і object as typeще більш заплутані та непослідовні.
  • Що поганого with? Ви можете створити вкладені структури дерев дуже інтуїтивно, що неможливо в C #.
  • Організація подій у VB набагато елегантніша, ніж у C #. Ви можете вводити та обробляти події за допомогою одного ключового слова ( WithEvents) без необхідності ініціалізації делегатів, eventhandler-procs тощо. Це робить GUI-програмування в VB набагато зручнішим, і вам не потрібно створювати код події дизайнером .
  • Необов’язкові параметри вводяться в новий C # - Отже, вони здаються хорошими.
  • VB.NET має як суворих, так і швидких булевих операторів.
  • Ви ж перевірити на наявність синтаксичних помилок під час компіляції , якщо не запускати VB як скрипт-мову.
  • End Ifкорисніше, ніж просто }. При складних синтаксичних структурах всі фігурні дужки просто плутають, тоді як конкретний End ...допомагає вам визначити, який блок не закритий.
  • XML Literals - XML-скрипт тепер є частиною коду, повністю підтримується intellisense.

Загалом, існує лише кілька об'єктивних відмінностей між VB.NET та C #, крім синтаксису. EG: 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 (в локальному масштабі) та для призначення значення [i] в ​​операторі if. Я знаю, що ви посилаєтесь на c / c ++ у своєму коментарі, але я вважаю, що ОП порівнювала VB з C # :)

1
На мою думку, VB10 б'є С # 10 великий час!
Шиммі

Мені подобаються всі мови: LISP, C, VB, PHP, ти їх називаєш.
системович

+1, і я хотів би додати, що оператор Switch VB не марний, як C # 's.
Джоел Браун

12

Історично середовище розробки VB було швидким та ефективним способом побудови певних типів додатків (наприклад, додатків GUI). Це призвело до того, що це був дуже популярний вибір. Я думаю, що 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. Форми в доступі 97/2000.
  4. Веб-сайт ASP.
  5. Аплет Java.

У той час ми були перед тим, як спливаюча бульбашка Dot-Com вибухнула, тому будь-хто, хто мав будь-який хороший з (4) або (5), пішов обговорювати акції на будь-який дивовижний точковий ком, який їх приваблював.

(3) виникли проблеми із блокуванням та загальною масштабованістю, але я побачив багато рішень, керованих доступом, які дозволять виконувати функції підтримки за потребою.

Отже, це залишає нас з VB та VC ++:

На той час редактор Forms у VB був відмінним за продуктивністю. Ви можете перетягнути свої компоненти - не лише кнопки, мітки та текстові поля, а повний набір інструментів «OLE управління» з багаторазових компонентів, таких як розумні сітки, аркуші Excel або екземпляри IE. Підключення було зроблено за лаштунками - все було об’єктно, і ви просто двічі клацнули речі, щоб додати обробників подій. У Visual C ++ це було набагато складніше. В той час, будучи членом команди підтримки розробників Visual Studio, я можу згадати, як виклики підтримки Visual Basic здебільшого стосувалися того, який компонент найкраще використовувати або як оптимізувати їх застосування певними способами. Майже ніколи не було: "як зробити програму з функціями інтерфейсу користувача X, Y та Z".

Створення багатого інтерфейсу в Visual C ++ було іншим завданням. Хоча існувала підтримка редактора Visual для діалогів та форм 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.

Кілька років тому я перейшов на рубін, а зараз пітон, і більше не можу витримати потворних крапку з комою, фігурні дужки та інші безглузді символи. Вихідний код призначений для читання людьми. Коли я спробував візуальну студію, я вибрав 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

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


3

Одна з переваг, яку VB.NET має над C # (яка зникне з C # 4), є типовими параметрами та названими параметрами, що дуже приємно мати при використанні VSTO.


І, з цього приводу, "динамічний" - надання C # чогось порівнянного з VB, які існують у зв'язку із запізненням / відправленням.
Марк Гравелл

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

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

3

VB / VB.NET належить до категорії RAD (швидкий розвиток додатків). Ви можете розробляти додатки з елементами керування лише перетягуванням з панелі інструментів та меншим кодом.


Ви можете сказати те саме про комбінацію ASP.net + C #, ні?

Так, більшість мов на основі Visual Studio.

Що ж, у віці VB (не .net) не було C # тощо. Тож VB був єдиною ВЕЛИКОЮ річчю того часу. Пізніше користувачі VB перейшли на VB.NET. VB <> VB.NET все одно.

3

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

Я відчуваю, що VB.NET не дуже популярний, але Visual Basic "Класичний" все-таки є1 Причина в тому, що ДУЖЕ легко створити додаток для Windows. Порівняйте це з додатком для Windows в C ++ / Mfc, що було майже єдиною альтернативою на даний момент.

З цієї ж причини Delphi була дуже популярною колись.


Я згоден, що VB.net не так популярний, як класичний VB. Деякі розробники, які не змогли перенести свою кодову базу на VB.net, могли замість цього перейти на C #.
JBRWilkinson

3

VB дуже багатослівний і його легко звикнути до порівняння з C #, який враховує регістри. Для початківця програміста це найкраща відправна точка.


3

Назвати декілька:

  • простота використання
  • знайоме ім’я (основна була однією з перших популярних мов програмування комп'ютерів)
  • не варто недооцінювати маркетинг мікрософт

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 і автоматично обробляє більшість кінців, якщо подібні ... Звичайно, C # набагато зручніший і чистіший (ІМХО, я працював з обома зовсім небагато)


Я віддаю перевагу передплачувати події сам, а не всі магічні закулісні речі, які продовжуються разом із "Ручками" та дизайнером VS.
Лукас

2

Що стосується версії 4.0, то в порівнянні з C # є лише невелика кількість речей, яких не вистачає VB, а також зворотне. А саме:

  1. Найбільш помітним є те, що VB.NET не має Yieldключового слова, але незабаром він з'явиться до VB.NET з новою рамкою async.
  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 #. Я виявив, що більшість людей, які ненавидять, насправді не кодували в сучасному VB.NET протягом жодного проміжку часу.


Як на мене, VB.NET занадто багатослівний. Вам потрібно вручну надрукувати багато кодової панелі, і ReSharper насправді не допомагає. Я кодую в C # / VB.NET паралельно вже 3 роки.
Гедін

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

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