C sharp NET / Capítulo 1
Capítulo 1
Como hemos dicho C# (C Sharp) es parte de la plataforma .NET. C# es un lenguaje
orientado a objetos simple, seguro, moderno, de alto rendimiento y con especial énfasis en
internet y sus estándares (como XML). Es también la principal herramienta para programar
en la plataforma .NET.
Tal vez os habréis preguntado ¿Qué es la plataforma .NET? ¿Porqué Microsoft está
invirtiendo tanto en esta nueva tecnología? ¿Qué es lo que es tan novedoso? ¿Como es que
con .NET se pueden producir aplicaciones multi-plataforma? A continuación hablaremos un
poco de la plataforma .NET
La plataforma .NET
Marco de trabajo .NET
La plataforma .NET es una
plataforma de desarrollo de
software con especial énfasis
en el desarrollo rápido de
aplicaciones, la independencia
de lenguaje y la transparencia
a través de redes.
La plataforma consta de las
siguientes partes:
• Un conjunto de lenguajes de
programación (C#, J#,
JScript, C++ gestionado,
Visual Básic.NET, y otros
proyectos independientes).
• Un conjunto de
herramientas de desarrollo
(entre ellos Monodevelop o
Visual Studio.NET de Microsoft )
• Una libreria de clases amplia y común para todos los lenguajes.
• Un sistema de ejecucion de Lenguaje Común. (CLR).
• Un conjunto de servidores .NET
• Un conjunto de servicios .NET
• Dispositivos electrónicos con soporte .NET (?)
Los puntos fuertes de la plataforma son:
C sharp NET / Capítulo 1 2
Independencia de lenguaje
Todos los lenguajes que conformen con los estándares .NET, sin importar cual, podrán
interoperar entre sí de forma totalmente transparente, las clases podrán ser heredadas
entre unos lenguajes y otros, y se podrá disfrutar de polimorfismo entre lenguajes. Por
ejemplo, si yo tengo una clase en C#, esta clase podrá ser heredada y utilizada en Visual
Basic o JScript o cualquier lenguaje .NET. Todo esto es posible por medio de una de las
características de .NET llamado Common Type System (CTS). También tiene la cualidad de
que se pueden incluir más lenguajes a la plataforma. En la actualidad existen proyectos
independientes de incluir PHP, Python, Ada y otros lenguajes en la plataforma.
Librería de clases común
Más de 4000 clases, objetos y métodos incluidos en la plataforma .NET están disponibles
para todos los lenguajes.
Multiplataforma
Cuando un programa es compilado, no es compilado en un archivo ejecutable sino en un
lenguaje intermedio llamado “Lenguaje Intermedio” (IL) el cual podrá ser ejecutado por el
CLR (Common Language Runtime) en la plataforma en que el CLR esté disponible (hasta el
día de hoy Microsoft solamente tiene un CLR para los sistemas operativos Windows, pero el
proyecto Mono (www.mono-project.com [1]) y dotGNU (www.dotGNU.org [2]) han puesto a
disposición un CLR para GNU/Linux, MacOS y muchas otras plataformas). Los sistemas
operativos Windows XP o superiores incluyen el CLR nativamente y SuSE Linux 9.3 o
superior planea incorporar el CLR (Mono) en su distribución lo que quiere decir que un
programa .NET podrá ser compilado y ejecutado en cualquiera de estas plataformas, o en
cualquier plataforma que incluya un CLR.
El CLR compilará estos archivos IL nuevamente en código de máquina en un proceso que se
conoce como JIT (justo a tiempo) el cual se ejecutará cuando se requiera. Este proceso
producirá código de máquina bien eficiente que se reutilizará si es que hubiera código que
se repitiera, haciendo que los programas sean ejecutados muy eficientemente.
El CRL
Windows Forms, Web Forms, Web Services
La plataforma .NET incluye un conjunto de clases especial para datos y XML que son la
base de 3 tecnologías claves: Servicios Web (Web Services), Web Forms, y Windows Forms
los cuales son poderosas herramientas para la creación de aplicaciones tanto para la
plataforma como para el Web.
Estandarización
Además de los méritos técnicos, una de las razones del éxito de la plataforma .NET ha sido
por el proceso de estandarización que Microsoft ha seguido (y que ha sorprendido a más de
uno). Microsoft, en lugar de reservarse todos los derechos sobre el lenguaje y la
plataforma, ha publicado las especificaciones del lenguaje y de la plataforma, que han sido
posteriormente revisadas y ratificadas por la Asociación Europea de Fabricantes de
Computadoras (ECMA). Esta especificación (que se puede descargar libremente de
Internet) permite la implementación del lenguaje C# y de la plataforma .NET por terceros,
C sharp NET / Capítulo 1 3
incluso en entornos distintos de Windows. Mono Hispano [3] mantiene una traducción del
estándar que describe el lenguaje C# en http:/ / monohispano. org/ ecma/ (Enlace roto)
Un resúmen introductorio sobre el lenguaje C#
El lenguaje es muy sencillo, sigue el mismo patrón de los lenguajes de programación
modernos. Incluye un amplio soporte de estructuras, componentes, programación orientada
a objetos, manipulación de errores, recolección de basura, etc, que es construido sobre los
principios de C++ y Java. Como sabréis, las clases son la base de los lenguajes de
programación orientados a objetos, lo cual permite extender el lenguaje a un mejor modelo
para solucionar problemas. C# contiene las herramientas para definir nuevas clases, sus
métodos y propiedades, al igual que la sencilla habilidad para implementar encapsulación,
herencia y polimorfismo, que son los tres pilares de la programación orientada a objetos.
C# tiene un nuevo estilo de documentación XML que se incorpora a lo largo de la
aplicación, lo que simplifica la documentación en línea de clases y métodos. C# soporta
también interfaces, una forma de estipular los servicios requeridos de una clase. Las clases
en C# pueden heredar de un padre pero puede implementar varias interfaces. C# también
provee soporte para estructuras, un concepto el cual ha cambiado signifivamente desde
C++. Una estructura es un tipo restringido que no exige tanto del sistema operativo como
una clase. Una estructura no puede heredar ni dar herencias de clases pero puede
implementar una interfaz. C# provee características de componentes orientados, como
propiedades, eventos y construcciones declaradas (también llamados atributos). La
programación orientada a componentes es soportada por el CLR. C# provee soporte para
acceder directamente a la memoria usando el estilo de punteros de C++ y mucho más.
C# frente a Java
C# y Java son lenguajes similares, de sintaxis basada en C/C++, orientados a objetos, y
ambos incluyen las características más importantes de los lenguajes modernos, como son la
gestión automática de memoria y la compilación a código intermedio. Pero por supuesto,
también hay diferencias.
Una de las diferencias más importantes es que C# es mucho más cercano a C++ en cuanto
a diseño se refiere. C# toma casi todos sus operadores, palabras reservadas y expresiones
directamente de C++. También se han mantenido algunas características que en Java se
han desestimado. Por ejemplo, la posibilidad de trabajar directamente con direcciones de
memoria. Si bien tanto Java como .NET proporcionan gestión automática de memoria, en
C# es posible usar lo que se denomina "código no seguro". Cuando se usa código no seguro
en C# es posible operar con punteros de forma muy similar a como se haría en C/C++,
pero el código que utiliza punteros se queda marcado como no seguro y no se ejecuta en
entornos en los que no tiene permisos.
C# frente a C++
Puesto que C# se ejecuta en una máquina virtual, ésta se hace cargo de la gestión de
memoria y por lo tanto el uso de punteros es mucho menos importante en C# que en C++.
C# también es mucho más orientado a objetos, hasta el punto de que todos los tipos usados
derivan en última instancia el tipo 'object'. Además, muchos tipos se usan de forma distinta.
Por ejemplo, en C# se comprueban los límites de los arrays antes de usarlos, evitando así
que se pueda escribir pasado el final del vector.
C sharp NET / Capítulo 1 4
Al igual que Java, C# renuncia a la idea de herencia múltiple de clases presente en C++.
Sin embargo, referido a clases, C# implementa 'propiedades' del tipo de las que existen en
Visual Basic, y los métodos de las clases son accedidos mediante '.' en lugar de '::'.
¿Por qué C#?
La plataforma .NET acepta varios lenguajes. Por ahora, C#, Visual Basic, C++ gestionado,
Nemerle, FORTRAN, Java, Python, etc. , y con capacidad para aceptar prácticamente
cualquier lenguaje. Entonces la pregunta es, ¿porqué se eligió C# en lugar de cualquier
otro lenguaje?.
La razón fundamental es que C# se diseñó para la plataforma .NET y es capaz de utilizar
todo su potencial. También es cierto que es un lenguaje "limpio" en el sentido de que al no
tener que proporcionar compatibilidad hacia atrás se ha tenido más libertad en el diseño y
se ha puesto especial hincapié en la simplicidad. Por ejemplo, en C# hay un tipo de clase y
siempre se le aplica el recolector de basura mientras que en C++ gestionado hay dos tipos
de clases, una a la que se aplica el recolector y otra a la que no.
Instalando lo necesario para empezar
Para poder empezar con nuestro curso debéis tener instalado en vuestro ordenador los
archivos básicos para poder compilar y ejecutar vuestros programas. El conjunto de
utilidades "Microsoft .NET Framework" y el ".NET Framework SDK" para Windows y el
proyecto MONO o dotGNU para Linux, MacOS, BeOS proporcionan estas herramientas.
Podréis encontrarlas en las siguientes direcciónes:
Para Windows:
http:/ / msdn. microsoft. com/ netframework/ downloads/ updates/ default. aspx
Para Linux u otras plataformas:
Proyecto Mono
http:/ / mono-project. com/ Downloads (manual [4] que describe distintos métodos de
instalación)
Proyecto dotGNU
http:/ / dotgnu. org/ pnet-packages. html'''
Referencias
[1] http:/ / www. mono-project. com
[2] http:/ / www. dotgnu. org
[3] http:/ / monohispano. org
[4] http:/ / www. monohispano. org/ tutoriales/ mono-linux/ x34. html
No hay comentarios:
Publicar un comentario