Red de conocimiento informático - Conocimiento informático - ¿Cuáles son las ventajas de aprender C#?

¿Cuáles son las ventajas de aprender C#?

Ventajas de C# sobre otros lenguajes

C# (pronunciado "C sostenido") es un nuevo lenguaje de programación lanzado por Microsoft en junio pasado y planeado para ser utilizado en el debut del Foro de desarrolladores profesionales (PDC) de Microsoft. C# tiene un aspecto sorprendentemente similar a Java; incluye características como herencia única, interfaces, una sintaxis casi idéntica a Java y un proceso que compila en código intermedio y luego lo ejecuta. Pero C# tiene diferencias obvias con Java. Toma prestada una característica de Delphi, está directamente integrado con COM (Modelo de objetos componentes) y es el protagonista del marco de red de Windows .NET de Microsoft.

En este artículo, exploraré las motivaciones generales para crear nuevos lenguajes informáticos y explicaré específicamente qué llevó al surgimiento de C#. Luego, describiré C# y sus similitudes con Java, C y C++. Luego, discutiré algunas diferencias fundamentales de alto nivel entre Java y C#. Al final de este artículo, mediré el conocimiento (o la falta del mismo) necesario para desarrollar aplicaciones grandes en múltiples lenguajes, que es una de las principales estrategias para .NET. Actualmente, C# y .NET sólo están disponibles como reglas del lenguaje C#, una versión "d-preview" de Windows 2000 y un conjunto de documentación en rápido crecimiento en MSDN (aún no finalizado).

La definición del lenguaje C# de Microsoft se hereda en gran medida de C y C++, y muchos elementos del lenguaje reflejan esto. C# hereda más opciones de diseño (como estructuras) de C++ que Java, pero también agrega nuevas características propias (como el control de versiones del código fuente). Sin embargo, es demasiado inmaduro para competir con Java. C# todavía necesita evolucionar hacia un lenguaje que los desarrolladores puedan aceptar y adoptar. Es de destacar la actual campaña promocional de Microsoft para su nuevo lenguaje. Hasta ahora, la respuesta ha sido "esto es una respuesta a Java".

C# se parece más a Java, aunque Microsoft no dice nada al respecto. Creo que esto es de esperarse, ya que las empresas que utilizan Java debido a su reciente éxito informan mejoras de productividad con respecto a C++.

El número de programadores que utilizan el lenguaje y la plataforma Java (aproximadamente 2,5 millones de programadores en todo el mundo***) demuestra claramente la influencia de Java y su amplia aceptación. La cantidad de aplicaciones escritas en este lenguaje es asombrosa y ha permeado todos los aspectos de la informática, incluida la informática inalámbrica y los teléfonos móviles (como el teléfono Java inventado en Japón). ¿Puede C# ganar tanta popularidad entre su base de usuarios? Tendremos que esperar y ver, como señala Kalpathi S. Suresh, CEO y presidente de SSI: "Creo que todo es incremental. Si C# no existe, siempre podemos volver a Java o C y C++. No son nuevas tecnologías. En un sentido más amplio, son simplemente trucos de marketing creados por grandes empresas. Debemos darles tiempo para que se asienten y vean si estas tecnologías realmente tendrán un impacto en la industria de TI.

Características de C# heredadas de Java

Clases: Las declaraciones de clases en C# son muy similares a las de Java. Esto tiene sentido porque la experiencia nos dice que la palabra clave de Java import ha sido reemplazada por usando. El punto de partida para la ejecución de la clase es el método estático Main(). El siguiente programa Hello World muestra su forma básica:

using System;

class Hello {

<. p>static void Main() {

Console.WriteLine("Hola, mundo");

Este espacio de nombres contiene la clase Consola, que se utiliza en este ejemplo. Genera un cadena. Una clase puede ser abstracta o no heredable: una clase declarada como abstracta no puede ser instanciada y solo puede usarse como clase base.

La palabra clave lock de C#, al igual que la palabra clave final de Java, declara que la clase no es una clase abstracta, pero no puede usarse como clase base para otras clases. Interfaz: al igual que Java, una interfaz es una definición abstracta de una colección de métodos. Cuando una clase o estructura implementa una interfaz, debe implementar todos los métodos definidos en la interfaz. Una clase puede implementar múltiples interfaces. Puede haber ligeras diferencias en el futuro, pero esta característica parece no haber cambiado con respecto a Java. Operaciones booleanas: el resultado de una expresión condicional es un tipo de datos booleanos, que es un tipo de datos independiente en el lenguaje. Los tipos booleanos no se pueden convertir directamente a otros tipos. Las constantes booleanas verdadero y falso son palabras clave en C#. Manejo de errores Como en Java, el manejo de errores se gestiona lanzando y capturando objetos de excepción. Gestión de la memoria: el .NET Framework subyacente recopila automáticamente la basura de la memoria.

Características de C# heredadas de C y C++

Compilación: el programa se compila directamente en un formato ejecutable binario estándar. Si el programa Hello World anterior se guardara como un archivo de texto llamado Hello.cs, se compilaría en un programa ejecutable llamado Hello.exe.

Estructuras: Las estructuras de C# son similares a las estructuras de C++ en que pueden contener declaraciones de datos y métodos. Sin embargo, a diferencia de C++, las estructuras de C# son diferentes de las clases y no admiten la herencia. Sin embargo, al igual que Java, las estructuras se pueden implementar como interfaces.

Precompilación: las directivas de precompilación en C# admiten compilación condicional, advertencias, informes de errores y control de línea de compilación. Las directivas de precompilación disponibles son:

#define

#undef

#if

#elif

#else

#endif

#warning

#error

#line []

Sin #include , no no hay #include.

No hay ninguna directiva #include. Ya no puede asignar valores a los símbolos usando declaraciones #define, por lo que no existe el concepto de reemplazo del código fuente; estos símbolos solo se pueden usar dentro de las directivas #if y #elif. Los números (nombres opcionales) en la directiva #line modifican el número de línea y el nombre de archivo de la salida #warning y #error.

Sobrecarga de operadores: Algunos operadores pueden verse sobrecargados, mientras que otros no. En particular, ninguno de los operadores de asignación puede sobrecargarse. Los operadores unarios que se pueden sobrecargar son:

+ -! ~ ++ -- true false

Los operadores binarios que se pueden sobrecargar son:

+ - * / % & ^ << >> ==! = > < >=<=

Características únicas de C#

El aspecto más atractivo de C# son sus diferencias con Java, no sus similitudes. Esta sección (y la mayor parte de la segunda parte de esta serie) describirá qué características implementa C# que son diferentes de Java, o que Java no tiene en absoluto.

Código intermedio: Microsoft ofrece a los usuarios mucha libertad para elegir cuándo compilar MSIL en código de máquina. Microsoft tiene cuidado de afirmar que MSIL no es código interpretado, sino código compilado en código de máquina. Microsoft también entiende que muchos, si no la mayoría, de los programadores creen que los programas Java son necesariamente más lentos que los programas escritos en C. Esta implementación dicta que los programas basados ​​en MSIL (es decir, programas escritos en C#, Visual Basic, "C++ administrado", versiones de C++ compatibles con CLS, etc.) serán preferidos al código Java "interpretado". Por supuesto, esto aún no se ha verificado, ya que C# y otros compiladores que generan MSIL aún no se han lanzado. Pero la popularidad de los compiladores Java JIT ha hecho que el rendimiento de Java y C# sea relativamente comparable.

Declaraciones como "C# es un lenguaje compilado y Java es un lenguaje interpretado" son sólo tácticas comerciales. El código intermedio de Java y MSIL son lenguajes intermedios en formato ensamblador que se compilan en código de máquina en tiempo de ejecución u otros momentos.

Declaraciones en un espacio de nombres: Cuando creas un programa, creas una o más clases en un espacio de nombres. También puedes declarar interfaces, tipos enumerados y estructuras en un espacio de nombres (fuera de una clase). Debe utilizar la palabra clave using para hacer referencia a contenido de otros espacios de nombres.

Tipos de datos básicos: C# tiene una gama más amplia de tipos de datos que C, C++ o Java. Estos tipos incluyen bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double y decimal. Al igual que Java, todos estos tipos tienen un tamaño fijo. Al igual que Java, todos estos tipos tienen un tamaño fijo. Como en C y C++, cada tipo de datos tiene tipos con y sin signo. Al igual que Java, una variable de carácter contiene un carácter Unicode de 16 bits. Un nuevo tipo de datos en C# es el tipo de datos decimal, que contiene 28 dígitos decimales para datos monetarios.

Dos clases básicas: Una clase llamada Objeto es la clase base para todas las demás clases. Una clase llamada cadena es tan parte del lenguaje como los objetos. Ser parte del lenguaje significa que el compilador puede usarlo: cada vez que escribe una cadena entrecomillada en su programa, el compilador crea un objeto de cadena para contenerla.

Paso de parámetros: Se pueden declarar métodos para recibir un número variable de parámetros. El método predeterminado para pasar parámetros es pasar valores de tipos de datos básicos. La palabra clave ref se puede utilizar para forzar que una variable se pase por referencia, permitiendo que la variable acepte un valor de retorno. La palabra clave out también declara el proceso de paso de referencia. La diferencia con ref es que la palabra clave out especifica que el parámetro no requiere un valor inicial.

Integración con COM: Quizás el mayor punto de venta de C# en los programas de Windows es su perfecta integración con COM (la tecnología de componentes Win32 de Microsoft). De hecho, con el tiempo será posible escribir clientes y servidores COM en cualquier lenguaje .NET. Una clase escrita en C# puede subclasificar un componente COM existente; la clase generada también se puede utilizar como componente COM y el lenguaje JScript puede luego subclasificarla para obtener un tercer componente COM. El resultado de este fenómeno es la creación de un entorno de ejecución en el que los componentes son servicios web que pueden subclasificarse en cualquier aplicación .NET.

Subíndice de índice: un índice es similar a una propiedad, pero en lugar de usar el nombre de la propiedad para referirse a los miembros de la clase, el índice se refiere a la propiedad de forma anónima a través de un número entre corchetes (como un subíndice de matriz). .

ListBox de clase pública: controla {

cadena privada[] elementos;

cadena pública esto[int index] {

obtener {

devolver elementos[][index];

devolver elementos[][index];

Esta es una referencia anónima a un miembro de la clase. índice];

}

establecer {

elementos[índice] = valor;

Repintar();

}

}

}

}

}

Se puede hacer referencia a los caracteres internos de forma anónima utilizando un looper Miembros de la matriz de cadenas, como se muestra a continuación.

ListBox listBox = ... ;

listBox[0] = "hola";

Console.WriteLine(listBox[0]);

Proxies y comentarios: los objetos proxy contienen la información necesaria para acceder a métodos específicos de un objeto específico. Piense en ello como un indicador de método inteligente. El objeto proxy se puede mover a otra ubicación y luego acceder a él para realizar llamadas con seguridad de tipos a métodos existentes. Los métodos de retroalimentación son un caso especial de agentes. La palabra clave event se utiliza en la declaración de un método que será llamado como proxy cuando ocurra un evento.