• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Sir Pereira

Compensa mudar de VB.NET para C#.NET?

Compensa mudar de VB.NET para C#.NET?   16 membros votaram

  1. 1. Compensa mudar de VB.NET para C#.NET?

    • Sim
      12
    • Não
      4

Please inicie sessão ou registe-se para votar.

56 mensagens neste tópico

Queria que me dissessem as vossas opiniões sinceras, daqueles que fizeram a mudança, que estão a pensar mudar, o porquê de mudar, não é muito difícil a mudança?, etc.

Agradeço :D

Abraço,

Ivo Pereira :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depende.

VB é dinamica C# é estático. Portanto uma é melhor para umas coisas a outra para outras...

Pessoalmente prefiro C#, gosto mais da sintaxe, acho a mais limpa, mas ai está são gostos. E também prefiro linguagens tipadas estaticamente, o que aumenta mais a predilecção pelo C#.

Raro sãos os casos que me realmente é vantajoso usar um sistema de tipagem dinâmico.

Se é difícil a mudança? Na minha opinião não. Normalmente o maior custo (refiro à aprendizagem) é gasto pela toda estrutura do .NET. Ora como ambas linguagens usam a mesma estrutura, se sabes fazer algo em VB sabes em C# e vice-versa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o C# é a linguagem dos profissionais (foi só para vir meter veneno  :))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o C# é a linguagem dos profissionais (foi só para vir meter veneno  :D)

:mad:  :)

Queres mudar para C#? Se quiseres levar mais tempo a fazer uma aplicação e teres o mesmo resultado, então aconselho-te!  :biggrin:

É mais usada por isso tem mais saída, mas consegues o mesmo resultado. O que acho é que se ficares pelo vb.net dever sempre aprender um pouco de c# porque no geral existem mais exemplos na net.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

VB é dinamica C# é estático.

A que te referes ao concreto quando referes que é dinâmico e estático? Qual a diferença?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A que te referes ao concreto quando referes que é dinâmico e estático? Qual a diferença?

Presumi que pelo post dava para entender que referia-me ao sistema de tipos. Se a dúvida é em relação ao sistema de tipos então parece ser um bom sitio para começar. Se depois ainda tiveres alguma dúvida.

Queres mudar para C#? Se quiseres levar mais tempo a fazer uma aplicação e teres o mesmo resultado, então aconselho-te!  :biggrin:

É mais usada por isso tem mais saída, mas consegues o mesmo resultado. O que acho é que se ficares pelo vb.net dever sempre aprender um pouco de c# porque no geral existem mais exemplos na net.

Discordo.

Primeiro VB é mais usada do que o C#.

E depois em que é que te baseias que desenvolver em VB é mais rápido que C#. Na minha opinião o tempo é basicamente o mesmo. E o tempo gasto é mais relacionado com o conhecimento que o programador tem do .NET do que propriamente da linguagem, como já tinha dito antes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Presumi que pelo post dava para entender que referia-me ao sistema de tipos. Se a dúvida é em relação ao sistema de tipos então parece ser um bom sitio para começar. Se depois ainda tiveres alguma dúvida.

Esclareceu. Não sabia mesmo ao que te referias, porque não tinha conhecimento disso. Obrigado pelo link.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Primeiro VB é mais usada do que o C#.

Mais usado por quem? a nível profissional?

tenho uma ideia completamente oposta que só a consigo fundamentar talvez pelas propostas de emprego

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mais usado por quem? a nível profissional?

tenho uma ideia completamente oposta que só a consigo fundamentar talvez pelas propostas de emprego

Realmente tenho de concordar contigo.

Penso que VisualBasic.NET é muito mais usado a nível profissional. O meu professor de Técnicas Multimédia pode comprová-lo pois é um "ás" a VB.NET, tem grandes trabalhos que vende nacionalmente, incluindo software para rádios, para TV's, entre outros projectos.

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E depois em que é que te baseias que desenvolver em VB é mais rápido que C#. Na minha opinião o tempo é basicamente o mesmo. E o tempo gasto é mais relacionado com o conhecimento que o programador tem do .NET do que propriamente da linguagem, como já tinha dito antes.

Porque diversos motivos, e como já disseste, por ser uma linguagem e dinâmica e não estática. E tens vários exemplos, a começar pela declaração de variáveis com Case Sensitive, atribuição de handles, My namespace que está disponível no vb que contempla inumeras funções que em C# tens de construir, etc.

Mais alguns exemplos no desenvolvimento (que encontrei num blog):

VB

Dim client as New SmtpClient()

C#

SmtpClient client = new SmtpClient();

VB

If someCondition Then   

  DoSomething()

End If

C#

if (someCondition)

{

    DoSomething();

}

Mais usado por quem? a nível profissional?

tenho uma ideia completamente oposta que só a consigo fundamentar talvez pelas propostas de emprego

Também tenho esta ideia ... infelizmente :)

BASIC - Beginners' All-purpose Symbolic Instruction Code

Está tudo dito :D

Isso é uma definição que tem 500 anos.

Também a VW quer dizer "Carro do Povo" e é das marcas mais conceituadas e caras no mercado (media gama)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Realmente tenho de concordar contigo.

Penso que VisualBasic.NET é muito mais usado a nível profissional.

então não concordas comigo... a nível profissional internacional C# é muiiiito mais usado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque diversos motivos, e como já disseste, por ser uma linguagem e dinâmica e não estática. E tens vários exemplos, a começar pela declaração de variáveis com Case Sensitive, atribuição de handles, My namespace que está disponível no vb que contempla inumeras funções que em C# tens de construir, etc.

C# também é case sensitive. Não sei o que queres dizer com atribuição de handles. Podes dar um exemplo do My namespace que não é contemplado no C#?

Mais alguns exemplos no desenvolvimento (que encontrei num blog):

VB

Dim client as New SmtpClient()

C#

SmtpClient client = new SmtpClient();

Não sei como é que isso faz-te ocupar mais tempo. Presumindo que usas o VS, no momento em C# que começas a escrever new, o auto-complet entra em acção. Ou seja, basicamente só precisas de escrever o SmtpClient uma vez, se é a isso que referes. Mais, em C# podes fazer perfeitamente:

var client = new SmtpClient();

fazendo que em relação ao VB só tenhas que escrever mais o ;

Penso que a diferença aqui seja irrelevante.

Em relação aos if não percebi, onde está a diferença de tempos de desenvolvimento?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esclareceu. Não sabia mesmo ao que te referias, porque não tinha conhecimento disso. Obrigado pelo link.

Fixe, podes sempre ler este artigo. Muito bom e fala bastante de sistema de tipos. Este artigo é normalmente sempre indicado quando começa uma discussão entre os diferentes sistemas.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lá vamos nós a mais uma guerra e chegar à conclusão que ambas são a mesma coisa embora com um aspecto diferente.

Penso que para o Sir Pereira ficar melhor esclarecido era conseguirmos perceber o que o mercado está a pedir, ou seja, qual das duas é que é mais usada no mercado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

C# também é case sensitive. Não sei o que queres dizer com atribuição de handles. Podes dar um exemplo do My namespace que não é contemplado no C#?

Vb.net não é case sensitive, essa é a diferença. Os handler quero dizer, por exemplo, como atribuis um novo handler a um objecto que não seja o default ? No vb se tenho seleccionado o Click, pode escolher na combobox dos metodos outro evento qualquer sem ir ao objecto - properties - events.

      My Namespace:

        My.Application.Info ' Diversas informações da aplicação como versão, descrição, etc, etc
        My.Computer.Network.DownloadFile(url, destino)
        My.Computer.Audio.Play(localização)
        My.Forms.Form1.Text = "Acesso a qualquer form directamente"
        My.Settings("abc") = "Guardar definições em xml"
        My.User.IsAuthenticated ' Verifica se o utilizador está autenticado

        ... entre muitas outras opções do My namespace

Em relação aos if não percebi, onde está a diferença de tempos de desenvolvimento?

Não me digas que não perdes mais tempo a colocar "(" condição ")" as "{" os ";" etc ? É só fazeres uma pesquisa e vês vários artigos.

Mas há muito mais exemplos ... como fazes em C#, por exemplo, para capturar uma exception não contemplada em TODO o programa ? Como detectas alterações na rede ?

Namespace My

    Partial Friend Class MyApplication

        Private Sub MyApplication_NetworkAvailabilityChanged(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.Devices.NetworkAvailableEventArgs) Handles Me.NetworkAvailabilityChanged
            ' Alteração do estado da rede
            If Not e.IsNetworkAvailable Then
                Stop
            End If
        End Sub

        Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
            ' Exception não contemplada por um Try Catch
        End Sub

    End Class

End Namespace

Por exemplo como inicias um form, fecha-o e começas outro ? Em vb.net é só seleccionar uma opção. Como impedes uma aplicação de iniciar várias instãncias ? Em vb.net é só seleccionar uma opção.

Atenção: Não estou a dizer com isto que o VB.NET é melhor ou pior, até porque são muito semelhantes, apenas que o tempo de desenvolvimento é menor que o C#

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não me digas que não perdes mais tempo a colocar "(" condição ")" as "{" os ";" etc ? É só fazeres uma pesquisa e vês vários artigos.

Sim mas não acho que seja assim tão significativo, if tab e tá feito

O My namespace tem bom aspecto, embora imagine que lá por trás não passem de atalhos, em C# temos que ir usar os assemblies certos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Atenção: Não estou a dizer com isto que o VB.NET é melhor ou pior, até porque são muito semelhantes, apenas que o tempo de desenvolvimento é menor que o C#

Só porque em VB.NET consegues fazer algumas coisas de forma mais fácil e rápida que em C#, não significa que na generalidade o tempo de desenvolvimento é menor que em C#. Isso depende de aplicação para aplicação e principalmente de programador para programador.

E só para contrapor os exemplos que tu deste, o C# tem apontadores o VB.NET não... Linguagens com apontadores são linguagens para homens (comentário à vjoe). :) (se bem que é apenas uma implementação rudimentar do que se conhece do C, still...)

Não estou a dizer que estejas errado em algumas das coisas que dizes, mas outras, não passam de opiniões subjectivas. Isso nunca fará uma linguagem "melhor" ou "pior" ou mais ou menos rápida de se desenvolver.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E só para contrapor os exemplos que tu deste, o C# tem apontadores o VB.NET não... Linguagens com apontadores são linguagens para homens (comentário à vjoe). :) (se bem que é apenas uma implementação rudimentar do que se conhece do C, still...)

Qual a vantagem de apontadores num ambiente managed? aliás, só vejo desvantagem, limita o GC, acho que as referencias tratam bem do assunto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

As vantagens são irrelevantes, há coisas que não fazes sem apontadores ou eles não existiam.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

As vantagens são irrelevantes, há coisas que não fazes sem apontadores ou eles não existiam.

fiquei curioso, sabes de algum exemplo disso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vamos lá ver, eu estou a falar no geral e são coisas dificieis de comparar porque depende muito do programador, mas basta fazer uma pesquisa na net e ver varias discussões sobre o tema onde TODAS dizem o mesmo.

Eu não estou a dar a minha opinião pessoal (embora seja o que eu penso também :))

Já agora parabéns Nazgulled! :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vb.net não é case sensitive, essa é a diferença.

Isso para mim é uma desvantagem. Por exemplo, uso muitas vezes propriedades com a 1ª letra maiúscula e a variável interna, que representa essa lógica, com minúscula.

Os handler quero dizer, por exemplo, como atribuis um novo handler a um objecto que não seja o default ? No vb se tenho seleccionado o Click, pode escolher na combobox dos metodos outro evento qualquer sem ir ao objecto - properties - events.

Não percebi.

      My Namespace:

        My.Application.Info ' Diversas informações da aplicação como versão, descrição, etc, etc
        My.Computer.Network.DownloadFile(url, destino)
        My.Computer.Audio.Play(localização)
        My.Forms.Form1.Text = "Acesso a qualquer form directamente"
        My.Settings("abc") = "Guardar definições em xml"
        My.User.IsAuthenticated ' Verifica se o utilizador está autenticado

Assembly.GetExecutingAssembly();

Aqui o VB tem vantagem, pelo menos que eu conheça em C# não tens forma directa de ires buscar logo todos os campos. Mas se é algo que usas muito podes sempre fazer uma classe e só precisas de fazer apenas 1 vez.

WebClient.DownloadFile(...);

new SoundPlayer().Play(...);

Está aqui desta forma. Mas ninguém usa desta maneira. O mais certo seria criar o device previamente e fazer load dos sons. A não ser que sejam músicas, mas aí já é outra história.

O dos forms nem comento, terrível má prática.

MySettings.Default.abc = "Guardar definições em xml";

O da autenticação do user não faço ideia. Nós costumamos ter o nosso sistema de autenticação.

Mas pelo que vi do My namespace, não faz muito o meu estilo. Eu não sou grande apreciador de classes/métodos estáticos.

Não me digas que não perdes mais tempo a colocar "(" condição ")" as "{" os ";" etc ? É só fazeres uma pesquisa e vês vários artigos.

Hmm estás a dizer que escrever o (){} gastas mais tempo que escrever Then End If ?

Mas há muito mais exemplos ... como fazes em C#, por exemplo, para capturar uma exception não contemplada em TODO o programa ? Como detectas alterações na rede ?

A da excepção considero uma má prática e consegues fazer o mesmo no C#. Se acontece uma excepção de que não estavas à espera que é que vais fazer? Continuar? Porque o estado da aplicação nesse momento deve estar todo caótico. Sou seguidor de que deve morrer a sangue frio, se for algo critico então na minha opinião o melhor é teres um monitor a controlar essa aplicação.

A da rede está fixe. Não sei até que ponto é útil, mas deve dar para fazer coisas engraçadas.

Por exemplo como inicias um form, fecha-o e começas outro ? Em vb.net é só seleccionar uma opção. Como impedes uma aplicação de iniciar várias instãncias ? Em vb.net é só seleccionar uma opção.

Não faço. Aqui nós usamos uma framework interna que automaticamente faz todo o processamento após detectar que um form é fechado. Abre o próximo form, passa os devidos pacotes de notificações de um lado pro outro, etc.

Mas apesar de não ter uma boa ideia do que digo, presumo que a melhor forma de fazer o que queres é usar MdiChilds. Penso que seja a forma mais correcta, se queres andar sempre a abrir e fechar forms mas só queres apenas um form, então ficas com na realidade um form e vais mudando é o seu conteúdo.

Qual a vantagem de apontadores num ambiente managed? aliás, só vejo desvantagem, limita o GC, acho que as referencias tratam bem do assunto

Quando precisas de interligar com ambiente não managed.

Vamos lá ver, eu estou a falar no geral e são coisas dificieis de comparar porque depende muito do programador, mas basta fazer uma pesquisa na net e ver varias discussões sobre o tema onde TODAS dizem o mesmo.

Conheces alguma discussão deste tema na net em que o pessoal não é imparcial?
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

fiquei curioso, sabes de algum exemplo disso?

Não te consigo dar nenhum exemplo concreto mas no passado estava a fazer uma aplicação que precisei disso e até estava a desenvolver a app em VB.NET, depois descobrir que só o C# fazia o que eu precisava (com o uso de apontadores). Mas já não me lembro que app era e onde encontrei isso...

Eu não estou a dar a minha opinião pessoal (embora seja o que eu penso também :()

Repara que eu nem estava a discordar ou a concorda, apenas a constatar que muitas das coisas que apontaste, dependem do programador ou da aplicação em questão. Isso torna a discussão demasiado subjectiva, só isso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso para mim é uma desvantagem. Por exemplo, uso muitas vezes propriedades com a 1ª letra maiúscula e a variável interna, que representa essa lógica, com minúscula.

Eu uso camelCase para definição das variáveis, mas o que quer dizer é que C# myVar não é igual a myvar.

Mas pelo que vi do My namespace, não faz muito o meu estilo. Eu não sou grande apreciador de classes/métodos estáticos.

Eu sei que existem maneiras de fazer em C#, e existem outras maneiras de fazer em vb.net também, agora que simplifica muito, especialmente quem não tem grandes conhecimentos, lá isso simplifica.

Podes ver a lista do que está disponível no namespace My em http://msdn.microsoft.com/en-us/library/aa730859(VS.80).aspx#netvbdev02_topic6

Sinceramente não tentendo o que dizes da má prática dos forms ... nem sabes das capacidades do vb.net e o que podes fazer com esse namespace. Desde quando a possibilidade de aceder directamente a um form é má prática ? Não entendi

A da excepção considero uma má prática e consegues fazer o mesmo no C#. Se acontece uma excepção de que não estavas à espera que é que vais fazer? Continuar? Porque o estado da aplicação nesse momento deve estar todo caótico. Sou seguidor de que deve morrer a sangue frio, se for algo critico então na minha opinião o melhor é teres um monitor a controlar essa aplicação.

Pois é muito bonito entregar uma aplicação a um cliente e aparecer um erro parvo que o programador não contemplou! Em vb.net podes aproveitar as UnhandledException e com reflection ver exactamente onde está o erro e parar a aplicação ou não. Sempre se consegue um excelente diagnóstico.

Mas apesar de não ter uma boa ideia do que digo, presumo que a melhor forma de fazer o que queres é usar MdiChilds. Penso que seja a forma mais correcta, se queres andar sempre a abrir e fechar forms mas só queres apenas um form, então ficas com na realidade um form e vais mudando é o seu conteúdo.

Eu estou a referir-me a criar um form de login e depois saltar para o mdiform por exemplo

Conheces alguma discussão deste tema na net em que o pessoal não é imparcial?

Portugal-a-Programar por exemplo! :(

Eu utilizo os dois programas, embora apenas brinque com o c# à cerca de um ano, mas só estou a dizer que no geral é normalmente melhor em produtividade e NÂO que um é melhor que outro.

Já li isto em diversos locais, incluindo livros, mas numa busca rápida:

"But because of static typing, development speed is much slower than when using dynamically typed languages"

http://ubuntuforums.org/archive/index.php/t-370194.html

"Heck I could say VB.Net is more productive because of its better intellisense, background compiling, etc. The C# crowd will come back with other merits. It’s all a waste of time"

http://blogs.officezealot.com/rod/archive/2004/11/05/3269.aspx

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora