C# o VB, VB o C#,… la envidia me corroe
Durante el pasado MVP Summit 2008 ha salido a colación una vez más en algunos círculos de debate en pasillos o en salas de reunión una discusión que se está convirtiendo en un clásico… ¿C# o VB?, ¿VB o C#?.
A veces la gente que usa esta tecnología tiende a discutir en exceso qué lenguaje de programación es mejor dentro de .NET.
En otras ocasiones se habla de si un lenguaje de programación tiene ciertas características o funcionalidades que no tiene el otro o si hay más usuarios en el mundo que utilicen un lenguaje de programación u otro.
Las discuciones llegan hasta el extremo de mirar con lupa que lenguaje tiene más ejemplos de código fuente para .NET en la red, o que los ejemplos que aparecen salen antes en un lenguaje que en otro, ¿C# o VB?.
Vamos… aspectos que en mi opinión no llevan a ninguna parte.
Pero las discusiones son mucho más ácidas cuando se trata el tema de las características que cubren cada lenguaje… ¿qué lenguaje de programación tiene más características novedosas que el otro no tiene o cual implementa antes las novedades que el otro?.
Todo esto se resume muy bien con una palabra,… la envidia. Las personas afines a un lenguaje sacan pecho delante de las otras e incluso a veces llegan a pavonearse un poco. En fin… que no lo entiendo.
Los equipos de VB y de C# de Microsoft comentan que entre ellos existen sinergias, comunicación fluida y para nada como intentan hacer ver algunas personas una guerra interna de ver quien saca más características al lenguaje antes que el otro. Los programadores somos por lo tanto según los equipos de trabajo de VB y C#, los que vemos fantasmas donde no los hay o los que nos empeñamos en que existan.
Durante este pasado MVP Summit 2008 tuve la oportunidad de conversar durante unos minutos en el autobus que me llevaba al hotel con uno de los responsables de Microsoft de la ayuda del IDE de Visual Studio. Sí sí, jefes o responsables de Microsoft que no tenían problemas en meterse en un autobús repleto de fogosos MVPs y entablar conversaciones sinceras muy enriquecedoras (esto me recuerda a la otra entrada que he agregado en mi blog).
Me resultaron muy curiosas las preguntas que me hizo esta persona acerca de mi opinión con respecto a las diferentes tecnologías emergentes que Microsoft tiene en marcha, de los problemas económicos en el mundo actual y su relación directa con las tecnologías, así como alguna cosa más que me encantó discutir con esta persona, pero después de eso, surgieron las típicas preguntas del lenguaje motivo de esta entrada. ¿Cuál es para mí y en mi opinión el mejor lenguaje de .NET o el que yo considero idóneo para desarrollar aplicaciones Software?.
De mi cuello colgaba la acreditación del evento, estaba claro que era MVP de Visual Basic, por lo que él mismo podía pensar que la pregunta ya tenía una respuesta clara, rápida y concisa, pero aún y así me hizo la pregunta esperando creo yo una respuesta sincera por mi parte y alejada del forofismo, algo que hice y que comparto ahora con vosotros.
Honesta y humildemente creo que le sorprendió gratamente mi respuesta por las cosas que me comentó posteriormente y que lamentablemente no puedo comentar (hay aspectos del NDA que no me lo permiten, no es que quiera dar importancia alguna a esto).
Ante esa pregunta, le contesté que no entendía muy bien las discusiones de la gente acerca de la elección de un determinado lenguaje o de qué lenguaje es mejor que otro, y que desde que salió la primera versión de .NET Framework siempre he matenido una misma opinión al respecto y de la que nunca me he movido.
Para mí, un lenguaje de programación en la plataforma .NET no es otra cosa que un skin, una piel que recubre a la tecnología. Una piel que recubre a Microsoft .NET Framework, a sus productos y a los productos de terceras compañías.
A esa piel la podemos llamar C#, VB o de otra forma, pero lo realmente importante es la tecnología, es decir, Microsoft .NET Framework y lo que alrededor de ella hay.
También le comenté que dependiendo del tipo proyecto, de la gente del proyecto (de las personas y de sus conocimientos) y de muchos más factores, a veces es óptimo utilizar un lenguaje de programación en lugar de otro pese a que tengas especial simpatía por uno de ellos.
De esa forma, le comentaba que la experiencia anterior de la gente, marca para un responsable de proyecto en muchas oasiones, el uso o la toma de decisión del que podría ser el lenguaje de programación idóneo para un determinado proyecto. Por ejemplo, para un programador que ha programado siempre en Java, yo vería con mejores ojos que su tendencia inicial fuera C# en lugar de VB. Para un programador que viene de VB 6 programando sin orden ni concierto (reglas de programación, mentalidad de orientación a objetos, nomenclatura de código, etc), vería más adecuado para él el paso a C# que a VB en un primer momento. Poco después quizás podría pasarse a VB sin problemas, pero inicialmente y para obligarse a cumplir ciertas normas y formas de trabajar, C# podría ser un buen comienzo. Para un programador VB 6 que ha sido metódico en su codificación y que tiene claros aspectos relativos a la orientación a objetos, nomenclaturas, etc., su paso natural sería VB… y así podríamos enumerar una y mil situaciones diferentes pasando incluso por FoxPro del que también hablamos.
Es decir, no existe una elección clara y cristalina que indique qué lenguaje es el idóneo o el adecuado. Dependiendo de las situaciones, puede ser en unas ocasiones uno de ellos y en otras ocasiones otro diferente. Incluso podríamos llegar al extremos de hacer que un mismo proyecto pudiera combinar partes del mismo escrito en diferentes lenguajes de programación.
No obstante, esta es mi argumentación y mi explicación. Los lenguajes son pieles, skins, que recubren a Microsoft .NET Framework. Microsoft .NET Framework es el núcleo central, el core, el corazón que es lo que realmente nos interesa utilizar, y las discusiones o preferencias de un lenguaje u otro no es lo que realmente nos debe preocupar a la hora de abordar un proyecto en .NET, sino el uso correcto de la tecnología apropiada (WCF, WWF, DataSets tipados, ADO.NET Entity Framework, Oracle, SQL Server,… etc).
Sin embargo, en el MVP Summit 2008, he podido comprobar en algunos MVP afines casi radicalmente a un lenguaje, la carencia de ampliar sus miras hacia lo que es en mi opinión más práctico y más abierto para todos, comprender en el que el lenguaje es importante, sí, pero no lo más importante. No obstante, la envidia sigue comiendo a algunas personas y después de ver algunas reaciones de MVPs (pocas pero algunas) en este MVP Summit 2008, me temo que lo seguirá habiendo durante algún tiempo. Me temo que es un tema de educación y aprendizaje el hecho de que nos demos cuenta de algunos aspectos como estos.
19 Responsesso far
Pues yo admito que VB 6 fue mi primer amor y con el cual me di cuenta que mi destino era escribir código; pero ahora ando en C#, empecé un poco más por quitarme algunas costumbres aprendidas en VB 6 y que no convienen usar en VB .Net, además de ello, ya conocía algo de Java, con lo que no me resultó complicado adaptarme, a tal punto que ahora me siento más cómodo con los «;» que con los «END IF».
Sin embargo tienes razón en que esta discusión es una constante y es cierto que lo importante es la tecnología base en si (.Net Framework), pero vamos, debes admitir que se hace mucho más interesante entrar en una discusión de ese tipo de vez en cuando, eso nos deja la obsesión de aprender algo más del lenguaje que usamos con el sano fin de restregárselo en la cara a algún programador «del otro lenguaje» je je.
Desde cierto punto de vista, este tipo de discusiones es sano ya que promueve la investigación de cada lenguaje. Lo demás es un tema de costumbre, aunque vamos, siempre buscamos como hacer en VB lo que hacemos en C# y viceversa.
El punto final es: «Que viva el .Net Framework!»
Saludos.
Totalmente de acuerdo con tu exposición.
La misma filosofía de la plataforma .NET deja muy claro que el lenguaje de programación es lo de menos, lo realmente importante es el resultado obtenido independientemente si has utilizado un lenguaje u otro.
Pero de vez en cuando siempre que sea una discusión sana, sin radicalismos 😉 está bien estas discusiones para animar un poco el ambiente, pero sabiendo siempre que es un tema para romper el hielo y poco más. XD
Saludos y yo si que tengo envidia de tu MVP Summit 2008.
Hola, para comenzar debo confesar mi preferencia por el lenguaje C#, puesto que yo comencé a programar con C++ y luego con java. Creo que esas discusiones de cuál es el mejor lenguaje, hay que tomarlas de manera deportiva, porque como comentó h@nz es un aliciente importante para descubrir todas las características posibles del lenguaje de tu preferencia.
Tuve la oportunidad de asistir a una conferencia de El Guille (Guillermo Son) y fue muy gracioso ver como en la primera diapositiva de su exposición se podía leer C# en lugar del esperado Visual Basic, solo para después reírse indicando que era una broma y mostrarnos su polo con VB .Net escrito en su pecho.
A lo que voy es que estas discusiones siempre y cuando no lleguen al ridículo y se radicalicen, sirven para romper el hielo, para reírse un poco, y como espíritu de competencia sana entre los miembros de la comunidad que esta alrededor del .Net Framework. A propósito me enterée sobre un Webcast justamente sobre este tema que se titula “Second NUG: Visual Basic .NET vs C# .NET: ¿Cual es mejor y por qué?” donde Guillermo son representará a Visual Basic .Net y Marino Posadas a C# .Net, ambos MVPs en sus respectivos lenguajes, estoy seguro que esta presentación será muy enriquecedora para los que deseen presenciarla, se pueden inscribir en la siguiente dirección: https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032374810&EventCategory=4&culture=es-ES&CountryCode=ES
Me ha gustado lo que el lenguaje de programación es un skin de la tecnología. Y por eso es tan importante. ¿Por que cuando nos compramos un coche miramos tanto el color?
Seguro que no vas a elegir el coche por el color, pero como no te guste no te lo compras. Está claro que si este tema genera tanta literatura es porque le damos importancia.
En ocasiones me he encontrado proyectos en los que tiene mezclado código de C# y VB.Net. Y no genera más que problemas. Cuando apareció .Net se decía que VB.Net iba a ser un lenguaje de transición, el cual iría desapareciendo gradualmente. Y en mi humilde opinión creo que sería lo mejor por diversos temas.
No voy a decir que VB.Net sea mal lenguaje, o sea peor que C#. Porque no lo pienso. Pero lo que si me encuentro una y otra vez es que la calidad media del código en C# es muy mayor que la desarrollada en VB.Net (y no quiero decir que todo el código escrito en C# sea bueno y todo el escrito en VB.Net sea malo).
Estamos en una profesión que evoluciona a una velocidad de vértigo. Y los buenos profesionales son los que son capaces de seguir esa evolución. Los que no tienen miedo a innovar o son capaces de seguir el ritmo.
Los programadores que prefieren VB.Net son aquellos que se formaron en VB6 y no quieren cambiar. Y no ven esos pequeños detalles o esos pequeños malos hábitos que genera VB.Net
En un desarrollo no es solo importante que funcione, si no que sea mantenible y escalable. Y para un lenguaje no es solo importante lo que sea capaz de hacer, si no en como lo hace.
Jajaja… Jorge Serrano nos trae un articulo en su blogs, sobre una experiencia personal que vivio en
Me gusta mucho que debatamos sobre cosas como estas dónde cada uno exprese sus experiencias y opiniones… son muy enriquecedoras.
Muchas gracias por vuestras opiniones. 🙂
[h@nz …el Geek]
[Marc Rubiño ** Marckys **]
[Eloy]
[Andrechi]
Estoy totalmente de acuerdo en que ese tipo de disputas promueve la mejora del lenguaje, pero cuando se lleva un extremo se convierte en obsesión y envidia, y me da la sensación de que de ahí no se puede sacar algo bueno o positivo.
[Andrechi]
¿Cuando y dónde has oído comentar que VB.NET iba a ser un lenguaje de transición?. Te aseguro que yo nunca escuché eso.
Respecto a la calidad de código escrito que comentas, depende de la gente y de como desarrollen. En VB se puede escribir código de la misma exacta calidad que en C#, el problema es como escribimos el código y como hacemos las cosas.
Lo que está clarísimo es que muchos programadores de VB 6 que dan el salto a .NET como muy bien apuntas, no son autocríticos con los hábitos que han adquirido y de ahí es de donde vienen muchos problemas como el que apuntabas de la calidad del código.
Totalmente de acuerdo en que algunas de los aspectos más importantes de un desarrollo es que sea mantenible y escalable. 🙂
QUE TENGA MAS DE 17 AÑOS
QUE YO QUIERO INGRESARME CON USTUDES
Jeje. Disculpen, pero mi cerebro no procesa bien las cosas que llevan ";". En una de esos finales
Excelente post. No se podia esperar menos de un gurú. Aún recuerdo tu potalvb. Muchisimas veces me saco de dudas.
Te comento que me tome el atrevimiento de re-publicarlo en tu blog.
Claro, deje constancia de que es un post tuyo, incluso puse un link a esta página. Espero no te moleste.
Saludos desde Venezuela
Oscar Berroteran
por favor mandeme un ejemplo de un programa hecho en Visual Basic 2005
pero q tenga cristal report para imprimir informacion como en una etiqueta para productos señalando como por ejrmplo
cantidad
nombre
peso
numero entre otros
pero esos datos antes mencionados
se deben de imprimir en una etiqueta
AUXILIOOOOOOOOOOOOOOOOOOOOO
P
O
R
F
A
V
O
R
H
E
L
P
M
E
E
E
E
E
E
Que tal.
Tomando lo que comenta Jorge que el lenguaje C# o VB es un Skin y lo que más importa son las bases, llámese la tecnología envuelta en el Framework, estoy 70% de acuerdo, porque, definitivamente uno siempre busca la mejor apariencia posible o lo que se acomodada al gusto personal (aunque hay, no eh visto a nadie escoger algo que los demás vean feo). Que quiero decir, que por más que lo que se utilice al final sea el Framework el lenguaje ayuda mucho por las bondades que tiene uno y otro para acceder o consumir dichas librerías, no podrán negar que C# tiene a este respecto más chances que VB. Que pasara cuando ya no haya gente que migre de VB a VB.NET por ser su camino más factible? Todos los que aprendan la tecnología .Net se irán para C#? siguiendo esa idea, poco a poco no quedara muchos para VB.NET.
Aunque empecé y me certifique con VB.NET, C# es un lenguaje más ordenado (no estoy descubriendo América) por donde se mire y el tema de mantenibilidad y escalabilidad también va por ese sentido.
A mi humilde parecer C# fue “creado” para la tecnología .Net y VB.NET es una acondicionamiento de un lenguaje que fue “fantástico” en su tiempo, llámese antes de .Net, no se ustedes pero yo prefiero subirme a una Auto que a un camión convertido en Auto.
Para terminar, se podría concluir también que lo que más importa es el producto final y eso depende mucho también del desarrollador.
Saludos.
Recién acabo de poner una opinion de esto en mi blog y llegue aquí después por accidente.(ñ_ñ excvelente blog por cierto)
Yo creo que el lenguaje sí juega un papel fundamental, estoy de acuerdo que de fondo la tecnología es la que marca la pauta, sin embargo el código que se escribe, su calidad, mantenibilidad y estructura estan ligados totalmente al lenguaje que se elige, inclusive este tipo de factores pueden alterar los costos de un software…
En lo personal me quedo con C# lo veo muy por encima de VB.
Saludos
hola buenoas tardes saben necesito aue me apoyen para poder pasar de una page1.xaml.vb en visual basic 2008 express a otra page2.xmal.vb en el mismo por favor es como una pagina web pasando a otra pagina pero dando clic sobre un boton en la primer pagina y que me muestre la otra pagina web donde quiero que pase. por su atencion gracias.
Que buena discusión, me encanta cuando surgen este tipo de exposiciones porque siempre se aclaran dudas y uno queda con más nociones de cual camino tomar.
Quiero contarles que me encuentro desarrollando un proyecto y pues lo empecé con VB.Net, es un lenguaje muy intuitivo y fácil, pero pues he leido mucho este tipo de foros y me he dado cuenta que muy posiblemente el futuro está en C#, además me ha gustado mucho el mundo Linux y también he leido sobre MONO y DotGNU y pues me parece que en un futuro no muy lejano podríamos realizar aplicaciones 100% compatibles con ese tipo de sistemas operativos.
No se que piensen ustedes de eso, pero pues es mi humilde opinión.
Saludos desde Colombia!
Últimamente los debates de C# o VB.Net quedaron atrás, ahora los nuevos debates dentro
Yo he sido programador de vb6 y me pase al .NET en el 2002 (octubre)… siempre, he defendido la postura del vb.NET no es VB6 y que podria ser mejor o igual que C#, hasta que… probe el C# y en serio.. ya no programo en VB al menos que se obligue por el proyecto (pero eso que generalmente creo DLL aunque sea para VB, las hago en C#).. por que?? pues si eres programador, el C# te facilita el conocimiento y buena practica para un cambio a lenguajes como java, javascript, c++, php etc… el VB solo,para VB, incluso… cuesta mas adaptar a un programador de VB6 a VB.NET que a C#, ya que siempre le queda «malos vicios» del VB6…
Thanks for the information… It has been use for me a lot..
http://www.all4dotnet.com/tools/convert-vb-c.aspx
Trabajo en ternium siderar en el area de testing de performace. Utilizamos la herramienta Visual Studio.net. Quisiera dar un ejemplo para que vean que es mejor elegir el lenguaje que estemos acostumbrados y no forzar a una opinion publica. Para hacer los testing el permon graba los archivos en un txt pero las graficas de rendimientos se hacen comunmente en excel. Esto me llevo a encarar un proyecto en Visual Basic.net que es el leguaje que «yo» elijo. Todos me plantearon que debia hacerlo en C# por los motivos estupidos que se ponen de moda «rendimiento, seriedad, adultez». En un mes el producto estaba hecho y gracias a la aplicacion se lograron mejorar y depurar cantidades de cosas. La empresa esta contenta con la productividad que dio esta aplicacion y no le interesa si VB o C#. Creo que lo mas importante es dar en la tecla «en tiempo y forma». El «programador» es quien vale y no el «lenguaje de programacion». LA HERRAMIENTA MAS PODEROSA Y VALIOSA ES EL «RECURSO HUMANO»