Que es mejor o recomiendan más Vb o C#?

Iniciado por andrecid, 1 Noviembre 2014, 11:43 AM

0 Miembros y 1 Visitante están viendo este tema.

andrecid

Hola , les quería pregunta una duda que llevo con ella algún tiempo.

Cuando empece con la programación empece con Vb pero enseguida me cambie a C# por que la gente decía que era mejor etc, Obviamente yo estuve investigando por internet y he leído que ningún  lenguaje es mejor que otro.

Entonces ¿Por que recomiendan más C# que VB?

me gustaría saber que opinan ustedes sobre el tema y a ver si me resuelven la duda.

El Benjo

Es más que nada porque VB es un lenguaje que te permite hacer cosas que se consideran "un mal hábito" como no declarar las variables que utilizas, etc.

http://msdn.microsoft.com/es-es/library/bb972208.aspx
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

Pablo Videla

Personalmente prefiero C# por la sintaxis, me es imposible tratar de aprender visual basic porque me provoca derrame cerebral, simplemente me niego a programar en algo parecido a BASIC.

Eleкtro

#3
Cita de: El Benjo en  1 Noviembre 2014, 18:37 PMEs más que nada porque VB es un lenguaje que te permite hacer cosas que se consideran "un mal hábito" como no declarar las variables que utilizas, etc.

No opino de esa misma manera, un programador usará malas prácticas si así lo quieres hacer sin importar el lenguaje que sea, en C# puedes usar malas practicas, las cuales además algunas se comparten con VB.NET, pero otras malas prácticas son específicas para este lenguaje, C#.

Cabe mencionar que ese tipo de malos hábitos relacionadas con las variables en VB.Net se pueden evitar activando las declaraciones "Option", cosa que se puede especificar en las opciones de la IDE para que estén activadas por defecto en todos los nuevos proyectos ( Tools -> Options -> Project and Solutions -> VB defaults ), o se pueden declarar de forma manual en la cabecera de la Class/Module:

Código (vbnet) [Seleccionar]
Option Explicit On
Option Strict On
Option Infer Off


Entonces, con esto queda el problema de esos malos hábitos resuelto.

En mi opinión, esto lo veo una mejora, ya que VB.Net no nos obliga a usar malas prácticas, no es un mal lenguaje sino todo lo contrario al brindarnos la posibilidad de elección para trabajar de una forma más rápida evitando ese tipo de especificaciones/correcciones cuando sabemos perfectamente lo que estamos haciendo y esto supone un aumento de rendimiento, ya que en cualquier momento podemos activar las declaraciones para añadir las especificaciones o hacer las correcciones necesarias y eso me parece algo genial.


Cita de: El Benjo en  1 Noviembre 2014, 18:37 PMhttp://msdn.microsoft.com/es-es/library/bb972208.aspx

Gran artículo por parte de Microsoft explicando los entresijos básicos de MSIL, gracias, lo he añadido a mi mini-FAQ de Manuales .Net xD







Cita de: andrecid en  1 Noviembre 2014, 11:43 AMEntonces ¿Por que recomiendan más C# que VB?

Habrá gente experta que haya trabajado por igual con VB.Net y C# para sacar sus propias conclusiones y recomendar un lenguaje o el otro.

Yo no los he trabajado por igual, pero puedo decir que jamás he necesitado recurrir a C# para desarrollar algo que no se pudiera hacer en Vb.Net,
hace ya bastante tiempo cuando me hice esta misma pregunta leía comentarios de gente que suele decir que entre VB.Net y C#, C# sería la única opción para tocar temas delicados como la inyección de código/dll, el API Hooking, la lectura/escritura de la memoria en un proceso ajeno, etc, pero obviamente cuando empiezas a tocar .Net acabas dándode cuenta de que ese tipo de comentarios/acusaciones son completamente falsas ya que se puede hacer exactamente lo mismo en Vb.Net que en C# respecto a esos temas que mencioné, aunque de todas formas no discuto que quizás sí exista algo que solo se pueda llevar a cabo con C# (entre Vb.Net y C# hablando) ya que no soy ningún gurú en este lenguaje, pero para cosar "normales" te va a servir cualquiera de los dos lenguajes.

Por otro lado, también habrá gente que nunca haya usado CSharp, pero por su nombre lo asociarán automáticamente con C++ y tenderán a decir que es mejor lenguaje por favoritismo o simplemente por ese mal razonamiento, la razón de este mal razonamiento se explica detalladamente en el articulo que te mostró @El Benjo.

Claro, si asociasemos VB.Net con VB6 o VBS entonces yo tambien diría lo mismo, diría que VB.Net es una completa basura como lenguaje y que C# es mejor, pero estaría equivocado porque ni VB.Net se asemeja en sus antecesores, ni C# a los suyos (exceptuando la sintaxis de ambos lenguajes), es una tecnología nueva dependiente de .Net Framework, y aparte la WinAPI no va a cambiar o a mejorar por arte de magia entre ambos lenguajes :-/.

Si una persona random dice que C# o VB.Net es mejor en un debate sin dar ningún argumento... ¿para que tomarse el comentario en serio?, busca y lee por ti mismo las diferencias entre cada lenguaje, saca tú tus propias conclusiones para decidir que lenguaje te parece mejor a ti.


Comparison of C Sharp and Visual Basic .NET
Is C# code faster than Visual Basic.NET code?
VB.NET vs. C#.NET?
10 Reasons Why Visual Basic is Better Than C#
Top 10 reasons VB.NET is better than C#

En resumen, al final las diferencias entre ambos lenguajes son pequeños tecnicismos a los que quizás nunca legues a necesitar darle importancia, tu decisión debería basarse en el lenguaje que más te guste y más facil de usar sea para ti, personalmente yo no cambiaría la sintaxis de VB.Net por la de C#.

Te recomiendo leer el artículo que te ha linkeado el compañero @El Benjo.

Saludos








Yaldabaot

Estoy de acuerdo con Elektro, no soy experto en ninguno de los dos, me falta MUCHO para considerarme experto, tengo algunos años programando, pero se un poco lo básico para decir que ambos lenguajes son muy potentes y puede dar un gran rendimiento.

Me gusta mucho VB.NET, lo curioso es ver la GRAN cantidad de gente que lo odia, lo desprestigia y sobretodo lo hace a un lado, cuando es un lenguaje MUY potente y competente, estuve viendo estadìsticas de los lenguajes y en este año VB.NET ha subido muchas casillas, no es un lenguaje malo y es sencillo y fácil de entender.

C# me gusta también, es un excelente lenguaje y muy poderoso, sobre las malas prácticas ya lo especificó Elektro, hay opciones que te permiten trabajar mejor con lenguajes "opcion strict" es una de ellas en VB

PD: Elektro necesito ayuda en el otro post xD(no he podido conseguirlo u.u)
Nunca me contestan -_-

elezekiel

C# es mucho mas potente, toda la vida sin lugar a dudas, vb es como vb6 solo con algunos cambios, no tiene mucho mas.

si queres hacer cosas simples que hagas en 15 minutos usa vb, sino usa C#

kub0x

Llevo años programando en .NET concretamente C# y VB. VB .NET fue mi primer lenguaje de programación orientado a objetos y debo destacar su sintáxis legible a primera vista, lo práctico que es (gracias al Framework) y lo sencillo que es aprenderlo. Eso sí, si te compras un libro BÁSICO de C# o VB .NET vas a ver prácticamente lo mismo, la única diferencia sería la sintáxis, ya que las diferencias entre C# y VB realmente están a la hora de utilizar contextos que requieren una compilación insegura, normalmente punteros ya que su integridad no se puede verificar. Guardan más diferencias, pero sencillamente esa es una de las más relevantes.

Si vienes del mundo de Java o C/C++ entonces C# es tu amigo, ya que la sintáxis es casi calcada a la de estos lenguajes. VB .NET no se asemeja a ningún lenguaje ademas que su propósito en su día fue crear un lenguaje para principiantes. Hoy día con el proyecto .NET estoy en desacuerdo con dicha afirmación, ya que VB .NET se ha convertido en un lenguaje potente que nada tiene que envidiar a C#.

Cita de: Eleкtro en  1 Noviembre 2014, 20:57 PM
Yo no los he trabajado por igual, pero puedo decir que jamás he necesitado recurrir a C# para desarrollar algo que no se pudiera hacer en Vb.Net,
hace ya bastante tiempo cuando me hice esta misma pregunta leía comentarios de gente que suele decir que entre VB.Net y C#, C# sería la única opción para tocar temas delicados como la inyección de código/dll, el API Hooking, la lectura/escritura de la memoria en un proceso ajeno, etc, pero obviamente cuando empiezas a tocar .Net acabas dándode cuenta de que ese tipo de comentarios/acusaciones son completamente falsas ya que se puede hacer exactamente lo mismo en Vb.Net que en C# respecto a esos temas que mencioné, aunque de todas formas no discuto que quizás sí exista algo que solo se pueda llevar a cabo con C# (entre Vb.Net y C# hablando) ya que no soy ningún gurú en este lenguaje, pero para cosar "normales" te va a servir cualquiera de los dos lenguajes.

Soy de C++, pero como estamos en .NET pues prefiero C# ya que me da más control sobre la memoria. Aun así le doy la razón a mi compañero por un simple hecho, he desarrollado tools en ambos lenguajes para inyecciones DLLs, malware, cheats/bots, y debo afirmar que ambos lenguajes sirven para estos propósitos.
Arriba mencioné la compilación unsafe al utilizar un contexto no seguro (pointers), bueno, VB .NET no permite dicho modo de compilación, pero es bien sabido que se puede hacer un port de unmanaged a managed (C# unmanaged to VB .NET managed) , por lo que sería posible. Existen diferencias en su sintáxis y palabras reservadas (keywords) pero el código intermedio (MSIL) en Release es práctimente el mismo.

Eso sí, las tools de las que os hablo es preferible desarrollarlas en C++ como DLL y usarla en tus proyectos, sobre todo si se trata de Hooking o DLL inyection, ya que te obligaria a cargar el CLR en el proceso objetivo lo que podría causar un mal funcionamiento del proceso destino al haber cargado tantas dependencias en su espacio de memoria. C++ hace sencillo todos estos procedimientos.

No sé porque realmente la gente tiende a desprestigiar a VB .NET, ni caso, eso es porque nunca se han molestado ni en aprenderlo ni en medir su potencial comparándolo con C# por ejemplo. Eso sí, recomiendo no estancarse en VB y aprender más lenguajes, Java/C#/C/C++ guardan ciertas relaciones que hacen muy sencillo su aprendizaje.

Saludos.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


zShackra

#7
Cita de: kub0x en 16 Noviembre 2014, 21:14 PM
Llevo años programando en .NET concretamente C# y VB. VB .NET fue mi primer lenguaje de programación orientado a objetos y debo destacar su sintáxis legible a primera vista, lo práctico que es (gracias al Framework) y lo sencillo que es aprenderlo. Eso sí, si te compras un libro BÁSICO de C# o VB .NET vas a ver prácticamente lo mismo, la única diferencia sería la sintáxis, ya que las diferencias entre C# y VB realmente están a la hora de utilizar contextos que requieren una compilación insegura, normalmente punteros ya que su integridad no se puede verificar. Guardan más diferencias, pero sencillamente esa es una de las más relevantes.

Si vienes del mundo de Java o C/C++ entonces C# es tu amigo, ya que la sintáxis es casi calcada a la de estos lenguajes. VB .NET no se asemeja a ningún lenguaje ademas que su propósito en su día fue crear un lenguaje para principiantes. Hoy día con el proyecto .NET estoy en desacuerdo con dicha afirmación, ya que VB .NET se ha convertido en un lenguaje potente que nada tiene que envidiar a C#.

Soy de C++, pero como estamos en .NET pues prefiero C# ya que me da más control sobre la memoria. Aun así le doy la razón a mi compañero por un simple hecho, he desarrollado tools en ambos lenguajes para inyecciones DLLs, malware, cheats/bots, y debo afirmar que ambos lenguajes sirven para estos propósitos.
Arriba mencioné la compilación unsafe al utilizar un contexto no seguro (pointers), bueno, VB .NET no permite dicho modo de compilación, pero es bien sabido que se puede hacer un port de unmanaged a managed (C# unmanaged to VB .NET managed) , por lo que sería posible. Existen diferencias en su sintáxis y palabras reservadas (keywords) pero el código intermedio (MSIL) en Release es práctimente el mismo.

Eso sí, las tools de las que os hablo es preferible desarrollarlas en C++ como DLL y usarla en tus proyectos, sobre todo si se trata de Hooking o DLL inyection, ya que te obligaria a cargar el CLR en el proceso objetivo lo que podría causar un mal funcionamiento del proceso destino al haber cargado tantas dependencias en su espacio de memoria. C++ hace sencillo todos estos procedimientos.

No sé porque realmente la gente tiende a desprestigiar a VB .NET, ni caso, eso es porque nunca se han molestado ni en aprenderlo ni en medir su potencial comparándolo con C# por ejemplo. Eso sí, recomiendo no estancarse en VB y aprender más lenguajes, Java/C#/C/C++ guardan ciertas relaciones que hacen muy sencillo su aprendizaje.

Saludos.

Bajo mi punto de vista, creo que el odio viene por su sintaxis y sus usuarios, el/los cual(es) es/son, como se ha dicho anteriormente, un lenguaje con sintaxis para iniciados y por ahí derecho que, quienes lo usan, generalmente son novatos que se creen mecenas, los llamados Script Kiddies o Lamers de la red... adolescentes que en principio lo "aprenden" porque es lo primero que ven en Google al buscar cosas del tipo "komo programar un virus?" o "cmo acer un troyano?", etc... Esto sin contar la cantidad de gente que defiende VB sin argumentos, es decir argumentan cosas del tipo "me parece bonito y sencillo de aprender", en vez de basarse en argumentos robustos propios del lenguaje.

Además, uno de los puntos más esenciales en el odio a este (a mi criterio), es que cuando aprendes lenguajes del tipo C/C++, los cuales te ofrecen de manera nativa y sencilla el control total sobre una máquina, y te das cuenta de la utilidad y potencial de dichos lenguajes, empiezas a considerar a lenguajes como VB, lenguajes de juguete (sea o no .NET), ya que te das cuenta que lo único que te ofrecen diferente de C/C++ es un trabajo con la POO más directo... y es aquí donde C# lleva todas las de ganar, por el simple hecho de su sintaxis, la cual es en extremo atractiva al ser tan semejante a C++ (sí, ya sé que Java fue influenciado por C++ y luego C# por Java y C++), pero a lo que voy, es que al existir en .NET un lenguaje como C# que te ofrece lo mismo que VB .NET, te preguntas ¿para qué usar/aprender un lenguaje que en principio no me atrae y siento algo de repudio hacia él*, cuando existe C#, el cual se asemeja mucho más a C++ y me permite un uso idéntico de la plataforma .NET + código inseguro + POO?

* En síntesis, a mi criterio, el rechazo al lenguaje está basado en 3 puntos clave:

  • Su sintaxis: Orientada a noveles, presenta una nueva estructura y obliga al programador a aprender de nuevo otra sintaxis que no se parece en nada a la cual ya venia trabajando.
  • Sus usuarios: Estos defensores que, en general, no saben de qué hablan y se valen de cualquier cosa para defender un lenguaje, a mi criterio, inútil y que lo único que ha logrado (y lo podemos observar a lo largo de la red) es crear muchísimos pseudoprogramadores vagos y prepotentes.
  • Su alcance: En comparación con C#, no he encontrado nada que se pueda hacer en VB que en C# no. Caso contrario si habláramos de VB, pues tendríamos que valernos de artificios para poder llegar a un fin que con C# se lograría de forma sencilla.

Sin embargo, esta es una opinión meramente subjetiva. No puedo firmar que VB sea un mal lenguaje, de hecho, para aquellos que tienen toda su vida programando en VB, todo lo que he dicho anteriormente, es una bonita falacia.

En fin, creo que y sin temor a equivocarme, quienes empezamos a aprender programación desde C/C++ y/o aquellos lenguajes que permiten una interacción más directa con las entrañas del S.O., preferiremos C# antes que VB, por su sintaxis más que nada.

kub0x

Cita de: zShackra en 18 Noviembre 2014, 21:39 PM
Bajo mi punto de vista, creo que el odio viene por su sintaxis y sus usuarios, el/los cual(es) es/son, como se ha dicho anteriormente, un lenguaje con sintaxis para iniciados y por ahí derecho que, quienes lo usan, generalmente son novatos que se creen mecenas, los llamados Script Kiddies o Lamers de la red... adolescentes que en principio lo "aprenden" porque es lo primero que ven en Google al buscar cosas del tipo "komo programar un virus?" o "cmo acer un troyano?", etc... Esto sin contar la cantidad de gente que defiende VB sin argumentos, es decir argumentan cosas del tipo "me parece bonito y sencillo de aprender", en vez de basarse en argumentos robustos propios del lenguaje.

Completamente de acuerdo, sin embargo, para opinar de esta manera tienes que tener experiencia y crítica, un novato siempre va a preferir lo fácil. Aun así tengo compañeros que desarrollan productos muy profesionales en VB .NET. Siendo honestos, VB enseña una sintáxis sacada de la chistera, que nada tiene que ver con la mayoría de los lenguajes comunes. Dejo la lista de lenguajes basados en BASIC: http://en.wikipedia.org/wiki/Generational_list_of_programming_languages#BASIC_based

Cita de: zShackra en 18 Noviembre 2014, 21:39 PM
Además, uno de los puntos más esenciales en el odio a este (a mi criterio), es que cuando aprendes lenguajes del tipo C/C++, los cuales te ofrecen de manera nativa y sencilla el control total sobre una máquina, y te das cuenta de la utilidad y potencial de dichos lenguajes, empiezas a considerar a lenguajes como VB, lenguajes de juguete (sea o no .NET), ya que te das cuenta que lo único que te ofrecen diferente de C/C++ es un trabajo con la POO más directo... y es aquí donde C# lleva todas las de ganar, por el simple hecho de su sintaxis, la cual es en extremo atractiva al ser tan semejante a C++ (sí, ya sé que Java fue influenciado por C++ y luego C# por Java y C++), pero a lo que voy, es que al existir en .NET un lenguaje como C# que te ofrece lo mismo que VB .NET, te preguntas ¿para qué usar/aprender un lenguaje que en principio no me atrae y siento algo de repudio hacia él*, cuando existe C#, el cual se asemeja mucho más a C++ y me permite un uso idéntico de la plataforma .NET + código inseguro + POO?

Estamos empezando a comparar .NET con otros lenguajes y eso nos desvía del tema. C++ le da mil vueltas, la WinAPI te da la libertad y el control que siempre quisiste tener sobre la memoria, excepciones, event loops, hooking, compilado no interpretado, herencia multiple (en .NET es ir poniendo interfaces a lo loco -.-) . Para aprender dignamente necesitas de un buen inglés además de mucha lectura, documentación, esfuerzo y programación. Suelo crear wrappers en algunos proyectos para usar DLLs nativas desde .NET, no veas el buen equipo que hacen.

En fin, todo esto un programador novel no lo sabe, y por lo tanto escogerá aquello que le es más fácil o intuitivo, pero que no digan que VB es más lento que C#, pues esa es otra carrera.

Saludos.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


ivancea96

Yo opto por C#, más que nada porque sigue la sintaxis de C, C++, PHP, Java...

Mientras escribía cambié totalmente de opinión. Iba a poner cosas malas de VB, pero mirando unos códigos por encima, me volvió a gustar xD

Mi mayor problema al programar VB, es que al estar acostumbrado a C y compañía, la sintaxis de VB la tengo que repasar. Aunque bueno, otra razón por la que no lo uso mucho es porque no es 'objetivo'. "IF, THEN, END IF, etc etc". Prefiero ir al grano delimitando funciones y bloques con paréntesis, llaves o tabulaciones (en el caso de Python).