it-swarm-eu.dev

Proč je VB) tak populární?

Zdá se mi, že Visual Basic je nemotorný, ošklivý, náchylný k chybám a obtížně čitelný. Nechám ostatní vysvětlitproč . Zatímco VB.net byl zjevně obrovským skokem vpřed v jazyce, pokud jde o funkce, stále nechápu, proč by se někdo rozhodl kódovat v VB přes, řekněme, C #).

Stále ale vidím (co se zdá) naprostá většina komerčních webových aplikací z „MS obchodů“ je postavena ve VB. Mohl bych to napravit, ale VB stále vypadá populárnější, než si zaslouží).

Může někdo pomoci odpovědět na některou z těchto otázek:

  • Chybí mi něco s VB? Je snazší se učit, nebo „přátelštější“ než C #? Existují funkce, o kterých nevím?
  • Proč se dnes VB/VB.net tak často používá, zejména ve webových projektech?
28
aaaidan

VB lze použít k vytvoření GUI (prohlásil gooey) pro sledování IP adres. Toto je často používáno v řešení kriminality .

47
Rick J

Myslím, že to záleží na tom, odkud pocházíte. Když začínám jako programátor, myslím, že VB může být snadnější například číst než C #, protože se spoléhá více na slova než symboly, což usnadňuje brát běžných lidí.

Po mnoho let jsem byl programátorem VB) a když přišel .NET, pracoval jsem v prvních pár letech ve VB.NET (opravdu s bodem C #) opravdu neviděl. Teď mám pár let C # za mnou a někdy zjistím, že kód VB.NET trvá trochu déle, než se "dekóduji", než kód C #. Možná proto, že se u některých konstrukcí spoléhá více na slova než symboly ...

42
Fredrik Mörk

Níže jsem právě zkopíroval odpověď na jiné vlákno :

Vyvíjím se v obou VB a C # pravidelně), většina mých peněz vydělávala C #. Osobně dávám přednost VB pro většinu (ale ne všechny… lambdy!) Nemohu opravdu vyjmenovat žádné těžké výhody kromě těch, které nastínil Jon. Herfried vlastně shromáždil pár na svém web (v němčině!), ale jsou spíše technický.

Věc, která mě opravdu obtěžuje ve všech jazycích souvisejících s C, je hloupá syntaxe. To je čistě kulturní, ale jako někdo, kdo dělá většinu své profesionální práce v C++, a je-li v tom docela zdatný, stále naprosto nenávidím syntax. A nejen roztomilé malé vtipky C++. Ne, celý balíček. Proč rovnátka? Proč středníky (možná nejhloupější rozhodnutí v celé historii programování)? Proč hloupá syntaxe obsazení ve stylu C? Proč neexistuje žádné klíčové slovo pro deklaraci proměnných (ve skutečnosti, toto je nejhloupější rozhodnutí)?

Existuje jen tolik věcí, které mě opravdu dělají smutnými a naštvanými. VB není světcem, jeho jazyk má obrovské nedostatky. Ale nic ve srovnání s tím, co jsem řekl výše).

Uvědomuji si, že většina těchto prohlášení potřebuje odůvodnění, ale navrhuji, že je to pouze proto, že jsme si na ně zvykli. Navíc zde není správné místo. Postačí konstatovat, že jeho hlavní nevýhodou je i syntaxe C #, zatímco je jeho hlavní výhodou oproti VB.

Nechci raději VB kvůli jmennému prostoru My, nemám to raději kvůli literálům XML, nemám raději kvůli slabému psaní, nedělám Nejraději to kvůli volitelným parametrům nebo kvůli mnohem lepšímu příkazu switch. Ne, dávám přednost tomu kvůli syntaxi.


To znamená, že musím přiznat, že VB je stále více zatěžován její syntaxí. Poslední humbuk se zdá být Linqovy dotazy parametrizované lambda funkcemi a já snadno přiznávám, že to dělá mnoho věcí jednodušší. Bohužel, syntaxe VB pro lambdy je prostě příliš těžkopádná na to, aby konkurovala C #. Stačí zvážit, jak nafoukané volání na Parallel.For vypadá jako v VB - ve srovnání s C #, kde je to vypadá přirozeně. IMHO, tým designérů VB) zde šel špatným směrem a upřednostňoval konzervativní konzistenci před čitelností.


