.NET Cap 2/ Lenguajes de programación de .NET / C# vs F# vs VB

En el anterior artículo escribí una introducción completa a la plataforma de Desarrollo de Software .NET; como mencioné, Microsoft .NET desarrolla activamente tres lenguajes de programación: C#, F# y Visual Basic (VB), adicionalmente está el lenguaje J# (J Sharp), que es un lenguaje transicional para programadores de java y J++, sin embargo dejó de producirse en el año 2008, por otra parte, es un error muy común, decir que C++ está dentro de .NET, tampoco existe C++ .NET. El lenguaje C++ cuenta con su propio compilador, en la que C++ no puede entrar directamente a la plataforma .NET, ya que hay cosas que .NET no soporta. Por lo tanto Microsoft creo C++/CLI, que es básicamente C ++ con extensiones de Microsoft que le permiten escribir código dirigido a .NET Framework, pero C++ no se incluye en .NET. En conclusión, los únicos lenguajes de .NET son C#, F# y VB, que os detallaré cada uno de ellos, incluyendo ejemplos prácticos:


C Sharp

C# es un lenguaje de programación simple, eficaz, moderno, orientado a objetos, seguridad de tipos e incluye soporte para programación orientado a componentes, C Sharp tiene sus raíces en la familia del lenguaje C, y eso hará que nos familiaricemos mucho más rápido con C++, java y JavaScript; esto no va al tema de este artículo, pero veamos un ejemplo para entender mejor.

Supongamos que nos solicitan crear una simple aplicación que permita determinar si la suma de dos números es mayor o menor de 10; tendríamos la siguiente la codificación de los 4 lenguajes de programación del estilo C:

Codificación C#

static void Main(string[] args)
{
	int numl = 5;
	int num2 = 3;
	if ((numl + num2) > 10){
		Console.WriteLine("la suma entre " + numl +
			" + " + num2 + " SI es mayor a 10");
	}
	else {
		Console.WriteLine("la suma entre " + numl +
			" + " + num2 + " NO es mayor a 10");
	}
	Console.ReadKey();
}

Codificación JavaScript

<html>
<body>
<script>
	var numl = 5;
	var num2 = 3;
	if ((numl + num2) > 10){
		document.write("la suma entre " + numl +
			" + " + num2 + " SI es mayor a 10");
	}
	else {
		document.write("la suma entre " + numl +
			" + " + num2 + " NO es mayor a 10");
	}
</script>     
</body>
</html>

Codificación Java

public static void main(String[] args) {
	int numl = 5;
	int num2 = 3;
	if ((numl + num2) > 10){
		System.out.println("la suma entre " + numl +
			" + " + num2 + " SI es mayor a 10");
	}
	else {
		System.out.println("la suma entre " + numl +
			" + " + num2 + " NO es mayor a 10");
	}
}

Codificación C++

int _tmain(int argc, _TCHAR* argv[])
{
	int numl = 5;
	int num2 = 3;
	if ((numl + num2) > 10){
		cout<< "la suma entre " + numl <<
			" + " << num2 << " SI es mayor a 10";
	}
	else {
		cout<<"la suma entre " + numl <<
			" + " << num2 << " NO es mayor a 10";
	}
	return 0;
}

Si observamos los códigos, la sintaxis es la misma, como las condiciones, las llaves, paréntesis, punto y coma, lo que cambia es la manera de imprimir. Cabe mencionar que el lenguaje C es el padre de C++, C #, java, JavaScript y entre otros.

Continuando… C#  permite desarrollar aplicaciones multiplataforma, como Linux, Windows, Mac, iOS, Android, tvOS, entre otras,  varias características de C# nos ayuda a construir aplicaciones sólidas y duraderas gracias a que recolecta automáticamente los elementos no utilizados de la memoria, como también está el control de excepciones que proporciona un enfoque estructurado y extensible para la detección de errores y la recuperación.


Visual Basic

Visual Basic está diseñado para crear aplicaciones con seguridad de tipos orientadas a objetos, además es un lenguaje fácil de aprender ya que usa una sintaxis más cercana al idioma normal, lo que a menudo facilita el trabajo a las personas sin experiencia en desarrollo de software.

Ofrece una manera rápida y sencilla de crear aplicaciones basadas en .NET Framework, con Visual Basic solo se puede desarrollar aplicaciones para la plataforma Windows, pero es posible integrar clases portables o bibliotecas .NET Estándar codificadas con Visual Basic a proyectos Xamarin.

Visual Basic no es estricto al tipo de datos, es decir, no es necesario especificar si el tipo de dato es número, cadena, decimal, etc., el tipo de dato de una variable se asigna automáticamente al darle un valor (Dim variable=10.8 – por defecto será decimal). Sin embargo, en ciertas ocasiones si es necesario especificar el tipo de dato (Dim variable as Double=10.8). Veamos como seria la codificación del mismo ejemplo anterior:

Codificación Visual Basic / Ejemplo

Private Shared Sub Main(ByVal args As String())
    Dim numl = 5 'Sin tipo de dato
    Dim num2 As Integer = 3 'con tipo de dato

    If (numl + num2) > 10 Then
        Console.WriteLine("la suma entre " & numl & " + " & num2 & " SI es mayor a 10")
    Else
        Console.WriteLine("la suma entre " & numl & " + " & num2 & " NO es mayor a 10")
    End If
    Console.ReadKey()
End Sub

F Sharp

F# es un lenguaje de programación principalmente funcional, consiste principalmente en definir tipos y funciones que son de tipo inferido y generalizadas automáticamente. Esto permite que su enfoque permanezca en el dominio del problema y manipule sus datos, en lugar de los detalles de la programación, ofrece interoperabilidad limpia con C # y bases de código existentes. También admite la programación tradicional imperativa y orientada a objetos.

Resulta muy sencillo escribir código correcto y fácil de mantener, del mismo modo que C#, F# nos permite desarrollar aplicaciones multiplataforma; la programación asincrónica de F# es superior a C# o VB. Sin embargo, solo se puede crear aplicaciones de consola o proyectos de bibliotecas de clases F#, como mencioné anteriormente, la prioridad de F# es la programación funcional, en el cual podemos definir funciones complejas de manera sencilla, y consumirla desde otras aplicaciones de gran tamaño o juegos. Pasemos al ejemplo, realizaré el mismo ejercicio de C# y VB.

Codificación F# / Ejemplo

open System
let numl = 5.5
let num2 = 3.4
if((numl+num2)>10.0)then
        Console.WriteLine("la suma entre "+numl.ToString()+
            " + " + num2.ToString () + " SI es mayor a 10")         
else 
        Console.WriteLine("la suma entre "+numl.ToString()+ 
            " + " + num2.ToString () + " NO es mayor a 10") 
Console.ReadKey()

En F# no es muy importante el uso de clases, podemos escribir operaciones o funciones directamente en el archivo del código fuente e invocarlo por el nombre de archivo/función.


C# vs F# vs VB

La pregunta del millón,¿cuál es el mejor lenguaje?, el famoso y conocido versus de lenguajes (C# versus F# versus VB); en mi opinión personal, no puede haber un versus entre estos lenguajes, tal vez preguntarán ¿Pero por qué? La respuesta es simple: Visual Basic puede hacer todo lo que puede hacer C#, pero…  hablando en la plataforma Windows; C# tiene la ventaja de poder crear aplicaciones multiplataforma, compatible con Xamarin con la cual podemos crear aplicaciones para iOS, Android, tvOS…

La pregunta del millón, ¿cuál es el mejor lenguaje?, el famoso y conocido versus de lenguajes (C# versus F# versus VB); en mi opinión personal, no puede haber un versus entre estos lenguajes, tal vez preguntarán ¿Pero por qué? La respuesta es simple: Visual Basic puede hacer todo lo que puede hacer C#, pero…  hablando en la plataforma Windows; C# tiene la ventaja de poder crear aplicaciones multiplataforma, compatible con Xamarin con la cual podemos crear aplicaciones para iOS, Android, tvOS…

Mucho menos podemos comparar F# versus VB y C# , ya que sería lo mismo que comparar sandillas y zapallos; F# fue hecho principalmente para crear proyectos de biblioteca de clases de F#, en el cual contiene funciones, algoritmos, escrito de manera simple, pero resuelve problemas complejos, tales como motores de cálculo, servicios analíticos, juegos, aprendizaje automático, etc., podemos crear el software más robusto, eficiente y rápida gracias a que estos tres lenguajes son interoperables entre sí, es decir son compatibles y puede coexistir en una sola aplicación, por ejemplo podemos crear una aplicación usando C# y F#, aplicando dos paradigmas programación: Programación orientada a objetos y Programación Funcional, te recomendaría averiguar las ventajas de la programación funcional sobre orientada a objetos y viceversa, donde podemos aprovechar al máximo las ventajas de cada uno, de hecho ahora los desarrolladores de software experimentados hacen eso.

Bueno eso sería todo en este artículo, espero que te sea de utilidad, en el próximo post realizaré un ejercicio práctico de Interoperabilidad de lenguajes .NET, en el cual se creará un proyecto utilizando C#, F# y Visual Basic.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *