Para mim, o Visual Basic parece desajeitado, feio, propenso a erros e difícil de ler. Vou deixar que outros expliquem o porquê . Embora o VB.net tenha sido claramente um grande avanço para o idioma em termos de recursos, ainda não entendo por que alguém escolheria codificar no VB sobre, digamos, C #.
No entanto, ainda vejo (o que parece ser) a grande maioria dos aplicativos comerciais da Web das "lojas da Microsoft" são construídos no VB. Eu poderia ficar corrigido nisso, mas o VB ainda parece mais popular do que merece.
Alguém pode ajudar a responder qualquer uma (ou todas) destas perguntas:
- Estou perdendo alguma coisa com o VB? É mais fácil aprender ou "mais amigável" que o c #? Existem recursos que eu não conheço?
- Por que o VB / VB.net é tão usado hoje em dia, especialmente em projetos web?
c#
syntax
vb.net
visual-basic-6
aaaidan
fonte
fonte
Respostas:
O VB pode ser usado para criar interfaces gráficas (GUO) para rastrear endereços IP. Isso é frequentemente usado na solução de crimes .
fonte
Eu acho que depende de onde você vem. Ao iniciar como programador, acho que o VB pode ser mais fácil de ler do que o C #, por exemplo, uma vez que depende mais de palavras do que de símbolos, o que facilita a aceitação por pessoas comuns.
Eu fui programador de VB por muitos anos e, quando o .NET chegou, eu ainda trabalhava no VB.NET nos primeiros dois anos (realmente não entendi o que era o C #). Agora, tenho alguns anos de c # atrás de mim e às vezes acho que o código VB.NET demora um pouco mais para eu "decodificar" do que o código c #. Possivelmente porque depende mais de palavras do que símbolos para alguns produtos ...
fonte
Abaixo, eu apenas copiei minha resposta para outro tópico :
Eu desenvolvo em VB e C # regularmente, a maior parte do meu dinheiro envolvia C #. Pessoalmente, prefiro o VB para a maioria (mas não todos ... lambdas!) Do trabalho. Eu realmente não posso citar nenhuma vantagem difícil além das descritas por Jon. Na verdade, Herfried coletou alguns em seu site (em alemão!), Mas eles são bastante técnicos.
O que realmente me incomoda em toda a linguagem relacionada ao C é a sintaxe estúpida. Isso é puramente cultural, mas como alguém que faz a maior parte de seu trabalho profissional em C ++, e sendo bastante proficiente nisso, eu ainda odeio absolutamente a sintaxe. E não apenas pequenas peculiaridades fofas do C ++. Não, todo o pacote. Por que aparelho? Por que ponto e vírgula (talvez a decisão mais estúpida em toda a história da programação)? Por que a estúpida sintaxe de elenco no estilo C? Por que não existe uma palavra-chave para declaração de variáveis (na verdade, essa é a decisão mais estúpida)?
Há tantas coisas que realmente me deixam triste e com raiva. VB não é santo, sua linguagem tem enormes desvantagens. Mas nada comparado ao que eu disse acima.
Percebo que a maioria dessas declarações precisa de justificativa, mas afirmo que isso ocorre apenas porque nos acostumamos a elas. Além disso, aqui não é o lugar certo. Basta dizer que a sintaxe do C #, embora seja sua principal vantagem sobre o VB, também é sua principal desvantagem.
Não prefiro o VB por causa do
My
namespace, não prefiro os literais XML, não prefiro a digitação fraca, não prefiro os parâmetros opcionais ou o melhorswitch
declaração. Não, eu prefiro por causa da sintaxe.Dito isto, tenho que admitir que o VB fica cada vez mais sobrecarregado por sua sintaxe. O hype mais recente parece ser as consultas do Linq parametrizadas com funções lambda e eu admito prontamente que isso simplifica muitas coisas. Infelizmente, a sintaxe do VB para lambdas é simplesmente muito complicada para competir com o C #. Considere como a chamada
Parallel.For
fica inchada no VB - em comparação com o C #, onde parece natural. IMHO, a equipe de design do VB foi na direção errada aqui, favorecendo a consistência conservadora sobre a legibilidade.Para responder à sua acusação subjetiva:
Você certamente tem o direito de pensar assim, mas, como Marc disse abaixo, será difícil argumentar isso objetivamente. Definitivamente, posso citar vários elementos da sintaxe C que são objetivamente mais suscetíveis a erros do que qualquer coisa existente no VB. De fato, a sintaxe do VB foi desenvolvida para impedir explicitamente tais situações.
"Desajeitado, feio ... e difícil de ler" são todos os qualificadores que podem ser marcados em quase todos os idiomas com os quais você não está familiarizado. Simplificando: a feiúra é uma conseqüência direta de seu desconhecimento da língua.
Conhecer bem um idioma significa reconhecer padrões no código. Código bem escrito parecerá virtualmente elegante, enquanto código ruim (lento, propenso a erros) parecerá feio. É simples assim.
Uma última observação: os artigos citados por você contêm várias imprecisões e informações desatualizadas. Como única justificativa para uma discussão altamente subjetiva e emocional, eles não são muito adequados.
fonte
var
var int x
vem à mente. Todas as outras instruções e blocos são introduzidos por palavras-chave dedicadas, por que não declarações de variáveis e métodos? Fie. Inconsistente e feio.Para mim, o inglês parece desajeitado, feio, propenso a erros e difícil de ler, especialmente escrito por pessoas que têm gramática ruim, ortografia ruim, desconsideração imprudente por letras maiúsculas e pontuação e nenhum senso de como organizar seus pensamentos espacial e mentalmente.
Não é apenas difícil ler ou desajeitado o Visual Basic devido à sintaxe da linguagem, mas geralmente é assim porque o programador não é realmente bom em expressar seus próprios pensamentos:
Certo, isso é horrível. Mas também não é particularmente difícil escrever códigos horríveis em outros idiomas. Quando escrito corretamente, faria muito sentido, mesmo se o código fosse escrito em VB:
Pelo menos isso é mais legível e compreensível. Ainda é BÁSICO. Na verdade, tudo se resume à capacidade do programador de expressar claramente suas intenções, formatando o código de maneira fácil de ler, usando identificadores bem nomeados e prestando atenção na criação de código compreensível.
Dito isso, não toquei muito no Visual Basic desde os dias do VB3 (daí o exemplo com sintaxe "antiga"), mas apenas porque uma linguagem pode ser abusada não significa que ela não pode ser usada corretamente para escrever código bastante robusto . Claro, pode haver algumas deficiências, mas as abordagens criadas para contornar esses problemas também mostram as habilidades de um programador em detrimento de outro.
(A pulverização indiscriminada
On Error Resume Next
vem à mente como uma maneira não tão boa de contornar as deficiências da falta de exceções no VB nos dias anteriores ao .NET).fonte
A maior parte de sua argumentação contra o VB é aplicável apenas ao VB-Classic (segundo link) ou com base em argumentos fracos ou obsoletos
static
? O C ++ também suporta isso.(object)(expr)
sintaxe Cast de C # eobject as type
são ainda mais confusas e inconsistentes.with
? Você pode criar estruturas de árvores aninhadas de uma maneira muito intuitiva, o que não é possível em C #.WithEvents
) sem precisar inicializar delegados, eventhandler-procs etc. Isso torna a programação da GUI no VB muito mais confortável e você não precisa gerar o código de evento pelo designer .End If
é mais útil do que apenas}
. Ao ter estruturas sintáticas complexas, todas as chaves são apenas confusas, enquanto um concretoEnd ...
ajuda você a determinar qual bloco não foi fechado.Em suma, existem apenas algumas diferenças objetivas entre VB.NET e C #, além da sintaxe. EG: O design da GUI é muito mais eficiente no VB devido a um melhor sistema de eventos e um IDE melhor, enquanto, por exemplo, os algoritmos podem ser expressos melhor em C # porque a sintaxe é concisa.
O resto é apenas uma questão de seu estilo pessoal. Programadores de estilo C se sentem confortáveis com C #, VB (ou talvez Pascal?) - programadores de estilo usam VB.
Mas a sintaxe VB mais explícita e baseada em palavras pode ser mais fácil de ler para iniciantes do que todos os símbolos em C. Compare:
para
Isso não significa que um idioma seja melhor que outro.
Editar: -----------------------------------------
Para o argumento VB seria propenso a erros. Quando você usa
Option Strict On
, é tão rigoroso quanto o C #, mas não nos permite cometer tais erros:fonte
Historicamente, o ambiente de desenvolvimento do VB era uma maneira rápida e eficaz de criar certos tipos de aplicativos (por exemplo, aplicativos da GUI). Isso levou a ser uma escolha muito popular. Eu acho que o VB foi a linguagem mais usada durante o seu auge (por exemplo, VB6).
Com esse tipo de base instalada, não surpreende que ainda exista muito trabalho nele.
fonte
Tudo começou antes que o C # existisse
Em 1999, tínhamos o Visual Studio 5/6. Se você era um fornecedor independente de software ou uma empresa usando o Windows e precisava de um aplicativo escrito que pudesse, por exemplo, rastrear o tempo gasto pelos funcionários em projetos, você tinha algumas opções:
Naquela época, estávamos um pouco antes do estouro da bolha da Dot-Com, então qualquer um que fosse bom em (4) ou (5) saiu para negociar opções de ações em qualquer ponto-com incrível pela qual se sentisse atraído.
(3) teve problemas com bloqueio e escalabilidade geral, mas vi muitas soluções orientadas a acesso que seriam executadas como shell para executar as funções de suporte conforme necessário.
Então, isso nos deixa com VB e VC ++:
O editor de formulários no VB era, na época, excelente para produtividade. Você pode arrastar e soltar seus componentes - não apenas botões, etiquetas e caixas de texto, mas também a caixa de ferramentas completa 'OLE controls' de componentes reutilizáveis, como grades inteligentes, planilhas do Excel ou instâncias do IE. A conexão foi feita nos bastidores - tudo parecia um objeto e você clicou duas vezes nas coisas para adicionar manipuladores de eventos. Isso foi muito mais difícil no Visual C ++. Como membro da equipe de suporte ao desenvolvedor do Visual Studio na época, lembro como as chamadas de suporte do Visual Basic eram principalmente sobre qual componente era melhor usar ou como otimizar seu aplicativo de determinadas maneiras. Quase nunca foi 'como faço para fazer um aplicativo com os recursos da interface do usuário X, Y e Z'.
Criar uma interface do usuário rica no Visual C ++ era um desafio diferente. Embora houvesse suporte do editor Visual para diálogos e formulários SDI / MDI, ele era bastante limitado. O suporte para incorporar controles OLE (ActiveX) no MFC ou Win32 era uma arte negra, embora um pouco mais fácil no ATL. A instalação de coisas simples, como redimensionar eventos ou desenhar pelo proprietário, foi bastante dolorosa, sem falar nos pontos de conexão necessários para eventos personalizados nos componentes.
Sim, o VC ++ tinha velocidade de execução, capacidade de depuração e estruturas / bibliotecas / opções de interface do usuário flexíveis, mas o suporte ao IDE não podia cobrir todo esse terreno; portanto, abordou as operações mais comuns com coisas como Wizards, hierarquias abrangentes de classes MFC e 90 dias / 2 linhas de suporte para incidentes livres.
O IIRC, o empacotador de aplicativo fornecido com o VB pode empacotar seu aplicativo, o tempo de execução do VB e as DLLs de controles comuns mais recentes e fornecer a você um instalador EXE independente que você pode colocar em um CD e chegar aos clientes. Nada disso ', que msvcrtXX.dll e mfcxx.dll você instalou?', Que atormentou os desenvolvedores do MFC.
Portanto, por motivos de time-to-market e rica interface do usuário, o VB obteve muitos seguidores.
Quando o Visual J ++ e o Visual InterDev chegaram ao VS6, ficou claro que o IDE do Visual Basic havia vencido alguma batalha sobre o Visual C ++, o que era justo no IMHO. Não foi surpresa que o Visual Studio .NET tivesse um editor de formulários do tipo VB para a nova linguagem COOL C #.
A nova linguagem semelhante a Java / C / C ++, juntamente com o designer da interface do usuário apreciado pelo pessoal do VB durante todo esse tempo, deu um novo caminho de migração para o pessoal do C ++ que agora fazia o MFC / ATL / Win32. Para as pessoas VB 3/4/5/6 que não gostaram da falta de 100% de compatibilidade com versões anteriores no VB.net, isso ofereceu a oportunidade de aprender um novo idioma em um ambiente familiar.
Os motivos pelos quais o VB era um produto tão abrangente provavelmente têm algo a ver com as origens da Microsoft, sendo o Basic o principal produto para desenvolvedores, mas não tenho citações no momento.
fonte
Por mais feio que qualquer linguagem possa ser, os motivos para segui-la geralmente se resumem a: é muito caro descartar uma enorme base de código e o fato de os desenvolvedores já conhecerem a linguagem torna mais barato o uso do que outras línguas.
fonte
O VB.NET é mais fácil de aprender, você está certo, e é mais fácil do que o C #, na minha opinião. É o primeiro ponto por que o VB é tão popular. Outro, e o maior ponto, eu acho, é que há uma enorme comunidade de desenvolvedores que trabalharam com o VB 6 e versões mais antigas dessa linguagem e é mais fácil para eles desenvolver aplicativos com o VB.net do que aprender um novo idioma.
fonte
Como já foi dito, seu julgamento estético sobre a sintaxe da linguagem depende muito do que você sabia antes. Por mais de uma década, parece ter sido um concurso semelhante a C, com chaves para "blocos", "->" para indireto (perl, php), parênteses para argumentos de chamada de função, // para comentários e um ponto e vírgula em cada extremidade da linha. Algumas pessoas até pensaram que, graças a essa "pensée única", se você conhece um idioma, conhece todos eles, o que é realmente ridículo. Mas isso instilou a idéia entre as pessoas de C ++ / Java, que é a única estética de sintaxe correta e qualquer outra coisa está tentando clonar COBOL.
Alguns anos atrás, mudei para ruby, e agora python, e não suporto mais pontos e vírgulas feias, chaves e outros caracteres sem sentido de lixo. O código fonte é para ser lido por humanos. Quando tentei o visual studio, escolhi VB em vez de c #. Eu suspeito que alguns programadores escolheram o C # apenas para "parecer sério" com sua sintaxe semelhante a java, mas vamos lá, os mesmos recursos estão lá ... dê um descanso aos seus olhos.
fonte
Bem, se você está falando sobre .NET, há uma realmente fácil que eu consigo pensar:
O editor do VB.NET no Visual Studio é muito melhor para capturar erros de sintaxe do que os c #.
Enquanto o editor do C # obteve uma grande melhoria no VS2008 SP1, ainda existem alguns erros de sintaxe que o editor não repara até que você tente compilar o programa.
fonte
Grande parte da popularidade do VB se originou em uma época em que as ferramentas do VB eram muito mais amigáveis do que outros idiomas disponíveis. O VB "clássico" ofereceu uma maneira fácil de criar aplicativos Windows sem ter que aprender a essência da API do Win32 ou se preocupar com o gerenciamento manual de memória. A barreira de entrada para programadores iniciantes era muito menor com o VB do que com o C ++, então muitas pessoas cortaram os dentes com o VB.
Atualmente, acho que uma vantagem do VB sobre o C # é a familiaridade para quem trabalhou com o VB ao longo dos anos. Outra vantagem é que o código VB é fácil de ler devido à tendência de usar palavras-chave em vez de símbolos de pontuação. Como alguém que trabalha em VB, Java, C, C # e Python, acho que o VB é a linguagem mais fácil para voltar ao revisar o código que escrevi anos atrás. A sintaxe é mais detalhada, o que geralmente facilita a leitura de código, e o Visual Studio sempre fez um ótimo trabalho de formatação do código VB para limpar a formatação enquanto você digita, para que o código seja formatado de forma consistente (independentemente da negligência do autor).
Como uma observação lateral, considero extremamente fácil ler e revisar o Python por razões semelhantes. No Python, a formatação do código é aplicada pelo intérprete, e não pelo IDE, mas o resultado final é o mesmo. O Python também favorece as palavras-chave à pontuação, embora seja indiscutivelmente menor que o VB.
fonte
Seria difícil argumentar que é mais ou menos "propenso a erros" do que qualquer outro idioma. Também duvido que o assunto seja "grande maioria da web comercial do MS"; pelo que vi, o C # está de longe assumindo a liderança no desenvolvimento do .NET (com o .NET sendo a principal ferramenta na pilha do MS para coisas que não são drivers de dispositivo etc.).
fonte
Uma vantagem que o VB.NET possui sobre o C # (que desaparecerá com o C # 4) é os parâmetros padrão e nomeados, uma coisa muito agradável de se ter ao usar o VSTO.
fonte
VB / VB.NET pertence à categoria RAD (Rapid Application Development). Você pode desenvolver aplicativos com apenas controles de arrastar e soltar da caixa de ferramentas e menos código.
fonte
Bem, acho que você precisa diferenciar entre VB clássico e VB.NET.
Eu sinto que o VB.NET não é muito popular, mas o Visual Basic "Classic" ainda é1. O motivo é que é MUITO fácil criar um aplicativo do Windows. Compare isso com um aplicativo do Windows em C ++ / Mfc, que era quase a única alternativa no momento.
Pela mesma razão, Delphi era muito popular uma vez.
fonte
O VB é muito detalhado e fácil de se acostumar em comparação com o C #, que diferencia maiúsculas de minúsculas. Para um programador iniciante, é o melhor ponto de partida.
fonte
Para nomear alguns:
fonte
Eu acho que parte do motivo é porque os programadores asp antigos que entram no .NET, como eu já conheci, já estão muito familiarizados com o VB porque o script VB é a linguagem que o ASP clássico é usado na maior parte do tempo. Eu senti menos tempo escrevendo VB no .NET porque eu já sabia falar VB. O VB também é menos chorão que o C #. Posso ler / escrever em ambos, mas prefiro o VB porque é fácil fazer amizade se você é um novo programador.
fonte
Eu trabalho em um ambiente onde usamos os dois. Mudamos para C # em favor do ASP e VB clássicos. Na minha opinião, não existem acordos entre os idiomas. Para a maioria dos projetos, você pode fazer o mesmo trabalho com os dois idiomas. Agora, compartilho sua opinião sobre propensão a erros e também acho o VB desorganizado (sem motivo).
Como outros já mencionaram, o VB é muito simples e, historicamente, você pode criar projetos muito rapidamente. Isso viveu no desenvolvimento da Web (que é desenvolvido rapidamente), mas acho que quando as pessoas percebem que o C # é tão rápido quanto o VB desaparecerá. Outro motivo pelo qual eu acho que vai desaparecer é que tudo o que você codifica (CSS, JavaScript) ao fazer aplicativos da Web parecer mais com C # que com VB, então faz sentido usar C #, mesmo para iniciantes.
fonte
Pessoalmente, gosto da maneira como os eventos são anexados no vb.net com a palavra-chave 'handle' ... O IDE / Visual Studio / também é mais responsivo ao lidar com o VB e manipula automaticamente a maioria dos end-ifs e similares ... C # é obviamente muito mais consenso e limpo (IMHO, eu trabalhei com os dois bastante)
fonte
Na estrutura 4.0, existem apenas algumas pequenas coisas que o VB carece em comparação com o C #, e o inverso também é verdadeiro. Nomeadamente:
Yield
palavra - chave, mas em breve estará disponível no VB.NET com a nova estrutura assíncrona.unsafe
palavra-chave. Eu nunca achei necessário, mas certamente existem algumas pessoas que sim.Dim s = <s>My string... multiple lines...</s>.Value
. Não é bonito, mas se você não é exigente e realmente deseja strings de várias linhas, ele funciona. E você pode fazer uma interpolação de strings usando a<%= myVar %>
sintaxe, o que é bom.dynamic
. Variáveis dinâmicas existem no VB há muito tempoOption Compare Off
, mas esse escopo é de arquivo, portanto não é tão bom quantodynamic
porquedynamic
limita o escopo apenas à variável declarada dessa maneira.Function(x)
ouSub(x)
.Alguns recursos que o VB.NET possui que o C # não:
Select
cláusula frequentemente desnecessária pode ser omitida das consultas do Linq.Nothing
palavra-chave é muito mais útil do quenull
em que tudo (mesmo tipos de valor) pode ser definidoNothing
e você obtém o padrão. Não há necessidade dadefault
palavra - chave.Minha loja faz MVC3 com o Razor usando VB.NET e, uma vez que você supera os preconceitos (na maioria infundados), é realmente uma linguagem muito agradável de se usar. Não é realmente mais detalhado do que o C # como muitos afirmam (exceto no caso de lambdas), e é praticamente paralelo recurso a recurso com C #. Descobri que a maioria das pessoas que odeiam não codifica o VB.NET moderno há muito tempo.
fonte
AndAlso
[não obstante, quando falados, é mais curto que o "e comercial duplo"], mas ignoram o fato de que umIf-Then/Else/EndIf
leva três linhas mais as instruções controladas, enquanto o equivalente em C # levaria pelo menos quatro e possivelmente seis, dependendo das convenções de chaves, a menos que alguém escreva} else {
como uma única linha.