Odpověď na vaše subjektivní obvinění:

Zdá se mi, že Visual Basic je nemotorný, ošklivý, náchylný k chybám a obtížně čitelný.

Určitě máte právo si to promyslet, ale jak říká Marc níže, bude pro vás obtížné objektivně argumentovat. Rozhodně mohu citovat počet prvků C syntaxe, které jsou objektivně více náchylný k chybám než cokoli, co existuje ve VB. Ve skutečnosti byla vyvinuta syntaxe VB), aby se takovým sitace výslovně zabránilo.

„Neohrabaný, ošklivý… a těžko čitelný“ jsou kvalifikace, které lze označit téměř všemi jazyky, se kterými neznáte. Jednoduše řečeno: ošklivost je přímým důsledkem vaší neznalosti jazyka.

Dobrá znalost jazyka znamená rozpoznat vzorce v kódu. Dobře napsaný kód se na základě praxe objeví elegantně, zatímco špatný (pomalý, náchylný k chybám) kód se objeví ošklivě. Je to tak jednoduché.


Poslední poznámka: Články, které citujete, obsahují několik nepřesností a zastaralé informace. Jako ospravedlnění velmi subjektivní a emocionální diskuse nejsou příliš vhodné.

27
Konrad Rudolph

Zdá se mi, že Visual Basic je nemotorný, ošklivý, náchylný k chybám a obtížně čitelný.

Angličtina se mi zdá neohrabaná, ošklivá, náchylná k chybám a obtížně čitelná, zejména psaná lidmi, kteří mají špatnou gramatiku, špatnou pravopis, bezohledné ignorování kapitalizace a interpunkce a žádný smysl, jak prostorově a mentálně organizovat své myšlenky.

Nejde jen o to, že jazyka je obtížné číst nebo nemotorný kvůli syntaxi jazyka, ale je to obvykle tak proto, že programátor není opravdu dobrý v vyjadřování vlastních myšlenek:

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

Správně, to je hrozné. Není však nijak zvlášť těžké psát hrozný kód v jiných jazycích. Při správném zápisu by to mělo velký smysl, i když je kód zapsán ve VB:

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

Alespoň to je čitelnější a srozumitelnější. Je to stále BASIC. Skutečně jde o schopnost programátora jasně vyjádřit své záměry formátováním kódu snadno čitelným způsobem, pomocí dobře pojmenovaných identifikátorů a věnováním pozornosti psaní srozumitelného kódu.

To znamená, že jsem se jazyka Visual Basic příliš nedotkl od dnů VB3 (tedy příklad se „starou“ syntaxí), ale to, že jazyk lze zneužít, neznamená, že nelze správně použít k napsání poměrně robustního kódu. . Jistě, mohou existovat určité nedostatky, ale přístupy navržené k řešení těchto problémů také ukazují schopnosti jednoho programátora oproti druhému.

(Bez rozdílu postřikuje On Error Resume Next přijde na mysl jako nepříliš dobrý způsob, jak vyřešit nedostatky chybějících výjimek v VB zpět v před .NET dnech.)

15
coobird

Většina tvých argumentů proti VB je použitelná pouze pro VB-Classic (druhý odkaz) nebo na základě slabých nebo zastaralých argumentů

  • Ani ve VBC nebudete používat GoSub ... Návrat atd.
  • Co je špatného na static? C++ to také podporuje.
  • VB10 představuje implicitní pokračování linky (nepotřebujete ani redundantní středník jako C #)
  • Různé funkce obsazení existují také v C++ a C #. C # 's (object)(expr)- Cast-Syntax a object as type jsou ještě více matoucí a nekonzistentní.
  • Co je špatného na with? Vnořené stromové struktury můžete vytvářet velmi intuitivním způsobem, což u C # není možné.
  • Zpracování událostí v VB je mnohem elegantnější než v C #. Události můžete zavádět a zpracovávat pomocí jednoho klíčového slova (WithEvents), aniž byste museli inicializovat delegáty, eventhandler-procs atd. Díky tomu je programování GUI v VB) mnohem pohodlnější a nemusíte generovat kód události designer .
  • Do nového C # se zavedou volitelné parametry - proto se zdají být dobré.
  • VB.NET má oba přísné a zkratkové booleovské operátory.
  • do kontrolujete chyby syntaxe v době kompilace, pokud nespustíte VB jako skriptovací jazyk).
  • End If je užitečnější než jen }. Při složitých syntaktických strukturách jsou všechny složené rovnátka matoucí, zatímco konkrétní End ... vám pomůže při určování, který blok nebyl uzavřen.
  • XML Literals - Skript XML je nyní součástí kódu a je plně podporován inteligencí.

