C# OU VB.NET

WILTONVB 15/12/2012 12:30:08
#416001
comecei estudar logica com php, mas pretendo optar por uma das duas linguagens abaixo....

Qual vale mais apena investir ?

C# ou VB.net
[txt-size=2] [/txt-size]
ALEXMARCHI 15/12/2012 13:41:38
#416002
Resposta escolhida
Eu trabalho com desenvolvimento a 21 anos e com VB desde 1993 comecei na versão 3.0 e sempre disse que tão cedo não sairia desta linguagem

a 1 mês atrás eu recebi uma proposta para desenvolver em c# e o R$ é MUITO mas MUITO BOM

até agora eu não estou tendo nenhuma dificuldade, melhor falando para mim tanto faz VB.NET ou C#

O Diferencial, é que só esta semana eu vi que o R$ de quem program em C# é quase sempre maior de quem programa em VB.NET
PROFESSOR 16/12/2012 04:20:12
#416032
ALEXMARCHI:
Aproveitando, ainda que atrasado, PARABéNS!

WILTONVB:
Na prática não há nenhuma diferença entre o Visual Basic.Net e o C#, pois ambas as linguagens são apenas máscaras para o MSIL.
Ou seja, se seu aplicativo for feito em VB e outro em C#, desde que cumpram o mesmo pelos mesmos meios, o resultado é um executável idêntico, sem tirar nem pôr.

O C# tem uma sintaxe mais próxima à do Java, se comparado ao Visual Basic. Com isso, é mais fácil de ser assimilado por quem venha dessa linguagem.

Já o VB tem uma estrutura sintática bem mais didática, o que o torna praticamente imbatível no quesito de [Ô]compreenção da lógica[Ô], tanto que a Microsoft criou diversos dialetos Basic (o último chama-se Small Basic e pode ser baixado/visualizado na própria Microsoft) voltados ao aprendizado, ao ensino da lógica de programação.

Pessoalmente, eu gosto de todos os dialetos da linguagem Basic, foi num deles que em 1984 eu comecei nessa área. Visual Basic ? Sim, desde a época do DOS, Visual Basic 1.0, com a mesma [Ô]cara[Ô] do Edit do DOS. Só o Clipper me desviou a atenção por algum tempo, ainda assim, por cinco anos apenas, de 1987 á 1992.

Agora, veja por você mesmo, pois cada um de nós pode se identificar mais ou menos com as linguagens.

Comparativamente, para ajudar a sua [Ô]balança[Ô], veja esses dois trechos:


Private Enum Enumeração
um
dois
três
nenhum
End Enum

Private Sub teste()
Dim o As Enumeração = Enumeração.nenhum
Select Case o
Case Enumeração.dois : MsgBox([Ô]Dois[Ô])
Case Enumeração.nenhum : MsgBox([Ô]Nenhum[Ô])
Case Enumeração.três : MsgBox([Ô]Três[Ô])
Case Enumeração.um : MsgBox([Ô]Um[Ô])
End Select
End Sub


Agora em C#:

private enum Enumeração
{
um,
dois,
três,
nenhum
}

private void teste()
{
Enumeração o = Enumeração.nenhum;
switch (o) {
case Enumeração.dois:
Interaction.MsgBox([Ô]Dois[Ô]);
break;
case Enumeração.nenhum:
Interaction.MsgBox([Ô]Nenhum[Ô]);
break;
case Enumeração.três:
Interaction.MsgBox([Ô]Três[Ô]);
break;
case Enumeração.um:
Interaction.MsgBox([Ô]Um[Ô]);
break;
}
}


Como você pode reparar, ambos fazem exatamente a mesma coisa, da mesma forma.
Só que no código em VB, é visível que eu escrevi menos, e é fácil ainda assim, identificar a lógica, mesmo sem haver comentários.
E no código em C# ? Bem, parece que o que não falta é break, ponto-e-vírgula para informar que a linha acabou e chaves saltando para todos os lados. Por essa razão os dialetos Basic são preferíveis na didática.
Portanto, a escolha lógica seria o VB.

