Я был на рабочих местах, где в начале проекта был задан вопрос «Должны ли мы использовать VB.Net или C #».
Конечно, сейчас такое решение принято не так часто, как в первые дни существования .Net, особенно с учетом тенденции к конвергенции языков, но это все еще может быть жаркой дискуссией.
Итак, между VB.Net и C #, какой язык вы предпочитаете и почему?
Просто чтобы добавить ключ к работе, есть некоторые продукты (например, WF дизайнер в VS2010), которые поддерживают только синтаксис VB.Net ...
Дамовиза
Здесь программисты на C # получают больше, чем программисты на VB.NET.
SeanX
Я удалил «вечную» часть названия, которая кажется «неконструктивной». Сам вопрос очень полезен, и качество ответов является гораздо лучшим показателем того, насколько конструктивны пресловутые «шесть руководящих принципов».
Wizard79
Я часто задаюсь вопросом, изменится ли это само собой, сохранится ли тенденция к C #, делающая людей с VB.NET более скудными и способными получить более высокую премию.
+1 ТАК быстро заменяет Google как мой любимый источник помощи в программировании.
Анонимный тип
12
Вопрос в том, означает ли в 10 раз больше C # тегов, что предмет освещен лучше, больше использования или у него больше проблем? +1 на наличие работы.
JeffO
12
Я бы с осторожностью относился к любому работодателю, который бы не нанимал программиста VB.NET для работы на C #.
Мэтт Оленик
@ Анонимный: ТАК заменил Google ко дню 2 (больше года назад). У FireFox дома SO, MSDN и Программисты являются моими 3 основными поисковыми сайтами.
IAbstract
@IAbstract, так, правда.
анонимный тип
27
Я ненавижу VB.NET. Дни, которые я все еще использую, это дни, о которых я сожалею. Тем не менее, мои вкусы являются частью моей ситуации и опыта, и не обязательно имеют какое-либо отношение к тому, что вы делаете ...
Я думаю, что при сравнении постоянно развивающихся языков, таких как C # и VB.NET, важно оглянуться назад на свою историю и увидеть, как они достигли своего текущего состояния:
Первоначальные преимущества BASIC для микрокомпьютеров включали в себя размер и простоту (небольшой синтаксис, который легко анализировать, предназначенный для небольших, достаточно быстрых интерпретаторов и оставляющий место в памяти для реальной программы и данных), интерактивная среда, обеспечивающая эксперименты, и синтаксис это избегало кратких символов и структур для достаточно ясного, подобного английскому синтаксиса. Однако он плохо подходил для больших структурированных программ и, как правило, поощрял использование спагетти-кода. Тем не менее, его доступность и простота сделали его отличным выбором для знакомства с программированием.
QuickBasic обновил синтаксис, чтобы позволить большие более структурированные программы, и добавил компиляцию для более быстрого выполнения.
VisualBasic предоставил мощный, простой в использовании конструктор форм, позволяющий быстро создавать приложения с графическим интерфейсом, в то же время применяя синтаксис QB для использования в сценариях этих пользовательских интерфейсов. Он работал лучше всего, когда использовался для создания пользовательских интерфейсов для низкоуровневой логики, представленной в виде предварительно созданных компонентов (обычно написанных на каком-либо другом языке). Со временем синтаксис становился все более широким и непоследовательным по мере добавления новых функций. Ориентация на разработку сначала пользовательского интерфейса, а затем на заполнение фрагментов сценария хорошо работала для небольших приложений, ориентированных на пользовательский интерфейс, но имела тенденцию поощрять программирование копирования-вставки и изменение кода спагетти, не поощряя повторное использование, сложные структуры данных и разделение интересов. По мнению многих, «код VB» стал синонимом «большого шарика грязи»; «Программист VB» с «неопытным взломом».
VB.NET - это VB-подобный язык на платформе .NET, попытка (не совсем удачная) очистить и модернизировать заросший синтаксис VB. Он не был полностью совместим с существующим кодом VB и не предпринимал никаких усилий для обеспечения совместимости с формами VB (возможно, самой важной частью VB). Это оставило многих владельцев продуктов VB с неприятным выбором: переписывать их приложения в VB.NET (что касается тонкой несовместимости в каждой подпрограмме, не прошедшей тщательную проверку) или фактически переписывать свои приложения в C # (иметь дело с незнакомым пользователем). синтаксис в дополнение кновая библиотека времени выполнения и конструктор форм). Большинство пользователей VB.NET были пользователями VB, которые придерживались только одного синтаксиса, многие использовали его в качестве опоры при изучении C #. В результате, он сразу приобрел репутацию пристанища для программистов, которые застряли на своем пути, не желая или не в состоянии расширить или улучшить свои навыки.
На данный момент VB.NET продолжает развиваться, постепенно избавляясь от багажа, набирая новый и интересный синтаксис (LINQ, литералы XML). Тем не менее, он не сохраняет почти ни одного из первоначальных преимуществ BASIC: это большой, сложный язык с довольно крутой кривой обучения и ограниченными возможностями для интерактивных экспериментов.
Для старых программистов, которые придерживались этого в течение последних 30 лет, это неплохой выбор, если они не ограничиваются этим.
Для новых программистов все более расплывчатое сходство программ VB с английским едва ли стоит странных поклонов обратной совместимости и социальной стигме.
Для новых проектов VB.NET является странным выбором, если проект не связан с одной из немногих задач, для которых оптимизирован язык: интеграция с плохо типизированными компонентами COM (Office ...) (хотя C # 4.0 значительно уменьшает это преимущество ) или встроенная генерация XML.
С C # 4 я не вижу никаких преимуществ, которые VB.Net имеет в отношении интеграции COM. Я думаю, что встроенная генерация XML может быть полезной функцией; Я стараюсь не использовать XML (и был успешным в течение последних 5 лет!), Но если у меня есть проект .net, который должен генерировать много XML, я, вероятно, создам проект VB только для генерации XML.
конфигуратор
3
Мне нравилось читать твой ответ, но он внезапно прекратился. Вы предоставляете историю основных, что интересно, и я предполагаю, что правильно. Я ожидал выяснить, почему вам не нравится VB.NET и / или почему вам нравится C #. «Для новых проектов VB.NET - странный выбор» Почему?
Тим Мерфи
@Tim: мне не нравится VB [.NET], потому что большая часть кода, с которым я сталкиваюсь, представляет собой нетипизированный код спагетти, написанный программистами, которые взяли его на работу несколько лет назад (или обучали такие кодеры). Это не обязательно хорошая причина, чтобы кому-то еще это не нравилось. Лучшая причина в том, что язык сделал слишком много уступок для обратной совместимости ... и все же на самом деле не имеет обратной совместимости. Так что, если вы не хотите писать новый нетипизированный код для спагетти ...
Shog9
20
Я знаком с обоими, но много занимался программированием на VB4, VB5 и VB6. Теперь, когда оба языка в .NET прошли несколько итераций и довольно сходились в своих возможностях, я думаю, что дискуссия совершенно глупая, очень похожая на «какой твой любимый цвет».
Лично мне они оба нравятся по разным причинам.
VB.NET
Многие люди говорят о том, что синтаксис C # является более интуитивным, но это очень субъективно и основано на том, что вы начали знать. Я бы сказал, что если бы вы были полностью объективны, синтаксис VB.NET, вероятно, был бы более интуитивно понятным, если вы не предполагаете предварительные знания на другом языке. Например, учитывая ту же программу на C # и VB.NET, которая, по вашему мнению, была бы более понятной для тех, кто не имеет знаний о программировании. Кажется, довольно ясно для меня.
Другая вещь, которая хороша в этом синтаксисе, это то, что он гораздо более явный в отношении закрывающих структур (END IF, END WHILE, NEXT X) по сравнению с моделью брекетинга. Это делает код немного более читабельным и часто позволяет компилятору более точно определять, какой именно номер строки вызывает ошибки компиляции. Если вам когда-либо приходилось искать пропущенные скобки / точки с запятой из-за ошибки компилятора в 50 строках от проблемы, вы понимаете, о чем я.
Кроме того, в столбце VB.NET win, на мой взгляд, отсутствует == / = как оператор сравнения / присваивания. Редкие преимущества наличия отдельного оператора для каждого никогда не компенсируют все (иногда) трудно обнаружить слабые места, которые он помогает создать.
Наконец, я ненавижу чувствительность к регистру в языках программирования. Одна из жалоб на VB состоит в том, что у него так много багажа, но C # продвинул альбатрос чувствительности к регистру C. Я никогда не был в ситуации, когда я хотел, чтобы два идентификатора в одной и той же области различались только в каждом конкретном случае. Это просто делает для занятой работы и замедляет меня. В этом отношении VB.NET получает несколько очков по сравнению с C #.
Программисты C # любят быть лаконичными, поэтому я думаю, что они обычно поддерживают этот синтаксис. Это просто имеет определенную эстетическую привлекательность. Однако с практической точки зрения мне это нравится, потому что оно очень похоже на такие языки, как Java, JavaScript и C ++.
Поскольку я занимаюсь веб-разработкой, требующей программирования как на стороне сервера, так и на стороне клиента, мне легче переключаться между C # и JavaScript, как это часто требуется.
Также мне нравится тот факт, что, по большей части, если бы мне когда-либо пришлось перейти на программирование на Java или C ++, у меня был бы небольшой старт, если бы я использовал C # большую часть времени.
+1 за комментарий веб-разработки. Я использую как VB.NET, так и C #, в зависимости от проекта, и мне гораздо легче переходить между C # и Javascript, чем VB.NET и JS.
Paperjam
2
«Я никогда не был в ситуации, когда я хотел, чтобы два идентификатора в одной и той же области различались только в каждом конкретном случае». чисто субъективно. Это как раз одна из причин, почему я предпочитаю C #. При правильном и последовательном применении для всего мира может иметь смысл иметь, например, параметр в конструкторе с именем nameи открытое свойство с именем, Nameа затем назначить его через Name = name;. Пока вы придерживаетесь стандарта кодирования, в противном случае я согласен, это может вызвать путаницу.
Aidiakapi
1
Необходимость в стандарте кодирования, чтобы избежать подобных коварных ошибок, для меня является негативом. Наличие обходного пути не оправдывает его.
JohnFx
Должно быть трудно писать небрежный код на любом языке программирования. Нечувствительность к регистру только поощряет небрежный код. Чувствительность к регистру совсем не тормозит, что это за аргумент? Это замедляет вас, когда вы делаете много опечаток, и это хорошо, что вас замедляют.
Сокол
Это всего лишь неаккуратный код, потому что компилятор не может его интерпретировать. Если бы все компиляторы были нечувствительны к регистру, это не имело бы значения. Наша задача - не писать код для печати в журнале, а писать код, который выполняет свою работу. «Небрежный» случай никоим образом не мешает этому.
JohnFx
19
Я предпочитаю скобочный синтаксис языков C-стиля более «многословному» синтаксису языков BASIC-стиля.
Мое знакомство с программированием было с Turbo Pascal. (Небольшое программирование на BASIC, которое я делал на Commodore 64, будучи ребенком, на самом деле не имеет значения.) После изучения Java я никогда не оглядывался назад и предпочел синтаксис в стиле C.
msgstr "" подробный "синтаксис языков в базовом стиле." - Да, я никогда больше не смотрел на VB, когда увиделif something then code endif
TheLQ
1
Хех, я был удивлен, что кто-то отказался от этого. (Я ожидал, что это будет вопрос Emacs vs Vim.)
Джордж Мариан
3
@TheLQ: а также AndAlso!
Джерри
Я скучаю по своим дням в Турбо Паскале. Это было очень весело.
MetalMikester
1
Я считаю, что синтаксис скобок легче читать. Один общий символ для блока, а не несколько специфичных для контекста слов.
Майкл К
12
Они функционально одинаковы, вы ничего не можете сделать в одном, что не можете сделать в другом, и в будущем Microsoft пообещала, что языковые команды будут развиваться равномерно, так что эквивалентность вряд ли изменится.
[Примечание: хотя я сам являюсь разработчиком на C #, заключение в связанной статье не обязательно отражает мое личное мнение, это просто интересный альтернативный подход в дискуссии]
@Thomas @WeekendWarrior: Хорошие примеры, но, чтобы подчеркнуть, я сказал «Функционально то же самое», что они и есть. Они оба компилируются в IL, поэтому возможен один и тот же набор функций. Эти примеры являются просто языковыми ярлыками для функциональности, которая может быть достигнута другими способами.
Саймон П Стивенс
8
Я пришел в .NET из C и C ++ (с небольшим количеством Java, Ada и Pascal), поэтому C # был для меня естественным прогрессом.
Если бы пришла работа, требующая VB.NET, я, конечно, не отказался бы.
Я проделал большую работу с VB.NET, но я достаточно понимаю C #, чтобы понять суть происходящего в коде. В настоящее время я предпочитаю VB.NET, потому что я наиболее знаком с ним (очевидно), но на самом деле у меня нет предпочтений между подробным синтаксисом BASIC и синтаксисом в стиле C, оба они очень читабельны и понятны для меня.
Большая часть опыта моего коллега по программированию - это COBOL и VB6, поэтому VB.NET был более удобным выбором языка .NET для нас как команды. У нас не было веской причины, чтобы сделать изучение C # требованием, поскольку они функционально одинаковы.
Тем не менее, изучение C # определенно входит в мой список дел.
У меня такие же проблемы. :) и я предпочитаю VB.NET так же, как я предпочитаю кокс, а не пепси. Но если мы начнем новый проект, C # - лучший выбор, потому что мы найдем больше программистов, которые знают и предпочитают C #. Я понял, что стратегия MS для VB заключалась в том, чтобы вывести сообщество VB на платформу .NET.
Паготти
5
Я предпочитаю C #.
Я начинал как программист VB.NET, но с течением времени стало очевидно, что довольно много новых функций появятся сначала в C #, а затем в VB.NET (например, автоматическое свойство). И сообщество, окружающее C #, гораздо более живое, чем сообщество VB.NET.
Кроме того, если вы собираетесь изучать Java или аналогичный язык, C # - лучшая отправная точка - синтаксис практически одинаков во всех языках, производных от C. Хотя это не будет для меня переломным моментом, так как синтаксис - это то, что вы все равно сможете быстро освоить.
"особенности, приходящие в C # в первую очередь", однако, это не всегда так. См. Stackoverflow.com/questions/181188/… (просто чтобы добавить еще один гаечный ключ в работу)
Примечание для себя - придумайте имя
Это где я нахожусь. Я все еще люблю VB, поскольку именно там я начал, но, по моему мнению, C # имеет лучший синтаксис в таких вещах, как лямбда-выражения. С другой стороны, у VB есть XML-литералы, о которых C # может только мечтать. Я думаю, что стоит разорвать отдельный VB-проект для тяжелой работы с XML.
Kyralessa
1
С каждым поколением инструментов аргументы «функций» немного меняются. Единственное, что я могу думать о том, какой C # имеет по сравнению с vs2010, которого нет в vb.net, - это итераторы; В отличие от этого, vb.net предлагает именованные индексаторы, фильтры исключений, литералы XML, оператор «Есть», который выглядит в 1000 раз лучше, чем Object.ReferenceEqualsобработка событий, которая почти сделана правильно, и более плавную работу IDE. VB.net позволяет, хотя и немного неудобно, иметь инициализаторы полей, использующие параметры конструктора, или безопасно создавать IDisposableобъекты без использования ThreadStaticпеременных; C # нет.
суперкат
5
В дополнение к другим ответам, опубликованным здесь, я бы выбрал C # вместо VB, потому что программисты на C # получают больше денег. Больше опыта с C # = больше $$ :)
Я знаю, что оба языка почти одинаковы, и переключаться между ними очень просто, но я думаю, что когда руководство смотрит на кучу фигурных скобок и точек с запятой, они принимают тот факт, что мы делаем то, что они не могут делать, где с VB. Нет, они могут посмотреть на это и сказать: «О, это не должно быть так сложно, если я могу это понять».
Я думаю, что довольно актуальный момент, который часто упускается из виду в зависимости от отрасли / региона.
анонимный тип
4
C #, потому что я могу переключаться между ним и Java с минимальными усилиями
В VB.NET совершенно другой синтаксис. C #, будучи похожим на Java и другие языки, дает мне больше возможностей для быстрой адаптации к новым вещам. Поскольку выходные данные C # и VB.NET практически взаимозаменяемы, имеет смысл использовать C #. Кроме того, если код вашей компании находится на C #, вы, скорее всего, сможете научить Java-разработчика программировать на C #, чем Java-разработчик VB. Есть только тонкие преимущества, но тонкое все еще преимущество.
Отложив мои личные предпочтения в сторону. Как кто-то, кто набирал (и пытался быть принятым на работу) в последнее время, когда у нас были эти дебаты в офисе, общий консенсус заключался в том, что нам следует перейти к C # из VB.
Почему? Потому что C # был более распространенным на рынке (во всяком случае, вокруг нас), что позволило нам легче набирать и легче набирать.
Похоже, он прошел полный круг; люди изучают C #, потому что рекрутеры хотят этого, потому что есть больше кандидатов.
Будучи немного более старшим разработчиком (на 59 лет "немного" старше?), Я сначала выучил BASIC на Commodore VIC-20, научил себя Turbo Pascal (v1!), Потом изучал COBOL в колледже и провел 14 лет, разрабатывая IBM мейнфреймы, с небольшими изменениями написания приложений среднего размера в Revelation BASIC (вариант PICK BASIC) и нескольких утилит в Modula-2, прежде чем перейти к VB5 и VB6. А потом пришел .NET.
Из-за моего базового опыта я решил начать с VB.NET, только чтобы обнаружить, что я продолжал пытаться делать вещи «по-старому», и это сводило меня с ума (хорошо, больше сумасшествия). В связи с тем, что я проделал некоторую работу в C, я подумал, что я должен дать C # повод посмотреть, как все прошло. И, Боже мой, это было похоже на выход из темного туннеля в ясный дневной свет! Совершенно неожиданно. И я обычно издавал пренебрежительные шумы о том, что C является языком «только для записи» - «настолько трудно понять, что программист C не мог понять, что его собственный код делал через 6 месяцев после того, как он написал его», - наблюдение, сделанное Полуизвестный романист, который, как мне показалось, в то время звучал мило.
Так что из-за того, что я немного незнаком с C, мне было парадоксально легче изучать программирование на .NET, чем гораздо более знакомую базовую парадигму. Я все еще люблю VB6, но полюбил C #. Лучший язык программирования на планете.
Интересный ответ, я думаю, что это, по крайней мере, частично опровергает идею о том, что «старшая толпа» склонна придерживаться VB.NET над C #
анонимный тип
3
Я развиваю в Visual Basic .Net с 2001 года, и мне это нравится, и я ненавижу это !!!
Порядок представления этих точек просто основан на порядке, в котором он пришел мне в голову ...
В vb.net с visual studio есть визуальный разрыв строки между каждым методом, свойством. Для многих людей это не очень хорошая причина отдавать предпочтение vb.net над c #, но я не понимаю, почему команда c # в Microsoft не внедрила его. Есть надстройка, которая рисует эту черту в c #, но еще раз спасибо Microsoft за команду ac # и команду visual basic, которые не общаются друг с другом.
В vb.net, когда вы создаете winform, у вас есть два комбинированных списка в Visual Studio вверху редактора, и вы можете автоматически генерировать событие при выборе события в правом комбинированном окне. Когда вы прикрепляете десятки событий каждый день, может быть очень обременительно не иметь этой функции. С c # у вас есть маленькая кнопка в верхней части сетки свойств, которая может генерировать события, но это не так быстро, как в vb.net. Более того, если вы присоединяете событие элемента управления в c # и удаляете элемент управления в форме, делегат, созданный в автоматически сгенерированном коде для обработки события, должен быть удален вручную. Еще раз спасибо Microsoft.
В vb.net, когда вы пытаетесь изменить метод, содержащий запрос linq, без изменения самого запроса, нет проблем, но в c # весь код метода блокируется. Если у вас много запросов linq или лямбда-выражений, функция редактирования и продолжения быстро станет старой доброй вещью. Хорошо, немного преувеличения ... но :)
В vb.net, когда вы создаете имя метода и нажимаете ввод, автоматически создается 'end sub'. В c # сделай сам. Хорошо, если у вас установлен resharper или devexpress, будет лучше, но почему все эти маленькие, но замечательные функции не были реализованы в c #.
В vb.net, когда у вас есть ошибки в вашем коде, ошибки автоматически отображаются, и когда вы исправляете их, эти ошибки удаляются из стека в режиме реального времени. В c # вы должны построить свой проект, чтобы понять, что вы успешно исправили или нет указанные ошибки. Почему команда C # не имеет возможности проверить в режиме реального времени ошибку, как в vb.net. С большим решением, никакая проверка ошибок в реальном времени не может быть очень хорошей оптимизацией производительности, но мне нравится видеть, как стопка ошибок исчезает, пока я ее исправляю.
Как упомянул другой человек, я думаю, что легче читать условия vb.net, если ... конец if, выберите case ... end select, но с помощью скобки рисования devexpress, забудьте про то, что я сказал.
В vb.net много визуальных ошибок в визуальной студии. Просто упомяну один из них в Visual Studio 2010, intellisens не фильтруют правильно перечисление, если у вас активирован режим «общий» вместо «все».
С vb.net вас воспринимают как глупого парня, потому что статически, более плохие программисты используют vb.net вместо c #, потому что c # труднее учиться и продвигать лучшую практику программирования.
Как уже говорилось, у программиста на c # больше шансов получить хорошую работу с большим количеством денег.
Во главе клиента, vb.net = парень, который программирует в своем подвале с большим количеством спагетти кода. c # = вау, ты очень умный Дело в том, что не потому, что вы программируете на c #, вы делаете хорошую программу, а статически, да.
Учитывая все эти моменты, я решил преобразовать весь свой код VB в C #. Я программирую со всеми лучшими практиками объектно-ориентированного проектирования, шаблонов проектирования, чистого кода со стандартами и строгим синтаксисом, и я могу программировать так в течение 50 лет, но с точки зрения сообщества, я не хороший программист. Я преобразую свой код в C # без других лучших практик, и я буду другим человеком; отличный парень, которого ты должен уважать ..... :( какая шутка ... !!! но это реальность.
Вот способ взглянуть на это: между SO и CodePlex, какой язык более популярен? C # или VB.Net?
Иногда хорошо следовать за стадом, потому что это стадо сможет помочь вам, когда вам это нужно. По умолчанию C # будет быстрее, чем Vb.Net. Я считаю, что использование Option Strict может выровнять его. В последний раз, когда я сравнивал IL между этими двумя типами, безопасность типов в VB.Net закончилась тем, что к IL добавилось еще около 15%. Это приводит к дополнительным накладным расходам. И ... учитывая языки, которые делают в основном то же самое, я выберу более быстрый. Мое удобство не должно отвергать опыт моего пользователя в целом.
Мне нравится говорить, что единственная причина, по которой BASIC по-прежнему популярен, - это то, что это был первый продукт Microsoft, и последние 35 лет его пихают в горло. Это должно было умереть давным-давно.
С учетом вышесказанного я работал над двумя крупными проектами .NET, и оба они были выполнены с VB.Net - хотя в C # было немного, потому что либо перевод был сучьим, либо конструкция не существовала в VB.Net. Единственное преимущество, которое я вижу в VB.Net, состоит в том, что редактор Visual Studio гораздо более дружественен к нему (по моему опыту в любом случае), чем к C # - Intellisense кажется лучше, как и автоформатирование (обратите внимание, что, поскольку я не использовал C #) столько же, может я просто что-то упустил в конфигурации IDE ...)
Основным недостатком VB.Net является то, что они привнесли много дерьма эпохи VB6 в .NET 1.x, чтобы упростить преобразование кода VB6. Это все еще там, и VB6-кодеры кодируют новый код, используя эти ... "расширения", а не более нейтральные классы / методы .NET / что угодно. Я не знаю, сколько раз я спрашивал своего босса, почему он все еще использовал это дерьмо. "Но ... Это работает ..." Верно. Эй, я люблю суку.
При поиске помощи в Интернете я обнаружил, что подавляющее большинство решений были на C # - посмотрите форумы MSDN, различные блоги и т. Д. Книги имеют тенденцию концентрироваться на C #, и, если есть версия VB, она обычно приходит через несколько месяцев (например, Pro LINQ .... от Apress.)
Многие языки имеют общую родословную C, что значительно упрощает переключение между C, C ++, C #, Java, PHP и некоторыми другими. PHP немного растянут, но он имеет много C-подобных конструкций. VB? Ну, это в значительной степени своя маленькая вещь, и это все.
Руководитель проекта в моей организации недавно сказал мне, что все больше и больше новых проектов разрабатывается с использованием C # вместо VB - НАКОНЕЦ. Когда в нашей организации появился .NET, они более или менее официально присоединились к VB.Net из-за того, что все кодирование VB6 уже осуществлялось. Силы, которые позже признались мне, что это был не лучший их ход.
Как указывал кто-то другой, я бы не сказал «нет» проекту VB.Net, но я все еще надеюсь, что он будет постепенно искоренен из-за новых разработок на моем рабочем месте.
Что ж, сегодня практически нет реальной причины использовать VB.net. Вначале это был просто способ дать программистам VB знакомый синтаксис, но, по сути, это было BASIC-подобное переназначение C #. Таким образом, его единственное реальное преимущество - более знакомый синтаксис, а его основной синтаксис также является его единственным реальным ограничением.
С течением времени, когда два языка развивались вместе, единственное существенное различие - это my пространство псевдонимов.
Я бы посоветовал каждому программисту .net, который не знаком с C #, изучать его, так как сообщество довольно обширное, а C-подобный синтаксис является общим для большинства наиболее используемых языков.
Еще одно важное соображение о том, почему существует VB.NET, заключается в том, что он облегчает путь обновления для проектов, которые были в ASP «Classic» / VBScript или VB6. Было гораздо меньше работы по переносу больших существующих приложений.
JohnFx
1
VB язык легче читать для новичков, они, как правило, пишут в нем свое первое, второе и третье приложения, и мы все знаем, как кодируются наши первые приложения - ужасно.
Программисты из C ++, Java и т. Д. Перешли на C #, а разработчики VB.NET - из VBA, VB и BASIC, которые являются основными нетрадиционными программистами.
Ответы:
Я предпочитаю C #, чем VB.NET, потому что
(из stackoverflow)
источник
Я ненавижу VB.NET. Дни, которые я все еще использую, это дни, о которых я сожалею. Тем не менее, мои вкусы являются частью моей ситуации и опыта, и не обязательно имеют какое-либо отношение к тому, что вы делаете ...
Я думаю, что при сравнении постоянно развивающихся языков, таких как C # и VB.NET, важно оглянуться назад на свою историю и увидеть, как они достигли своего текущего состояния:
Первоначальные преимущества BASIC для микрокомпьютеров включали в себя размер и простоту (небольшой синтаксис, который легко анализировать, предназначенный для небольших, достаточно быстрых интерпретаторов и оставляющий место в памяти для реальной программы и данных), интерактивная среда, обеспечивающая эксперименты, и синтаксис это избегало кратких символов и структур для достаточно ясного, подобного английскому синтаксиса. Однако он плохо подходил для больших структурированных программ и, как правило, поощрял использование спагетти-кода. Тем не менее, его доступность и простота сделали его отличным выбором для знакомства с программированием.
QuickBasic обновил синтаксис, чтобы позволить большие более структурированные программы, и добавил компиляцию для более быстрого выполнения.
VisualBasic предоставил мощный, простой в использовании конструктор форм, позволяющий быстро создавать приложения с графическим интерфейсом, в то же время применяя синтаксис QB для использования в сценариях этих пользовательских интерфейсов. Он работал лучше всего, когда использовался для создания пользовательских интерфейсов для низкоуровневой логики, представленной в виде предварительно созданных компонентов (обычно написанных на каком-либо другом языке). Со временем синтаксис становился все более широким и непоследовательным по мере добавления новых функций. Ориентация на разработку сначала пользовательского интерфейса, а затем на заполнение фрагментов сценария хорошо работала для небольших приложений, ориентированных на пользовательский интерфейс, но имела тенденцию поощрять программирование копирования-вставки и изменение кода спагетти, не поощряя повторное использование, сложные структуры данных и разделение интересов. По мнению многих, «код VB» стал синонимом «большого шарика грязи»; «Программист VB» с «неопытным взломом».
VB.NET - это VB-подобный язык на платформе .NET, попытка (не совсем удачная) очистить и модернизировать заросший синтаксис VB. Он не был полностью совместим с существующим кодом VB и не предпринимал никаких усилий для обеспечения совместимости с формами VB (возможно, самой важной частью VB). Это оставило многих владельцев продуктов VB с неприятным выбором: переписывать их приложения в VB.NET (что касается тонкой несовместимости в каждой подпрограмме, не прошедшей тщательную проверку) или фактически переписывать свои приложения в C # (иметь дело с незнакомым пользователем). синтаксис в дополнение кновая библиотека времени выполнения и конструктор форм). Большинство пользователей VB.NET были пользователями VB, которые придерживались только одного синтаксиса, многие использовали его в качестве опоры при изучении C #. В результате, он сразу приобрел репутацию пристанища для программистов, которые застряли на своем пути, не желая или не в состоянии расширить или улучшить свои навыки.
На данный момент VB.NET продолжает развиваться, постепенно избавляясь от багажа, набирая новый и интересный синтаксис (LINQ, литералы XML). Тем не менее, он не сохраняет почти ни одного из первоначальных преимуществ BASIC: это большой, сложный язык с довольно крутой кривой обучения и ограниченными возможностями для интерактивных экспериментов.
источник
Я знаком с обоими, но много занимался программированием на VB4, VB5 и VB6. Теперь, когда оба языка в .NET прошли несколько итераций и довольно сходились в своих возможностях, я думаю, что дискуссия совершенно глупая, очень похожая на «какой твой любимый цвет».
Лично мне они оба нравятся по разным причинам.
VB.NET
Многие люди говорят о том, что синтаксис C # является более интуитивным, но это очень субъективно и основано на том, что вы начали знать. Я бы сказал, что если бы вы были полностью объективны, синтаксис VB.NET, вероятно, был бы более интуитивно понятным, если вы не предполагаете предварительные знания на другом языке. Например, учитывая ту же программу на C # и VB.NET, которая, по вашему мнению, была бы более понятной для тех, кто не имеет знаний о программировании. Кажется, довольно ясно для меня.
Другая вещь, которая хороша в этом синтаксисе, это то, что он гораздо более явный в отношении закрывающих структур (END IF, END WHILE, NEXT X) по сравнению с моделью брекетинга. Это делает код немного более читабельным и часто позволяет компилятору более точно определять, какой именно номер строки вызывает ошибки компиляции. Если вам когда-либо приходилось искать пропущенные скобки / точки с запятой из-за ошибки компилятора в 50 строках от проблемы, вы понимаете, о чем я.
Кроме того, в столбце VB.NET win, на мой взгляд, отсутствует == / = как оператор сравнения / присваивания. Редкие преимущества наличия отдельного оператора для каждого никогда не компенсируют все (иногда) трудно обнаружить слабые места, которые он помогает создать.
Наконец, я ненавижу чувствительность к регистру в языках программирования. Одна из жалоб на VB состоит в том, что у него так много багажа, но C # продвинул альбатрос чувствительности к регистру C. Я никогда не был в ситуации, когда я хотел, чтобы два идентификатора в одной и той же области различались только в каждом конкретном случае. Это просто делает для занятой работы и замедляет меня. В этом отношении VB.NET получает несколько очков по сравнению с C #.
Программисты C # любят быть лаконичными, поэтому я думаю, что они обычно поддерживают этот синтаксис. Это просто имеет определенную эстетическую привлекательность. Однако с практической точки зрения мне это нравится, потому что оно очень похоже на такие языки, как Java, JavaScript и C ++.
Поскольку я занимаюсь веб-разработкой, требующей программирования как на стороне сервера, так и на стороне клиента, мне легче переключаться между C # и JavaScript, как это часто требуется.
Также мне нравится тот факт, что, по большей части, если бы мне когда-либо пришлось перейти на программирование на Java или C ++, у меня был бы небольшой старт, если бы я использовал C # большую часть времени.
источник
name
и открытое свойство с именем,Name
а затем назначить его черезName = name;
. Пока вы придерживаетесь стандарта кодирования, в противном случае я согласен, это может вызвать путаницу.Я предпочитаю скобочный синтаксис языков C-стиля более «многословному» синтаксису языков BASIC-стиля.
Мое знакомство с программированием было с Turbo Pascal. (Небольшое программирование на BASIC, которое я делал на Commodore 64, будучи ребенком, на самом деле не имеет значения.) После изучения Java я никогда не оглядывался назад и предпочел синтаксис в стиле C.
источник
if something then code endif
Они функционально одинаковы, вы ничего не можете сделать в одном, что не можете сделать в другом, и в будущем Microsoft пообещала, что языковые команды будут развиваться равномерно, так что эквивалентность вряд ли изменится.
Различия сейчас чисто культурные и личные. В этой статье интересно прочесть различия между культурами программистов, использующих C # и VB.net
[Примечание: хотя я сам являюсь разработчиком на C #, заключение в связанной статье не обязательно отражает мое личное мнение, это просто интересный альтернативный подход в дискуссии]
источник
Я пришел в .NET из C и C ++ (с небольшим количеством Java, Ada и Pascal), поэтому C # был для меня естественным прогрессом.
Если бы пришла работа, требующая VB.NET, я, конечно, не отказался бы.
источник
Я проделал большую работу с VB.NET, но я достаточно понимаю C #, чтобы понять суть происходящего в коде. В настоящее время я предпочитаю VB.NET, потому что я наиболее знаком с ним (очевидно), но на самом деле у меня нет предпочтений между подробным синтаксисом BASIC и синтаксисом в стиле C, оба они очень читабельны и понятны для меня.
Большая часть опыта моего коллега по программированию - это COBOL и VB6, поэтому VB.NET был более удобным выбором языка .NET для нас как команды. У нас не было веской причины, чтобы сделать изучение C # требованием, поскольку они функционально одинаковы.
Тем не менее, изучение C # определенно входит в мой список дел.
источник
Я предпочитаю C #.
Я начинал как программист VB.NET, но с течением времени стало очевидно, что довольно много новых функций появятся сначала в C #, а затем в VB.NET (например, автоматическое свойство). И сообщество, окружающее C #, гораздо более живое, чем сообщество VB.NET.
Кроме того, если вы собираетесь изучать Java или аналогичный язык, C # - лучшая отправная точка - синтаксис практически одинаков во всех языках, производных от C. Хотя это не будет для меня переломным моментом, так как синтаксис - это то, что вы все равно сможете быстро освоить.
источник
Object.ReferenceEquals
обработка событий, которая почти сделана правильно, и более плавную работу IDE. VB.net позволяет, хотя и немного неудобно, иметь инициализаторы полей, использующие параметры конструктора, или безопасно создаватьIDisposable
объекты без использованияThreadStatic
переменных; C # нет.В дополнение к другим ответам, опубликованным здесь, я бы выбрал C # вместо VB, потому что программисты на C # получают больше денег. Больше опыта с C # = больше $$ :)
Я знаю, что оба языка почти одинаковы, и переключаться между ними очень просто, но я думаю, что когда руководство смотрит на кучу фигурных скобок и точек с запятой, они принимают тот факт, что мы делаем то, что они не могут делать, где с VB. Нет, они могут посмотреть на это и сказать: «О, это не должно быть так сложно, если я могу это понять».
источник
C #, потому что я могу переключаться между ним и Java с минимальными усилиями
В VB.NET совершенно другой синтаксис. C #, будучи похожим на Java и другие языки, дает мне больше возможностей для быстрой адаптации к новым вещам. Поскольку выходные данные C # и VB.NET практически взаимозаменяемы, имеет смысл использовать C #. Кроме того, если код вашей компании находится на C #, вы, скорее всего, сможете научить Java-разработчика программировать на C #, чем Java-разработчик VB. Есть только тонкие преимущества, но тонкое все еще преимущество.
источник
Отложив мои личные предпочтения в сторону. Как кто-то, кто набирал (и пытался быть принятым на работу) в последнее время, когда у нас были эти дебаты в офисе, общий консенсус заключался в том, что нам следует перейти к C # из VB.
Почему? Потому что C # был более распространенным на рынке (во всяком случае, вокруг нас), что позволило нам легче набирать и легче набирать.
Похоже, он прошел полный круг; люди изучают C #, потому что рекрутеры хотят этого, потому что есть больше кандидатов.
источник
Будучи немного более старшим разработчиком (на 59 лет "немного" старше?), Я сначала выучил BASIC на Commodore VIC-20, научил себя Turbo Pascal (v1!), Потом изучал COBOL в колледже и провел 14 лет, разрабатывая IBM мейнфреймы, с небольшими изменениями написания приложений среднего размера в Revelation BASIC (вариант PICK BASIC) и нескольких утилит в Modula-2, прежде чем перейти к VB5 и VB6. А потом пришел .NET.
Из-за моего базового опыта я решил начать с VB.NET, только чтобы обнаружить, что я продолжал пытаться делать вещи «по-старому», и это сводило меня с ума (хорошо, больше сумасшествия). В связи с тем, что я проделал некоторую работу в C, я подумал, что я должен дать C # повод посмотреть, как все прошло. И, Боже мой, это было похоже на выход из темного туннеля в ясный дневной свет! Совершенно неожиданно. И я обычно издавал пренебрежительные шумы о том, что C является языком «только для записи» - «настолько трудно понять, что программист C не мог понять, что его собственный код делал через 6 месяцев после того, как он написал его», - наблюдение, сделанное Полуизвестный романист, который, как мне показалось, в то время звучал мило.
Так что из-за того, что я немного незнаком с C, мне было парадоксально легче изучать программирование на .NET, чем гораздо более знакомую базовую парадигму. Я все еще люблю VB6, но полюбил C #. Лучший язык программирования на планете.
источник
Я развиваю в Visual Basic .Net с 2001 года, и мне это нравится, и я ненавижу это !!!
Порядок представления этих точек просто основан на порядке, в котором он пришел мне в голову ...
В vb.net с visual studio есть визуальный разрыв строки между каждым методом, свойством. Для многих людей это не очень хорошая причина отдавать предпочтение vb.net над c #, но я не понимаю, почему команда c # в Microsoft не внедрила его. Есть надстройка, которая рисует эту черту в c #, но еще раз спасибо Microsoft за команду ac # и команду visual basic, которые не общаются друг с другом.
В vb.net, когда вы создаете winform, у вас есть два комбинированных списка в Visual Studio вверху редактора, и вы можете автоматически генерировать событие при выборе события в правом комбинированном окне. Когда вы прикрепляете десятки событий каждый день, может быть очень обременительно не иметь этой функции. С c # у вас есть маленькая кнопка в верхней части сетки свойств, которая может генерировать события, но это не так быстро, как в vb.net. Более того, если вы присоединяете событие элемента управления в c # и удаляете элемент управления в форме, делегат, созданный в автоматически сгенерированном коде для обработки события, должен быть удален вручную. Еще раз спасибо Microsoft.
В vb.net, когда вы пытаетесь изменить метод, содержащий запрос linq, без изменения самого запроса, нет проблем, но в c # весь код метода блокируется. Если у вас много запросов linq или лямбда-выражений, функция редактирования и продолжения быстро станет старой доброй вещью. Хорошо, немного преувеличения ... но :)
В vb.net, когда вы создаете имя метода и нажимаете ввод, автоматически создается 'end sub'. В c # сделай сам. Хорошо, если у вас установлен resharper или devexpress, будет лучше, но почему все эти маленькие, но замечательные функции не были реализованы в c #.
В vb.net, когда у вас есть ошибки в вашем коде, ошибки автоматически отображаются, и когда вы исправляете их, эти ошибки удаляются из стека в режиме реального времени. В c # вы должны построить свой проект, чтобы понять, что вы успешно исправили или нет указанные ошибки. Почему команда C # не имеет возможности проверить в режиме реального времени ошибку, как в vb.net. С большим решением, никакая проверка ошибок в реальном времени не может быть очень хорошей оптимизацией производительности, но мне нравится видеть, как стопка ошибок исчезает, пока я ее исправляю.
Как упомянул другой человек, я думаю, что легче читать условия vb.net, если ... конец if, выберите case ... end select, но с помощью скобки рисования devexpress, забудьте про то, что я сказал.
В vb.net много визуальных ошибок в визуальной студии. Просто упомяну один из них в Visual Studio 2010, intellisens не фильтруют правильно перечисление, если у вас активирован режим «общий» вместо «все».
С vb.net вас воспринимают как глупого парня, потому что статически, более плохие программисты используют vb.net вместо c #, потому что c # труднее учиться и продвигать лучшую практику программирования.
Как уже говорилось, у программиста на c # больше шансов получить хорошую работу с большим количеством денег.
Во главе клиента, vb.net = парень, который программирует в своем подвале с большим количеством спагетти кода. c # = вау, ты очень умный Дело в том, что не потому, что вы программируете на c #, вы делаете хорошую программу, а статически, да.
Учитывая все эти моменты, я решил преобразовать весь свой код VB в C #. Я программирую со всеми лучшими практиками объектно-ориентированного проектирования, шаблонов проектирования, чистого кода со стандартами и строгим синтаксисом, и я могу программировать так в течение 50 лет, но с точки зрения сообщества, я не хороший программист. Я преобразую свой код в C # без других лучших практик, и я буду другим человеком; отличный парень, которого ты должен уважать ..... :( какая шутка ... !!! но это реальность.
источник
Вот способ взглянуть на это: между SO и CodePlex, какой язык более популярен? C # или VB.Net?
Иногда хорошо следовать за стадом, потому что это стадо сможет помочь вам, когда вам это нужно. По умолчанию C # будет быстрее, чем Vb.Net. Я считаю, что использование Option Strict может выровнять его. В последний раз, когда я сравнивал IL между этими двумя типами, безопасность типов в VB.Net закончилась тем, что к IL добавилось еще около 15%. Это приводит к дополнительным накладным расходам. И ... учитывая языки, которые делают в основном то же самое, я выберу более быстрый. Мое удобство не должно отвергать опыт моего пользователя в целом.
источник
Мне нравится говорить, что единственная причина, по которой BASIC по-прежнему популярен, - это то, что это был первый продукт Microsoft, и последние 35 лет его пихают в горло. Это должно было умереть давным-давно.
С учетом вышесказанного я работал над двумя крупными проектами .NET, и оба они были выполнены с VB.Net - хотя в C # было немного, потому что либо перевод был сучьим, либо конструкция не существовала в VB.Net. Единственное преимущество, которое я вижу в VB.Net, состоит в том, что редактор Visual Studio гораздо более дружественен к нему (по моему опыту в любом случае), чем к C # - Intellisense кажется лучше, как и автоформатирование (обратите внимание, что, поскольку я не использовал C #) столько же, может я просто что-то упустил в конфигурации IDE ...)
Основным недостатком VB.Net является то, что они привнесли много дерьма эпохи VB6 в .NET 1.x, чтобы упростить преобразование кода VB6. Это все еще там, и VB6-кодеры кодируют новый код, используя эти ... "расширения", а не более нейтральные классы / методы .NET / что угодно. Я не знаю, сколько раз я спрашивал своего босса, почему он все еще использовал это дерьмо. "Но ... Это работает ..." Верно. Эй, я люблю суку.
При поиске помощи в Интернете я обнаружил, что подавляющее большинство решений были на C # - посмотрите форумы MSDN, различные блоги и т. Д. Книги имеют тенденцию концентрироваться на C #, и, если есть версия VB, она обычно приходит через несколько месяцев (например, Pro LINQ .... от Apress.)
Многие языки имеют общую родословную C, что значительно упрощает переключение между C, C ++, C #, Java, PHP и некоторыми другими. PHP немного растянут, но он имеет много C-подобных конструкций. VB? Ну, это в значительной степени своя маленькая вещь, и это все.
Руководитель проекта в моей организации недавно сказал мне, что все больше и больше новых проектов разрабатывается с использованием C # вместо VB - НАКОНЕЦ. Когда в нашей организации появился .NET, они более или менее официально присоединились к VB.Net из-за того, что все кодирование VB6 уже осуществлялось. Силы, которые позже признались мне, что это был не лучший их ход.
Как указывал кто-то другой, я бы не сказал «нет» проекту VB.Net, но я все еще надеюсь, что он будет постепенно искоренен из-за новых разработок на моем рабочем месте.
источник
Что ж, сегодня практически нет реальной причины использовать VB.net. Вначале это был просто способ дать программистам VB знакомый синтаксис, но, по сути, это было BASIC-подобное переназначение C #. Таким образом, его единственное реальное преимущество - более знакомый синтаксис, а его основной синтаксис также является его единственным реальным ограничением.
С течением времени, когда два языка развивались вместе, единственное существенное различие - это
my
пространство псевдонимов.Я бы посоветовал каждому программисту .net, который не знаком с C #, изучать его, так как сообщество довольно обширное, а C-подобный синтаксис является общим для большинства наиболее используемых языков.
источник
VB язык легче читать для новичков, они, как правило, пишут в нем свое первое, второе и третье приложения, и мы все знаем, как кодируются наши первые приложения - ужасно.
Программисты из C ++, Java и т. Д. Перешли на C #, а разработчики VB.NET - из VBA, VB и BASIC, которые являются основными нетрадиционными программистами.
источник
Кажется, в Интернете больше примеров кода на C #, чем примеров VB.NET. Не так уж сложно преобразовать одно в другое, но зачем, если не нужно.
источник
Я предпочитаю VB .Net над C #,
источник
C #. Это потому, что я сделал C и Java, поэтому я чувствую, что C # более читабелен для меня. C # для меня, как VB.NET для бывших программистов VB.
источник