Usando C# : algunas ventajas sobre Visual Basic .NET en Visual Studio
Publicado el Viernes, 17 de agosto de 2007En el trabajo empecé un proyecto nuevo. Como tantos, estoy limitado a programar en .Net, y para Windows. Como vengo estudiando Java, y C++, pregunté si habría algún problema en programar la aplicación en C#, ya que la sintaxis es más "de verdad" que la de VB.Net. Como se trabaja con el framework .Net, no hay diferencia en el resultado final (por lo menos eso he leído).
Acá dejo algunas de las ventajas que por ahora he encontrado en Visual Studio usando C#.
Snippets automáticos
Por alguna razón, me resulta mucho más cómodo trabajar con snippets en C#. El ejemplo más común es el manejo de excepciones. En VB, uno escribe "Try", y el programa automáticamente completa el bloque "catch". En C#, se puede elegir si usar el snippet del sistema, y si lo hacemos, nos pone el cursor dentro de la declaración del catch para decirle qué hacer con la excepción (qué excepción vamos a manejar, cómo se va a llamar). El tema de los snippets de código da para otro post entero, si son bien usados, pueden agilizar mucho el desarrollo.
Refactoring
En VB, la única opción de refactoreo que veo es "renombrar" una variable o método. En C#, hay un menú entero de refactoreo, con renombrar, extraer método, encapsular, interfase, etc. Sé que se pueden bajar plugins para hacer ésto en VB, pero en C# ya viene integrado.
Menú Eventos en los forms
Cuando diseñamos GUI´s, C# trae ventajas con el manejo de eventos. En Vb. net, si quisiéramos progamar el evento de hacer clic sobre un botón por ejemplo, la forma más rápida es hacer doble clic sobre el botón, y nos lleva a código, con el evento:
MsgBox("Apretaste el botón")
End Sub
En c#, los controles tienen un nuevo menú en las propiedades, que controla cada posible evento del contol. Haciendo doble clic en cualquiera de ellos, nos lleva a código, y nos escribe el evento. Queda entonces por ejemplo:
ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("Apretaste el botón")
End Sub
Pero en este mismo menú, vemos todos los eventos posibles, a diferencia de Visual, que tenemos que buscar en dos combobox dentro de la edición de código el control en el primero, y el evento en el segundo.
Sintaxis C++ y Java
Por último, la ventaja más importante seguramente es la sintaxis. Obviamente Microsoft pensó en atraer programadores de otras plataformas al momento de engendrar .Net. Java es uno de sus competidores más fuertes. Por lo tanto, para C# crearon un lenguaje que pudiera ser entendido por programadores de C, C++ y Java. Y en el otro sentido, si uno se acostumbra a programar en C#, se acostumbra a usar la sintaxis de los otros. Además líneas de código comunes como los if, for, try, etc. son iguales. Sin embargo, programar en .Net es altamente limitante y poco recomendable.
Mono
Como bien observó "MetalAgent" en los comentarios, C# también puede ser implementado con Mono. En mi experiencia personal, pude compilar una mini-aplicación de consola en GNU-Linux con Mono, y ejecutarlo en Windows después.
Si bien MonoDevelop es un IDE bastante precario todavía, tiene empresas grandes por atrás.
Conclusión
Por el momento no he encontrado nada que no pueda hacer en C# y sí en Visual Basic. ¿Supuestamente ésto también se cumple a la inversa?
Lo remarco porque los lenguajes C´s y Java son relativamente nuevos para mí, ya que todo el año pasado en mi curso usé Visual Basic.net.
Al final, mientras se esté usando el framework de Microsoft, creo que es cuestión de gustos, porque más o menos se debe poder lograr lo mismo.
En mi opinión, dentro de .net, prefiero C#, y estoy bastante más cómodo usándolo. Aunque detesto .Net y prefiero programar en cualquier otra cosa.
MetalAgent 18 agosto. 2007 - 17:10
No entiendo muy bien algunos puntos de tu artículo, creo que cuando hablas de C# sólo te centras en M$ cuando también puedes usarlo con Mono.
Lo que comentas de los “Snippets automáticos” (yo siempre lo he visto como marcos) es algo que pueden hacer todos los editores de código, yo suelo usar emacs, pero hay cientos, te dan muchisima más potencia y velocidad que los de M$.
Visual Basic es un lenguaje para usuarios finales, para gente que quiere programar con una mano en el bolsillo y la otra en el ratón. No me parece correcto compararlo con Java o C# o cualquier cualquier otro lenguaje serio (como brainfuck o moo XD)
fernando 20 agosto. 2007 - 18:47
MetalAgent:
Gracias por tu comentario. Te paso a responder.
Sí me centré en M$, aunque lo que decís es muy cierto con respecto a Mono. Voy a agregarlo en las ventajas.
El artículo viene a que en mi curso, todo el primer año te dan con VB.Net y ni te enteras de la existencia o sintaxis de los otros.
Es obvio que Visual Basic no tiene nada que ver con lenguajes más “serios” como son Java, los C´s y demás.
En mi trabajo también venía usando VB desde el principio, y recién ahora empecé a dar los primeros pasos con C#.
Por eso, lo escrito en el artículo son apreciaciones personales de empezar a usar otro lenguaje, y las ventajas simples que aparecen de principio, mas allá del resultado final y la diferencia abismal de lo que son los lenguajes en sí.
Simplemente apreciaciones, de alguien que viene empezando.
Lo de los snippets, sé que existe en casi todos los editores. Particularmente en Visual Studio, me parece que está mejor manejado del lado de C# que usando VB.Net, simplemente eso.
Por último, gracias por visitar la página y dejar tu opinión.
Saludos
Fernando
Jesus 26 octubre. 2007 - 15:37
Amigos les comento, no existe diferencia entre lo que se puede hacer con C# o VB. Personalmente me gusta VB, pero programo an ambos indistintamente.
En relacion al articulo de Fernando, en el topico ” Menú Eventos en los forms” para VB tambien dispones de los eventos que tiene el objeto en las propiedades del objeto, especificamente hay un icono de un “rayo” donde te muestra todos los eventos del objeto seleccionado (ojo VS 2005).
en relacion al refactoring es cierto que solo aparecen muchos metodos solo para C#, pero imagino que se debe a que las clases que maneja .NET todas estan hechas en C#. Pero para compensar esto hay herramientas free y pagas que ayudana alos programadores de VB.
En fin todo lo que hago en C# lo puedo hacer en Vb, la diferencia radica es en la facilidad de como se hace, y esto se debe a la implementacion del Lenguaje usado .
Saludos!!!
fernando 27 octubre. 2007 - 18:53
Jesus:
Gracias por tu comentario. Ahora que he estado usando los dos lenguajes por un tiempo en el trabajo, puedo decir que realmente no hay diferencias entre usar uno y otro en el resultado final. Y hace poco recién descubrí el rayito de los eventos para los forms en Visual Basic! Es igual que en C#.
Sin embargo el refactoring sigue siendo un poco mejor con C#.
Como conclusión, según la sintaxis que uno prefiera, es lo mismo usar uno que otro. Yo me quedo con C# entre éstos dos…
Saludos
milena 20 mayo. 2008 - 22:41
hola si alguien me puede decir donde descargar el programa visual basic studio 0.6 por favor
Dark Musician 24 octubre. 2008 - 20:14
Public Static Void ComentarEnPagina()
{
System.Console.Write(“Buenas noches, me parece muy interesante tu página y también muy interesante tu post; precisamente a mí tambén me está pasando lo mismo, en el lugar donde estudio nos han levantado todo el tiempo a VB, y ahora por mi cuenta estoy aprendiendo C# con un manualillo que me bajé de Wikilibros je je, suerte con tu nuevo lenguaje, que a mí también me está gustando mucho.”)
}
Je je, ahí se ven…
fernando 24 octubre. 2008 - 21:12
Dark Musician:
Por experiencia, te recomiendo que ignores C#,y te pongas a aprender algo que te vaya a servir más: Java, Python, C, C++, PHP, Ruby, etc.
.Net es un framework muy limitado y segun mi opinión, con poco futuro. Muchas otras tecnologías te van a servir más en tu formación profesional.
Saludos
Marvin 29 octubre. 2008 - 15:23
A mi me gustan ambos…
Beto 19 noviembre. 2008 - 15:50
“.Net es un framework muy limitado y segun mi opinión, con poco futuro. Muchas otras tecnologías te van a servir más en tu formación profesional.”
¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿
?????????????????????????????????
Que queres decir con eso? (Ademas de la evidente limitacion en cuanto a la multiplataforma, en que te basas para sustentar esta afirmacion?)
fernando 19 noviembre. 2008 - 19:38
Me baso en dos motivos principales.
Uno, que trabajé con .net por mucho tiempo, y lo encuentro limitado. Windows de por sí ya es limitado, un framework que corre únicamente sobre Windows (con limitaciones) es limitado al cuadrado.
El segundo motivo principal es que no le veo futuro al sistema operativo en que corre. Siguen confiando en un modelo de desarrollo retrógrado, sin futuro, y poco eficiente. Los resultados están a la Vista. Y en cuanto a Mono, la implementación “libre” de .net, no lo va a ser tanto cuando hayan problemas de patente en el camino.
Hay muchas tecnologías, MUCHAS, algunas de ellas muy nuevas, otras no tanto, que tanto en lo profesional como lo académico son mucho mas útiles y con más futuro.
Eso es solo mi opinión.
Mauricio (Beto) 20 noviembre. 2008 - 12:41
Ok, entiendo tus motivos.
Pero me parece que decir que algo es “muy limitado” no es cosa de tomar a la ligera. Creo que se estan mezclando muchas cosas, algunas con fundamento y otras no tanto.
Y esto toca varias cuestiones, SO, modelo de desarrollo, MS vs No MS, .net vs otras plataformas de desarrollo, etc. etc. y mas etc.
Por ejemplo, “los resultados estan a la Vista”. Aca, el fracaso de un sistema operativo no tiene nada (NADA pero NAAAAADA) que ver con un modelo de desarrollo arcaico o nuevo, o bueno o malo. En todo caso el fracaso es por la avaricia de una empresa de querer imponer un SO cada 2 años, sacar cosas a las apuradas, y obligar a todo el mundo a cambiarlo y pagar licencias. Esto no es parametro para evaluar el modelo de soft libre vs el modelo “privativo” (Palabra muy fea y que suena muy ofensiva para los que trabajan honestamente en plataformas/empresas que no usan soft libre)
O, en otro caso, el fracaso seria por un mal diseño, o por la falta de capacidad de los “constructores” del sistema.
Con CUALQUIER MODELO DE DESARROLLO se pueden lograr sistemas de calidad, que quede bien claro.
En otro momento sigo con el comentario (Hay que seguir con el laburo)
Ariel Giomi 21 noviembre. 2008 - 17:32
Comparto el comentario de Mauricio(Beto) y quiero agregar lo siguiente:
Se habla de lenguajes serios cuando en realidad el que debe ser serio es el desarrollador.
Observen que muchos de los que hablan en español no saben escribir una carta mientras que se han encontrado poemas hermosos en las lenguas más primitivas.
Si bien las herramientas ayudan (y como!!!) en la obtención del producto final, el serrucho no es la silla…
Saludos. Ariel
campo 6 junio. 2012 - 08:23
“Si bien las herramientas ayudan (y como!!!) en la obtención del producto final, el serrucho no es la silla…”
Totalmente de acuerdo. Creo que aunque un poco tarde mi intervención, la anterior es la respuesta mas acertada en todo el post.
Dicho de otro modo: Los pinceles y el óleo no hacen una obra de arte. Hace falta el artista creador.
roberto jc 9 marzo. 2010 - 15:33
PARA FERNANDO:
tu pusiste “El segundo motivo principal es que no le veo futuro al sistema operativo en que corre. Siguen confiando en un modelo de desarrollo retrógrado, sin futuro, y poco eficiente.” y respeto tu opinion pero eso NO SON MAS QUE PALABRAS DE UN INGENIERO QUE NO VE MAS ALLA DE SU MUY LIMITADO MUNDO TECNICO, yo tambien soy ingeniero, pero si el so de microsoft sera con o sin futuro no depende de los “expertos en informatica” compadre sino de la mercadotecnia, LA REALIDAD ES MICROSOFT ES LA COMPAÑIA MAS GRANDE DEL MUNDO Y MAS DEL 90% DE LAS COMPUTADORAS DEL MUNDO TIENEN WINDOWS, y eso viene desde hace 20 años, entonces mi querido maestro dime… como rayos te atreves a decir q microsoft no tiene futuro, hazme el favor, .net y windows son de microsoft y mientras esta compañia sea tan eficiente vendiendo sus productos el mercado no cambiara, y puede que tengas razon en que sus productos sean una basura pero si esa “basura ” le gusta a la gente y se la saben vender entonces vamos…seguira siendo el lider del mercado por los proximos 20 años por lo menos sino es que muchos años mas, asi q analiza el contexto cuando digas q windows no tiene futuro, por favor tiene pasado preseente y futuro, saludos!!
Alberto 24 abril. 2010 - 17:19
Para Fernando:
Tu articulo es tendencioso completamente hacia C#. ¿sabias que asi como c# tiene ciertas ventajas sobre vb.Net, tambien vb.Net tiene ventajas sobre c#? No las escribo por falta de espacio pero solo es cuestion de googlear un poco.
A final de cuentas es cuestion de gustos, por que la esencia de la logica de la progrmacion es la misma. En lo particular no me gusta c#, me desesperan las “llavecitas”.
sebastian 12 julio. 2010 - 18:08
Como veo, estas acostumbrado a usar C# y solo mencionas ventajas de C#. Pero el VB tiene ventajas como usar WITH para implicitar un objeto, select case sin break. Creo que habria que observar la calidad de programador y no la calidad del lenguaje. Yo siempre me preocupe por hacer aplicaciones ricas para mi usuario. El usuario compra resultados, no procesos. Uso VB.NET y mi limite esta en mi capacidad de ingenio para competir en el mercado e innovar con mis productos finales. No creo que el limite se de en un select case ni un try catch end try.
Carlos 1 marzo. 2012 - 12:50
Lo bueno de los lenguajes del .NET Framework es que la elección de uno y otro no depende de motivos técnicos, sino de preferencia de los programadores o de política del grupo de desarrollo. A mí me gustan más los lenguajes con sintaxis “C”, como C, C++, Java, PHP, C#, pero eso no quiere decir que estén equivocados los que prefieren lenguajes como Visual Basic. Simplemente hay que conocer bien el lenguaje que se usa y plasmar el algoritmo que has hecho previamente en tu cabeza o sobre una hoja de papel para que tu programa haga lo que se supone que debe hacer.
Adrian 13 junio. 2012 - 03:03
Lo que puedo deducir facilmente despues de buscar información en la web, es que microsoft en cualquier momento va a discontinuar visual basic como lo hizo con visual foxpro cuando se les plazca hacerlo. Entonces creo importante utilizar cualquier lenguaje C ya que nunca van a elimiarlo porque con el mismo esta desarrollado todo el windows y sus aplicaciones. Por otro lado es mucho mas simple, corto y ordenado escribir codigo en c# que visual basic.
Fernando 21 octubre. 2013 - 01:56
Mas ordenado que vb? En vb tenes siempre un End (end sub, end if, etc.) y en los demás hay que calcular las llaves (llaves, corchetes, que fastidio), muchos desprecian este lenguaje pero desconocen todo lo que tiene, de Basic solo quedó el nombre, es el lenguaje mas legible de todos.
Fernando 14 noviembre. 2014 - 15:13
Aunque esto es viejo quería dejar mi humilde opinión: no veo ventajas entre C# y VB ya que los 2 terminan usando el mismo Framework solo cambia la sintaxis del fuente y ahí es cuestión de gustos. A mí me gusta más VB porque si es más legible que los lenguajes tipo “C” porque como dicen arriba solo es cuestión de mirar los “End” de cada cosa. Las ventajas que tenga C o VB en cuanto a la escritura de código depende del Visual Studio que es el editor pero no son del propio lenguaje. Con VB se pueden usar clases, objetos, etc., todo lo que tienen los demás, ahora si el programador es desordenado y no separa bien los métodos, propiedades, parámetros, va a ser lo mismo VB o C#. VB siguió la evolución del Basic, pero de eso solo queda el nombre y muy poco de la sintaxis, ya es hora que le cambien el nombre. Saludos a todos!
Karakal 28 diciembre. 2014 - 04:03
Hola amigos, viendo este post del año 2007, quisiera que alguien comente acerca de estas ventajas entre VB y C# ya que quiero tomar decision para empezar a estudiar un lenguaje…Solo quiero aprender un lenguaje, Cual me recomiendan seriamente y por que?
Una buena opinion 7 años mas tarde seria bueno, pues ambos lenguaje me imagino han evolucionado bastante.
Saludos
Fernando 28 diciembre. 2014 - 13:53
Hace un buen tiempo que no uso nada de .NET. Pero si hay que elegir entre esos dos lenguages, recomendaría C#. La sintaxis es similar a otros lenguajes, por lo que te resultaría más fácil la transición cuando vayas a usar un lenguaje distinto. Y creo que la diferencia más grande entre C# y Visual Basic es la sintaxis, demás usan las mismas clases y el código seguramente compila a lo mismo. No puedo comentar mucho más porque realmente hace mucho que no los uso, pero capaz que este artículo te da más información: https://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NET
¡Saludos!
campo 28 diciembre. 2014 - 20:48
Tal como comenta Fernando, la diferencia más visible entre ambos lenguajes es la sintaxis de modo que cualquiera de los dos te puede ir bien para aprender un nuevo lenguaje de programación. Lo que sí debes tomar en cuenta es que tipo de programas o sistemas piensas desarrollar ya que hay una diferencia muy grande entre programas/sistemas bajo ambiente cliente/servidor o locales y programas/sistemas para la web.
Si estas comenzando, lo mejor es comenzar con programas/sistemas para cliente/servidor o locales porque allí controlas casi todo el ambiente mientras que en cliente servidor debes conocer o saber cómo instalar un servidor, luego desarrollar localmente tu(s) programa(s) para luego hacer las pruebas en la web. El paso de variables entre un programa y otro puede ser un punto de relativa complejidad y además surge la necesidad de conocer otros lenguajes o tecnologías subyacentes como pueden ser el HTML, Javascript, uso de cookies, XML, etc.
Mi recomendación es comenzar con VB.NET o C# desarrollando programas locales. Aquí debes seleccionar entre usar programas de consola, Windows Forms o Windows Presentation Foundation. Si llegas a este punto, yo te recomendaría que comenzaras con Windows Forms.
Todas estas recomendaciones pueden ser discutibles ya que puede salir alguien recomendando que trabajes con PHP, Java, Phyton, etc. Cada punto de vista tendrá sus puntos a favor o en contra pero el asunto es que si estas comenzando lo mejor es simplificar. Mucha información puede desorientar.
campo 28 diciembre. 2014 - 20:49
Corrigo:
Donde dice “mientras que en cliente servidor debes conocer o saber cómo instalar un servidor, luego desarrollar localmente tu(s) programa(s) para luego hacer las pruebas en la web”
Debe decir: “mientras que en ambiente web debes conocer o saber cómo instalar un servidor web, luego desarrollar localmente tu(s) programa(s) para luego hacer las pruebas en la web”
Karakal 30 diciembre. 2014 - 03:22
Muchas gracias Fernando, muchas gracias campo.
Les comento soy Contador con especialidad en Administracion Financiera y mi gran sueño es llegar a realizar un buen ERP sencillo pero funcional y potente con tecnologia Cliente-Servidor (SQL Server-C#), en el 2003 tome un pequeño curso tecnico en VB6 con SQL Server 2000, aqui solo conoci la tecnologia POO…En VB.NEt o C# puedo diseñar cualquier tipo de interfaz moderna asi como tambien puedo construir una buena base de datos considerando el tipo de datos para cada campo en cada tabla.
Actualmente estoy ponchando SQL Server 2012 y Visual Basic 2013, pero realmente viendo el futuro de VB, prefiero empezar desde cero con C#.
En estos dias estoy leyendo el libro “Murach’s SQL Server 2012 for Developers” por cierto muy bueno y lo recomiendo…Si me pudieran ayudar recomendandome algun lugar en donde capaciten online, pero verdadera capacitacion en C# para desarrollo N-Capas, no que me dejen a medias y me manden a seguir investigando
Saludos y gracias por su apoyo.
Karakal 30 diciembre. 2014 - 03:26
Perdon, como me habian comentado lo que quiero es desarrollar para escritorio con tecnologia Cliente-Servidor y conexion remota…Ya estoy practicando un poco con diseño en DotNetBar y .Net, necesito ayuda, ayuda y mas ayuda (orientacion)
Karakal 30 diciembre. 2014 - 03:42
Bueno amigos,
Despues de ver la URL https://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NET
que me paso el amigo Fernando, quiero decirles que solo aceptaria C# por el futuro, esas llaves y corchetes me amrean, en cambio VB se ve tan facil.
Como les habia comentado lo que quiero es desarrollar para escritorio con tecnologia Cliente-Servidor y conexion remota.
sebastian 3 agosto. 2015 - 14:32
Desde que conosco la familia del C, no veo evolucion alguna. Los unico que evolucionan son el FW.net y el Visual Basic que version a version incoropora novedades que hacen temblar al C#. Hasta ahora no veo que el C# sea mejor, tiene muchas deficiencias y año a año siguen intactas, es un lenguaje rigido que no promete cambios por siglos que pasen. Yo me quedo con el codigo documentado (end if, end sub) y no {}. Es tan rigido el c# que cuando queres usar una constante como indice contesta “no se puede convertir implicitamente de int a int”. Por favor, gracias, pero no apuesto a lenguajes con tan poca seriedad. C# se lo defiende con tradicionalismo, folklorismo puro, es una cuestion familiar. VB intenta crecer como producto tecnologico, y no confundan mejoras .net con mejores en la sintaxis. Si al VB.net, no al C#. Aclaro que hoy estoy “por razones laborales” trabajando con C# pero toda la vida use ambos lenguajes y tengo criterios para compararlos. Tengo mas de 100 razones por lo cual no elegir C# como cuando queres eliminar un evento, tira un error y hay que manosear el .designer
Maria 2 diciembre. 2016 - 00:04
La verdad es que lo que se puede programar en Vb se puede programar en C# y viceversa. Ambos lenguajes trabajan con el mismo framework. Claro que para una persona acostumbrada a programar en C, le será más fácil programar en C# porque la estructura de las sentencias es prácticamente la misma.
No creo que exista el mejor lenguaje de programación sino que todo depende de qué es lo que se quiere programar. Por ejemplo, si pienso hacer un juego usaría c++ (sin dudarlo) mientras si quiero hacer un software sencillo que conecte a una base de datos y trabaje con ella seguramente me inclinaría por VB.
Aclaro que en VB siempre utilizo la opción strict on.
Lo importante es que el cliente tenga un software seguro y que realice lo que solicitó a él poco le importa el cómo y en qué está programado.