Mas não é bem assim.

Como disse o ALEXMARCHI, há uma diferença na remuneração profissional, e que não é tão pequena.
Além disso, a Microsoft adotou a parelha HTML5 / Javascript como uma das bases para o desenvolvimento de aplicativos Windows (winRT), o que torna o C# o candidato [Ô]mais familiar[Ô]. A outra base é a parelha WPF / qualquer linguagem da .Net.
E um terceiro ponto, é que hoje em dia há mais material sobre C# do que sobre VB.Net.

No momento da sua escolha, você deve pesar o curto prazo (há um mercado imediato onde estou? terei dificuldade em encontrar suporte? conseguirei satisfazer minhas necessidades financeiras?) e o longo prazo (será mais fácil lembrar de qual lógica, daqui há alguns anos, quando precisar prestar manutenção? qual linguagem tem historicamente mais [Ô]tempo de vida[Ô]? se eu precisar explicar os códigos que fiz, qual linguagem tornará a tarefa mais rápida?).

Ou seja, você postou uma pequena dúvida, e eu tive o prazer de deixá-la bem mais complexa.
Mas é um assunto que você mesmo deve decidir.
AJSO 16/12/2012 17:05:26
#416040
Caro WILTONVB

Trabalho com programação desde meninio com o Antigo BASIC(1986 faz tempo.....)

Utilizo algumas linguagens dentre elas o C# e o VB.Net..........

A primeira linguagem que utilizeI foi o VB (2.0, 3.0, 4.0 16bitis e depois 32bits, 5.0, 6.0) em se tratando de comparações atualmente VB.Net e C#......................

Comparar só pela quantidade linhas de códigos digitados não uma métrica para definição entre elas tem outros fatores mais importantes qua as define.

VB.Net traz uma sintaxe do antigo VB...............
C# traz a sintaxe do C/C++ e algumas pequenas semelhanças do JAVA...........

No contexto geral se escreve menos linhas em C# do que no VB.NET (Tratando-se de um sistema médio até complexo ERP, CRM, CMS, e-commerce, B2B, B2C, etc....)

como foi comparado....................

VB.Net
Citação:

Private Enum Enumeração
um
dois
três
nenhum
End Enum

Private Sub teste()
Dim o As Enumeração = Enumeração.nenhum
Select Case o
Case Enumeração.dois : MsgBox([Ô]Dois[Ô])
Case Enumeração.nenhum : MsgBox([Ô]Nenhum[Ô])
Case Enumeração.três : MsgBox([Ô]Três[Ô])
Case Enumeração.um : MsgBox([Ô]Um[Ô])
End Select
End Sub



C#
Citação:

private enum Enumeração
{
um,
dois,
três,
nenhum
}

private void teste()
{
Enumeração o = Enumeração.nenhum;
switch (o) {
case Enumeração.dois:
Interaction.MsgBox([Ô]Dois[Ô]);
break;
case Enumeração.nenhum:
Interaction.MsgBox([Ô]Nenhum[Ô]);
break;
case Enumeração.três:
Interaction.MsgBox([Ô]Três[Ô]);
break;
case Enumeração.um:
Interaction.MsgBox([Ô]Um[Ô]);
break;
}
}




OLHE ESSA OUTRA COMPARAÇÃO ENTRE VB.NET E C# ..................................FAZEM EXATAMENTE A MESMA COISA

VOU PUXAR A SARDINHA UM POUCO PARA O C#.......... MAS NADA CONTRA........................

Tenho isso em uma mesma aplicação em VB.Net e C# (Meu produto ERP.Net)

VB.NET
Citação:



Private str_intIDBaseGeneral As Integer

