La Pregunta del Millón C# ó VB.NET

Bien de nuevo en el debate. [Si se que está un poco trillado el asunto]

Ahora que cuento con la oportunidad de poder recabar distintas opiniones de grandes profesionales en esto del desarrollo de software, me gustaría lanzaros esta pregunta que tan controvertida ha sido desde los años del nacimiento de .net.

¿El por qué?

Esta pregunta viene motivada debido a que este mismo viernes mantuve una reunión con un cliente para iniciar una nueva oferta. El proyecto constaría de varios módulos a desarrollar. Comenzaríamos con un pequeño EAI ,el cual, se encargaría de realizar tanto transformaciones, y mapeos de datos en base a reglas, como de proveer adaptadores para la integración con diversos aplicativos (aún no hemos realizado la toma de requerimientos; ya que; nos encontramos en la fase de oferta).Lo primero que se me pasó por la cabeza es plantearle BizTalk Server pero no podía ser, ya que  tenia que tratarse de una solución propietaria de bajo coste que posteriormente ellos pudieran distribuir entre sus propios clientes.

Bien; el caso es que casi al término de la reunión se planteó la pregunta del millón “¿C# o VB.NET?”, el cliente estaba bastante convencido de que debería ser VB.NET, dado que el desarrollo con el que cuentan en estos momentos se encuentra en Visual Basic 6.0 y aunque no se ha planteado una migración, ya que, también diseñaríamos una nueva arquitectura adaptada a las “nuevas tecnologías” la experiencia con la que contaban les hacia decantarse por este lenguaje.

Bueno… porque os cuento todo esto: Dentro de unos días deberemos de presentarle al cliente la oferta reseñada anteriormente y necesitamos tener valores de juicio para plantear un lenguaje u otro, por eso he decidido trasladar la pregunta a la comunidad.

Y como alguien tiene que comenzar este debate, empezaré yo mismo.

Mi humilde opinión

Hace muchos muchos años, bueno no tantos, comencé en esto del desarrollo de software, como muchos, con Visual Basic [no diré que versión que se nota la edad]. Posteriormente pasé al entorno Web y continué con ASP clásicas, llegado el Boom de .net, y me adentré en el con Visual Basic .NET, ya que, era el modo mas natural de enfrentarme a esta transición, el caso, es que al poco tiempo, me tentó ese nuevo lenguaje al que todo el mundo se refería como el lenguaje en el que realmente estaba creada la plataforma .net, entonces, es cuando decidí aprender C#.

Mi visión no voy a asentarla sobre bases técnicas o tecnólogas, sino sobre la propia experiencia y un enfoque más conceptual.

Hace ya casi un año mi compañía delegó en mí la responsabilidad de la dirección de  un centro de alto rendimiento en tecnología Microsoft. Este centro debía de contar con diversos perfiles; los cuales; debían de cubrir el ciclo de vida de todo un desarrollo de soluciones, jefes de proyecto, arquitectos,… desarrolladores Junior. Haciendo un pequeño ejercicio de retrospección en este tiempo es como creo que os puedo transmitir mi opinión.  

El caso es que en este tiempo hemos desarrollado diversos proyectos, tanto en VB.NET como en C# y en el transcurso de los mismos hemos tenido que ir incorporando profesionales con una mayor o menor experiencia en programación “empresarial”.  Y cual fue mi sorpresa cuando vi que las personas con perfil mas junior desarrollaban mas eficientemente en C#.

Intentando evaluar los motivos de porque la programación en un lenguaje, que se suponía que era mas fácil de asimilar, y constaba de una sintaxis mas clara a los ojos de personas mas noveles, nos estaba acarreando mas problemas en los desarrollos. Llegamos a la conclusión que este lenguaje permitía en ciertos casos subterfugios en la codificación que finalmente se traducían a bug; los cuales; eran mucho más difíciles de detectar.

Con esto no quiero decir que VB.NET no sea un gran lenguaje de programación, pero si que guarda ciertas reminiscencias de sus antecesores, que quizás le perjudiquen más de lo que le beneficien.

Cierto es también que todo esto podría ser subsanado, llevado a una buena metodología de trabajo en la que se utilicen herramientas como FxCop.



Quizás me atreviese a resaltar otros valores a favor o en contra de uno u otro lenguaje pero quería que os pronunciaseis bajo vuestra experiencia.

Gracias y Un Saludo.

P.D: Un Saludo para ese gran equipo con el que cuento. Mil gracias por todo.

Published 14/1/2007 11:45 por Jose Luis Quintero
Archivado en: ,,,
Comparte este post:

Comentarios

# re: La Pregunta del Millón C# ó VB.NET

Sunday, January 14, 2007 2:01 PM por Jorge Dieguez

He tenido la misma experiencia que tu en cuanto al uso de lenguajes: VB3-5, ASP Clásico(vbscript y jscript) y C#(aunque también conozco el VB.NET).

En mi opinión el C# es mejor por las siguientes razones:

- Aparenta y Denota (aunque no sea la verdaderamente asi) mas PROFESIONALIDAD ya que se relaciona con lenguajes como C++ y JAVA.

- Permite integrar profesionales provenientes del mundo Java(al menos sintacticamente es mas cercano)

- Personalmente creo que es mas limpio a nivel sintáctico que el VB.

Un Saludo

# re: La Pregunta del Millón C# ó VB.NET

Sunday, January 14, 2007 4:06 PM por Fran Peula Ariza

Creo que no debería haber leído esto. Últimamente me estoy haciendo demasiado radical :D.

Venga, mi opinión. Primero, suponiendo un buen grupo de desarrollo, personalmente pienso que el lenguaje debería ser totalmente transparente, dado que lo realmente importante es conocer la plataforma sobre la que estás trabajando.

Ahora la diferenciación de lenguajes. Yo vengo de los lenguajes C (a pesar de mi poca experiencia), con lo cual supongo que no seré del todo imparcial. A pesar de eso, y por lo que me he encontrado a lo largo de mi carrera profesional, el principal problema de VB.NET radica en que la gente que se suele reciclar de VB clásico no cambia el chip de sobre qué ni con qué herramientas está programando. Me explico con un ejemplo. Me preguntaba un compañero en una empresa donde desarrollábamos en VB.NET que cual era la "función de VB.NET que devolvía la fecha y la  hora actual del sistema". Yo le dije que no existía ninguna "función de VB.NET" que hiciese eso, que como mucho, estaba la clase DateTime que tenía una propiedad estática Now que te devolvía eso, y decía él "bueno, y qué más dá, no deja de ser una función". Para mí el problema es ese, que la gente que viene de VB clásico y no sabe orientación a objetos, no sabe que programa contra una plataforma ni las características de la misma e incurren en errores de concepto tan básicos que hacen que la calidad del desarrollo baje muchísimo de nivel.

Por otro lado, cabe mencionar que el comportamiento de Visual Studio .NET (yo he desarrollado en VB.NET con 2003, de 2005 no opino) con VB.NET es bastante inestable, en plan de colgar el IDE, reiniciarlo repentinamente, etc... (me ha pasado en varias máquinas, por lo que descarto problemas de la instalación) a pesar de que la indentación automática es bastante cañera :P (venga, una ventaja para VB.NET).

Y por último, según lo que he leído por ahí, el compilador de C# supera en rendimiento al de VB.NET, de forma que el mismo desarrollo en ambos lenguajes hace que el código IL generado por el compilador de VB.NET tenga un menor rendimiento que el IL generado pro el compilador de C#.

Por ello, y en cuanto al reciclaje de los programadores, te digo lo mismo que le comenté a un amigo que trabaja como administrador de sistemas y que quiere empezar con programación .NET, que me preguntó por un libro para aprender C#): lo mejor es coger un libro de .NET, aprender las bases de orientación a objetos y empezara programar (google y live.com tienen la sintaxis del lenguaje que quieras). Cuando sepas programar, léete libros de arquitectura software, patrones de diseño, best practises, etc y después de eso, coge algún libro de sintaxis y memoriza toda la sintaxis que quieras. A mí personalmente para mi trabajo diario, no me afecta para mucho que se me olvide la sintaxis de un switch o la de la declararación de un delegado (que se me olvida.... :D:D:D)

Pues nada, que para esto soy muy radical, porque ya que hacemos algo, mejor hacerlo lo mejor posible ;)

# re: La Pregunta del Millón C# ó VB.NET

Sunday, January 14, 2007 8:05 PM por Jorge Dieguez

Hombre, esta claro que lo importante no es el lenguaje:-)

Y tambien estoy de acuerdo contigo, las personas que vienen a VB.NET pensando que es lo la nueva version del VB pueden traer los vicios de programacion en VB.

De todas formas, tambien conozco personas que programan en C# y no tienen buena metodologia de desarollo OOP:-)

# re: La Pregunta del Millón C# ó VB.NET

Sunday, January 14, 2007 9:22 PM por Sergio

Para mi, escoger un lenguaje u otro no es cuestión de que uno sea mejor o peor, ya que si con ambos lenguajes desarrollas código 100% .NET, verás realmente que un programa escrito en VB.NET y C#.NET, tienes las mismas lineas de código y que lo único que cambia es la sintaxis de uno a otro.

Entonces cual es mi conclusión, que te quedes con el que mejor te apañes, eso si, te quedes con el que te quedes, desarrolla código 100% .NET, sin vicios.

Un Saludo

# re: La Pregunta del Millón C# ó VB.NET

Sunday, January 14, 2007 9:56 PM por Percy Reyes

Vamos por pasos vale?,

También vengo de VB(desde el anio 2000, pero antes he pasado por pascal, C, C++ ), cuando salió .net, empecé a programar en VB .NET (era lo más lógico), pasaron los años y decidi meterle mano a C# .NET, y me di cuenta de lo siguiente:

1.- con VB me habia acostumbrado a ciertas malas prácticas de programación.

2.- Todo esto lo traje a VB .NET, y fue peor, ps seguía con las malas costumbres...y dale!!!,

3.- Al pasarme a C# aprendí a ser más riguroso, al principio me molestaba pornerle el punto y coma, y las llaves, pero vale... no era muy dificil,  en C/C++ tenia que hacer eso... y ps ahora siento que eso me ayudó mucho, soy más cuidadoso !!!!...

4.- C# te da grandes posibilidades de explotar buenas prácticas de programación, y por primera vez sentía satisfacción en un lenguaje...

5.- C# es más rápido, más potente que VB .NET

6.- C# tiene más soporte y mejor estilo, mejores metologías de desarrollo.

7.- Evito programar en la medida posible con VB .NET, ps no importa cuantos lenguajes pueda dominar sino que es lo que puedo desarrollar en este, y C# creo que es ideal....

8.- Programando en C#, no sé por qué, pero  me siento más profesional.

Hasta la vista!!!,.... esa es mi posición con respecto al tema del post,

Gracias.

# re: La Pregunta del Millón C# ó VB.NET

Sunday, January 14, 2007 10:02 PM por Rodrigo Corral

C/C++ es el leguaje elegido por los dioses.

Como dicen en el anuncio, en todas las listas hay un primero y luego bienen los demás...

Pero C# se parece más a C++ que VB.Net.

Coñas a parte, hay muchos más ejemplos en C# que en VB.Net, en esto tiempos de programación guiada por Google es un factor a tener en cuenta.

De todos modos la diferencia es mínima, no es un asunto relevante. Una vez optas por .Net la decisión importante ya está tomada.

Saludos!!!

# re: La Pregunta del Millón C# ó VB.NET

Sunday, January 14, 2007 11:23 PM por El Bruno

Un dato:

 If quieres aprender Then

   goto CodeCamp

 End If

esa es la frase que tienen las camisetas que nos regalaron en el CodeCamp este año. Cuando le preguntamos a David porq? nos comentó que actualmente en España mas de un 70% de los programadores .Net eran de la rama de Visual Basic. Y si nuevamente surge la pregunta ¿porque? yo no tengo la respuesta pero si tengo mi opinion.

Saludos

# re: La Pregunta del Millón C# ó VB.NET

Monday, January 15, 2007 12:49 AM por Jorge Serrano

Hola a tod@s.

He esperado a que este post se llenara de comentarios (era cuestión de tiempo), y ahora... me veo que ha llegado mi turno para responder (aunque también estoy por esperar un poco más). :-)

Lo primero y fundamental, escribo esta contestación o comentario siempre con respecto y partiendo de un punto de vista personal, como lo habéis hecho todos:

Es un error de concepto, pensar que un lenguaje de programación de .NET es más rápido o eficiente o mejor que otro. El código MSIL es prácticamente el mismo salvo pequeñas excepciones. Pero eso no justifica que apliquemos una conclusión clara acerca de la eficiencia. Si alguien está muy muy seguro de esa afirmación, que realice las correspondientes pruebas y las publique en su blog.

Otro dato. En .NET, el lenguaje no es lo más importante, sino las clases propias de .NET. Son más de 4000 y lo ideal es conocerlas aunque sólo sea de "oídas". El programador para ser eficiente, no debe elegir entre C#, VB.NET o cualquier otro lenguaje, sino que debe elegir el lenguaje con el que se encuentre más cómodo o con el que un determinado cliente desee que se desarrolle una solución informática concreta. Sin embargo, el quiz se encuentra en mi opinión en las clases. Lo otro es la aplicación de una "máscara" a través de la cuál, ejecutar las clases que se cargarán en el CLR y que son las mismas para cualquier lenguaje de .NET.

Más cosas. VB.NET tiene y ha tenido la comunidad de desarrolladores más extensa del mundo (ni Java, ni C++, ni C#). Más de 3 millones de desarrolladores lo avalan (aunque he llegado a oir por gente de Microsoft que eran 9, pero da igual el número, son muchos). Sin embargo, ni muchos menos esos 3 millones de desarrolladores son los mejores programadores del planeta. Nada más lejos de la realidad.

Muchos lo han elegido por su sencillez. Otros porque venían de VB en versiones anteriores.

Problemas, muchos. Empezando, porque lo primero que debe aprender un programador que empieza con .NET (no hablo de lenguajes), es orientación a objetos. Lo segundo que debe aprender un programador que empieza con .NET, son las clases del Framework (que indicaba antes). Y lo tercero, la nomenclatura del lenguaje, y aquí, muchos se decantan por VB.NET porque ya lo conocen aunque sea someramente y otros porque les parece "más natural".

Recordemos que de VB, derivó VBA, VBScript y ASP, por lo que hay una gran cantidad de desarrolladores también, que adoptan VB.NET porque se sienten muy cómodos con este lenguaje, pero como vienen de lenguajes no orientados a objetos, tienen esos "vicios" adquiridos y otros muchos.

Sobre los vicios adquiridos de los programadores de VB, me duele la boca de decir lo mismo que comentais ya aquí y más cosas que ahora mismo omito para no extenderme más. Desde el 2001-2002, llevo luchando con este tema y comentándoselo a todos los desarrolladores que vienen de VB y desean pegar el salto a .NET y eligen VB.NET.

Pero... cuesta mucho que la gente cambie el chip la verdad. Y muchos no lo hacen porque según que acciones o tareas, no lo necesitan realmente, aunque eso no significa que las cosas las estén haciendo correctamente.

En VB.NET han añadido clases de compatibilidad para desarrolladores de VB, y así un desarrollador de VB, puede dar el salto de forma menos traumático. Esto lógicamente tiene sus partes buenas y sus partes, no malas, sino en mi opinión, muy malas.

Al contrario, cuando un programador que viene de VB se encuentra delante de C#, no le queda otra que cambiar el chip y por eso, algunos comentáis que notáis que son más eficientes con respecto a los errores de programación.

Simplemente, es cuestión de hábitos y de otras cosas que podríamos comentar largamente.

Con respecto a los errores de programación, comentaros que hay que hacer Unit Test, pasar el FxCop (por supuesto), utilizar metodologías y nomenclaturas, y aplicar seguridad y calidad al código, etc. Rodrigo nos bombardea en su blog una y otra vez sobre estos y otros muchos aspectos de alto interés para todos, pero en muchas ocasiones olvidamos aplicarlos o simplemente no tenemos el tiempo o los recursos para hacerlo.

Y finalmente os diré, que a mí me gusta mucho C#, pero VB.NET mucho más y es con el que me encuentro más cómodo,... y me siento igual de profesional que cualquiera.

# re: La Pregunta del Millón C# ó VB.NET

Monday, January 15, 2007 1:52 AM por Percy Reyes

De nuevo yo, sólo para agregar algo más :)....

En vez de usar "int" en C#, uso "Int32" , en vez de usar "string" uso "String", porque hago esto?,  son propias del CLR, y no de algun lenguaje .NET, esto hace más rápido la ejecución , y me siento mejor -:)).-

Cosas como esa es la muchos ignoramos, o a veces hacemos pero no sabemos por qué...

Finalmente decir, usar VB. NET o C# .NET ya es indiferente para mi donde  empiezan a quemar las papas, sin embargo prefiero C# .NET,

Saludos !!!.

# re: La Pregunta del Millón C# ó VB.NET

Monday, January 15, 2007 9:36 AM por Augusto Ruiz

Hola a todos!

Entro al trapo, como era de esperar ;)

Ozzonico... cuando usas Int32 en vez de int en C# no ganas rendimiento nnguno, ya que el propio compilador lo sustituye automáticamente... Son alias que se usan en el lenguaje. Echa un vistazo con el Reflector y lo comprobarás ;)

Yo coincido casi en su totalidad con lo expuesto por Jorge. Lo importante al utilizar .NET es precisamente eso, el poderte aprovechar de una serie de clases (FCL) que te quitan de un plumazo un montón de trabajo, ya que trae de base una funcionalidad que puede llegar a ser abrumadora. Tras llevar casi cuatro años desarrollando con .NET, aún creo que no conozco ni el 25% de la funcionalidad que aporta.

En cuanto a la discusión C# vs VB.NET... Es complicado decantarse por uno u otro, porque sinceramente, es una decisión por la que yo no perdería ni un momento. Hay que saber ambos. Creo que un programador eficiente y con una buena base de orientación a objetos, buenas prácticas, etc, etc. no tendrá problemas para desenvolverse con uno u otro. Lo que pasa es que una gran mayoría de los desarrolladores no siguen (seguimos?) este patrón.

En realidad, si se tiene una buena base... El detalle de la sintaxis es lo de menos. Cuál es más legible? Quizá haya visto que puede ser un poco más legible el VB.NET, pero no es igual para todos.

Sí es cierto que VS (el 2005 si no se le ha aplicado el HotFix correspondiente) tiene un bug increíblemente gordo que hace que el compliador en background de VB.NET te tire todo el entorno abajo de vez en cuando. No entiendo como a MS se le ha escapado esto, sinceramente.

La situación ideal es que te sientas cómodo con ambos. Porque habrá clientes que requerirán que trabajes con un determinado lenguaje, y otros te pedirán que lo hagas con el otro. Y por una experiencia que tuvo un compañero mío, la transición de alguien que viene del mundo de Java a VB.NET no es tan traumática como podríamos pensar... A la inversa sí que puede serlo...

De todas formas, a las malas, siempre puedes trabajar con un lenguaje, y dejar que SharpDevelop te lo traduzca automáticamente al lenguaje de tu elección... XD O puedes usar el Reflector para coger una DLL y verla en el lenguaje que te apetezca.

# re: La Pregunta del Millón C# ó VB.NET

Monday, January 15, 2007 11:22 AM por Tio_Luiso

Supuestamente la estrategia .NET de Microsoft se diferencia fundamentalmente de Java en una cosa: Es multilenguaje. Y cuando lo anunciaron, dijeron por qué es esto una ventaja. Java obliga a quien quiera trabajar con él a aprender una sintaxis. La "filosofía" de .NET es que si tienes experiencia con un lenguaje, rendirás mejor con ese lenguaje.

Pero en efecto, la gente que viene de VB generalmente no tiene las mejores prácticas posibles de programación. Y por otro lado, hay cosas de esas que no me gustan un pelo. Como lo del Option Explicit, Option Strict (POR DEFECTO OFF) y Option compare.

Y otra cosa que tampoco me mola nada es que en VB.NET, no es necesario (como sí lo es en C#) que TODO el código esté en clases. Puede haber código simplemente en módulos. En definitiva, ñapas que han metido para que los desarrolladores de .NET no se sientan demasiado a disgusto.

Eso es lo que pienso

# Visual Basic 2005 :: Instanciando formularios en Visual Basic 2005

Monday, January 15, 2007 6:55 PM por Jorge Serrano - MVP Visual Developer - Visual Basic

Artículo :: Programación :: Visual Basic 2005 Instanciando formularios en Visual Basic 2005 A colación

# Nuevo artículo :: Instanciando formularios en Visual Basic 2005

Monday, January 15, 2007 7:07 PM por Jorge Serrano - MVP Visual Developer - Visual Basic

En esta ocasión, he preparado un artículo sobre la instanciación de formularios en Visual Basic 2005.

# re: La Pregunta del Millón C# ó VB.NET

Tuesday, January 16, 2007 3:29 AM por Octavio Hernández

Bueno, JL me ha pedido que escribiera sobre esto y no lo quiero defraudar, así que aquí van mis confesiones, aunque esto del lenguaje preferido es para nunca acabar...

Sobre ello influyen múltiples factores, de los cuales varios son de índole muy personal: tus vivencias (primero que aprendiste, lo que te transmitieron tus profesores, proyectos en que trabajaste), tu concepción sobre la programación y hasta tus gustos estéticos...

Mi historia parte de una moraleja bien conocida: el primer amor nunca se olvida del todo (por fea que fuera :-) Cuando empecé, hace ya más años de los que quisiera, la PDP 11 de la Universidad solo tenía FORTRAN y C. La elección, creo, no era muy difícil: FORTRAN era más antiguo, orientado al cálculo numérico, te obligaba a escribir todo en mayúsculas, a una instrucción por línea y empezando riguosamente en la columna 7... Además todos hablaban con admiración de UNIX, Kernighan, Ritchie y compañía. Así que estuve algunos años "liado" con C.

Luego me gradué y pasé yo a enseñar programación, utilizando Turbo Pascal como entorno y lenguaje. De esa experiencia he salido convencido de las bondades de los lenguajes de la línea Pascal-Modula de cara a estimular mejores hábitos de programación. En mi opinión es una lástima que MS no haya adoptado un lenguaje de esa línea para formar un "trío total" con VB y C#. Durante un tiempo pensé que podría ser, dada la presencia en Microsoft Research de Luca Cardelli, el creador de Modula 3; pero el tiempo no me ha dado la razón.

En cualquier caso, los trabajos de investigación los seguí haciendo en C. Y esa dualidad C/Pascal la he mantenido desde entonces, incluso cuando llegaron los objetos (C++, Java, C#/Delphi).

Con VB hasta la versión 6 simplemente nunca tuve la oportunidad/necesidad de trabajar. Ahora en .NET sí me ha hecho falta de vez en cuando, y lo cierto es que me he sentido tremendamente cómodo con él. Creo que con VB se ha hecho un excelente trabajo para equipararlo en todos los aspectos a C#. En ese sentido, la plataforma pone en buena medida a los lenguajes al mismo nivel, y el protagonismo pasa, como dice Jorgito, al Framework...

# Se han preguntado, Cual Eligir C# o VB?

Wednesday, November 21, 2007 4:51 PM por dotnetplanet

Hoy , me levante con esta interogante, actualmente domino los 2 lenguajes, peroooo, la cuestion es, la tendencia hacia donde va...Les adjunto estos 2 link para que les sirva de punto de referencia, tengan un buen dia. La Pregunta del