Celkově vzato, existuje jen několik objektivních rozdílů mezi VB.NET a C # kromě syntaxe. EG: Návrh GUI je mnohem efektivnější v VB kvůli lepšímu systému událostí a lepšímu IDE), zatímco např. Algoritmy lze lépe vyjádřit v C #, protože syntaxe je stručná.

Zbytek je jen otázkou vašeho osobního stylu. Programátoři C-Style se cítí dobře s C #, VB (nebo možná Pascal?)) - Programátoři stylu používají VB.

Ale explicitnější VB-Syntaxe založená na slovech může být pro začátečníky snadnější číst než všechny symboly v C. Porovnat:

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

na

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

To neznamená, že jeden jazyk je lepší než jiný.

Upravit : -----------------------------------------

K argumentu VB by bylo náchylné k chybám. Když použijete Option Strict On je stejně přísné jako C #, ale nedovoluje nám dělat takové chyby:

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

Historicky bylo vývojové prostředí VB) rychlým a efektivním způsobem vytváření určitých typů aplikací (např. GUI aplikace), což vedlo k tomu, že se jednalo o velmi populární volbu. Myslím, že VB byl nejvyužívanějším jazykem během jeho rozkvětu (např. VB6).

S takovou nainstalovanou základnou je sotva překvapivé, že v ní stále probíhá mnoho práce.

12
dommer

Všechno to začalo dříve, než existovala C #

V ~ 1999 jsme měli Visual Studio 5/6. Pokud jste byli nezávislým dodavatelem softwaru nebo firmou používající Windows a potřebovali jste napsanou aplikaci, která by mohla např. sledovat čas strávený zaměstnanci na projektech, měli jste několik možností:

  1. Formuláře v jazyce Visual Basic.
  2. MFC, ATL nebo Win32 v jazyce Visual C++.
  3. Formuláře v aplikaci Access 97/2000.
  4. Webové stránky ASP.
  5. Java applet.

V té době jsme byli těsně předtím, než praskla bublina dot-com, takže kdokoli dobrý s (4) nebo (5) odešel vyjednat akciové opce na jakémkoli úžasném dot-comu, na který byli přitahováni.

(3) měl problémy s uzamykáním a celkovou škálovatelností, ale viděl jsem mnoho řešení založených na přístupu, která by Shell-out spouštěla ​​podpůrné funkce podle potřeby.

Takže to nás nechává s VB a VC++:

Editor formulářů v VB byl v té době vynikající pro produktivitu. Můžete přetáhnout své komponenty - nejen tlačítka, štítky a textová pole, ale celou sadu nástrojů „OLE ovládacích prvků“ opakovaně použitelných komponenty jako chytré mřížky, listy Excelu nebo instance IE=). Zapojení bylo provedeno v zákulisí - všechno bylo jako objekt a vy jste jednoduše poklepali na věci, abyste přidali obsluhy událostí. Bylo to velmi mnohem složitější v jazyce Visual C++. Jako člen týmu podpory podpory Visual Studio v té době si pamatuji, jak volání podpory jazyka Visual Basic byla většinou o tom, která komponenta byla nejlepší použít nebo jak optimalizovat jejich aplikaci určitými způsoby. Bylo to téměř nikdy „jak vytvořím aplikaci s funkcemi uživatelského rozhraní X, Y a Z“.

Budování bohatého uživatelského rozhraní v jazyce Visual C++ bylo jinou výzvou. Ačkoli existovala podpora vizuálních editorů pro dialogy a formuláře SDI/MDI, byla poměrně omezená. Podpora vkládání OLE Ovládací prvky (ActiveX)) do MFC nebo Win32 byla černá umění, i když o něco jednodušší v ATL. Zapojení jednoduchých věcí, jako je změna velikosti událostí nebo remíza majitele, bylo docela bolestivé, pouze spojovací body požadované pro vlastní události v komponentách.

Ano, VC++ měl rychlost provádění, schopnost ladění a flexibilní rámce/knihovny/uživatelské rozhraní, ale podpora IDE====================== podpora IDE $ === , komplexní hierarchie tříd MFC a podpůrné linky na 90 dní/2 incidenty zdarma.

IIRC, aplikační balíček, který byl dodán s VB mohl zabalit vaši aplikaci, VB runtime a nejnovější běžné ovládací prvky DLL) a dodat vám samostatný EXE instalační program, který jste mohl dát na CD a dostat se k zákazníkům. Nic z toho „které msvcrtXX.dll a mfcxx.dll máte nainstalované?“, které trápily vývojáře MFC.

Z důvodů časově náročného uvedení na trh a bohatého uživatelského rozhraní tedy VB dostal velmi velké sledování).

Když ve VS6 zasáhly Visual J ++ a Visual Interdev, bylo jasné, že Visual Basic IDE vyhrál nějakou bitvu o bitvu nad Visual C++, což bylo fér IMHO. Nebylo vůbec žádným překvapením, že Visual Studio .NET mělo pro nové [~ # ~] cool [~ # ~] (# = --= -) - C # jazyky editor VB-like formulářů.

Nový jazyk podobný jazyku Java/C/C++ ve spojení s návrhářem uživatelského rozhraní, který si užil celý čas VB lidé po celou dobu), dal novou cestu migrace pro lidi C++, kteří se nyní dělali s MFC/ATL/Win32. Pro VB 3/4/5/6 lidí, kteří se nelíbili nedostatku 100% zpětné kompatibility ve VB.net, to nabídlo příležitost naučit se nový jazyk v známé prostředí.


Důvody, proč VB byl takový komplexní produkt), mají pravděpodobně co do činění s původem Microsoftu, přičemž Basic je jejich stěžejním vývojářským produktem, ale nemám V tuto chvíli nemám žádné citace.

7
JBRWilkinson

Jakkoli ošklivý jakýkoli daný jazyk však může být důvodem, proč se k němu obvykle držet: je velmi drahé vyřadit obrovskou kódovou základnu a skutečnost, že vývojáři tento jazyk již znají, činí použití levnější než jiné jazyky.

6
Brian Rasmussen

VB.NET se snadněji učí, máte pravdu a celkově je to podle mého názoru jednodušší než C #. Je to první důvod, proč je VB tak populární. Dalším a největším bodem, myslím, je, že existuje obrovská konmunity vývojářů, kteří pracovali s VB 6 a staršími verzemi tohoto jazyka, a je pro ně snazší vyvíjet aplikace s VB.net než naučit se nový jazyk.

6
iburlakov

Jak již bylo řečeno, váš estetický úsudek nad syntaxí jazyka do značné míry závisí na tom, co jste věděli dříve. Po více než deset let to vypadá, že se jednalo o soutěž typu C-look-like, s složenými závorkami pro "bloky", "->" pro přesměrování (Perl, php), závorky pro argumenty vyvolávající funkce, // pro komentáře a středník na každém konci řádku. Někteří lidé si dokonce mysleli, že díky tomuto „jedinečnému peru“, pokud znáte jazyk, znáte je všechny, což je skutečně směšné. Ale to vštípilo myšlenku mezi lidmi z jazyka C++/Java, že je to jediná správná estetická syntaxe a cokoli jiného se pokouší klonovat COBOL.

Před několika lety jsem přešel na Ruby a nyní python a nemohu vydržet žádné ošklivější středníky, složené závorky a další nesmyslné postavy. Zdrojový kód je určen pro čtení lidmi. Když jsem se pokusil o vizuální studio, vybral jsem VB nad C #.) Mám podezření, že někteří programátoři vybrali C # jen proto, aby "vypadali vážně" s jeho Java-jako syntaxí, ale pojďme, velmi existují stejné funkce ... odpočiňte si oči.

6
vincent

No, pokud mluvíte o .NET, je tu jeden opravdu jednoduchý, na který si pomyslím:

Editor VB.NET ve Visual Studio je mnohem lepší v chytání syntaktických chyb než C #.

Zatímco editor C # dostal obrovské zlepšení ve VS2008 SP1, stále existují některé chyby syntaxe, které editor nevybírá, dokud se nepokusíte program zkompilovat.

4
Powerlord

Hodně z VB popularity vzniklo v době, kdy VB nástroje byly mnohem přátelštější než jiné dostupné jazyky. "Klasický" VB) nabídl snadný způsob, jak vytvořit Windows aplikací, aniž by se museli učit vnitřnosti rozhraní API Win32 nebo se obtěžovat s manuální správou paměti. Bariéra vstupu pro začínající programátory byla mnohem nižší s VB než C++, takže hodně lidí si uřízlo zuby) s VB.

V dnešní době si myslím, že VB jedna výhoda oproti C # je známost pro ty, kteří pracovali s VB v průběhu let.) Další výhodou je, že VB je snadno čitelný z důvodu tendence používat klíčová slova místo interpunkčních znamének. Jako někdo, kdo pracuje ve VB, Java, C, C # a Python, zjišťuji, že VB = je nejjednodušší jazyk, do kterého se lze vrátit při kontrole kódu, který jsem napsal před lety. Syntaxe je podrobnější, což často usnadňuje čtení kódu, a Visual Studio vždy odvedlo skvělou práci formátování VB kód pro vyčištění formátování při psaní tak, aby byl kód neustále formátován (bez ohledu na nedotknutelnost autora).

Jako vedlejší poznámku shledávám, že Python je velmi snadno čitelný a zkontrolovatelný z podobných důvodů. V Pythonu je formátování kódu vynuceno spíše interpretem než IDE, ale konečný výsledek je stejný. Python také upřednostňuje klíčová slova k interpunkci, i když pravděpodobně méně než VB.

4
gbc

Jmenovat několik:

  • snadnost použití
  • známé jméno (základní byl jeden z prvních populárních počítačových programovacích jazyků)
  • nepodceňujte marketing společnosti Microsoft
3
Toon Krijthe

Bylo by těžké tvrdit, že je více náchylný k chybám než jakýkoli jiný jazyk. Pochybuji také o bodu „velká většina komerčních webů MS“; z toho, co jsem viděl, C # je zdaleka na čele vývoje .NET (s .NET je vlajkovým nástrojem v zásobníku MS pro věci, které nejsou ovladači zařízení atd.).

3
Marc Gravell

VB je velmi podrobný a snadno si zvyknete ve srovnání s C #, který rozlišuje velká a malá písmena. Pro začínajícího programátora je to nejlepší výchozí bod.

3
chugh97

Jednou z výhod VB.NET je oproti C # (což zmizí s C # 4), je výchozí a pojmenované parametry, což je při používání VSTO velmi pěkná věc.

3
Blake Pettersson

VB/VB.NET patří do kategorie RAD (Rapid Application Development)). Můžete vyvíjet aplikace pomocí ovládacích prvků přetažení z panelu nástrojů a méně kódu.

3
NinethSense

No, myslím, že musíte rozlišovat mezi klasickým VB a VB.NET).

Mám pocit, že VB.NET je ne velmi populární, ale Visual Basic "Classic" stále is1 Důvodem je, že je velmi snadné vytvořit Windows aplikaci. Porovnejte to s aplikací Windows v C++/Mfc, což byla v současné době téměř jediná alternativa.

Ze stejného důvodu byla Delphi kdysi velmi populární.

3
PhpFlashGuy

Myslím, že část důvodu je, že staré programátory asp přicházející do .NET, jak jsem to udělal, jsou velmi dobře obeznámeni s VB již proto, že VB skript je jazyk = ASP klasika používaná z velké části. Cítil jsem, že je to méně časově náročné psaní v VB v .NET, protože už jsem věděl, jak mluvit VB. VB je také méně krybaby než C #. Dokážu číst/psát v obou, ale dávám přednost VB), protože je snadné se s přáteli spojit, pokud jste novým programátorem.

3
Eric

Pracuji v prostředí, kde používáme oba. Přepnuli jsme na C # ve prospěch klasického ASP a VB. Podle mého názoru neexistují žádné přerušovače obchodů mezi jazyky. Pro většinu projektů můžete dělat stejnou práci s oběma jazyky. podělte se o svůj názor na náchylnost k chybám a také zjistím, že VB je nepřehledná) (bez důvodu).

Jak již zmínili ostatní, VB je velmi jednoduché a historicky byste mohli stavět projekty velmi rychle. To žilo ve vývoji webu (což se rychle vyvíjí), ale myslím, že když si lidé uvědomí, že C # je právě jak rychle se vyvíjí, VB zhasne.) Dalším důvodem, proč si myslím, že vyprchá, je to, že vše ostatní, do kterého kódujete (CSS, JavaScript), při vytváření webových aplikací vypadá spíše jako C # než VB, takže má smysl používat C # i pro začátečníky.

2
miccet

Osobně se mi líbí způsob, jakým jsou události připojeny ve vb.net s klíčovým slovem 'úchyty ... IDE/Visual Studio/je také citlivější při jednání s VB a zpracovává automaticky většina koncových ifs a podobně ... C # je samozřejmě mnohem svědomitější a čistější (IMHO, s oběma jsem trochu pracoval)

2
Petar Kabashki

Co se týče rámce 4.0, existuje jen malá hrstka věcí VB chybí ve srovnání s C # a naopak platí i obráceně).

  1. Nejpozoruhodnější je, že VB.NET nemá klíčové slovo Yield, ale brzy přichází do VB.NET s novým asynchronním rámcem.
  2. Neexistuje žádné klíčové slovo unsafe. Nikdy jsem to nepovažoval za nutné, ale určitě jsou i někteří lidé.
  3. Nejsou žádné víceřádkové řetězce. Víceřádkové řetězce jsou prováděny pomocí operátorů + (nebo starších &) napříč řádky. Nebo je lze provést pomocí doslovné syntaxe XML: Dim s = <s>My string... multiple lines...</s>.Value. Není to hezké, ale pokud nejste vybíraví a opravdu chcete víceřádkové řetězce, funguje to. A můžete s ním provádět řetězovou interpolaci pomocí syntaxe <%= myVar %>, Což je Nice.
  4. Neexistuje ekvivalent proměnné s rozsahem dynamic. Dynamické proměnné existují v VB) po dlouhou dobu s Option Compare Off, Ale to je soubor s rozsahem, takže to není tak dobré jako dynamic, protože dynamic omezuje rozsah pouze na proměnnou deklarovanou tímto způsobem.
  5. VB postrádá napjatou lambda syntaxi. Lambdas jsou tam, ale musíte použít Function(x) nebo Sub(x).

Některé funkce VB.NET mají C # ne:

  1. Literály XML, které se hodí pro všechny druhy věcí, nejen pro XML.
  2. Necitlivost na malá a velká písmena v jazyce je kočičí mňoukání. To neumožňuje mnoho jiných jazyků, ale jaký je to rozdíl v rychlosti kódování, aby při psaní nikdy nemusel zasáhnout klávesu Shift a aby váš kód byl automaticky formátován tak, jak chcete.
  3. Často zbytečné klauzule Select lze z dotazů Linq vynechat.
  4. Klíčové slovo Nothing je mnohem užitečnější než null v tom, že vše (i typy hodnot) lze nastavit na Nothing a dostanete výchozí nastavení. Klíčové slovo default není potřeba.
  5. VB.NET je v Visual Studio neustále kompilován, takže hned uvidíte chyby. Žádné bití CTRL-SHIFT-B po celý den jako v C #.

Můj obchod dělá MVC3 s Razor pomocí VB.NET a jakmile překonáte (většinou neopodstatněné) předsudky, je to ve skutečnosti velmi pěkný jazyk, který se používá. Není to moc podrobnější než C #, jak tvrdí mnoho (s výjimkou lambd), a je to do značné míry paralelní s C #. Zjistil jsem, že většina lidí, kteří nenávidí, se v moderním VB.NET opravdu dlouho nekódovala.

2
mattmc3