Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > За что не любят VB.NET?


Автор: Exception 20.12.2005, 23:16
В последнее время все чаще вижу посты, в которых утверждается, что единственный стоящий язык технологии дотНЕТ -- C#. А VB.NET -- так, игрушка. А чем же это вызвано? Для справки: в VB .NET 2.0 aka VB8 есть все возможности, присутствующие в C# 2.0.

Автор: Snowy 21.12.2005, 00:12
Цитата(Run @ 20.12.2005, 23:16)
В последнее время все чаще вижу посты, в которых утверждается, что единственный стоящий язык технологии дотНЕТ -- C#. А VB.NET -- так, игрушка. А чем же это вызвано?

Думаю все той же неприязнью к VB, и, как следствие, к его наследнику - VB.NET.

Автор: batigoal 21.12.2005, 09:32
Слово "Бейсик" всегда навевает ностальгическую тоску. Это рефлекс.

Автор: ToshaCh 21.12.2005, 10:19
Цитата(Lamer @ 21.12.2005, 09:32)
Слово "Бейсик" всегда навевает ностальгическую тоску. Это рефлекс.

Точно.
Мне сразу вспоминаются совдеповские машины на которых я учился програмить в школе. Сорри за офтоп.

Если по теме, то я считаю, что современный язык должен быть простым и лаконичным. С простотой у Басика всё Ок smile. А вот до лаконичности сишных языков он не дорос, как и Паскаль впрочем. Они кстати оба ведут свою родословную от Алгола если я не ошибаюсь, а это не самый лучший донор.

Автор: batigoal 21.12.2005, 10:37
Цитата(ToshaCh @ 21.12.2005, 11:19)
я считаю, что современный язык должен быть простым и лаконичным.

Вот с этим я согласен только отчасти. Смысловая лаконичность - да, а вот лаконичность синтаксиса - совсем не обязательна, и скорее мешает. Например, я считаю, что в Java не следовало давать возможность использовать оператор + для строк. Да, это кратко и удобно, но совершенно нелогично и нарушает принципы языка.

Автор: Exception 21.12.2005, 12:03
Хм.. А я читаю и понимаю код VB на десять строчек за 0.5 сек, против кода С++ за 3 сек (а может и больше).. VB.NET не имеет ничего общего с VB6, а уж с Бейсиком и подавно. Только синтаксис чуть-чуть похож. Паскаль мне не нравится из-за begin...end. Си-подобные -- из-за скобочек. В VB видно, чему соответствует End: If'у или Namespace'у. Код читатьпроще, ИМХО.

Автор: Snowy 21.12.2005, 12:19
Цитата(Run @ 21.12.2005, 12:03)
А я читаю и понимаю код VB на десять строчек за 0.5 сек, против кода С++ за 3 сек (а может и больше)..

Я тоже самое могу сказать про дельфи smile

Цитата(Run @ 21.12.2005, 12:03)
VB.NET не имеет ничего общего с VB6

Синтаксис. Именно поэтому VB.

Цитата(Run @ 21.12.2005, 12:03)
Паскаль мне не нравится из-за begin...end. Си-подобные -- из-за скобочек. В VB видно, чему соответствует End: If'у или Namespace'у. Код читатьпроще, ИМХО.

Уууу. Развел религию. Ай-яй-яй...

Автор: Exception 21.12.2005, 12:28
Просто похоже, что все таковые высказывания (мол, VB.NET -- побочный продукт и т.п.) не имеют никакой подоплеки.

Автор: Snowy 21.12.2005, 12:41
Цитата(Run @ 21.12.2005, 12:28)
Просто похоже, что все таковые высказывания (мол, VB.NET -- побочный продукт и т.п.) не имеют никакой подоплеки.

Может быть.
Но, например, я не люблю VB. Поэтому вряд ли стану эксперементировать с VB.NET.
Сорее выберу C#. Именно из-за этих двух буковок - VB.
За долгие годы M$ привила народную "любовь". Ломать стереотипы придется не менее долго.
И не факт, что получится.

Автор: ToshaCh 21.12.2005, 14:10
Цитата(Lamer @ 21.12.2005, 10:37)
Смысловая лаконичность - да, а вот лаконичность синтаксиса - совсем не обязательна, и скорее мешает.

Ну скажем так. Синтаксическая лаконичность (в разумных пределах) позволяет быстрее разрабатывать код, но ухудшает его читабельность.
И тут даже вопрос не в том что меньше символов набивать, а в том что в коде нет символов не несущих смысла. Тот же End If в некоторых случаях никакого смысла не несёт - только удобочитаемость.

Автор: Exception 21.12.2005, 14:52
Цитата(ToshaCh @ 21.12.2005, 15:10)
никакого смысла не несёт - только удобочитаемость.

В этом и смысл. Мне так удобнее.
Цитата(Snowy @ 21.12.2005, 13:41)
Ломать стереотипы придется не менее долго.

Гм. А мне понравилось сразу...
Так что не согласен

Автор: ToshaCh 21.12.2005, 15:41
Цитата(Run @ 21.12.2005, 14:52)
В этом и смысл. Мне так удобнее.

Это вопрос привычки. Хотя правильно и качественно написанный С# код будет не менее удобен, чем VB код, а может даже и более.
Другой вопрос, что сейчас развелось много "кое-какеров" в программистике. И они могут даже в программе на Басике написать ТАКОЕ!!!

Автор: Дрон 21.12.2005, 15:55
Цитата(ToshaCh @ 21.12.2005, 15:41)
Другой вопрос, что сейчас развелось много "кое-какеров" в программистике. И они могут даже в программе на Басике написать ТАКОЕ!!!

Вот "ТАКОЕ", как раз и получается из-за того, что программирование на Бейсике слишком расслабляет своей простотой. Люди (если их так можно назвать) просто перестают задумываться над тем, что пишут -- работает и ладно.

Я когда ещё на VB6 писал, то быстро завёл себе правило -- первым делом ставить Option Explicit, чтоб не расслабляться smile

Автор: ToshaCh 21.12.2005, 16:44
Согласен. Но это вообще следствие идиологии которая распротсраняет вместе с Виндузой - чем проще тем лучше. В отличии от скажем маковской - чем надёжнее и удобнее тем лучше.

Я вообще VB.NET не юзал, а вот 6 приходилось. У меня вообще в голове не укладывается как можно изначально интерпретаторский язык заставить работать в явно не естественной для него ситуации. Хотя наверное есть причины, не мне судить о том.

Автор: alir 21.12.2005, 19:50
Дело ведь даже не в простоте.
MS продвигает/развивает языки программирования (свой бэйсик и языки C-стиля), делая под них новые платформы. Т.е. вот была армия разработчиков на VB6 - ну не могла же MS их кинуть с выходом .net. smile; вот и выпустила .net-совместимый VB. Просто разработчиков, обучающихся на C-языках намного больше, чем "басиков". Отсюда такие разговоры.

Автор: Exception 21.12.2005, 21:25
ToshaCh, в VB.NET изменилась идеология. Интерпретатор VB6 тут никоим образом не замешан.
Дрон, код без
Код
Option Explicit On
Option Strict On
не перевариваю физически :) .

Автор: DeadSoul 21.12.2005, 21:43
Насколько я знаю(дилетантский взгляд) кол-во типов (not managed) в C# больше, чем в VB.NET.

Автор: Exception 21.12.2005, 22:17
В 1.0 -- да. В 2.0 -- нет :)
Добавлено @ 22:18
Ты ведь про uint и проч.?

Автор: DeadSoul 21.12.2005, 22:34
Цитата(Run @ 21.12.2005, 22:17)
В 1.0 -- да. В 2.0 -- нет smile
Добавлено @ 22:18
Ты ведь про uint и проч.?

наверноеsmile Я НЕТ-ом занимался совсем немного.

Автор: bankuss 23.12.2005, 16:29
Это у нас в России Vb6 обхаивают, а вот в США и некоторых других странах, нехилый софт разрабатывали. И писали его профи. И работал он, я думаю, не хуже сишного. А уж затрат на разработку было сэкономлнено не мало. smile
И по инерции и лени(думаете сишникам охота лезть в чужой огород) так же охаивают vb.net.
Причем зачастую говорят люди, которые, что-то там слышали, что-то видели... а сами и vs.net ни разу не запустили. smile
Нормальный, современный язык, не очень трудный и вполне шустрый в разработке.

а насчет кода - ИМХО С# код читается хуже из-за своей лаконичности. Конечно если я буду программить на шарпе годик-два, то может и привыкну...

Автор: ToshaCh 23.12.2005, 18:14
Ну тут вопрос, а кто такой программист по определению. Настоящий программист не привязан к языку - он способен в короткий срок освоить тот язык, который необходим для конкретной задачи.
К сожалению уровень тех, кто программил в своей жизни только на Басике безнадёжно низок, а те кто учились на Си или Паскаль могут справится с любой ситуацией.
Говорю это вполне обоснованно - сам с Басика начинал и мне стоило очень много сил избавится от привычки к языку который
Цитата(bankuss @ 23.12.2005, 16:29)
не очень трудный


Автор: Exception 23.12.2005, 19:51
Цитата(ToshaCh @ 23.12.2005, 19:14)
те кто учились на Си или Паскаль могут справится с любой ситуацией.

А другие не могут что ли smile ?
Цитата(ToshaCh @ 23.12.2005, 19:14)
сам с Басика начинал

BASIC и VB.NET -- разница огромная, это две абсолютно разные вещи.

Автор: ToshaCh 24.12.2005, 12:42
Цитата(Run @ 23.12.2005, 19:51)
BASIC и VB.NET -- разница огромная, это две абсолютно разные вещи.

Да, пожалуй. Я сейчас почитал про отличия между vb6 и vb.net. Получается последний абсолютно новый язык.
Только как-то там всё странно сделано. Особенно меня рассмешили прикличения с типом String - на новой платформе он примерно в 5 раз медленнее. Уж лучше бы вообще убрали и юзали только дотнетовские классы.
И с логическими операторами по прежнему вокханалия. В смысле True And True не всегда равно True, как и в 6 версии. Эту проблему решает новый класс CBool (дотнетовский класс), но это особенность платформы, а сам язык с этим по-прежнему справится не может. На фоне Сишной логики это особенно смешно выглядит.
Вообще я отрицательно отношусь к новой платформе в целом, поэтому мне одинково жаль и Басиковцев и Сишарповцев, но это тема отдельного разговора.

Автор: Exception 24.12.2005, 23:03
Цитата(ToshaCh @ 24.12.2005, 13:42)
Уж лучше бы вообще убрали и юзали только дотнетовские классы.

String == System.String == string в C#. Это одно и то же.
Цитата(ToshaCh @ 24.12.2005, 13:42)
В смысле True And True не всегда равно True

Как же так? Приводи контрпример.

Цитата(ToshaCh @ 24.12.2005, 13:42)
класс CBool

Это не класс, а функция приведения типа.
Куски кода эквивалентны:
Код

boolean x;
x = (boolean)0;

Код

Dim x As Boolean
x = CBool(0)

Цитата(ToshaCh @ 24.12.2005, 13:42)
я отрицательно отношусь к новой платформе в целом

А к Яве как относишься?

Автор: ToshaCh 25.12.2005, 12:07
Цитата(Run @ 24.12.2005, 23:03)
Как же так? Приводи контрпример.

Нет у меня под рукой Басика. Но смысл в таком. Однажды я на этом сильно подловился.
Предположим есть две библиотечные функции: Х и Y - возвращают True или False (по документации)
Я пишу примерно следущее:

Код

If x(какие-то параметры) And y(какие-то параметры) Then
   t=true
Else
  t=false
End IF   


Обе функции возвратили True, однако в t записалось false. ??? Я долго рылся по справочникам, пока на одном сайте не нашёл инфу, что функция x на самом деле возвращает "4", а y - "1" (встроенного булина нет следовательно всё это просто инты). Такая ситуация возникла из-за того, что And в Басике побитовый, т.е. 4 and 1 действительно 0. Вот после этого случая я Басик и возненавидел, т.к. потратил почти два дня на разбор этой ошибки. Точне уже через полчаса я понял, что And срабатывает как-то не так, а остальное время разбирался где ошибка - в компиляторе или у меня в ДНК.
Можно сказать, что это библиотечные функции кривые, но в Сишном компиляторе такого бы не произошло, поскольку там существует логический And.

Цитата

Это не класс, а функция приведения типа.

И правда. Но сути не меняет (а какого чёрта он на С начинается?). В приведнённом выше коде мне придётся повставлять это приведение типа в вызов функций, или писать более раветвлёный IF (что я тогда и сделал).

Цитата

А к Яве как относишься?

Есть у неё очевидные плюсы по сравнению с Нетом:
1. Проще по структуре (у M$ вечно размах царский)
2. Кросс-платформа (когда дотНет появится на Юниксах неизвестно - работа идёт, но как-то медленно).
3. Ява уже сложилась как стандарт для и-нета.
Но есть одно но: насколько мне известно глюков в ней просто немеряно.
Я не писал на этой платформе, но по работе у нас многие сетевые инструменты написаны на яве - сколько глюков мы по этому поводу видим! И программеры наши, которые занимаются этой платформой тоже немало лестных слов выговаривают.

Автор: ToshaCh 25.12.2005, 12:57
А по поводу стрингов, что-то я не задумался, а как это в С# сейчас реализовано? Наверное таже ботва, что и с Басиком.

Автор: Exception 25.12.2005, 13:12
Цитата(ToshaCh @ 25.12.2005, 13:07)
Обе функции возвратили True, однако в t записалось false. ??? Я долго рылся по справочникам, пока на одном сайте не нашёл инфу, что функция x на самом деле возвращает "4", а y - "1" (встроенного булина нет следовательно всё это просто инты). Такая ситуация возникла из-за того, что And в Басике побитовый, т.е. 4 and 1 действительно 0. Вот после этого случая я Басик и возненавидел, т.к. потратил почти два дня на разбор этой ошибки. Точне уже через полчаса я понял, что And срабатывает как-то не так, а остальное время разбирался где ошибка - в компиляторе или у меня в ДНК.
Можно сказать, что это библиотечные функции кривые, но в Сишном компиляторе такого бы не произошло, поскольку там существует логический And.

Ну это известная проблема... В VB.NET хотекли даже добавить BitOr и BitAnd, да не добавили... Так что просто надо смотреть, что And'аешь smile
Цитата(ToshaCh @ 25.12.2005, 13:07)
а какого чёрта он на С начинается?

Convert. В .NET нету обычая начинать классы на "С".

Цитата(ToshaCh @ 25.12.2005, 13:07)
В приведнённом выше коде мне придётся повставлять это приведение типа в вызов функций

Разумеется. Ты ведь хочешь логическое And? Дык преобразуй сначала числа в Boolean, а потом с ним и работай smile
Цитата(ToshaCh @ 25.12.2005, 13:07)
1. Проще по структуре (у M$ вечно размах царский)

То есть проще? Поясни, не понял smile
Цитата(ToshaCh @ 25.12.2005, 13:07)
2. Кросс-платформа (когда дотНет появится на Юниксах неизвестно - работа идёт, но как-то медленно).

В настоящее время доминирует Windows... И все когда-нибудь на неё перейдут (моё личное ИМХО). А на http://go-mono.org работа идёт. Уже есть http://www.mono-project.com/ASP.NET#ASP.NET_2.0 и многое другое.
Цитата(ToshaCh @ 25.12.2005, 13:07)
3. Ява уже сложилась как стандарт для и-нета.

Как же это? Апплеты уже устарели.
Кстати, глянь http://msdn.microsoft.com/netframework/downloads/updates/default.aspx#Shared%20Source%20CLI%20Downloads.

Автор: ToshaCh 25.12.2005, 14:48
Цитата(Run @ 25.12.2005, 13:12)
Разумеется. Ты ведь хочешь логическое And? Дык преобразуй сначала числа в Boolean, а потом с ним и работай smile

Это громоздко и не удобно, да и не логично как-то использовать преобразования, для функций которые как бы и возвращают true или false, т.е. boolean поддельный преобразовываешь в настоящий - глупость.
Кстати почему новый тип завязан не на инт, а на флоат? Вот это мне вообще не понятно. (но это опять таки фича платформы, а не языка)

Цитата(Run @ 25.12.2005, 13:12)
То есть проще? Поясни, не понял smile

Компонентов и технологий (половина из них чистый маркетинг типа COM+2.0 - слава богу они это дело прикрыли) напичкано в дотНет существенно больше чем Яву. Припомни сколько времени устанавливается фрамеворк и сколько JVM. Разница существенная. А особых отличий я не вижу.
Впрочем могёт я и ошибаюсь.

Цитата(Run @ 25.12.2005, 13:12)
В настоящее время доминирует Windows...

Не знал, что ты такой наивный smile

Цитата(Run @ 25.12.2005, 13:12)
И все когда-нибудь на неё перейдут (моё личное ИМХО).

Пока Винда не доростёт до состояния взрослой ОС - не перейдут. Пока её удел это офис и дом (и то в США по этой категории Мак рвёт всех), а наступление Юникс систем на Западе похоже уже не остановить. В нашей деревне конечно ворованый Виндуз рулит ничего не скажешь - ну а мне-то чего от этого: хочешь плохую систему бери, я тебя останавливать не буду.

Цитата(Run @ 25.12.2005, 13:12)
А на http://go-mono.org работа идёт

Она идёт довольно давно и конца и края ей нет. И пока она не будет полность закончена и хорошо работать (что видится мне очень туманным) говорить о кросс-платформенности нет смысла.

Автор: ToshaCh 25.12.2005, 15:01
Цитата(Run @ 25.12.2005, 13:12)
Как же это? Апплеты уже устарели.

Ну-ну до этого говорили что С++ пришёл конец с приходом Явы, теперь что Яве конец с приходом С#. Есть у меня подозрение, что пациент скорее жив чем мёртв smile Аплеты действительно немного устарели, но помоему это повод для того чтобы почесаться и улучшить платформу, а не делать всё заново.
Блин оффтоп полный.

Цитата(Run @ 25.12.2005, 13:12)
Кстати, глянь сюда.

И чего? Намекаешь, что лучше сначала почитать, потом говорить? Ок.

Автор: S.A.P. 25.12.2005, 15:19
Не люблю я VB.NET
Патамучта это NET

Автор: batigoal 25.12.2005, 16:27
Цитата(ToshaCh @ 25.12.2005, 13:07)
но по работе у нас многие сетевые инструменты написаны на яве - сколько глюков мы по этому поводу видим!

Гм. Можно примеры? Честно говоря, это первое отрицательное мнение, которое я слышу о распределенных Java-приложениях. Или ты имеешь в виду апплеты?

Автор: ToshaCh 25.12.2005, 16:57
Нет я именно имел ввиду распределённые ява приложения. Примеры к сожалению нельзя. Т.к. я не имею исходников и это закрытый внутренний софт компании. Вообще у меня есть подозрение, что это всё отмазки программеров. Я говорил, что не пишу на Яве и все мои впечатления основаны на словах людей которым у меня нет основания не доверять и собственном опыте общения с готовым продуктом.

Автор: batigoal 25.12.2005, 18:06
Я имел в виду, конечно, не примеры программ, а примеры глюков. На мой взгляд, серверные Java-программы исключительно стабильны. Разве что Out of Memory вылезет smile

Автор: bankuss 26.12.2005, 14:56
тема не про Java smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)