Public Property intIDBaseGeneral() As Integer
Get
Return str_intIDBaseGeneral
End Get
Set
str_intIDBaseGeneral = Value
End Set
End Property



C#
Citação:

public int intIDBaseGeneral { get; set; }



Olhou a diferênça de quantidade de código e linhas...................
===================================================================================================

APRENDA OU ESTUDE SOBRE CONCEITOS NA PROGRAMAÇÃO POIS é O MAIS IMPORTANTE..................

CAMADAS, ENTIDADES, RELACIONAMENTO, MODELAGEM TANTO PARA INTERFACE QUANTO PARA DADOS..............
MELHORES PRATICAS..............
CONCEITOS DE METRICAS PARA ENTENDER O NEGÓCIO DO SISTEMA QUE IRÁ DESENVOLVER OU DAR MANUTENÇÃO.......

EXEMPLO SE FOR OBTER CERTIFICAÇÃO EM LINGUAGEM MCP, MVP......... ENTRE OUTRAS.........

[Ô]TODAS AS PROVAS E MATERIAL SERÁ APLICADO APENAS EM C#[Ô]

CERTIFICAÇÃO PARA BANCO DE DADOS EM SQL..............

MINHA DICA SE FOR POSSIVEL APRENDA AS DUAS LINGUAGENS TANTO VB.NET QUANTO C#.........................

QUANTO C# OU VB.NET SÓ EXECELENTES FERRAMENTAS NO PACOTE VISUAL STUDIO..........................(WINDOWS FORM OU WEB)

QUANTO A REMUNERAÇÃO VB.NET E C# CONTRATOS DE TRABALHO, PROJETOS SEMPRE DE FORMA IGUALMENTE O MESMO VALOR/HORA PARA VB.NET E C#

O DIFERENCIAL ESTA NA SUA QUALIFICAÇÃO DA LINGUAGEM VB.NET OU C#................

(GRAU DE FORMAÇÃO, GRAU DE CONHECIMENTO, TEMPO DE TRABALHO, EXPERIÊNCIA PROFISSIONAL E ACADÊMICA).................

PROFISSIONAL TRAINEE = GANHA POUCO
PROFISSIONAL JUNIOR = GANHA RASOÁVEL
PROFISSIONAL PLENO = GANHA COMUM AO MERCADO.
PROFISSIONAL SENIOR = ESSE GANHA O QUE PEDE......... ESSE é O CARA DA EMPRESA........ TRABALHO COM PRAZOS..... RESOLVE TODOS OS PROBLEMAS........


TRABALHO HOJE CONVERTENDO APLICATIVOS DESENVOLVIDOS EM VB, VB.NET PARA C# E C# PARA VB.NET..........

DENTRO DO PACOTE VISUAL STUDIO TEM AINDA C++, J#, F#, ASPX, AJAX QUE VALE APENAS ENTENDER POIS VAI UTILIZAR..............

Boa Sorte
OCELOT 16/12/2012 17:38:40
#416041
AJSO, na verdade VB.Net também tem propriedades auto implementadas

Dado o exemplo em C#
public int intIDBaseGeneral { get; set; }

Em VB.Net o equivalente seria
Public Property intDBaseGeneral As Integer


E na verdade a versão para VB.Net ainda possui uma vantagem, é possível dar um valor padrão para a propriedade diretamente na declaração dela, em C# só usando o construtor da classe para adicionar um valor a propriedade
Public Property MenosUm As Integer = -1


Agora a vantagem da versão do C# é de se poder dar acessos diferentes para o Get e o Set, digamos que você queira poder mudar um valor apenas dentro da classe mas quer que ele possa ser lido fora dela, então no C# você pode fazer
public int Valor {get; private set;}
AJSO 16/12/2012 19:30:37
#416042
Caro OCELOT

Citação:

Dado o exemplo em C#
public int intIDBaseGeneral { get; set; }


Em VB.Net o equivalente seria
Public Property intDBaseGeneral As Integer



