Debata VB.Net vs C # [zamknięta]


18

Byłem w miejscach pracy, gdzie na początku projektu pojawiło się pytanie „Powinniśmy używać VB.Net lub C #”.

To prawda, że ​​podejmowanie tej decyzji jest prawdopodobnie rzadziej niż na początku .Net, szczególnie biorąc pod uwagę tendencję do konwergencji językowej, ale wciąż może to być gorąca debata.

Pomiędzy VB.Net a C #, jaki język preferujesz i dlaczego?


2
Aby rzucić klucz w prace, jest kilka produktów (np. Projektant WF w VS2010), które obsługują tylko składnię VB.Net ...
Damovisa,

W tym miejscu programiści C # zarabiają więcej niż programiści VB.NET.
SeanX

Usunąłem „wieczną” część tytułu, która wydaje się w rzeczywistości „niekonstruktywna”. Samo pytanie jest bardzo przydatne, a jakość odpowiedzi jest znacznie lepszym wskaźnikiem tego, jak konstruktywne jest niesławne „sześć wskazówek”.
Wizard79

Często zastanawiam się, czy to się odwróci, jeśli trend będzie się utrzymywał w kierunku C #, dzięki czemu ludzie z VB.NET będą mniej doświadczeni i będą mogli uzyskać wyższą premię.
JohnFx,

Odpowiedzi:


29

Wolę C # niż VB.NET, ponieważ

  • łatwiej jest znaleźć programistów / pracę:

alternatywny tekst

  • łatwiej jest znaleźć pomoc:

alternatywny tekst

(z stackoverflow)


3
+1 SO szybko zastępuje google jako moje preferowane źródło pomocy programistycznej.
Anonimowy typ

12
Pytanie brzmi, czy 10 razy więcej tagów C # oznacza, że ​​temat jest lepiej objęty, większe wykorzystanie lub ma więcej problemów? +1 od dostępności pracy.
JeffO,

12
Byłbym ostrożny wobec każdego pracodawcy, który nie zatrudni programisty VB.NET do wykonywania C #.
Matt Olenik,

@Anonymous: SO zastąpił google w dniu 2 (ponad rok temu). FireFox w domu ma SO, MSDN i programistów jako moje 3 główne witryny wyszukiwania.
IAbstract

@IAbstract, lol, so true.
Anonimowy Wpisz

27

Nienawidzę VB.NET. Dni, które wciąż spędzam, używając tego, są dniami, których żałuję. To powiedziawszy, moje gusta są częścią mojej sytuacji i doświadczenia i niekoniecznie mają związek z tym, co robisz ...

Uważam, że przy porównywaniu ciągle rozwijających się języków, takich jak C # i VB.NET, ważne jest, aby spojrzeć wstecz na ich historię i zobaczyć, jak doszli do obecnego stanu:

Pierwotne zalety BASIC na mikrokomputerach obejmowały rozmiar i prostotę (mała, łatwa do przeanalizowania składnia stworzona dla małych, dość szybkich interpreterów i pozostawione miejsce w pamięci dla rzeczywistego programu i danych), interaktywne środowisko umożliwiające eksperymenty oraz składnia które porzuciły zwięzłe symbole i struktury dla dość jasnej, angielskiej składni. Był jednak słabo przystosowany do dużych, ustrukturyzowanych programów i zachęcał do kodowania spaghetti. Mimo to jego dostępność i prostota sprawiły, że był to doskonały wybór na wprowadzenie do programowania.

QuickBasic zaktualizował składnię, aby umożliwić tworzenie bardziej rozbudowanych programów, i dodał kompilację, aby przyspieszyć wykonywanie.

VisualBasic dostarczył potężnego, łatwego w użyciu konstruktora formularzy, który umożliwia szybką budowę aplikacji GUI, przy jednoczesnym zastosowaniu składni QB do użycia w skryptowaniu tych interfejsów użytkownika. Działa najlepiej, gdy jest używany do tworzenia interfejsów użytkownika dla logiki niskiego poziomu, dostarczanej jako wstępnie zbudowane komponenty (zwykle napisane w innym języku). Z czasem składnia stawała się coraz większa i niespójna w miarę wprowadzania nowych funkcji. Skoncentrowanie się na przygotowaniu najpierw interfejsu użytkownika, a następnie wypełnieniu fragmentów skryptu działało dobrze w przypadku małych aplikacji zorientowanych na interfejs użytkownika, ale zwykle zachęcało do programowania kopiowania i wklejania oraz różnic w kodzie spaghetti, jednocześnie zniechęcając do ponownego użycia, złożonych struktur danych i rozdzielenie obaw. W umysłach wielu „kod VB” stał się synonimem „wielkiej kuli błota”; „Programator VB” z „niedoświadczonym hackiem”.

VB.NET to język podobny do VB na platformie .NET, próba (nie do końca udana) czyszczenia i modernizacji przerośniętej składni VB. Nie był on w pełni zgodny z istniejącym kodem VB i nie dołożył żadnych starań, aby zapewnić zgodność z formularzami VB (prawdopodobnie najważniejszą częścią VB). To pozostawiło wielu właścicielom produktów VB nieprzyjemny wybór skutecznego przepisywania aplikacji w VB.NET (radzenie sobie z subtelnymi niezgodnościami w każdej procedurze, która nie została dokładnie zbadana) lub faktycznego przepisywania aplikacji w języku C # (radzenie sobie z nieznanym składnia oprócznowa biblioteka środowiska wykonawczego i projektant formularzy). Większość użytkowników VB.NET była użytkownikami VB, którzy trzymali się tej samej samej składni, wielu używało jej jako kuli podczas nauki języka C #. W rezultacie od razu zyskało reputację raju dla programistów, którzy utknęli na ich drodze, nie chcąc lub nie będąc w stanie rozwinąć lub ulepszyć swoich umiejętności.

W tym momencie VB.NET nadal ewoluuje, powoli zrzucając bagaż, jednocześnie wybierając nową i interesującą składnię (LINQ, literały XML). Mimo to nie zachowuje prawie żadnej z pierwotnych zalet BASIC: jest to duży, złożony język z dość stromą krzywą uczenia się i ograniczoną możliwością interaktywnych eksperymentów.

  • Dla starych programistów, którzy trzymali się tego przez ponad 30 lat, nie jest to zły wybór, pod warunkiem, że nie ograniczają się do niego.
  • Dla nowych programistów coraz bardziej niejasne podobieństwo programów VB do angielskiego nie jest warte dziwnych ukłonów w stronę wstecznej kompatybilności i piętna społecznego.
  • W przypadku nowych projektów VB.NET jest dziwnym wyborem, chyba że projekt jest mocno zaangażowany w jedno z niewielu zadań, dla których język jest zoptymalizowany: integracja ze źle napisanymi komponentami COM (Office ...) (chociaż C # 4.0 znacznie zmniejsza tę przewagę ) lub wbudowane generowanie XML.

4
Z C # 4 nie widzę żadnej przewagi VB.Net w zakresie integracji COM. Myślę, że wbudowane generowanie XML może być przydatną funkcją; Staram się nie używać XML (i odniosłem sukces przez ostatnie 5 lat!), Ale jeśli mam projekt .net, który musi generować dużo XML, prawdopodobnie stworzę projekt VB tylko do generowania XML.
konfigurator

3
Z przyjemnością przeczytałem twoją odpowiedź, ale nagle przestała. Podajesz historię podstawową, która jest interesująca i zakładam, że jest poprawna. Spodziewałem się dowiedzieć, dlaczego nie lubisz VB.NET i / lub dlaczego C #. „W przypadku nowych projektów VB.NET to dziwny wybór” Dlaczego?
Tim Murphy,

@Tim: Nie lubię VB [.NET], ponieważ większość napotkanego przeze mnie kodu to niepisany kod spaghetti napisany przez programistów, którzy podeszli do niego wiele lat temu (lub zostali nauczeni przez takich programistów). Jednak niekoniecznie jest to dobry powód, aby ktokolwiek inny go nie lubił. Lepszym powodem jest po prostu to, że język poczynił zbyt wiele ustępstw w zakresie kompatybilności wstecznej ... a jednak nie jest tak naprawdę kompatybilny wstecznie. Więc jeśli nie chcesz pisać nowego, nietypowego kodu spaghetti ...
Shog9

20

Znam oba te elementy, ale wiele z moich wczesnych prac programistycznych wykonałem w VB4, VB5 i VB6. Teraz, gdy oba języki w .NET przeszły przez kilka iteracji i dość mocno zbiegły się w swoich możliwościach, myślę, że debata jest wręcz głupia, podobna do „jaki jest twój ulubiony kolor”.

Osobiście lubię oba z różnych powodów.

VB.NET
Wiele osób mówi o tym, jak składnia C # jest bardziej intuicyjna, ale jest to bardzo subiektywne i oparte w dużej mierze na tym, co zacząłeś od poznania. Twierdziłbym, że gdybyś był całkowicie obiektywny, składnia VB.NET jest prawdopodobnie bardziej intuicyjna, jeśli nie zakładasz wcześniejszej znajomości innego języka. Na przykład, biorąc pod uwagę ten sam program w C # i VB.NET, który Twoim zdaniem byłby bardziej zrozumiały dla kogoś, kto nie ma wiedzy o programowaniu. Wydaje mi się to całkiem jasne.

Inną rzeczą, która jest miła w tej składni, jest to, że jest o wiele bardziej wyraźna w zamykaniu struktur (END IF, END WHILE, NEXT X) w porównaniu do modelu bracketingu. To sprawia, że ​​kod jest nieco bardziej czytelny i często pozwala kompilatorowi być bardziej precyzyjnym w tym, który numer wiersza powoduje błędy kompilacji. Jeśli kiedykolwiek wybrałeś się na polowanie na brakujący nawias klamrowy / średnik z powodu błędu kompilatora 50 linii od problemu, wiesz o co mi chodzi.

Ponadto w kolumnie wygranej VB.NET moim zdaniem brakuje == / = jako operatorów porównania / przypisania. Rzadkie korzyści z posiadania odrębnego operatora dla każdego nigdy nie zrównają wszystkich (czasami) trudnych do wykrycia słabych punktów, które pomaga stworzyć.

Wreszcie, nienawidzę rozróżniania wielkości liter w językach programowania. Jednym z zarzutów dotyczących VB jest to, że ma on tyle bagażu, ale C # przeniósł albatros wrażliwości na wielkość liter C. Nigdy nie byłem w sytuacji, w której chciałbym, aby dwa identyfikatory w tym samym zakresie różniły się tylko przypadkiem. To tylko sprawia, że ​​praca jest zajęta i spowalnia mnie. VB.NET otrzymuje w tym względzie kilka punktów nad C #.


Programiści C # uwielbiają być zwięzli, dlatego myślę, że generalnie preferują tę składnię. Ma tylko pewien urok estetyczny. Jednak z całkiem praktycznej perspektywy podoba mi się, ponieważ jest tak podobny do języków takich jak Java, JavaScript i C ++.

Ponieważ zajmuję się tworzeniem stron internetowych, które wymagają programowania zarówno po stronie serwera, jak i klienta, łatwiej jest mi mentalnie przełączać się między C # i JavaScript, co często jest mi wymagane.

Podoba mi się również to, że w większości przypadków, gdybym kiedykolwiek musiał przejść do programowania w Javie lub C ++, miałbym trochę przewagi, gdybym korzystał z C # przez większość czasu.


3
+1 za komentarz dotyczący rozwoju sieci. Używam zarówno VB.NET, jak i C #, w zależności od projektu, i znacznie łatwiej jest mi przechodzić między C # i JavaScript niż VB.NET i JS.
Paperjam,

2
„Nigdy nie byłem w sytuacji, w której chciałbym, aby dwa identyfikatory w tym samym zakresie różniły się tylko przypadkiem”. jest czysto subiektywny. To jest dokładnie jeden z powodów, dla których wolę C #. Przy prawidłowym zastosowaniu i konsekwencjach świat może mieć sens na przykład mieć w konstruktorze parametr o nazwie namei właściwość publiczną o nazwie, Namea następnie przypisać go Name = name;. Tak długo, jak trzymasz standard kodowania, w przeciwnym razie zgadzam się, może to powodować zamieszanie.
Aidiakapi

1
Potrzebowanie standardu kodowania, aby uniknąć takich podstępnych błędów, jest dla mnie negatywne. Obecność obejścia tego nie usprawiedliwia.
JohnFx,

Pisanie niechlujnego kodu w jakimkolwiek języku programowania powinno być trudne. Niewrażliwość na wielkość liter tylko zachęca do niedbałego kodu. Wrażliwość na wielkość liter wcale cię nie spowalnia, co to za argument? Spowalnia cię, gdy robisz dużo literówek, a wtedy dobrze, że zwalniasz.
Falcon

Jest to tylko niedbały kod, ponieważ kompilator nie może go zinterpretować. Gdyby wszystkie kompilatory nie rozróżniały wielkości liter, nie miałoby to znaczenia. Naszym zadaniem nie jest pisanie kodu do druku w czasopiśmie, lecz pisanie kodu, który wykonuje zadanie. Przypadek „niechlujstwa” tego nie powstrzymuje.
JohnFx

19

Wolę składnię nawiasową języków w stylu C niż bardziej „pełną” składnię języków w stylu BASIC.

Moje wprowadzenie do programowania było z Turbo Pascal. (Trochę programowania BASIC, które zrobiłem na Commodore 64, jako dziecko, tak naprawdę się nie liczy.) Po nauce języka Java nigdy nie oglądałem się za siebie i wolałem składnię w stylu C.


4
„„ pełna ”składnia języków w stylu BASIC.” - Tak, nigdy więcej nie spojrzałem na VB, kiedy zobaczyłemif something then code endif
TheLQ

1
Heh, byłem zaskoczony, że ktoś zlekceważył to. (Spodziewałem się, że będzie to pytanie Emacs vs. Vim.)
George Marian,

3
@TheLQ: a także AndAlso!
Gerry

Brakuje mi dni Turbo Pascala. To było dużo zabawy.
MetalMikester

1
Uważam, że składnia nawiasu jest łatwiejsza do odczytania. Jeden ogólny symbol bloku zamiast kilku słów specyficznych dla kontekstu.
Michael K

12

Są funkcjonalnie takie same, nie ma nic, co można zrobić w jednym, czego nie można zrobić w drugim, a w przyszłości Microsoft obiecał, że zespoły językowe będą rozwijać się równo, więc jest to mało prawdopodobne, aby zmiana była równoważna.

Różnice są teraz czysto kulturowe i osobiste. Ten artykuł jest interesującą lekturą na temat różnic między kulturami programistów używających C # i VB.net

[Uwaga: Chociaż sam jestem programistą C #, konkluzja powiązanego artykułu niekoniecznie odzwierciedla moją osobistą opinię, jest to tylko interesujące alternatywne podejście w debacie]


8
To nie do końca prawda: na przykład VB.NET nie ma iteratorów, które są świetną funkcją C #.
Thomas Levesque

2
C # nie ma literałów XML VB.NET: blogs.msdn.com/b/wriju/archive/2008/02/07/… (chociaż nie jestem fanem tej funkcji ze względów architektonicznych, to jest fajne)
Steven Striga

@Thomas @WeekendWarrior: Dobre przykłady, ale tylko dla podkreślenia, powiedziałem „Funkcjonalnie takie same”, którymi są. Obie kompilują się do IL, więc można osiągnąć ten sam zestaw funkcji. Te przykłady to tylko skróty językowe dla funkcji, które można uzyskać na inne sposoby.
Simon P Stevens,

8

Przyszedłem do .NET z C i C ++ (z odrobiną Javy, Adi i Pascala), więc C # był dla mnie naturalnym postępem.

Gdyby pojawiło się zadanie wymagające VB.NET, na pewno bym go nie odrzucił.


6

Wykonałem dużo pracy z VB.NET, ale rozumiem wystarczającą liczbę C #, aby uzyskać sedno tego, co dzieje się w kodzie. Moje obecne preferencje to VB.NET, ponieważ najbardziej go znam (oczywiście), ale tak naprawdę nie mam preferencji między pełną składnią BASIC a składnią w stylu C, obie są dla mnie bardzo czytelne i zrozumiałe.

Większość mojego programowania współpracuje z COBOL i VB6, więc VB.NET był dla nas, jako zespołu, wygodniejszym wyborem języka .NET. Nie było dla nas solidnego powodu, który wymagałby nauki języka C #, ponieważ są one funkcjonalnie takie same.

To powiedziawszy, nauka C # jest zdecydowanie na mojej liście rzeczy do zrobienia.


2
Mam takie same kłopoty. :) i wolę VB.NET w ten sam sposób, w jaki wolę colę niż pepsi. Ale jeśli zaczniemy nowy projekt, C # jest najlepszym wyborem, ponieważ znajdziemy więcej programistów, którzy znają i preferują C #. Zrozumiałem, że strategią MS dla VB było doprowadzenie społeczności VB do platformy .NET.
Pagotti

5

Wolę C #.

Zaczynałem jako programista VB.NET, ale z czasem stało się jasne, że całkiem sporo nowych funkcji pojawia się najpierw w C #, a potem w VB.NET (np. Właściwość automatyczna). A społeczność otaczająca C # jest znacznie bardziej ożywiona niż VB.NET.

Dodatkowo, jeśli zamierzasz nauczyć się języka Java lub podobnego języka, C # jest lepszym punktem wyjścia - składnia jest prawie taka sama we wszystkich językach pochodnych C. Chociaż nie byłoby to dla mnie punktem zwrotnym, ponieważ składnia jest czymś, czego można się szybko nauczyć.


3
„funkcje pojawiają się najpierw w języku C #” Jednak nie zawsze tak jest. Zobacz stackoverflow.com/questions/181188/... (Aby rzucić inny klucz w prace)
Uwaga dla siebie -

To gdzie jestem. Nadal uwielbiam VB, ponieważ tam zacząłem, ale moim zdaniem C # ma lepszą składnię w takich rzeczach, jak wyrażenia lambda. Z drugiej strony VB ma literały XML, o których C # może tylko pomarzyć. Myślę, że warto zerwać z osobnym projektem VB dla ciężkiej pracy XML.
Kyralessa

1
Z każdą generacją narzędzi argumenty „cechy” zmieniają się nieco. Jedyne, co mogę wymyślić, które C # ma od vs2010, którego brakuje w vb.net, to iteratory; dla kontrastu, vb.net oferuje nazwane indeksatory, filtry wyjątków, literały XML, operator „Jest”, który jest 1000 razy lepiej wyglądający Object.ReferenceEquals, obsługę zdarzeń, która jest prawie właściwie wykonana, i płynniejsze korzystanie z IDE. VB.net umożliwia, choć nieco niewygodne, aby inicjalizatory pól korzystały z parametrów konstruktora lub bezpiecznie tworzyły IDisposableobiekty bez konieczności używania ThreadStaticzmiennych; C # nie.
supercat

5

Oprócz innych odpowiedzi zamieszczonych tutaj, wybrałbym C # zamiast VB, ponieważ programiści C # otrzymują więcej. Więcej doświadczenia z C # = więcej $$ :)

Wiem, że oba języki są prawie takie same i bardzo łatwo można przełączać się między nimi, ale myślę, że kiedy zarząd patrzy na kilka nawiasów klamrowych i średników, akceptuje fakt, że robimy coś, czego nie mogą zrobić, z VB. Net mogą spojrzeć na to i powiedzieć „och, to nie musi być takie trudne, jeśli mogę to zrozumieć”.


1
Myślę, że dość słuszny punkt, który często jest pomijany w zależności od branży / regionu.
Anonimowy Wpisz

4

C #, ponieważ mogę przełączać się między nim a Javą przy minimalnym wysiłku

VB.NET ma zupełnie inną składnię. C #, podobny do Java i innych języków daje mi lepszą pozycję do szybkiego dostosowywania się do nowych rzeczy. Ponieważ dane wyjściowe C # i VB.NET są praktycznie wymienne, sensowne jest używanie C #. Ponadto, jeśli kod Twojej firmy znajduje się w języku C #, bardziej prawdopodobne jest, że będziesz w stanie nauczyć programistę Java, jak kodować C #, niż VB programisty Java. Są tylko subtelne zalety, ale subtelność jest nadal zaletą.


3

Odkładając na bok moje osobiste preferencje. Jako osoba, która ostatnio rekrutowała (i próbowała zostać rekrutowana), kiedy mieliśmy tę debatę w biurze, panowała ogólna zgoda co do tego, że powinniśmy przejść do C # z VB.

Dlaczego? Ponieważ C # był bardziej rozpowszechniony na rynku (w każdym razie wokół nas), co pozwala nam łatwiej rekrutować i łatwiej rekrutować.

Wygląda na to, że zatoczyło pełne koło; ludzie uczą się języka C #, ponieważ rekruterzy tego chcą, ponieważ jest więcej kandydatów.


3

Będąc nieco starszym deweloperem (czy 59 jest „nieco” starszy?), Nauczyłem się języka BASIC najpierw na Commodore VIC-20, nauczyłem się Turbo Pascal (v1!), Zacząłem uczyć się języka COBOL na studiach i spędziłem 14 lat pracując nad IBM mainframe, z krótkimi zmianami piszącymi średnie aplikacje w Revelation BASIC (wariant PICK BASIC) i kilkoma narzędziami w Modula-2, przed przejściem do VB5 i VB6. A potem przyszedł .NET.

Ze względu na moje podstawowe doświadczenie, pomyślałem, że powinienem zacząć od VB.NET, ale okazało się, że próbowałem robić rzeczy „staro” i doprowadzało mnie to do szału (okej, więcej orzechów). Ponieważ wykonałem trochę pracy w C, pomyślałem, że dam C # wir, aby zobaczyć, jak to się potoczy. I OMG, to było jak wynurzenie się z ciemnego tunelu do czystego światła dziennego! Całkowicie nieoczekiwany. Wydawałem z siebie obraźliwe odgłosy na temat tego, że C jest językiem „tylko do zapisu” - „tak trudno zrozumieć, że programista C nie mógł zrozumieć, co zrobił jego własny kod 6 miesięcy po jego napisaniu” na wpół sławny powieściopisarz, który wydawał mi się wtedy słodki.

Z racji tego, że trochę nie znałem C, nauka języka C # była paradoksalnie łatwiejsza w nauce programowania .NET niż w znacznie bardziej znanym paradygmacie Basic. Nadal lubię VB6, ale pokochałem C #. Najlepszy język programowania na świecie.


1
Interesująca odpowiedź, myślę, że to przynajmniej częściowo obala pomysł, że „starszy tłum” ma tendencję do trzymania się VB.NET przez C #
Anonimowy typ

3

W Visual Basic .Net rozwijam się od 2001 roku, uwielbiam go i nienawidzę !!!

Kolejność prezentacji tych punktów jest oparta na kolejności, w jakiej przyszedł mi do głowy ...

W vb.net ze studiem wizualnym istnieje wizualny podział linii między każdą metodą, właściwością. Dla wielu osób nie jest to dobry powód, aby preferować vb.net niż c #, ale nie rozumiem, dlaczego zespół c # w Microsoft nie wdrożył go. Istnieje dodatek, który rysuje tę linię w c #, ale jeszcze raz dziękuje Microsoftowi, aby mieć zespół ac # i zespół Visual Basic, którzy nie rozmawiają ze sobą.

W vb.net, kiedy tworzysz formularz win, masz dwa combobox w Visual Studio na górze edytora i możesz automatycznie generować zdarzenie automatycznie po wybraniu zdarzenia na prawym combobox. Gdy dołączasz dziesiątki wydarzeń każdego dnia, może to być bardzo kłopotliwe, jeśli nie masz tej funkcji. Dzięki c # masz mały przycisk u góry siatki właściwości, który może generować zdarzenia, ale nie jest szybki jak w vb.net. Ponadto, jeśli dołączysz zdarzenie sterujące w c # i usuniesz formant w formularzu, uczestnik utworzony w automatycznie wygenerowanym kodzie do obsługi zdarzenia musi zostać usunięty ręcznie. Jeszcze raz dziękuję Microsoft.

W vb.net, gdy próbujesz zmodyfikować metodę zawierającą zapytanie linq bez modyfikacji samego zapytania, nie ma problemu, ale w języku c # cały kod metody jest zablokowany. Jeśli masz wiele zapytań linq lub wyrażeń lambda, funkcja edycji i kontynuacji szybko stanie się dobrą starą rzeczą. Ok, trochę przesady ... ale :)

W vb.net, gdy utworzysz nazwę metody i stukniesz Enter, automatycznie utworzy się „end sub”. W c #, zrób to sam. Ok, jeśli masz zainstalowany resharper lub devexpress, będzie lepiej, ale dlaczego wszystkie te małe, ale wspaniałe funkcje nie zostały zaimplementowane w języku c #.

W vb.net, kiedy masz błędy w kodzie, są one automatycznie wyświetlane, a kiedy je poprawisz, błędy te są usuwane ze stosu w czasie rzeczywistym. W c # musisz zbudować swój projekt, aby zdać sobie sprawę, że pomyślnie poprawiłeś określone błędy lub nie. Dlaczego zespół c # nie ma opcji weryfikacji błędu w czasie rzeczywistym, tak jak w vb.net. Dzięki dużemu rozwiązaniu żadna weryfikacja błędu w czasie rzeczywistym nie może być bardzo dobrą optymalizacją wydajności, ale uwielbiam widzieć, jak stos błędów znika, gdy go poprawiam.

Jak wspomniała inna osoba, myślę, że łatwiej jest odczytać warunek vb.net, jeśli… i jeśli, wybierz przypadek… zakończ wybierz, ale z nawiasami malarskimi devexpress, zapomnij o tym, co powiedziałem.

Dzięki vb.net w studiu wizualnym jest wiele błędów. Wystarczy wspomnieć o jednym w Visual Studio 2010, intellisensy nie filtrują poprawnie wyliczenia, jeśli aktywowano tryb „common” zamiast „all”.

Dzięki vb.net jesteś postrzegany jako manekin, ponieważ statystycznie więcej złych programistów używa vb.net zamiast c #, ponieważ c # jest trudniejszy do nauczenia się i promowania lepszej praktyki programowania.

Jak inni mówili, programista c # ma większą szansę na dobrą pracę z większymi pieniędzmi.

W głowie klienta, vb.net = facet, który programuje w swojej piwnicy za pomocą spaghetti kodu. c # = wow, jesteś bardzo inteligentny. Faktem jest, że to nie dlatego, że programujesz w języku c #, że tworzysz dobry program, ale statycznie tak.

Po tych wszystkich punktach postanowiłem przekonwertować cały mój kod VB w C #. Programuję ze wszystkimi najlepszymi praktykami zorientowanymi obiektowo, wzorami projektowymi, czystym kodem ze standardami i ścisłą składnią i mogę programować w ten sposób przez 50 lat, ale z perspektywy społeczności nie jestem dobrym programistą. Przekształcę mój kod w c # bez żadnych innych dobrych praktyk i będę inną osobą; świetny facet, którego musisz szanować .....: co za żart ... !!! ale to prawda.


2

Oto jak na to spojrzeć: Który język jest bardziej popularny między SO a CodePlex? C # lub VB.Net?

Czasami podążanie za stadem jest dobrą rzeczą, ponieważ to stado będzie w stanie Ci pomóc, gdy będziesz go potrzebować. Domyślnie C # będzie szybszy niż Vb.Net. Myślę, że użycie Option Strict może to zrównoważyć. Ostatnim razem, gdy porównywałem IL między tymi dwoma, bezpieczeństwo typu VB.Net ostatecznie zwiększyło IL o około 15%. Przekłada się to na dodatkowe koszty ogólne. I ... biorąc pod uwagę języki, które robią to samo, wezmę ten szybszy. Moja wygoda nie powinna nadpisywać ogólnie mojego doświadczenia użytkownika.


2

Chciałbym powiedzieć, że jedynym powodem, dla którego BASIC jest nadal popularny, jest to, że był to pierwszy produkt Microsoftu i od 35 lat pchają go sobie do gardła. Powinno było umrzeć dawno temu.

Powiedziawszy to, pracowałem nad dwoma dużymi projektami .NET i oba zostały wykonane za pomocą VB.Net - chociaż było trochę C #, ponieważ albo tłumaczenie było dziwką, albo konstrukcja nie istniała w VB.Net. Jedyną zaletą, jaką widzę w VB.Net, jest to, że edytor Visual Studio jest dla niego znacznie bardziej przyjazny (przynajmniej z mojego doświadczenia) niż w C # - Intellisense wydaje się lepszy, podobnie jak automatyczne formatowanie (zauważ, że ponieważ nie użyłem C # tyle, może brakuje mi czegoś w konfiguracji IDE ...)

Główną wadą VB.Net jest to, że wprowadzili wiele bzdur z ery VB6 z powrotem w .NET 1.x, aby ułatwić konwersję kodu VB6. Te rzeczy wciąż tam są, a kodery VB6 kodują nowy kod, używając tych ... „rozszerzeń” zamiast używać bardziej neutralnych klas / metod .NET / cokolwiek innego. Nie wiem, ile razy pytałem mojego szefa, dlaczego wciąż używa tego badziewia. „Ale… To działa…” Tak. Hej, lubię suka.

Szukając pomocy w Internecie, znalazłem większość rozwiązań w języku C # - sprawdź fora MSDN, różne blogi itp. Książki mają tendencję do skupiania się na języku C #, a jeśli jest wersja VB, to zwykle pojawia się w kilka miesięcy później (np. Pro LINQ .... od Apress.)

Wiele języków ma wspólne pochodzenie w języku C, co znacznie ułatwia przełączanie między C, C ++, C #, Java, PHP i kilkoma innymi. PHP jest tutaj trochę skomplikowane, ale ma wiele konstrukcji podobnych do C. VB? Cóż, to właściwie jego mała rzecz i to wszystko.

Lider projektu w mojej organizacji powiedział mi niedawno, że coraz więcej nowych projektów jest opracowywanych przy użyciu C # zamiast VB - WRESZCIE. Kiedy .NET został wprowadzony w naszej organizacji, mniej więcej oficjalnie zaczęli korzystać z VB.Net z powodu całego kodowania VB6, które już trwało. Moce, które później mi przyznano, że to nie był ich najlepszy ruch.

Jak ktoś wcześniej wskazał, nie powiedziałbym „nie” projektowi VB.Net, ale nadal mam nadzieję, że będzie on powoli eliminowany z nowszych rozwiązań w moim miejscu pracy.


1

Cóż, dzisiaj nie ma praktycznie żadnego powodu do korzystania z VB.net. Na początku był to tylko sposób, aby dać programistom VB znaną składnię, ale zasadniczo był to podobny do BASICa remapowanie C #. Tak więc jego jedyną prawdziwą zaletą jest bardziej znana składnia, a składnia BASIC jest również jej prawdziwym ograniczeniem.

Z biegiem czasu oba języki ewoluowały obok, jedyną znaczącą różnicą jest my pseudo przestrzeń nazw.

Poradziłbym każdemu programistowi .net, który nie zna C #, aby się tego uczył, ponieważ społeczność jest dość większa, a składnia podobna do C jest wspólna dla większości częściej używanych języków.


Innym ważnym czynnikiem uzasadniającym istnienie VB.NET jest ułatwienie ścieżki aktualizacji dla projektów w ASP „Classic” / VBScript lub VB6. Przeniesienie dużych istniejących aplikacji było znacznie mniejsze.
JohnFx

1

VB język jest łatwiejszy do odczytania dla początkujących, zwykle piszą w nim swoją pierwszą, drugą i trzecią aplikację, a wszyscy wiemy, jak są zakodowane nasze pierwsze aplikacje - strasznie.

Programiści z C ++, Java itp. Przenieśli się do C #, podczas gdy programiści VB.NET pochodzą z VBA, VB i BASIC, co jest istotnym, nietradycyjnym programistą.


1

Wydaje się, że jest więcej próbek kodu C # online niż próbek VB.NET. Nie tak trudno jest przekonwertować jeden na drugi, ale po co męczyć się, jeśli nie musisz.


1

Wolę VB .Net niż C #,

  • (97) ...
  • (98), ponieważ nauczyłem się VB, zanim jeszcze wiedziałem o C #.
  • (99), ponieważ kupiłem już 10 000 stronicową książkę w VB .Net.
  • (100), ponieważ VB nie ma nawiasów klamrowych.
  • (101) ponieważ wszyscy nienawidzą VB.

0

DO#. To tylko dlatego, że zrobiłem C i Java, więc uważam, że C # jest dla mnie bardziej czytelny. C # jest dla mnie, podobnie jak VB.NET dla byłych programistów VB.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.