Articulo de referencia

Comparación de C# y Visual Basic .NET

C# y Visual Basic (.NET) son los dos lenguajes de programación principales que se utilizan para programar en el entorno .NET . Historia del lenguaje C# y VB.NET son lenguajes mu...

C# y Visual Basic (.NET) son los dos lenguajes de programación principales que se utilizan para programar en el entorno .NET .

Historia del lenguaje

C# y VB.NET son lenguajes muy diferentes en sintaxis e historia.

Como su nombre indica, la sintaxis de C# se basa en el lenguaje de programación C, desarrollado originalmente por Dennis Ritchie en Bell Labs (AT&T) en la década de 1970. [ 1 ] Java y C++ son otros dos lenguajes de programación cuya sintaxis también se basa en la de C, [ 2 ] por lo que comparten una apariencia similar. Consulte la sección «Comparación entre C# y Java» para obtener más información sobre este tema.

Las raíces de BASIC se remontan al Dartmouth College . [ 3 ] BASIC (Beginner's All-purpose Symbolic Instruction Code) se desarrolló en la década de 1960 como un método para superar las dificultades de usar lenguaje ensamblador escrito para mainframes y hardware específicos de procesador y/o marca. La programación dependía del hardware por diseño, más por razones de marketing que para preservar la composición lógica de la programación que debería trascender el hardware. (La fama de Microsoft con su sistema operativo fue liberar a los consumidores de dispositivos específicos de hardware al encapsular esas tareas dentro de su sistema operativo). El código se volvió "portátil" gracias al compilador, y de hecho, tanto Visual Basic .NET como C# usan el mismo CLR (Common Language Runtime) hoy en día. Microsoft y HP estaban interesados ​​en crear un lenguaje estándar ISO, que era el objetivo original; sin embargo, HP dejó de apoyarlo y el lenguaje de computadora ISO nunca se materializó como un estándar internacional.

VB.NET tiene sus raíces en BASIC. En sus inicios, BASIC se utilizaba en el ámbito universitario como un lenguaje básico para quienes se iniciaban en la programación informática, y el acrónimo representaba con precisión el lenguaje. En la década de 1970, los fabricantes de microordenadores de la época adoptaron el lenguaje para usarlo como un lenguaje de programación integrado en ROM y como una especie de sistema operativo para el control de entrada/salida. A principios de la década de 1980, Microsoft adoptó el lenguaje y lo expandió significativamente más allá de su propósito original, dando lugar a su lenguaje/plataforma "Visual Basic", que se comercializó durante la década de 1990 como una herramienta de "desarrollo rápido de aplicaciones" (RAD) para la programación de Windows. [ 4 ] Compitió directamente con otras herramientas RAD de la década de 1990, como PowerBuilder . [ 5 ] Aunque Visual Basic fue una plataforma de desarrollo exitosa, se descontinuó después de su sexta versión (VB6) cuando Microsoft introdujo .NET Framework y su plataforma de desarrollo Visual Studio a principios de la década de 2000. En aquel entonces, Microsoft utilizaba los lenguajes C++ y VB6 como base para dos nuevos lenguajes de programación en su nuevo "Entorno de Desarrollo Integrado (IDE)". Estos lenguajes se denominaron C# y VB.NET.

En febrero de 2017, Microsoft comunicó su intención de poner fin a la estrategia de "coevolución" entre ambos lenguajes, vigente desde 2010, y permitir que volvieran a evolucionar de forma independiente. Actualmente, C# es el lenguaje de desarrollo dominante basado en Microsoft. Los desarrolladores notarán que VB 15 (que apareció por primera vez en Visual Studio 2017) carece de ciertas funcionalidades presentes en el nuevo C# 7.3. [ 6 ]

Comparación de idiomas

Aunque C# y VB.NET son sintácticamente muy diferentes, ahí terminan la mayoría de las diferencias. Microsoft desarrolló ambos lenguajes para que formaran parte de la misma plataforma de desarrollo .NET Framework. Ambos son desarrollados, administrados y respaldados por el mismo equipo de desarrollo de lenguajes de Microsoft. [ 7 ] Se compilan al mismo lenguaje intermedio (IL), que se ejecuta con las mismas bibliotecas de tiempo de ejecución de .NET Framework. [ 8 ] Si bien existen algunas diferencias en las estructuras de programación (que se analizan más adelante), sus diferencias son principalmente sintácticas y, suponiendo que se eviten las bibliotecas de "compatibilidad" de Visual Basic proporcionadas por Microsoft para facilitar la conversión desde VB6, casi todos los comandos en VB tienen un comando equivalente en C# y viceversa. Por último, ambos lenguajes hacen referencia a las mismas clases base de .NET Framework para extender su funcionalidad. Como resultado, con pocas excepciones, un programa escrito en cualquiera de los dos lenguajes puede ejecutarse a través de un simple convertidor de sintaxis para traducirlo al otro. Existen muchos productos de código abierto y comerciales disponibles para esta tarea. Las únicas diferencias fundamentales entre ambos lenguajes radican en la implementación de las interfaces y en la declaración, generación y manejo de eventos. Si bien ambos son lenguajes de programación de alto nivel , VB.NET mantiene un nivel de abstracción ligeramente superior en algunos aspectos.

Compatibilidad con varios idiomas en tiempo de ejecución

Uno de los principales objetivos de .NET ha sido su compatibilidad con múltiples idiomas. La intención del diseño era que todos los lenguajes de Microsoft tuvieran el mismo nivel de acceso a todas las funciones del sistema operativo , pudieran ofrecer el mismo nivel de potencia y facilidad de uso , y simplificaran la llamada desde un módulo escrito en un idioma a otro escrito en otro idioma.

En la práctica, todos los lenguajes de programación .NET comparten el mismo motor de ejecución, árbol de sintaxis abstracta uniforme y lenguaje intermedio común . Además, todos los lenguajes .NET tienen acceso a las características de la plataforma, como la recolección de basura, la herencia entre lenguajes, el manejo de excepciones y la depuración . Esto permite generar el mismo archivo binario de salida desde cualquier lenguaje de programación .NET.

Entorno de desarrollo

Visual Studio presenta pequeñas diferencias en el entorno de desarrollo para C# y VB.Net. Con cada nueva versión de Visual Studio, las diferencias entre los entornos de desarrollo para estos lenguajes se han reducido. Por ejemplo, las primeras versiones de Visual Studio tenían un soporte deficiente para Intellisense en C# en comparación con Visual Basic .NET, y no ofrecían compilación en segundo plano para C#. [ 9 ] Actualmente, las principales diferencias en los entornos de desarrollo son las características adicionales para Visual Basic .NET que se originaron en VB6, entre las que se incluyen:

  • El espacio de nombres predeterminado está oculto (pero se puede deshabilitar).
  • Algunos archivos del proyecto están ocultos (el usuario puede mostrarlos).
  • Los espacios de nombres generados automáticamente My.*contienen muchos accesos directos de uso común heredados de VB6, como métodos para operar en el registro y el archivo de configuración de la aplicación.

La compilación en segundo plano es una característica del IDE de Visual Studio que compila el código a medida que lo escribe el programador, con el fin de identificar errores de compilación sin necesidad de compilar la solución. Esta característica está disponible para Visual Basic desde .NET 1.1 y estaba presente en las primeras versiones de Visual Studio para Visual Basic .NET. Sin embargo, la compilación en segundo plano es un concepto relativamente nuevo para Visual C# y está disponible con el Service Pack 1 para Visual Studio 2008 Standard Edition y versiones posteriores. Una clara desventaja para C# es que el panel Lista de errores no se actualiza hasta que se recompila la solución. La refactorización de proyectos grandes en C# se dificulta por la necesidad de recompilar la solución con frecuencia para resaltar los errores de compilación. [ 10 ] Este no es el caso con Visual Basic porque el panel Lista de errores está sincronizado con el compilador en segundo plano.

La compilación en segundo plano requiere menos recursos del sistema y da como resultado ciclos de compilación más rápidos. [ 10 ] Esta es una ventaja particular en proyectos grandes y puede reducir significativamente el tiempo necesario para comenzar la depuración en el IDE. [ 10 ]

Características del idioma

Desde una perspectiva técnica, la mayoría de las diferencias entre C# y VB.NET son de mera sintaxis . Es decir, la mayoría de las características están presentes en ambos lenguajes, pero algunas tareas son más fáciles de realizar en uno que en el otro. Muchas de las diferencias entre ambos lenguajes se centran en el entorno de desarrollo integrado (IDE) .

Características de Visual Basic .NET que no se encuentran en C#.

  • Las variables se pueden declarar utilizando esta WithEventsconstrucción. Esta construcción está disponible para que un programador pueda seleccionar un objeto de la lista desplegable Nombre de clase y luego seleccionar un método de la lista desplegable Declaraciones para que se inserte automáticamente la firma del método.
  • Conexión automática de eventos. VB.NET tiene una Handlessintaxis para eventos que conecta los controladores de eventos a variables de objeto en lugar de a objetos.
  • La activación de eventos se realiza con la RaiseEventpalabra clave, lo que permite al IDE mostrar una lista de eventos disponibles para elegir. RaiseEventImplícitamente, comprueba si hay algún controlador de eventos configurado. (En C#, generar un evento es sintácticamente idéntico a llamar a un procedimiento y requiere una línea de código adicional para comprobar si hay controladores de eventos configurados).
  • Los delegados para los eventos no necesitan ser declarados. Se declaran implícitamente en la declaración de los eventos.
  • Hacer referencia a un objeto usando una referencia de punto no calificada, usando la With ... End Withestructura
  • Literales XML [ 11 ]
  • Declaraciones de fecha en línea, por ejemplo#12/31/2000#
  • Module(Aunque las clases estáticas de C# tienen semántica adicional, cada campo debe declararse individualmente como estático).
  • Se puede acceder a los miembros de Modules importados al archivo actual sin ningún accesor de contenedor previo [ 12 ].
  • El Myespacio de nombres. [ 13 ]
  • Los componentes COM y la interoperabilidad eran más potentes en VB.NET, ya que el tipo Object se enlaza en tiempo de ejecución; [ 14 ] sin embargo, C# 4.0 añadió el dynamictipo, que funciona como una forma de enlace tardío de Object
  • Los espacios de nombres se pueden importar a nivel de proyecto, de modo que no sea necesario importarlos en cada archivo individual, como en C#.
  • Definición de constantes de compilador condicional
  • Los métodos de propiedad pueden aceptar parámetros.
  • Las propiedades se pueden pasar a métodos con ByRefparámetros ( refparámetros en C#). En C#, hay que escribir tres instrucciones adicionales: declarar una variable, copiar el valor de la propiedad en la variable y copiar la variable de vuelta a la propiedad después de la llamada al método.
  • Enums se pueden definir dentro de las interfaces
  • CaseLas sentencias pueden contener expresiones de desigualdad, como Is >= 3. (en C# esto se puede simular con sentencias anidadas Else) If. Ahora compatible con el lenguaje C# 8.0.
  • OverloadsLa palabra clave especifica que una propiedad o procedimiento redeclara una o más propiedades o procedimientos existentes con el mismo nombre dentro de la misma clase o la clase base. (La ausencia de esta palabra clave en C# podría provocar una sobrecarga involuntaria).
  • ImplementsPalabra clave para indicar qué interfaces implementa un miembro de una clase. En C# existe una sintaxis similar, pero es opcional y solo se puede aplicar si el miembro implementa una única interfaz.
  • LikeOperador para la comparación de patrones de cadenas de una manera mucho más sencilla que usando expresiones regulares. (En C#, esto mismo está disponible con el método Microsoft.VisualBasic.CompilerServices.LikeOperator.LikeString, pero no como una palabra clave del lenguaje).
  • ReturnLa instrucción no es necesaria. El retorno también se puede realizar asignando el valor a la función.
  • Visual Basic tiene constantes incorporadas como vbCrLf yvbTab
  • No outexiste ningún modificador de parámetros, ya que en VB todas las variables se inicializan automáticamente.
  • La MyClasspalabra clave se comporta como una variable de objeto que hace referencia a la instancia actual de una clase tal como se implementó originalmente. MyClassEs similar a Me, pero todas las llamadas a métodos en ella se tratan como si el método no fuera sobrescribible.
  • MyBase.NewSe utiliza para llamar explícitamente a un constructor de clase base desde un constructor de clase derivada.
  • Esta Myfunción proporciona un acceso fácil e intuitivo a varias clases de .NET Framework, lo que permite al usuario de Visual Basic interactuar con el equipo, la aplicación, la configuración, los recursos, etc.
  • Las variables locales (es decir, las variables declaradas dentro de un procedimiento) se inicializan automáticamente.
  • Las variables locales se pueden declarar con el Staticmodificador para conservar su valor entre las llamadas al procedimiento.
  • La Defaultdeclaración convierte una propiedad en un índice y permite usar la sintaxis más corta para recuperaciones de colecciones como MyCollection(5). C# tiene una construcción similar que reutiliza la palabra clave thiscomo nombre de la propiedad. Se pueden declarar varios indexadores usando claves de diferentes tipos, por ejemplo MyCollection(5)o MyCollection("Bob").
  • C# carece de DirectCast(mapeo a una sola instrucción CLR), la conversión de tipo estricta se puede lograr mediante el asoperador que incluye una protección adicional contra errores en tiempo de ejecución.
  • C# carece de una Endinstrucción que finalice abruptamente una aplicación.
  • Inferencia de expresiones lambdaDim x = Function(n As Integer) n + 1

Características de C# que no se encuentran en Visual Basic .NET

  • Uso de estructuras de referencia de C# en VB.NET  : Puede encontrar información detallada, por ejemplo, aquí  : https://www.vbforums.com/showthread.php?889867-Use-C-ref-struct-in-VB-NET-Today-And-vote-against-preventing-this-in-Roslyn
  • Comentarios de varias líneas. En VB, esto se gestiona en el editor IDE de Visual Studio, que añade marcadores de comentarios a las selecciones.
  • Clases estáticas (clases que no pueden contener miembros no estáticos, aunque los módulos de VB.NET son esencialmente clases estáticas con semántica adicional).
  • Se pueden usar checkedcontextos uncheckedpara un control preciso de la comprobación de desbordamiento/subdesbordamiento.
  • Los bucles iterativos for pueden contener múltiples condicionales, como for(int i = 0; i < 10 && somethingTrue; i++). Esto es una herencia de C, donde la forinstrucción es básicamente azúcar sintáctico para una whileinstrucción.
  • Los métodos getter y setter de una propiedad pueden implementar interfaces diferentes. En VB, en cambio, tendrías que definir dos propiedades: una propiedad de solo lectura que implemente una interfaz y una propiedad de solo escritura que implemente la otra interfaz.
  • Implementación de interfaz implícita
  • Se puede usar el operador coalesce ??para devolver el primer valor no nulo (por ejemplo, devuelve ). VB.NET tendría que usar la función con dos parámetros, por ejemplo, devuelve .null ?? null ?? 11IfIf(Nothing, If(Nothing, 1))1
  • Punteros (en el contexto no seguro)
  • Operador condicional  ?: . VB.NET tendría que usar la función con tres parámetros, es decir .(someThingTrueOrFalse) ? whenTrue() : whenFalse();IfIf(someThingTrueOrFalse, whenTrue(), whenFalse())

Otras características de Visual Basic .NET no aplicables a C#

  • La conversión de un valor booleano verdadero a un entero puede dar como resultado -1 o 1, dependiendo de la conversión utilizada.
  • La asignación y comparación de variables utiliza el mismo token: =. Mientras que C# tiene tokens separados, ==para la comparación y =para asignar un valor.
  • Los identificadores de VB.NET no distinguen entre mayúsculas y minúsculas.
  • Al asignar un valor a una variable con un tipo de datos diferente (y con Option Strictla opción desactivada), VB.NET convertirá el valor si es posible. Esta conversión automática a veces puede generar resultados inesperados, por ejemplo:
Dim i As Integer = "1" 'El compilador convierte automáticamente String a Integer Dim j As String = 1 'El compilador convierte automáticamente Integer a String If i = j Then 'El compilador realiza la conversión y compara i y j MsgBox ( "Evite usar, ¡pero aparecerá este mensaje!" ) End If

Aunque por defecto está Option Strictdesactivado por motivos de compatibilidad con versiones anteriores, Microsoft recomienda [ 15 ] y se considera una buena práctica activarlo Option Strict, ya que aumenta el rendimiento de la aplicación y reduce la posibilidad de errores de nomenclatura y otros errores de programación. [ 16 ]

  • Val()Función que también analiza un valor nulo al convertirlo a double (en C# Convert.ToDouble()se utiliza para convertir cualquier objeto en un valor de tipo double, pero que lanza una excepción en caso de un valor nulo).
  • CInt, CStr, CByte, CDbl, CBool, CDate, CLng, CCur, CObj y una amplia variedad de funciones de conversión integradas en el lenguaje.

Otras características de C# no aplicables a Visual Basic .NET

  • Por defecto, las operaciones numéricas no se comprueban. Esto resulta en un código ligeramente más rápido, pero con el riesgo de que no se detecten los desbordamientos numéricos. Sin embargo, el programador puede colocar las operaciones aritméticas en un contexto de comprobación para activar la detección de desbordamientos. (En Visual Basic, esto se puede hacer marcando una opción).
  • Los identificadores de C# distinguen entre mayúsculas y minúsculas.
  • Para asignar el mismo valor a varias variables, puede usar a=b=c.

Comparaciones de sintaxis

Visual Basic .NET finaliza un bloque de código con instrucciones (o instrucciones, en el caso de un bucle for ) que resultan más familiares para los programadores con experiencia en T-SQL . En C#, se utilizan llaves para delimitar bloques, lo que resulta más familiar para los programadores con experiencia en otros lenguajes ampliamente utilizados como C++ y Java . Además, en C#, si un bloque consta de una sola instrucción, se pueden omitir las llaves.End BlockNameNext{}

C# distingue entre mayúsculas y minúsculas, mientras que Visual Basic .NET no. Por lo tanto, en C# es posible tener dos variables con el mismo nombre aparente, por ejemplo, variable1y Variable1. Visual Studio corregirá (uniformizará) el uso de mayúsculas y minúsculas de las variables tal como se escriben en VB.NET. Sin embargo, en algunos casos, la distinción entre mayúsculas y minúsculas puede ser útil. Los programadores de C# suelen escribir con mayúscula inicial los nombres de tipos y miembros, y dejan los nombres de campos y variables en minúsculas. Esto permite, por ejemplo, una denominación bastante natural para los argumentos de los métodos: public int CalculateOrders(Customer customer). Sin embargo, esto puede causar problemas a quienes convierten código C# a un lenguaje que no distingue entre mayúsculas y minúsculas, como Visual Basic, o a quienes no están acostumbrados a leer un lenguaje que sí las distingue.

Palabras clave

Visual Basic no distingue entre mayúsculas y minúsculas, lo que significa que se aceptan todas las combinaciones posibles de letras mayúsculas y minúsculas en las palabras clave. Visual Studio convierte automáticamente todas las palabras clave de Visual Basic a su forma predeterminada en mayúsculas, por ejemplo, "Public" o "If".

C# distingue entre mayúsculas y minúsculas, y todas las palabras clave de C# están en minúsculas.

Visual Basic y C# comparten la mayoría de las palabras clave, con la diferencia de que las palabras clave predeterminadas de Visual Basic son las versiones en mayúsculas de las palabras clave de C#, por ejemplo, Publicvs public, Ifvs if.

Algunas palabras clave tienen versiones muy diferentes en Visual Basic y C#:

  • Friendvs internal- modificadores de acceso que permiten referencias entre clases pero no entre ensamblados, excepto para ensamblados amigos.
  • Mevs this - una autorreferencia a la instancia del objeto actual
  • MustInheritvs abstract - impide que una clase se instancie directamente y obliga a los consumidores a crear referencias de objetos solo a clases derivadas.
  • MustOverridevs abstract- para forzar a las clases derivadas a sobrescribir este método
  • MyBasevs base - para referirse a la clase base de la que se deriva la clase actual
  • NotInheritablevs sealed - para declarar clases que no pueden ser heredadas
  • NotOverridablevs sealed - para declarar métodos que no pueden ser sobrescritos por clases derivadas
  • Overridablevs virtual- declara que un método puede ser sobrescrito en clases derivadas
  • Overridesvs override - para marcar un método virtual como sobrescrito
  • Sharedvs static- para declarar métodos que no requieren una instancia explícita de un objeto

Algunas palabras clave de C# representan sealedcosas diferentes cuando se aplican a métodos que cuando se aplican a definiciones de clases. VB.NET, por otro lado, utiliza palabras clave diferentes para distintos contextos.

Comentarios

Condicionales

Bucles

Comparadores

Tipos primitivos

Tipos de objetos

Adopción y apoyo comunitario

Tanto C# como VB.NET tienen altas tasas de adopción y comunidades de desarrolladores muy activas, y Microsoft apoya plenamente a ambas. Los desarrolladores del framework .NET utilizan ampliamente tanto VB.NET como C# como lenguajes principales. [ 17 ] [ 18 ] Sin embargo, C# tiene mayor actividad comunitaria en Internet y hay más libros disponibles sobre C#. Esto podría indicar una mayor adopción de C# o que los usuarios necesitan más ayuda con él.

Algunos ejemplos de adopción por parte de la comunidad y la industria son:

  • El índice de la comunidad de programación TIOBE de julio de 2010 muestra que C# superó a Visual Basic [ 19 ].
  • El índice de la comunidad de programación TIOBE muestra que VB.NET superó a C# en 2018 [ 20 ].
  • Scott Wiltamuth, uno de los diseñadores originales del lenguaje C#, afirmó en una entrada de blog de marzo de 2010 que "las cifras más fiables que tenemos... muestran una adopción aproximadamente igual" para VB.NET y C#. [ 17 ]
  • Una encuesta de Forrester Research de 2007 reveló que el 59% de los desarrolladores de .NET usaban solo VB.NET para crear software. [ 18 ]
  • Visual Basic Express es la descarga más popular de todas las descargas de Visual Studio Express . [ 21 ]
  • Según una encuesta realizada en noviembre de 2007 por Visual Studio Magazine, "el 41 por ciento dijo que usaba C#, el 34 por ciento programaba en VB.NET, mientras que el 25 por ciento respondió con 'otro'". [ 21 ]
  • Stephen Wiley , gerente de marketing de productos en Apress, informó que "los títulos de C# superan ampliamente en ventas a los libros de títulos de VB.NET, por un margen de entre 2:1 y 3:1". [ 21 ]
  • MSDN Blogs , el sitio de blogs para empleados de Microsoft, tiene 770.000 publicaciones que tratan sobre C#, mientras que solo 378.000 mencionan VB.Net (a fecha de 4 de febrero de 2016).
  • Google Groups , un motor de búsqueda de Usenet , arroja 35.200.000 resultados para "VB .Net" y 244.000.000 para "C#" (a fecha de 4 de febrero de 2016).
  • La encuesta de usuarios desarrolladores de Stack Overflow de 2018 indicó que el 35% de los desarrolladores profesionales usaban C# mientras que solo el 6,9% usaban VB.NET. [ 22 ]

Otros idiomas

C++/CLI (anteriormente Managed C++)

C++/CLI (un reemplazo para Managed Extensions for C++ ) no tiene la misma tasa de adopción que C# o VB.NET, pero sí cuenta con un número significativo de seguidores. Sintáctica, estilística y culturalmente, C++/CLI es el más cercano a C#. Sin embargo, C++/CLI se mantiene más fiel a sus raíces en C++ que C#. C++/CLI admite directamente punteros, destructores y otros conceptos de programación inseguros que no son compatibles o están limitados en los otros lenguajes. Permite el uso directo tanto de código .NET como de código C++ estándar. C++/CLI se utiliza para portar aplicaciones C++ nativas/heredadas al marco .NET, o en casos donde el programador desea tener un mayor control sobre el código; pero este control conlleva una pérdida significativa de facilidad de uso y legibilidad. Muchas de las herramientas automatizadas que vienen con Visual Studio tienen una funcionalidad reducida al interactuar con código C++. Esto se debe a que la reflexión no puede proporcionar tanta información sobre el código como lo hace para C# y VB.NET.

J#

J# ocupa un distante cuarto lugar en la adopción de .NET. J# es un lenguaje diseñado principalmente para facilitar la transición de aplicaciones Java al framework .NET; permite a los desarrolladores mantener gran parte de su código Java o J++ sin cambios mientras lo ejecutan en el framework .NET, lo que les permite migrar pequeñas partes a otro lenguaje .NET, como C#, de forma individual. J# no recibe el mismo nivel de actualizaciones que los demás lenguajes, ni cuenta con el mismo nivel de soporte de la comunidad. Por ejemplo, Visual Studio 2005 Team System admite la generación automática de pruebas unitarias en C#, VB.Net y C++, pero excluye J#. J# se ha descontinuado y no está incluido en Visual Studio 2008 ni en versiones posteriores, ya que el conjunto de características de J# existente satisface en gran medida las necesidades de los clientes y su uso está disminuyendo.

Lenguajes .NET adicionales

Todos los lenguajes .NET se compilan a Common Intermediate Language (CIL), que contiene metadatos detallados y es funcional y lógicamente equivalente al código original del lenguaje .NET. Por estas razones, aunque es posible programar directamente en CIL, rara vez se hace. La equivalencia de CIL con el código del lenguaje .NET permite que herramientas como .NET Reflector transformen un ensamblado .NET en código fuente prácticamente idéntico al original. Los ofuscadores de código se utilizan a menudo para evitar esto y funcionan modificando directamente el CIL de un ensamblado para dificultar o imposibilitar su descompilación a un lenguaje .NET de nivel superior.

Referencias

  1. Ritchie, Dennis (abril de 1993). Chistory (Informe). Bell Labs. Archivado del original el 3 de febrero de 2015. Recuperado el 18 de agosto de 2013 .
  2. "Historia del lenguaje de programación Java" . Freejavaguide.com . Consultado el 18 de agosto de 2013 .
  3. "BÁSICO en Dartmouth"
  4. "El nacimiento de Visual Basic" . Forestmoon.com . Consultado el 18 de agosto de 2013 .
  5. "Historia de Powersoft Historia de PowerBuilder" . Lannigan.org . Consultado el 18 de agosto de 2013 .
  6. "La estrategia del lenguaje .NET" . Febrero de 2017.
  7. Krill, Paul (27 de febrero de 2009). "Microsoft converge los lenguajes de programación | Developer World" . InfoWorld . Consultado el 18 de agosto de 2013 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  8. "Lenguaje intermedio de Microsoft" . Dotnet-guide.com . Consultado el 18 de agosto de 2013 .
  9. Matthew Gertz. "Escalando: El compilador en segundo plano muy ocupado" . Revista MSDN . Archivado del original el 19 de febrero de 2008. Consultado el 16 de diciembre de 2008 .
  10. 1 2 3 "Sistema y metodología que proporciona refactorización asistida por compilador" . Freepatentsonline.com . Consultado el 24 de febrero de 2015 .
  11. Jonathan Allen. "¿Necesita C# los literales XML de VB9?" . Consultado el 13 de enero de 2009 .
  12. "Propiedad DateAndTime.Now (Microsoft.VisualBasic)" . Msdn.microsoft.com. 18 de febrero de 2015. Consultado el 24 de febrero de 2015 .
  13. "Desarrollo con My (Visual Basic)" . Msdn.microsoft.com. 18 de febrero de 2015. Consultado el 24 de febrero de 2015 .
  14. "Enlace temprano vs. enlace tardío" . Visualbasic.about.com. Archivado del original el 25 de febrero de 2015. Consultado el 24 de febrero de 2015 .
  15. "Option Strict Statement" . Msdn.microsoft.com. 18 de febrero de 2015. Consultado el 24 de febrero de 2015 .
  16. GetDotNetCode.com: "Opción estricta activada" . Getdotnetcode.com. Archivado del original el 13 de marzo de 2012. Consultado el 24 de febrero de 2015 .
  17. 1 2 "Coevolución de VB y C#" . MSDN . Consultado el 27 de marzo de 2010 .
  18. 1 2 "Mono lleva los programas de Visual Basic a Linux" . Linux-Watch . Consultado el 25 de marzo de 2010 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  19. "Por primera vez en la historia, C# obtiene una mejor calificación que Visual Basic" . Tiobe.com . Consultado el 24 de febrero de 2015 .
  20. "Índice TIOBE" . TIOBE.com: La empresa de calidad de software . Consultado el 27 de marzo de 2019 .
  21. 1 2 3 Patrick Meader. "El auge de C# en el ámbito de la tecnología" . Visual Studio Magazine, noviembre de 2007. Archivado del original el 20 de abril de 2008. Consultado el 16 de diciembre de 2008 .
  22. "Encuesta a desarrolladores de Stack Overflow 2018" . Stack Overflow . Consultado el 22 de abril de 2018 .

  • Comparación detallada de los lenguajes de Microsoft Visual Studio
  • Equivalencias de lenguaje de Microsoft Visual Studio 2003-2010
  • Programación de Microsoft VSTO con Visual Basic frente a C#
  • CodeProject VB vs C#
  • Diferencias sintácticas entre C# y VB.NET