Quer dizer que posso passar uma varialvel e depois recuperar como é feito no GET SET...........
Quer dizer que isso Public Property intDBaseGeneral As Integer é o GET SET.....................

No VB.Net
[txt-color=#e80000]As Auto-Implemented Properties são uma forma simples e rápida de definir uma propriedade, sem a utilização de GET e SET. Esta opção está disponível a partir da versão 2010 do Visual Studio. [/txt-color]

Acho que esta confundido ou tendo um equivoco de conceito................

Citação:

Mas não quero confundir o colega WILTONVB



Existe sim uma semelhança mas não o conceito GET SET

===============================================================================================================================
Vb.Net
No entanto deve-se sempre usar o método como descrevi, caso seja necessário adicionar código nos métodos GET e SET, caso seja um propriedade WriteOnly ou ReadOnly, etc.

Quando é definida uma auto-implemented property, é criado internamente (não visível) um backing field, ou seja, se a propriedade for designada como “intDBaseGeneral”, será criada uma variável “_intDBaseGeneral ”. Isto quer dizer, que se tentarmos criar uma variável com o mesmo nome, iremos ter o seguinte erro:

[txt-color=#e80000] variable [ô]_intDBaseGeneral[ô] conflicts with a member implicitly declared for property [ô]intDBaseGeneral[ô] in class [ô]ajsoFrmPort[ô]. [/txt-color]

===============================================================================================================================

Tem muito material fazendo comparações entre VB.NET e C# e trata isso como igualdade, sendo que na verdade não existe igualdade mas alguma semelhança....

Compare
VB.NET Properties C#

[ô]Auto-implemented properties are new to VB10 // Auto-implemented properties
Public Property Nome As String | | public string Nome { get; set; }



Esse tipo de equivoco pode confundir o colega que esta definindo uma linguagem para aprendeer ou escolher...............

[txt-size=1][txt-color=#e80000] CONCEITO GET SET [/txt-color][/txt-size]



Como descrevi na comparação posso fazer exatamente o mesmo tratamento e manipular igualmente a Property intIDBaseGeneral em VB.Net e C#..................
Nos dois casos posso manipular em um Classe ou Form e retornar para a mesma variável intIDBaseGeneral VB.Net e C#


VB.NET
Private int_intIDBaseGeneral As Integer

Public Property intIDBaseGeneral() As Integer
Get
Return int_intIDBaseGeneral
End Get
Set
int_intIDBaseGeneral = Value
End Set
End Property

C#
public int intIDBaseGeneral { get; set; }

Olhe isso e visualiza se ficou claro para definir o conceito (GET SET) se é ou não mais fácil o menos código VB.Net para escrever em C#

=========================================================================
VB.Net [ô] Read-only property

Private mID As Integer
Public ReadOnly Property ID() As Integer
Get
Return mID
End Get
End Property

C# // Read-only property

public int ID { get; }

=======================================
Boa Sorte
OCELOT 16/12/2012 21:58:41
#416051
Continuo dizendo, propriedades automáticas do tipo

Public Property intIDBaseGeneral as Integer

Geram o Get e o Set da mesma forma que o C# faz com

public int intIDBaseGeneral {get; set;}

Se não acredita compile um programa em VB e um em C# e compare o IL gerado pelos dois usando o ILSpy, mas detalhe que você tem que comparar o IL, se você descompilar para C# o ILSpy detecta que ela é uma auto propriedade e gera o mesmo código acima para o C#, enquanto do VB ele não detecta e gera o código completo de acesso, mas no IL não tem diferença nenhuma.

Outra coisa interessante é que se você compilar em C# uma auto propriedade e mandar descompilar para VB pelo ILSpy ele vai mostrar a auto propriedade, me parece que tem uma pequena diferença na declaração do método no IL, que no C# inclui um hidebysig e no VB não, e o nome do parâmetro no Set no C# é value e no VB é AutoPropertyValue.

As diferenças que existem entre as duas linguagens foi o que eu disse, C# permite Get e Set com modificadores de acesso diferente, VB.Net não permite isso, mas no VB.Net se pode definir um valor padrão, o que não é possível no C# diretamente na declaração da propriedade, o que eu não sabia apenas era que o C# suportava isso desde o VS.Net 2008 enquanto o VB.Net só entrou esse recurso no 2010
AJSO 17/12/2012 13:52:01
#416075
Caro OCELOT


Caro WILTONVB Desconciderar isso é um erro grave de conceito..................................................
Citação:


Public Property intIDBaseGeneral as Integer

Geram o Get e o Set da mesma forma que o C# faz com

public int intIDBaseGeneral {get; set;}





Por um acaso você LEU.................


[txt-size=1]CONCEITO GET SET [/txt-size]


Citação:


=========================================================================
VB.Net [ô] Read-only property

Private mID As Integer
Public ReadOnly Property ID() As Integer
Get
Return mID
End Get
End Property

C# // Read-only property

public int ID { get; }

=======================================




[txt-color=#0000f0]ESTOU FALANDO DE GET SET NO VB.NET E GET SET NO C# [/txt-color]


Existe estes processos para Property e uma documentação vasta para estudo......................
GET SET
Resumidamente isso
(Read / Write)
(Read only)
(Write only)
(Indexer)
GET SET para VB.Net
GET SET para C#

[Ô]São formas destintas de escrever...............[Ô]
Não caia nessa forma de simplificar CÓDIGOS. Aprenda o conceito que será muito útil...... para utilizar na forma de escrever seus códigos............




Citação:

Se não acredita compile um programa em VB e um em C# e compare o IL gerado pelos dois usando o ILSpy, mas detalhe que você tem que comparar o IL, se você descompilar para C# o ILSpy detecta que ela é uma auto propriedade e gera o mesmo código acima para o C#, enquanto do VB ele não detecta e gera o código completo de acesso, mas no IL não tem diferença nenhuma.



Você já tentou fazer uma certificação utilizando essa teoria..................

[txt-size=1]CONCEITO GET SET !!!!!!!!!! C# VB.Net [/txt-size]


Consegui a minha certificação utilizando esta TEORIA que estudei nos MOC[ô]s da microsoft

Se acredita nisso faça um teste e verifique a [txt-color=#0000f0]IGUALDADE [/txt-color] entre GET SET em C# e GET SET em VB.Net

[txt-color=#e80000] Você está confundindo o colega que esta começando ele precisa de orientação de conceitos das duas linguagens....[/txt-color]


Na maioria das aplicações feita em VB.Net existe inumeros problemas quanto a criação e formatação dos códigos

Não seguem padrões
Não são feitos em camadas
Erros de redundância.
Falta de conceito.

Por conta desse problema de equivocos sobre o conceito da ferramenta.................


Citação:


As diferenças que existem entre as duas linguagens foi o que eu disse, C# permite Get e Set com modificadores de acesso diferente, VB.Net não permite isso, mas no VB.Net se pode definir um valor padrão, o que não é possível no C# diretamente na declaração da propriedade, o que eu não sabia apenas era que o C# suportava isso desde o VS.Net 2008 enquanto o VB.Net só entrou esse recurso no 2010



EM C# RECUPERO O VAOR EM UMA MASSA DE DADOS,A FAÇOA ALTERÇÃO E RETORNO PARA GRAVAÇÃO.............. public int intIDBaseGeneral {get; set;}

EM VB.NET SEM FAZER GET SET NÃO é POSSIVEL ISSO............. Public Property intDBaseGeneral As Integer

Talves não seja o caso de confundir mais sobre o assunto............................


NÃO CONFUNDA A CABEÇA DE QUEM ESTA COMEÇANDO.........................................

EXISTE UM CONCEITO VB.NET E UM C#



O post é do colega WILTONVB............... E ELE PRECISA DE ORIENTAÇÃO E NÃO AS PRATICAS PARTICULARES DE CADA PROFISSIONAL.........


HA PESSOAS QUE SÓ PROGRAMAM E VB.NET
HA PESSOAS QUE PROGRAMAM EM C#

OUTRA SE FAZ A UTILIZAÇÃO DE AMBAS C# E VB.NET................


BOA SORTE

PROFESSOR 17/12/2012 14:17:57
#416082
Hehehehehe!

Caramba, pessoal, não sei, mas acredito que o WILTONVB já se decidiu e está partindo para o Java !!!!

Muito boa a troca de argumentos. Mas acabou fugindo totalmente ao objetivo.

De fato, devo concordar que o conceito Get/Set ainda difere razoavelmente entre o C# e o VB.Net, e nisso, o C# leva vantagem. Como eu citei, os dialetos Basic são historicamente mais [Ô]didáticos[Ô], ou seja, sua sintaxe facilita a compreenão, e isso, basicamente, por se aproximar mais da sintaxe humana.
Mas volto a insistir: Tudo é apenas uma questão de gosto pessoal, de facilidade de assimilação e uso. No fim, ambas são [Ô]transformadas[Ô] em outra coisa, da mesma forma.

E ainda, espero que aceitem, ambos, minhas desculpas por ter iniciado essa [Ô]queda de braço[Ô], não foi intencional, de forma alguma!
USUARIO.EXCLUIDOS 17/12/2012 14:54:11
#416083
Olá pessoal, eu não programo em vb desde a época do [Ô]DOS[Ô], como mencionado, muito pelo contrário, meu TCC fiz em Delphi6,
tive muitas dificuldades como a sintaxe da linguagem, depois que começei a usar o vb6 eu, particularmente, achei mais simples
a codificação e não pretendo mudar, alias agora estou partindo para WPF/Vb, pois a curva de aprendizado é muito grande, mas em
contrapartida ele oferece ao programador coisa que no WinForm seriam um pouco mais complicada, como por exemplo, projetos em 3D, na qual trabalho hoje
em dia na empresa. é como disse o PROFESSOR, quem tem que avaliar qual linguagem usar agora é o WILTONVB, pois as opiniões se dividem e muitos ,
assim como o professor, eu não pretendo sair do Vb.Net.
AJSO 17/12/2012 16:51:30
#416091
Caro PROFESSOR

Concordo e não estou querendo de forma alguma BRIGA ou IMPOSIÇÃO da palavra..........

Não sei se o colega OCELOT utiliza somente o VB.Net ou o C# ou ambos.................

ME REFERI AO RECURSO QUE é USADO NO VB.NET E UTILIZADO IGUALEMTNE NO C# (GET SET)...............................

TEM OUTROS RECURSOS COM MENOS CÓDIGO EM VB.NET QUANTO C#.................

Aprender VB.Net talves seja mais intuitivo para iniciantes e isso talves seja o erro..................

O maior problema que tive com o VB foi quando eu copiava código e não aprendia de fato.

Quando passei a estudar (a curva de conhecimento é lenta, pois terá que absorver) realmente comecei a aprender de fato.

Utilizar o mesmo conceito dentro do VB.Net e C# hoje é facil...................................

O Colega Macoratti tem um código simples feito em VB.Net e em C# utilizando os mesmos recursos para comparação e são semelhantes

http://www.macoratti.net/12/12/vbn_dpt1.htm

Existem semelhanças nas declarações de recursos internnos e externos......
Existem semelhanças na disposição e chamadas nos botões
Existe uma diferença inclusive na geração do tamanho do executável

Trabalho iigualemtne com VB.Net e C# tanto para Winform, Web e Mobile...............

Ajuda a entender um pouquinho os recursos feito em C# e VB.Net



Boa Sorte
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas