Cambio de lenguaje

07/07/2005 - 23:26 por Juan suarez | Informe spam
Hola que tal?

Resulta que en la compañia donde trabajo vamos a cambiar
el lenguaje que estamos utilizando, en estos momentos se
esta trabajando con visual basic 6.0, vamos a irnos
para .Net, pero no tenemos muy claro cual de ellos,
estamos entre Visual Basic .Net o C#.
Tengo claro que el lenguaje que se elija de todas maneras
habria que migrar las aplicaciones que estan escritas en
vb 6.0, personalmente me inclino mas por C#, de todas
maneras cualquier consejo que puedan darme es de gran
utilidad.

Uds que opinan?

Muchas gracias por la ayuda que puedan brindarme.


Juan suarez.

Preguntas similare

Leer las respuestas

#1 Tristan
09/07/2005 - 02:55 | Informe spam
Alfredo, estoy muy sorprendido. Coincido plenamente en todo lo que has
dicho.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 Tristan
09/07/2005 - 03:08 | Informe spam
Solo añadiría una cosa. Por una vez voy a romper una lanza en favor de
vb.net.

Es muy sencillo migrar a vb.net desde vb6. La dificultad mayor es convertir
el acceso a datos de ado a ado.net. Pero es importante que comprendas que no
es necesario utilizar ado.net en .Net. Se puede utilizar perfecatmente ado.
Personalmente creo que ado.net es muy superior a ado, pero eso no quita para
que te diga donde creo que estará la única dificultad importante.

Por otro lado, aunque para muchos no haya demasiada dificultad en cambiar de
lenguaje, conozco muchos programadores para los que si lo es. Para mucha
gente algo tan pequeño como disponer de mid para recortar cadenas, en lugar
de los medios que ofrece el framework, es una diferencia importante. Algo
tan tonto como separar las sentencias con punto y como, para muchos es un
mundo. Para ellos sin duda será considerablemente más difícil utilizar C#
que vb.net. Por otro lado, muchos programadores de vb, están acostumbrados a
utilizar late binding sin ser conscientes de lo que están haciendo. Para
estos, utilizar reflection es un paso muy duro.

En resumen, sin duda, c#, me parece un lenguaje más elegante, y también algo
más potente, más profesional, pero muchos programadores de vb no tienen
ningún interés en la elegancia de un lenguaje, ni en los detalles de
potencia que ofrece C#. Posiblemente para ellos vb.net sea la mejor opción.

Como siempre, si existen varias opciones, es por que cada una tiene su
lugar. Lo difícil es elegir en que sitio quiere estar cada uno.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
09/07/2005 - 18:54 | Informe spam
En resumen, sin duda, c#, me parece un lenguaje más elegante, y
también algo más potente, más profesional,



La verdad es que no estoy de acuerdo. Lo de mas elegante puedo llegar a
aceptarlo porque gustos son gustos, pero no llego a entender que significa
un lenguaje elegante. En cuanto a mas potente, en .net eso no tiene sentido.
Si, hay algunas cosas que hace C# que no hace VB.NET pero tambien hay cosas
que en VB.NET puedes hacer y no en C#. Pese a esto son muy pocas las
diferencias (y en la version 2005 son aun menos) y como ambos corren sobre
la plataforma .net no creo que uno sea mas potente que el otro. Lo mismo se
aplica a lo de profesional. Yo prefiero VB.NET mas que nada por la
"compilacion" en background y supongo que la costumbre tambien.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#4 Tristan
10/07/2005 - 18:49 | Informe spam
jejeje, y yo que estaba defendiendo a vb.net.

Posiblemente el concepto de elegancte es personal. Pero yo creo que más o
menos todos tenemos uno, y si creo que lo aplicamos a todo, incluidos los
lenguajes de programación.

A mi si me parece más elegante C# por una serie de cosas.

Desde mi punto de vista, la sencillez, la regularidad, la ortogonalidad, son
propiedades de lo que considero elegante.

Por ejemplo, para mi los lenguajes de programación modelos de elegancia, son
Lisp y Smalltalk. Lenguajes en los que todo se puede describir mediante
conceptos muy simples. Listas en Lisp y Objetos en Smalltalk. Ver código en
cualquier de los dos, me resulta muy estético, como cuando uno escucha
música de Bach, esa sensación de acabado perfecto, sin aristas.

C# tiene algo de eso. Se puede decir que básicamente en C# todo es un
objeto, que es un lenguaje bastante simple y regular. Por el contrario en
vb.net no todo es un objeto. Una parte importante del lenguaje está basada
en funciones globales, permite construir módulos, etc...

C# es bastante más ortogonal que vb.net, su gramática es más sencilla, todas
las sentencias de control se describen de forma muy regular y simple:
sentencia-de-control bloque-de-sentencias. La forma de describir las
sentencias de control en vb.net es menos regular, menos simple. Algo así
como sentencia-de-control grupo-de-sentencias End-tipo-correspondiente.
Además, For, se termina con Next en lugar de con End For, tal y como debería
ser. Sé que es por razones históricas, pero... Además, en vb.net en
ocasiones hay varias sintaxis para una misma sentencia de control.

No todas las construcciones en C# me parecen elegantes, no me gusta como
está diseñado switch case, tampoco que el operador de igualdad sea "==",
pero en fin... también es la herencia del pasado. Pero por lo general, creo
que casi todo en C# está muy bien construido.

Hay otros detalle de vb.net que no me gustan, por ejemplo que permita
invocar miembros de clase desde una instancia. Me produce bastante
confusión. Algo que parece hacer una cosa, hace otra completamente distinta.
Me refiero a:

Dim c As Char = "a"c
c.ToLower(c)

Poco lógico, ¿no?


Respecto a la potencia, si hay algunas cosas en c# que he echado en falta al
desarrollar en vb.net.

Por supuesto, la sobrecarga de operadores. No hablo tanto de poder
definirla, como de poder utilizarla. Me resulta muy cómodo utilizar
aritmética sobre Point en c#. Vb.net solo puede hacerlo a través de métodos
de clase, pero el código queda tan largo y poco legible, que nunca lo
utilizo.

Pero hay cosas más importantes. Vb.net no permite controlar la asignación de
eventos. C# permite definir descriptores de acceso, de forma que se puede
controlar la adición y eliminación de un evento. En algunas ocasiones he
necesitado hacer eso en vb.net. La única solución ha sido convertir el
evento en una propiedad de tipo delegado. Pero claro, no es lo mismo.

Otra carencia que he advertido, es que en vb.net no se puede reintroducir
una interface. Por ejemplo, en vb.net solo se podrá modificar la
serialización en una clase heredera, si en la clase base se definió
GetObjectData como virtual. No hay forma de reintroducir ISerializable en
una clase heredera de otra que ya la implemente, utilizando vb.net.

Además está la posibilidad de crear código inseguro. Nunca lo he necesitado,
pero parece que puede ser muy útil en ciertos tipos de aplicaciones. Eso si,
para ser sincero, aunque esta posibilidad me parece práctica, no me parece
elegante. Pero bueno, C# lo dificulta lo suficiente como para que nadie
abuse de ello.

Si, hay algunas cosas que hace C# que no hace VB.NET pero tambien hay
cosas que en VB.NET puedes hacer y no en C#. Pese a esto son muy pocas las



Este punto no lo veo nada claro. ¿Qué se puede hacer en vb.net que no se
pueda hacer en c#?

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#5 Octavio Hernandez
10/07/2005 - 19:54 | Informe spam
Tristán,

Este punto no lo veo nada claro. ¿Qué se puede hacer en vb.net que no se
pueda hacer en c#?



Pues usar la instrucción With :-)

Ya fuera de broma, hay algunas cosillas para las que en C# hacen falta una o
dos líneas de código, como el With o la cláusula When en el Try..Catch. Y
otras que probablemente requieren unas cuantas líneas más, pero que
complican el lenguaje y van contra la ortogonalidad a que te referías antes,
como los parámetros opcionales o valores de parámetros por defecto.

En general, estoy de acuerdo contigo en todo.

Slds - Octavio
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida