Introducción a la programación en C# o C Sharp

¿Qué es el lenguaje de programación C#?

Los lenguajes de programación son instrucciones codificadas que configuran patrones de respuestas consecutivas en equipos informáticos que se convierten en órdenes de acción. Uno de los lenguajes de programación más populares es el C# de Microsoft que presenta una arquitectura tal vez no tan flexible como la de otros análogos, pero sí comparativamente más segura.

C# es un tipo de lenguaje para programación en el que los objetos configuran datos de entrada y los convierten en datos de salida con funcionalidades especiales. Se trata de un lenguaje de programación que aprovecha técnicas específicas de programación como la abstracción, la cohesión, el polimorfismo o el encapsulamiento de datos.

C#, que pronunciado en inglés suena ‘si sharp’ (C Sharp) es un desarrollo de Microsoft integrado en su plataforma framework .NET. C# se configura como un lenguaje de programación alternativo para crear programas en Microsoft .NET.

El modelo de sintaxis de C Sharp tiene muchas similitudes con el que se le reconoce al lenguaje muy extendido Java. Con el tiempo, C# se ha beneficiado de su éxito con constantes mejoras. Así, han ido surgiendo compiladores adjuntos que traducen los programas C# para que puedan estar operativos en las plataformas más utilizadas como Windows, Unix o Android y la totalidad de las de código abierto.

Así, C# tiene la ventaja de ser del tipo de programas construidos en lenguajes compilados que resultan traducidos por rutinas adjuntas (compiladores) que son las encargadas de crear archivos separados para facilitar su ejecución. Todo, para evitar la utilización de programas específicos para operar en diferentes entornos.

Una ventaja añadida de los lenguajes compilados como el C Sharp es su nivel de seguridad de base al quedar protegido su código fuente. Se trata de lenguajes que no son legibles. Sus códigos no se pueden copiar, no se pueden modificar, con lo que los derechos de autor son más fáciles de salvaguardar y, de paso, se consigue acabar con las copias ilegales.

Aún más, el uso de C# en programaciones sensibles garantiza la seguridad donde otros programas no llegan, como en transacciones de fondos, en transferencias de dinero en línea o en la privacidad de las comunicaciones personales.


 

Historia del C Sharp

Un sistema de código denominado Simple Managed C está en el origen de C#, que se desarrolló específicamente para construir la plataforma Microsoft .NET. Se trataba de una biblioteca para clases que en 1999, y con el apoyo del ingeniero danés Anders Hejlsberg y de su equipo, acabó por convertirse en 2003 en un nuevo lenguaje específamente orientado a objetos.

Y es que .NET surgió bajo la necesidad que tuvo Microsoft de suplir las fallas y carencias de su lenguaje más popular: Visual Basic, sobre todo de la más aceptada de todas, la versión 6, que se utilizaba tanto en aplicaciones para escritorio como en el desarrollo de videojuegos.

La denominación C# se concretó por un problema de derechos de autor con la titularidad de Simple Managed C (SMC). Todo lo que se había hecho hasta ese momento en la biblioteca SMC acabó migrada al lenguaje nuevo de .NET con la colaboración de Joseth M. C# le debe mucho al liderazgo de Hejlsberg y a su experiencia en grandes proyecto de programación anteriores como J++, Delphi o Turbo Pascal.

Y una curiosidad más sobre el nombre y la historia de C#. La almohadilla tras la C esconde una cuádruple cruz agrupada, algo que representa un mensaje oculto subliminal de sus creadores.

La almohadilla sumaría así cuatro cruces, lo que supondría una velada superioridad del lenguaje que estaría -al menos en su denominación- muy por encima del rival C++. Esta explicación echaría por tierra la leyenda clásica que corre por la Red que se refiere a la almohadilla como atributo musical. Algo bonito de leer, pero que no es real.

Características principales del lenguaje de programación C#: ventajas y limitaciones

Una de las características más destacables y más ventajosas del lenguaje C# es la sencillez y la potencia de su sintaxis. Los tipos de datos están aparejados con las variables que no son globales dentro de cada programa, algo que se convierte en un beneficio apreciable para los programadores. Acaba por reducir los problemas ocasionados por las compilaciones. Las propiedades y los métodos están, por consiguiente, vinculados a una clase determinada.

Más. Las colecciones de datos más simples están asociadas a una misma clase que se denomina System .Object. Ésto hace más fácil crear colecciones y ayuda a que en cualquier conversión sólo haya compatibilidad entre tipos próximos.

Por otro lado, C# tiene un motor que permite la ejecución de sus aplicaciones programadas. Se denomina CLR y opera para integrar los sistemas operativos, pero también las bibliotecas de enlaces dinámicos externas dlls. Aún más, otra ventaja con los enlaces dinámicos, la creación de dlls compartidas con nuevas versiones en C# no han de ser sustituidas. Se pueden mantener diferentes de dlls en un mismo proyecto, reduciendo con ello los riesgos que pueden traer las incorporaciones de software nuevo.

Más ventajas. C# facilita las acciones de package (como Java) agrupando códigos -o aislándolos- con namespaces, con la implementación de interfaces se reduce el riesgo de complicaciones con las rutinas programadas y, de paso, se produce una simplificación de la escritura de los mismos códigos. Un control más exhaustivo de las excepciones aminora igualmente los riesgos de problemas derivados de la aplicación de los códigos. Y, aún mejor, los códigos pueden dividirse, ejecutarse en paralelo y sincronizarse sólo cuando el trabajo está completado.

Otra de las ventajas clave de C#, para nada despreciable, es la de la fácil integración de otros lenguajes de programación compilables con Microsoft .NET, como se ha comentado antes. Y C# trabaja en automático a favor del programador y en sus proyectos que requieren estar pendientes de las dimensiones, cuando afina los rendimientos de la memoria disponible cuando elimina por sí mismo los recursos y los objetos que han dejado de usarse.

Por lo que se refiere a las limitaciones del lenguaje C#, éstas hay que encontrarlas si acaso en el tiempo que se tarda en cargar el .NET y su CLR (Common Lenguaje Infrastructure) cada una de las veces que se ha de ejecutar un programa con C#. El tiempo de carga es sensiblememente mayor que el que se registraría en otro análogo. En el caso de que el flujo de trabajo de un proyecto fuera la velocidad de ejecución, C# no sería la opción recomendable.

Fortalezas y debilidades frente a otros lenguajes

C Sharp sale en líneas generales muy bien librado de las comparaciones con otros modelos de lenguajes de programación. Con algunas excepciones que, claro está, pueden marcar diferencias para programadores atentos a determinadas funciones que valoren por las características de los proyectos que desarrollen o por sus intereses. Ésta es una relación de fortalezas y debilidades del C Sharp cuando se lo compara con otros lenguajes de programación:

C++ versus C#. El lenguaje de C++ es comparativamente más complejo el de C#. C++ trabaja mejor con las funciones, C# lo hace mejor con diseños. El primero soporta punteros, el segundo no. C++ es un código no administrado y C# sí lo es. Por tanto, para arrancarse necesita de .NET lo que lo hace, como se ha comentado también, más lento a la hora de ejecutarse en entornos multiplataforma. Y, lo mismo, el C Sharp elimina los objetos que no se necesitan de manera automática, en C++ se tiene que cargar con ellos y eliminarse, añadiendo una tarea extra al programador.

C# versus Java Script. Java Script es perfecto como lenguaje de programación para proyectos que requieren de procesos basados en una grande y rápida interacción entre usuarios, operar en tiempo real es fundamental para Java Script. Y Java Script trabaja igual de bien con cualquiera de los sistemas operativos de más éxito. Sin embargo, C Sharp combinado con la versión más reciente de código abierto de .NET Core aún debe demostrar la compatibilidad en los entornos en los que Java Script ha triunfado. Por el momento, C# sigue necesitando de un servidor en MS Windows para ser equiparable al Java Script en creaciones de chats o en programaciones de videojuegos.

C# versus Visual Basic. Desde un enfoque estricto de programación, C Sharp sale bien parado en la comparación con su predecesor Visual Basic de Microsoft, aún en las versiones más avanzadas. Hay mucho en este sentido en lo que fijarse. De entrada lo ya señalado, la realización de las líneas de códigos se simplifica. Algo que queda muy patente en algunas cuestiones prácticas, como por ejemplo cuando se parten las líneas de código con undercores en Visual Basic. Más. Los tipos de parámetros de salida en C# son muy prácticos en el trabajo con algoritmos recursivos que no se encuentran en Visual Basic. En el otro lado, tenemos que Visual Basic no permite activar la opción Strict On por defecto, la declaración explícita de variable, para que sea el compilador el que haga el trabajo sucio de trabajar muchas conversiones que resultan implícitas a las acciones desarrolladas como sucede con C Sharp. No saber que hay que activar Strict On en Visual Basic significa la posibilidad de acumular errores durante la ejecución que podrían ser eliminados si el compilador trabajara a favor de los creadores de códigos sólo admitiendo codificaciones correctas.

C# versus Ruby. Es cierto que el Ruby es un programa de fuente abierta que resulta visualmente más amigable y más rápido para desarrollar que el C Sharp y que tiene una gran comunidad de desarrolladores dispuestos siempre a colaborar de manera creativa. Pero el C# tiene también una aceptable soporte genérico y el respaldo de Microsoft que tampoco es poco. Del Ruby, que trabaja con un curioso sistema de bloques, se dice que tiene ‘la memoria de un cerdo’ muy lenta, que contrasta con la señalada capacidad del C Sharp con su gestión automática de memoria, para eliminar automáticamente lo que suma objetos de más.

C# versus PHP. PHP queda en evidencia al compararse con C Sharp cuando se hecha un vistazo a su historial de compatibilidades. Los desarrolladores que trabajan con PHP saben que a las nuevas versiones hay que verificarlas para encontrar partes de códigos que no son compatibles. Todo, para un lenguaje cuya naturaleza siempre ha estado orientada a la creación de páginas web como las que ofrece el entorno de WordPress y a ofrecer herramientas para servidores, y ahí es donde C Sharp demuestra ser un lenguaje de programación más versátil y con un desarrollo futuro que PHP no garantiza, sólo hay que ver como lo califican los programadores en los foros.

Palabras clave y definición de su sintaxis general de algunas de ellas

Las palabras clave del sistema de codificación de C Sharp son indentificadores predefinidos que tienen un significado muy concreto para los compiladores. Los identificadores necesitan de un prefijo para ser reconocidos como tales. Por otro lado, algunas palabras claves son contextuales sólo tienen significado en un contexto determinado de la programación. Veamos un listado de algunas palabras clave muy significadas por su uso y para qué se las emplea:

  • class. Class es la palabra clave con la que se pueden agrupar tipos agrupando variables afines a la identidad a la que se refiere.
  • const. Constant es la palabra clave que califica un campo al que afecta como invariable.
  • explicit. La palabra clave explicit convierte un tipo de origen en otro de destino en función de una variable de conversión.
  • extern. El modificador extern permite concretar un método, una acción, que se ha de completar externamente para que se verifique.
  • namespace. Namespace se usa para concretar acciones desarrollables a partir de una serie de objetos relacionados. Con el valor namespaces, se puede emplear una serie de nombres para organizar elementos de código y crear tipos globales únicos.
  • stackalloc. Se emplea en entornos que presenten códigos no seguros con la finalidad de detectar las saturaciones de los búferes en entornos Common Language Runtime. Si se produce esa saturación, se elimina el proceso para acabar con el riesgo de seguridad que, por ejemplo, ejecute un código malware.
  • static. Los statics están asimilados a tipos de lugares o posiciones y no a objetos. El identificador static se puede emplear con eventos, con constructores, con propiedades, campos o métodos y no con indexadores que no sean del tipo de las clases.
  • using. Using se usa bien como directiva para crear tipos definidos o en otras áreas de nombres, bien como instrucción que determina las condiciones en las que un objeto será eliminado.
  • volatile. Con volatile, se pueden activar una serie de subprocesos ejecutados en el mismo momento.
  • while. Es una palabra clave que participa de un requerimiento de condición.

Y por lo que se refiere a las palabras clave contextuales más usadas en C#, éstas son las más habituales en las líneas de código:

  • dynamic. Las dynamic tienen la particularidad de que no hacen la comprobación de tipo durante la compilación. Resuelven las comprobaciones durante la ejecución.
  • orderby. Orderby es una cláusula de secuencia que ordena las referencias en sentido ascendente o descendente.
  • select. Hace específicos los valores que se ejecutarán durante la consulta.
  • value. Se refiere al valor que el código cliente asigna a una propiedad determinada.
  • yield. Confirma que el método, tanto operador como descriptor de acceso al que está relacionado es un iterador.

El sistema de tipos de C#

C Sharp tiene dos clases de tipos, unos son de valor, las variables, y otros son los llamados de referencia:

Tipos de valor. Los tipos de valor son los que contienen los datos. C Sharp cuenta con una veintena de sus categorías asociadas a tipos de datos. Los tipos de valor contienen cada uno sus valores marcados directamente. Con la serie de tipos de valor, cada una de las variables (identificadores que se asocian a los valores) tiene asignada su copia de datos y por extensión cada una de las operaciones que se ejecuta sobre una variable no afecta a la otra, salvo las parametrizadas bajo ref y out.

Tipos de referencia. Los tipos que funcionan como referencia guardan referencias de los datos, lo que propiamente se conoce como objetos. Éstos tipos de referencia permiten que dos variables se refieran al mismo objeto, y, como consecuencia, en las operaciones, una variable puede afectar a un objeto que está relacionado con otra variable. Tablas de tipos integrados. En C Sharp, existe una relación de palabras clave para los tipos de integrados que representan las denominaciones predefinidas que están localizados en System. Así, bool, se refiere a System.Boolean, double a System.Double o o float a System.Single.

Librerías asociadas

C# cuenta con una serie de librerías asociadas. Unas son de tiempo de ejecución y que son fundamentales para que opere el programa final. Otras, permiten añadir y sumar funciones, normalmente mediante enlaces dinámicos dlls.

Un espacio en el que encontrar librerías con funciones adaptadas para C Sharp es GitHub sobre la base de un sistema de control de versiones de aplicaciones git. Se trata de una plataforma de desarrollo colaborativo de interés para programadores en los que se puede tener acceso a programas y sus códigos, bien para crearlos desde cero y buscar apoyo profesional, o bien para unirse a proyectos nuevos o lanzados en la misma línea.

Entornos de desarrollos que soportan al C#

Existe una serie de entornos de desarrollo que soportan al C Sharp. Unos son gratuitos, otros, en cambio, son de pago. Entre los más populares de los que son gratis está Eclipse aCute para C# y .NET Core de Eclipse Fundation. Se trata de una extensión que proporciona una variada colección de herramientas para el desarrollo de nuevas funcionalidades y utilidades basadas en C Sharp. Netbeans, la plataforma para desarrollos Java, ofrece también opciones de trabajo cooperativo integrado para C Sharp.

De los entornos IDE (desarrollos de entorno integrado) de pago se encuentra Microsoft Visual Studio para trabajar específicamente con sistemas operativos de Windows. Visual Studios ofrece crear aplicaciones, pero también sitios web directamente sobre la base de un ecosistema Windows inclusivo. Las plataformas Jetbrains o Qt Creators ofrecen espacios de creación para desarrolladores C Sharp con diferentes opciones diferenciadas.

Ejemplos de pequeños programas C#

Una forma de iniciarse en los códigos de programación de C# es la creación o adaptación de pequeños programas con rutinas fáciles de implementar del estilo de la que ofrece Microsoft en sus canales de difusión, la famosa ¡Hola Mundo! La propuesta y las líneas de códigos específicos están disponibles y accesibles en Microsoft sólo con incluir ‘Hola Mundo’ en cualquier buscador. Tutoriales de programación de C Sharp están localizables en Docs de Microsoft y bajo el epígrafe ‘Guía de programación de C#’.

¿Qué se puede programar en C#?

En C Sharp, se pueden crear aplicaciones de escritorio, específicas para móviles y en la nube. Sencillas o más elaboradas, en función de las habilidades y de los conocimientos adquiridos. Entre las aplicaciones de escritorio muy fáciles de implementar visibles en Microsoft Doc están disponibles alguna sin interfaz con Windows Forms, y otras con interfaz, por ejemplo, de la mano de los recursos gratuitos de Windows Presentation Foundation (WPF).

Aplicaciones para móviles con C Sharp asequibles y accesibles pueden ser precisamente las que ofrece Visual Studio o la de Xamarin disponible en App Store. Y apps en la nube con C# se pueden citar CPCO4 o Windows Azure. Muchos proyectos al alcance, muchos espacios que explorar y mucho para aprender.

Y, por último, algo más. Los grandes de la industria han reconocido el valor de la programación segura con C Sharp. Unas muestras. Skype para Windows Phone se hizo en C# por cuestiones de seguridad y fiabilidad, a diferencia de las codificaciones para otros entornos, algo que vuelve a recordar la solidez y seguridad de base de C Sharp. Stack Overflow, una de las plataformas que alberga la comunidad de desarrolladores más importantes de la Red también se desarrolló en C# y, como tampoco podía ser menos, el sitio de Microsoft Visual Studio del que hablamos más arriba.