Índice de la sección dedicada a .NET (en el Guille) Artículos

 

¿Qué elegir: VB .NET o C#?
o si lo prefieres: VB vs C#

 

Publicado el 21/Oct/2002
Actualizado el 21/Oct/2002 (18/Oct)


En algunas ocasiones te encuentras con gente que hacen preguntas como la que da título a este artículo e incluso a otras por el estilo de ¿cual es mejor...?
Las respuestas que sueles encontrarte son distintas, todo depende de las "tendencias" o preferencias del que responde.
Pero en muchas, me atrevería a decir que en casi todas, suelen ser del tipo: "ya que vas a aprender un lenguaje nuevo, yo elegiría C#"
La expresión "vas a aprender un lenguaje nuevo", se refiere a Visual Basic .NET, para quién no esté muy al día, seguramente le extrañará... bueno, no quiero decir con esto de estar al día que quién no lo entienda sea un "desinformado", pero casi, al menos en lo que se refiere a las características de VB .NET o si lo prefieres, a las diferencias con Visual Basic 6.0 (y anteriores).
Para muchos, son tantas que en realidad son lenguajes diferentes. Y en parte tienen razón. Sí, son distintos en muchos aspectos, sobre todo porque VB .NET utiliza las clases de .NET Framework para casi todas las cosas que tiene que hacer, y eso significa que tiene un "contrato" de que respetará las normas impuestas por ese "marco de trabajo".
Es decir, si VB .NET necesita crear un array (o matriz), debe respetar las normas de .NET y en este caso tendrá que inicializar ese tipo de variables de acuerdo a como .NET Framework lo requiere.

Pero no son tan diferentes como muchos piensan, por eso me resulta algo "fastidioso" que quieran poner tan malo el cambio de Visual Basic clásico a la nueva versión para .NET.
Estamos de acuerdo en que tienes que aprender cómo usar las "novedades" del lenguaje, pero la base que ya tienes, te sigue siendo de total utilidad.

Para que nos entendamos y quede la cosa clara, si estás en duda si "aprender" Visual Basic .NET o C# es que, seguramente, no sabes de que va la nueva versión de Visual Basic, o es que necesitas las características que C# te ofrece y que VB .NET no tiene. Son pocas, esa es la verdad, pero para algunos, más que suficientes.
Para que nadie se sienta ofendido, aclaremos un poco más... o al menos consideremos las razones por las que podrías dudar, sobre todo si anteriormente has estado programando con Visual Basic. Si es así, que anteriormente has estado programando con VB, conocerás todo lo que tienes que saber sobre la sintaxis de ese lenguaje, por tanto, si necesitas hacer, por ejemplo, un bucle For en VB .NET, no creo que tengas muchos problemas, por la sencilla razón de que la forma de hacerlo es igual que con las versiones anteriores...
Entonces, ¿qué es lo nuevo que tendrías que aprender?, la respuesta es: Nada... o casi...
Supongamos que quieres acceder a los elementos de un ListBox o un ComboBox, entonces puede ser que te desesperes un poco y pienses (perdona la expresión): ¡Vaya mierda!, pero una cosa es que te acuerdes de todos los antepasados de la gente que ha decidido hacer esos cambios y otra muy distinta de que sólo con Visual Basic .NET tengas que aprender los nuevos cambios que conlleva el que este lenguaje se base o trabaje con el .NET Framework, ya que si decidieras usar C# para acceder a los elementos de los controles mencionados, ¡¡¡tendrías que hacerlo de la misma forma que como lo harías con VB .NET!!!

Ahora se escuchan las voces de los que dicen: "pues a eso me refería al decir que, ya que tienes que aprender cosas nuevas, es preferible hacerlo con C#, y así de paso se aprende el nuevo lenguaje de moda".
Sobre este último punto, hablaremos más tarde.
Pero el hecho de que tanto C# como VB .NET utilicen de la misma forma las clases y componentes de .NET Framework no significa que tengas que aprender cómo usar todo un lenguaje.
Veamos el mismo ejemplo del bucle for, si te decides por C# y quieres hacer un bucle, si que tendrás que aprender cómo hacerlo... (suponiendo que no sepas C/C++ o C#), pero si quieres hacer ese bucle con VB .NET, entonces ya sabrás cómo hacerlo.
Y si entramos en detalles de cómo acceder a los elementos de un array o de cómo se declara una variable o que C# distingue entre mayúsculas y minúsculas... pues... creo que son muchas las cosas que tendrás que aprender... (insisto en que se supone que anteriormente has sido usuario de Visual Basic y no de C/C++, por tanto, esos conceptos, casi con toda seguridad, serán desconocidos para ti).

Con toda esta parrafada no quiero decir que no sea bueno el que aprendas C# y que tampoco tengas "derecho" a hacerlo... ni se me ocurriría. Lo único que te digo es que, si quieres aprender a programar en C#, que sea porque "realmente quieres" aprender a usar ese lenguaje, no porque te hayan dicho que que VB .NET es tan, tan diferente que no vale la pena el esfuerzo y que ese esfuerzo lo derives para aprender "realmente" un lenguaje nuevo.
No quiero que pienses que no tendrás que aprender cosas nuevas, porque la verdad es que son muchísimas las cosas que hay que aprender, pero con la ventaja de que sólo tendrás que concentrarte en lo nuevo y no en los cambios de las cosas que ya sabes, por querer aprender un lenguaje realmente nuevo. Por si no te has enterado a lo que me refiero... es a la sintaxis de VB .NET y C#, las cuales son diferentes.

Si ves el siguiente código, y ya sabes algo de Visual Basic, estoy seguro que sabrás que es lo que hace, aunque sea a grosso-modo:
For i = 0 To ListBox.Items.Count - 1
Pero si tuvieras que escribirlo en C#, posiblemente, tendrías que recurrir a algún manual o libro:
for(i=0; i<=ListBox.Items.Count-1; i++){
En este caso en particular, aunque no sepas C#, seguramente no tendrás problemas para entenderlo, pero... en otras ocasiones no resultará tan evidente.

Otros de los argumentos del cambio, es que C# tiene futuro y Visual Basic .NET seguramente no.
En este caso, la primera parte no la voy a negar, sobre todo por esa avalancha de programadores que han visto la luz con C#... y la verdad es que son muchos, o al menos hacen mucho ruido...
Pero que VB .NET no tiene futuro, no es cierto, a no ser que los señores de Microsoft opinen lo contrario, y dejen de darle soporte...
Por tanto, si tienes que decidirte por un lenguaje que tenga más futuro, (ya que los dos lo tienen), entonces decídete por C#, ya que ese lenguaje tiene más posibilidades de que su vida sea más longeva...

Llegados a este punto, parece que te estoy recomendando que te "decidas" por C#... (¡guille traidor!)
Pero yo no soy quién para decírtelo... creo que tendrás que decidirlo tu mismo. Yo sólo te digo que evalúes los pros y los contras, y después decidas.

Podrías utilizar los siguientes "razonamientos" para ayudar a tu (posible) indecisión:
1- Si no quieres aprender "todo" un lenguaje desde cero, decídete por VB .NET
2- Si ya sabes algo de C/C++ o no te importa dar tropiezos mientras aprendes: elige cualquiera de los dos.
3- Si no estás leyendo esto: elige C#
(es que se supone que sólo los programadores de VB son los que visitan esta web... je, je, je)

De todas formas, sabiendo como está el panorama, y refiriéndome a los lenguajes de .NET Framework, en estas tus páginas, vas a encontrar tanto cosas para C# como, sobre todo, para Visual Basic .NET, además de que en breve publicaré un artículo o más, sobre cómo hacer las mismas tareas en ambos lenguajes, me refiero a cosas sobre la sintaxis de los lenguajes, como por ejemplo: cómo hacer un bucle for, do, etc., cómo declarar variables, cómo usar los arrays, etc., etc., etc. (incluso puede que me atreva a mostrarte cómo hacerlo en Visual Basic 6.0)
Así mismo, estoy preparando una librería que puede que te sea de utilidad, sobre todo si eres curioso y realmente te inquieta el aprender el lenguaje C#, que servirá para convertir código de Visual Basic .NET a C#
Pero todo esto, será en otra ocasión, espero que no muy lejana.

Mientras tanto, espero que disfrutes y aprendas con lo que ya tengo publicado sobre estos dos nuevos lenguajes.

Nos vemos.
Guillermo
Madrid-León a 18 de Octubre de 2002


la Luna del Guille o... el Guille que está en la Luna... tanto monta...